@simplysm/solid 13.0.55 → 13.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +3 -1
  2. package/dist/components/data/crud-detail/CrudDetail.d.ts +14 -0
  3. package/dist/components/data/crud-detail/CrudDetail.d.ts.map +1 -0
  4. package/dist/components/data/crud-detail/CrudDetail.js +348 -0
  5. package/dist/components/data/crud-detail/CrudDetail.js.map +6 -0
  6. package/dist/components/data/crud-detail/CrudDetailAfter.d.ts +7 -0
  7. package/dist/components/data/crud-detail/CrudDetailAfter.d.ts.map +1 -0
  8. package/dist/components/data/crud-detail/CrudDetailAfter.js +14 -0
  9. package/dist/components/data/crud-detail/CrudDetailAfter.js.map +6 -0
  10. package/dist/components/data/crud-detail/CrudDetailBefore.d.ts +7 -0
  11. package/dist/components/data/crud-detail/CrudDetailBefore.d.ts.map +1 -0
  12. package/dist/components/data/crud-detail/CrudDetailBefore.js +14 -0
  13. package/dist/components/data/crud-detail/CrudDetailBefore.js.map +6 -0
  14. package/dist/components/data/crud-detail/CrudDetailTools.d.ts +7 -0
  15. package/dist/components/data/crud-detail/CrudDetailTools.d.ts.map +1 -0
  16. package/dist/components/data/crud-detail/CrudDetailTools.js +14 -0
  17. package/dist/components/data/crud-detail/CrudDetailTools.js.map +6 -0
  18. package/dist/components/data/crud-detail/types.d.ts +45 -0
  19. package/dist/components/data/crud-detail/types.d.ts.map +1 -0
  20. package/dist/components/data/crud-detail/types.js +1 -0
  21. package/dist/components/data/crud-detail/types.js.map +6 -0
  22. package/dist/components/data/crud-sheet/CrudSheet.d.ts +17 -0
  23. package/dist/components/data/crud-sheet/CrudSheet.d.ts.map +1 -0
  24. package/dist/components/data/crud-sheet/CrudSheet.js +679 -0
  25. package/dist/components/data/crud-sheet/CrudSheet.js.map +6 -0
  26. package/dist/components/data/crud-sheet/CrudSheetColumn.d.ts +5 -0
  27. package/dist/components/data/crud-sheet/CrudSheetColumn.d.ts.map +1 -0
  28. package/dist/components/data/crud-sheet/CrudSheetColumn.js +29 -0
  29. package/dist/components/data/crud-sheet/CrudSheetColumn.js.map +6 -0
  30. package/dist/components/data/crud-sheet/CrudSheetFilter.d.ts +7 -0
  31. package/dist/components/data/crud-sheet/CrudSheetFilter.d.ts.map +1 -0
  32. package/dist/components/data/crud-sheet/CrudSheetFilter.js +14 -0
  33. package/dist/components/data/crud-sheet/CrudSheetFilter.js.map +6 -0
  34. package/dist/components/data/crud-sheet/CrudSheetHeader.d.ts +7 -0
  35. package/dist/components/data/crud-sheet/CrudSheetHeader.d.ts.map +1 -0
  36. package/dist/components/data/crud-sheet/CrudSheetHeader.js +14 -0
  37. package/dist/components/data/crud-sheet/CrudSheetHeader.js.map +6 -0
  38. package/dist/components/data/crud-sheet/CrudSheetTools.d.ts +7 -0
  39. package/dist/components/data/crud-sheet/CrudSheetTools.d.ts.map +1 -0
  40. package/dist/components/data/crud-sheet/CrudSheetTools.js +14 -0
  41. package/dist/components/data/crud-sheet/CrudSheetTools.js.map +6 -0
  42. package/dist/components/data/crud-sheet/types.d.ts +109 -0
  43. package/dist/components/data/crud-sheet/types.d.ts.map +1 -0
  44. package/dist/components/data/crud-sheet/types.js +1 -0
  45. package/dist/components/data/crud-sheet/types.js.map +6 -0
  46. package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
  47. package/dist/components/data/kanban/Kanban.js +137 -138
  48. package/dist/components/data/kanban/Kanban.js.map +2 -2
  49. package/dist/components/data/kanban/KanbanContext.d.ts +5 -1
  50. package/dist/components/data/kanban/KanbanContext.d.ts.map +1 -1
  51. package/dist/components/data/kanban/KanbanContext.js.map +1 -1
  52. package/dist/components/data/list/ListItem.d.ts.map +1 -1
  53. package/dist/components/data/list/ListItem.js +109 -99
  54. package/dist/components/data/list/ListItem.js.map +2 -2
  55. package/dist/components/data/sheet/DataSheet.js +1 -1
  56. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  57. package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
  58. package/dist/components/data/sheet/DataSheet.styles.js +1 -1
  59. package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
  60. package/dist/components/disclosure/Dialog.d.ts +16 -10
  61. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  62. package/dist/components/disclosure/Dialog.js +126 -91
  63. package/dist/components/disclosure/Dialog.js.map +2 -2
  64. package/dist/components/disclosure/DialogContext.d.ts +2 -4
  65. package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
  66. package/dist/components/disclosure/DialogContext.js.map +1 -1
  67. package/dist/components/disclosure/DialogProvider.d.ts.map +1 -1
  68. package/dist/components/disclosure/DialogProvider.js +14 -9
  69. package/dist/components/disclosure/DialogProvider.js.map +2 -2
  70. package/dist/components/disclosure/Dropdown.d.ts +46 -22
  71. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  72. package/dist/components/disclosure/Dropdown.js +100 -65
  73. package/dist/components/disclosure/Dropdown.js.map +2 -2
  74. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
  75. package/dist/components/feedback/notification/NotificationBanner.js +3 -3
  76. package/dist/components/feedback/notification/NotificationBanner.js.map +1 -1
  77. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
  78. package/dist/components/feedback/notification/NotificationBell.js +84 -84
  79. package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
  80. package/dist/components/form-control/combobox/Combobox.d.ts +6 -3
  81. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  82. package/dist/components/form-control/combobox/Combobox.js +150 -168
  83. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  84. package/dist/components/form-control/combobox/ComboboxContext.d.ts +3 -0
  85. package/dist/components/form-control/combobox/ComboboxContext.d.ts.map +1 -1
  86. package/dist/components/form-control/combobox/ComboboxContext.js.map +1 -1
  87. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts +0 -2
  88. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts.map +1 -1
  89. package/dist/components/form-control/date-range-picker/DateRangePicker.js +9 -17
  90. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  91. package/dist/components/form-control/field/Field.styles.d.ts.map +1 -1
  92. package/dist/components/form-control/field/Field.styles.js +2 -1
  93. package/dist/components/form-control/field/Field.styles.js.map +1 -1
  94. package/dist/components/form-control/field/NumberInput.d.ts +15 -5
  95. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  96. package/dist/components/form-control/field/NumberInput.js +181 -141
  97. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  98. package/dist/components/form-control/field/TextInput.d.ts +9 -5
  99. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  100. package/dist/components/form-control/field/TextInput.js +199 -154
  101. package/dist/components/form-control/field/TextInput.js.map +2 -2
  102. package/dist/components/form-control/select/Select.d.ts +3 -3
  103. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  104. package/dist/components/form-control/select/Select.js +116 -100
  105. package/dist/components/form-control/select/Select.js.map +2 -2
  106. package/dist/components/form-control/select/SelectContext.d.ts +9 -1
  107. package/dist/components/form-control/select/SelectContext.d.ts.map +1 -1
  108. package/dist/components/form-control/select/SelectContext.js.map +1 -1
  109. package/dist/components/form-control/select/SelectItem.d.ts.map +1 -1
  110. package/dist/components/form-control/select/SelectItem.js +77 -67
  111. package/dist/components/form-control/select/SelectItem.js.map +2 -2
  112. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -1
  113. package/dist/components/layout/topbar/TopbarMenu.js +63 -57
  114. package/dist/components/layout/topbar/TopbarMenu.js.map +2 -2
  115. package/dist/components/layout/topbar/TopbarUser.d.ts.map +1 -1
  116. package/dist/components/layout/topbar/TopbarUser.js +53 -54
  117. package/dist/components/layout/topbar/TopbarUser.js.map +2 -2
  118. package/dist/hooks/createControllableStore.d.ts +29 -0
  119. package/dist/hooks/createControllableStore.d.ts.map +1 -0
  120. package/dist/hooks/createControllableStore.js +19 -0
  121. package/dist/hooks/createControllableStore.js.map +6 -0
  122. package/dist/index.d.ts +5 -1
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +6 -2
  125. package/dist/index.js.map +1 -1
  126. package/dist/styles/patterns.styles.d.ts.map +1 -1
  127. package/dist/styles/patterns.styles.js +7 -1
  128. package/dist/styles/patterns.styles.js.map +1 -1
  129. package/docs/data-components.md +428 -0
  130. package/docs/disclosure.md +65 -35
  131. package/docs/form-controls.md +18 -3
  132. package/docs/helpers.md +0 -39
  133. package/docs/hooks.md +39 -0
  134. package/package.json +4 -3
  135. package/src/components/data/crud-detail/CrudDetail.tsx +346 -0
  136. package/src/components/data/crud-detail/CrudDetailAfter.tsx +19 -0
  137. package/src/components/data/crud-detail/CrudDetailBefore.tsx +19 -0
  138. package/src/components/data/crud-detail/CrudDetailTools.tsx +19 -0
  139. package/src/components/data/crud-detail/types.ts +58 -0
  140. package/src/components/data/crud-sheet/CrudSheet.tsx +628 -0
  141. package/src/components/data/crud-sheet/CrudSheetColumn.tsx +34 -0
  142. package/src/components/data/crud-sheet/CrudSheetFilter.tsx +21 -0
  143. package/src/components/data/crud-sheet/CrudSheetHeader.tsx +19 -0
  144. package/src/components/data/crud-sheet/CrudSheetTools.tsx +21 -0
  145. package/src/components/data/crud-sheet/types.ts +133 -0
  146. package/src/components/data/kanban/Kanban.tsx +72 -65
  147. package/src/components/data/kanban/KanbanContext.ts +7 -1
  148. package/src/components/data/list/ListItem.tsx +31 -18
  149. package/src/components/data/sheet/DataSheet.styles.ts +1 -1
  150. package/src/components/data/sheet/DataSheet.tsx +1 -1
  151. package/src/components/disclosure/Dialog.tsx +143 -105
  152. package/src/components/disclosure/DialogContext.ts +2 -4
  153. package/src/components/disclosure/DialogProvider.tsx +4 -2
  154. package/src/components/disclosure/Dropdown.tsx +174 -86
  155. package/src/components/feedback/notification/NotificationBanner.tsx +3 -9
  156. package/src/components/feedback/notification/NotificationBell.tsx +51 -57
  157. package/src/components/form-control/combobox/Combobox.tsx +109 -134
  158. package/src/components/form-control/combobox/ComboboxContext.ts +4 -1
  159. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +6 -16
  160. package/src/components/form-control/field/Field.styles.ts +1 -0
  161. package/src/components/form-control/field/NumberInput.tsx +131 -88
  162. package/src/components/form-control/field/TextInput.tsx +139 -88
  163. package/src/components/form-control/select/Select.tsx +85 -67
  164. package/src/components/form-control/select/SelectContext.ts +12 -1
  165. package/src/components/form-control/select/SelectItem.tsx +39 -18
  166. package/src/components/layout/topbar/TopbarMenu.tsx +52 -55
  167. package/src/components/layout/topbar/TopbarUser.tsx +28 -31
  168. package/src/hooks/createControllableStore.ts +47 -0
  169. package/src/index.ts +5 -1
  170. package/src/styles/patterns.styles.ts +7 -1
  171. package/tailwind.css +4 -0
  172. package/dist/helpers/splitSlots.d.ts +0 -25
  173. package/dist/helpers/splitSlots.d.ts.map +0 -1
  174. package/dist/helpers/splitSlots.js +0 -25
  175. package/dist/helpers/splitSlots.js.map +0 -6
  176. package/dist/hooks/createItemTemplate.d.ts +0 -17
  177. package/dist/hooks/createItemTemplate.d.ts.map +0 -1
  178. package/dist/hooks/createItemTemplate.js +0 -40
  179. package/dist/hooks/createItemTemplate.js.map +0 -6
  180. package/src/helpers/splitSlots.ts +0 -51
  181. package/src/hooks/createItemTemplate.tsx +0 -42
