@simplysm/solid 13.0.75 → 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 (782) hide show
  1. package/README.md +13 -14
  2. package/dist/components/data/Pagination.d.ts +2 -2
  3. package/dist/components/data/Pagination.d.ts.map +1 -1
  4. package/dist/components/data/Pagination.js +7 -5
  5. package/dist/components/data/Pagination.js.map +2 -2
  6. package/dist/components/data/Table.d.ts +5 -1
  7. package/dist/components/data/Table.d.ts.map +1 -1
  8. package/dist/components/data/Table.js +64 -22
  9. package/dist/components/data/Table.js.map +2 -2
  10. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  11. package/dist/components/data/calendar/Calendar.js +10 -26
  12. package/dist/components/data/calendar/Calendar.js.map +2 -2
  13. package/dist/components/data/kanban/{Kanban.css → Kanban.animate.css} +0 -2
  14. package/dist/components/data/kanban/Kanban.d.ts +50 -16
  15. package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
  16. package/dist/components/data/kanban/Kanban.js +144 -119
  17. package/dist/components/data/kanban/Kanban.js.map +2 -2
  18. package/dist/components/data/list/List.d.ts +7 -28
  19. package/dist/components/data/list/List.d.ts.map +1 -1
  20. package/dist/components/data/list/List.js +5 -7
  21. package/dist/components/data/list/List.js.map +2 -2
  22. package/dist/components/data/list/ListItem.d.ts +7 -34
  23. package/dist/components/data/list/ListItem.d.ts.map +1 -1
  24. package/dist/components/data/list/ListItem.js +15 -20
  25. package/dist/components/data/list/ListItem.js.map +2 -2
  26. package/dist/components/data/list/ListItem.styles.d.ts +1 -1
  27. package/dist/components/data/list/ListItem.styles.d.ts.map +1 -1
  28. package/dist/components/data/list/ListItem.styles.js +8 -8
  29. package/dist/components/data/list/ListItem.styles.js.map +1 -1
  30. package/dist/components/data/sheet/DataSheet.d.ts +3 -7
  31. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  32. package/dist/components/data/sheet/DataSheet.js +557 -843
  33. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  34. package/dist/components/data/sheet/DataSheet.styles.d.ts +2 -1
  35. package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
  36. package/dist/components/data/sheet/DataSheet.styles.js +32 -10
  37. package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
  38. package/dist/components/data/sheet/{types.d.ts → DataSheet.types.d.ts} +14 -9
  39. package/dist/components/data/sheet/DataSheet.types.d.ts.map +1 -0
  40. package/dist/components/data/sheet/DataSheet.types.js +1 -0
  41. package/dist/components/data/sheet/{sheetUtils.d.ts → DataSheet.utils.d.ts} +4 -4
  42. package/dist/components/data/sheet/DataSheet.utils.d.ts.map +1 -0
  43. package/dist/components/data/sheet/{sheetUtils.js → DataSheet.utils.js} +8 -8
  44. package/dist/components/data/sheet/DataSheet.utils.js.map +6 -0
  45. package/dist/components/data/sheet/DataSheetColumn.d.ts +4 -3
  46. package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -1
  47. package/dist/components/data/sheet/DataSheetColumn.js +4 -22
  48. package/dist/components/data/sheet/DataSheetColumn.js.map +2 -2
  49. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts +2 -1
  50. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
  51. package/dist/components/data/sheet/DataSheetConfigDialog.js +19 -18
  52. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -2
  53. package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts +17 -0
  54. package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts.map +1 -0
  55. package/dist/components/data/sheet/hooks/useDataSheetExpansion.js +61 -0
  56. package/dist/components/data/sheet/hooks/useDataSheetExpansion.js.map +6 -0
  57. package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts +29 -0
  58. package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts.map +1 -0
  59. package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.js +101 -0
  60. package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.js.map +6 -0
  61. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts +27 -0
  62. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts.map +1 -0
  63. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.js +173 -0
  64. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.js.map +6 -0
  65. package/dist/components/data/sheet/hooks/useDataSheetPaging.d.ts +17 -0
  66. package/dist/components/data/sheet/hooks/useDataSheetPaging.d.ts.map +1 -0
  67. package/dist/components/data/sheet/hooks/useDataSheetPaging.js +32 -0
  68. package/dist/components/data/sheet/hooks/useDataSheetPaging.js.map +6 -0
  69. package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts +20 -0
  70. package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts.map +1 -0
  71. package/dist/components/data/sheet/hooks/useDataSheetReorder.js +112 -0
  72. package/dist/components/data/sheet/hooks/useDataSheetReorder.js.map +6 -0
  73. package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts +22 -0
  74. package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts.map +1 -0
  75. package/dist/components/data/sheet/hooks/useDataSheetSelection.js +63 -0
  76. package/dist/components/data/sheet/hooks/useDataSheetSelection.js.map +6 -0
  77. package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts +17 -0
  78. package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts.map +1 -0
  79. package/dist/components/data/sheet/hooks/useDataSheetSorting.js +45 -0
  80. package/dist/components/data/sheet/hooks/useDataSheetSorting.js.map +6 -0
  81. package/dist/components/disclosure/Collapse.d.ts.map +1 -1
  82. package/dist/components/disclosure/Collapse.js +1 -3
  83. package/dist/components/disclosure/Collapse.js.map +2 -2
  84. package/dist/components/disclosure/Dialog.d.ts +79 -25
  85. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  86. package/dist/components/disclosure/Dialog.js +251 -113
  87. package/dist/components/disclosure/Dialog.js.map +2 -2
  88. package/dist/components/disclosure/Dropdown.d.ts +8 -35
  89. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  90. package/dist/components/disclosure/Dropdown.js +60 -61
  91. package/dist/components/disclosure/Dropdown.js.map +2 -2
  92. package/dist/components/disclosure/Tabs.d.ts +4 -6
  93. package/dist/components/disclosure/Tabs.d.ts.map +1 -1
  94. package/dist/components/disclosure/Tabs.js +16 -17
  95. package/dist/components/disclosure/Tabs.js.map +2 -2
  96. package/dist/components/display/Alert.d.ts +1 -1
  97. package/dist/components/display/Alert.d.ts.map +1 -1
  98. package/dist/components/display/Alert.js +2 -4
  99. package/dist/components/display/Alert.js.map +2 -2
  100. package/dist/components/display/Barcode.d.ts +1 -1
  101. package/dist/components/display/Barcode.d.ts.map +1 -1
  102. package/dist/components/display/Barcode.js +3 -4
  103. package/dist/components/display/Barcode.js.map +2 -2
  104. package/dist/components/display/Barcode.types.d.ts +2 -0
  105. package/dist/components/display/Barcode.types.d.ts.map +1 -0
  106. package/dist/components/display/Barcode.types.js +1 -0
  107. package/dist/components/display/Card.animate.css +11 -0
  108. package/dist/components/display/Card.d.ts +1 -0
  109. package/dist/components/display/Card.d.ts.map +1 -1
  110. package/dist/components/display/Card.js +3 -2
  111. package/dist/components/display/Card.js.map +2 -2
  112. package/dist/components/display/Echarts.d.ts +2 -2
  113. package/dist/components/display/Echarts.d.ts.map +1 -1
  114. package/dist/components/display/Echarts.js +8 -11
  115. package/dist/components/display/Echarts.js.map +2 -2
  116. package/dist/components/display/Link.d.ts +1 -1
  117. package/dist/components/display/Link.d.ts.map +1 -1
  118. package/dist/components/display/Link.js +3 -4
  119. package/dist/components/display/Link.js.map +2 -2
  120. package/dist/components/display/Tag.d.ts +1 -1
  121. package/dist/components/display/Tag.d.ts.map +1 -1
  122. package/dist/components/display/Tag.js +2 -4
  123. package/dist/components/display/Tag.js.map +2 -2
  124. package/dist/components/features/address/AddressSearch.d.ts +3 -1
  125. package/dist/components/features/address/AddressSearch.d.ts.map +1 -1
  126. package/dist/components/features/address/AddressSearch.js +7 -5
  127. package/dist/components/features/address/AddressSearch.js.map +2 -2
  128. package/dist/components/features/crud-detail/CrudDetail.d.ts +12 -13
  129. package/dist/components/features/crud-detail/CrudDetail.d.ts.map +1 -1
  130. package/dist/components/features/crud-detail/CrudDetail.js +218 -206
  131. package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
  132. package/dist/components/features/crud-detail/{types.d.ts → CrudDetail.types.d.ts} +3 -13
  133. package/dist/components/features/crud-detail/CrudDetail.types.d.ts.map +1 -0
  134. package/dist/components/features/crud-detail/CrudDetail.types.js +1 -0
  135. package/dist/components/features/crud-detail/CrudDetailAfter.d.ts +5 -4
  136. package/dist/components/features/crud-detail/CrudDetailAfter.d.ts.map +1 -1
  137. package/dist/components/features/crud-detail/CrudDetailAfter.js +3 -10
  138. package/dist/components/features/crud-detail/CrudDetailAfter.js.map +2 -2
  139. package/dist/components/features/crud-detail/CrudDetailBefore.d.ts +5 -4
  140. package/dist/components/features/crud-detail/CrudDetailBefore.d.ts.map +1 -1
  141. package/dist/components/features/crud-detail/CrudDetailBefore.js +3 -10
  142. package/dist/components/features/crud-detail/CrudDetailBefore.js.map +2 -2
  143. package/dist/components/features/crud-detail/CrudDetailTools.d.ts +5 -4
  144. package/dist/components/features/crud-detail/CrudDetailTools.d.ts.map +1 -1
  145. package/dist/components/features/crud-detail/CrudDetailTools.js +3 -10
  146. package/dist/components/features/crud-detail/CrudDetailTools.js.map +2 -2
  147. package/dist/components/features/crud-sheet/CrudSheet.d.ts +6 -9
  148. package/dist/components/features/crud-sheet/CrudSheet.d.ts.map +1 -1
  149. package/dist/components/features/crud-sheet/CrudSheet.js +147 -141
  150. package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
  151. package/dist/components/features/crud-sheet/{types.d.ts → CrudSheet.types.d.ts} +14 -44
  152. package/dist/components/features/crud-sheet/CrudSheet.types.d.ts.map +1 -0
  153. package/dist/components/features/crud-sheet/CrudSheet.types.js +1 -0
  154. package/dist/components/features/crud-sheet/CrudSheetColumn.d.ts +4 -3
  155. package/dist/components/features/crud-sheet/CrudSheetColumn.d.ts.map +1 -1
  156. package/dist/components/features/crud-sheet/CrudSheetColumn.js +4 -23
  157. package/dist/components/features/crud-sheet/CrudSheetColumn.js.map +2 -2
  158. package/dist/components/features/crud-sheet/CrudSheetFilter.d.ts +7 -5
  159. package/dist/components/features/crud-sheet/CrudSheetFilter.d.ts.map +1 -1
  160. package/dist/components/features/crud-sheet/CrudSheetFilter.js +4 -8
  161. package/dist/components/features/crud-sheet/CrudSheetFilter.js.map +2 -2
  162. package/dist/components/features/crud-sheet/CrudSheetHeader.d.ts +5 -4
  163. package/dist/components/features/crud-sheet/CrudSheetHeader.d.ts.map +1 -1
  164. package/dist/components/features/crud-sheet/CrudSheetHeader.js +3 -10
  165. package/dist/components/features/crud-sheet/CrudSheetHeader.js.map +2 -2
  166. package/dist/components/features/crud-sheet/CrudSheetTools.d.ts +7 -5
  167. package/dist/components/features/crud-sheet/CrudSheetTools.d.ts.map +1 -1
  168. package/dist/components/features/crud-sheet/CrudSheetTools.js +4 -8
  169. package/dist/components/features/crud-sheet/CrudSheetTools.js.map +2 -2
  170. package/dist/components/features/data-select-button/DataSelectButton.d.ts +25 -28
  171. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
  172. package/dist/components/features/data-select-button/DataSelectButton.js +27 -38
  173. package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
  174. package/dist/components/features/permission-table/PermissionTable.d.ts.map +1 -1
  175. package/dist/components/features/permission-table/PermissionTable.js +9 -13
  176. package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
  177. package/dist/components/features/shared-data/SharedDataSelect.d.ts +20 -19
  178. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
  179. package/dist/components/features/shared-data/SharedDataSelect.js +62 -84
  180. package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
  181. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +12 -9
  182. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
  183. package/dist/components/features/shared-data/SharedDataSelectButton.js.map +1 -1
  184. package/dist/components/features/shared-data/SharedDataSelectList.d.ts +12 -8
  185. package/dist/components/features/shared-data/SharedDataSelectList.d.ts.map +1 -1
  186. package/dist/components/features/shared-data/SharedDataSelectList.js +136 -116
  187. package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
  188. package/dist/components/feedback/Progress.d.ts +3 -2
  189. package/dist/components/feedback/Progress.d.ts.map +1 -1
  190. package/dist/components/feedback/Progress.js +9 -7
  191. package/dist/components/feedback/Progress.js.map +2 -2
  192. package/dist/components/feedback/busy/BusyContainer.d.ts +2 -2
  193. package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -1
  194. package/dist/components/feedback/busy/BusyContainer.js +35 -32
  195. package/dist/components/feedback/busy/BusyContainer.js.map +2 -2
  196. package/dist/components/feedback/busy/BusyProvider.d.ts +26 -2
  197. package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -1
  198. package/dist/components/feedback/busy/BusyProvider.js +13 -7
  199. package/dist/components/feedback/busy/BusyProvider.js.map +2 -2
  200. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
  201. package/dist/components/feedback/notification/NotificationBanner.js +13 -19
  202. package/dist/components/feedback/notification/NotificationBanner.js.map +2 -2
  203. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
  204. package/dist/components/feedback/notification/NotificationBell.js +69 -71
  205. package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
  206. package/dist/components/feedback/notification/NotificationProvider.d.ts +68 -1
  207. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  208. package/dist/components/feedback/notification/NotificationProvider.js +22 -5
  209. package/dist/components/feedback/notification/NotificationProvider.js.map +2 -2
  210. package/dist/components/feedback/print/Print.d.ts +4 -6
  211. package/dist/components/feedback/print/Print.d.ts.map +1 -1
  212. package/dist/components/feedback/print/Print.js +3 -2
  213. package/dist/components/feedback/print/Print.js.map +2 -2
  214. package/dist/components/feedback/print/PrintProvider.d.ts +14 -1
  215. package/dist/components/feedback/print/PrintProvider.d.ts.map +1 -1
  216. package/dist/components/feedback/print/PrintProvider.js +16 -5
  217. package/dist/components/feedback/print/PrintProvider.js.map +2 -2
  218. package/dist/components/form-control/Button.d.ts +2 -1
  219. package/dist/components/form-control/Button.d.ts.map +1 -1
  220. package/dist/components/form-control/Button.js +9 -8
  221. package/dist/components/form-control/Button.js.map +2 -2
  222. package/dist/components/form-control/DropdownTrigger.styles.d.ts +1 -1
  223. package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -1
  224. package/dist/components/form-control/DropdownTrigger.styles.js +16 -16
  225. package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
  226. package/dist/components/form-control/Invalid.d.ts +1 -1
  227. package/dist/components/form-control/Invalid.d.ts.map +1 -1
  228. package/dist/components/form-control/Invalid.js +27 -26
  229. package/dist/components/form-control/Invalid.js.map +2 -2
  230. package/dist/components/form-control/ThemeToggle.d.ts +2 -1
  231. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  232. package/dist/components/form-control/ThemeToggle.js +71 -74
  233. package/dist/components/form-control/ThemeToggle.js.map +2 -2
  234. package/dist/components/form-control/checkbox/Checkbox.d.ts +2 -2
  235. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  236. package/dist/components/form-control/checkbox/Checkbox.js +14 -95
  237. package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
  238. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts +2 -2
  239. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
  240. package/dist/components/form-control/checkbox/Checkbox.styles.js +20 -25
  241. package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
  242. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts +10 -10
  243. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts.map +1 -1
  244. package/dist/components/form-control/checkbox/CheckboxGroup.js +84 -9
  245. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
  246. package/dist/components/form-control/checkbox/Radio.d.ts +2 -2
  247. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  248. package/dist/components/form-control/checkbox/Radio.js +12 -95
  249. package/dist/components/form-control/checkbox/Radio.js.map +2 -2
  250. package/dist/components/form-control/checkbox/RadioGroup.d.ts +10 -10
  251. package/dist/components/form-control/checkbox/RadioGroup.d.ts.map +1 -1
  252. package/dist/components/form-control/checkbox/RadioGroup.js +81 -9
  253. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
  254. package/dist/components/form-control/checkbox/SelectableBase.d.ts +26 -0
  255. package/dist/components/form-control/checkbox/SelectableBase.d.ts.map +1 -0
  256. package/dist/components/form-control/checkbox/SelectableBase.js +100 -0
  257. package/dist/components/form-control/checkbox/SelectableBase.js.map +6 -0
  258. package/dist/components/form-control/checkbox/SelectionGroupBase.d.ts +17 -0
  259. package/dist/components/form-control/checkbox/SelectionGroupBase.d.ts.map +1 -0
  260. package/dist/components/form-control/checkbox/SelectionGroupBase.js +53 -0
  261. package/dist/components/form-control/checkbox/SelectionGroupBase.js.map +6 -0
  262. package/dist/components/form-control/color-picker/ColorPicker.d.ts +3 -3
  263. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  264. package/dist/components/form-control/color-picker/ColorPicker.js +6 -18
  265. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
  266. package/dist/components/form-control/combobox/Combobox.d.ts +28 -49
  267. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  268. package/dist/components/form-control/combobox/Combobox.js +116 -63
  269. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  270. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts.map +1 -1
  271. package/dist/components/form-control/date-range-picker/DateRangePicker.js +16 -9
  272. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  273. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
  274. package/dist/components/form-control/editor/EditorToolbar.js +250 -239
  275. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  276. package/dist/components/form-control/editor/RichTextEditor.d.ts +1 -1
  277. package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -1
  278. package/dist/components/form-control/editor/RichTextEditor.js +10 -10
  279. package/dist/components/form-control/editor/RichTextEditor.js.map +2 -2
  280. package/{src/components/form-control/editor/editor.css → dist/components/form-control/editor/RichTextEditor.tiptap.css} +0 -1
  281. package/dist/components/form-control/field/DatePicker.d.ts +3 -3
  282. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  283. package/dist/components/form-control/field/DatePicker.js +50 -131
  284. package/dist/components/form-control/field/DatePicker.js.map +2 -2
  285. package/dist/components/form-control/field/DateTimePicker.d.ts +3 -3
  286. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  287. package/dist/components/form-control/field/DateTimePicker.js +50 -131
  288. package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
  289. package/dist/components/form-control/field/Field.styles.d.ts +3 -3
  290. package/dist/components/form-control/field/Field.styles.d.ts.map +1 -1
  291. package/dist/components/form-control/field/Field.styles.js +46 -40
  292. package/dist/components/form-control/field/Field.styles.js.map +1 -1
  293. package/dist/components/form-control/field/FieldPlaceholder.js +4 -3
  294. package/dist/components/form-control/field/FieldPlaceholder.js.map +2 -2
  295. package/dist/components/form-control/field/FieldShell.d.ts +37 -0
  296. package/dist/components/form-control/field/FieldShell.d.ts.map +1 -0
  297. package/dist/components/form-control/field/FieldShell.js +124 -0
  298. package/dist/components/form-control/field/FieldShell.js.map +6 -0
  299. package/dist/components/form-control/field/NumberInput.d.ts +13 -32
  300. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  301. package/dist/components/form-control/field/NumberInput.js +92 -196
  302. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  303. package/dist/components/form-control/field/TextInput.d.ts +14 -29
  304. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  305. package/dist/components/form-control/field/TextInput.js +87 -197
  306. package/dist/components/form-control/field/TextInput.js.map +2 -2
  307. package/dist/components/form-control/field/Textarea.d.ts +3 -3
  308. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  309. package/dist/components/form-control/field/Textarea.js +81 -156
  310. package/dist/components/form-control/field/Textarea.js.map +2 -2
  311. package/dist/components/form-control/field/TimePicker.d.ts +3 -3
  312. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  313. package/dist/components/form-control/field/TimePicker.js +46 -123
  314. package/dist/components/form-control/field/TimePicker.js.map +2 -2
  315. package/dist/components/form-control/numpad/Numpad.d.ts +1 -1
  316. package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
  317. package/dist/components/form-control/numpad/Numpad.js +5 -5
  318. package/dist/components/form-control/numpad/Numpad.js.map +2 -2
  319. package/dist/components/form-control/select/Select.d.ts +48 -51
  320. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  321. package/dist/components/form-control/select/Select.js +220 -117
  322. package/dist/components/form-control/select/Select.js.map +2 -2
  323. package/dist/components/form-control/state-preset/StatePreset.d.ts +2 -2
  324. package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
  325. package/dist/components/form-control/state-preset/StatePreset.js +68 -57
  326. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
  327. package/dist/components/layout/FormGroup.d.ts +3 -6
  328. package/dist/components/layout/FormGroup.d.ts.map +1 -1
  329. package/dist/components/layout/FormGroup.js +5 -7
  330. package/dist/components/layout/FormGroup.js.map +2 -2
  331. package/dist/components/layout/FormTable.d.ts +7 -1
  332. package/dist/components/layout/FormTable.d.ts.map +1 -1
  333. package/dist/components/layout/FormTable.js +52 -18
  334. package/dist/components/layout/FormTable.js.map +2 -2
  335. package/dist/components/layout/sidebar/Sidebar.d.ts +60 -29
  336. package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -1
  337. package/dist/components/layout/sidebar/Sidebar.js +341 -21
  338. package/dist/components/layout/sidebar/Sidebar.js.map +2 -2
  339. package/dist/components/layout/topbar/Topbar.d.ts +44 -33
  340. package/dist/components/layout/topbar/Topbar.d.ts.map +1 -1
  341. package/dist/components/layout/topbar/Topbar.js +426 -39
  342. package/dist/components/layout/topbar/Topbar.js.map +2 -2
  343. package/dist/helpers/createAppStructure.d.ts.map +1 -1
  344. package/dist/helpers/createAppStructure.js +4 -5
  345. package/dist/helpers/createAppStructure.js.map +1 -1
  346. package/dist/helpers/createSlot.d.ts +3 -0
  347. package/dist/helpers/createSlot.d.ts.map +1 -0
  348. package/dist/helpers/createSlot.js +40 -0
  349. package/dist/helpers/createSlot.js.map +6 -0
  350. package/dist/helpers/createSlots.d.ts +7 -0
  351. package/dist/helpers/createSlots.d.ts.map +1 -0
  352. package/dist/helpers/createSlots.js +34 -0
  353. package/dist/helpers/createSlots.js.map +6 -0
  354. package/dist/hooks/createControllableSignal.d.ts +4 -12
  355. package/dist/hooks/createControllableSignal.d.ts.map +1 -1
  356. package/dist/hooks/createControllableSignal.js +4 -3
  357. package/dist/hooks/createControllableSignal.js.map +1 -1
  358. package/dist/hooks/createControllableStore.d.ts.map +1 -1
  359. package/dist/hooks/createControllableStore.js +5 -6
  360. package/dist/hooks/createControllableStore.js.map +1 -1
  361. package/dist/hooks/useLogger.d.ts +1 -1
  362. package/dist/hooks/useLogger.d.ts.map +1 -1
  363. package/dist/hooks/useLogger.js +1 -1
  364. package/dist/hooks/useSyncConfig.js +1 -1
  365. package/dist/index.d.ts +17 -23
  366. package/dist/index.d.ts.map +1 -1
  367. package/dist/index.js +17 -23
  368. package/dist/index.js.map +1 -1
  369. package/dist/providers/ConfigContext.d.ts.map +1 -1
  370. package/dist/providers/ConfigContext.js +10 -13
  371. package/dist/providers/ConfigContext.js.map +1 -1
  372. package/dist/providers/{LoggerContext.d.ts → LoggerProvider.d.ts} +1 -1
  373. package/dist/providers/LoggerProvider.d.ts.map +1 -0
  374. package/dist/providers/{LoggerContext.js → LoggerProvider.js} +1 -1
  375. package/dist/providers/{LoggerContext.js.map → LoggerProvider.js.map} +1 -1
  376. package/dist/providers/PwaUpdateProvider.js +1 -1
  377. package/dist/providers/ServiceClientProvider.d.ts +22 -0
  378. package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
  379. package/dist/providers/ServiceClientProvider.js +39 -48
  380. package/dist/providers/ServiceClientProvider.js.map +2 -2
  381. package/dist/providers/{SyncStorageContext.d.ts → SyncStorageProvider.d.ts} +1 -1
  382. package/dist/providers/SyncStorageProvider.d.ts.map +1 -0
  383. package/dist/providers/{SyncStorageContext.js → SyncStorageProvider.js} +1 -1
  384. package/dist/providers/{SyncStorageContext.js.map → SyncStorageProvider.js.map} +1 -1
  385. package/dist/providers/SystemProvider.d.ts +1 -1
  386. package/dist/providers/SystemProvider.d.ts.map +1 -1
  387. package/dist/providers/SystemProvider.js +3 -3
  388. package/dist/providers/SystemProvider.js.map +1 -1
  389. package/dist/providers/i18n/{I18nContext.d.ts → I18nProvider.d.ts} +2 -2
  390. package/dist/providers/i18n/I18nProvider.d.ts.map +1 -0
  391. package/dist/providers/i18n/{I18nContext.js → I18nProvider.js} +1 -1
  392. package/dist/providers/i18n/{I18nContext.js.map → I18nProvider.js.map} +1 -1
  393. package/dist/providers/i18n/{I18nContext.types.d.ts → I18nProvider.types.d.ts} +1 -1
  394. package/dist/providers/i18n/I18nProvider.types.d.ts.map +1 -0
  395. package/dist/providers/i18n/I18nProvider.types.js +1 -0
  396. package/dist/providers/i18n/I18nProvider.types.js.map +6 -0
  397. package/dist/providers/shared-data/SharedDataProvider.d.ts +75 -2
  398. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  399. package/dist/providers/shared-data/SharedDataProvider.js +111 -91
  400. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  401. package/dist/styles/base.styles.d.ts +15 -0
  402. package/dist/styles/base.styles.d.ts.map +1 -0
  403. package/dist/styles/base.styles.js +21 -0
  404. package/dist/styles/base.styles.js.map +6 -0
  405. package/dist/styles/control.styles.d.ts +19 -0
  406. package/dist/styles/control.styles.d.ts.map +1 -0
  407. package/dist/styles/control.styles.js +24 -0
  408. package/dist/styles/control.styles.js.map +6 -0
  409. package/dist/styles/theme.styles.d.ts +52 -0
  410. package/dist/styles/theme.styles.d.ts.map +1 -0
  411. package/dist/styles/theme.styles.js +55 -0
  412. package/dist/styles/theme.styles.js.map +6 -0
  413. package/package.json +5 -5
  414. package/src/components/data/Pagination.tsx +9 -9
  415. package/src/components/data/Table.tsx +63 -30
  416. package/src/components/data/calendar/Calendar.tsx +38 -36
  417. package/src/components/data/kanban/{Kanban.css → Kanban.animate.css} +0 -2
  418. package/src/components/data/kanban/Kanban.tsx +133 -94
  419. package/src/components/data/list/List.tsx +8 -22
  420. package/src/components/data/list/ListItem.styles.ts +8 -8
  421. package/src/components/data/list/ListItem.tsx +20 -31
  422. package/src/components/data/sheet/DataSheet.styles.ts +32 -9
  423. package/src/components/data/sheet/DataSheet.tsx +356 -747
  424. package/src/components/data/sheet/{types.ts → DataSheet.types.ts} +13 -8
  425. package/src/components/data/sheet/{sheetUtils.ts → DataSheet.utils.ts} +8 -8
  426. package/src/components/data/sheet/DataSheetColumn.tsx +7 -29
  427. package/src/components/data/sheet/DataSheetConfigDialog.tsx +15 -21
  428. package/src/components/data/sheet/hooks/useDataSheetExpansion.ts +85 -0
  429. package/src/components/data/sheet/hooks/useDataSheetFixedColumns.ts +131 -0
  430. package/src/components/data/sheet/hooks/useDataSheetHeaderCell.tsx +168 -0
  431. package/src/components/data/sheet/hooks/useDataSheetPaging.ts +51 -0
  432. package/src/components/data/sheet/hooks/useDataSheetReorder.ts +154 -0
  433. package/src/components/data/sheet/hooks/useDataSheetSelection.ts +99 -0
  434. package/src/components/data/sheet/hooks/useDataSheetSorting.ts +68 -0
  435. package/src/components/disclosure/Collapse.tsx +1 -9
  436. package/src/components/disclosure/Dialog.tsx +254 -59
  437. package/src/components/disclosure/Dropdown.tsx +66 -80
  438. package/src/components/disclosure/Tabs.tsx +23 -37
  439. package/src/components/display/Alert.tsx +2 -5
  440. package/src/components/display/Barcode.tsx +5 -117
  441. package/src/components/display/Barcode.types.ts +111 -0
  442. package/src/components/display/Card.animate.css +11 -0
  443. package/src/components/display/Card.tsx +10 -11
  444. package/src/components/display/Echarts.tsx +11 -15
  445. package/src/components/display/Link.tsx +3 -5
  446. package/src/components/display/Tag.tsx +2 -5
  447. package/src/components/features/address/AddressSearch.tsx +24 -7
  448. package/src/components/features/crud-detail/CrudDetail.tsx +135 -165
  449. package/src/components/features/crud-detail/{types.ts → CrudDetail.types.ts} +3 -16
  450. package/src/components/features/crud-detail/CrudDetailAfter.tsx +3 -16
  451. package/src/components/features/crud-detail/CrudDetailBefore.tsx +3 -16
  452. package/src/components/features/crud-detail/CrudDetailTools.tsx +3 -16
  453. package/src/components/features/crud-sheet/CrudSheet.tsx +158 -176
  454. package/src/components/features/crud-sheet/{types.ts → CrudSheet.types.ts} +13 -47
  455. package/src/components/features/crud-sheet/CrudSheetColumn.tsx +7 -30
  456. package/src/components/features/crud-sheet/CrudSheetFilter.tsx +12 -16
  457. package/src/components/features/crud-sheet/CrudSheetHeader.tsx +3 -16
  458. package/src/components/features/crud-sheet/CrudSheetTools.tsx +12 -16
  459. package/src/components/features/data-select-button/DataSelectButton.tsx +57 -66
  460. package/src/components/features/permission-table/PermissionTable.tsx +9 -13
  461. package/src/components/features/shared-data/SharedDataSelect.tsx +97 -127
  462. package/src/components/features/shared-data/SharedDataSelectButton.tsx +22 -14
  463. package/src/components/features/shared-data/SharedDataSelectList.tsx +61 -42
  464. package/src/components/feedback/Progress.tsx +16 -21
  465. package/src/components/feedback/busy/BusyContainer.tsx +18 -45
  466. package/src/components/feedback/busy/BusyProvider.tsx +40 -7
  467. package/src/components/feedback/notification/NotificationBanner.tsx +13 -32
  468. package/src/components/feedback/notification/NotificationBell.tsx +18 -47
  469. package/src/components/feedback/notification/NotificationProvider.tsx +105 -11
  470. package/src/components/feedback/print/Print.tsx +4 -8
  471. package/src/components/feedback/print/PrintProvider.tsx +37 -5
  472. package/src/components/form-control/Button.tsx +11 -29
  473. package/src/components/form-control/DropdownTrigger.styles.ts +16 -17
  474. package/src/components/form-control/Invalid.tsx +33 -29
  475. package/src/components/form-control/ThemeToggle.tsx +18 -15
  476. package/src/components/form-control/checkbox/Checkbox.styles.ts +20 -26
  477. package/src/components/form-control/checkbox/Checkbox.tsx +15 -101
  478. package/src/components/form-control/checkbox/CheckboxGroup.tsx +83 -17
  479. package/src/components/form-control/checkbox/Radio.tsx +15 -104
  480. package/src/components/form-control/checkbox/RadioGroup.tsx +80 -17
  481. package/src/components/form-control/checkbox/SelectableBase.tsx +123 -0
  482. package/src/components/form-control/checkbox/SelectionGroupBase.tsx +57 -0
  483. package/src/components/form-control/color-picker/ColorPicker.tsx +12 -32
  484. package/src/components/form-control/combobox/Combobox.tsx +143 -44
  485. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +10 -10
  486. package/src/components/form-control/editor/EditorToolbar.tsx +120 -217
  487. package/{dist/components/form-control/editor/editor.css → src/components/form-control/editor/RichTextEditor.tiptap.css} +0 -1
  488. package/src/components/form-control/editor/RichTextEditor.tsx +14 -29
  489. package/src/components/form-control/field/DatePicker.tsx +34 -76
  490. package/src/components/form-control/field/DateTimePicker.tsx +35 -83
  491. package/src/components/form-control/field/Field.styles.ts +48 -42
  492. package/src/components/form-control/field/FieldPlaceholder.tsx +2 -2
  493. package/src/components/form-control/field/FieldShell.tsx +113 -0
  494. package/src/components/form-control/field/NumberInput.tsx +75 -137
  495. package/src/components/form-control/field/TextInput.tsx +58 -120
  496. package/src/components/form-control/field/Textarea.tsx +67 -111
  497. package/src/components/form-control/field/TimePicker.tsx +33 -74
  498. package/src/components/form-control/numpad/Numpad.tsx +5 -6
  499. package/src/components/form-control/select/Select.tsx +266 -151
  500. package/src/components/form-control/state-preset/StatePreset.tsx +65 -88
  501. package/src/components/layout/FormGroup.tsx +10 -13
  502. package/src/components/layout/FormTable.tsx +40 -19
  503. package/src/components/layout/sidebar/Sidebar.tsx +456 -44
  504. package/src/components/layout/topbar/Topbar.tsx +420 -49
  505. package/src/helpers/createAppStructure.ts +22 -7
  506. package/src/helpers/createSlot.ts +45 -0
  507. package/src/helpers/createSlots.ts +44 -0
  508. package/src/hooks/createControllableSignal.ts +10 -18
  509. package/src/hooks/createControllableStore.ts +5 -6
  510. package/src/hooks/useLogger.ts +1 -1
  511. package/src/hooks/useSyncConfig.ts +1 -1
  512. package/src/index.ts +18 -23
  513. package/src/providers/ConfigContext.tsx +0 -1
  514. package/src/providers/PwaUpdateProvider.tsx +1 -1
  515. package/src/providers/ServiceClientProvider.tsx +62 -56
  516. package/src/providers/SystemProvider.tsx +4 -5
  517. package/src/providers/i18n/{I18nContext.tsx → I18nProvider.tsx} +1 -1
  518. package/src/providers/shared-data/SharedDataProvider.tsx +228 -124
  519. package/src/styles/base.styles.ts +21 -0
  520. package/src/styles/control.styles.ts +25 -0
  521. package/src/styles/theme.styles.ts +54 -0
  522. package/tailwind.config.ts +0 -11
  523. package/tests/components/data/List.spec.tsx +1 -262
  524. package/tests/components/data/Pagination.spec.tsx +0 -75
  525. package/tests/components/data/kanban/Kanban.selection.spec.tsx +1 -17
  526. package/tests/components/data/sheet/DataSheet.spec.tsx +38 -67
  527. package/tests/components/data/sheet/hooks/useDataSheetExpansion.spec.ts +254 -0
  528. package/tests/components/data/sheet/hooks/useDataSheetFixedColumns.spec.ts +488 -0
  529. package/tests/components/data/sheet/hooks/useDataSheetPaging.spec.ts +359 -0
  530. package/tests/components/data/sheet/hooks/useDataSheetReorder.spec.ts +251 -0
  531. package/tests/components/data/sheet/hooks/useDataSheetSelection.spec.ts +362 -0
  532. package/tests/components/data/sheet/hooks/useDataSheetSorting.spec.ts +279 -0
  533. package/tests/components/disclosure/Collapse.spec.tsx +0 -24
  534. package/tests/components/disclosure/Dialog.spec.tsx +11 -61
  535. package/tests/components/disclosure/DialogProvider.spec.tsx +9 -12
  536. package/tests/components/disclosure/Tabs.spec.tsx +0 -99
  537. package/tests/components/display/Barcode.spec.tsx +15 -15
  538. package/tests/components/features/address/AddressSearch.spec.tsx +3 -4
  539. package/tests/components/features/crud-detail/CrudDetail.spec.tsx +12 -74
  540. package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +19 -72
  541. package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +51 -29
  542. package/tests/components/features/permission-table/PermissionTable.spec.tsx +5 -30
  543. package/tests/components/features/shared-data/SharedDataSelect.spec.tsx +15 -19
  544. package/tests/components/features/shared-data/SharedDataSelectList.spec.tsx +17 -44
  545. package/tests/components/feedback/busy/BusyContainer.spec.tsx +15 -9
  546. package/tests/components/feedback/notification/LiveRegion.spec.tsx +2 -27
  547. package/tests/components/feedback/notification/NotificationBanner.spec.tsx +2 -27
  548. package/tests/components/feedback/notification/NotificationBell.spec.tsx +2 -16
  549. package/tests/components/feedback/notification/NotificationContext.spec.tsx +2 -16
  550. package/tests/components/form-control/Button.spec.tsx +0 -97
  551. package/tests/components/form-control/Invalid.spec.tsx +5 -20
  552. package/tests/components/form-control/checkbox/Checkbox.spec.tsx +1 -47
  553. package/tests/components/form-control/checkbox/CheckboxGroup.spec.tsx +1 -26
  554. package/tests/components/form-control/checkbox/Radio.spec.tsx +1 -46
  555. package/tests/components/form-control/checkbox/RadioGroup.spec.tsx +1 -26
  556. package/tests/components/form-control/color-picker/ColorPicker.spec.tsx +1 -31
  557. package/tests/components/form-control/combobox/Combobox.spec.tsx +28 -49
  558. package/tests/components/form-control/combobox/ComboboxItem.spec.tsx +7 -27
  559. package/tests/components/form-control/date-range-picker/DateRangePicker.spec.tsx +1 -58
  560. package/tests/components/form-control/field/DatePicker.spec.tsx +5 -93
  561. package/tests/components/form-control/field/DateTimePicker.spec.tsx +5 -86
  562. package/tests/components/form-control/field/FieldShell.spec.tsx +127 -0
  563. package/tests/components/form-control/field/NumberInput.spec.tsx +14 -133
  564. package/tests/components/form-control/field/TextInput.spec.tsx +6 -148
  565. package/tests/components/form-control/field/Textarea.spec.tsx +5 -69
  566. package/tests/components/form-control/field/TimePicker.spec.tsx +5 -84
  567. package/tests/components/form-control/numpad/Numpad.spec.tsx +1 -78
  568. package/tests/components/form-control/select/Select.spec.tsx +9 -59
  569. package/tests/components/form-control/select/SelectItem.spec.tsx +10 -62
  570. package/tests/components/layout/sidebar/Sidebar.spec.tsx +3 -122
  571. package/tests/components/layout/sidebar/SidebarContainer.spec.tsx +3 -45
  572. package/tests/components/layout/sidebar/SidebarMenu.spec.tsx +1 -74
  573. package/tests/components/layout/sidebar/SidebarUser.spec.tsx +0 -48
  574. package/tests/components/layout/topbar/TopbarActions.spec.tsx +5 -5
  575. package/tests/components/layout/topbar/{createTopbarActions.spec.tsx → useTopbarActions.spec.tsx} +4 -13
  576. package/tests/helpers/createAppStructure.spec.tsx +0 -26
  577. package/tests/helpers/createSlot.spec.tsx +99 -0
  578. package/tests/helpers/createSlots.spec.tsx +100 -0
  579. package/tests/hooks/createControllableSignal.spec.ts +0 -50
  580. package/tests/hooks/createControllableStore.spec.ts +67 -0
  581. package/tests/hooks/createMountTransition.spec.ts +0 -9
  582. package/tests/hooks/useLocalStorage.spec.tsx +0 -34
  583. package/tests/hooks/useLogger.spec.tsx +1 -18
  584. package/tests/hooks/usePrint.spec.tsx +1 -24
  585. package/tests/hooks/useSyncConfig.spec.tsx +1 -18
  586. package/tests/providers/ErrorLoggerProvider.spec.tsx +1 -11
  587. package/tests/providers/ServiceClientContext.spec.tsx +2 -20
  588. package/tests/providers/i18n/I18nContext.spec.tsx +1 -5
  589. package/tests/providers/shared-data/SharedDataProvider.spec.tsx +143 -21
  590. package/dist/components/data/kanban/KanbanContext.d.ts +0 -43
  591. package/dist/components/data/kanban/KanbanContext.d.ts.map +0 -1
  592. package/dist/components/data/kanban/KanbanContext.js +0 -24
  593. package/dist/components/data/kanban/KanbanContext.js.map +0 -6
  594. package/dist/components/data/sheet/DataSheet.css +0 -44
  595. package/dist/components/data/sheet/sheetUtils.d.ts.map +0 -1
  596. package/dist/components/data/sheet/sheetUtils.js.map +0 -6
  597. package/dist/components/data/sheet/types.d.ts.map +0 -1
  598. package/dist/components/data/sheet/types.js +0 -1
  599. package/dist/components/disclosure/DialogContext.d.ts +0 -57
  600. package/dist/components/disclosure/DialogContext.d.ts.map +0 -1
  601. package/dist/components/disclosure/DialogContext.js +0 -14
  602. package/dist/components/disclosure/DialogContext.js.map +0 -6
  603. package/dist/components/disclosure/DialogInstanceContext.d.ts +0 -20
  604. package/dist/components/disclosure/DialogInstanceContext.d.ts.map +0 -1
  605. package/dist/components/disclosure/DialogInstanceContext.js +0 -10
  606. package/dist/components/disclosure/DialogInstanceContext.js.map +0 -6
  607. package/dist/components/disclosure/DialogProvider.d.ts +0 -19
  608. package/dist/components/disclosure/DialogProvider.d.ts.map +0 -1
  609. package/dist/components/disclosure/DialogProvider.js +0 -145
  610. package/dist/components/disclosure/DialogProvider.js.map +0 -6
  611. package/dist/components/features/crud-detail/types.d.ts.map +0 -1
  612. package/dist/components/features/crud-detail/types.js +0 -1
  613. package/dist/components/features/crud-sheet/types.d.ts.map +0 -1
  614. package/dist/components/features/crud-sheet/types.js +0 -1
  615. package/dist/components/features/shared-data/SharedDataSelectListContext.d.ts +0 -15
  616. package/dist/components/features/shared-data/SharedDataSelectListContext.d.ts.map +0 -1
  617. package/dist/components/features/shared-data/SharedDataSelectListContext.js +0 -27
  618. package/dist/components/features/shared-data/SharedDataSelectListContext.js.map +0 -6
  619. package/dist/components/feedback/busy/BusyContext.d.ts +0 -29
  620. package/dist/components/feedback/busy/BusyContext.d.ts.map +0 -1
  621. package/dist/components/feedback/busy/BusyContext.js +0 -14
  622. package/dist/components/feedback/busy/BusyContext.js.map +0 -6
  623. package/dist/components/feedback/notification/NotificationContext.d.ts +0 -69
  624. package/dist/components/feedback/notification/NotificationContext.d.ts.map +0 -1
  625. package/dist/components/feedback/notification/NotificationContext.js +0 -14
  626. package/dist/components/feedback/notification/NotificationContext.js.map +0 -6
  627. package/dist/components/feedback/notification/index.d.ts +0 -5
  628. package/dist/components/feedback/notification/index.d.ts.map +0 -1
  629. package/dist/components/feedback/notification/index.js +0 -5
  630. package/dist/components/feedback/notification/index.js.map +0 -6
  631. package/dist/components/feedback/print/PrintContext.d.ts +0 -12
  632. package/dist/components/feedback/print/PrintContext.d.ts.map +0 -1
  633. package/dist/components/feedback/print/PrintContext.js +0 -12
  634. package/dist/components/feedback/print/PrintContext.js.map +0 -6
  635. package/dist/components/feedback/print/PrintInstanceContext.d.ts +0 -6
  636. package/dist/components/feedback/print/PrintInstanceContext.d.ts.map +0 -1
  637. package/dist/components/feedback/print/PrintInstanceContext.js +0 -10
  638. package/dist/components/feedback/print/PrintInstanceContext.js.map +0 -6
  639. package/dist/components/form-control/combobox/ComboboxContext.d.ts +0 -14
  640. package/dist/components/form-control/combobox/ComboboxContext.d.ts.map +0 -1
  641. package/dist/components/form-control/combobox/ComboboxContext.js +0 -14
  642. package/dist/components/form-control/combobox/ComboboxContext.js.map +0 -6
  643. package/dist/components/form-control/combobox/ComboboxItem.d.ts +0 -12
  644. package/dist/components/form-control/combobox/ComboboxItem.d.ts.map +0 -1
  645. package/dist/components/form-control/combobox/ComboboxItem.js +0 -56
  646. package/dist/components/form-control/combobox/ComboboxItem.js.map +0 -6
  647. package/dist/components/form-control/select/SelectContext.d.ts +0 -21
  648. package/dist/components/form-control/select/SelectContext.d.ts.map +0 -1
  649. package/dist/components/form-control/select/SelectContext.js +0 -14
  650. package/dist/components/form-control/select/SelectContext.js.map +0 -6
  651. package/dist/components/form-control/select/SelectItem.d.ts +0 -30
  652. package/dist/components/form-control/select/SelectItem.d.ts.map +0 -1
  653. package/dist/components/form-control/select/SelectItem.js +0 -112
  654. package/dist/components/form-control/select/SelectItem.js.map +0 -6
  655. package/dist/components/layout/sidebar/SidebarContainer.d.ts +0 -34
  656. package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +0 -1
  657. package/dist/components/layout/sidebar/SidebarContainer.js +0 -88
  658. package/dist/components/layout/sidebar/SidebarContainer.js.map +0 -6
  659. package/dist/components/layout/sidebar/SidebarContext.d.ts +0 -28
  660. package/dist/components/layout/sidebar/SidebarContext.d.ts.map +0 -1
  661. package/dist/components/layout/sidebar/SidebarContext.js +0 -20
  662. package/dist/components/layout/sidebar/SidebarContext.js.map +0 -6
  663. package/dist/components/layout/sidebar/SidebarMenu.d.ts +0 -35
  664. package/dist/components/layout/sidebar/SidebarMenu.d.ts.map +0 -1
  665. package/dist/components/layout/sidebar/SidebarMenu.js +0 -153
  666. package/dist/components/layout/sidebar/SidebarMenu.js.map +0 -6
  667. package/dist/components/layout/sidebar/SidebarUser.d.ts +0 -48
  668. package/dist/components/layout/sidebar/SidebarUser.d.ts.map +0 -1
  669. package/dist/components/layout/sidebar/SidebarUser.js +0 -128
  670. package/dist/components/layout/sidebar/SidebarUser.js.map +0 -6
  671. package/dist/components/layout/topbar/TopbarActions.d.ts +0 -3
  672. package/dist/components/layout/topbar/TopbarActions.d.ts.map +0 -1
  673. package/dist/components/layout/topbar/TopbarActions.js +0 -17
  674. package/dist/components/layout/topbar/TopbarActions.js.map +0 -6
  675. package/dist/components/layout/topbar/TopbarContainer.d.ts +0 -25
  676. package/dist/components/layout/topbar/TopbarContainer.d.ts.map +0 -1
  677. package/dist/components/layout/topbar/TopbarContainer.js +0 -37
  678. package/dist/components/layout/topbar/TopbarContainer.js.map +0 -6
  679. package/dist/components/layout/topbar/TopbarContext.d.ts +0 -9
  680. package/dist/components/layout/topbar/TopbarContext.d.ts.map +0 -1
  681. package/dist/components/layout/topbar/TopbarContext.js +0 -29
  682. package/dist/components/layout/topbar/TopbarContext.js.map +0 -6
  683. package/dist/components/layout/topbar/TopbarMenu.d.ts +0 -41
  684. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +0 -1
  685. package/dist/components/layout/topbar/TopbarMenu.js +0 -288
  686. package/dist/components/layout/topbar/TopbarMenu.js.map +0 -6
  687. package/dist/components/layout/topbar/TopbarUser.d.ts +0 -35
  688. package/dist/components/layout/topbar/TopbarUser.d.ts.map +0 -1
  689. package/dist/components/layout/topbar/TopbarUser.js +0 -110
  690. package/dist/components/layout/topbar/TopbarUser.js.map +0 -6
  691. package/dist/helpers/createHmrSafeContext.d.ts +0 -3
  692. package/dist/helpers/createHmrSafeContext.d.ts.map +0 -1
  693. package/dist/helpers/createHmrSafeContext.js +0 -10
  694. package/dist/helpers/createHmrSafeContext.js.map +0 -6
  695. package/dist/helpers/createSlotComponent.d.ts +0 -12
  696. package/dist/helpers/createSlotComponent.d.ts.map +0 -1
  697. package/dist/helpers/createSlotComponent.js +0 -13
  698. package/dist/helpers/createSlotComponent.js.map +0 -6
  699. package/dist/hooks/createSelectionGroup.d.ts +0 -70
  700. package/dist/hooks/createSelectionGroup.d.ts.map +0 -1
  701. package/dist/hooks/createSelectionGroup.js +0 -145
  702. package/dist/hooks/createSelectionGroup.js.map +0 -6
  703. package/dist/hooks/createSlotSignal.d.ts +0 -9
  704. package/dist/hooks/createSlotSignal.d.ts.map +0 -1
  705. package/dist/hooks/createSlotSignal.js +0 -10
  706. package/dist/hooks/createSlotSignal.js.map +0 -6
  707. package/dist/providers/LoggerContext.d.ts.map +0 -1
  708. package/dist/providers/ServiceClientContext.d.ts +0 -23
  709. package/dist/providers/ServiceClientContext.d.ts.map +0 -1
  710. package/dist/providers/ServiceClientContext.js +0 -14
  711. package/dist/providers/ServiceClientContext.js.map +0 -6
  712. package/dist/providers/SyncStorageContext.d.ts.map +0 -1
  713. package/dist/providers/i18n/I18nContext.d.ts.map +0 -1
  714. package/dist/providers/i18n/I18nContext.types.d.ts.map +0 -1
  715. package/dist/providers/i18n/I18nContext.types.js +0 -1
  716. package/dist/providers/shared-data/SharedDataContext.d.ts +0 -77
  717. package/dist/providers/shared-data/SharedDataContext.d.ts.map +0 -1
  718. package/dist/providers/shared-data/SharedDataContext.js +0 -14
  719. package/dist/providers/shared-data/SharedDataContext.js.map +0 -6
  720. package/dist/styles/patterns.styles.d.ts +0 -7
  721. package/dist/styles/patterns.styles.d.ts.map +0 -1
  722. package/dist/styles/patterns.styles.js +0 -47
  723. package/dist/styles/patterns.styles.js.map +0 -6
  724. package/dist/styles/tokens.styles.d.ts +0 -23
  725. package/dist/styles/tokens.styles.d.ts.map +0 -1
  726. package/dist/styles/tokens.styles.js +0 -76
  727. package/dist/styles/tokens.styles.js.map +0 -6
  728. package/src/components/data/kanban/KanbanContext.ts +0 -76
  729. package/src/components/data/sheet/DataSheet.css +0 -44
  730. package/src/components/disclosure/DialogContext.ts +0 -69
  731. package/src/components/disclosure/DialogInstanceContext.ts +0 -25
  732. package/src/components/disclosure/DialogProvider.tsx +0 -147
  733. package/src/components/features/shared-data/SharedDataSelectListContext.ts +0 -39
  734. package/src/components/feedback/busy/BusyContext.ts +0 -38
  735. package/src/components/feedback/notification/NotificationContext.ts +0 -95
  736. package/src/components/feedback/notification/index.ts +0 -4
  737. package/src/components/feedback/print/PrintContext.ts +0 -20
  738. package/src/components/feedback/print/PrintInstanceContext.ts +0 -11
  739. package/src/components/form-control/combobox/ComboboxContext.ts +0 -25
  740. package/src/components/form-control/combobox/ComboboxItem.tsx +0 -69
  741. package/src/components/form-control/select/SelectContext.ts +0 -35
  742. package/src/components/form-control/select/SelectItem.tsx +0 -128
  743. package/src/components/layout/sidebar/SidebarContainer.tsx +0 -123
  744. package/src/components/layout/sidebar/SidebarContext.ts +0 -40
  745. package/src/components/layout/sidebar/SidebarMenu.tsx +0 -182
  746. package/src/components/layout/sidebar/SidebarUser.tsx +0 -142
  747. package/src/components/layout/topbar/TopbarActions.tsx +0 -8
  748. package/src/components/layout/topbar/TopbarContainer.tsx +0 -44
  749. package/src/components/layout/topbar/TopbarContext.ts +0 -36
  750. package/src/components/layout/topbar/TopbarMenu.tsx +0 -227
  751. package/src/components/layout/topbar/TopbarUser.tsx +0 -97
  752. package/src/helpers/createHmrSafeContext.ts +0 -8
  753. package/src/helpers/createSlotComponent.ts +0 -23
  754. package/src/hooks/createSelectionGroup.tsx +0 -241
  755. package/src/hooks/createSlotSignal.ts +0 -14
  756. package/src/providers/ServiceClientContext.ts +0 -32
  757. package/src/providers/shared-data/SharedDataContext.ts +0 -91
  758. package/src/styles/patterns.styles.ts +0 -50
  759. package/src/styles/tokens.styles.ts +0 -86
  760. package/tests/components/data/Table.spec.tsx +0 -55
  761. package/tests/components/display/Alert.spec.tsx +0 -47
  762. package/tests/components/display/Card.spec.tsx +0 -41
  763. package/tests/components/display/Link.spec.tsx +0 -62
  764. package/tests/components/display/Tag.spec.tsx +0 -47
  765. package/tests/components/feedback/print/Print.spec.tsx +0 -45
  766. package/tests/components/layout/FormGroup.spec.tsx +0 -104
  767. package/tests/components/layout/FormTable.spec.tsx +0 -43
  768. package/tests/components/layout/topbar/TopbarContainer.spec.tsx +0 -38
  769. package/tests/providers/ClipboardProvider.spec.tsx +0 -20
  770. package/tests/providers/ConfigContext.spec.tsx +0 -42
  771. package/tests/providers/LoggerContext.spec.tsx +0 -76
  772. package/tests/providers/PwaUpdateProvider.spec.tsx +0 -32
  773. package/tests/providers/SyncStorageContext.spec.tsx +0 -77
  774. /package/dist/components/data/sheet/{types.js.map → DataSheet.types.js.map} +0 -0
  775. /package/dist/components/{features/crud-detail/types.js.map → display/Barcode.types.js.map} +0 -0
  776. /package/dist/components/features/{crud-sheet/types.js.map → crud-detail/CrudDetail.types.js.map} +0 -0
  777. /package/dist/{providers/i18n/I18nContext.types.js.map → components/features/crud-sheet/CrudSheet.types.js.map} +0 -0
  778. /package/dist/components/feedback/busy/{BusyContainer.css → BusyContainer.animate.css} +0 -0
  779. /package/src/components/feedback/busy/{BusyContainer.css → BusyContainer.animate.css} +0 -0
  780. /package/src/providers/{LoggerContext.tsx → LoggerProvider.tsx} +0 -0
  781. /package/src/providers/{SyncStorageContext.tsx → SyncStorageProvider.tsx} +0 -0
  782. /package/src/providers/i18n/{I18nContext.types.ts → I18nProvider.types.ts} +0 -0
