@simplysm/solid 13.0.76 → 13.0.77

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 (291) hide show
  1. package/README.md +9 -10
  2. package/dist/components/data/kanban/Kanban.d.ts +31 -38
  3. package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
  4. package/dist/components/data/kanban/Kanban.js.map +1 -1
  5. package/dist/components/data/list/List.d.ts +7 -28
  6. package/dist/components/data/list/List.d.ts.map +1 -1
  7. package/dist/components/data/list/List.js +3 -2
  8. package/dist/components/data/list/List.js.map +2 -2
  9. package/dist/components/data/sheet/DataSheet.d.ts +3 -8
  10. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  11. package/dist/components/data/sheet/DataSheet.js +305 -418
  12. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  13. package/dist/components/data/sheet/{types.d.ts → DataSheet.types.d.ts} +9 -3
  14. package/dist/components/data/sheet/DataSheet.types.d.ts.map +1 -0
  15. package/dist/components/data/sheet/DataSheet.types.js +1 -0
  16. package/dist/components/data/sheet/{sheetUtils.d.ts → DataSheet.utils.d.ts} +2 -2
  17. package/dist/components/data/sheet/DataSheet.utils.d.ts.map +1 -0
  18. package/dist/components/data/sheet/{sheetUtils.js → DataSheet.utils.js} +3 -3
  19. package/dist/components/data/sheet/DataSheet.utils.js.map +6 -0
  20. package/dist/components/data/sheet/DataSheetColumn.d.ts +1 -1
  21. package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -1
  22. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts +1 -1
  23. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
  24. package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts +1 -1
  25. package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts.map +1 -1
  26. package/dist/components/data/sheet/hooks/useDataSheetExpansion.js +1 -1
  27. package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts +2 -2
  28. package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts.map +1 -1
  29. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts +27 -0
  30. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts.map +1 -0
  31. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.js +173 -0
  32. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.js.map +6 -0
  33. package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts +1 -2
  34. package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts.map +1 -1
  35. package/dist/components/data/sheet/hooks/useDataSheetReorder.js.map +1 -1
  36. package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts +2 -2
  37. package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts.map +1 -1
  38. package/dist/components/data/sheet/hooks/useDataSheetSelection.js +2 -2
  39. package/dist/components/data/sheet/hooks/useDataSheetSelection.js.map +1 -1
  40. package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts +1 -1
  41. package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts.map +1 -1
  42. package/dist/components/data/sheet/hooks/useDataSheetSorting.js +1 -1
  43. package/dist/components/disclosure/Dialog.d.ts +6 -10
  44. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  45. package/dist/components/disclosure/Dialog.js +11 -14
  46. package/dist/components/disclosure/Dialog.js.map +2 -2
  47. package/dist/components/disclosure/Dropdown.d.ts +8 -12
  48. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  49. package/dist/components/disclosure/Dropdown.js.map +1 -1
  50. package/dist/components/disclosure/Tabs.d.ts +3 -5
  51. package/dist/components/disclosure/Tabs.d.ts.map +1 -1
  52. package/dist/components/disclosure/Tabs.js.map +1 -1
  53. package/dist/components/display/Barcode.d.ts +1 -1
  54. package/dist/components/display/Barcode.d.ts.map +1 -1
  55. package/dist/components/display/Barcode.js +2 -1
  56. package/dist/components/display/Barcode.js.map +2 -2
  57. package/dist/components/display/Barcode.types.d.ts +2 -0
  58. package/dist/components/display/Barcode.types.d.ts.map +1 -0
  59. package/dist/components/display/Barcode.types.js +1 -0
  60. package/dist/components/display/Echarts.d.ts +2 -2
  61. package/dist/components/display/Echarts.d.ts.map +1 -1
  62. package/dist/components/display/Echarts.js +7 -8
  63. package/dist/components/display/Echarts.js.map +2 -2
  64. package/dist/components/features/address/AddressSearch.d.ts.map +1 -1
  65. package/dist/components/features/address/AddressSearch.js +4 -1
  66. package/dist/components/features/address/AddressSearch.js.map +2 -2
  67. package/dist/components/features/crud-detail/CrudDetail.d.ts +12 -13
  68. package/dist/components/features/crud-detail/CrudDetail.d.ts.map +1 -1
  69. package/dist/components/features/crud-detail/CrudDetail.js +18 -15
  70. package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
  71. package/dist/components/features/crud-detail/{types.d.ts → CrudDetail.types.d.ts} +1 -1
  72. package/dist/components/features/crud-detail/CrudDetail.types.d.ts.map +1 -0
  73. package/dist/components/features/crud-detail/CrudDetail.types.js +1 -0
  74. package/dist/components/features/crud-sheet/CrudSheet.d.ts +3 -13
  75. package/dist/components/features/crud-sheet/CrudSheet.d.ts.map +1 -1
  76. package/dist/components/features/crud-sheet/CrudSheet.js +62 -73
  77. package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
  78. package/dist/components/features/crud-sheet/{types.d.ts → CrudSheet.types.d.ts} +10 -10
  79. package/dist/components/features/crud-sheet/CrudSheet.types.d.ts.map +1 -0
  80. package/dist/components/features/crud-sheet/CrudSheet.types.js +1 -0
  81. package/dist/components/features/crud-sheet/CrudSheet.types.js.map +6 -0
  82. package/dist/components/features/crud-sheet/CrudSheetColumn.d.ts +1 -1
  83. package/dist/components/features/crud-sheet/CrudSheetColumn.d.ts.map +1 -1
  84. package/dist/components/features/crud-sheet/CrudSheetTools.d.ts +1 -1
  85. package/dist/components/features/crud-sheet/CrudSheetTools.d.ts.map +1 -1
  86. package/dist/components/features/data-select-button/DataSelectButton.d.ts +2 -2
  87. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
  88. package/dist/components/features/data-select-button/DataSelectButton.js +3 -3
  89. package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
  90. package/dist/components/features/shared-data/SharedDataSelect.d.ts +7 -11
  91. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
  92. package/dist/components/features/shared-data/SharedDataSelect.js +5 -4
  93. package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
  94. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
  95. package/dist/components/features/shared-data/SharedDataSelectButton.js.map +1 -1
  96. package/dist/components/features/shared-data/SharedDataSelectList.d.ts +8 -15
  97. package/dist/components/features/shared-data/SharedDataSelectList.d.ts.map +1 -1
  98. package/dist/components/features/shared-data/SharedDataSelectList.js +5 -3
  99. package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
  100. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  101. package/dist/components/feedback/notification/NotificationProvider.js +9 -1
  102. package/dist/components/feedback/notification/NotificationProvider.js.map +2 -2
  103. package/dist/components/feedback/print/Print.d.ts +4 -6
  104. package/dist/components/feedback/print/Print.d.ts.map +1 -1
  105. package/dist/components/feedback/print/Print.js +3 -2
  106. package/dist/components/feedback/print/Print.js.map +2 -2
  107. package/dist/components/feedback/print/PrintProvider.d.ts.map +1 -1
  108. package/dist/components/feedback/print/PrintProvider.js +1 -0
  109. package/dist/components/feedback/print/PrintProvider.js.map +1 -1
  110. package/dist/components/form-control/Invalid.d.ts +1 -1
  111. package/dist/components/form-control/Invalid.d.ts.map +1 -1
  112. package/dist/components/form-control/Invalid.js +27 -26
  113. package/dist/components/form-control/Invalid.js.map +2 -2
  114. package/dist/components/form-control/checkbox/Checkbox.d.ts +1 -1
  115. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  116. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts +10 -10
  117. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts.map +1 -1
  118. package/dist/components/form-control/checkbox/CheckboxGroup.js +2 -2
  119. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
  120. package/dist/components/form-control/checkbox/Radio.d.ts +1 -1
  121. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  122. package/dist/components/form-control/checkbox/RadioGroup.d.ts +10 -10
  123. package/dist/components/form-control/checkbox/RadioGroup.d.ts.map +1 -1
  124. package/dist/components/form-control/checkbox/RadioGroup.js +2 -2
  125. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
  126. package/dist/components/form-control/checkbox/SelectableBase.d.ts +1 -1
  127. package/dist/components/form-control/checkbox/SelectableBase.d.ts.map +1 -1
  128. package/dist/components/form-control/checkbox/SelectableBase.js +3 -3
  129. package/dist/components/form-control/checkbox/SelectableBase.js.map +2 -2
  130. package/dist/components/form-control/checkbox/SelectionGroupBase.d.ts +1 -1
  131. package/dist/components/form-control/checkbox/SelectionGroupBase.d.ts.map +1 -1
  132. package/dist/components/form-control/checkbox/SelectionGroupBase.js +3 -3
  133. package/dist/components/form-control/checkbox/SelectionGroupBase.js.map +2 -2
  134. package/dist/components/form-control/color-picker/ColorPicker.d.ts +2 -2
  135. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  136. package/dist/components/form-control/color-picker/ColorPicker.js +3 -3
  137. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
  138. package/dist/components/form-control/combobox/Combobox.d.ts +3 -3
  139. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  140. package/dist/components/form-control/combobox/Combobox.js +10 -5
  141. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  142. package/dist/components/form-control/date-range-picker/DateRangePicker.js +4 -4
  143. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  144. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
  145. package/dist/components/form-control/editor/EditorToolbar.js +176 -312
  146. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  147. package/dist/components/form-control/field/DatePicker.d.ts +2 -2
  148. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  149. package/dist/components/form-control/field/DatePicker.js +3 -3
  150. package/dist/components/form-control/field/DatePicker.js.map +2 -2
  151. package/dist/components/form-control/field/DateTimePicker.d.ts +2 -2
  152. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  153. package/dist/components/form-control/field/DateTimePicker.js +3 -3
  154. package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
  155. package/dist/components/form-control/field/FieldShell.d.ts +1 -1
  156. package/dist/components/form-control/field/FieldShell.d.ts.map +1 -1
  157. package/dist/components/form-control/field/FieldShell.js +2 -2
  158. package/dist/components/form-control/field/FieldShell.js.map +2 -2
  159. package/dist/components/form-control/field/NumberInput.d.ts +7 -28
  160. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  161. package/dist/components/form-control/field/NumberInput.js +7 -5
  162. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  163. package/dist/components/form-control/field/TextInput.d.ts +7 -23
  164. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  165. package/dist/components/form-control/field/TextInput.js +6 -5
  166. package/dist/components/form-control/field/TextInput.js.map +2 -2
  167. package/dist/components/form-control/field/Textarea.d.ts +2 -2
  168. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  169. package/dist/components/form-control/field/Textarea.js +3 -3
  170. package/dist/components/form-control/field/Textarea.js.map +2 -2
  171. package/dist/components/form-control/field/TimePicker.d.ts +2 -2
  172. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  173. package/dist/components/form-control/field/TimePicker.js +3 -3
  174. package/dist/components/form-control/field/TimePicker.js.map +2 -2
  175. package/dist/components/form-control/select/Select.d.ts +22 -44
  176. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  177. package/dist/components/form-control/select/Select.js +8 -6
  178. package/dist/components/form-control/select/Select.js.map +2 -2
  179. package/dist/components/form-control/state-preset/StatePreset.js +5 -5
  180. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
  181. package/dist/components/layout/sidebar/Sidebar.d.ts +5 -102
  182. package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -1
  183. package/dist/components/layout/sidebar/Sidebar.js.map +1 -1
  184. package/dist/components/layout/topbar/Topbar.d.ts +1 -1
  185. package/dist/components/layout/topbar/Topbar.d.ts.map +1 -1
  186. package/dist/components/layout/topbar/Topbar.js +3 -3
  187. package/dist/components/layout/topbar/Topbar.js.map +2 -2
  188. package/dist/helpers/createAppStructure.d.ts.map +1 -1
  189. package/dist/helpers/createAppStructure.js.map +1 -1
  190. package/dist/hooks/createControllableStore.js +5 -5
  191. package/dist/hooks/createControllableStore.js.map +1 -1
  192. package/dist/index.d.ts +4 -3
  193. package/dist/index.d.ts.map +1 -1
  194. package/dist/index.js +4 -3
  195. package/dist/index.js.map +1 -1
  196. package/dist/providers/ServiceClientProvider.d.ts +2 -2
  197. package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
  198. package/dist/providers/ServiceClientProvider.js.map +1 -1
  199. package/dist/providers/shared-data/SharedDataProvider.d.ts +1 -1
  200. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  201. package/dist/providers/shared-data/SharedDataProvider.js +98 -86
  202. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  203. package/package.json +5 -5
  204. package/src/components/data/kanban/Kanban.tsx +37 -32
  205. package/src/components/data/list/List.tsx +3 -6
  206. package/src/components/data/sheet/DataSheet.tsx +224 -334
  207. package/src/components/data/sheet/{types.ts → DataSheet.types.ts} +8 -2
  208. package/src/components/data/sheet/{sheetUtils.ts → DataSheet.utils.ts} +3 -3
  209. package/src/components/data/sheet/DataSheetColumn.tsx +1 -1
  210. package/src/components/data/sheet/DataSheetConfigDialog.tsx +1 -1
  211. package/src/components/data/sheet/hooks/useDataSheetExpansion.ts +2 -2
  212. package/src/components/data/sheet/hooks/useDataSheetFixedColumns.ts +2 -2
  213. package/src/components/data/sheet/hooks/useDataSheetHeaderCell.tsx +168 -0
  214. package/src/components/data/sheet/hooks/useDataSheetReorder.ts +1 -2
  215. package/src/components/data/sheet/hooks/useDataSheetSelection.ts +4 -4
  216. package/src/components/data/sheet/hooks/useDataSheetSorting.ts +2 -2
  217. package/src/components/disclosure/Dialog.tsx +21 -27
  218. package/src/components/disclosure/Dropdown.tsx +1 -6
  219. package/src/components/disclosure/Tabs.tsx +1 -6
  220. package/src/components/display/Barcode.tsx +4 -113
  221. package/src/components/display/Barcode.types.ts +111 -0
  222. package/src/components/display/Echarts.tsx +10 -11
  223. package/src/components/features/address/AddressSearch.tsx +21 -3
  224. package/src/components/features/crud-detail/CrudDetail.tsx +21 -38
  225. package/src/components/features/crud-sheet/CrudSheet.tsx +77 -93
  226. package/src/components/features/crud-sheet/{types.ts → CrudSheet.types.ts} +9 -9
  227. package/src/components/features/crud-sheet/CrudSheetColumn.tsx +1 -1
  228. package/src/components/features/crud-sheet/CrudSheetTools.tsx +1 -1
  229. package/src/components/features/data-select-button/DataSelectButton.tsx +8 -8
  230. package/src/components/features/shared-data/SharedDataSelect.tsx +23 -34
  231. package/src/components/features/shared-data/SharedDataSelectButton.tsx +1 -4
  232. package/src/components/features/shared-data/SharedDataSelectList.tsx +6 -10
  233. package/src/components/feedback/notification/NotificationProvider.tsx +9 -1
  234. package/src/components/feedback/print/Print.tsx +4 -8
  235. package/src/components/feedback/print/PrintProvider.tsx +2 -1
  236. package/src/components/form-control/Invalid.tsx +33 -29
  237. package/src/components/form-control/checkbox/Checkbox.tsx +1 -1
  238. package/src/components/form-control/checkbox/CheckboxGroup.tsx +3 -12
  239. package/src/components/form-control/checkbox/Radio.tsx +1 -1
  240. package/src/components/form-control/checkbox/RadioGroup.tsx +3 -12
  241. package/src/components/form-control/checkbox/SelectableBase.tsx +3 -3
  242. package/src/components/form-control/checkbox/SelectionGroupBase.tsx +3 -3
  243. package/src/components/form-control/color-picker/ColorPicker.tsx +4 -4
  244. package/src/components/form-control/combobox/Combobox.tsx +23 -18
  245. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +5 -5
  246. package/src/components/form-control/editor/EditorToolbar.tsx +82 -202
  247. package/src/components/form-control/field/DatePicker.tsx +4 -4
  248. package/src/components/form-control/field/DateTimePicker.tsx +4 -4
  249. package/src/components/form-control/field/FieldShell.tsx +2 -2
  250. package/src/components/form-control/field/NumberInput.tsx +8 -11
  251. package/src/components/form-control/field/TextInput.tsx +7 -11
  252. package/src/components/form-control/field/Textarea.tsx +4 -4
  253. package/src/components/form-control/field/TimePicker.tsx +4 -4
  254. package/src/components/form-control/select/Select.tsx +33 -42
  255. package/src/components/form-control/state-preset/StatePreset.tsx +5 -5
  256. package/src/components/layout/sidebar/Sidebar.tsx +1 -7
  257. package/src/components/layout/topbar/Topbar.tsx +3 -3
  258. package/src/helpers/createAppStructure.ts +16 -0
  259. package/src/hooks/createControllableStore.ts +5 -5
  260. package/src/index.ts +4 -3
  261. package/src/providers/ServiceClientProvider.tsx +4 -4
  262. package/src/providers/shared-data/SharedDataProvider.tsx +136 -113
  263. package/tests/components/data/sheet/DataSheet.spec.tsx +2 -2
  264. package/tests/components/data/sheet/hooks/useDataSheetFixedColumns.spec.ts +1 -1
  265. package/tests/components/data/sheet/hooks/useDataSheetSelection.spec.ts +34 -17
  266. package/tests/components/data/sheet/hooks/useDataSheetSorting.spec.ts +1 -1
  267. package/tests/components/disclosure/Dialog.spec.tsx +7 -7
  268. package/tests/components/display/Barcode.spec.tsx +15 -1
  269. package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +6 -6
  270. package/tests/components/form-control/Invalid.spec.tsx +5 -5
  271. package/tests/components/form-control/combobox/Combobox.spec.tsx +24 -1
  272. package/tests/components/layout/topbar/TopbarActions.spec.tsx +4 -4
  273. package/tests/components/layout/topbar/{createTopbarActions.spec.tsx → useTopbarActions.spec.tsx} +4 -4
  274. package/tests/providers/shared-data/SharedDataProvider.spec.tsx +130 -8
  275. package/dist/components/data/sheet/sheetUtils.d.ts.map +0 -1
  276. package/dist/components/data/sheet/sheetUtils.js.map +0 -6
  277. package/dist/components/data/sheet/types.d.ts.map +0 -1
  278. package/dist/components/data/sheet/types.js +0 -1
  279. package/dist/components/features/crud-detail/types.d.ts.map +0 -1
  280. package/dist/components/features/crud-detail/types.js +0 -1
  281. package/dist/components/features/crud-sheet/types.d.ts.map +0 -1
  282. package/dist/components/features/crud-sheet/types.js +0 -1
  283. package/dist/components/feedback/notification/index.d.ts +0 -4
  284. package/dist/components/feedback/notification/index.d.ts.map +0 -1
  285. package/dist/components/feedback/notification/index.js +0 -4
  286. package/dist/components/feedback/notification/index.js.map +0 -6
  287. package/src/components/feedback/notification/index.ts +0 -3
  288. /package/dist/components/data/sheet/{types.js.map → DataSheet.types.js.map} +0 -0
  289. /package/dist/components/{features/crud-detail/types.js.map → display/Barcode.types.js.map} +0 -0
  290. /package/dist/components/features/{crud-sheet/types.js.map → crud-detail/CrudDetail.types.js.map} +0 -0
  291. /package/src/components/features/crud-detail/{types.ts → CrudDetail.types.ts} +0 -0