package/README.md CHANGED
@@ -145,6 +145,8 @@ import "@simplysm/solid/tailwind.css";
145
145
  - [`Pagination`](docs/data-components.md#pagination) - Page navigation component
146
146
  - [`Calendar`](docs/data-components.md#calendar) - Calendar-style data display
147
147
  - [`PermissionTable`](docs/data-components.md#permissiontable) - Hierarchical permission management table with cascading checks
148
+ - [`CrudSheet`](docs/data-components.md#crudsheet) - CRUD data sheet with search, inline/modal editing, Excel import/export, and select mode
149
+ - [`CrudDetail`](docs/data-components.md#cruddetail) - CRUD detail form with load, save, delete, and topbar action integration
148
150
 
149
151
  ### Layout
150
152
 
@@ -193,6 +195,7 @@ import "@simplysm/solid/tailwind.css";
193
195
  - [`useDialog`](docs/disclosure.md#dialog) - Programmatic dialog opening
194
196
  - [`useDialogInstance`](docs/disclosure.md#dialog) - Access dialog instance for closing from inside dialog content
195
197
  - [`createControllableSignal`](docs/hooks.md#createcontrollablesignal) - Controlled/Uncontrolled signal pattern
198
+ - [`createControllableStore`](docs/hooks.md#createcontrollablestore) - Controlled/Uncontrolled store pattern (for objects/arrays)
196
199
  - [`createMountTransition`](docs/hooks.md#createmounttransition) - Mount/unmount CSS animation hook
197
200
  - [`createIMEHandler`](docs/hooks.md#createimehandler) - IME composition delay handler
198
201
  - [`createTopbarActions`](docs/layout.md#topbar-actions-slot) - Register actions in nearest Topbar.Container scope
@@ -217,7 +220,6 @@ import "@simplysm/solid/tailwind.css";
217
220
  ## Helpers & Directives
218
221
 
219
222
  - [`mergeStyles`](docs/helpers.md#mergestyles) - Merge inline style strings and CSSProperties objects
220
- - [`splitSlots`](docs/helpers.md#splitslots) - Split children into named slots by component type
221
223
  - [`ripple`](docs/helpers.md#ripple-directive) - Material Design ripple effect directive
222
224
  - [`createAppStructure`](docs/hooks.md#createappstructure) - Declarative app structure (routing, menus, permissions)
223
225
 
@@ -0,0 +1,14 @@
1
+ import { type JSX } from "solid-js";
2
+ import { CrudDetailTools } from "./CrudDetailTools";
3
+ import { CrudDetailBefore } from "./CrudDetailBefore";
4
+ import { CrudDetailAfter } from "./CrudDetailAfter";
5
+ import type { CrudDetailProps } from "./types";
6
+ interface CrudDetailComponent {
7
+ <TData extends object>(props: CrudDetailProps<TData>): JSX.Element;
8
+ Tools: typeof CrudDetailTools;
9
+ Before: typeof CrudDetailBefore;
10
+ After: typeof CrudDetailAfter;
11
+ }
12
+ export declare const CrudDetail: CrudDetailComponent;
13
+ export {};
14
+ //# sourceMappingURL=CrudDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrudDetail.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,GAAG,EAKT,MAAM,UAAU,CAAC;AAclB,OAAO,EAAwB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAyB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAwB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAKV,eAAe,EAEhB,MAAM,SAAS,CAAC;AAEjB,UAAU,mBAAmB;IAC3B,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IACnE,KAAK,EAAE,OAAO,eAAe,CAAC;IAC9B,MAAM,EAAE,OAAO,gBAAgB,CAAC;IAChC,KAAK,EAAE,OAAO,eAAe,CAAC;CAC/B;AA8SD,eAAO,MAAM,UAAU,EAAgC,mBAAmB,CAAC"}
@@ -0,0 +1,348 @@
1
+ import { template as _$template } from "solid-js/web";
2
+ import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
+ import { use as _$use } from "solid-js/web";
4
+ import { insert as _$insert } from "solid-js/web";
5
+ import { createComponent as _$createComponent } from "solid-js/web";
6
+ import { memo as _$memo } from "solid-js/web";
7
+ var _tmpl$ = /* @__PURE__ */ _$template(`<button class="flex items-center px-2 text-base-400 hover:text-base-600">`), _tmpl$2 = /* @__PURE__ */ _$template(`<div class="flex gap-2 p-2 pb-0">`), _tmpl$3 = /* @__PURE__ */ _$template(`<form class="flex-1 overflow-auto p-2">`), _tmpl$4 = /* @__PURE__ */ _$template(`<div class="flex gap-2 border-t border-base-200 p-2"><div class=flex-1>`), _tmpl$5 = /* @__PURE__ */ _$template(`<div class="px-2 pb-1 text-xs text-base-400">\uCD5C\uC885 \uC218\uC815: `);
8
+ import { children, createMemo, createSignal, onMount, Show, splitProps, useContext } from "solid-js";
9
+ import { reconcile, unwrap } from "solid-js/store";
10
+ import { createControllableStore } from "../../../hooks/createControllableStore.js";
11
+ import { objClone, objEqual } from "@simplysm/core-common";
12
+ import { BusyContainer } from "../../feedback/busy/BusyContainer.js";
13
+ import { useNotification } from "../../feedback/notification/NotificationContext.js";
14
+ import { Button } from "../../form-control/Button.js";
15
+ import { Icon } from "../../display/Icon.js";
16
+ import { TopbarContext, createTopbarActions } from "../../layout/topbar/TopbarContext.js";
17
+ import { useDialogInstance } from "../../disclosure/DialogInstanceContext.js";
18
+ import { Dialog } from "../../disclosure/Dialog.js";
19
+ import { createEventListener } from "@solid-primitives/event-listener";
20
+ import clsx from "clsx";
21
+ import { IconDeviceFloppy, IconRefresh, IconTrash, IconTrashOff } from "@tabler/icons-solidjs";
22
+ import { isCrudDetailToolsDef, CrudDetailTools } from "./CrudDetailTools.js";
23
+ import { isCrudDetailBeforeDef, CrudDetailBefore } from "./CrudDetailBefore.js";
24
+ import { isCrudDetailAfterDef, CrudDetailAfter } from "./CrudDetailAfter.js";
25
+ const CrudDetailBase = (props) => {
26
+ const [local, _rest] = splitProps(props, ["load", "children", "submit", "toggleDelete", "editable", "deletable", "data", "onDataChange", "class"]);
27
+ const noti = useNotification();
28
+ const topbarCtx = useContext(TopbarContext);
29
+ const dialogInstance = useDialogInstance();
30
+ const isModal = dialogInstance !== void 0;
31
+ const canEdit = () => local.editable ?? true;
32
+ const [data, setData] = createControllableStore({
33
+ value: () => local.data ?? {},
34
+ onChange: () => local.onDataChange
35
+ });
36
+ let originalData;
37
+ const [info, setInfo] = createSignal();
38
+ const [busyCount, setBusyCount] = createSignal(0);
39
+ const [ready, setReady] = createSignal(false);
40
+ let formRef;
41
+ async function doLoad() {
42
+ setBusyCount((c) => c + 1);
43
+ await noti.try(async () => {
44
+ const result = await local.load();
45
+ setData(reconcile(result.data));
46
+ originalData = objClone(result.data);
47
+ setInfo(result.info);
48
+ }, "\uC870\uD68C \uC2E4\uD328");
49
+ setBusyCount((c) => c - 1);
50
+ setReady(true);
51
+ }
52
+ onMount(() => {
53
+ void doLoad();
54
+ });
55
+ function hasChanges() {
56
+ if (originalData == null) return false;
57
+ return !objEqual(unwrap(data), originalData);
58
+ }
59
+ async function handleRefresh() {
60
+ if (hasChanges()) {
61
+ if (!confirm("\uBCC0\uACBD\uC0AC\uD56D\uC744 \uBB34\uC2DC\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?")) return;
62
+ }
63
+ await doLoad();
64
+ }
65
+ async function handleSave() {
66
+ if (busyCount() > 0) return;
67
+ if (!local.submit) return;
68
+ const currentInfo = info();
69
+ if (currentInfo && !currentInfo.isNew && !hasChanges()) {
70
+ noti.info("\uC548\uB0B4", "\uBCC0\uACBD\uC0AC\uD56D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.");
71
+ return;
72
+ }
73
+ setBusyCount((c) => c + 1);
74
+ await noti.try(async () => {
75
+ const result = await local.submit(objClone(unwrap(data)));
76
+ if (result) {
77
+ noti.success("\uC800\uC7A5 \uC644\uB8CC", "\uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
78
+ if (dialogInstance) {
79
+ dialogInstance.close(true);
80
+ } else {
81
+ await doLoad();
82
+ }
83
+ }
84
+ }, "\uC800\uC7A5 \uC2E4\uD328");
85
+ setBusyCount((c) => c - 1);
86
+ }
87
+ async function handleFormSubmit(e) {
88
+ e.preventDefault();
89
+ await handleSave();
90
+ }
91
+ async function handleToggleDelete() {
92
+ if (busyCount() > 0) return;
93
+ if (!local.toggleDelete) return;
94
+ const currentInfo = info();
95
+ if (!currentInfo) return;
96
+ const del = !currentInfo.isDeleted;
97
+ setBusyCount((c) => c + 1);
98
+ await noti.try(async () => {
99
+ const result = await local.toggleDelete(del);
100
+ if (result) {
101
+ noti.success(del ? "\uC0AD\uC81C \uC644\uB8CC" : "\uBCF5\uAD6C \uC644\uB8CC", del ? "\uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4." : "\uBCF5\uAD6C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
102
+ if (dialogInstance) {
103
+ dialogInstance.close(true);
104
+ } else {
105
+ await doLoad();
106
+ }
107
+ }
108
+ }, del ? "\uC0AD\uC81C \uC2E4\uD328" : "\uBCF5\uAD6C \uC2E4\uD328");
109
+ setBusyCount((c) => c - 1);
110
+ }
111
+ createEventListener(document, "keydown", (e) => {
112
+ if (e.ctrlKey && e.key === "s") {
113
+ e.preventDefault();
114
+ formRef == null ? void 0 : formRef.requestSubmit();
115
+ }
116
+ if (e.ctrlKey && e.altKey && e.key === "l") {
117
+ e.preventDefault();
118
+ void handleRefresh();
119
+ }
120
+ });
121
+ if (topbarCtx) {
122
+ createTopbarActions(() => [_$createComponent(Show, {
123
+ get when() {
124
+ return _$memo(() => !!canEdit())() && local.submit;
125
+ },
126
+ get children() {
127
+ return _$createComponent(Button, {
128
+ size: "lg",
129
+ variant: "ghost",
130
+ theme: "primary",
131
+ onClick: () => formRef == null ? void 0 : formRef.requestSubmit(),
132
+ get children() {
133
+ return [_$createComponent(Icon, {
134
+ icon: IconDeviceFloppy,
135
+ "class": "mr-1"
136
+ }), "\uC800\uC7A5"];
137
+ }
138
+ });
139
+ }
140
+ }), _$createComponent(Button, {
141
+ size: "lg",
142
+ variant: "ghost",
143
+ theme: "info",
144
+ onClick: () => void handleRefresh(),
145
+ get children() {
146
+ return [_$createComponent(Icon, {
147
+ icon: IconRefresh,
148
+ "class": "mr-1"
149
+ }), "\uC0C8\uB85C\uACE0\uCE68"];
150
+ }
151
+ })]);
152
+ }
153
+ const ctx = {
154
+ data,
155
+ setData,
156
+ info: () => info(),
157
+ busy: () => busyCount() > 0,
158
+ hasChanges,
159
+ save: handleSave,
160
+ refresh: handleRefresh
161
+ };
162
+ const rendered = children(() => local.children(ctx));
163
+ const defs = createMemo(() => {
164
+ const arr = rendered.toArray();
165
+ return {
166
+ tools: arr.find(isCrudDetailToolsDef),
167
+ before: arr.find(isCrudDetailBeforeDef),
168
+ after: arr.find(isCrudDetailAfterDef)
169
+ };
170
+ });
171
+ const formContent = () => rendered.toArray().filter((el) => !isCrudDetailToolsDef(el) && !isCrudDetailBeforeDef(el) && !isCrudDetailAfterDef(el));
172
+ return [_$createComponent(Show, {
173
+ when: isModal,
174
+ get children() {
175
+ return _$createComponent(Dialog.Action, {
176
+ get children() {
177
+ var _el$ = _tmpl$();
178
+ _el$.$$click = () => void handleRefresh();
179
+ _$insert(_el$, _$createComponent(Icon, {
180
+ icon: IconRefresh
181
+ }));
182
+ return _el$;
183
+ }
184
+ });
185
+ }
186
+ }), _$createComponent(BusyContainer, {
187
+ get ready() {
188
+ return ready();
189
+ },
190
+ get busy() {
191
+ return busyCount() > 0;
192
+ },
193
+ get ["class"]() {
194
+ return clsx("flex h-full flex-col", local.class);
195
+ },
196
+ get children() {
197
+ return [_$createComponent(Show, {
198
+ get when() {
199
+ return !isModal && canEdit();
200
+ },
201
+ get children() {
202
+ var _el$2 = _tmpl$2();
203
+ _$insert(_el$2, _$createComponent(Show, {
204
+ get when() {
205
+ return local.submit;
206
+ },
207
+ get children() {
208
+ return _$createComponent(Button, {
209
+ size: "sm",
210
+ theme: "primary",
211
+ variant: "ghost",
212
+ onClick: () => formRef == null ? void 0 : formRef.requestSubmit(),
213
+ get children() {
214
+ return [_$createComponent(Icon, {
215
+ icon: IconDeviceFloppy,
216
+ "class": "mr-1"
217
+ }), "\uC800\uC7A5"];
218
+ }
219
+ });
220
+ }
221
+ }), null);
222
+ _$insert(_el$2, _$createComponent(Button, {
223
+ size: "sm",
224
+ theme: "info",
225
+ variant: "ghost",
226
+ onClick: () => void handleRefresh(),
227
+ get children() {
228
+ return [_$createComponent(Icon, {
229
+ icon: IconRefresh,
230
+ "class": "mr-1"
231
+ }), "\uC0C8\uB85C\uACE0\uCE68"];
232
+ }
233
+ }), null);
234
+ _$insert(_el$2, _$createComponent(Show, {
235
+ get when() {
236
+ return _$memo(() => !!(local.toggleDelete && info() && !info().isNew))() && (local.deletable ?? true);
237
+ },
238
+ children: (_) => _$createComponent(Button, {
239
+ size: "sm",
240
+ theme: "danger",
241
+ variant: "ghost",
242
+ onClick: () => void handleToggleDelete(),
243
+ get children() {
244
+ return [_$createComponent(Icon, {
245
+ get icon() {
246
+ return info().isDeleted ? IconTrashOff : IconTrash;
247
+ },
248
+ "class": "mr-1"
249
+ }), _$memo(() => info().isDeleted ? "\uBCF5\uAD6C" : "\uC0AD\uC81C")];
250
+ }
251
+ })
252
+ }), null);
253
+ _$insert(_el$2, _$createComponent(Show, {
254
+ get when() {
255
+ return defs().tools;
256
+ },
257
+ children: (toolsDef) => toolsDef().children
258
+ }), null);
259
+ return _el$2;
260
+ }
261
+ }), _$createComponent(Show, {
262
+ get when() {
263
+ return defs().before;
264
+ },
265
+ children: (beforeDef) => beforeDef().children
266
+ }), (() => {
267
+ var _el$3 = _tmpl$3();
268
+ _el$3.addEventListener("submit", handleFormSubmit);
269
+ var _ref$ = formRef;
270
+ typeof _ref$ === "function" ? _$use(_ref$, _el$3) : formRef = _el$3;
271
+ _$insert(_el$3, formContent);
272
+ return _el$3;
273
+ })(), _$createComponent(Show, {
274
+ get when() {
275
+ var _a;
276
+ return (_a = info()) == null ? void 0 : _a.lastModifiedAt;
277
+ },
278
+ children: (_) => (() => {
279
+ var _el$6 = _tmpl$5(), _el$7 = _el$6.firstChild;
280
+ _$insert(_el$6, () => info().lastModifiedAt.toFormatString("yyyy-MM-dd HH:mm"), null);
281
+ _$insert(_el$6, _$createComponent(Show, {
282
+ get when() {
283
+ var _a;
284
+ return (_a = info()) == null ? void 0 : _a.lastModifiedBy;
285
+ },
286
+ get children() {
287
+ return [" (", _$memo(() => info().lastModifiedBy), ")"];
288
+ }
289
+ }), null);
290
+ return _el$6;
291
+ })()
292
+ }), _$createComponent(Show, {
293
+ get when() {
294
+ return defs().after;
295
+ },
296
+ children: (afterDef) => afterDef().children
297
+ }), _$createComponent(Show, {
298
+ get when() {
299
+ return isModal && canEdit();
300
+ },
301
+ get children() {
302
+ var _el$4 = _tmpl$4(), _el$5 = _el$4.firstChild;
303
+ _$insert(_el$4, _$createComponent(Show, {
304
+ get when() {
305
+ return _$memo(() => !!(local.toggleDelete && info() && !info().isNew))() && (local.deletable ?? true);
306
+ },
307
+ children: (_) => _$createComponent(Button, {
308
+ size: "sm",
309
+ theme: "danger",
310
+ onClick: () => void handleToggleDelete(),
311
+ get children() {
312
+ return [_$createComponent(Icon, {
313
+ get icon() {
314
+ return info().isDeleted ? IconTrashOff : IconTrash;
315
+ },
316
+ "class": "mr-1"
317
+ }), _$memo(() => info().isDeleted ? "\uBCF5\uAD6C" : "\uC0AD\uC81C")];
318
+ }
319
+ })
320
+ }), null);
321
+ _$insert(_el$4, _$createComponent(Show, {
322
+ get when() {
323
+ return local.submit;
324
+ },
325
+ get children() {
326
+ return _$createComponent(Button, {
327
+ size: "sm",
328
+ theme: "primary",
329
+ onClick: () => formRef == null ? void 0 : formRef.requestSubmit(),
330
+ children: "\uD655\uC778"
331
+ });
332
+ }
333
+ }), null);
334
+ return _el$4;
335
+ }
336
+ })];
337
+ }
338
+ })];
339
+ };
340
+ const CrudDetail = CrudDetailBase;
341
+ CrudDetail.Tools = CrudDetailTools;
342
+ CrudDetail.Before = CrudDetailBefore;
343
+ CrudDetail.After = CrudDetailAfter;
344
+ _$delegateEvents(["click"]);
345
+ export {
346
+ CrudDetail
347
+ };
348
+ //# sourceMappingURL=CrudDetail.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/data/crud-detail/CrudDetail.tsx"],
4
+ "mappings": "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",
5
+ "names": ["children", "createMemo", "createSignal", "onMount", "Show", "splitProps", "useContext", "reconcile", "unwrap", "createControllableStore", "objClone", "objEqual", "BusyContainer", "useNotification", "Button", "Icon", "TopbarContext", "createTopbarActions", "useDialogInstance", "Dialog", "createEventListener", "clsx", "IconDeviceFloppy", "IconRefresh", "IconTrash", "IconTrashOff", "isCrudDetailToolsDef", "CrudDetailTools", "isCrudDetailBeforeDef", "CrudDetailBefore", "isCrudDetailAfterDef", "CrudDetailAfter", "CrudDetailBase", "props", "local", "_rest", "noti", "topbarCtx", "dialogInstance", "isModal", "undefined", "canEdit", "editable", "data", "setData", "value", "onChange", "onDataChange", "originalData", "info", "setInfo", "busyCount", "setBusyCount", "ready", "setReady", "formRef", "doLoad", "c", "try", "result", "load", "hasChanges", "handleRefresh", "confirm", "handleSave", "submit", "currentInfo", "isNew", "success", "close", "handleFormSubmit", "e", "preventDefault", "handleToggleDelete", "toggleDelete", "del", "isDeleted", "document", "ctrlKey", "key", "requestSubmit", "altKey", "_$createComponent", "when", "_$memo", "size", "variant", "theme", "onClick", "icon", "ctx", "busy", "save", "refresh", "rendered", "defs", "arr", "toArray", "tools", "find", "before", "after", "formContent", "filter", "el", "Action", "_el$", "_tmpl$", "$$click", "_$insert", "class", "_el$2", "_tmpl$2", "deletable", "_", "toolsDef", "beforeDef", "_el$3", "_tmpl$3", "addEventListener", "_ref$", "_$use", "lastModifiedAt", "_el$6", "_tmpl$5", "_el$7", "firstChild", "toFormatString", "lastModifiedBy", "afterDef", "_el$4", "_tmpl$4", "_el$5", "CrudDetail", "Tools", "Before", "After", "_$delegateEvents"]
6
+ }
@@ -0,0 +1,7 @@
1
+ import type { JSX } from "solid-js";
2
+ import type { CrudDetailAfterDef } from "./types";
3
+ export declare function isCrudDetailAfterDef(value: unknown): value is CrudDetailAfterDef;
4
+ export declare function CrudDetailAfter(props: {
5
+ children: JSX.Element;
6
+ }): JSX.Element;
7
+ //# sourceMappingURL=CrudDetailAfter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrudDetailAfter.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetailAfter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAMhF;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAK7E"}
@@ -0,0 +1,14 @@
1
+ function isCrudDetailAfterDef(value) {
2
+ return value != null && typeof value === "object" && value["__type"] === "crud-detail-after";
3
+ }
4
+ function CrudDetailAfter(props) {
5
+ return {
6
+ __type: "crud-detail-after",
7
+ children: props.children
8
+ };
9
+ }
10
+ export {
11
+ CrudDetailAfter,
12
+ isCrudDetailAfterDef
13
+ };
14
+ //# sourceMappingURL=CrudDetailAfter.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/data/crud-detail/CrudDetailAfter.tsx"],
4
+ "mappings": "AAGO,SAASA,qBAAqBC,OAA6C;AAChF,SACEA,SAAS,QACT,OAAOA,UAAU,YAChBA,MAAkC,QAAQ,MAAM;AAErD;AAGO,SAASC,gBAAgBC,OAA+C;AAC7E,SAAO;IACLC,QAAQ;IACRC,UAAUF,MAAME;EAClB;AACF;",
5
+ "names": ["isCrudDetailAfterDef", "value", "CrudDetailAfter", "props", "__type", "children"]
6
+ }
@@ -0,0 +1,7 @@
1
+ import type { JSX } from "solid-js";
2
+ import type { CrudDetailBeforeDef } from "./types";
3
+ export declare function isCrudDetailBeforeDef(value: unknown): value is CrudDetailBeforeDef;
4
+ export declare function CrudDetailBefore(props: {
5
+ children: JSX.Element;
6
+ }): JSX.Element;
7
+ //# sourceMappingURL=CrudDetailBefore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrudDetailBefore.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetailBefore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAMlF;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAK9E"}
@@ -0,0 +1,14 @@
1
+ function isCrudDetailBeforeDef(value) {
2
+ return value != null && typeof value === "object" && value["__type"] === "crud-detail-before";
3
+ }
4
+ function CrudDetailBefore(props) {
5
+ return {
6
+ __type: "crud-detail-before",
7
+ children: props.children
8
+ };
9
+ }
10
+ export {
11
+ CrudDetailBefore,
12
+ isCrudDetailBeforeDef
13
+ };
14
+ //# sourceMappingURL=CrudDetailBefore.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/data/crud-detail/CrudDetailBefore.tsx"],
4
+ "mappings": "AAGO,SAASA,sBAAsBC,OAA8C;AAClF,SACEA,SAAS,QACT,OAAOA,UAAU,YAChBA,MAAkC,QAAQ,MAAM;AAErD;AAGO,SAASC,iBAAiBC,OAA+C;AAC9E,SAAO;IACLC,QAAQ;IACRC,UAAUF,MAAME;EAClB;AACF;",
5
+ "names": ["isCrudDetailBeforeDef", "value", "CrudDetailBefore", "props", "__type", "children"]
6
+ }
@@ -0,0 +1,7 @@
1
+ import type { JSX } from "solid-js";
2
+ import type { CrudDetailToolsDef } from "./types";
3
+ export declare function isCrudDetailToolsDef(value: unknown): value is CrudDetailToolsDef;
4
+ export declare function CrudDetailTools(props: {
5
+ children: JSX.Element;
6
+ }): JSX.Element;
7
+ //# sourceMappingURL=CrudDetailTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrudDetailTools.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetailTools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAMhF;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAK7E"}
@@ -0,0 +1,14 @@
1
+ function isCrudDetailToolsDef(value) {
2
+ return value != null && typeof value === "object" && value["__type"] === "crud-detail-tools";
3
+ }
4
+ function CrudDetailTools(props) {
5
+ return {
6
+ __type: "crud-detail-tools",
7
+ children: props.children
8
+ };
9
+ }
10
+ export {
11
+ CrudDetailTools,
12
+ isCrudDetailToolsDef
13
+ };
14
+ //# sourceMappingURL=CrudDetailTools.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/data/crud-detail/CrudDetailTools.tsx"],
4
+ "mappings": "AAGO,SAASA,qBAAqBC,OAA6C;AAChF,SACEA,SAAS,QACT,OAAOA,UAAU,YAChBA,MAAkC,QAAQ,MAAM;AAErD;AAGO,SAASC,gBAAgBC,OAA+C;AAC7E,SAAO;IACLC,QAAQ;IACRC,UAAUF,MAAME;EAClB;AACF;",
5
+ "names": ["isCrudDetailToolsDef", "value", "CrudDetailTools", "props", "__type", "children"]
6
+ }
@@ -0,0 +1,45 @@
1
+ import type { JSX } from "solid-js";
2
+ import type { SetStoreFunction } from "solid-js/store";
3
+ import type { DateTime } from "@simplysm/core-common";
4
+ export interface CrudDetailInfo {
5
+ isNew: boolean;
6
+ isDeleted: boolean;
7
+ lastModifiedAt?: DateTime;
8
+ lastModifiedBy?: string;
9
+ }
10
+ export interface CrudDetailContext<TData> {
11
+ data: TData;
12
+ setData: SetStoreFunction<TData>;
13
+ info: () => CrudDetailInfo;
14
+ busy: () => boolean;
15
+ hasChanges: () => boolean;
16
+ save: () => Promise<void>;
17
+ refresh: () => Promise<void>;
18
+ }
19
+ export interface CrudDetailProps<TData extends object> {
20
+ load: () => Promise<{
21
+ data: TData;
22
+ info: CrudDetailInfo;
23
+ }>;
24
+ children: (ctx: CrudDetailContext<TData>) => JSX.Element;
25
+ submit?: (data: TData) => Promise<boolean | undefined>;
26
+ toggleDelete?: (del: boolean) => Promise<boolean | undefined>;
27
+ editable?: boolean;
28
+ deletable?: boolean;
29
+ data?: TData;
30
+ onDataChange?: (data: TData) => void;
31
+ class?: string;
32
+ }
33
+ export interface CrudDetailToolsDef {
34
+ __type: "crud-detail-tools";
35
+ children: JSX.Element;
36
+ }
37
+ export interface CrudDetailBeforeDef {
38
+ __type: "crud-detail-before";
39
+ children: JSX.Element;
40
+ }
41
+ export interface CrudDetailAfterDef {
42
+ __type: "crud-detail-after";
43
+ children: JSX.Element;
44
+ }
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,cAAc,CAAC;IAC3B,IAAI,EAAE,MAAM,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAID,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,MAAM;IACnD,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAC3D,QAAQ,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC;IAEzD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAErC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "mappings": "",
5
+ "names": []
6
+ }
@@ -0,0 +1,17 @@
1
+ import { type JSX } from "solid-js";
2
+ import "@simplysm/core-common";
3
+ import { CrudSheetColumn } from "./CrudSheetColumn";
4
+ import { CrudSheetFilter } from "./CrudSheetFilter";
5
+ import { CrudSheetTools } from "./CrudSheetTools";
6
+ import { CrudSheetHeader } from "./CrudSheetHeader";
7
+ import type { CrudSheetProps } from "./types";
8
+ interface CrudSheetComponent {
9
+ <TItem, TFilter extends Record<string, any>>(props: CrudSheetProps<TItem, TFilter>): JSX.Element;
10
+ Column: typeof CrudSheetColumn;
11
+ Filter: typeof CrudSheetFilter;
12
+ Tools: typeof CrudSheetTools;
13
+ Header: typeof CrudSheetHeader;
14
+ }
15
+ export declare const CrudSheet: CrudSheetComponent;
16
+ export {};
17
+ //# sourceMappingURL=CrudSheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrudSheet.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-sheet\\CrudSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,GAAG,EAIT,MAAM,UAAU,CAAC;AAIlB,OAAO,uBAAuB,CAAC;AAyB/B,OAAO,EAAwB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAwB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAuB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAwB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAKV,cAAc,EAGf,MAAM,SAAS,CAAC;AAEjB,UAAU,kBAAkB;IAC1B,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IACjG,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,KAAK,EAAE,OAAO,cAAc,CAAC;IAC7B,MAAM,EAAE,OAAO,eAAe,CAAC;CAChC;AAojBD,eAAO,MAAM,SAAS,EAA+B,kBAAkB,CAAC"}