@@ -1,11 +1,8 @@
1
1
  import {
2
- children,
3
2
  createEffect,
4
- createMemo,
5
3
  createSignal,
6
4
  createUniqueId,
7
5
  For,
8
- type JSX,
9
6
  onCleanup,
10
7
  Show,
11
8
  splitProps,
@@ -14,24 +11,27 @@ import {
14
11
  import { createStore, produce, reconcile } from "solid-js/store";
15
12
  import { createControllableStore } from "../../../hooks/createControllableStore";
16
13
  import type { DateTime } from "@simplysm/core-common";
17
- import { objClone, objGetChainValue } from "@simplysm/core-common";
14
+ import { obj } from "@simplysm/core-common";
18
15
  import "@simplysm/core-common"; // register extensions
19
- import type { SortingDef } from "../../data/sheet/types";
16
+ import { openFileDialog } from "@simplysm/core-browser";
17
+ import type { SortingDef } from "../../data/sheet/DataSheet.types";
20
18
  import { DataSheet } from "../../data/sheet/DataSheet";
21
19
  import { DataSheetColumn } from "../../data/sheet/DataSheetColumn";
20
+ import { normalizeHeader } from "../../data/sheet/DataSheet.utils";
22
21
  import { BusyContainer } from "../../feedback/busy/BusyContainer";
23
- import { useNotification } from "../../feedback/notification/NotificationContext";
24
- import { useI18n } from "../../../providers/i18n/I18nContext";
22
+ import { useNotification } from "../../feedback/notification/NotificationProvider";
23
+ import { useI18n } from "../../../providers/i18n/I18nProvider";
25
24
  import { Button } from "../../form-control/Button";
26
25
  import { Icon } from "../../display/Icon";
27
26
  import { FormGroup } from "../../layout/FormGroup";
28
- import { createTopbarActions, TopbarContext } from "../../layout/topbar/TopbarContext";
29
- import { useDialogInstance } from "../../disclosure/DialogInstanceContext";
27
+ import { useTopbarActions, TopbarContext } from "../../layout/topbar/Topbar";
30
28
  import { Dialog } from "../../disclosure/Dialog";
31
29
  import { Link } from "../../display/Link";
32
30
  import { createEventListener } from "@solid-primitives/event-listener";
33
31
  import { useBeforeLeave } from "@solidjs/router";
34
32
  import clsx from "clsx";
33
+ import { text } from "../../../styles/base.styles";
34
+ import { gap, pad } from "../../../styles/control.styles";
35
35
  import {
36
36
  IconDeviceFloppy,
37
37
  IconExternalLink,
@@ -44,52 +44,42 @@ import {
44
44
  IconUpload,
45
45
  } from "@tabler/icons-solidjs";
46
46
  import { registerCrud, unregisterCrud, activateCrud, isActiveCrud } from "../crudRegistry";
47
- import { CrudSheetColumn, isCrudSheetColumnDef } from "./CrudSheetColumn";
48
- import { CrudSheetFilter, isCrudSheetFilterDef } from "./CrudSheetFilter";
49
- import { CrudSheetTools, isCrudSheetToolsDef } from "./CrudSheetTools";
50
- import { CrudSheetHeader, isCrudSheetHeaderDef } from "./CrudSheetHeader";
47
+ import { CrudSheetColumn, createCrudSheetColumnSlotsAccessor } from "./CrudSheetColumn";
48
+ import { CrudSheetFilter, createCrudSheetFilterSlotAccessor } from "./CrudSheetFilter";
49
+ import { CrudSheetTools, createCrudSheetToolsSlotAccessor } from "./CrudSheetTools";
50
+ import { CrudSheetHeader, createCrudSheetHeaderSlotAccessor } from "./CrudSheetHeader";
51
51
  import type {
52
- CrudSheetColumnDef,
52
+ CrudSheetCellContext,
53
53
  CrudSheetContext,
54
- CrudSheetFilterDef,
55
- CrudSheetHeaderDef,
56
54
  CrudSheetProps,
57
- CrudSheetToolsDef,
58
55
  SearchResult,
59
- } from "./types";
56
+ } from "./CrudSheet.types";
60
57
 
61
- interface CrudSheetComponent {
62
- <TItem, TFilter extends Record<string, any>>(props: CrudSheetProps<TItem, TFilter>): JSX.Element;
63
- Column: typeof CrudSheetColumn;
64
- Filter: typeof CrudSheetFilter;
65
- Tools: typeof CrudSheetTools;
66
- Header: typeof CrudSheetHeader;
67
- }
68
-
69
- const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
58
+ const CrudSheetBase = <TItem, TFilter extends Record<string, unknown>>(
70
59
  props: CrudSheetProps<TItem, TFilter>,
71
60
  ) => {
72
61
  const [local] = splitProps(props, [
73
62
  "search",
74
63
  "getItemKey",
75
- "persistKey",
64
+ "storageKey",
76
65
  "editable",
77
- "itemEditable",
78
- "itemDeletable",
79
- "itemDeleted",
66
+ "isItemEditable",
67
+ "isItemDeletable",
68
+ "isItemDeleted",
80
69
  "isItemSelectable",
81
70
  "lastModifiedAtProp",
82
71
  "lastModifiedByProp",
83
- "onSubmitted",
72
+ "onSubmitComplete",
84
73
  "filterInitial",
85
74
  "items",
86
75
  "onItemsChange",
87
76
  "inlineEdit",
88
77
  "dialogEdit",
89
78
  "excel",
90
- "selectMode",
79
+ "selectionMode",
91
80
  "onSelect",
92
81
  "hideAutoTools",
82
+ "close",
93
83
  "class",
94
84
  "children",
95
85
  ]);
@@ -97,22 +87,15 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
97
87
  const noti = useNotification();
98
88
  const i18n = useI18n();
99
89
  const topbarCtx = useContext(TopbarContext);
100
- const dialogInstance = useDialogInstance();
101
- const isInDialog = dialogInstance !== undefined;
102
- const isSelectMode = () => local.selectMode != null;
90
+ const isInDialog = local.close !== undefined;
91
+ const isSelectMode = () => local.selectionMode != null;
103
92
  const canEdit = () => (isInDialog && isSelectMode() ? false : (local.editable ?? true));
104
93
 
105
- // -- Children Resolution --
106
- const resolved = children(() => local.children);
107
- const defs = createMemo(() => {
108
- const arr = resolved.toArray();
109
- return {
110
- filter: arr.find(isCrudSheetFilterDef) as CrudSheetFilterDef<TFilter> | undefined,
111
- columns: arr.filter(isCrudSheetColumnDef) as unknown as CrudSheetColumnDef<TItem>[],
112
- tools: arr.find(isCrudSheetToolsDef) as CrudSheetToolsDef<TItem> | undefined,
113
- header: arr.find(isCrudSheetHeaderDef) as CrudSheetHeaderDef | undefined,
114
- };
115
- });
94
+ // -- Slot Accessors --
95
+ const [headerSlot, HeaderProvider] = createCrudSheetHeaderSlotAccessor();
96
+ const [filterSlot, FilterProvider] = createCrudSheetFilterSlotAccessor();
97
+ const [toolsSlot, ToolsProvider] = createCrudSheetToolsSlotAccessor();
98
+ const [columnSlots, ColumnsProvider] = createCrudSheetColumnSlotsAccessor();
116
99
 
117
100
  // -- State --
118
101
  const [items, setItems] = createControllableStore<TItem[]>({
@@ -121,18 +104,30 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
121
104
  });
122
105
  let originalItems: TItem[] = [];
123
106
 
124
- // eslint-disable-next-line solid/reactivity -- filterInitial is used only for initial value
125
107
  const [filter, setFilter] = createStore<TFilter>((local.filterInitial ?? {}) as TFilter);
126
- const [lastFilter, setLastFilter] = createSignal<TFilter>(objClone(filter));
108
+ const [lastFilter, setLastFilter] = createSignal<TFilter>(obj.clone(filter));
127
109
 
128
110
  const [page, setPage] = createSignal(1);
129
111
  const [totalPageCount, setTotalPageCount] = createSignal(0);
130
112
  const [sorts, setSorts] = createSignal<SortingDef[]>([]);
131
113
 
132
114
  const [busyCount, setBusyCount] = createSignal(0);
115
+
116
+ async function withBusy<T>(fn: () => Promise<T>, errorMessage?: string): Promise<T | undefined> {
117
+ setBusyCount((c) => c + 1);
118
+ try {
119
+ return await fn();
120
+ } catch (err) {
121
+ noti.error(err, errorMessage);
122
+ return undefined;
123
+ } finally {
124
+ setBusyCount((c) => c - 1);
125
+ }
126
+ }
127
+
133
128
  const [ready, setReady] = createSignal(false);
134
129
 
135
- const [selectedItems, setSelectedItems] = createSignal<TItem[]>([]);
130
+ const [selection, setSelection] = createSignal<TItem[]>([]);
136
131
  const [selectedKeys, setSelectedKeys] = createSignal<Set<string | number>>(new Set());
137
132
 
138
133
  let formRef: HTMLFormElement | undefined;
@@ -142,17 +137,19 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
142
137
  createEventListener(() => formRef, "pointerdown", () => activateCrud(crudId));
143
138
  createEventListener(() => formRef, "focusin", () => activateCrud(crudId));
144
139
 
140
+ let refreshVersion = 0;
141
+
145
142
  createEffect(() => {
146
143
  void doRefresh();
147
144
  });
148
145
 
149
- // -- Key-based selection: restore selectedItems when items change --
146
+ // -- Key-based selection: restore selection when items change --
150
147
  createEffect(() => {
151
- const currentItems = items as unknown as TItem[];
148
+ const currentItems = items;
152
149
  const keys = selectedKeys();
153
150
  if (keys.size === 0) {
154
- if (selectedItems().length > 0) {
155
- setSelectedItems([]);
151
+ if (selection().length > 0) {
152
+ setSelection([]);
156
153
  }
157
154
  return;
158
155
  }
@@ -160,34 +157,36 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
160
157
  const key = local.getItemKey(item);
161
158
  return key != null && keys.has(key);
162
159
  });
163
- setSelectedItems(restored);
160
+ setSelection(restored);
164
161
  });
165
162
 
166
163
  async function doRefresh() {
164
+ const version = ++refreshVersion;
167
165
  setBusyCount((c) => c + 1);
168
166
  try {
169
167
  await refresh();
168
+ if (version !== refreshVersion) return;
169
+ setReady(true);
170
170
  } catch (err) {
171
+ if (version !== refreshVersion) return;
171
172
  noti.error(err, i18n.t("crudSheet.lookupFailed"));
173
+ } finally {
174
+ setBusyCount((c) => c - 1);
172
175
  }
173
- setBusyCount((c) => c - 1);
174
- setReady(true);
175
176
  }
176
177
 
177
178
  async function refresh() {
178
179
  const result: SearchResult<TItem> = await local.search(lastFilter(), page(), sorts());
179
180
  setItems(reconcile(result.items));
180
- originalItems = objClone(result.items);
181
+ originalItems = obj.clone(result.items);
181
182
  setTotalPageCount(result.pageCount ?? 0);
182
183
  }
183
184
 
184
- /* eslint-disable solid/reactivity -- called only in event handlers, immediate store read */
185
185
  function getItemDiffs() {
186
186
  return items.oneWayDiffs(originalItems, (item) => local.getItemKey(item), {
187
187
  excludes: local.inlineEdit?.diffsExcludes,
188
188
  });
189
189
  }
190
- /* eslint-enable solid/reactivity */
191
190
 
192
191
  function checkIgnoreChanges(): boolean {
193
192
  if (!local.inlineEdit) return true;
@@ -200,7 +199,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
200
199
  e.preventDefault();
201
200
  if (!checkIgnoreChanges()) return;
202
201
  setPage(1);
203
- setLastFilter(() => objClone(filter));
202
+ setLastFilter(() => obj.clone(filter));
204
203
  }
205
204
 
206
205
  async function handleRefresh() {
@@ -219,7 +218,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
219
218
  }
220
219
 
221
220
  function handleToggleDelete(item: TItem, index: number) {
222
- if (!(local.itemDeletable?.(item) ?? true)) return;
221
+ if (!(local.isItemDeletable?.(item) ?? true)) return;
223
222
  if (local.inlineEdit?.deleteProp == null) return;
224
223
  const dp = local.inlineEdit.deleteProp;
225
224
 
@@ -232,7 +231,11 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
232
231
  return;
233
232
  }
234
233
 
235
- setItems(index as any, dp as any, !(item[dp] as boolean) as any);
234
+ setItems(
235
+ produce((draft) => {
236
+ (draft[index] as Record<string, unknown>)[dp] = !(item[dp] as boolean);
237
+ }),
238
+ );
236
239
  }
237
240
 
238
241
  async function handleSave() {
@@ -247,16 +250,12 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
247
250
  return;
248
251
  }
249
252
 
250
- setBusyCount((c) => c + 1);
251
- try {
252
- await local.inlineEdit.submit(diffs);
253
+ await withBusy(async () => {
254
+ await local.inlineEdit!.submit(diffs);
253
255
  noti.success(i18n.t("crudSheet.saveCompleted"), i18n.t("crudSheet.saveSuccess"));
254
256
  await refresh();
255
- local.onSubmitted?.();
256
- } catch (err) {
257
- noti.error(err, i18n.t("crudSheet.saveFailed"));
258
- }
259
- setBusyCount((c) => c - 1);
257
+ local.onSubmitComplete?.();
258
+ }, i18n.t("crudSheet.saveFailed"));
260
259
  }