@@ -11,13 +11,10 @@ import { createResizeObserver } from "@solid-primitives/resize-observer";
11
11
  import clsx from "clsx";
12
12
  import { twMerge } from "tailwind-merge";
13
13
  import {
14
- IconArrowsSort,
15
14
  IconChevronDown,
16
15
  IconChevronRight,
17
16
  IconGripVertical,
18
17
  IconSettings,
19
- IconSortAscending,
20
- IconSortDescending,
21
18
  } from "@tabler/icons-solidjs";
22
19
  import "@simplysm/core-browser";
23
20
  import type {
@@ -26,10 +23,10 @@ import type {
26
23
  DataSheetConfig,
27
24
  DataSheetConfigColumnInfo,
28
25
  DataSheetProps,
29
- } from "./types";
26
+ FlatItem,
27
+ } from "./DataSheet.types";
30
28
  import { DataSheetColumn, createColumnSlotsAccessor } from "./DataSheetColumn";
31
- import { DataSheetConfigDialog } from "./DataSheetConfigDialog";
32
- import { buildHeaderTable, normalizeHeader } from "./sheetUtils";
29
+ import { buildHeaderTable, normalizeHeader } from "./DataSheet.utils";
33
30
  import { startPointerDrag } from "../../../helpers/startPointerDrag";
