@lavalogic/scoria 0.36.0 → 0.37.0

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 (550) hide show
  1. package/dist/Components/AccordionGroup.svelte +6 -2
  2. package/dist/Components/AccordionGroupButton.svelte +78 -78
  3. package/dist/Components/AccordionGroupButtonProps.d.ts +27 -8
  4. package/dist/Components/AccordionGroupProps.d.ts +10 -2
  5. package/dist/Components/Action.svelte +31 -33
  6. package/dist/Components/ActionProps.d.ts +23 -3
  7. package/dist/Components/AlertModal.svelte +90 -39
  8. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +1126 -0
  9. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte.d.ts +4 -0
  10. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.d.ts +92 -0
  11. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.js +12 -0
  12. package/dist/Components/Base/BaseModal.svelte +172 -0
  13. package/dist/Components/Base/BaseModal.svelte.d.ts +4 -0
  14. package/dist/Components/Base/BaseModalProps.d.ts +73 -0
  15. package/dist/Components/Base/BaseModalProps.js +1 -0
  16. package/dist/Components/Base/ContextWrapper.svelte +37 -15
  17. package/dist/Components/Base/ContextWrapper.svelte.d.ts +24 -5
  18. package/dist/Components/Base/ContextWrapperProps.d.ts +22 -0
  19. package/dist/Components/Base/Pagination.svelte +70 -62
  20. package/dist/Components/Base/Pagination.svelte.d.ts +12 -2
  21. package/dist/Components/Base/PaginationProps.d.ts +60 -3
  22. package/dist/Components/Base/Snippets.svelte +7 -0
  23. package/dist/Components/Base/Snippets.svelte.d.ts +5 -1
  24. package/dist/Components/BigRadioSet.svelte +18 -9
  25. package/dist/Components/BigRadioSetProps.d.ts +17 -1
  26. package/dist/Components/Bubble.svelte +67 -34
  27. package/dist/Components/Bubble.svelte.d.ts +23 -2
  28. package/dist/Components/BubbleProps.d.ts +55 -4
  29. package/dist/Components/Button.svelte +50 -38
  30. package/dist/Components/ButtonProps.d.ts +66 -1
  31. package/dist/Components/Checkbox.svelte +57 -29
  32. package/dist/Components/Checkbox.svelte.d.ts +1 -12
  33. package/dist/Components/CheckboxProps.d.ts +27 -0
  34. package/dist/Components/CheckboxProps.js +1 -0
  35. package/dist/Components/CollapsibleCard.svelte +53 -22
  36. package/dist/Components/CollapsibleCardProps.d.ts +22 -1
  37. package/dist/Components/Contexts/ContextMenu.svelte +53 -32
  38. package/dist/Components/Contexts/ContextMenu.svelte.d.ts +26 -0
  39. package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -7
  40. package/dist/Components/Contexts/ContextMenuDivider.svelte.d.ts +9 -0
  41. package/dist/Components/Contexts/ContextMenuOption.svelte +27 -18
  42. package/dist/Components/Contexts/ContextMenuOption.svelte.d.ts +12 -1
  43. package/dist/Components/Contexts/ContextMenuOptionProps.d.ts +34 -2
  44. package/dist/Components/Contexts/Toast.svelte +28 -4
  45. package/dist/Components/Contexts/Toast.svelte.d.ts +14 -0
  46. package/dist/Components/Contexts/ToastContainer.svelte +30 -11
  47. package/dist/Components/Contexts/ToastContainer.svelte.d.ts +14 -0
  48. package/dist/Components/Contexts/ToastProps.d.ts +14 -1
  49. package/dist/Components/Contexts/Tooltip.svelte +21 -10
  50. package/dist/Components/Contexts/Tooltip.svelte.d.ts +10 -0
  51. package/dist/Components/DataMatrixIcon.svelte +82 -11
  52. package/dist/Components/DataMatrixIconProps.d.ts +73 -1
  53. package/dist/Components/DateInput.svelte +64 -29
  54. package/dist/Components/DateInput.svelte.d.ts +1 -1
  55. package/dist/Components/DateOnlyInputProps.d.ts +31 -5
  56. package/dist/Components/DatePicker.svelte +96 -108
  57. package/dist/Components/DatePickerProps.d.ts +18 -1
  58. package/dist/Components/DateTimeInputProps.d.ts +30 -5
  59. package/dist/Components/DesktopModal.svelte +14 -43
  60. package/dist/Components/DesktopModalProps.d.ts +5 -4
  61. package/dist/Components/Dial.svelte +103 -41
  62. package/dist/Components/DialProps.d.ts +74 -2
  63. package/dist/Components/DimensionInput.svelte +50 -64
  64. package/dist/Components/DimensionInput.svelte.d.ts +1 -1
  65. package/dist/Components/DimensionInputProps.d.ts +39 -4
  66. package/dist/Components/DragMenu/DragMenuHolder.svelte +41 -29
  67. package/dist/Components/DragMenu/DragMenuHolderProps.d.ts +30 -1
  68. package/dist/Components/DragMenu/DraggableCard.svelte +44 -8
  69. package/dist/Components/DragMenu/DraggableCardProps.d.ts +27 -1
  70. package/dist/Components/FileCard.svelte +6 -2
  71. package/dist/Components/FileCardProps.d.ts +17 -1
  72. package/dist/Components/FileUpload.svelte +82 -42
  73. package/dist/Components/FileUploadProps.d.ts +34 -4
  74. package/dist/Components/GridInput.svelte +27 -17
  75. package/dist/Components/GridInput.svelte.d.ts +5 -5
  76. package/dist/Components/GridInputProps.d.ts +4 -1
  77. package/dist/Components/GridInputSet.svelte +12 -5
  78. package/dist/Components/GridInputSet.svelte.d.ts +5 -5
  79. package/dist/Components/GridInputSetProps.d.ts +4 -2
  80. package/dist/Components/HorizontalTabGroup.svelte +13 -11
  81. package/dist/Components/HorizontalTabGroupButton.svelte +16 -68
  82. package/dist/Components/HorizontalTabGroupProps.d.ts +15 -2
  83. package/dist/Components/Icon.svelte +62 -21
  84. package/dist/Components/IconProps.d.ts +54 -6
  85. package/dist/Components/Icons.d.ts +8 -0
  86. package/dist/Components/Icons.js +234 -215
  87. package/dist/Components/LoadingAnimation.svelte +18 -18
  88. package/dist/Components/LoadingAnimation.svelte.d.ts +1 -3
  89. package/dist/Components/LoadingAnimationProps.d.ts +16 -0
  90. package/dist/Components/LoadingAnimationProps.js +1 -0
  91. package/dist/Components/LoadingModal.svelte +18 -20
  92. package/dist/Components/LoadingModal.svelte.d.ts +1 -4
  93. package/dist/Components/LoadingModalProps.d.ts +17 -0
  94. package/dist/Components/LoadingModalProps.js +1 -0
  95. package/dist/Components/LoadingOverlay.svelte +11 -13
  96. package/dist/Components/LoadingOverlay.svelte.d.ts +1 -5
  97. package/dist/Components/LoadingOverlayProps.d.ts +28 -0
  98. package/dist/Components/LoadingOverlayProps.js +1 -0
  99. package/dist/Components/Modal.svelte +77 -82
  100. package/dist/Components/Modal.svelte.d.ts +1 -25
  101. package/dist/Components/ModalProps.d.ts +65 -0
  102. package/dist/Components/ModalProps.js +1 -0
  103. package/dist/Components/MultiSelect.svelte +88 -76
  104. package/dist/Components/MultiSelectCommonProps.d.ts +33 -4
  105. package/dist/Components/MultiSelectPropsAsObject.d.ts +5 -0
  106. package/dist/Components/MultiSelectPropsAsPrimitive.d.ts +6 -0
  107. package/dist/Components/Nav/CallbackButtonWithIcon.d.ts +22 -1
  108. package/dist/Components/Nav/Nav.svelte +35 -30
  109. package/dist/Components/Nav/Nav.svelte.d.ts +23 -2
  110. package/dist/Components/Nav/NavProps.d.ts +50 -3
  111. package/dist/Components/Nav/NavServiceMenuList.svelte +12 -3
  112. package/dist/Components/Nav/NavServiceMenuListProps.d.ts +25 -1
  113. package/dist/Components/Nav/NavTab.svelte +19 -48
  114. package/dist/Components/Nav/NavTab.svelte.d.ts +23 -2
  115. package/dist/Components/Nav/NavTabProps.d.ts +16 -2
  116. package/dist/Components/Nav/ServiceMenuItem.svelte +29 -20
  117. package/dist/Components/Nav/ServicesNav.svelte +60 -34
  118. package/dist/Components/Nav/ServicesNav.svelte.d.ts +23 -2
  119. package/dist/Components/Nav/ServicesNavProps.d.ts +20 -4
  120. package/dist/Components/Nav/SideMenuItemProps.d.ts +16 -0
  121. package/dist/Components/NumberInput.svelte +37 -27
  122. package/dist/Components/NumberInputProps.d.ts +37 -0
  123. package/dist/Components/PageHeading.svelte +2 -13
  124. package/dist/Components/PageHeading.svelte.d.ts +1 -6
  125. package/dist/Components/PageHeadingProps.d.ts +23 -0
  126. package/dist/Components/PageHeadingProps.js +1 -0
  127. package/dist/Components/PasswordInput.svelte +27 -15
  128. package/dist/Components/PasswordInput.svelte.d.ts +2 -2
  129. package/dist/Components/PasswordInputProps.d.ts +21 -0
  130. package/dist/Components/PasswordInputProps.js +1 -0
  131. package/dist/Components/Portal.svelte +14 -3
  132. package/dist/Components/PortalProps.d.ts +20 -1
  133. package/dist/Components/ProgressBubble.svelte +98 -53
  134. package/dist/Components/ProgressBubbleProps.d.ts +23 -2
  135. package/dist/Components/QuerySelect.svelte +103 -159
  136. package/dist/Components/QuerySelect.svelte.d.ts +2 -29
  137. package/dist/Components/QuerySelectProps.d.ts +66 -0
  138. package/dist/Components/QuerySelectProps.js +1 -0
  139. package/dist/Components/SingleSelect.svelte +86 -108
  140. package/dist/Components/SingleSelectCommonProps.d.ts +43 -5
  141. package/dist/Components/SingleSelectPropsAsObject.d.ts +7 -0
  142. package/dist/Components/SingleSelectPropsAsPrimitive.d.ts +8 -0
  143. package/dist/Components/StepButton.svelte +19 -69
  144. package/dist/Components/StepForm.svelte +52 -52
  145. package/dist/Components/StepFormProps.d.ts +16 -2
  146. package/dist/Components/Switch.svelte +68 -31
  147. package/dist/Components/Switch.svelte.d.ts +1 -1
  148. package/dist/Components/SwitchProps.d.ts +46 -0
  149. package/dist/Components/Table/Body/HeightData.d.ts +1 -6
  150. package/dist/Components/Table/Body/HeightData.js +8 -0
  151. package/dist/Components/Table/Body/QuickSearchCell.svelte +106 -50
  152. package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -11
  153. package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +6 -0
  154. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +43 -9
  155. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte.d.ts +24 -2
  156. package/dist/Components/Table/Body/Rows/ColumnHighlightProps.d.ts +3 -0
  157. package/dist/Components/Table/Body/Rows/ColumnList.svelte +15 -5
  158. package/dist/Components/Table/Body/Rows/ColumnList.svelte.d.ts +12 -11
  159. package/dist/Components/Table/Body/Rows/ColumnListProps.d.ts +1 -0
  160. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +424 -91
  161. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte.d.ts +12 -11
  162. package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +5 -0
  163. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +43 -13
  164. package/dist/Components/Table/Body/Rows/Columns/AccessorComponentProps.d.ts +12 -0
  165. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +50 -38
  166. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte.d.ts +12 -12
  167. package/dist/Components/Table/Body/Rows/Columns/ActionsColumn.d.ts +9 -0
  168. package/dist/Components/Table/Body/Rows/Columns/ActionsTableCell.d.ts +5 -0
  169. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +61 -26
  170. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte.d.ts +14 -13
  171. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.d.ts +12 -0
  172. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.js +1 -0
  173. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +36 -16
  174. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +47 -24
  175. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte.d.ts +12 -11
  176. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCellProps.d.ts +7 -0
  177. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +54 -20
  178. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte.d.ts +17 -11
  179. package/dist/Components/Table/Body/Rows/Columns/RowSelectionColumn.d.ts +8 -0
  180. package/dist/Components/Table/Body/Rows/Columns/RowSelectionTableCell.d.ts +5 -0
  181. package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +11 -0
  182. package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +11 -0
  183. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +55 -40
  184. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +11 -0
  185. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +38 -27
  186. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte.d.ts +13 -18
  187. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.d.ts +17 -0
  188. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.js +1 -0
  189. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +22 -7
  190. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +1 -7
  191. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.d.ts +16 -0
  192. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.js +1 -0
  193. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +61 -31
  194. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte.d.ts +12 -11
  195. package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +9 -0
  196. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +123 -244
  197. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte.d.ts +20 -12
  198. package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +8 -0
  199. package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +9 -0
  200. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +126 -189
  201. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte.d.ts +12 -11
  202. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelectProps.d.ts +8 -0
  203. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +31 -19
  204. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +2 -5
  205. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.d.ts +14 -0
  206. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.js +1 -0
  207. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +125 -187
  208. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +13 -12
  209. package/dist/Components/Table/Body/Rows/Columns/TableSelectProps.d.ts +6 -0
  210. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +119 -270
  211. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte.d.ts +12 -11
  212. package/dist/Components/Table/Body/Rows/Columns/TableTextInputProps.d.ts +6 -0
  213. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +23 -13
  214. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.d.ts +104 -0
  215. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.js +215 -0
  216. package/dist/Components/Table/Body/Rows/TableRow.svelte +200 -132
  217. package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
  218. package/dist/Components/Table/Body/Rows/TableRowProps.d.ts +11 -2
  219. package/dist/Components/Table/Body/TableBody.svelte +170 -53
  220. package/dist/Components/Table/Body/TableBody.svelte.d.ts +15 -22
  221. package/dist/Components/Table/Body/TableBodyProps.d.ts +9 -7
  222. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +18 -12
  223. package/dist/Components/Table/ColumnFactory.svelte.d.ts +43 -0
  224. package/dist/Components/Table/ColumnFactory.svelte.js +339 -0
  225. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +5 -3
  226. package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
  227. package/dist/Components/Table/Headers/SelectAllHeader.svelte +5 -3
  228. package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
  229. package/dist/Components/Table/Headers/TableHead.svelte +340 -200
  230. package/dist/Components/Table/Headers/TableHead.svelte.d.ts +13 -16
  231. package/dist/Components/Table/Headers/TableHeadProps.d.ts +10 -0
  232. package/dist/Components/Table/Headers/TableHeadProps.js +1 -0
  233. package/dist/Components/Table/Misc/ColumnPanel.svelte +108 -50
  234. package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
  235. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +20 -7
  236. package/dist/Components/Table/Misc/ColumnPanelModal.svelte.d.ts +12 -11
  237. package/dist/Components/Table/Misc/ColumnPanelModalProps.d.ts +5 -0
  238. package/dist/Components/Table/Misc/FilterInput.svelte +30 -41
  239. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
  240. package/dist/Components/Table/Misc/FilterPanel.svelte +387 -29
  241. package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
  242. package/dist/Components/Table/Misc/FilterPanelModal.svelte +4 -51
  243. package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
  244. package/dist/Components/Table/Misc/SidePanel.svelte +12 -9
  245. package/dist/Components/Table/Misc/SidePanel.svelte.d.ts +1 -7
  246. package/dist/Components/Table/Misc/SidePanelProps.d.ts +17 -0
  247. package/dist/Components/Table/Misc/SidePanelProps.js +1 -0
  248. package/dist/Components/Table/Misc/TableFooter.svelte +44 -35
  249. package/dist/Components/Table/Misc/TableFooter.svelte.d.ts +13 -14
  250. package/dist/Components/Table/Misc/TableFooterProps.d.ts +8 -0
  251. package/dist/Components/Table/Misc/TableFooterProps.js +1 -0
  252. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +17 -48
  253. package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
  254. package/dist/Components/Table/Misc/TableSidebar.svelte +28 -47
  255. package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
  256. package/dist/Components/Table/Misc/ToolboxPanel.svelte +121 -55
  257. package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
  258. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +31 -24
  259. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte.d.ts +12 -11
  260. package/dist/Components/Table/Misc/ToolboxPanelModalProps.d.ts +5 -0
  261. package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
  262. package/dist/Components/Table/Misc/numberDateFilterTypes.js +8 -3
  263. package/dist/Components/Table/Misc/stringFilterTypes.d.ts +6 -4
  264. package/dist/Components/Table/Misc/stringFilterTypes.js +7 -3
  265. package/dist/Components/Table/NestedTable.svelte +85 -41
  266. package/dist/Components/Table/NestedTable.svelte.d.ts +2 -10
  267. package/dist/Components/Table/NestedTableProps.d.ts +25 -0
  268. package/dist/Components/Table/NestedTableProps.js +1 -0
  269. package/dist/Components/Table/SubApis.svelte.d.ts +23 -0
  270. package/dist/Components/Table/SubApis.svelte.js +359 -0
  271. package/dist/Components/Table/Table.svelte +347 -172
  272. package/dist/Components/Table/Table.svelte.d.ts +24 -1
  273. package/dist/Components/Table/TableHelpers.svelte.d.ts +58 -0
  274. package/dist/Components/Table/TableHelpers.svelte.js +88 -0
  275. package/dist/Components/Table/Types/Columns/Column.d.ts +10 -0
  276. package/dist/Components/Table/Types/Columns/ColumnPinningState.d.ts +12 -0
  277. package/dist/Components/Table/Types/Columns/ColumnSizingState.d.ts +8 -0
  278. package/dist/Components/Table/Types/Columns/ColumnType.d.ts +17 -0
  279. package/dist/Components/Table/Types/Columns/ColumnType.js +18 -1
  280. package/dist/Components/Table/Types/Columns/DateColumn.d.ts +6 -0
  281. package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -0
  282. package/dist/Components/Table/Types/Columns/Definitions/AccessorFn.d.ts +13 -0
  283. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +28 -3
  284. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +15 -0
  285. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.d.ts +10 -0
  286. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.js +11 -1
  287. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +23 -2
  288. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +9 -2
  289. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +21 -2
  290. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +8 -0
  291. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +29 -3
  292. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +11 -0
  293. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +23 -0
  294. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +8 -0
  295. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +31 -0
  296. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +17 -3
  297. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +21 -2
  298. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +7 -0
  299. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +29 -1
  300. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +17 -3
  301. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +122 -11
  302. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +77 -11
  303. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +9 -0
  304. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +41 -1
  305. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +16 -0
  306. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +19 -1
  307. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +12 -1
  308. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +11 -0
  309. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +6 -3
  310. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +19 -0
  311. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +25 -1
  312. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +26 -0
  313. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +20 -5
  314. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +43 -7
  315. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +18 -3
  316. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +19 -5
  317. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +16 -5
  318. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +14 -0
  319. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +34 -2
  320. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +30 -7
  321. package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +17 -0
  322. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +10 -0
  323. package/dist/Components/Table/Types/Columns/DisplayType.d.ts +13 -0
  324. package/dist/Components/Table/Types/Columns/DisplayType.js +14 -1
  325. package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +5 -0
  326. package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +7 -0
  327. package/dist/Components/Table/Types/Columns/JSONColumnPinningState.d.ts +6 -0
  328. package/dist/Components/Table/Types/Columns/ProgressBarColumn.d.ts +5 -0
  329. package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +9 -0
  330. package/dist/Components/Table/Types/Columns/TableActionButton.d.ts +12 -0
  331. package/dist/Components/Table/Types/Columns/TableCell.d.ts +16 -2
  332. package/dist/Components/Table/Types/Columns/VisibilityState.d.ts +12 -0
  333. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +173 -0
  334. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +241 -0
  335. package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +166 -0
  336. package/dist/Components/Table/Types/Context/FilteringState.svelte.js +180 -0
  337. package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +316 -0
  338. package/dist/Components/Table/Types/Context/FocusState.svelte.js +751 -0
  339. package/dist/Components/Table/Types/Context/ITable.d.ts +10 -0
  340. package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +242 -0
  341. package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +317 -0
  342. package/dist/Components/Table/Types/Context/ReadonlyRowModel.d.ts +14 -3
  343. package/dist/Components/Table/Types/Context/Row.d.ts +18 -0
  344. package/dist/Components/Table/Types/Context/RowModel.d.ts +11 -0
  345. package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +260 -0
  346. package/dist/Components/Table/Types/Context/SelectionState.svelte.js +613 -0
  347. package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +112 -0
  348. package/dist/Components/Table/Types/Context/SortingState.svelte.js +272 -0
  349. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +547 -53
  350. package/dist/Components/Table/Types/Context/TableContext.svelte.js +959 -1259
  351. package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +16 -0
  352. package/dist/Components/Table/Types/Context/TableSettings.d.ts +20 -0
  353. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +167 -0
  354. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +226 -0
  355. package/dist/Components/Table/Types/Coordinates/CellCoordinates.d.ts +12 -0
  356. package/dist/Components/Table/Types/Coordinates/CellCoordinatesWithoutColumn.d.ts +5 -0
  357. package/dist/Components/Table/Types/Coordinates/ColumnIndices.d.ts +16 -2
  358. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +143 -0
  359. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +454 -0
  360. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +21 -0
  361. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +10 -0
  362. package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +16 -0
  363. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +87 -3
  364. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +112 -7
  365. package/dist/Components/Table/Types/DataRepository/SortingState.d.ts +12 -0
  366. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +87 -2
  367. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +74 -1
  368. package/dist/Components/Table/Types/ExpandedPanel.d.ts +9 -0
  369. package/dist/Components/Table/Types/ExpandedPanel.js +10 -1
  370. package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +17 -0
  371. package/dist/Components/Table/Types/Filtering/CustomFilter.d.ts +21 -0
  372. package/dist/Components/Table/Types/Filtering/CustomFilterType.d.ts +5 -0
  373. package/dist/Components/Table/Types/Filtering/CustomFilterType.js +6 -1
  374. package/dist/Components/Table/Types/Filtering/CustomRemoteFilters.d.ts +6 -0
  375. package/dist/Components/Table/Types/Filtering/FilterFn.d.ts +28 -0
  376. package/dist/Components/Table/Types/Filtering/FilterMode.d.ts +7 -0
  377. package/dist/Components/Table/Types/Filtering/FilterType.d.ts +8 -0
  378. package/dist/Components/Table/Types/Filtering/FilterType.js +9 -1
  379. package/dist/Components/Table/Types/Filtering/FilterValueType.d.ts +11 -0
  380. package/dist/Components/Table/Types/Filtering/FilterValueType.js +12 -1
  381. package/dist/Components/Table/Types/Filtering/HasCustomFilterFunction.d.ts +23 -2
  382. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.d.ts +19 -12
  383. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.js +18 -14
  384. package/dist/Components/Table/Types/Filtering/StringFilterMode.d.ts +22 -15
  385. package/dist/Components/Table/Types/Filtering/StringFilterMode.js +22 -16
  386. package/dist/Components/Table/Types/Focus/MultiFocusEdge.d.ts +8 -0
  387. package/dist/Components/Table/Types/Focus/MultiFocusEdge.js +9 -1
  388. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +22 -0
  389. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +22 -0
  390. package/dist/Components/Table/Types/Header.d.ts +8 -0
  391. package/dist/Components/Table/Types/HeaderGroup.d.ts +7 -0
  392. package/dist/Components/Table/Types/Layout/CellPinning.d.ts +1 -0
  393. package/dist/Components/Table/Types/Layout/CellPinning.js +8 -0
  394. package/dist/Components/Table/Types/OnChangeFn.d.ts +11 -0
  395. package/dist/Components/Table/Types/Pagination/PaginationState.d.ts +9 -0
  396. package/dist/Components/Table/Types/Pagination/PaginationType.d.ts +10 -0
  397. package/dist/Components/Table/Types/Pagination/PaginationType.js +11 -1
  398. package/dist/Components/Table/Types/Public/AnyEditEvent.d.ts +30 -0
  399. package/dist/Components/Table/Types/Public/AnyEditEvent.js +1 -0
  400. package/dist/Components/Table/Types/Public/BaseColumnOptions.d.ts +44 -0
  401. package/dist/Components/Table/Types/Public/BaseColumnOptions.js +1 -0
  402. package/dist/Components/Table/Types/Public/ColumnFactory.d.ts +35 -0
  403. package/dist/Components/Table/Types/Public/ColumnFactory.js +1 -0
  404. package/dist/Components/Table/Types/Public/ColumnOptions.d.ts +238 -0
  405. package/dist/Components/Table/Types/Public/ColumnOptions.js +1 -0
  406. package/dist/Components/Table/Types/Public/ColumnSpec.d.ts +39 -0
  407. package/dist/Components/Table/Types/Public/ColumnSpec.js +1 -0
  408. package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +87 -0
  409. package/dist/Components/Table/Types/Public/CreateTableOptions.js +1 -0
  410. package/dist/Components/Table/Types/Public/KeyConstraints.d.ts +42 -0
  411. package/dist/Components/Table/Types/Public/KeyConstraints.js +22 -0
  412. package/dist/Components/Table/Types/Public/RowSource.d.ts +87 -0
  413. package/dist/Components/Table/Types/Public/RowSource.js +1 -0
  414. package/dist/Components/Table/Types/Public/SelectionOptions.d.ts +26 -0
  415. package/dist/Components/Table/Types/Public/SelectionOptions.js +1 -0
  416. package/dist/Components/Table/Types/Public/Table.d.ts +39 -0
  417. package/dist/Components/Table/Types/Public/Table.js +1 -0
  418. package/dist/Components/Table/Types/Public/TableInitialState.d.ts +26 -0
  419. package/dist/Components/Table/Types/Public/TableInitialState.js +1 -0
  420. package/dist/Components/Table/Types/Public/TablePersistence.d.ts +38 -0
  421. package/dist/Components/Table/Types/Public/TablePersistence.js +1 -0
  422. package/dist/Components/Table/Types/Public/TableSubApis.d.ts +157 -0
  423. package/dist/Components/Table/Types/Public/TableSubApis.js +1 -0
  424. package/dist/Components/Table/Types/Public/index.d.ts +20 -0
  425. package/dist/Components/Table/Types/Public/index.js +8 -0
  426. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.d.ts +4 -0
  427. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.js +5 -1
  428. package/dist/Components/Table/createTable.svelte.d.ts +53 -0
  429. package/dist/Components/Table/createTable.svelte.js +269 -0
  430. package/dist/Components/TextArea.svelte +37 -18
  431. package/dist/Components/TextAreaProps.d.ts +37 -0
  432. package/dist/Components/TextInput.svelte +41 -22
  433. package/dist/Components/TextInputProps.d.ts +58 -1
  434. package/dist/Components/ThreeStateRadio.svelte +61 -64
  435. package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
  436. package/dist/Components/Touch/BoolCard.svelte +8 -15
  437. package/dist/Components/Touch/BoolCard.svelte.d.ts +1 -10
  438. package/dist/Components/Touch/BoolCardProps.d.ts +21 -0
  439. package/dist/Components/Touch/BoolCardProps.js +1 -0
  440. package/dist/Components/Touch/DateModal.svelte +17 -25
  441. package/dist/Components/Touch/DateModal.svelte.d.ts +1 -17
  442. package/dist/Components/Touch/DateModalProps.d.ts +36 -0
  443. package/dist/Components/Touch/DateModalProps.js +1 -0
  444. package/dist/Components/Touch/EditCard.svelte +10 -3
  445. package/dist/Components/Touch/EditCardProps.d.ts +21 -0
  446. package/dist/Components/Touch/InfoCard.svelte +14 -7
  447. package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
  448. package/dist/Components/Touch/InfoTextCard.svelte +9 -2
  449. package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
  450. package/dist/Components/Touch/ModalExplanation.svelte +9 -12
  451. package/dist/Components/Touch/ModalExplanation.svelte.d.ts +1 -6
  452. package/dist/Components/Touch/ModalExplanationProps.d.ts +22 -0
  453. package/dist/Components/Touch/ModalExplanationProps.js +1 -0
  454. package/dist/Components/Touch/NumberKeyboard.svelte +62 -105
  455. package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
  456. package/dist/Components/Touch/NumberModal.svelte +16 -6
  457. package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
  458. package/dist/Components/Touch/PlusMinusCard.svelte +12 -16
  459. package/dist/Components/Touch/PlusMinusCard.svelte.d.ts +1 -6
  460. package/dist/Components/Touch/PlusMinusCardProps.d.ts +18 -0
  461. package/dist/Components/Touch/PlusMinusCardProps.js +1 -0
  462. package/dist/Components/Touch/SelectModal.svelte +33 -15
  463. package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
  464. package/dist/Components/Touch/SummaryCard.svelte +56 -14
  465. package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
  466. package/dist/Components/Touch/TextAreaModal.svelte +18 -9
  467. package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
  468. package/dist/Components/Touch/TextModal.svelte +15 -32
  469. package/dist/Components/Touch/TextModalProps.d.ts +28 -1
  470. package/dist/Components/Touch/TouchCard.svelte +9 -47
  471. package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
  472. package/dist/Components/Touch/TouchModal.svelte +105 -99
  473. package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
  474. package/dist/Components/Touch/UtilityButton.svelte +36 -18
  475. package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
  476. package/dist/Components/VerticalTabGroup.svelte +18 -40
  477. package/dist/Components/VerticalTabGroupButton.svelte +11 -50
  478. package/dist/Components/VerticalTabGroupProps.d.ts +15 -2
  479. package/dist/Contexts/AlertContext.svelte.d.ts +92 -8
  480. package/dist/Contexts/AlertContext.svelte.js +69 -6
  481. package/dist/Contexts/ContextMenuContext.svelte.d.ts +54 -8
  482. package/dist/Contexts/ContextMenuContext.svelte.js +48 -2
  483. package/dist/Contexts/TestContext.svelte.d.ts +27 -1
  484. package/dist/Contexts/TestContext.svelte.js +29 -1
  485. package/dist/Contexts/ToastContext.svelte.d.ts +29 -1
  486. package/dist/Contexts/ToastContext.svelte.js +93 -24
  487. package/dist/Contexts/TooltipContext.svelte.d.ts +68 -1
  488. package/dist/Contexts/TooltipContext.svelte.js +70 -7
  489. package/dist/Contexts/UntypedInputContext.svelte.d.ts +54 -5
  490. package/dist/Contexts/UntypedInputContext.svelte.js +87 -34
  491. package/dist/Delay/Delay.js +1 -1
  492. package/dist/Helpers/AsyncFlag.svelte.d.ts +39 -0
  493. package/dist/Helpers/AsyncFlag.svelte.js +72 -0
  494. package/dist/Helpers/Datamatrix.d.ts +10 -1
  495. package/dist/Helpers/Datamatrix.js +290 -1
  496. package/dist/Helpers/Helpers.svelte.d.ts +252 -18
  497. package/dist/Helpers/Helpers.svelte.js +271 -75
  498. package/dist/Helpers/INamed.d.ts +6 -0
  499. package/dist/Helpers/Storage.d.ts +67 -0
  500. package/dist/Helpers/Storage.js +138 -0
  501. package/dist/Helpers/dropdownPortal.d.ts +52 -0
  502. package/dist/Helpers/dropdownPortal.js +232 -0
  503. package/dist/Helpers/dropdownPortal.svelte.d.ts +2 -0
  504. package/dist/Helpers/dropdownPortal.svelte.js +5 -0
  505. package/dist/Helpers/memoiseByRow.d.ts +45 -0
  506. package/dist/Helpers/memoiseByRow.js +78 -0
  507. package/dist/Helpers/prefersReducedMotion.svelte.d.ts +27 -0
  508. package/dist/Helpers/prefersReducedMotion.svelte.js +18 -0
  509. package/dist/Helpers/useTooltip.svelte.d.ts +53 -0
  510. package/dist/Helpers/useTooltip.svelte.js +62 -0
  511. package/dist/Types/Examples/ExampleModal.svelte +2 -1
  512. package/dist/Types/Examples/ExampleSelectEnum.js +1 -1
  513. package/dist/Types/Internal/AsyncFlag.d.ts +7 -0
  514. package/dist/Types/Internal/AsyncFlag.js +1 -0
  515. package/dist/Types/Internal/BigRadioOption.d.ts +8 -0
  516. package/dist/Types/Internal/ButtonProp.d.ts +24 -2
  517. package/dist/Types/Internal/CallbackButton.d.ts +12 -0
  518. package/dist/Types/Internal/DateChange.d.ts +8 -0
  519. package/dist/Types/Internal/DatePickerType.d.ts +5 -0
  520. package/dist/Types/Internal/DatePickerType.js +6 -1
  521. package/dist/Types/Internal/IdentifiableToastMessage.d.ts +8 -0
  522. package/dist/Types/Internal/InputVariant.d.ts +5 -0
  523. package/dist/Types/Internal/InputVariant.js +6 -1
  524. package/dist/Types/Internal/Misc.d.ts +91 -0
  525. package/dist/Types/Internal/RefWrapper.d.ts +6 -0
  526. package/dist/Types/Internal/SelectOption.d.ts +8 -0
  527. package/dist/Types/Internal/Shape.d.ts +1 -0
  528. package/dist/Types/Internal/Shape.js +2 -1
  529. package/dist/Types/Internal/Side.d.ts +1 -0
  530. package/dist/Types/Internal/Side.js +2 -1
  531. package/dist/Types/Internal/Size.d.ts +5 -0
  532. package/dist/Types/Internal/Size.js +6 -1
  533. package/dist/Types/Internal/TabOption.d.ts +15 -5
  534. package/dist/Types/Internal/Ternary.d.ts +6 -0
  535. package/dist/Types/Internal/Ternary.js +7 -1
  536. package/dist/Types/Internal/ToastMessage.d.ts +28 -0
  537. package/dist/Types/Internal/Validity.d.ts +6 -0
  538. package/dist/Types/Internal/Validity.js +7 -1
  539. package/dist/Types/Internal/ValidityWrapper.d.ts +8 -0
  540. package/dist/Types/Internal/Variant.d.ts +5 -0
  541. package/dist/Types/Internal/Variant.js +6 -1
  542. package/dist/index.d.ts +27 -82
  543. package/dist/index.js +24 -62
  544. package/dist/scss/_mixins.scss +451 -167
  545. package/dist/scss/_motion.scss +57 -0
  546. package/dist/scss/_sizing.scss +16 -0
  547. package/dist/scss/colours.js +2 -2
  548. package/dist/scss/sizing.d.ts +9 -0
  549. package/dist/scss/sizing.js +10 -1
  550. package/package.json +35 -31
