@simplysm/solid 13.0.78 → 13.0.81

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 (206) hide show
  1. package/README.md +23 -217
  2. package/dist/components/data/Pagination.js +2 -2
  3. package/dist/components/data/Pagination.js.map +2 -2
  4. package/dist/components/data/Table.js +2 -2
  5. package/dist/components/data/Table.js.map +2 -2
  6. package/dist/components/data/calendar/Calendar.js +2 -2
  7. package/dist/components/data/calendar/Calendar.js.map +2 -2
  8. package/dist/components/data/kanban/Kanban.js +3 -3
  9. package/dist/components/data/kanban/Kanban.js.map +2 -2
  10. package/dist/components/data/list/ListItem.js +1 -1
  11. package/dist/components/data/list/ListItem.js.map +1 -1
  12. package/dist/components/data/list/ListItem.styles.js +1 -1
  13. package/dist/components/data/list/ListItem.styles.js.map +1 -1
  14. package/dist/components/data/sheet/DataSheet.js +16 -16
  15. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  16. package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
  17. package/dist/components/data/sheet/DataSheet.styles.js +2 -2
  18. package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
  19. package/dist/components/data/sheet/DataSheetConfigDialog.js +5 -5
  20. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -2
  21. package/dist/components/data/sheet/hooks/{useDataSheetExpansion.d.ts → createDataSheetExpansion.d.ts} +4 -4
  22. package/dist/components/data/sheet/hooks/createDataSheetExpansion.d.ts.map +1 -0
  23. package/dist/components/data/sheet/hooks/{useDataSheetExpansion.js → createDataSheetExpansion.js} +3 -3
  24. package/dist/components/data/sheet/hooks/{useDataSheetExpansion.js.map → createDataSheetExpansion.js.map} +2 -2
  25. package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.d.ts → createDataSheetFixedColumns.d.ts} +3 -3
  26. package/dist/components/data/sheet/hooks/createDataSheetFixedColumns.d.ts.map +1 -0
  27. package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.js → createDataSheetFixedColumns.js} +3 -3
  28. package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.js.map → createDataSheetFixedColumns.js.map} +2 -2
  29. package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.d.ts → createDataSheetHeaderCell.d.ts} +3 -3
  30. package/dist/components/data/sheet/hooks/createDataSheetHeaderCell.d.ts.map +1 -0
  31. package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.js → createDataSheetHeaderCell.js} +3 -3
  32. package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.js.map → createDataSheetHeaderCell.js.map} +3 -3
  33. package/dist/components/data/sheet/hooks/{useDataSheetPaging.d.ts → createDataSheetPaging.d.ts} +4 -4
  34. package/dist/components/data/sheet/hooks/createDataSheetPaging.d.ts.map +1 -0
  35. package/dist/components/data/sheet/hooks/{useDataSheetPaging.js → createDataSheetPaging.js} +3 -3
  36. package/dist/components/data/sheet/hooks/{useDataSheetPaging.js.map → createDataSheetPaging.js.map} +2 -2
  37. package/dist/components/data/sheet/hooks/{useDataSheetReorder.d.ts → createDataSheetReorder.d.ts} +3 -3
  38. package/dist/components/data/sheet/hooks/createDataSheetReorder.d.ts.map +1 -0
  39. package/dist/components/data/sheet/hooks/{useDataSheetReorder.js → createDataSheetReorder.js} +3 -3
  40. package/dist/components/data/sheet/hooks/{useDataSheetReorder.js.map → createDataSheetReorder.js.map} +2 -2
  41. package/dist/components/data/sheet/hooks/{useDataSheetSelection.d.ts → createDataSheetSelection.d.ts} +4 -4
  42. package/dist/components/data/sheet/hooks/createDataSheetSelection.d.ts.map +1 -0
  43. package/dist/components/data/sheet/hooks/{useDataSheetSelection.js → createDataSheetSelection.js} +3 -3
  44. package/dist/components/data/sheet/hooks/{useDataSheetSelection.js.map → createDataSheetSelection.js.map} +2 -2
  45. package/dist/components/data/sheet/hooks/{useDataSheetSorting.d.ts → createDataSheetSorting.d.ts} +4 -4
  46. package/dist/components/data/sheet/hooks/createDataSheetSorting.d.ts.map +1 -0
  47. package/dist/components/data/sheet/hooks/{useDataSheetSorting.js → createDataSheetSorting.js} +3 -3
  48. package/dist/components/data/sheet/hooks/{useDataSheetSorting.js.map → createDataSheetSorting.js.map} +2 -2
  49. package/dist/components/disclosure/Dialog.d.ts +2 -2
  50. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  51. package/dist/components/disclosure/Dialog.js +4 -4
  52. package/dist/components/disclosure/Dialog.js.map +2 -2
  53. package/dist/components/disclosure/Tabs.js +3 -3
  54. package/dist/components/disclosure/Tabs.js.map +2 -2
  55. package/dist/components/features/crud-sheet/CrudSheet.js +3 -3
  56. package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
  57. package/dist/components/features/data-select-button/DataSelectButton.d.ts +23 -9
  58. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
  59. package/dist/components/features/data-select-button/DataSelectButton.js +1 -1
  60. package/dist/components/features/data-select-button/DataSelectButton.js.map +1 -1
  61. package/dist/components/features/permission-table/PermissionTable.js +2 -2
  62. package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
  63. package/dist/components/features/shared-data/SharedDataSelect.d.ts +23 -9
  64. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
  65. package/dist/components/features/shared-data/SharedDataSelect.js.map +1 -1
  66. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +25 -10
  67. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
  68. package/dist/components/features/shared-data/SharedDataSelectButton.js.map +1 -1
  69. package/dist/components/features/shared-data/SharedDataSelectList.js +1 -1
  70. package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
  71. package/dist/components/feedback/Progress.d.ts +1 -1
  72. package/dist/components/feedback/Progress.d.ts.map +1 -1
  73. package/dist/components/feedback/Progress.js +3 -3
  74. package/dist/components/feedback/Progress.js.map +2 -2
  75. package/dist/components/form-control/Button.js +2 -2
  76. package/dist/components/form-control/Button.js.map +2 -2
  77. package/dist/components/form-control/DropdownTrigger.styles.js +2 -2
  78. package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
  79. package/dist/components/form-control/ThemeToggle.js +4 -4
  80. package/dist/components/form-control/ThemeToggle.js.map +2 -2
  81. package/dist/components/form-control/checkbox/Checkbox.d.ts +3 -3
  82. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  83. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
  84. package/dist/components/form-control/checkbox/Checkbox.styles.js +3 -3
  85. package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
  86. package/dist/components/form-control/checkbox/CheckboxGroup.js +2 -2
  87. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
  88. package/dist/components/form-control/checkbox/Radio.d.ts +3 -3
  89. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  90. package/dist/components/form-control/checkbox/RadioGroup.js +2 -2
  91. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
  92. package/dist/components/form-control/checkbox/SelectableBase.d.ts +3 -3
  93. package/dist/components/form-control/checkbox/SelectableBase.d.ts.map +1 -1
  94. package/dist/components/form-control/checkbox/SelectableBase.js +10 -10
  95. package/dist/components/form-control/checkbox/SelectableBase.js.map +2 -2
  96. package/dist/components/form-control/color-picker/ColorPicker.js +2 -2
  97. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
  98. package/dist/components/form-control/date-range-picker/DateRangePicker.js +1 -1
  99. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  100. package/dist/components/form-control/editor/EditorToolbar.js +1 -1
  101. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  102. package/dist/components/form-control/editor/RichTextEditor.js +2 -2
  103. package/dist/components/form-control/editor/RichTextEditor.js.map +2 -2
  104. package/dist/components/form-control/field/Field.styles.js +7 -7
  105. package/dist/components/form-control/field/Field.styles.js.map +1 -1
  106. package/dist/components/form-control/field/NumberInput.js +1 -1
  107. package/dist/components/form-control/field/NumberInput.js.map +1 -1
  108. package/dist/components/form-control/field/TextInput.js +1 -1
  109. package/dist/components/form-control/field/TextInput.js.map +1 -1
  110. package/dist/components/form-control/field/Textarea.js +1 -1
  111. package/dist/components/form-control/field/Textarea.js.map +1 -1
  112. package/dist/components/form-control/numpad/Numpad.d.ts +2 -2
  113. package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
  114. package/dist/components/form-control/numpad/Numpad.js +4 -4
  115. package/dist/components/form-control/numpad/Numpad.js.map +2 -2
  116. package/dist/components/form-control/select/Select.js +1 -1
  117. package/dist/components/form-control/select/Select.js.map +2 -2
  118. package/dist/components/form-control/state-preset/StatePreset.js +8 -8
  119. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
  120. package/dist/components/layout/topbar/Topbar.js +3 -3
  121. package/dist/components/layout/topbar/Topbar.js.map +2 -2
  122. package/dist/providers/PwaUpdateProvider.d.ts.map +1 -1
  123. package/dist/providers/PwaUpdateProvider.js +11 -4
  124. package/dist/providers/PwaUpdateProvider.js.map +2 -2
  125. package/dist/styles/control.styles.d.ts +3 -3
  126. package/dist/styles/control.styles.d.ts.map +1 -1
  127. package/dist/styles/control.styles.js +2 -2
  128. package/dist/styles/control.styles.js.map +1 -1
  129. package/docs/data.md +204 -0
  130. package/docs/disclosure.md +139 -0
  131. package/docs/display.md +125 -0
  132. package/docs/features.md +282 -0
  133. package/docs/feedback.md +136 -0
  134. package/docs/form-controls.md +520 -0
  135. package/docs/helpers.md +172 -0
  136. package/docs/hooks.md +146 -0
  137. package/docs/layout.md +94 -0
  138. package/docs/providers.md +179 -0
  139. package/package.json +19 -18
  140. package/src/components/data/Pagination.tsx +2 -2
  141. package/src/components/data/Table.tsx +2 -2
  142. package/src/components/data/calendar/Calendar.tsx +2 -2
  143. package/src/components/data/kanban/Kanban.tsx +2 -2
  144. package/src/components/data/list/ListItem.styles.ts +1 -1
  145. package/src/components/data/list/ListItem.tsx +1 -1
  146. package/src/components/data/sheet/DataSheet.styles.ts +2 -2
  147. package/src/components/data/sheet/DataSheet.tsx +16 -16
  148. package/src/components/data/sheet/DataSheetConfigDialog.tsx +5 -5
  149. package/src/components/data/sheet/hooks/{useDataSheetExpansion.ts → createDataSheetExpansion.ts} +5 -5
  150. package/src/components/data/sheet/hooks/{useDataSheetFixedColumns.ts → createDataSheetFixedColumns.ts} +3 -3
  151. package/src/components/data/sheet/hooks/{useDataSheetHeaderCell.tsx → createDataSheetHeaderCell.tsx} +2 -2
  152. package/src/components/data/sheet/hooks/{useDataSheetPaging.ts → createDataSheetPaging.ts} +5 -5
  153. package/src/components/data/sheet/hooks/{useDataSheetReorder.ts → createDataSheetReorder.ts} +3 -3
  154. package/src/components/data/sheet/hooks/{useDataSheetSelection.ts → createDataSheetSelection.ts} +5 -5
  155. package/src/components/data/sheet/hooks/{useDataSheetSorting.ts → createDataSheetSorting.ts} +5 -5
  156. package/src/components/disclosure/Dialog.tsx +5 -5
  157. package/src/components/disclosure/Tabs.tsx +3 -3
  158. package/src/components/features/crud-sheet/CrudSheet.tsx +3 -3
  159. package/src/components/features/data-select-button/DataSelectButton.tsx +42 -11
  160. package/src/components/features/permission-table/PermissionTable.tsx +2 -2
  161. package/src/components/features/shared-data/SharedDataSelect.tsx +45 -14
  162. package/src/components/features/shared-data/SharedDataSelectButton.tsx +38 -11
  163. package/src/components/features/shared-data/SharedDataSelectList.tsx +1 -1
  164. package/src/components/feedback/Progress.tsx +4 -4
  165. package/src/components/form-control/Button.tsx +2 -2
  166. package/src/components/form-control/DropdownTrigger.styles.ts +2 -2
  167. package/src/components/form-control/ThemeToggle.tsx +4 -4
  168. package/src/components/form-control/checkbox/Checkbox.styles.ts +3 -3
  169. package/src/components/form-control/checkbox/Checkbox.tsx +3 -3
  170. package/src/components/form-control/checkbox/CheckboxGroup.tsx +2 -2
  171. package/src/components/form-control/checkbox/Radio.tsx +3 -3
  172. package/src/components/form-control/checkbox/RadioGroup.tsx +2 -2
  173. package/src/components/form-control/checkbox/SelectableBase.tsx +15 -15
  174. package/src/components/form-control/color-picker/ColorPicker.tsx +2 -2
  175. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +1 -1
  176. package/src/components/form-control/editor/EditorToolbar.tsx +1 -1
  177. package/src/components/form-control/editor/RichTextEditor.tsx +2 -2
  178. package/src/components/form-control/field/Field.styles.ts +7 -7
  179. package/src/components/form-control/field/NumberInput.tsx +1 -1
  180. package/src/components/form-control/field/TextInput.tsx +1 -1
  181. package/src/components/form-control/field/Textarea.tsx +1 -1
  182. package/src/components/form-control/numpad/Numpad.tsx +6 -6
  183. package/src/components/form-control/select/Select.tsx +1 -1
  184. package/src/components/form-control/state-preset/StatePreset.tsx +9 -9
  185. package/src/components/layout/topbar/Topbar.tsx +3 -3
  186. package/src/providers/PwaUpdateProvider.tsx +12 -5
  187. package/src/styles/control.styles.ts +3 -3
  188. package/tests/components/data/sheet/hooks/{useDataSheetExpansion.spec.ts → createDataSheetExpansion.spec.ts} +16 -16
  189. package/tests/components/data/sheet/hooks/{useDataSheetFixedColumns.spec.ts → createDataSheetFixedColumns.spec.ts} +27 -27
  190. package/tests/components/data/sheet/hooks/{useDataSheetPaging.spec.ts → createDataSheetPaging.spec.ts} +16 -16
  191. package/tests/components/data/sheet/hooks/{useDataSheetReorder.spec.ts → createDataSheetReorder.spec.ts} +14 -14
  192. package/tests/components/data/sheet/hooks/{useDataSheetSelection.spec.ts → createDataSheetSelection.spec.ts} +26 -26
  193. package/tests/components/data/sheet/hooks/{useDataSheetSorting.spec.ts → createDataSheetSorting.spec.ts} +13 -13
  194. package/tests/components/disclosure/Dialog.spec.tsx +2 -2
  195. package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +55 -6
  196. package/tests/components/features/shared-data/SharedDataSelect.spec.tsx +40 -0
  197. package/tests/components/form-control/checkbox/Checkbox.spec.tsx +8 -8
  198. package/tests/components/form-control/checkbox/Radio.spec.tsx +9 -9
  199. package/tests/components/form-control/numpad/Numpad.spec.tsx +10 -10
  200. package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts.map +0 -1
  201. package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts.map +0 -1
  202. package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts.map +0 -1
  203. package/dist/components/data/sheet/hooks/useDataSheetPaging.d.ts.map +0 -1
  204. package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts.map +0 -1
  205. package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts.map +0 -1
  206. package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts.map +0 -1