261
260
 
262
261
  async function handleFormSubmit(e: Event) {
@@ -270,86 +269,59 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
270
269
  const result = await local.dialogEdit.editItem(item);
271
270
  if (!result) return;
272
271
 
273
- setBusyCount((c) => c + 1);
274
- try {
275
- await refresh();
276
- } catch (err) {
277
- noti.error(err, i18n.t("crudSheet.lookupFailed"));
278
- }
279
- setBusyCount((c) => c - 1);
272
+ await withBusy(() => refresh(), i18n.t("crudSheet.lookupFailed"));
280
273
  }
281
274
 
282
275
  async function handleDeleteItems() {
283
276
  if (!local.dialogEdit?.deleteItems) return;
284
- const result = await local.dialogEdit.deleteItems(selectedItems());
277
+ const result = await local.dialogEdit.deleteItems(selection());
285
278
  if (!result) return;
286
279
 
287
- setBusyCount((c) => c + 1);
288
- try {
280
+ await withBusy(async () => {
289
281
  await refresh();
290
282
  noti.success(i18n.t("crudSheet.deleteCompleted"), i18n.t("crudSheet.deleteSuccess"));
291
- } catch (err) {
292
- noti.error(err, i18n.t("crudSheet.deleteFailed"));
293
- }
294
- setBusyCount((c) => c - 1);
283
+ }, i18n.t("crudSheet.deleteFailed"));
295
284
  }