@@ -1,16 +1,39 @@
1
1
  import type { SelectOption } from '../../../../../../Types/Internal/SelectOption.js';
2
2
  import type { FilterFn } from '../../../Filtering/FilterFn.js';
3
3
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
4
+ /**
5
+ * Construction-time props for `QueryDef`. Both `query` and
6
+ * `getDisplayValue` are required: the dropdown is asynchronously
7
+ * populated from `query` and the cell display is decoupled from the
8
+ * stored value.
9
+ *
10
+ * Security: `query` receives raw user input from the quick-search box.
11
+ * Implementations forwarding the query string to a backend MUST escape
12
+ * or parameterise it before use. Documented in the workorder.
13
+ */
4
14
  export interface QueryDefProps<T extends object, in FilterValueType = unknown, out FilterOptionsType = unknown> extends AccessorDefProps<T, FilterValueType, FilterOptionsType> {
15
+ /** Async option provider. Receives raw user input from the search box;
16
+ * implementations forwarding to a backend must escape the query. */
5
17
  query: (queryString: string, item: T, index: number) => Promise<Array<SelectOption<unknown>>>;
18
+ /** Required. Maps the stored value to a display label. */
6
19
  getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
20
+ /** Whether the widget exposes a clear affordance. Defaults to true. */
7
21
  clearable?: boolean;
8
22
  }