34
31
  import { Icon } from "../../display/Icon";
35
32
  import { Checkbox } from "../../form-control/checkbox/Checkbox";
@@ -78,14 +75,10 @@ import { useDataSheetExpansion } from "./hooks/useDataSheetExpansion";
78
75
  import { useDataSheetSelection } from "./hooks/useDataSheetSelection";
79
76
  import { useDataSheetReorder } from "./hooks/useDataSheetReorder";
80
77
  import { useDataSheetFixedColumns } from "./hooks/useDataSheetFixedColumns";
78
+ import { useDataSheetHeaderCell } from "./hooks/useDataSheetHeaderCell";
81
79
 
82
- interface DataSheetComponent {
83
- <T>(props: DataSheetProps<T>): JSX.Element;
84
- Column: typeof DataSheetColumn;
85
- ConfigDialog: typeof DataSheetConfigDialog;
86
- }
87
80
 
88
- const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
81
+ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
89
82
  const [local] = splitProps(props, [
90
83
  "items",
91
84
  "storageKey",
@@ -107,7 +100,7 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
107
100
  "selection",
108
101
  "onSelectionChange",
109
102
  "autoSelect",
110
- "itemSelectable",
103
+ "isItemSelectable",
111
104
  "cellClass",
112
105
  "cellStyle",
113
106
  "onItemsReorder",
@@ -123,14 +116,14 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
123
116
  const columnDefs = createMemo(
124
117
  () =>
125
118
  rawColumns().map(
126
- (col): DataSheetColumnDef<T> => ({
119
+ (col): DataSheetColumnDef<TItem> => ({
127
120
  key: col.key,
128
121
  header: normalizeHeader(col.header),
129
122
  headerContent: col.headerContent,
130
123
  headerStyle: col.headerStyle,
131
124
  summary: col.summary,
132
125
  tooltip: col.tooltip,
133
- cell: col.children as (ctx: DataSheetCellContext<T>) => JSX.Element,
126
+ cell: col.children as (ctx: DataSheetCellContext<TItem>) => JSX.Element,
134
127
  class: col.class,
135
128
  fixed: col.fixed ?? false,
136
129
  hidden: col.hidden ?? false,
@@ -228,7 +221,7 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
228
221
  toggleSort,
229
222
  sortIndex: sortIndex,
230
223
  sortedItems,
231
- } = useDataSheetSorting<T>({
224
+ } = useDataSheetSorting<TItem>({
232
225
  sorts: () => local.sorts,
233
226
  onSortsChange: () => local.onSortsChange,
234
227
  items: () => local.items,
@@ -240,7 +233,7 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
240
233
  }
241
234
 
242
235
  // #region Paging
243
- const { currentPage, setCurrentPage, pageCount, pagedItems } = useDataSheetPaging<T>({
236
+ const { currentPage, setCurrentPage, pageCount, pagedItems } = useDataSheetPaging<TItem>({
244
237
  page: () => local.page,
245
238
  onPageChange: () => local.onPageChange,
246
239
  pageSize: () => local.pageSize,
@@ -250,7 +243,7 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
250
243
  });
251
244
 
252
245
  const originalIndexMap = createMemo(() => {
253
- const map = new Map<T, number>();
246
+ const map = new Map<TItem, number>();
254
247
  (local.items ?? []).forEach((item, i) => map.set(item, i));
255
248
  return map;
256
249
  });
@@ -268,7 +261,7 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
268
261
  getFixedStyle,
269
262
  isLastFixed,
270
263
  registerColumnRef,
271
- } = useDataSheetFixedColumns<T>(
264
+ } = useDataSheetFixedColumns<TItem>(
272
265
  {
273
266
  get itemChildren() { return local.itemChildren; },
274
267
  get selectionMode() { return local.selectionMode; },
@@ -364,7 +357,7 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
364
357
 
365
358
  // #region Expanding
366
359
  const { expandedItems, flatItems, toggleExpand, isAllExpanded, toggleExpandAll } =
367
- useDataSheetExpansion<T>(
360
+ useDataSheetExpansion<TItem>(
368
361
  {
369
362
  get expandedItems() { return local.expandedItems; },
370
363
  get onExpandedItemsChange() { return local.onExpandedItemsChange; },
@@ -387,18 +380,18 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
387
380
  rangeSelect,
388
381
  lastClickedRow,
389
382
  setLastClickedRow,
390
- } = useDataSheetSelection<T>(
383
+ } = useDataSheetSelection<TItem>(
391
384
  {
392
385
  get selectionMode() { return local.selectionMode; },
393
386
  get selection() { return local.selection; },
394
387
  get onSelectionChange() { return local.onSelectionChange; },
395
- get itemSelectable() { return local.itemSelectable; },
388
+ get isItemSelectable() { return local.isItemSelectable; },
396
389
  },
397
390
  displayItems,
398
391
  );
399
392
 
400
393
  // #region AutoSelect
401
- function selectItem(item: T): void {
394
+ function selectItem(item: TItem): void {
402
395
  if (getItemSelectable(item) !== true) return;
403
396
  if (local.selectionMode === "single") {
404
397
  setSelection([item]);
@@ -410,7 +403,7 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
410
403
  }
411
404
 
412
405
  // #region Reorder
413
- const { dragState, onReorderPointerDown } = useDataSheetReorder<T>(
406
+ const { dragState, onReorderPointerDown } = useDataSheetReorder<TItem>(
414
407
  {
415
408
  get onItemsReorder() { return local.onItemsReorder; },
416
409
  get itemChildren() { return local.itemChildren; },
@@ -471,6 +464,205 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
471
464
  // suppress unused variable warning — dragState is used for side effects (DOM mutation in hook)
472
465
  void dragState;
473
466
 
467
+ // #region Sub-render functions
468
+
469
+ const { renderHeaderCell } = useDataSheetHeaderCell({
470
+ effectiveColumns,
471
+ headerRowTops,
472
+ getFixedStyle,
473
+ isLastFixed,
474
+ registerColumnRef,
475
+ toggleSort,
476
+ getSortDef,
477
+ sortIndex,
478
+ onResizerPointerdown,
479
+ onResizerDoubleClick,
480
+ thClass,
481
+ fixedClass,
482
+ sortableThClass,
483
+ fixedLastClass,
484
+ thContentClass,
485
+ resizerClass,
486
+ sortIconClass,
487
+ });
488
+
489
+ function renderExpandCell(flatItem: FlatItem<TItem>): JSX.Element {
490
+ return (
491
+ <td
492
+ class={twMerge(
493
+ featureTdClass,
494
+ fixedClass,
495
+ "z-[2]",
496
+ isExpandColLastFixed() ? fixedLastClass : undefined,
497
+ )}
498
+ style={{ left: "0" }}
499
+ >
500
+ <div class={featureCellBodyWrapperClass}>
501
+ <For each={Array.from({ length: flatItem.depth })}>
502
+ {() => (
503
+ <div class={expandIndentGuideClass}>
504
+ <div class={expandIndentGuideLineClass} />
505
+ </div>
506
+ )}
507
+ </For>
508
+ <Show when={flatItem.hasChildren}>
509
+ <button
510
+ type="button"
511
+ class={expandToggleClass}
512
+ onClick={() => toggleExpand(flatItem.item)}
513
+ >
514
+ <Icon
515
+ icon={IconChevronDown}
516
+ size="1em"
517
+ class={clsx(
518
+ "transition-transform",
519
+ expandedItems().includes(flatItem.item) ? "rotate-0" : "-rotate-90",
520
+ )}
521
+ />
522
+ </button>
523
+ </Show>
524
+ </div>
525
+ </td>
526
+ );
527
+ }
528
+
529
+ function renderSelectCell(flatItem: FlatItem<TItem>): JSX.Element {
530
+ const selectable = () => getItemSelectable(flatItem.item);
531
+ const isSelected = () => selection().includes(flatItem.item);
532
+ const rowIndex = () => flatItem.row;
533
+
534
+ return (
535
+ <td
536
+ class={twMerge(
537
+ featureTdClass,
538
+ fixedClass,
539
+ "z-[2]",
540
+ isSelectColLastFixed() ? fixedLastClass : undefined,
541
+ )}
542
+ style={{
543
+ left: selectColLeft(),
544
+ }}
545
+ >
546
+ <Show
547
+ when={local.selectionMode === "multiple"}
548
+ fallback={
549
+ /* single mode */
550
+ <Show when={selectable() === true}>
551
+ <div
552
+ class={featureCellBodyClickableClass}
553
+ onClick={() => toggleSelect(flatItem.item)}
554
+ >
555
+ <div
556
+ class={twMerge(
557
+ selectSingleClass,
558
+ isSelected()
559
+ ? selectSingleSelectedClass
560
+ : selectSingleUnselectedClass,
561
+ )}
562
+ >
563
+ <Icon icon={IconChevronRight} size="1em" />
564
+ </div>
565
+ </div>
566
+ </Show>
567
+ }
568
+ >
569
+ {/* multi mode */}
570
+ <div
571
+ class={featureCellBodyClickableClass}
572
+ onClick={(e) => {
573
+ if (e.shiftKey) {
574
+ rangeSelect(rowIndex());
575
+ } else {
576
+ toggleSelect(flatItem.item);
577
+ }
578
+ setLastClickedRow(rowIndex());
579
+ }}
580
+ title={
581
+ typeof selectable() === "string"
582
+ ? (selectable() as string)
583
+ : undefined
584
+ }
585
+ >
586
+ <Checkbox
587
+ value={isSelected()}
588
+ disabled={selectable() !== true}
589
+ inset
590
+ class={twMerge(
591
+ "pointer-events-none",
592
+ lastClickedRow() === rowIndex()
593
+ ? "[&>div]:ring-2 [&>div]:ring-primary-200 dark:[&>div]:ring-primary-700"
594
+ : undefined,
595
+ )}
596
+ />
597
+ </div>
598
+ </Show>
599
+ </td>
600
+ );
601
+ }
602
+
603
+ function renderReorderCell(flatItem: FlatItem<TItem>): JSX.Element {
604
+ return (
605
+ <td
606
+ class={twMerge(
607
+ featureTdClass,
608
+ fixedClass,
609
+ "z-[2]",
610
+ isReorderColLastFixed() ? fixedLastClass : undefined,
611
+ )}
612
+ style={{
613
+ left: reorderColLeft(),
614
+ }}
615
+ >
616
+ <div
617
+ class={reorderCellWrapperClass}
618
+ onPointerDown={(e) => onReorderPointerDown(e, flatItem.item)}
619
+ >
620
+ <div class={reorderHandleClass}>
621
+ <Icon icon={IconGripVertical} size="1em" />
622
+ </div>
623
+ </div>
624
+ </td>
625
+ );
626
+ }
627
+
628
+ function renderSummaryRow(): JSX.Element {
629
+ return (
630
+ <Show when={hasSummary()}>
631
+ <tr>
632
+ {/* Expand feature column summary cell already covered by rowspan, skip */}
633
+ <For each={effectiveColumns()}>
634
+ {(col, colIndex) => {
635
+ const summaryStyle = (): string | undefined => {
636
+ const parts: string[] = [];
637
+ parts.push(`top: ${summaryRowTop()}px`);
638
+ const left = getFixedStyle(colIndex());
639
+ if (left != null) parts.push(left);
640
+ return parts.join("; ");
641
+ };
642
+
643
+ return (
644
+ <th
645
+ class={twMerge(
646
+ thClass,
647
+ summaryThClass,
648
+ fixedClass,
649
+ col.fixed ? "z-[5]" : "z-[3]",
650
+ isLastFixed(colIndex()) ? fixedLastClass : undefined,
651
+ )}
652
+ style={summaryStyle()}
653
+ >
654
+ <div class={thContentClass}>{col.summary?.()}</div>
655
+ </th>
656
+ );
657
+ }}
658
+ </For>
659
+ </tr>
660
+ </Show>
661
+ );
662
+ }
663
+
664
+ // #endregion
665
+
474
666
  return (
475
667
  <ColumnsProvider>
476
668
  {local.children}
@@ -627,186 +819,14 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
627
819
  <For each={row}>
628
820
  {(cell, cellColIndex) => (
629
821
  <Show when={cell}>
630
- {(c) => {
631
- const isSortable = () =>
632
- c().isLastRow &&
633
- c().colIndex != null &&
634
- effectiveColumns()[c().colIndex!].sortable;
635
- const colKey = () =>
636
- c().colIndex != null
637
- ? effectiveColumns()[c().colIndex!].key
638
- : undefined;
639
-
640
- // Group header fixed status: all columns in colspan range are fixed
641
- const isGroupFixed = (): boolean => {
642
- if (c().isLastRow) return false;
643
- const start = cellColIndex();
644
- const span = c().colspan;
645
- const cols = effectiveColumns();
646
- for (let i = start; i < start + span && i < cols.length; i++) {
647
- if (!cols[i].fixed) return false;
648
- }
649
- return true;
650
- };
651
-
652
- // Cell fixed column status (based on colIndex if last row, group-based otherwise)
653
- const isCellFixed = () =>
654
- (c().isLastRow &&
655
- c().colIndex != null &&
656
- effectiveColumns()[c().colIndex!].fixed) ||
657
- isGroupFixed();
658
-
659
- // Cell's last fixed status
660
- const isCellLastFixed = () => {
661
- if (c().isLastRow && c().colIndex != null)
662
- return isLastFixed(c().colIndex!);
663
- if (isGroupFixed()) {
664
- const lastCol = cellColIndex() + c().colspan - 1;
665
- return isLastFixed(lastCol);
666
- }
667
- return false;
668
- };
669
-
670
- // Fixed cell left + top inline style
671
- const cellStyle = (): string | undefined => {
672
- const parts: string[] = [];
673
- // top: apply to all th (fix header to top)
674
- const top = headerRowTops()[rowIndex()];
675
- parts.push(`top: ${top}px`);
676
- // left: apply only to fixed columns
677
- if (c().isLastRow && c().colIndex != null) {
678
- const left = getFixedStyle(c().colIndex!);
679
- if (left != null) parts.push(left);
680
- // max-width: apply if explicit width exists (allow column to shrink below content)
681
- const col = effectiveColumns()[c().colIndex!];
682
- if (col.width != null) parts.push(`max-width: ${col.width.replace(/;/g, "")}`);
683
- } else if (isGroupFixed()) {
684
- const left = getFixedStyle(cellColIndex());
685
- if (left != null) parts.push(left);
686
- }
687
- return parts.length > 0 ? parts.join("; ") : undefined;
688
- };
689
-
690
- return (
691
- <th
692
- class={twMerge(
693
- thClass,
694
- fixedClass,
695
- isSortable() ? sortableThClass : undefined,
696
- isCellFixed() ? "z-[5]" : "z-[3]",
697
- isCellLastFixed() ? fixedLastClass : undefined,
698
- )}
699
- colspan={c().colspan > 1 ? c().colspan : undefined}
700
- rowspan={c().rowspan > 1 ? c().rowspan : undefined}
701
- style={cellStyle()}
702
- title={
703
- c().isLastRow && c().colIndex != null
704
- ? (effectiveColumns()[c().colIndex!].tooltip ?? c().text)
705
- : c().text
706
- }
707
- ref={(el: HTMLElement) => {
708
- if (
709
- c().isLastRow &&
710
- c().colIndex != null &&
711
- effectiveColumns()[c().colIndex!].fixed
712
- ) {
713
- registerColumnRef(c().colIndex!, el);
714
- }
715
- }}
716
- onClick={(e) => {
717
- if (!isSortable()) return;
718
- const key = colKey();
719
- if (key == null) return;
720
- toggleSort(key, e.shiftKey || e.ctrlKey);
721
- }}
722
- >
723
- <div class={clsx("flex items-center gap-2", thContentClass)}>
724
- <div class="flex-1">{c().headerContent?.() ?? c().text}</div>
725
- <Show when={isSortable() && colKey()}>
726
- {(key) => {
727
- const sortDef = () => getSortDef(key());
728
- const sortIdx = () => sortIndex(key());
729
- return (
730
- <div class={sortIconClass}>
731
- <Show when={sortDef()?.desc === false}>
732
- <Icon icon={IconSortAscending} />
733
- </Show>
734
- <Show when={sortDef()?.desc === true}>
735
- <Icon icon={IconSortDescending} />
736
- </Show>
737
- <Show when={sortDef() == null}>
738
- <Icon
739
- icon={IconArrowsSort}
740
- class="opacity-30"
741
- />
742
- </Show>
743
- <Show when={sortIdx()}>
744
- {(idx) => <sub>{idx()}</sub>}
745
- </Show>
746
- </div>
747
- );
748
- }}
749
- </Show>
750
- </div>
751
- <Show
752
- when={
753
- c().isLastRow &&
754
- c().colIndex != null &&
755
- effectiveColumns()[c().colIndex!].resizable
756
- }
757
- >
758
- <div
759
- class={resizerClass}
760
- onClick={(e) => e.stopPropagation()}
761
- onPointerDown={(e) =>
762
- onResizerPointerdown(e, effectiveColumns()[c().colIndex!].key)
763
- }
764
- onDblClick={(e) => {
765
- e.stopPropagation();
766
- onResizerDoubleClick(effectiveColumns()[c().colIndex!].key);
767
- }}
768
- />
769
- </Show>
770
- </th>
771
- );
772
- }}
822
+ {(c) => renderHeaderCell(c(), cellColIndex(), rowIndex())}
773
823
  </Show>
774
824
  )}
775
825
  </For>
776
826
  </tr>
777
827
  )}
778
828
  </For>
779
- <Show when={hasSummary()}>
780
- <tr>
781
- {/* Expand feature column summary cell already covered by rowspan, skip */}
782
- <For each={effectiveColumns()}>
783
- {(col, colIndex) => {
784
- const summaryStyle = (): string | undefined => {
785
- const parts: string[] = [];
786
- parts.push(`top: ${summaryRowTop()}px`);
787
- const left = getFixedStyle(colIndex());
788
- if (left != null) parts.push(left);
789
- return parts.join("; ");
790
- };
791
-
792
- return (
793
- <th
794
- class={twMerge(
795
- thClass,
796
- summaryThClass,
797
- fixedClass,
798
- col.fixed ? "z-[5]" : "z-[3]",
799
- isLastFixed(colIndex()) ? fixedLastClass : undefined,
800
- )}
801
- style={summaryStyle()}
802
- >
803
- <div class={thContentClass}>{col.summary?.()}</div>
804
- </th>
805
- );
806
- }}
807
- </For>
808
- </tr>
809
- </Show>
829
+ {renderSummaryRow()}
810
830
  </thead>
811
831
  <tbody>
812
832
  <For each={displayItems()}>
@@ -814,148 +834,20 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
814
834
  <tr
815
835
  data-selected={selection().includes(flat.item) ? "" : undefined}
816
836
  onClick={() => {
817
- if (local.autoSelect === "click") {
837
+ if (local.autoSelect) {
818
838
  selectItem(flat.item);
819
839
  }
820
840
  }}
821
- class={clsx(trRowClass, local.autoSelect === "click" && "cursor-pointer")}
841
+ class={clsx(trRowClass, local.autoSelect && "cursor-pointer")}
822
842
  >
823
- {/* Expand feature column body cell */}
824
843
  <Show when={hasExpandFeature()}>
825
- <td
826
- class={twMerge(
827
- featureTdClass,
828
- fixedClass,
829
- "z-[2]",
830
- isExpandColLastFixed() ? fixedLastClass : undefined,
831
- )}
832
- style={{ left: "0" }}
833
- >
834
- <div class={featureCellBodyWrapperClass}>
835
- <For each={Array.from({ length: flat.depth })}>
836
- {() => (
837
- <div class={expandIndentGuideClass}>
838
- <div class={expandIndentGuideLineClass} />
839
- </div>
840
- )}
841
- </For>
842
- <Show when={flat.hasChildren}>
843
- <button
844
- type="button"
845
- class={expandToggleClass}
846
- onClick={() => toggleExpand(flat.item)}
847
- >
848
- <Icon
849
- icon={IconChevronDown}
850
- size="1em"
851
- class={clsx(
852
- "transition-transform",
853
- expandedItems().includes(flat.item) ? "rotate-0" : "-rotate-90",
854
- )}
855
- />
856
- </button>
857
- </Show>
858
- </div>
859
- </td>
844
+ {renderExpandCell(flat)}
860
845
  </Show>
861
- {/* Select feature column body cell */}
862
846
  <Show when={hasSelectFeature()}>
863
- {(() => {
864
- const selectable = () => getItemSelectable(flat.item);
865
- const isSelected = () => selection().includes(flat.item);
866
- const rowIndex = () => flat.row;
867
-
868
- return (
869
- <td
870
- class={twMerge(
871
- featureTdClass,
872
- fixedClass,
873
- "z-[2]",
874
- isSelectColLastFixed() ? fixedLastClass : undefined,
875
- )}
876
- style={{
877
- left: selectColLeft(),
878
- }}
879
- >
880
- <Show
881
- when={local.selectionMode === "multiple"}
882
- fallback={
883
- /* single mode */
884
- <Show when={selectable() === true}>
885
- <div
886
- class={featureCellBodyClickableClass}
887
- onClick={() => toggleSelect(flat.item)}
888
- >
889
- <div
890
- class={twMerge(
891
- selectSingleClass,
892
- isSelected()
893
- ? selectSingleSelectedClass
894
- : selectSingleUnselectedClass,
895
- )}
896
- >
897
- <Icon icon={IconChevronRight} size="1em" />
898
- </div>
899
- </div>
900
- </Show>
901
- }
902
- >
903
- {/* multi mode */}
904
- <div
905
- class={featureCellBodyClickableClass}
906
- onClick={(e) => {
907
- if (e.shiftKey) {
908
- rangeSelect(rowIndex());
909
- } else {
910
- toggleSelect(flat.item);
911
- }
912
- setLastClickedRow(rowIndex());
913
- }}
914
- title={
915
- typeof selectable() === "string"
916
- ? (selectable() as string)
917
- : undefined
918
- }
919
- >
920
- <Checkbox
921
- value={isSelected()}
922
- disabled={selectable() !== true}
923
- inset
924
- class={twMerge(
925
- "pointer-events-none",
926
- lastClickedRow() === rowIndex()
927
- ? "[&>div]:ring-2 [&>div]:ring-primary-200 dark:[&>div]:ring-primary-700"
928
- : undefined,
929
- )}
930
- />
931
- </div>
932
- </Show>
933
- </td>
934
- );
935
- })()}
847
+ {renderSelectCell(flat)}
936
848
  </Show>
937
- {/* Drag reorder feature column body cell */}
938
849
  <Show when={hasReorderFeature()}>
939
- <td
940
- class={twMerge(
941
- featureTdClass,
942
- fixedClass,
943
- "z-[2]",
944
- isReorderColLastFixed() ? fixedLastClass : undefined,
945
- )}
946
- style={{
947
- left: reorderColLeft(),
948
- }}
949
- >
950
- <div
951
- class={reorderCellWrapperClass}
952
- onPointerDown={(e) => onReorderPointerDown(e, flat.item)}
953
- >
954
- <div class={reorderHandleClass}>
955
- <Icon icon={IconGripVertical} size="1em" />
956
- </div>
957
- </div>
958
- </td>
850
+ {renderReorderCell(flat)}
959
851
  </Show>
960
852
  <For each={effectiveColumns()}>
961
853
  {(col, colIndex) => (
@@ -1002,7 +894,5 @@ const DataSheetInner = <T,>(props: DataSheetProps<T>) => {
1002
894
  //#region Export
1003
895
  export const DataSheet = Object.assign(DataSheetInner, {
1004
896
  Column: DataSheetColumn,
1005
- ConfigDialog: DataSheetConfigDialog,
1006
- }) as unknown as DataSheetComponent;
1007
- export { DataSheetConfigDialog };
897
+ });
1008
898
  //#endregion