@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
@@ -0,0 +1,238 @@
1
+ import type { Component, Snippet } from 'svelte';
2
+ import type { CellCoordinates } from '../Coordinates/CellCoordinates.js';
3
+ import type { CustomFilter } from '../Filtering/CustomFilter.js';
4
+ import type { FilterValueType } from '../Filtering/FilterValueType.js';
5
+ import type { Primitive } from '../Context/TableInitOptions.js';
6
+ import type { BubbleColour } from '../../../BubbleColour.js';
7
+ import type { SelectOption } from '../../../../Types/Internal/SelectOption.js';
8
+ import type { ValidationFn } from '../Columns/Definitions/ValidationFn.js';
9
+ import type { ColourSet } from '../../../../scss/colours.js';
10
+ import type { BaseColumnOptions } from './BaseColumnOptions.js';
11
+ import type { ColumnFactory } from './ColumnFactory.js';
12
+ import type { ColumnSpec } from './ColumnSpec.js';
13
+ import type { BooleanKeyOf, DateKeyOf, NumberKeyOf, StringKeyOf } from './KeyConstraints.js';
14
+ /**
15
+ * Per-kind option interfaces for every method on `ColumnFactory<TRow>`.
16
+ *
17
+ * Naming convention: `<Kind>ColumnOptions<TRow, ...>` for every method
18
+ * `col.<kind>(opts)`. The generic parameter list mirrors the corresponding
19
+ * factory method.
20
+ *
21
+ * Optional fields default to scoria-sensible values; the column factory
22
+ * applies the defaults when constructing the underlying `ColumnDef` so
23
+ * consumers do not have to write them at every call site.
24
+ *
25
+ * Accessor kinds (text, number, checkbox, date, select, query) constrain
26
+ * `id` to a key of `TRow` whose value type matches the kind. The value
27
+ * inferred from `TRow[K]` is the type carried into the column's per-cell
28
+ * `accessor`, `isValid`, `isEditable`, and `onEdit` callbacks.
29
+ *
30
+ * Display kinds (display, bubble, progress, validity) generate their own
31
+ * synthetic id and do not take an `id` from the caller.
32
+ *
33
+ * Structural kinds (rowSelection, actions, expand, filterOnly) likewise
34
+ * generate their own synthetic id.
35
+ */
36
+ /** Options for `col.text({ id, header, ... })`. */
37
+ export interface TextColumnOptions<TRow extends object, K extends StringKeyOf<TRow>> extends BaseColumnOptions {
38
+ /** Column id; must be a string-valued field of `TRow`. */
39
+ id: K;
40
+ /** Reads the cell value from the row. Defaults to `row[id]`. */
41
+ accessor?: (row: TRow, index: number) => TRow[K] | Promise<TRow[K]>;
42
+ /** Placeholder shown in the edit input when the cell is empty. */
43
+ placeholder?: string;
44
+ /** Maximum input length. */
45
+ maxLength?: number;
46
+ /** Per-row validity predicate. Async return supported. */
47
+ isValid?: ValidationFn<TRow>;
48
+ /** Per-row editability predicate. Defaults to `false` (read-only).
49
+ * Async return supported. */
50
+ isEditable?: (row: TRow, index: number) => boolean | Promise<boolean>;
51
+ /** Fires after a successful edit with the typed new value. */
52
+ onEdit?: (row: TRow, value: TRow[K], coords: CellCoordinates) => void | Promise<void>;
53
+ /** Row fields the `isValid` / `isEditable` predicates implicitly depend
54
+ * on. Listed explicitly so the reactivity system tracks them; replaces
55
+ * the `void row.x` idiom. Optional; omit if predicates only depend on
56
+ * the cell's own value. */
57
+ reactiveDependencies?: (row: TRow) => ReadonlyArray<unknown>;
58
+ }
59
+ /** Options for `col.number({ id, header, ... })`. */
60
+ export interface NumberColumnOptions<TRow extends object, K extends NumberKeyOf<TRow>> extends BaseColumnOptions {
61
+ id: K;
62
+ accessor?: (row: TRow, index: number) => TRow[K] | Promise<TRow[K]>;
63
+ /** Lower bound. The edit input enforces; values outside resolve as invalid. */
64
+ min?: number;
65
+ /** Upper bound. */
66
+ max?: number;
67
+ /** Step for keyboard increments and the input's `step` attribute. */
68
+ step?: number;
69
+ /** Whether decimal values are accepted. Defaults to true. */
70
+ decimal?: boolean;
71
+ isValid?: ValidationFn<TRow>;
72
+ isEditable?: (row: TRow, index: number) => boolean | Promise<boolean>;
73
+ onEdit?: (row: TRow, value: TRow[K], coords: CellCoordinates) => void | Promise<void>;
74
+ reactiveDependencies?: (row: TRow) => ReadonlyArray<unknown>;
75
+ }
76
+ /** Options for `col.checkbox({ id, header, ... })`. */
77
+ export interface CheckboxColumnOptions<TRow extends object, K extends BooleanKeyOf<TRow>> extends BaseColumnOptions {
78
+ id: K;
79
+ accessor?: (row: TRow, index: number) => TRow[K] | Promise<TRow[K]>;
80
+ isEditable?: (row: TRow, index: number) => boolean | Promise<boolean>;
81
+ onEdit?: (row: TRow, value: TRow[K], coords: CellCoordinates) => void | Promise<void>;
82
+ reactiveDependencies?: (row: TRow) => ReadonlyArray<unknown>;
83
+ }
84
+ /** Options for `col.date({ id, header, ... })`. */
85
+ export interface DateColumnOptions<TRow extends object, K extends DateKeyOf<TRow>> extends BaseColumnOptions {
86
+ id: K;
87
+ accessor?: (row: TRow, index: number) => TRow[K] | Promise<TRow[K]>;
88
+ /** Whether the time component is editable. Defaults to false (date-only). */
89
+ withTime?: boolean;
90
+ isValid?: ValidationFn<TRow>;
91
+ isEditable?: (row: TRow, index: number) => boolean | Promise<boolean>;
92
+ onEdit?: (row: TRow, value: TRow[K], coords: CellCoordinates) => void | Promise<void>;
93
+ reactiveDependencies?: (row: TRow) => ReadonlyArray<unknown>;
94
+ }
95
+ /** Options for `col.select({ id, header, options, ... })`. */
96
+ export interface SelectColumnOptions<TRow extends object, K extends keyof TRow & string, TValue = TRow[K]> extends BaseColumnOptions {
97
+ id: K;
98
+ /** Option list. Static array or an async loader called on first read. */
99
+ options: ReadonlyArray<SelectOption<TValue>> | (() => Promise<ReadonlyArray<SelectOption<TValue>>>);
100
+ /** Per-row option override. Useful when the selectable set depends on
101
+ * another field of the row (e.g. status options narrowed by category). */
102
+ rowOptions?: (row: TRow) => ReadonlyArray<SelectOption<TValue>> | Promise<ReadonlyArray<SelectOption<TValue>>>;
103
+ accessor?: (row: TRow, index: number) => TValue | Promise<TValue>;
104
+ /** Renders the cell value as a string for accessibility and preset paths.
105
+ * Defaults to the matching option label. */
106
+ getDisplayValue?: (row: TRow, index: number) => string | null | Promise<string | null>;
107
+ isValid?: ValidationFn<TRow>;
108
+ isEditable?: (row: TRow, index: number) => boolean | Promise<boolean>;
109
+ onEdit?: (row: TRow, value: TValue, coords: CellCoordinates) => void | Promise<void>;
110
+ reactiveDependencies?: (row: TRow) => ReadonlyArray<unknown>;
111
+ }
112
+ /** Options for `col.query({ id, header, query, ... })`. */
113
+ export interface QueryColumnOptions<TRow extends object, K extends keyof TRow & string, TValue = TRow[K]> extends BaseColumnOptions {
114
+ id: K;
115
+ /** Async query loader; called with the current user input and expected to
116
+ * return matching options. */
117
+ query: (input: string) => Promise<ReadonlyArray<SelectOption<TValue>>>;
118
+ accessor?: (row: TRow, index: number) => TValue | Promise<TValue>;
119
+ getDisplayValue?: (row: TRow, index: number) => string | null | Promise<string | null>;
120
+ isValid?: ValidationFn<TRow>;
121
+ isEditable?: (row: TRow, index: number) => boolean | Promise<boolean>;
122
+ onEdit?: (row: TRow, value: TValue, coords: CellCoordinates) => void | Promise<void>;
123
+ reactiveDependencies?: (row: TRow) => ReadonlyArray<unknown>;
124
+ }
125
+ /** Options for `col.display({ header, value, ... })`. A computed read-only
126
+ * cell. Auto-generates a synthetic id. */
127
+ export interface DisplayColumnOptions<TRow extends object, TValue = unknown> extends BaseColumnOptions {
128
+ /** Reads the displayed value from the row. */
129
+ value: (row: TRow, index: number) => TValue | Promise<TValue>;
130
+ /** Optional modal opened when the cell is activated; receives the row. */
131
+ modal?: Component<DisplayModalProps<TRow>>;
132
+ /** Override the auto-generated id. Rare; only useful when the consumer
133
+ * needs a stable id for preset persistence or test selectors. */
134
+ idHint?: string;
135
+ }
136
+ /** Options for `col.bubble({ header, value, colour, ... })`. Renders one or
137
+ * more coloured pill bubbles per row. */
138
+ export interface BubbleColumnOptions<TRow extends object, TValue = unknown> extends BaseColumnOptions {
139
+ /** Per-row value(s) to render. Returning an array renders one bubble per
140
+ * entry. */
141
+ value: (row: TRow, index: number) => TValue | ReadonlyArray<TValue> | Promise<TValue | ReadonlyArray<TValue>>;
142
+ /** Bubble colour. Per-value; receives both the row and the bubble's value
143
+ * so multi-bubble cells can colour each independently. */
144
+ colour: (row: TRow, index: number, value: TValue) => BubbleColour | Promise<BubbleColour>;
145
+ idHint?: string;
146
+ }
147
+ /** Options for `col.progress({ header, value, ... })`. Renders a horizontal
148
+ * progress bar from a numeric ratio. */
149
+ export interface ProgressColumnOptions<TRow extends object> extends BaseColumnOptions {
150
+ /** Returns a tuple `[current, total]` or a fraction between 0 and 1. */
151
+ value: (row: TRow, index: number) => [number, number] | number | Promise<[number, number] | number>;
152
+ /** Optional colour override. Defaults to scoria's progress colour ramp. */
153
+ colour?: (row: TRow, index: number, fraction: number) => ColourSet | Promise<ColourSet>;
154
+ idHint?: string;
155
+ }
156
+ /** Options for `col.validity({ header, ... })`. Renders the row's overall
157
+ * validity indicator and (optionally) opens a modal with the validity
158
+ * details. */
159
+ export interface ValidityColumnOptions<TRow extends object> extends BaseColumnOptions {
160
+ /** Per-row validity. Defaults to aggregating each column's `isValid`. */
161
+ isValid?: ValidationFn<TRow>;
162
+ /** Modal opened when the validity cell is activated. */
163
+ modal?: Component<DisplayModalProps<TRow>>;
164
+ idHint?: string;
165
+ }
166
+ /** Options for `col.rowSelection({ ... })`. The row-selection checkbox
167
+ * column; pair with `selection: { mode: 'single' | 'multiple' }` on the
168
+ * Table options. */
169
+ export interface RowSelectionColumnOptions<TRow extends object> {
170
+ /** Per-row selectability gate. Overrides `selection.isSelectable` when
171
+ * set; if both are present, both must return true. Async supported. */
172
+ isSelectable?: (row: TRow) => boolean | Promise<boolean>;
173
+ /** Header content for the column; defaults to the select-all checkbox. */
174
+ header?: string | Snippet;
175
+ /** Width in pixels. Defaults to a fixed compact width that matches the
176
+ * checkbox's intrinsic size. */
177
+ width?: number;
178
+ }
179
+ /** Options for `col.actions({ actions, ... })`. The row-actions column;
180
+ * renders a fixed list of action buttons per row. */
181
+ export interface ActionsColumnOptions<TRow extends object> extends Omit<BaseColumnOptions, 'header'> {
182
+ /** Header content; defaults to an empty string. */
183
+ header?: string | Snippet;
184
+ /** Action buttons rendered per row. */
185
+ actions: ReadonlyArray<RowAction<TRow>>;
186
+ /** Per-row gate for whether any actions render at all. Async supported. */
187
+ isEnabled?: (row: TRow) => boolean | Promise<boolean>;
188
+ }
189
+ /** Single row-action entry. */
190
+ export interface RowAction<TRow extends object> {
191
+ label: string;
192
+ icon?: string;
193
+ colourSet?: ColourSet;
194
+ /** Invoked when the action is clicked. Receives the row. */
195
+ callback: (row: TRow) => void | Promise<void>;
196
+ /** Per-row enable predicate; overrides `ActionsColumnOptions.isEnabled` for
197
+ * this specific action when both are set. Async supported. */
198
+ isEnabled?: (row: TRow) => boolean | Promise<boolean>;
199
+ }
200
+ /** Options for `col.expand({ name, childRows, childRowId, childColumns })`.
201
+ * Each row exposes an expand affordance that mounts an inner Table over
202
+ * the inner row collection. */
203
+ export interface ExpandColumnOptions<TRow extends object, TInner extends object, TInnerId extends Primitive = string> extends Omit<BaseColumnOptions, 'header'> {
204
+ /** Header content; defaults to the inner table's name. */
205
+ header?: string | Snippet;
206
+ /** Inner-table name segment used in the persistence storage key. The
207
+ * factory will namespace it under the outer Table's name automatically. */
208
+ name: string;
209
+ /** Inner row collection. Async return supported. */
210
+ childRows: (row: TRow) => ReadonlyArray<TInner> | Promise<ReadonlyArray<TInner>>;
211
+ /** Inner row-id extractor. Accepts either a key on `TInner` (e.g.
212
+ * `'id'`) or an extractor function. Matches the top-level `rowId`
213
+ * shape on `CreateTableOptions` so callers can use the same
214
+ * shorthand at every nesting level. */
215
+ childRowId: (keyof TInner & string) | ((inner: TInner) => TInnerId | Promise<TInnerId>);
216
+ /** Inner column declarations. Builder closure receives a typed
217
+ * `ColumnFactory<TInner>`. */
218
+ childColumns: (col: ColumnFactory<TInner>) => ReadonlyArray<ColumnSpec<TInner>>;
219
+ }
220
+ /** Options for `col.filterOnly({ id, header, ... })`. Renders in the filter
221
+ * panel only; does not produce a body cell. Useful for surfacing a
222
+ * filterable field that should not occupy a column. */
223
+ export interface FilterOnlyColumnOptions<TRow extends object, K extends keyof TRow & string, TValue = TRow[K]> extends Omit<BaseColumnOptions, 'allowSorting' | 'resizable' | 'minWidth' | 'width'> {
224
+ id: K;
225
+ /** Filter value kind; drives which filter input is rendered. */
226
+ filterValueType: FilterValueType;
227
+ /** Filter predicate for the local filter path; remote tables typically
228
+ * omit this and rely on the backend instead. */
229
+ customFilter?: CustomFilter<TValue>;
230
+ }
231
+ /** Props passed to a `DisplayColumnOptions.modal` / `ValidityColumnOptions.modal`
232
+ * Component. Mirrors the existing `DisplayDefModalProps` shape so consumers
233
+ * can reuse their existing modal components unchanged. */
234
+ export interface DisplayModalProps<TRow extends object> {
235
+ row: TRow;
236
+ /** Closes the modal. */
237
+ close: () => void;
238
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Opaque column-declaration handle returned by every `ColumnFactory` method.
3
+ *
4
+ * Consumers never read fields off a `ColumnSpec` directly; they pass the spec
5
+ * (or an array of specs) into a `Table` via the `columns:` builder. The
6
+ * internal Table implementation unwraps the spec to recover the underlying
7
+ * column definition.
8
+ *
9
+ * The `kind` discriminator is exposed so consumers can build small helpers
10
+ * that switch on it (for example, a story or a debug overlay that lists a
11
+ * Table's columns). The `id` is exposed because column ids are public-grade
12
+ * information (they appear in DOM attributes, in saved column presets, and in
13
+ * filter / sort state) and are useful for logging and debugging.
14
+ *
15
+ * The implementation detail of which `ColumnDef` subclass backs each spec
16
+ * lives behind a non-enumerable symbol-keyed property and is not part of the
17
+ * public type. Phase 2 will tighten this further.
18
+ */
19
+ export interface ColumnSpec<TRow extends object = object, Kind extends ColumnKind = ColumnKind> {
20
+ /** Discriminator literal. Useful for column-listing helpers. */
21
+ readonly kind: Kind;
22
+ /** Stable column id. Synthetic for `rowSelection`, `actions`, `expand`, and
23
+ * `filterOnly` columns; equal to the consumer-supplied key for accessor
24
+ * columns; equal to a builder-minted id for `display` / `bubble` /
25
+ * `progress` / `validity` columns. */
26
+ readonly id: string;
27
+ /** Brand. Present to make `ColumnSpec` structurally distinct from a plain
28
+ * `{ kind, id }` object literal so consumers cannot accidentally hand-roll
29
+ * one. */
30
+ readonly _scoriaColumnSpec: true;
31
+ /** Phantom; carries `TRow` through the type system so the per-kind option
32
+ * generics survive into the spec array's element type. Never read. */
33
+ readonly _row?: TRow;
34
+ }
35
+ /**
36
+ * Discriminator for `ColumnSpec`. Mirrors the names of the
37
+ * `ColumnFactory<TRow>` methods.
38
+ */
39
+ export type ColumnKind = 'text' | 'number' | 'checkbox' | 'date' | 'select' | 'query' | 'display' | 'bubble' | 'progress' | 'validity' | 'rowSelection' | 'actions' | 'expand' | 'filterOnly';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,87 @@
1
+ import type { Primitive } from '../Context/TableInitOptions.js';
2
+ import type { AnyEditEvent } from './AnyEditEvent.js';
3
+ import type { ColumnFactory } from './ColumnFactory.js';
4
+ import type { ColumnSpec } from './ColumnSpec.js';
5
+ import type { LiteralRowIdKey } from './KeyConstraints.js';
6
+ import type { RowSource } from './RowSource.js';
7
+ import type { SelectionOptions } from './SelectionOptions.js';
8
+ import type { TableInitialState } from './TableInitialState.js';
9
+ import type { TablePersistence } from './TablePersistence.js';
10
+ /**
11
+ * Top-level options accepted by `createTable<TRow, TRowId>(options)`.
12
+ *
13
+ * Layout: required fields and independent behaviour switches sit at the top
14
+ * level for autocomplete discoverability. Three grouped optionals
15
+ * (`selection`, `persistence`, `initialState`) carry coordinated multi-field
16
+ * concerns where the grouping is load-bearing.
17
+ *
18
+ * Every behaviour switch has a default that matches the current scoria
19
+ * behaviour, so a Table that omits them gets the same result it would have
20
+ * had under the existing API.
21
+ */
22
+ export interface CreateTableOptions<TRow extends object, TRowId extends Primitive = string> {
23
+ /** Unique name. Used as the namespace prefix for any persisted state
24
+ * (presets / settings / page size / active expand). Two Tables with the
25
+ * same name on the same user share storage; if that is not intended,
26
+ * vary the name per call site. */
27
+ name: string;
28
+ /** Stable row-id extractor. Function form supports composite and async
29
+ * ids; literal-key form is the shortcut for the common case
30
+ * `rowId: 'id'`. */
31
+ rowId: ((row: TRow) => TRowId | Promise<TRowId>) | LiteralRowIdKey<TRow, TRowId>;
32
+ /** Row data source. One of `localRows(...)`, `remoteRows(...)`, or
33
+ * `customRows(...)` (or an inline object with the matching `kind`). */
34
+ rows: RowSource<TRow>;
35
+ /** Column declarations. The closure receives a typed `ColumnFactory<TRow>`;
36
+ * return the column specs in memory order. */
37
+ columns: (col: ColumnFactory<TRow>) => ReadonlyArray<ColumnSpec<TRow>>;
38
+ /** Selection. Defaults to `{ mode: 'multiple' }` with internal map ownership. */
39
+ selection?: SelectionOptions<TRow, TRowId>;
40
+ /** Persistence. Defaults to all layers enabled. Pass `false` to disable
41
+ * everything, an object to enable a subset. */
42
+ persistence?: TablePersistence;
43
+ /** Initial state applied before persistence hydration. Persistence wins
44
+ * when both have a value for the same field. */
45
+ initialState?: TableInitialState<TRow>;
46
+ /** Toolbar position. Defaults to `'right'`. */
47
+ toolbar?: 'top' | 'right' | 'left' | 'none';
48
+ /** Whether to render the footer. Defaults to true. */
49
+ showFooter?: boolean;
50
+ /** Whether copy operations are enabled. Defaults to true. */
51
+ allowCopy?: boolean;
52
+ /** Whether columns may be user-resized. Defaults to true. */
53
+ allowResize?: boolean;
54
+ /** Whether columns may be user-reordered. Defaults to true. */
55
+ allowReorder?: boolean;
56
+ /** Whether the quick-filter (per-column inline filter) is offered.
57
+ * Defaults to true. */
58
+ allowQuickFilter?: boolean;
59
+ /** Whether the advanced filter panel is offered. Defaults to true. */
60
+ allowAdvancedFilter?: boolean;
61
+ /** Whether the quick-filter input row is open at first mount. Defaults
62
+ * to true. */
63
+ showQuickFilterByDefault?: boolean;
64
+ /** Clipboard format. Defaults to `'tsv'`. */
65
+ copyFormat?: 'tsv' | 'csv';
66
+ /** Whether the header row is included in copy output. Defaults to true. */
67
+ copyWithHeaders?: boolean;
68
+ /** Page-size options shown in the footer's page-size picker. Defaults to
69
+ * `[10, 25, 50, 100]`. */
70
+ pageSizes?: ReadonlyArray<number>;
71
+ /** Row count above which virtualisation kicks in. Defaults to 100;
72
+ * matches Phase 7.4. */
73
+ rowVirtualisationThreshold?: number;
74
+ /** Fires after every cell edit, regardless of column. Use for change
75
+ * tracking, batched saves, telemetry. `value` is `unknown` at this
76
+ * seam; use per-column `onEdit` for the typed value. When both are
77
+ * configured, per-column fires first; `onAnyEdit` runs after the
78
+ * per-column callback resolves. A per-column callback that throws or
79
+ * rejects suppresses the corresponding `onAnyEdit`. */
80
+ onAnyEdit?: (event: AnyEditEvent<TRow>) => void | Promise<void>;
81
+ /** Identity for storage namespacing and remote-request authentication.
82
+ * Defaults to `() => undefined`, which namespaces persisted state under
83
+ * the literal segment `'anon'`. */
84
+ getUserId?: () => string | undefined;
85
+ /** Per-Table debug logging gate. Defaults to false. */
86
+ debug?: boolean;
87
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Type-level helpers that constrain a column id to the subset of `keyof TRow`
3
+ * whose value type matches the column kind. Used by `ColumnFactory` to give
4
+ * `col.text({ id: ... })` an `id` autocomplete that only lists string-typed
5
+ * fields, `col.number({ id: ... })` an `id` autocomplete that only lists
6
+ * number-typed fields, and so on.
7
+ *
8
+ * Each helper is structurally equivalent to:
9
+ *
10
+ * ```ts
11
+ * { [K in keyof TRow & string]: NonNullable<TRow[K]> extends Kind ? K : never }[keyof TRow & string]
12
+ * ```
13
+ *
14
+ * with `Kind` set to `string`, `number`, `boolean`, or `Date`.
15
+ *
16
+ * The `NonNullable<...>` unwrap means optional/nullable fields are still
17
+ * accepted (`reference?: string` and `reference: string | null` both qualify
18
+ * for `text`), which matches how the existing accessor cells render nullable
19
+ * values. Branded primitives flow through unchanged because they structurally
20
+ * extend their underlying type.
21
+ */
22
+ /** Subset of `keyof TRow` whose (non-nullable) value type is a string. */
23
+ export type StringKeyOf<TRow extends object> = {
24
+ [K in keyof TRow & string]: NonNullable<TRow[K]> extends string ? K : never;
25
+ }[keyof TRow & string];
26
+ /** Subset of `keyof TRow` whose (non-nullable) value type is a number. */
27
+ export type NumberKeyOf<TRow extends object> = {
28
+ [K in keyof TRow & string]: NonNullable<TRow[K]> extends number ? K : never;
29
+ }[keyof TRow & string];
30
+ /** Subset of `keyof TRow` whose (non-nullable) value type is a boolean. */
31
+ export type BooleanKeyOf<TRow extends object> = {
32
+ [K in keyof TRow & string]: NonNullable<TRow[K]> extends boolean ? K : never;
33
+ }[keyof TRow & string];
34
+ /** Subset of `keyof TRow` whose (non-nullable) value type is a `Date`. */
35
+ export type DateKeyOf<TRow extends object> = {
36
+ [K in keyof TRow & string]: NonNullable<TRow[K]> extends Date ? K : never;
37
+ }[keyof TRow & string];
38
+ /** The literal-key form of `rowId`. Narrows to the subset of `keyof TRow`
39
+ * whose value type extends `TRowId`. */
40
+ export type LiteralRowIdKey<TRow extends object, TRowId> = {
41
+ [K in keyof TRow & string]: TRow[K] extends TRowId ? K : never;
42
+ }[keyof TRow & string];
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Type-level helpers that constrain a column id to the subset of `keyof TRow`
3
+ * whose value type matches the column kind. Used by `ColumnFactory` to give
4
+ * `col.text({ id: ... })` an `id` autocomplete that only lists string-typed
5
+ * fields, `col.number({ id: ... })` an `id` autocomplete that only lists
6
+ * number-typed fields, and so on.
7
+ *
8
+ * Each helper is structurally equivalent to:
9
+ *
10
+ * ```ts
11
+ * { [K in keyof TRow & string]: NonNullable<TRow[K]> extends Kind ? K : never }[keyof TRow & string]
12
+ * ```
13
+ *
14
+ * with `Kind` set to `string`, `number`, `boolean`, or `Date`.
15
+ *
16
+ * The `NonNullable<...>` unwrap means optional/nullable fields are still
17
+ * accepted (`reference?: string` and `reference: string | null` both qualify
18
+ * for `text`), which matches how the existing accessor cells render nullable
19
+ * values. Branded primitives flow through unchanged because they structurally
20
+ * extend their underlying type.
21
+ */
22
+ export {};
@@ -0,0 +1,87 @@
1
+ import type { RefWrapper } from '../../../../Types/Internal/RefWrapper.js';
2
+ import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
3
+ import type { SortingState } from '../DataRepository/SortingState.js';
4
+ /**
5
+ * Data source for a Table. One of three variants:
6
+ *
7
+ * - `local`: in-memory array, optionally `$state`-reactive.
8
+ * - `remote`: HTTP endpoint with library-managed pagination, filter, and sort
9
+ * serialisation. Replaces the per-consumer remote-repository boilerplate.
10
+ * - `custom`: full control via a consumer-supplied `fetch` function. The
11
+ * library calls it on every pagination / filter / sort change with an
12
+ * `AbortSignal` for cancellation.
13
+ *
14
+ * The `kind` discriminator is what the implementation switches on. The two
15
+ * helper exports `localRows(...)` and `remoteRows(...)` (defined in the
16
+ * factory module) stamp the `kind` literal so consumers do not have to
17
+ * remember which string to write.
18
+ */
19
+ export type RowSource<TRow extends object> = LocalRowSource<TRow> | RemoteRowSource<TRow> | CustomRowSource<TRow>;
20
+ /** In-memory row source. */
21
+ export interface LocalRowSource<TRow extends object> {
22
+ kind: 'local';
23
+ /** Source array. A `RefWrapper<Array<TRow>>` is reactive (the Table picks
24
+ * up mutations and reassignments); a plain array is a snapshot at init
25
+ * time. */
26
+ source: RefWrapper<Array<TRow>> | ReadonlyArray<TRow>;
27
+ /** Optional pre-filter applied before user-driven column filters. Use for
28
+ * permanent visibility rules (e.g. "exclude archived rows"). */
29
+ initialFilter?: (row: TRow) => boolean;
30
+ }
31
+ /** Remote row source. The library handles URL construction, filter encoding,
32
+ * page-size persistence, debounced reload, and abort-on-supersession. */
33
+ export interface RemoteRowSource<TRow extends object> {
34
+ kind: 'remote';
35
+ /** Endpoint URL. May be a path (joined onto the application origin) or an
36
+ * absolute URL. */
37
+ endpoint: string;
38
+ /** HTTP method. Defaults to `'GET'`. `'POST'` puts pagination / filter /
39
+ * sort state into the request body alongside any caller-supplied body
40
+ * shape via `filterEncoding`. */
41
+ method?: 'GET' | 'POST';
42
+ /** Filters merged into every request. Useful for permanent context such as
43
+ * the current warehouse or tenant id. Re-evaluated per request, so a
44
+ * reactive read here triggers a reload. */
45
+ defaultFilters?: () => Record<string, unknown>;
46
+ /** Transforms a raw response into the row array and total row count. If
47
+ * omitted, the library expects `{ rows: TRow[]; totalRows: number }` and
48
+ * reports a clear error if the shape does not match. */
49
+ responseTransform?: (raw: unknown) => {
50
+ rows: ReadonlyArray<TRow>;
51
+ totalRows: number;
52
+ };
53
+ /** Encoding strategy for pagination, filters, and sort. Defaults to
54
+ * `'query-string'`. Pass a custom function for full control. */
55
+ filterEncoding?: 'query-string' | 'json-body' | {
56
+ encode: (request: Pick<RowFetchRequest, 'page' | 'pageSize' | 'filters' | 'sort'>) => RequestInit;
57
+ };
58
+ /** Per-request headers. Authentication tokens, content negotiation, etc.
59
+ * Invoked once per request. */
60
+ headers?: () => Record<string, string>;
61
+ /** Debounce window in milliseconds before issuing a request after the
62
+ * state changes. Defaults to 300 ms while a filter input has focus,
63
+ * 0 ms otherwise. Pass `false` to disable. */
64
+ reloadDebounce?: number | false;
65
+ }
66
+ /** Custom row source. Consumer-supplied `fetch` is called on every
67
+ * pagination / filter / sort change. */
68
+ export interface CustomRowSource<TRow extends object> {
69
+ kind: 'custom';
70
+ /** Called whenever the Table needs new rows. The library passes an
71
+ * `AbortSignal` so consumers can cancel an in-flight request when its
72
+ * result is superseded. */
73
+ fetch: (request: RowFetchRequest) => Promise<RowFetchResponse<TRow>>;
74
+ }
75
+ /** Argument passed to `CustomRowSource.fetch`. */
76
+ export interface RowFetchRequest {
77
+ page: number;
78
+ pageSize: number;
79
+ filters: ColumnFiltersState;
80
+ sort: SortingState;
81
+ signal: AbortSignal;
82
+ }
83
+ /** Return value of `CustomRowSource.fetch`. */
84
+ export interface RowFetchResponse<TRow> {
85
+ rows: ReadonlyArray<TRow>;
86
+ totalRows: number;
87
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import type { SvelteMap } from 'svelte/reactivity';
2
+ import type { Primitive } from '../Context/TableInitOptions.js';
3
+ /**
4
+ * Selection configuration. Decided at construction time and immutable for the
5
+ * lifetime of the Table. Late binding via a `setSelectionMap`-style method is
6
+ * deliberately not supported; the construction-time form covers every audited
7
+ * use case in the consumer.
8
+ *
9
+ * Default when omitted: `{ mode: 'multiple' }` with internal map ownership.
10
+ *
11
+ * `bindTo` is the externally-owned-map form: pass a `SvelteMap<TRowId, TRow>`
12
+ * and the Table writes through to it. Reads from `table.selection.map` return
13
+ * the same map reference. Useful when a wizard step or modal owns the
14
+ * selection state and needs it to outlive the Table mount.
15
+ */
16
+ export type SelectionOptions<TRow extends object, TRowId extends Primitive> = {
17
+ mode: 'none';
18
+ } | {
19
+ mode: 'single' | 'multiple';
20
+ /** Per-row selectability predicate. Defaults to `() => true`. Async
21
+ * return supported. */
22
+ isSelectable?: (row: TRow) => boolean | Promise<boolean>;
23
+ /** External map to write selections through. When omitted, the Table
24
+ * owns its own internal `SvelteMap`. */
25
+ bindTo?: SvelteMap<TRowId, TRow>;
26
+ };
@@ -0,0 +1,39 @@
1
+ import type { Primitive } from '../Context/TableInitOptions.js';
2
+ import type { ClipboardApi, ColumnsApi, FilteringApi, FocusApi, PaginationApi, PreferencesApi, SelectionApi, SortingApi } from './TableSubApis.js';
3
+ /**
4
+ * Public Table instance returned by `createTable(...)`. Mount the underlying
5
+ * Table component via `<Table {table} />`; the structured object below is
6
+ * the surface every consumer reads and writes against.
7
+ *
8
+ * The interface is reactive throughout: `table.rows` re-runs the consumer's
9
+ * expression whenever the current page or filter state changes;
10
+ * `table.selection.map` is the underlying `SvelteMap` (whether internally
11
+ * owned or externally bound via `selection.bindTo`); each sub-API is a thin
12
+ * facade over the corresponding internal sub-context.
13
+ *
14
+ * Lifecycle: `reload()` is a no-op for local tables and forwards to the
15
+ * underlying fetch for remote / custom tables. `destroy()` is currently a
16
+ * no-op; Phase 2 introduces a real teardown hook when `<Table>` consumes the
17
+ * structured instance directly.
18
+ */
19
+ export interface Table<TRow extends object, TRowId extends Primitive> {
20
+ readonly name: string;
21
+ /** Current page of rows. Post-filter, post-sort, paginated. Reactive. */
22
+ readonly rows: ReadonlyArray<TRow>;
23
+ /** Total row count across every page after filtering. Reactive. */
24
+ readonly totalRows: number;
25
+ /** Whether the underlying data source is currently fetching. Reactive. */
26
+ readonly isLoading: boolean;
27
+ readonly columns: ColumnsApi<TRow>;
28
+ readonly selection: SelectionApi<TRow, TRowId>;
29
+ readonly filtering: FilteringApi<TRow>;
30
+ readonly sorting: SortingApi<TRow>;
31
+ readonly pagination: PaginationApi;
32
+ readonly focus: FocusApi<TRow>;
33
+ readonly preferences: PreferencesApi<TRow>;
34
+ readonly clipboard: ClipboardApi<TRow>;
35
+ /** Trigger a refetch (remote / custom) or a recompute (local). */
36
+ reload(): Promise<void>;
37
+ /** Tear down any subscriptions and abort in-flight requests. */
38
+ destroy(): void;
39
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Initial state applied to a Table immediately after construction, before
3
+ * any persisted state is loaded. When both `initialState` and persistence
4
+ * have a value for the same field, persistence wins (so user-saved presets
5
+ * survive a code change to `initialState`).
6
+ *
7
+ * Every field is optional. Omitted fields fall through to the default state
8
+ * the Table would otherwise have used.
9
+ */
10
+ export interface TableInitialState<TRow extends object> {
11
+ /** Initial sort. Multiple entries express multi-column sort with the
12
+ * first entry as the primary sort key. */
13
+ sortBy?: ReadonlyArray<{
14
+ id: keyof TRow & string;
15
+ /** When omitted, defaults to ascending. */
16
+ desc?: boolean;
17
+ }>;
18
+ /** Initial column filters keyed by column id. Use values of the same
19
+ * shape the column's filter input would produce. */
20
+ filters?: ReadonlyMap<string, unknown>;
21
+ /** Initial column visibility. Keys are column ids; missing keys retain the
22
+ * column's `defaultHidden` value. */
23
+ columnVisibility?: Partial<Record<string, boolean>>;
24
+ /** Whether to start in compact mode. */
25
+ compact?: boolean;
26
+ }