23
+ /**
24
+ * `QueryDef<T, FilterValueType, FilterOptionsType>` is an `AccessorDef`
25
+ * backed by an asynchronous option provider (typeahead).
26
+ */
9
27
  export declare class QueryDef<T extends object, FilterValueType = unknown, out FilterOptionsType = unknown> extends AccessorDef<T, FilterValueType, FilterOptionsType> {
28
+ /** Inner discriminator literal. */
10
29
  readonly accessorType: "Query";
11
30
  constructor(props: QueryDefProps<T, FilterValueType, FilterOptionsType>);
31
+ /** Filter predicate. Bound at construction. */
12
32
  readonly filterFn: FilterFn<T, FilterValueType> | undefined;
33
+ /** Required at the subclass layer. */
13
34
  getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
35
+ /** Async option provider. */
14
36
  readonly query: (queryString: string, item: T, index: number) => Promise<Array<SelectOption<unknown>>>;
37
+ /** Whether the widget exposes a clear affordance. */
15
38
  readonly clearable: boolean;
16
39
  }
@@ -1,6 +1,11 @@
1
1
  import { AccessorDef } from './AccessorDef.svelte.js';
2
2
  import { AccessorType } from './AccessorType.js';
3
+ /**
4
+ * `QueryDef<T, FilterValueType, FilterOptionsType>` is an `AccessorDef`
5
+ * backed by an asynchronous option provider (typeahead).
6
+ */
3
7
  export class QueryDef extends AccessorDef {
8
+ /** Inner discriminator literal. */
4
9
  accessorType = AccessorType.Query;
5
10
  constructor(props) {
6
11
  super(props);
@@ -8,7 +13,10 @@ export class QueryDef extends AccessorDef {
8
13
  this.filterFn = $derived(props.filterFn);
9
14
  this.clearable = $derived(props.clearable ?? true);
10
15
  }
16
+ /** Filter predicate. Bound at construction. */
11
17
  filterFn;
18
+ /** Async option provider. */
12
19
  query;
20
+ /** Whether the widget exposes a clear affordance. */
13
21
  clearable;
14
22
  }
@@ -1,22 +1,53 @@
1
1
  import type { SelectOption } from '../../../../../../Types/Internal/SelectOption.js';
2
2
  import type { FilterFn } from '../../../Filtering/FilterFn.js';
3
3
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
4
+ /**
5
+ * Construction-time props for `SelectDef`. Unlike the base
6
+ * `ColumnDefProps`, both `getOptions` and `getDisplayValue` are
7
+ * required - the option label is decoupled from the stored value and
8
+ * the dropdown cannot render without an option set.
9
+ *
10
+ * Notes:
11
+ * - `getSpecificOptions` returns a per-row option set; it is invoked
12
+ * per cell per render with no caching (tracked in perf workorder).
13
+ * - `optional` controls whether the cell may be cleared; `clearable`
14
+ * controls whether the widget exposes a clear affordance.
15
+ */
4
16
  export interface SelectDefProps<T extends object, in FilterValueType, out SelectValueType> extends AccessorDefProps<T, FilterValueType, SelectValueType> {
17
+ /** Required. Returns the global option set for the dropdown. */
5
18
  getOptions: () => Array<SelectOption<SelectValueType>> | Promise<Array<SelectOption<SelectValueType>>>;
19
+ /** Required. Maps the stored value to a display label. */
6
20
  getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
21
+ /** Optional per-row option override. Invoked per cell per render. */
7
22
  getSpecificOptions?: (item: T, index: number) => Array<SelectOption<SelectValueType>> | Promise<Array<SelectOption<SelectValueType>>>;
23
+ /** Whether the cell may be cleared. Defaults to false. */
8
24
  optional?: boolean;
25
+ /** Whether the widget exposes a clear affordance. Defaults to true. */
9
26
  clearable?: boolean;
10
27
  }
28
+ /**
29
+ * `SelectDef<T, FilterValueType, SelectValueType>` is an `AccessorDef`
30
+ * backed by a finite option set. The `declare`-redeclaration of
31
+ * `getDisplayValue` / `getOptions` below narrows the optional base
32
+ * contract to required: callers can rely on both being defined at the
33
+ * subclass layer.
34
+ */
11
35
  export declare class SelectDef<T extends object, in FilterValueType, out SelectValueType> extends AccessorDef<T, FilterValueType, SelectValueType> {
12
36
  constructor(props: SelectDefProps<T, FilterValueType, SelectValueType>);
37
+ /** Inner discriminator literal. */
13
38
  readonly accessorType: "Select";
14
39
  private _filterFn;
40
+ /** Filter predicate. Reassignable. */
15
41
  get filterFn(): FilterFn<T, FilterValueType> | undefined;
16
42
  set filterFn(v: FilterFn<T, FilterValueType> | undefined);
43
+ /** Whether the cell may be cleared. */
17
44
  readonly optional: boolean;
45
+ /** Whether the widget exposes a clear affordance. */
18
46
  readonly clearable: boolean;
47
+ /** Per-row option override; invoked per cell per render. */
19
48
  readonly getSpecificOptions?: (item: T, index: number) => Array<SelectOption<SelectValueType>> | Promise<Array<SelectOption<SelectValueType>>>;
49
+ /** Required at the subclass layer. */
20
50
  getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
51
+ /** Required at the subclass layer. */
21
52
  getOptions: () => Array<SelectOption<SelectValueType>> | Promise<Array<SelectOption<SelectValueType>>>;
22
53
  }
@@ -1,24 +1,38 @@
1
+ import { memoiseRowAccessor } from '../../../../../../Helpers/memoiseByRow.js';
1
2
  import { AccessorDef } from './AccessorDef.svelte.js';
2
3
  import { AccessorType } from './AccessorType.js';
4
+ /**
5
+ * `SelectDef<T, FilterValueType, SelectValueType>` is an `AccessorDef`
6
+ * backed by a finite option set. The `declare`-redeclaration of
7
+ * `getDisplayValue` / `getOptions` below narrows the optional base
8
+ * contract to required: callers can rely on both being defined at the
9
+ * subclass layer.
10
+ */
3
11
  export class SelectDef extends AccessorDef {
4
12
  constructor(props) {
5
13
  super(props);
6
- this.getSpecificOptions = $derived(props.getSpecificOptions); //done in the base class now
7
- // this.getOptions = $derived(props.getOptions); // done in the base class now
14
+ // Row-keyed WeakMap cache around the per-row options provider. For
15
+ // Promise returns the Promise itself is cached, so {#await} resolves
16
+ // once per row rather than per render.
17
+ this.getSpecificOptions = $derived(memoiseRowAccessor(props.getSpecificOptions));
8
18
  this.optional = $derived(props.optional ?? false);
9
19
  this.clearable = $derived(props.clearable ?? true);
10
- // this.getDisplayValue = $derived(props.getDisplayValue); //done in the base class now
11
20
  this._filterFn = $state(props.filterFn);
12
21
  }
22
+ /** Inner discriminator literal. */
13
23
  accessorType = AccessorType.Select;
14
24
  _filterFn;
25
+ /** Filter predicate. Reassignable. */
15
26
  get filterFn() {
16
27
  return this._filterFn;
17
28
  }
18
29
  set filterFn(v) {
19
30
  this._filterFn = v;
20
31
  }
32
+ /** Whether the cell may be cleared. */
21
33
  optional;
34
+ /** Whether the widget exposes a clear affordance. */
22
35
  clearable;
36
+ /** Per-row option override; invoked per cell per render. */
23
37
  getSpecificOptions;
24
38
  }
@@ -1,12 +1,31 @@
1
1
  import type { FilterFn, StringFilterValueType } from '../../../Filtering/FilterFn.js';
2
2
  import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
3
- export interface TextInputDefProps<T extends object, in FilterValueType = StringFilterValueType, out SelectValueType = StringFilterValueType> extends AccessorDefProps<T, FilterValueType, SelectValueType> {
3
+ /**
4
+ * Construction-time props for `TextInputDef`. The `TValue` generic is
5
+ * pinned to `string | null`.
6
+ *
7
+ * Notes:
8
+ * - `filterValueType?: 'String'` is redeclared here as documentation:
9
+ * it pins the filter-row UI to the string-input variant.
10
+ * - The third generic (`SelectValueType`) is unused by the text input
11
+ * today but retained so the shape parallels every other
12
+ * `AccessorDef` subclass.
13
+ */
14
+ export interface TextInputDefProps<T extends object, in FilterValueType = StringFilterValueType, out SelectValueType = StringFilterValueType> extends AccessorDefProps<T, FilterValueType, SelectValueType, string | null> {
15
+ /** Filter input variant; pinned to `'String'`. */
4
16
  filterValueType?: 'String';
5
17
  }
6
- export declare class TextInputDef<T extends object, in FilterValueType = StringFilterValueType, out SelectValueType = StringFilterValueType> extends AccessorDef<T, FilterValueType, SelectValueType> {
18
+ /**
19
+ * `TextInputDef<T, FilterValueType, SelectValueType>` fixes its
20
+ * declared value type at `string | null`. Cells reading
21
+ * `cell.getValue()` now see the narrower type instead of `unknown`.
22
+ */
23
+ export declare class TextInputDef<T extends object, in FilterValueType = StringFilterValueType, out SelectValueType = StringFilterValueType> extends AccessorDef<T, FilterValueType, SelectValueType, string | null> {
24
+ /** Inner discriminator literal. */
7
25
  readonly accessorType: "Text";
8
26
  constructor(props: TextInputDefProps<T, FilterValueType, SelectValueType>);
9
27
  private _filterFn;
28
+ /** Filter predicate. Reassignable. */
10
29
  get filterFn(): FilterFn<T, FilterValueType> | undefined;
11
30
  set filterFn(v: FilterFn<T, FilterValueType> | undefined);
12
31
  }
@@ -1,12 +1,19 @@
1
1
  import { AccessorDef } from './AccessorDef.svelte.js';
2
2
  import { AccessorType } from './AccessorType.js';
3
+ /**
4
+ * `TextInputDef<T, FilterValueType, SelectValueType>` fixes its
5
+ * declared value type at `string | null`. Cells reading
6
+ * `cell.getValue()` now see the narrower type instead of `unknown`.
7
+ */
3
8
  export class TextInputDef extends AccessorDef {
9
+ /** Inner discriminator literal. */
4
10
  accessorType = AccessorType.Text;
5
11
  constructor(props) {
6
12
  super(props);
7
13
  this._filterFn = $state(props.filterFn);
8
14
  }
9
15
  _filterFn;
16
+ /** Filter predicate. Reassignable. */
10
17
  get filterFn() {
11
18
  return this._filterFn;
12
19
  }
@@ -1,16 +1,44 @@
1
1
  import type { ColourSet } from '../../../../../../scss/colours.js';
2
2
  import type { TableActionButton } from '../../TableActionButton.js';
3
3
  import { ColumnDef, type ColumnDefProps } from '../ColumnDef.svelte.js';
4
+ /**
5
+ * Construction-time props for `ActionsDef`. Omits `id` and `header`
6
+ * because the class generates a stable id via `generateUUID` and pins
7
+ * the header to `'Actions'`.
8
+ *
9
+ * Notes:
10
+ * - `isEnabled` defaults to `true` for every button if omitted.
11
+ * - `getColourSet` defaults to the button's own colour if omitted.
12
+ * - Both callbacks receive the button currently being rendered so a
13
+ * single `ActionsDef` can drive a row of differently-styled actions.
14
+ */
4
15
  export interface ActionsDefProps<T extends object, in FilterValueType, out FilterOptionsType = unknown> extends Omit<ColumnDefProps<T, FilterValueType, FilterOptionsType>, 'id' | 'header'> {
16
+ /** The buttons rendered for every row. */
5
17
  actions: Array<TableActionButton<T>>;
18
+ /** Per-row, per-button enable predicate; assumed `true` if missing. */
6
19
  isEnabled?: (item: T, index: number, button: TableActionButton<T>) => boolean | Promise<boolean>;
20
+ /** Per-row, per-button colour override. */
7
21
  getColourSet?: (item: T, index: number, button: TableActionButton<T>) => ColourSet;
8
22
  }
23
+ /**
24
+ * `ActionsDef<T, FilterValueType, FilterOptionsType>` is a column whose
25
+ * cells render a row of buttons. It is non-sortable, non-filterable,
26
+ * and pins its header to `'Actions'`.
27
+ *
28
+ * Note: the generated id uses `generateUUID()` (UUIDv7); two `ActionsDef`
29
+ * instances constructed in the same render pass will have distinct ids
30
+ * so consumers must keep a single instance per table.
31
+ */
9
32
  export declare class ActionsDef<T extends object, FilterValueType, out FilterOptionsType = unknown> extends ColumnDef<T, FilterValueType, FilterOptionsType> {
10
- constructor(props: ActionsDefProps<T, FilterValueType>);
33
+ constructor(props: ActionsDefProps<T, FilterValueType, FilterOptionsType>);
34
+ /** Discriminator literal. */
11
35
  readonly columnType: "Actions";
36
+ /** The buttons rendered for every row. */
12
37
  readonly actions: Array<TableActionButton<T>>;
38
+ /** Per-row, per-button enable predicate. */
13
39
  readonly isEnabled?: (item: T, index: number, button: TableActionButton<T>) => boolean | Promise<boolean>;
40
+ /** Per-row, per-button colour override. */
14
41
  readonly getColourSet?: (item: T, index: number, button: TableActionButton<T>) => ColourSet;
42
+ /** Actions columns are never filtered. */
15
43
  readonly filterFn: undefined;
16
44
  }
@@ -1,10 +1,19 @@
1
- import { generateUUID } from '../../../../../../Helpers/Helpers.svelte.js';
1
+ import { generateUUID, syntheticColumnId } from '../../../../../../Helpers/Helpers.svelte.js';
2
2
  import { ColumnType } from '../../ColumnType.js';
3
3
  import { ColumnDef } from '../ColumnDef.svelte.js';
4
+ /**
5
+ * `ActionsDef<T, FilterValueType, FilterOptionsType>` is a column whose
6
+ * cells render a row of buttons. It is non-sortable, non-filterable,
7
+ * and pins its header to `'Actions'`.
8
+ *
9
+ * Note: the generated id uses `generateUUID()` (UUIDv7); two `ActionsDef`
10
+ * instances constructed in the same render pass will have distinct ids
11
+ * so consumers must keep a single instance per table.
12
+ */
4
13
  export class ActionsDef extends ColumnDef {
5
14
  constructor(props) {
6
15
  super({
7
- id: `actions-${generateUUID()}`,
16
+ id: syntheticColumnId(`actions-${generateUUID()}`),
8
17
  header: 'Actions',
9
18
  allowSorting: false,
10
19
  allowFiltering: false,
@@ -13,9 +22,14 @@ export class ActionsDef extends ColumnDef {
13
22
  this.isEnabled = $derived(props.isEnabled);
14
23
  this.getColourSet = $derived(props.getColourSet);
15
24
  }
25
+ /** Discriminator literal. */
16
26
  columnType = ColumnType.Actions;
27
+ /** The buttons rendered for every row. */
17
28
  actions;
18
- isEnabled; // assumed true if missing
29
+ /** Per-row, per-button enable predicate. */
30
+ isEnabled;
31
+ /** Per-row, per-button colour override. */
19
32
  getColourSet;
33
+ /** Actions columns are never filtered. */
20
34
  filterFn = undefined;
21
35
  }
@@ -1,4 +1,4 @@
1
- import type { Pixels } from '../../../../../Types/Internal/Misc.js';
1
+ import type { ColumnId, Pixels } from '../../../../../Types/Internal/Misc.js';
2
2
  import type { SelectOption } from '../../../../../Types/Internal/SelectOption.js';
3
3
  import type { Snippet } from 'svelte';
4
4
  import type { MemoryColumnIndex } from '../../Coordinates/ColumnIndices.js';
@@ -7,63 +7,174 @@ import type { FilterValueType } from '../../Filtering/FilterValueType.js';
7
7
  import { ColumnType } from '../ColumnType.js';
8
8
  import type { AccessorFn } from './AccessorFn.js';
9
9
  import type { ValidationFn } from './ValidationFn.js';
10
- export interface ColumnDefProps<T extends object, in FilterFnType, out OptionsType> {
11
- id: string;
10
+ /**
11
+ * Construction-time props shared by every `ColumnDef` subclass. The
12
+ * generics mirror those of `ColumnDef` itself:
13
+ *
14
+ * - `T`: the row shape.
15
+ * - `FilterFnType` (contravariant): the value the column's `filterFn`
16
+ * receives at filter-evaluation time (e.g. `BoolFilterValueType` for
17
+ * `CheckboxDef`).
18
+ * - `OptionsType` (covariant): the value produced by `getOptions` for
19
+ * select-style filtering.
20
+ * - `TValue`: the declared row-value type; defaults to `unknown` so
21
+ * non-accessor columns do not need to thread it.
22
+ */
23
+ export interface ColumnDefProps<T extends object, in FilterFnType, out OptionsType, TValue = unknown> {
24
+ /** Stable column identifier. Two-arm union: either a `string & keyof T`
25
+ * literal (accessor-backed column) or a {@link SyntheticColumnId} brand
26
+ * (pseudo column with no row binding, e.g. row-selection / expand /
27
+ * actions). `AccessorDef` subclasses narrow this to `string & keyof T`.
28
+ *
29
+ * Construct synthetic ids via the `syntheticColumnId(...)` helper
30
+ * (re-exported from `$lib`). */
31
+ id: ColumnId<T>;
32
+ /** Header content. A plain string renders as text; a Snippet renders
33
+ * arbitrary markup. Note: only string headers serialise cleanly via
34
+ * `toJSON` for preset storage. */
12
35
  header: string | Snippet;
36
+ /** When true the cell, header, and filter row log per-render debug info. */
13
37
  debug?: boolean;
38
+ /** Declared memory order. If omitted, the column is given index 0 and is
39
+ * expected to be reassigned by the surrounding context. */
14
40
  index?: MemoryColumnIndex;
41
+ /** Whether this column may be filtered. Defaults to `true`. */
15
42
  allowFiltering?: boolean;
43
+ /** Whether this column may be sorted. Defaults to `true`. */
16
44
  allowSorting?: boolean;
45
+ /** Whether the column is hidden by default (still appears in the column picker). */
17
46
  defaultHidden?: boolean;
47
+ /** Minimum width in pixels. Defaults to the column-min-width token. */
18
48
  minSize?: Pixels;
49
+ /** Initial width in pixels. Defaults to `minSize`. */
19
50
  width?: Pixels;
51
+ /** Async-flag predicate for whether a given cell is currently editable. */
20
52
  isEditable?: (item: T, index: number) => boolean | Promise<boolean>;
53
+ /** Whether the column may be resized by the user. Defaults to `true`. */
21
54
  resizable?: boolean;
55
+ /** Per-row validity predicate; surfaces in `ValidityDef` and inline UI. */
22
56
  isValid?: ValidationFn<T>;
57
+ /** Predicate used during filtering. Subclasses redeclare it with a
58
+ * narrowed `FilterFnType`. */
23
59
  filterFn?: FilterFn<T, FilterFnType>;
60
+ /** Sort comparator factory; receives the desc flag, returns a comparator. */
24
61
  getSortingFn?: (desc: boolean) => (a: T, b: T) => 1 | -1 | 0;
62
+ /** Determines which filter input is rendered in the filter panel. */
25
63
  filterValueType?: FilterValueType;
64
+ /** Required when `filterValueType === 'Select'`. Returns the option set
65
+ * rendered in the filter dropdown. */
26
66
  getOptions?: () => Array<SelectOption<OptionsType>> | Promise<Array<SelectOption<OptionsType>>>;
27
- accessorFn?: AccessorFn<T>;
67
+ /** Reads the cell value from a row. For `AccessorDef` subclasses this is
68
+ * required at the subclass layer. */
69
+ accessorFn?: AccessorFn<T, TValue>;
70
+ /** Renders the cell value as a string. Required for `SelectDef` /
71
+ * `QueryDef` where the option label is decoupled from the stored value. */
28
72
  getDisplayValue?: (item: T, index: number) => string | null | Promise<string | null>;
73
+ /** Optional grouping label for this column's filter row in the
74
+ * advanced filter panel. See `BaseColumnOptions.filterGroup` for
75
+ * the consumer-facing description. */
76
+ filterGroup?: string;
29
77
  }
30
- export declare abstract class ColumnDef<T extends object, in FilterFnType = never, out OptionsType = unknown> {
31
- protected constructor(props: ColumnDefProps<T, FilterFnType, OptionsType>);
32
- readonly id: string;
78
+ /**
79
+ * `ColumnDef<T, FilterFnType, OptionsType, TValue>` is the abstract base
80
+ * for every Table column kind. Owns identification, layout (`minSize`,
81
+ * `width`, `resizable`), gating flags (`allowFiltering`, `allowSorting`,
82
+ * `defaultHidden`, `isEditable`), data accessors (`accessorFn`,
83
+ * `getDisplayValue`), and filtering / sorting hooks (`filterFn`,
84
+ * `filterValueType`, `getOptions`, `getSortingFn`).
85
+ *
86
+ * The `TValue` generic captures the declared row-value type for
87
+ * data-backed columns (e.g. `boolean` for `CheckboxDef`,
88
+ * `number | string | null` for `NumberInputDef`). Defaulting to `unknown`
89
+ * keeps every existing call site that uses three or fewer generic
90
+ * arguments unchanged.
91
+ *
92
+ * @remarks
93
+ *
94
+ * Several fields are `$derived(props.x)` so that a consumer who rebuilds
95
+ * the `ColumnDef` props object via `columnDefs = [...]` propagates the
96
+ * change reactively. This is a reactivity escape hatch rather than
97
+ * derived state; flattening to plain `readonly` fields is a per-Def
98
+ * optimisation tracked in the perf report.
99
+ */
100
+ export declare abstract class ColumnDef<T extends object, in FilterFnType = never, out OptionsType = unknown, TValue = unknown> {
101
+ protected constructor(props: ColumnDefProps<T, FilterFnType, OptionsType, TValue>);
102
+ /** Stable column identifier. */
103
+ readonly id: ColumnId<T>;
104
+ /** When true, callers may log per-render debug info. */
33
105
  debug: boolean;
34
106
  private _index;
107
+ /** Declared memory order; reassigned by `TableContext` during pinning. */
35
108
  get index(): MemoryColumnIndex;
36
109
  set index(v: MemoryColumnIndex);
110
+ /** Discriminator literal narrowed by each subclass. */
37
111
  abstract readonly columnType: ColumnType;
112
+ /** Whether the column is hidden by default. */
38
113
  readonly defaultHidden: boolean;
114
+ /** Whether the column may be sorted. */
39
115
  readonly allowSorting: boolean;
116
+ /** Whether the column may be filtered. */
40
117
  readonly allowFiltering: boolean;
118
+ /** Per-row validity predicate. */
41
119
  readonly isValid: ValidationFn<T> | undefined;
42
- readonly accessorFn: AccessorFn<T> | undefined;
120
+ /** Reads the row value. Required at the `AccessorDef` subclass layer. */
121
+ readonly accessorFn: AccessorFn<T, TValue> | undefined;
122
+ /** Filter predicate. Each subclass narrows the generic parameter. */
43
123
  abstract filterFn: FilterFn<T, FilterFnType> | undefined;
44
124
  private _minSize;
125
+ /** Minimum width in pixels. */
45
126
  get minSize(): Pixels;
46
127
  set minSize(v: Pixels);
47
128
  private _width;
129
+ /** Current width in pixels. Mutated by the resize handle. */
48
130
  get width(): Pixels;
49
131
  set width(v: Pixels);
50
132
  private _isResizing;
133
+ /** Whether the resize handle is currently active. */
51
134
  get isResizing(): boolean;
52
135
  set isResizing(v: boolean);
53
- private _visible;
54
- get visible(): boolean;
55
- set visible(v: boolean);
136
+ private _userResized;
137
+ /**
138
+ * Whether the user has explicitly resized this column via the
139
+ * resize handle. Drives the grid-template-columns track strategy:
140
+ * non-resized columns use `minmax(width, 1fr)` so they flex to
141
+ * fill the table's horizontal space; resized columns use a fixed
142
+ * `${width}px` so dragging one column's handle does not
143
+ * redistribute the other resized columns' widths. When the total
144
+ * fixed width drops below the table's width, the still-flexing
145
+ * (non-resized) columns automatically expand to fill the gap.
146
+ */
147
+ get userResized(): boolean;
148
+ set userResized(v: boolean);
56
149
  private _filterValueType;
150
+ /** Filter input kind; drives the filter panel renderer. */
57
151
  get filterValueType(): FilterValueType | undefined;
58
152
  set filterValueType(v: FilterValueType | undefined);
153
+ /** Renders the cell value as a string for preset / accessibility paths.
154
+ * Required at the `SelectDef` / `QueryDef` subclass layer. */
59
155
  readonly getDisplayValue: ((item: T, index: number) => string | null | Promise<string | null>) | undefined;
156
+ /** Preset-serialisation projection. Note that `header.toString()` returns
157
+ * `[Function]` for Snippet headers; preset-saving consumers should pass
158
+ * a string header. Tracked in the workorder. */
60
159
  toJSON(): ColumnJSONRepresentation;
160
+ /** Sort comparator factory. */
61
161
  readonly getSortingFn: ((desc: boolean) => (a: T, b: T) => 1 | -1 | 0) | undefined;
162
+ /** Async-flag predicate for cell editability. */
62
163
  readonly isEditable: (item: T, index: number) => boolean | Promise<boolean>;
164
+ /** Whether the column may be resized by the user. */
63
165
  readonly resizable: boolean;
166
+ /** Header content; string or Snippet. */
64
167
  readonly header: string | Snippet;
168
+ /** Options provider for select-style filter inputs. */
65
169
  readonly getOptions?: () => Array<SelectOption<OptionsType>> | Promise<Array<SelectOption<OptionsType>>>;
170
+ /** Optional grouping label for this column's filter row in the
171
+ * advanced filter panel. Columns sharing the same `filterGroup`
172
+ * string render under a single collapsible section in
173
+ * `FilterPanel.svelte`. `undefined` puts the column in the
174
+ * fallback "Other" group. */
175
+ readonly filterGroup: string | undefined;
66
176
  }
177
+ /** Preset-storage shape produced by `ColumnDef.toJSON`. */
67
178
  export interface ColumnJSONRepresentation {
68
179
  columnType: ColumnType;
69
180
  id: string;
@@ -1,8 +1,34 @@
1
+ import { memoiseRowAccessor } from '../../../../../Helpers/memoiseByRow.js';
1
2
  import { ColumnType } from '../ColumnType.js';
3
+ /**
4
+ * `ColumnDef<T, FilterFnType, OptionsType, TValue>` is the abstract base
5
+ * for every Table column kind. Owns identification, layout (`minSize`,
6
+ * `width`, `resizable`), gating flags (`allowFiltering`, `allowSorting`,
7
+ * `defaultHidden`, `isEditable`), data accessors (`accessorFn`,
8
+ * `getDisplayValue`), and filtering / sorting hooks (`filterFn`,
9
+ * `filterValueType`, `getOptions`, `getSortingFn`).
10
+ *
11
+ * The `TValue` generic captures the declared row-value type for
12
+ * data-backed columns (e.g. `boolean` for `CheckboxDef`,
13
+ * `number | string | null` for `NumberInputDef`). Defaulting to `unknown`
14
+ * keeps every existing call site that uses three or fewer generic
15
+ * arguments unchanged.
16
+ *
17
+ * @remarks
18
+ *
19
+ * Several fields are `$derived(props.x)` so that a consumer who rebuilds
20
+ * the `ColumnDef` props object via `columnDefs = [...]` propagates the
21
+ * change reactively. This is a reactivity escape hatch rather than
22
+ * derived state; flattening to plain `readonly` fields is a per-Def
23
+ * optimisation tracked in the perf report.
24
+ */
2
25
  export class ColumnDef {
3
26
  constructor(props) {
4
27
  this.id = $derived(props.id);
5
- this._index = $state(props.index ?? 0); // HACK this may prove problematic and be turned to a required property
28
+ // HACK: `index` defaults to 0 and is expected to be reassigned by the
29
+ // surrounding TableContext during column pinning calculation. Tracked
30
+ // in the ColumnDef workorder as a candidate for a required prop.
31
+ this._index = $state(props.index ?? 0);
6
32
  this.defaultHidden = $derived(props.defaultHidden ?? false);
7
33
  this.allowFiltering = $derived(props.allowFiltering ?? true);
8
34
  this.allowSorting = $derived(props.allowSorting ?? true);
@@ -14,26 +40,41 @@ export class ColumnDef {
14
40
  this.resizable = $derived(props.resizable ?? true);
15
41
  this.header = $derived(props.header);
16
42
  this._filterValueType = $derived(props.filterValueType);
17
- this.getDisplayValue = $derived(props.getDisplayValue);
43
+ // Row-keyed WeakMap cache so a 1000-row render invokes the user
44
+ // callback at most once per row. Reassigning props.getDisplayValue
45
+ // re-derives the wrapper and discards the stale cache automatically.
46
+ // Async returns: the Promise itself is cached, so repeated reads
47
+ // return the same Promise and Svelte's {#await} resolves once.
48
+ this.getDisplayValue = $derived(memoiseRowAccessor(props.getDisplayValue));
18
49
  this.debug = $derived(props.debug ?? false);
19
50
  this.getSortingFn = $derived(props.getSortingFn);
20
51
  this.getOptions = $derived(props.getOptions);
52
+ this.filterGroup = $derived(props.filterGroup);
21
53
  }
54
+ /** Stable column identifier. */
22
55
  id;
56
+ /** When true, callers may log per-render debug info. */
23
57
  debug;
24
58
  _index;
59
+ /** Declared memory order; reassigned by `TableContext` during pinning. */
25
60
  get index() {
26
61
  return this._index;
27
62
  }
28
63
  set index(v) {
29
64
  this._index = v;
30
65
  }
66
+ /** Whether the column is hidden by default. */
31
67
  defaultHidden;
68
+ /** Whether the column may be sorted. */
32
69
  allowSorting;
70
+ /** Whether the column may be filtered. */
33
71
  allowFiltering;
72
+ /** Per-row validity predicate. */
34
73
  isValid;
74
+ /** Reads the row value. Required at the `AccessorDef` subclass layer. */
35
75
  accessorFn;
36
76
  _minSize;
77
+ /** Minimum width in pixels. */
37
78
  get minSize() {
38
79
  return this._minSize;
39
80
  }
@@ -41,6 +82,7 @@ export class ColumnDef {
41
82
  this._minSize = v;
42
83
  }
43
84
  _width;
85
+ /** Current width in pixels. Mutated by the resize handle. */
44
86
  get width() {
45
87
  return this._width;
46
88
  }
@@ -48,6 +90,7 @@ export class ColumnDef {
48
90
  this._width = v;
49
91
  }
50
92
  _isResizing = $state(false);
93
+ /** Whether the resize handle is currently active. */
51
94
  get isResizing() {
52
95
  return this._isResizing;
53
96
  }
@@ -58,25 +101,37 @@ export class ColumnDef {
58
101
  }
59
102
  this._isResizing = v;
60
103
  }
61
- _visible = $state(true);
62
- get visible() {
63
- return this._visible;
104
+ _userResized = $state(false);
105
+ /**
106
+ * Whether the user has explicitly resized this column via the
107
+ * resize handle. Drives the grid-template-columns track strategy:
108
+ * non-resized columns use `minmax(width, 1fr)` so they flex to
109
+ * fill the table's horizontal space; resized columns use a fixed
110
+ * `${width}px` so dragging one column's handle does not
111
+ * redistribute the other resized columns' widths. When the total
112
+ * fixed width drops below the table's width, the still-flexing
113
+ * (non-resized) columns automatically expand to fill the gap.
114
+ */
115
+ get userResized() {
116
+ return this._userResized;
64
117
  }
65
- set visible(v) {
66
- if (v && !this.allowSorting) {
67
- console.warn(`Column ${this.id} is not sortable`);
68
- return;
69
- }
70
- this._visible = v;
118
+ set userResized(v) {
119
+ this._userResized = v;
71
120
  }
72
121
  _filterValueType;
122
+ /** Filter input kind; drives the filter panel renderer. */
73
123
  get filterValueType() {
74
124
  return this._filterValueType;
75
125
  }
76
126
  set filterValueType(v) {
77
127
  this._filterValueType = v;
78
128
  }
129
+ /** Renders the cell value as a string for preset / accessibility paths.
130
+ * Required at the `SelectDef` / `QueryDef` subclass layer. */
79
131
  getDisplayValue;
132
+ /** Preset-serialisation projection. Note that `header.toString()` returns
133
+ * `[Function]` for Snippet headers; preset-saving consumers should pass
134
+ * a string header. Tracked in the workorder. */
80
135
  toJSON() {
81
136
  return {
82
137
  columnType: this.columnType,
@@ -85,9 +140,20 @@ export class ColumnDef {
85
140
  filterValueType: this.filterValueType,
86
141
  };
87
142
  }
143
+ /** Sort comparator factory. */
88
144
  getSortingFn;
145
+ /** Async-flag predicate for cell editability. */
89
146
  isEditable;
147
+ /** Whether the column may be resized by the user. */
90
148
  resizable;
149
+ /** Header content; string or Snippet. */
91
150
  header;
151
+ /** Options provider for select-style filter inputs. */
92
152
  getOptions;
153
+ /** Optional grouping label for this column's filter row in the
154
+ * advanced filter panel. Columns sharing the same `filterGroup`
155
+ * string render under a single collapsible section in
156
+ * `FilterPanel.svelte`. `undefined` puts the column in the
157
+ * fallback "Other" group. */
158
+ filterGroup;
93
159
  }