296
285
 
297
286
  async function handleRestoreItems() {
298
287
  if (!local.dialogEdit?.restoreItems) return;
299
- const result = await local.dialogEdit.restoreItems(selectedItems());
288
+ const result = await local.dialogEdit.restoreItems(selection());
300
289
  if (!result) return;
301
290
 
302
- setBusyCount((c) => c + 1);
303
- try {
291
+ await withBusy(async () => {
304
292
  await refresh();
305
293
  noti.success(i18n.t("crudSheet.restoreCompleted"), i18n.t("crudSheet.restoreSuccess"));
306
- } catch (err) {
307
- noti.error(err, i18n.t("crudSheet.restoreFailed"));
308
- }
309
- setBusyCount((c) => c - 1);
294
+ }, i18n.t("crudSheet.restoreFailed"));
310
295
  }
311
296
 
312
297
  // -- Excel --
313
298
  async function handleExcelDownload() {
314
299
  if (!local.excel) return;
315
300
 
316
- setBusyCount((c) => c + 1);
317
- try {
301
+ await withBusy(async () => {
318
302
  const result = await local.search(lastFilter(), undefined, sorts());
319
- await local.excel.download(result.items);
320
- } catch (err) {
321
- noti.error(err, i18n.t("crudSheet.excelDownloadFailed"));
322
- }
323
- setBusyCount((c) => c - 1);
303
+ await local.excel!.download(result.items);
304
+ }, i18n.t("crudSheet.excelDownloadFailed"));
324
305
  }