@@ -69,13 +69,13 @@ import {
69
69
  toolbarClass,
70
70
  trRowClass,
71
71
  } from "./DataSheet.styles";
72
- import { useDataSheetSorting } from "./hooks/useDataSheetSorting";
73
- import { useDataSheetPaging } from "./hooks/useDataSheetPaging";
74
- import { useDataSheetExpansion } from "./hooks/useDataSheetExpansion";
75
- import { useDataSheetSelection } from "./hooks/useDataSheetSelection";
76
- import { useDataSheetReorder } from "./hooks/useDataSheetReorder";
77
- import { useDataSheetFixedColumns } from "./hooks/useDataSheetFixedColumns";
78
- import { useDataSheetHeaderCell } from "./hooks/useDataSheetHeaderCell";
72
+ import { createDataSheetSorting } from "./hooks/createDataSheetSorting";
73
+ import { createDataSheetPaging } from "./hooks/createDataSheetPaging";
74
+ import { createDataSheetExpansion } from "./hooks/createDataSheetExpansion";
75
+ import { createDataSheetSelection } from "./hooks/createDataSheetSelection";
76
+ import { createDataSheetReorder } from "./hooks/createDataSheetReorder";
77
+ import { createDataSheetFixedColumns } from "./hooks/createDataSheetFixedColumns";
78
+ import { createDataSheetHeaderCell } from "./hooks/createDataSheetHeaderCell";
79
79
 
80
80
 
81
81
  const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
@@ -221,7 +221,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
221
221
  toggleSort,
222
222
  sortIndex: sortIndex,
223
223
  sortedItems,
224
- } = useDataSheetSorting<TItem>({
224
+ } = createDataSheetSorting<TItem>({
225
225
  sorts: () => local.sorts,
226
226
  onSortsChange: () => local.onSortsChange,
227
227
  items: () => local.items,
@@ -233,7 +233,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
233
233
  }
234
234
 
235
235
  // #region Paging
236
- const { currentPage, setCurrentPage, pageCount, pagedItems } = useDataSheetPaging<TItem>({
236
+ const { currentPage, setCurrentPage, pageCount, pagedItems } = createDataSheetPaging<TItem>({
237
237
  page: () => local.page,
238
238
  onPageChange: () => local.onPageChange,
239
239
  pageSize: () => local.pageSize,
@@ -261,7 +261,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
261
261
  getFixedStyle,
262
262
  isLastFixed,
263
263
  registerColumnRef,
264
- } = useDataSheetFixedColumns<TItem>(
264
+ } = createDataSheetFixedColumns<TItem>(
265
265
  {
266
266
  get itemChildren() { return local.itemChildren; },
267
267
  get selectionMode() { return local.selectionMode; },
@@ -357,7 +357,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
357
357
 
358
358
  // #region Expanding
359
359
  const { expandedItems, flatItems, toggleExpand, isAllExpanded, toggleExpandAll } =
360
- useDataSheetExpansion<TItem>(
360
+ createDataSheetExpansion<TItem>(
361
361
  {
362
362
  get expandedItems() { return local.expandedItems; },
363
363
  get onExpandedItemsChange() { return local.onExpandedItemsChange; },
@@ -380,7 +380,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
380
380
  rangeSelect,
381
381
  lastClickedRow,
382
382
  setLastClickedRow,
383
- } = useDataSheetSelection<TItem>(
383
+ } = createDataSheetSelection<TItem>(
384
384
  {
385
385
  get selectionMode() { return local.selectionMode; },
386
386
  get selection() { return local.selection; },
@@ -403,7 +403,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
403
403
  }
404
404
 
405
405
  // #region Reorder
406
- const { dragState, onReorderPointerDown } = useDataSheetReorder<TItem>(
406
+ const { dragState, onReorderPointerDown } = createDataSheetReorder<TItem>(
407
407
  {
408
408
  get onItemsReorder() { return local.onItemsReorder; },
409
409
  get itemChildren() { return local.itemChildren; },
@@ -466,7 +466,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
466
466
 
467
467
  // #region Sub-render functions
468
468
 
469
- const { renderHeaderCell } = useDataSheetHeaderCell({
469
+ const { renderHeaderCell } = createDataSheetHeaderCell({
470
470
  effectiveColumns,
471
471
  headerRowTops,
472
472
  getFixedStyle,
@@ -584,7 +584,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
584
584
  }
585
585
  >
586
586
  <Checkbox
587
- value={isSelected()}
587
+ checked={isSelected()}
588
588
  disabled={selectable() !== true}
589
589
  inset
590
590
  class={twMerge(
@@ -783,7 +783,7 @@ const DataSheetInner = <TItem,>(props: DataSheetProps<TItem>) => {
783
783
  <Show when={local.selectionMode === "multiple"}>
784
784
  <div class={featureCellClickableClass} onClick={() => toggleSelectAll()}>
785
785
  <Checkbox
786
- value={(() => {
786
+ checked={(() => {
787
787
  const selectableItems = displayItems()
788
788
  .map((flat) => flat.item)
789
789
  .filter((item) => getItemSelectable(item) === true);
@@ -112,7 +112,7 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
112
112
  <DataSheet.Column<EditColumnItem>
113
113
  key="header"
114
114
  header={i18n.t("dataSheetConfigDialog.column")}
115
- class={pad.default}
115
+ class={pad.md}
116
116
  sortable={false}
117
117
  >
118
118
  {(ctx) => ctx.item.headerText}
@@ -121,8 +121,8 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
121
121
  {(ctx) => (
122
122
  <Checkbox
123
123
  inset
124
- value={ctx.item.fixed}
125
- onValueChange={(v) => updateItem(ctx.item.key, "fixed", v)}
124
+ checked={ctx.item.fixed}
125
+ onCheckedChange={(v) => updateItem(ctx.item.key, "fixed", v)}
126
126
  />
127
127
  )}
128
128
  </DataSheet.Column>
@@ -130,8 +130,8 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
130
130
  {(ctx) => (
131
131
  <Checkbox
132
132
  inset
133
- value={ctx.item.hidden}
134
- onValueChange={(v) => updateItem(ctx.item.key, "hidden", v)}
133
+ checked={ctx.item.hidden}
134
+ onCheckedChange={(v) => updateItem(ctx.item.key, "hidden", v)}
135
135
  />
136
136
  )}
137
137
  </DataSheet.Column>
@@ -3,13 +3,13 @@ import type { FlatItem } from "../DataSheet.types";
3
3
  import { collectAllExpandable, flattenTree } from "../DataSheet.utils";
4
4
  import { createControllableSignal } from "../../../../hooks/createControllableSignal";
5
5
 
6
- export interface UseDataSheetExpansionProps<TItem> {
6
+ export interface CreateDataSheetExpansionProps<TItem> {
7
7
  expandedItems?: TItem[];
8
8
  onExpandedItemsChange?: (items: TItem[]) => void;
9
9
  itemChildren?: (item: TItem, index: number) => TItem[] | undefined;
10
10
  }
11
11
 
12
- export interface UseDataSheetExpansionReturn<TItem> {
12
+ export interface CreateDataSheetExpansionReturn<TItem> {
13
13
  expandedItems: Accessor<TItem[]>;
14
14
  setExpandedItems: (newValue: TItem[] | ((prev: TItem[]) => TItem[])) => TItem[];
15
15
  flatItems: Accessor<FlatItem<TItem>[]>;
@@ -18,11 +18,11 @@ export interface UseDataSheetExpansionReturn<TItem> {
18
18
  toggleExpandAll: () => void;
19
19
  }
20
20
 
21
- export function useDataSheetExpansion<TItem>(
22
- props: UseDataSheetExpansionProps<TItem>,
21
+ export function createDataSheetExpansion<TItem>(
22
+ props: CreateDataSheetExpansionProps<TItem>,
23
23
  pagedItems: Accessor<TItem[]>,
24
24
  originalIndexMap: Accessor<Map<TItem, number>>,
25
- ): UseDataSheetExpansionReturn<TItem> {
25
+ ): CreateDataSheetExpansionReturn<TItem> {
26
26
  const [expandedItems, setExpandedItems] = createControllableSignal({
27
27
  value: () => props.expandedItems ?? [],
28
28
  onChange: () => props.onExpandedItemsChange,
@@ -2,14 +2,14 @@ import { createMemo, createSignal, type Accessor } from "solid-js";
2
2
  import { createResizeObserver } from "@solid-primitives/resize-observer";
3
3
  import type { DataSheetColumnDef, DataSheetReorderEvent } from "../DataSheet.types";
4
4
 
5
- export interface UseDataSheetFixedColumnsProps<TItem> {
5
+ export interface CreateDataSheetFixedColumnsProps<TItem> {
6
6
  itemChildren?: (item: TItem, index: number) => TItem[] | undefined;
7
7
  selectionMode?: "single" | "multiple";
8
8
  onItemsReorder?: (event: DataSheetReorderEvent<TItem>) => void;
9
9
  }
10
10
 
11
- export function useDataSheetFixedColumns<TItem>(
12
- props: UseDataSheetFixedColumnsProps<TItem>,
11
+ export function createDataSheetFixedColumns<TItem>(
12
+ props: CreateDataSheetFixedColumnsProps<TItem>,
13
13
  effectiveColumns: Accessor<DataSheetColumnDef<TItem>[]>
14
14
  ) {
15
15
  // Feature column presence checks
@@ -6,7 +6,7 @@ import { Icon } from "../../../display/Icon";
6
6
  import { IconArrowsSort, IconSortAscending, IconSortDescending } from "@tabler/icons-solidjs";
7
7
  import type { HeaderDef, DataSheetColumnDef } from "../DataSheet.types";
8
8
 
9
- export interface UseDataSheetHeaderCellProps<TItem> {
9
+ export interface CreateDataSheetHeaderCellProps<TItem> {
10
10
  effectiveColumns: () => DataSheetColumnDef<TItem>[];
11
11
  headerRowTops: () => number[];
12
12
  getFixedStyle: (colIndex: number) => string | undefined;
@@ -26,7 +26,7 @@ export interface UseDataSheetHeaderCellProps<TItem> {
26
26
  sortIconClass: string;
27
27
  }
28
28
 
29
- export function useDataSheetHeaderCell<TItem>(props: UseDataSheetHeaderCellProps<TItem>) {
29
+ export function createDataSheetHeaderCell<TItem>(props: CreateDataSheetHeaderCellProps<TItem>) {
30
30
  function renderHeaderCell(header: HeaderDef, colIndex: number, rowIndex: number): JSX.Element {
31
31
  const isSortable = () =>
32
32
  header.isLastRow &&
@@ -1,7 +1,7 @@
1
1
  import { createMemo, type Accessor } from "solid-js";
2
2
  import { createControllableSignal } from "../../../../hooks/createControllableSignal";
3
3
 
4
- export interface UseDataSheetPagingOptions<TItem> {
4
+ export interface CreateDataSheetPagingOptions<TItem> {
5
5
  page: Accessor<number | undefined>;
6
6
  onPageChange: Accessor<((page: number) => void) | undefined>;
7
7
  pageSize: Accessor<number | undefined>;
@@ -10,16 +10,16 @@ export interface UseDataSheetPagingOptions<TItem> {
10
10
  sortedItems: Accessor<TItem[]>;
11
11
  }
12
12
 
13
- export interface UseDataSheetPagingReturn<TItem> {
13
+ export interface CreateDataSheetPagingReturn<TItem> {
14
14
  currentPage: Accessor<number>;
15
15
  setCurrentPage: (newValue: number | ((prev: number) => number)) => number;
16
16
  pageCount: Accessor<number>;
17
17
  pagedItems: Accessor<TItem[]>;
18
18
  }
19
19
 
20
- export function useDataSheetPaging<TItem>(
21
- options: UseDataSheetPagingOptions<TItem>,
22
- ): UseDataSheetPagingReturn<TItem> {
20
+ export function createDataSheetPaging<TItem>(
21
+ options: CreateDataSheetPagingOptions<TItem>,
22
+ ): CreateDataSheetPagingReturn<TItem> {
23
23
  const [currentPage, setCurrentPage] = createControllableSignal({
24
24
  value: () => options.page() ?? 1,
25
25
  onChange: () => options.onPageChange(),
@@ -2,13 +2,13 @@ import { createSignal, type Accessor } from "solid-js";
2
2
  import { startPointerDrag } from "../../../../helpers/startPointerDrag";
3
3
  import type { DataSheetReorderEvent, FlatItem } from "../DataSheet.types";
4
4
 
5
- export interface UseDataSheetReorderProps<TItem> {
5
+ export interface CreateDataSheetReorderProps<TItem> {
6
6
  onItemsReorder?: (event: DataSheetReorderEvent<TItem>) => void;
7
7
  itemChildren?: (item: TItem, index: number) => TItem[] | undefined;
8
8
  }
9
9
 
10
- export function useDataSheetReorder<TItem>(
11
- props: UseDataSheetReorderProps<TItem>,
10
+ export function createDataSheetReorder<TItem>(
11
+ props: CreateDataSheetReorderProps<TItem>,
12
12
  displayItems: Accessor<FlatItem<TItem>[]>
13
13
  ) {
14
14
  const [dragState, setDragState] = createSignal<{
@@ -2,14 +2,14 @@ import { createSignal, type Accessor } from "solid-js";
2
2
  import type { FlatItem } from "../DataSheet.types";
3
3
  import { createControllableSignal } from "../../../../hooks/createControllableSignal";
4
4
 
5
- export interface UseDataSheetSelectionProps<TItem> {
5
+ export interface CreateDataSheetSelectionProps<TItem> {
6
6
  selectionMode?: "single" | "multiple";
7
7
  selection?: TItem[];
8
8
  onSelectionChange?: (items: TItem[]) => void;
9
9
  isItemSelectable?: (item: TItem) => boolean | string;
10
10
  }
11
11
 
12
- export interface UseDataSheetSelectionReturn<TItem> {
12
+ export interface CreateDataSheetSelectionReturn<TItem> {
13
13
  selection: Accessor<TItem[]>;
14
14
  setSelection: (newValue: TItem[] | ((prev: TItem[]) => TItem[])) => TItem[];
15
15
  getItemSelectable: (item: TItem) => boolean | string;
@@ -22,10 +22,10 @@ export interface UseDataSheetSelectionReturn<TItem> {
22
22
  setLastClickAction: (value: "select" | "deselect") => void;
23
23
  }
24
24
 
25
- export function useDataSheetSelection<TItem>(
26
- props: UseDataSheetSelectionProps<TItem>,
25
+ export function createDataSheetSelection<TItem>(
26
+ props: CreateDataSheetSelectionProps<TItem>,
27
27
  displayItems: Accessor<FlatItem<TItem>[]>,
28
- ): UseDataSheetSelectionReturn<TItem> {
28
+ ): CreateDataSheetSelectionReturn<TItem> {
29
29
  const [selection, setSelection] = createControllableSignal({
30
30
  value: () => props.selection ?? [],
31
31
  onChange: () => props.onSelectionChange,
@@ -3,14 +3,14 @@ import { createControllableSignal } from "../../../../hooks/createControllableSi
3
3
  import { applySorting } from "../DataSheet.utils";
4
4
  import type { SortingDef } from "../DataSheet.types";
5
5
 
6
- export interface UseDataSheetSortingOptions<TItem> {
6
+ export interface CreateDataSheetSortingOptions<TItem> {
7
7
  sorts: Accessor<SortingDef[] | undefined>;
8
8
  onSortsChange: Accessor<((sorts: SortingDef[]) => void) | undefined>;
9
9
  items: Accessor<TItem[] | undefined>;
10
10
  autoSort: Accessor<boolean | undefined>;
11
11
  }
12
12
 
13
- export interface UseDataSheetSortingReturn<TItem> {
13
+ export interface CreateDataSheetSortingReturn<TItem> {
14
14
  sorts: Accessor<SortingDef[]>;
15
15
  setSorts: (newValue: SortingDef[] | ((prev: SortingDef[]) => SortingDef[])) => SortingDef[];
16
16
  toggleSort: (key: string, multiple: boolean) => void;
@@ -18,9 +18,9 @@ export interface UseDataSheetSortingReturn<TItem> {
18
18
  sortedItems: Accessor<TItem[]>;
19
19
  }
20
20
 
21
- export function useDataSheetSorting<TItem>(
22
- options: UseDataSheetSortingOptions<TItem>,
23
- ): UseDataSheetSortingReturn<TItem> {
21
+ export function createDataSheetSorting<TItem>(
22
+ options: CreateDataSheetSortingOptions<TItem>,
23
+ ): CreateDataSheetSortingReturn<TItem> {
24
24
  const [sorts, setSorts] = createControllableSignal({
25
25
  value: () => options.sorts() ?? [],
26
26
  onChange: () => options.onSortsChange(),
@@ -46,7 +46,7 @@ export interface DialogShowOptions {
46
46
  /** Dialog header */
47
47
  header?: JSX.Element;
48
48
  /** Show close button */
49
- closable?: boolean;
49
+ withCloseButton?: boolean;
50
50
  /** Close on backdrop click */
51
51
  closeOnInteractOutside?: boolean;
52
52
  /** Close on ESC key */
@@ -112,7 +112,7 @@ export interface DialogProps {
112
112
  /** Callback when open state changes */
113
113
  onOpenChange?: (open: boolean) => void;
114
114
  /** Show close button (default: true) */
115
- closable?: boolean;
115
+ withCloseButton?: boolean;
116
116
  /** Close on backdrop click */
117
117
  closeOnInteractOutside?: boolean;
118
118
  /** Close on Escape key (default: true) */
@@ -210,7 +210,7 @@ const DialogInner: ParentComponent<DialogProps> = (props) => {
210
210
  const [local] = splitProps(props, [
211
211
  "open",
212
212
  "onOpenChange",
213
- "closable",
213
+ "withCloseButton",
214
214
  "closeOnInteractOutside",
215
215
  "closeOnEscape",
216
216
  "resizable",
@@ -575,7 +575,7 @@ const DialogInner: ParentComponent<DialogProps> = (props) => {
575
575
  {header()!.children}
576
576
  </h5>
577
577
  <Show when={action()}>{action()!.children}</Show>
578
- <Show when={local.closable ?? true}>
578
+ <Show when={local.withCloseButton ?? true}>
579
579
  <Button
580
580
  data-dialog-close
581
581
  size={"sm"}
@@ -726,7 +726,7 @@ export const DialogProvider: ParentComponent<DialogProviderProps> = (props) => {
726
726
  }
727
727
  }}
728
728
  onCloseComplete={() => removeEntry(entry.id)}
729
- closable={entry.options.closable}
729
+ withCloseButton={entry.options.withCloseButton}
730
730
  closeOnInteractOutside={entry.options.closeOnInteractOutside}
731
731
  closeOnEscape={entry.options.closeOnEscape}
732
732
  resizable={entry.options.resizable}
@@ -32,14 +32,14 @@ function TabsTabInner(props: TabsTabProps) {
32
32
  const isSelected = () => ctx.value() === props.value;
33
33
 
34
34
  const tabSizeClasses: Record<ComponentSize, string> = {
35
- default: "px-3 py-1.5 text-sm",
35
+ md: "px-3 py-1.5 text-sm",
36
36
  xs: clsx(pad.sm, "text-xs"),
37
37
  sm: "px-2.5 py-1 text-sm",
38
38
  lg: "px-4 py-2.5 text-base",
39
39
  xl: "px-5 py-3 text-lg",
40
40
  };
41
41
 
42
- const sizeClasses = () => tabSizeClasses[ctx.size() ?? "default"];
42
+ const sizeClasses = () => tabSizeClasses[ctx.size() ?? "md"];
43
43
 
44
44
  const stateClass = () =>
45
45
  isSelected()
@@ -123,7 +123,7 @@ const TabsInner: ParentComponent<TabsProps> = (props) => {
123
123
 
124
124
  return (
125
125
  <TabsContext.Provider value={contextValue}>
126
- <div {...rest} role="tablist" class={twMerge(clsx("inline-flex items-center", gap.default, "border-b", border.default), local.class)} style={local.style}>
126
+ <div {...rest} role="tablist" class={twMerge(clsx("inline-flex items-center", gap.md, "border-b", border.default), local.class)} style={local.style}>
127
127
  {local.children}
128
128
  </div>
129
129
  </TabsContext.Provider>
@@ -677,7 +677,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, unknown>>(
677
677
  ) {
678
678
  return (
679
679
  <Link
680
- class={clsx("flex", gap.default)}
680
+ class={clsx("flex", gap.md)}
681
681
  onClick={(e) => {
682
682
  e.preventDefault();
683
683
  e.stopPropagation();
@@ -702,7 +702,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, unknown>>(
702
702
  <Show when={local.lastModifiedAtProp}>
703
703
  <DataSheetColumn<TItem> key={local.lastModifiedAtProp!} header={i18n.t("crudSheet.lastModified")} hidden>
704
704
  {(dsCtx) => (
705
- <div class={clsx(pad.default, "text-center")}>
705
+ <div class={clsx(pad.md, "text-center")}>
706
706
  {(
707
707
  obj.getChainValue(dsCtx.item, local.lastModifiedAtProp!, true) as
708
708
  | DateTime
@@ -716,7 +716,7 @@ const CrudSheetBase = <TItem, TFilter extends Record<string, unknown>>(
716
716
  <Show when={local.lastModifiedByProp}>
717
717
  <DataSheetColumn<TItem> key={local.lastModifiedByProp!} header={i18n.t("crudSheet.modifiedBy")} hidden>
718
718
  {(dsCtx) => (
719
- <div class={clsx(pad.default, "text-center")}>
719
+ <div class={clsx(pad.md, "text-center")}>
720
720
  {obj.getChainValue(dsCtx.item, local.lastModifiedByProp!, true) as string}
721
721
  </div>
722
722
  )}
@@ -49,16 +49,12 @@ export type DialogPropsField<P, TKey = string | number> =
49
49
  ? { dialogProps?: UserDialogProps<P, TKey> }
50
50
  : { dialogProps: UserDialogProps<P, TKey> };
51
51
 
52
- /** DataSelectButton Props */
53
- export type DataSelectButtonProps<
52
+ /** Common props shared between single and multiple modes */
53
+ interface DataSelectButtonCommonProps<
54
54
  TItem,
55
55
  TKey = string | number,
56
56
  TDialogProps extends SelectDialogBaseProps<TKey> = SelectDialogBaseProps<TKey>,
57
- > = {
58
- /** Currently selected key(s) (single or multiple) */
59
- value?: TKey | TKey[];
60
- /** Value change callback */
61
- onValueChange?: (value: TKey | TKey[] | undefined) => void;
57
+ > {
62
58
  /** Function to load items by key */
63
59
  load: (keys: TKey[]) => TItem[] | Promise<TItem[]>;
64
60
  /** Item rendering function */
@@ -67,8 +63,6 @@ export type DataSelectButtonProps<
67
63
  dialog: Component<TDialogProps>;
68
64
  /** Dialog options (header, size, etc.) */
69
65
  dialogOptions?: DialogShowOptions;
70
- /** Multiple selection mode */
71
- multiple?: boolean;
72
66
  /** Required input */
73
67
  required?: boolean;
74
68
  /** Disabled */
@@ -81,7 +75,44 @@ export type DataSelectButtonProps<
81
75
  validate?: (value: unknown) => string | undefined;
82
76
  /** lazyValidation: show error only after focus is lost */
83
77
  lazyValidation?: boolean;
84
- } & DialogPropsField<TDialogProps, TKey>;
78
+ }
79
+
80
+ /** Single select props */
81
+ interface DataSelectButtonSingleProps<
82
+ TItem,
83
+ TKey = string | number,
84
+ TDialogProps extends SelectDialogBaseProps<TKey> = SelectDialogBaseProps<TKey>,
85
+ > extends DataSelectButtonCommonProps<TItem, TKey, TDialogProps> {
86
+ /** Single select mode */
87
+ multiple?: false;
88
+ /** Currently selected key */
89
+ value?: TKey;
90
+ /** Value change callback */
91
+ onValueChange?: (value: TKey | undefined) => void;
92
+ }
93
+
94
+ /** Multiple select props */
95
+ interface DataSelectButtonMultipleProps<
96
+ TItem,
97
+ TKey = string | number,
98
+ TDialogProps extends SelectDialogBaseProps<TKey> = SelectDialogBaseProps<TKey>,
99
+ > extends DataSelectButtonCommonProps<TItem, TKey, TDialogProps> {
100
+ /** Multiple select mode */
101
+ multiple: true;
102
+ /** Currently selected keys */
103
+ value?: TKey[];
104
+ /** Value change callback */
105
+ onValueChange?: (value: TKey[]) => void;
106
+ }
107
+
108
+ /** DataSelectButton Props */
109
+ export type DataSelectButtonProps<
110
+ TItem,
111
+ TKey = string | number,
112
+ TDialogProps extends SelectDialogBaseProps<TKey> = SelectDialogBaseProps<TKey>,
113
+ > =
114
+ | (DataSelectButtonSingleProps<TItem, TKey, TDialogProps> & DialogPropsField<TDialogProps, TKey>)
115
+ | (DataSelectButtonMultipleProps<TItem, TKey, TDialogProps> & DialogPropsField<TDialogProps, TKey>);
85
116
 
86
117
  const actionButtonClass = clsx(
87
118
  "flex-shrink-0",
@@ -101,7 +132,7 @@ function getTriggerContainerClass(options: {
101
132
  }): string {
102
133
  return twMerge(
103
134
  triggerBaseClass,
104
- triggerSizeClasses[options.size ?? "default"],
135
+ triggerSizeClasses[options.size ?? "md"],
105
136
  options.disabled && triggerDisabledClass,
106
137
  options.inset && triggerInsetClass,
107
138
  options.class,
@@ -294,8 +294,8 @@ export const PermissionTable: Component<PermissionTableProps> = (props) => {
294
294
  return (
295
295
  <Show when={hasPermInTree(item, perm)}>
296
296
  <Checkbox
297
- value={isGroupPermChecked(item, perm, currentValue())}
298
- onValueChange={(checked) => handlePermChange(item, perm, checked)}
297
+ checked={isGroupPermChecked(item, perm, currentValue())}
298
+ onCheckedChange={(checked) => handlePermChange(item, perm, checked)}
299
299
  disabled={local.disabled || isPermDisabled(item, perm, currentValue())}
300
300
  inset
301
301
  />
@@ -37,20 +37,14 @@ const Action: Component<ActionProps> = (props) => {
37
37
  return ActionSlot(props);
38
38
  };
39
39
 
40
- /** SharedDataSelect Props */
41
- export type SharedDataSelectProps<
40
+ /** Common props shared between single and multiple modes */
41
+ interface SharedDataSelectCommonProps<
42
42
  TItem,
43
- TKey extends string | number = string | number,
43
+ _TKey extends string | number = string | number,
44
44
  TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
45
- > = {
45
+ > {
46
46
  /** Shared data accessor */
47
47
  data: SharedDataAccessor<TItem>;
48
- /** Currently selected key value (translated to item internally) */
49
- value?: TKey | TKey[];
50
- /** Value change callback (receives key, not item) */
51
- onValueChange?: (value: TKey | TKey[] | undefined) => void;
52
- /** Multiple selection mode */
53
- multiple?: boolean;
54
48
  /** Required input */
55
49
  required?: boolean;
56
50
  /** Disabled */
@@ -67,7 +61,44 @@ export type SharedDataSelectProps<
67
61
  dialogOptions?: DialogShowOptions;
68
62
  /** Compound children: ItemTemplate, Action */
69
63
  children: JSX.Element;
70
- } & DialogPropsField<TDialogProps>;
64
+ }
65
+
66
+ /** Single select props */
67
+ interface SharedDataSelectSingleProps<
68
+ TItem,
69
+ TKey extends string | number = string | number,
70
+ TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
71
+ > extends SharedDataSelectCommonProps<TItem, TKey, TDialogProps> {
72
+ /** Single select mode */
73
+ multiple?: false;
74
+ /** Currently selected key value */
75
+ value?: TKey;
76
+ /** Value change callback */
77
+ onValueChange?: (value: TKey | undefined) => void;
78
+ }
79
+
80
+ /** Multiple select props */
81
+ interface SharedDataSelectMultipleProps<
82
+ TItem,
83
+ TKey extends string | number = string | number,
84
+ TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
85
+ > extends SharedDataSelectCommonProps<TItem, TKey, TDialogProps> {
86
+ /** Multiple select mode */
87
+ multiple: true;
88
+ /** Currently selected key values */
89
+ value?: TKey[];
90
+ /** Value change callback */
91
+ onValueChange?: (value: TKey[]) => void;
92
+ }
93
+
94
+ /** SharedDataSelect Props */
95
+ export type SharedDataSelectProps<
96
+ TItem,
97
+ TKey extends string | number = string | number,
98
+ TDialogProps extends SelectDialogBaseProps = SelectDialogBaseProps,
99
+ > =
100
+ | (SharedDataSelectSingleProps<TItem, TKey, TDialogProps> & DialogPropsField<TDialogProps>)
101
+ | (SharedDataSelectMultipleProps<TItem, TKey, TDialogProps> & DialogPropsField<TDialogProps>);
71
102
 
72
103
  const SharedDataSelectBase = <
73
104
  TItem,
@@ -146,9 +177,9 @@ const SharedDataSelectBase = <
146
177
  if (result) {
147
178
  const newKeys = result.selectedKeys;
148
179
  if (rest.multiple) {
149
- rest.onValueChange?.(newKeys);
180
+ (rest.onValueChange as ((value: TKey[]) => void) | undefined)?.(newKeys);
150
181
  } else {
151
- rest.onValueChange?.(newKeys.length > 0 ? newKeys[0] : undefined);
182
+ (rest.onValueChange as ((value: TKey | undefined) => void) | undefined)?.(newKeys.length > 0 ? newKeys[0] : undefined);
152
183
  }
153
184
  }
154
185
  };
@@ -160,7 +191,7 @@ const SharedDataSelectBase = <
160
191
  get onValueChange() {
161
192
  if (!rest.onValueChange) return undefined;
162
193
  return (item: TItem | TItem[] | undefined) => {
163
- rest.onValueChange!(itemToKey(item));
194
+ (rest.onValueChange as (value: any) => void)(itemToKey(item));
164
195
  };
165
196
  },
166
197
  get items() {