325
306
 
326
- function handleExcelUpload() {
307
+ async function handleExcelUpload() {
327
308
  if (!local.excel?.upload) return;
328
309
 
329
- const input = document.createElement("input");
330
- input.type = "file";
331
- input.accept = ".xlsx";
332
- input.onchange = async () => {
333
- const file = input.files?.[0];
334
- if (file == null) return;
335
-
336
- setBusyCount((c) => c + 1);
337
- try {
338
- await local.excel!.upload!(file);
339
- noti.success(i18n.t("crudSheet.excelCompleted"), i18n.t("crudSheet.excelUploadSuccess"));
340
- await refresh();
341
- } catch (err) {
342
- noti.error(err, i18n.t("crudSheet.excelUploadFailed"));
343
- }
344
- setBusyCount((c) => c - 1);
345
- };
346
- input.click();
310
+ const files = await openFileDialog({ accept: ".xlsx" });
311
+ const file = files?.[0];
312
+ if (file == null) return;
313
+
314
+ await withBusy(async () => {
315
+ await local.excel!.upload!(file);
316
+ noti.success(i18n.t("crudSheet.excelCompleted"), i18n.t("crudSheet.excelUploadSuccess"));
317
+ await refresh();
318
+ }, i18n.t("crudSheet.excelUploadFailed"));
347
319
  }
348
320
 
349
321
  // -- Select Mode --
350
- function handleSelectedItemsChange(newSelectedItems: TItem[]) {
322
+ function handleSelectionChange(newSelection: TItem[]) {
351
323
  // Current page items key Set
352
- const currentItems = items as unknown as TItem[];
324
+ const currentItems = items;
353
325
  const currentKeys = new Set<string | number>();
354
326
  for (const item of currentItems) {
355
327
  const key = local.getItemKey(item);
@@ -358,7 +330,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
358
330
 
359
331
  // Newly selected items key
360
332
  const newSelectedKeys = new Set<string | number>();
361
- for (const item of newSelectedItems) {
333
+ for (const item of newSelection) {
362
334
  const key = local.getItemKey(item);
363
335
  if (key != null) newSelectedKeys.add(key);
364
336
  }
@@ -375,17 +347,17 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
375
347
  }
376
348
 
377
349
  setSelectedKeys(merged);
378
- setSelectedItems(newSelectedItems);
350
+ setSelection(newSelection);
379
351
  }
380
352
 
381
353
  function clearSelection() {
382
354
  setSelectedKeys(new Set<string | number>());
383
- setSelectedItems([]);
355
+ setSelection([]);
384
356
  }
385
357
 
386
358
  function handleSelectConfirm() {
387
359
  local.onSelect?.({
388
- items: selectedItems(),
360
+ items: selection(),
389
361
  keys: [...selectedKeys()],
390
362
  });
391
363
  }
@@ -412,7 +384,6 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
412
384
  });
413
385
 
414
386
  // -- Route Leave Guard --
415
- // eslint-disable-next-line solid/reactivity -- inlineEdit is used only for initial value
416
387
  if (!isInDialog && local.inlineEdit) {
417
388
  try {
418
389
  useBeforeLeave((e) => {
@@ -427,7 +398,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
427
398
 
428
399
  // -- Topbar Actions --
429
400
  if (topbarCtx) {
430
- createTopbarActions(() => (
401
+ useTopbarActions(() => (
431
402
  <>
432
403
  <Show when={canEdit() && local.inlineEdit}>
433
404
  <Button
@@ -450,8 +421,8 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
450
421
 
451
422
  // -- Context for Tools --
452
423
  const ctx: CrudSheetContext<TItem> = {
453
- items: () => items as unknown as TItem[],
454
- selectedItems,
424
+ items: () => items,
425
+ selection,
455
426
  page,
456
427
  sorts,
457
428
  busy: () => busyCount() > 0,
@@ -471,15 +442,23 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
471
442
 
472
443
  // -- Render --
473
444
  const deleteProp = () => local.inlineEdit?.deleteProp;
474
- const isItemDeleted = (item: TItem) => local.itemDeleted?.(item) ?? false;
445
+ const isItemDeleted = (item: TItem) => local.isItemDeleted?.(item) ?? false;
475
446
 
476
447
  return (
477
448
  <>
449
+ <ColumnsProvider>
450
+ <HeaderProvider>
451
+ <FilterProvider>
452
+ <ToolsProvider>{local.children}</ToolsProvider>
453
+ </FilterProvider>
454
+ </HeaderProvider>
455
+ </ColumnsProvider>
456
+
478
457
  {/* Dialog mode: Dialog.Action (refresh button in header) */}
479
458
  <Show when={isInDialog}>
480
459
  <Dialog.Action>
481
460
  <button
482
- class="flex items-center px-2 text-base-400 hover:text-base-600"
461
+ class={clsx("flex items-center px-2 hover:text-base-600", text.muted)}
483
462
  onClick={handleRefresh}
484
463
  >
485
464
  <Icon icon={IconRefresh} />
@@ -514,11 +493,11 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
514
493
  </Show>
515
494
 
516
495
  {/* Header (optional) */}
517
- <Show when={defs().header}>{(headerDef) => headerDef().children}</Show>
496
+ <Show when={headerSlot()}>{(slot) => slot().children}</Show>
518
497
 
519
498
  {/* Filter */}
520
- <Show when={defs().filter}>
521
- {(filterDef) => (
499
+ <Show when={filterSlot()}>
500
+ {(slot) => (
522
501
  <form class="p-2" onSubmit={handleFilterSubmit}>
523
502
  <FormGroup inline>
524
503
  <FormGroup.Item>
@@ -527,7 +506,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
527
506
  {i18n.t("crudSheet.search")}
528
507
  </Button>
529
508
  </FormGroup.Item>
530
- {filterDef().children(filter, setFilter)}
509
+ {slot().children(filter, setFilter)}
531
510
  </FormGroup>
532
511
  </form>
533
512
  )}
@@ -563,11 +542,11 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
563
542
  variant="ghost"
564
543
  onClick={handleDeleteItems}
565
544
  disabled={
566
- selectedItems().length === 0 ||
567
- !selectedItems().some(
545
+ selection().length === 0 ||
546
+ !selection().some(
568
547
  (item) =>
569
- (local.itemDeletable?.(item) ?? true) &&
570
- !(local.itemDeleted?.(item) ?? false),
548
+ (local.isItemDeletable?.(item) ?? true) &&
549
+ !(local.isItemDeleted?.(item) ?? false),
571
550
  )
572
551
  }
573
552
  >
@@ -582,8 +561,8 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
582
561
  variant="ghost"
583
562
  onClick={handleRestoreItems}
584
563
  disabled={
585
- selectedItems().length === 0 ||
586
- !selectedItems().some((item) => local.itemDeleted?.(item) ?? false)
564
+ selection().length === 0 ||
565
+ !selection().some((item) => local.isItemDeleted?.(item) ?? false)
587
566
  }
588
567
  >
589
568
  <Icon icon={IconTrashOff} class="mr-1" />
@@ -607,7 +586,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
607
586
  </Show>
608
587
 
609
588
  {/* Custom tools */}
610
- <Show when={defs().tools}>{(toolsDef) => toolsDef().children(ctx)}</Show>
589
+ <Show when={toolsSlot()}>{(slot) => slot().children(ctx)}</Show>
611
590
  </div>
612
591
  </Show>
613
592
 
@@ -616,23 +595,23 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
616
595
  <DataSheet
617
596
  class="h-full"
618
597
  items={items}
619
- persistKey={local.persistKey != null ? `${local.persistKey}-sheet` : undefined}
598
+ storageKey={local.storageKey != null ? `${local.storageKey}-sheet` : undefined}
620
599
  page={totalPageCount() > 0 ? page() : undefined}
621
600
  onPageChange={setPage}
622
601
  totalPageCount={totalPageCount()}
623
602
  sorts={sorts()}
624
603
  onSortsChange={setSorts}
625
604
  isItemSelectable={local.isItemSelectable}
626
- selectMode={
605
+ selectionMode={
627
606
  isSelectMode()
628
- ? local.selectMode
607
+ ? local.selectionMode
629
608
  : local.dialogEdit?.deleteItems != null || local.dialogEdit?.restoreItems != null
630
609
  ? "multiple"
631
610
  : undefined
632
611
  }
633
- selectedItems={selectedItems()}
634
- onSelectedItemsChange={handleSelectedItemsChange}
635
- autoSelect={isSelectMode() && local.selectMode === "single" ? "click" : undefined}
612
+ selection={selection()}
613
+ onSelectionChange={handleSelectionChange}
614
+ autoSelect={isSelectMode() && local.selectionMode === "single" ? true : undefined}
636
615
  cellClass={(item) => {
637
616
  if (isItemDeleted(item)) {
638
617
  return "line-through";
@@ -653,7 +632,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
653
632
  <div class="flex items-center justify-center px-1 py-0.5">
654
633
  <Link
655
634
  theme="danger"
656
- disabled={!(local.itemDeletable?.(dsCtx.item) ?? true)}
635
+ disabled={!(local.isItemDeletable?.(dsCtx.item) ?? true)}
657
636
  onClick={() => handleToggleDelete(dsCtx.item, dsCtx.index)}
658
637
  >
659
638
  <Icon icon={isItemDeleted(dsCtx.item) ? IconTrashOff : IconTrash} />
@@ -664,41 +643,41 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
664
643
  </Show>
665
644
 
666
645
  {/* User-defined columns -- map CrudSheetColumn to DataSheetColumn */}
667
- <For each={defs().columns}>
646
+ <For each={columnSlots()}>
668
647
  {(col) => (
669
648
  <DataSheetColumn<TItem>
670
649
  key={col.key}
671
- header={col.header}
650
+ header={normalizeHeader(col.header)}
672
651
  headerContent={col.headerContent}
673
652
  headerStyle={col.headerStyle}
674
653
  summary={col.summary}
675
654
  tooltip={col.tooltip}
676
- fixed={col.fixed}
677
- hidden={col.hidden}
678
- collapse={col.collapse}
655
+ fixed={col.fixed ?? false}
656
+ hidden={col.hidden ?? false}
657
+ collapse={col.collapse ?? false}
679
658
  width={col.width}
680
659
  class={col.class}
681
- sortable={col.sortable}
682
- resizable={col.resizable}
660
+ sortable={col.sortable ?? true}
661
+ resizable={col.resizable ?? true}
683
662
  >
684
663
  {(dsCtx) => {
685
- const crudCtx = {
664
+ const crudCtx: CrudSheetCellContext<any> = {
686
665
  ...dsCtx,
687
- setItem: <TKey extends keyof TItem>(key: TKey, value: TItem[TKey]) => {
688
- setItems(dsCtx.index as any, key as any, value as any);
666
+ setItem: (key, value) => {
667
+ setItems(dsCtx.index as any, key as any, value);
689
668
  },
690
669
  };
691
670
 
692
671
  // dialogEdit editable column -- wrap with edit link
693
672
  if (
694
673
  local.dialogEdit &&
695
- col.editTrigger &&
674
+ (col.editTrigger ?? false) &&
696
675
  canEdit() &&
697
- (local.itemEditable?.(dsCtx.item) ?? true)
676
+ (local.isItemEditable?.(dsCtx.item) ?? true)
698
677
  ) {
699
678
  return (
700
679
  <Link
701
- class={clsx("flex", "gap-1")}
680
+ class={clsx("flex", gap.default)}
702
681
  onClick={(e) => {
703
682
  e.preventDefault();
704
683
  e.stopPropagation();
@@ -708,12 +687,12 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
708
687
  <div class={"p-1"}>
709
688
  <Icon icon={IconExternalLink} />
710
689
  </div>
711
- <div class={"flex-1"}>{col.cell(crudCtx)}</div>
690
+ <div class={"flex-1"}>{col.children(crudCtx)}</div>
712
691
  </Link>
713
692
  );
714
693
  }
715
694
 
716
- return col.cell(crudCtx);
695
+ return col.children(crudCtx);
717
696
  }}
718
697
  </DataSheetColumn>
719
698
  )}
@@ -723,9 +702,9 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
723
702
  <Show when={local.lastModifiedAtProp}>
724
703
  <DataSheetColumn<TItem> key={local.lastModifiedAtProp!} header={i18n.t("crudSheet.lastModified")} hidden>
725
704
  {(dsCtx) => (
726
- <div class="px-2 py-1 text-center">
705
+ <div class={clsx(pad.default, "text-center")}>
727
706
  {(
728
- objGetChainValue(dsCtx.item, local.lastModifiedAtProp!, true) as
707
+ obj.getChainValue(dsCtx.item, local.lastModifiedAtProp!, true) as
729
708
  | DateTime
730
709
  | undefined
731
710
  )?.toFormatString("yyyy-MM-dd HH:mm")}
@@ -737,8 +716,8 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
737
716
  <Show when={local.lastModifiedByProp}>
738
717
  <DataSheetColumn<TItem> key={local.lastModifiedByProp!} header={i18n.t("crudSheet.modifiedBy")} hidden>
739
718
  {(dsCtx) => (
740
- <div class="px-2 py-1 text-center">
741
- {objGetChainValue(dsCtx.item, local.lastModifiedByProp!, true) as string}
719
+ <div class={clsx(pad.default, "text-center")}>
720
+ {obj.getChainValue(dsCtx.item, local.lastModifiedByProp!, true) as string}
742
721
  </div>
743
722
  )}
744
723
  </DataSheetColumn>
@@ -750,14 +729,14 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
750
729
  <Show when={isInDialog && isSelectMode()}>
751
730
  <div class="flex gap-2 border-t p-2">
752
731
  <div class="flex-1" />
753
- <Show when={selectedItems().length > 0}>
732
+ <Show when={selection().length > 0}>
754
733
  <Button size="sm" theme="danger" onClick={handleSelectCancel}>
755
- {local.selectMode === "multiple" ? i18n.t("crudSheet.deselectAll") : i18n.t("crudSheet.deselect")}
734
+ {local.selectionMode === "multiple" ? i18n.t("crudSheet.deselectAll") : i18n.t("crudSheet.deselect")}
756
735
  </Button>
757
736
  </Show>
758
- <Show when={local.selectMode === "multiple"}>
737
+ <Show when={local.selectionMode === "multiple"}>
759
738
  <Button size="sm" theme="primary" onClick={handleSelectConfirm}>
760
- {i18n.t("crudSheet.confirm")} ({selectedItems().length})
739
+ {i18n.t("crudSheet.confirm")} ({selection().length})
761
740
  </Button>
762
741
  </Show>
763
742
  </div>
@@ -767,8 +746,11 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, any>>(
767
746
  );
768
747
  };
769
748
 
770
- export const CrudSheet = CrudSheetBase as unknown as CrudSheetComponent;
771
- CrudSheet.Column = CrudSheetColumn;
772
- CrudSheet.Filter = CrudSheetFilter;
773
- CrudSheet.Tools = CrudSheetTools;
774
- CrudSheet.Header = CrudSheetHeader;
749
+ //#region Export
750
+ export const CrudSheet = Object.assign(CrudSheetBase, {
751
+ Column: CrudSheetColumn,
752
+ Filter: CrudSheetFilter,
753
+ Tools: CrudSheetTools,
754
+ Header: CrudSheetHeader,
755
+ });
756
+ //#endregion