@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,454 @@
1
+ /**
2
+ * Built-in remote data repository used by `createTable({ rows: { kind: 'remote' } })`.
3
+ *
4
+ * Phase 1 of the new Table API: this class absorbs the URL construction,
5
+ * filter encoding, pagination, sort, debouncing, and page-size persistence
6
+ * that every consumer was previously reimplementing for itself (see the
7
+ * FloWMS-owned `RemoteTableDataRepository.svelte.ts` for the prior shape).
8
+ *
9
+ * The default filter-encoding strategy is `'query-string'`, which produces
10
+ * a flat `?filter[<id>]=<value>&page=<n>&pageSize=<m>&sort=<col>&direction=<asc|desc>`
11
+ * URL. Consumers whose backend expects a different shape pass a custom
12
+ * `filterEncoding: { encode }` function. Consumers needing complete
13
+ * control over the request lifecycle drop to `kind: 'custom'`, which
14
+ * bypasses this repository entirely.
15
+ *
16
+ * The repository extends `TableDataRepository` for its pagination-state /
17
+ * filter-modes / force-refresh plumbing and implements
18
+ * `IRemoteDataRepository<TRow>` for the surface `TableContext` consumes.
19
+ *
20
+ * @remarks
21
+ *
22
+ * Out of scope for Phase 1:
23
+ *
24
+ * - Sophisticated filter-mode encoding (`StringFilterMode.NotIn`, the
25
+ * `[min, max]` tuple form for ranges, etc.). The Phase 1 default
26
+ * encoder emits raw `?filter[<id>]=<JSON-encoded-value>`. Consumers
27
+ * needing the rich encoding the FloWMS repo currently does should pass
28
+ * a custom encoder in Phase 1 and we will lift the common encodings
29
+ * into the library in Phase 2 once the audit of the consumer's actual
30
+ * backend shape is complete.
31
+ * - The five filter callbacks (`dateFilter` / `numberFilter` / etc.).
32
+ * These are local-only and not meaningful for a remote source. The
33
+ * interface inherits them as optional; left undefined here.
34
+ */
35
+ import { browser } from '$app/environment';
36
+ import { devCatch } from '../../../../Helpers/Helpers.svelte.js';
37
+ import { FilterType } from '../Filtering/FilterType.js';
38
+ import { PaginationType } from '../Pagination/PaginationType.js';
39
+ import { TableDataRepository } from './TableDataRepository.svelte.js';
40
+ export class BuiltInRemoteRepository extends TableDataRepository {
41
+ _options;
42
+ paginationType = PaginationType.Remote;
43
+ filterType = FilterType.Virtual;
44
+ manualSorting = true;
45
+ _data = $state([]);
46
+ get data() {
47
+ return this._data;
48
+ }
49
+ set data(v) {
50
+ this._data = v;
51
+ }
52
+ _totalRows = $state(0);
53
+ get totalRows() {
54
+ return this._totalRows;
55
+ }
56
+ set totalRows(v) {
57
+ this._totalRows = v;
58
+ }
59
+ _lastPage = $state(0);
60
+ get lastPage() {
61
+ return this._lastPage;
62
+ }
63
+ set lastPage(v) {
64
+ this._lastPage = v;
65
+ }
66
+ _isLoading = $state(false);
67
+ get isLoading() {
68
+ return this._isLoading;
69
+ }
70
+ loadingMessage = undefined;
71
+ _sorting = $state([]);
72
+ get sorting() {
73
+ return this._sorting;
74
+ }
75
+ set sorting(v) {
76
+ this._sorting = v;
77
+ }
78
+ _filtering = $state([]);
79
+ get filtering() {
80
+ return this._filtering;
81
+ }
82
+ _abortController = null;
83
+ _debounceTimer = null;
84
+ _quickFilterFocusCount = 0;
85
+ constructor(_options) {
86
+ super(_options.tableName, _options.getUserId);
87
+ this._options = _options;
88
+ // Restore persisted page size if present.
89
+ if (browser) {
90
+ const userId = this.getUserId() ?? 'anon';
91
+ const saved = localStorage.getItem(`scoria-table:${userId}:${_options.tableName}:page-size`);
92
+ if (saved !== null) {
93
+ const parsed = Number.parseInt(saved, 10);
94
+ if (Number.isFinite(parsed) && parsed > 0) {
95
+ this.paginationState = { pageIndex: 0, pageSize: parsed };
96
+ }
97
+ }
98
+ else if (_options.pageSize) {
99
+ this.paginationState = { pageIndex: 0, pageSize: _options.pageSize };
100
+ }
101
+ }
102
+ }
103
+ // ── IRemoteDataRepository surface ────────────────────────────────
104
+ setFilterMode = (id, mode) => {
105
+ this._filterModes.set(id, mode);
106
+ this.scheduleReload();
107
+ };
108
+ filterBy = (id, value) => {
109
+ const existing = this._filtering.findIndex((f) => f.id === id);
110
+ const next = [...this._filtering];
111
+ if (value === undefined || value === null || value === '') {
112
+ if (existing !== -1) {
113
+ next.splice(existing, 1);
114
+ }
115
+ }
116
+ else {
117
+ const entry = { id, value };
118
+ if (existing !== -1) {
119
+ next[existing] = entry;
120
+ }
121
+ else {
122
+ next.push(entry);
123
+ }
124
+ }
125
+ this._filtering = next;
126
+ this.scheduleReload();
127
+ };
128
+ resetFilters = () => {
129
+ this._filtering = [];
130
+ this.scheduleReload();
131
+ };
132
+ setPage = (page) => {
133
+ this.paginationState = { ...this.paginationState, pageIndex: page };
134
+ this.scheduleReload({ immediate: true });
135
+ };
136
+ nextPage = () => {
137
+ this.setPage(this.paginationState.pageIndex + 1);
138
+ };
139
+ prevPage = () => {
140
+ this.setPage(Math.max(0, this.paginationState.pageIndex - 1));
141
+ };
142
+ setPageSize = (size) => {
143
+ const parsed = typeof size === 'number' ? size : Number.parseInt(size, 10);
144
+ if (!Number.isFinite(parsed) || parsed <= 0) {
145
+ return;
146
+ }
147
+ this.paginationState = { pageIndex: 0, pageSize: parsed };
148
+ this.scheduleReload({ immediate: true });
149
+ };
150
+ updateSorting = (next) => {
151
+ this._sorting = typeof next === 'function' ? next(this._sorting) : next;
152
+ this.scheduleReload({ immediate: true });
153
+ };
154
+ get pageStartIndex() {
155
+ return this.paginationState.pageIndex * this.paginationState.pageSize;
156
+ }
157
+ get pageEndIndexExclusive() {
158
+ return Math.min(this.pageStartIndex + this.paginationState.pageSize, this._totalRows);
159
+ }
160
+ /**
161
+ * Fetches a fresh page from the configured endpoint. Cancels any
162
+ * in-flight request first. The `debounced` flag (when true) coalesces
163
+ * rapid calls into a single trailing request after the configured
164
+ * debounce window.
165
+ */
166
+ reload = async (debounced) => {
167
+ if (debounced) {
168
+ this.scheduleReload();
169
+ return;
170
+ }
171
+ await this._reloadNow();
172
+ };
173
+ // ── Internals ──────────────────────────────────────────────────
174
+ scheduleReload(opts) {
175
+ const debounce = opts?.immediate ? 0 : this._options.reloadDebounce;
176
+ if (debounce === false) {
177
+ return;
178
+ }
179
+ if (this._debounceTimer !== null) {
180
+ clearTimeout(this._debounceTimer);
181
+ }
182
+ const delay = typeof debounce === 'number' ? debounce : this._quickFilterFocusCount > 0 ? 300 : 0;
183
+ this._debounceTimer = setTimeout(() => {
184
+ this._debounceTimer = null;
185
+ void this._reloadNow();
186
+ }, delay);
187
+ }
188
+ async _reloadNow() {
189
+ this._abortController?.abort();
190
+ const controller = new AbortController();
191
+ this._abortController = controller;
192
+ const merged = this._buildMergedFilters();
193
+ const request = this._buildRequestInit(merged, controller.signal);
194
+ this._isLoading = true;
195
+ try {
196
+ const url = this._buildUrl(merged);
197
+ const response = await fetch(url, request);
198
+ if (!response.ok) {
199
+ throw new Error(`scoria: remote table fetch failed (${response.status} ${response.statusText})`);
200
+ }
201
+ const raw = await response.json();
202
+ if (controller.signal.aborted) {
203
+ return;
204
+ }
205
+ const transformed = this._applyResponseTransform(raw);
206
+ this._data = [...transformed.rows];
207
+ this._totalRows = transformed.totalRows;
208
+ this._lastPage = Math.max(0, Math.ceil(transformed.totalRows / this.paginationState.pageSize) - 1);
209
+ }
210
+ catch (e) {
211
+ if (e.name === 'AbortError') {
212
+ return;
213
+ }
214
+ devCatch(e);
215
+ }
216
+ finally {
217
+ if (this._abortController === controller) {
218
+ this._isLoading = false;
219
+ }
220
+ }
221
+ }
222
+ _buildMergedFilters() {
223
+ // Transient request-scoped map; consumed immediately by `_buildUrl` /
224
+ // `_buildRequestInit`, never observed reactively.
225
+ // eslint-disable-next-line svelte/prefer-svelte-reactivity
226
+ const merged = new Map();
227
+ const defaults = this._options.defaultFilters?.();
228
+ if (defaults) {
229
+ for (const [k, v] of Object.entries(defaults)) {
230
+ merged.set(k, v);
231
+ }
232
+ }
233
+ for (const f of this._filtering) {
234
+ merged.set(f.id, f.value);
235
+ }
236
+ return merged;
237
+ }
238
+ _buildUrl(_mergedFilters) {
239
+ const encoding = this._options.filterEncoding ?? 'query-string';
240
+ if (encoding === 'json-body' || typeof encoding === 'object') {
241
+ // For POST-body encodings the URL is the bare endpoint; the body
242
+ // carries pagination, filters, and sort.
243
+ return this._options.endpoint;
244
+ }
245
+ // Default: query-string encoding. The URL is constructed for the
246
+ // current request only; reactivity is not required.
247
+ // eslint-disable-next-line svelte/prefer-svelte-reactivity
248
+ const url = new URL(this._options.endpoint, browser ? window.location.origin : 'http://localhost');
249
+ const params = url.searchParams;
250
+ params.set('page', String(this.paginationState.pageIndex));
251
+ params.set('pageSize', String(this.paginationState.pageSize));
252
+ for (const sort of this._sorting) {
253
+ params.append('sort', sort.id);
254
+ params.append('direction', sort.desc ? 'desc' : 'asc');
255
+ }
256
+ for (const [id, value] of _mergedFilters) {
257
+ const mode = this._filterModes.get(id);
258
+ if (mode) {
259
+ params.set(`filter[${id}][mode]`, mode);
260
+ }
261
+ params.set(`filter[${id}]`, typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'
262
+ ? String(value)
263
+ : JSON.stringify(value));
264
+ }
265
+ return url.toString();
266
+ }
267
+ _buildRequestInit(merged, signal) {
268
+ const method = this._options.method ?? 'GET';
269
+ const headers = {
270
+ 'Content-Type': 'application/json',
271
+ ...this._options.headers?.(),
272
+ };
273
+ const encoding = this._options.filterEncoding ?? 'query-string';
274
+ if (typeof encoding === 'object') {
275
+ // Custom encoding: ask the consumer for the full RequestInit.
276
+ const custom = encoding.encode({
277
+ page: this.paginationState.pageIndex,
278
+ pageSize: this.paginationState.pageSize,
279
+ filters: this._filtering,
280
+ sort: this._sorting,
281
+ });
282
+ return { signal, headers, ...custom };
283
+ }
284
+ if (encoding === 'json-body') {
285
+ const body = {
286
+ page: this.paginationState.pageIndex,
287
+ pageSize: this.paginationState.pageSize,
288
+ filters: Object.fromEntries(merged),
289
+ sort: this._sorting,
290
+ };
291
+ return { method, headers, signal, body: JSON.stringify(body) };
292
+ }
293
+ return { method, headers, signal };
294
+ }
295
+ _applyResponseTransform(raw) {
296
+ const transformer = this._options.responseTransform;
297
+ if (transformer) {
298
+ return transformer(raw);
299
+ }
300
+ // Default shape: `{ rows: TRow[]; totalRows: number }`.
301
+ if (raw !== null &&
302
+ typeof raw === 'object' &&
303
+ 'rows' in raw &&
304
+ 'totalRows' in raw &&
305
+ Array.isArray(raw.rows)) {
306
+ const o = raw;
307
+ return { rows: o.rows, totalRows: o.totalRows };
308
+ }
309
+ throw new Error(`scoria: remote table response did not match the expected { rows, totalRows } shape. ` +
310
+ `Pass a 'responseTransform' option to RemoteRowSource if your backend returns a different shape.`);
311
+ }
312
+ }
313
+ /**
314
+ * Thin adapter for `kind: 'custom'`. Delegates to a consumer-supplied
315
+ * `fetch` function on every page / filter / sort change. Inherits
316
+ * `TableDataRepository` for pagination and filter-mode plumbing.
317
+ */
318
+ export class CustomRemoteRepository extends TableDataRepository {
319
+ _fetch;
320
+ paginationType = PaginationType.Remote;
321
+ filterType = FilterType.Virtual;
322
+ manualSorting = true;
323
+ _data = $state([]);
324
+ get data() {
325
+ return this._data;
326
+ }
327
+ set data(v) {
328
+ this._data = v;
329
+ }
330
+ _totalRows = $state(0);
331
+ get totalRows() {
332
+ return this._totalRows;
333
+ }
334
+ set totalRows(v) {
335
+ this._totalRows = v;
336
+ }
337
+ _lastPage = $state(0);
338
+ get lastPage() {
339
+ return this._lastPage;
340
+ }
341
+ set lastPage(v) {
342
+ this._lastPage = v;
343
+ }
344
+ _isLoading = $state(false);
345
+ get isLoading() {
346
+ return this._isLoading;
347
+ }
348
+ loadingMessage = undefined;
349
+ _sorting = $state([]);
350
+ get sorting() {
351
+ return this._sorting;
352
+ }
353
+ set sorting(v) {
354
+ this._sorting = v;
355
+ }
356
+ _filtering = $state([]);
357
+ get filtering() {
358
+ return this._filtering;
359
+ }
360
+ _abortController = null;
361
+ constructor(tableName, getUserId, _fetch) {
362
+ super(tableName, getUserId);
363
+ this._fetch = _fetch;
364
+ }
365
+ setFilterMode = (id, mode) => {
366
+ this._filterModes.set(id, mode);
367
+ void this.reload();
368
+ };
369
+ filterBy = (id, value) => {
370
+ const existing = this._filtering.findIndex((f) => f.id === id);
371
+ const next = [...this._filtering];
372
+ if (value === undefined || value === null || value === '') {
373
+ if (existing !== -1) {
374
+ next.splice(existing, 1);
375
+ }
376
+ }
377
+ else {
378
+ const entry = { id, value };
379
+ if (existing !== -1) {
380
+ next[existing] = entry;
381
+ }
382
+ else {
383
+ next.push(entry);
384
+ }
385
+ }
386
+ this._filtering = next;
387
+ void this.reload();
388
+ };
389
+ resetFilters = () => {
390
+ this._filtering = [];
391
+ void this.reload();
392
+ };
393
+ setPage = (page) => {
394
+ this.paginationState = { ...this.paginationState, pageIndex: page };
395
+ void this.reload();
396
+ };
397
+ nextPage = () => {
398
+ this.setPage(this.paginationState.pageIndex + 1);
399
+ };
400
+ prevPage = () => {
401
+ this.setPage(Math.max(0, this.paginationState.pageIndex - 1));
402
+ };
403
+ setPageSize = (size) => {
404
+ const parsed = typeof size === 'number' ? size : Number.parseInt(size, 10);
405
+ if (!Number.isFinite(parsed) || parsed <= 0) {
406
+ return;
407
+ }
408
+ this.paginationState = { pageIndex: 0, pageSize: parsed };
409
+ void this.reload();
410
+ };
411
+ updateSorting = (next) => {
412
+ this._sorting = typeof next === 'function' ? next(this._sorting) : next;
413
+ void this.reload();
414
+ };
415
+ get pageStartIndex() {
416
+ return this.paginationState.pageIndex * this.paginationState.pageSize;
417
+ }
418
+ get pageEndIndexExclusive() {
419
+ return Math.min(this.pageStartIndex + this.paginationState.pageSize, this._totalRows);
420
+ }
421
+ reload = async () => {
422
+ this._abortController?.abort();
423
+ const controller = new AbortController();
424
+ this._abortController = controller;
425
+ this._isLoading = true;
426
+ try {
427
+ const request = {
428
+ page: this.paginationState.pageIndex,
429
+ pageSize: this.paginationState.pageSize,
430
+ filters: this._filtering,
431
+ sort: this._sorting,
432
+ signal: controller.signal,
433
+ };
434
+ const response = await this._fetch(request);
435
+ if (controller.signal.aborted) {
436
+ return;
437
+ }
438
+ this._data = [...response.rows];
439
+ this._totalRows = response.totalRows;
440
+ this._lastPage = Math.max(0, Math.ceil(response.totalRows / this.paginationState.pageSize) - 1);
441
+ }
442
+ catch (e) {
443
+ if (e.name === 'AbortError') {
444
+ return;
445
+ }
446
+ devCatch(e);
447
+ }
448
+ finally {
449
+ if (this._abortController === controller) {
450
+ this._isLoading = false;
451
+ }
452
+ }
453
+ };
454
+ }
@@ -7,6 +7,27 @@ import type { OnChangeFn } from '../OnChangeFn.js';
7
7
  import type { PaginationState } from '../Pagination/PaginationState.js';
8
8
  import type { PaginationType } from '../Pagination/PaginationType.js';
9
9
  import type { SortingState } from './SortingState.js';
10
+ /**
11
+ * Union surface implemented by both `LocalTableDataRepository` and any
12
+ * consumer-supplied remote repository. `TableContext` reads from `dataRepo`
13
+ * and `paginationRepo` via this contract; everything reactive is exposed
14
+ * through the underlying `$state`-backed properties on the implementation.
15
+ *
16
+ * Implementers are responsible for:
17
+ *
18
+ * - Snapshot consistency: `data`, `totalRows`, `pageStartIndex`,
19
+ * `pageEndIndexExclusive`, and `paginationState` must all describe the
20
+ * same logical page when read together.
21
+ * - Filter safety (remote): `filterBy` accepts `unknown` here for backwards
22
+ * compatibility; remote implementations MUST escape values before
23
+ * forwarding to a backend (URL encoding, parameterised SQL, etc.). Nothing
24
+ * in scoria enforces this and no validation happens server-side on
25
+ * scoria's behalf.
26
+ * - LSP: `setPageSize: (size: number) => void` is widened to
27
+ * `(size: number | string) => void` in the concrete repositories so they
28
+ * can accept page-size inputs from a `<select>` element. Callers that hold
29
+ * the base interface should always pass `number`.
30
+ */
10
31
  export interface IDataRepository<T extends object> {
11
32
  paginationState: PaginationState;
12
33
  setPageSize: (size: number) => void;
@@ -3,6 +3,16 @@ import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
3
3
  import type { BoolFilterValueType, DateFilterValueType, FilterFn, NumberFilterValueType, SelectFilterValueType, StringFilterValueType } from '../Filtering/FilterFn.js';
4
4
  import type { FilterMode } from '../Filtering/FilterMode.js';
5
5
  import type { IDataRepository } from './IDataRepository.js';
6
+ /**
7
+ * Repository contract for in-memory tables. Narrows `paginationType` to the
8
+ * `'Local'` literal so consumers can discriminate on it. All filter functions
9
+ * are required (the local repository must filter rows itself because there
10
+ * is no backend to delegate to).
11
+ *
12
+ * `setPageSize` is widened from `(size: number) => void` to
13
+ * `(size: number | string) => void` to accept input values from a HTML
14
+ * `<select>` element directly without an intermediate parse step.
15
+ */
6
16
  export interface ILocalDataRepository<T extends object> extends IDataRepository<T> {
7
17
  readonly paginationType: 'Local';
8
18
  setPageSize: (size: number | string) => void;
@@ -2,6 +2,22 @@ import type { SvelteMap } from 'svelte/reactivity';
2
2
  import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
3
3
  import type { FilterMode } from '../Filtering/FilterMode.js';
4
4
  import type { IDataRepository } from './IDataRepository.js';
5
+ /**
6
+ * Repository contract for remotely-paged tables. Narrows `paginationType` to
7
+ * the `'Remote'` literal and makes `lastPage` required (the remote backend
8
+ * is authoritative on the page count). Filter functions are inherited but
9
+ * left optional because remote tables typically delegate filtering to the
10
+ * backend and only need a subset of client-side filter functions.
11
+ *
12
+ * `reload` accepts a `debounced` flag so consumers can request a
13
+ * batched reload (e.g. while the user is still typing into a filter input).
14
+ *
15
+ * Security note: remote implementations MUST escape filter values and
16
+ * column ids before forwarding them to the backend. The interface signature
17
+ * accepts `unknown` for `filterBy(value)` for backwards compatibility, but
18
+ * the implementation must validate it. See the security section of the
19
+ * `IDataRepository` JSDoc.
20
+ */
5
21
  export interface IRemoteDataRepository<T extends object> extends IDataRepository<T> {
6
22
  readonly paginationType: 'Remote';
7
23
  setPageSize: (size: number | string) => void;
@@ -4,13 +4,28 @@ import type { Row } from '../Context/Row.js';
4
4
  import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
5
5
  import type { BoolFilterValueType, NumberFilterValueType, SelectFilterValueType, StringFilterValueType } from '../Filtering/FilterFn.js';
6
6
  import type { FilterMode } from '../Filtering/FilterMode.js';
7
- import { NumberDateFilterMode } from '../Filtering/NumberDateFilterMode.js';
8
- import { StringFilterMode } from '../Filtering/StringFilterMode.js';
9
7
  import type { OnChangeFn } from '../OnChangeFn.js';
10
8
  import type { ILocalDataRepository } from './ILocalDataRepository.js';
11
9
  import type { SortingState } from './SortingState.js';
12
10
  import { TableDataRepository } from './TableDataRepository.svelte.js';
13
- export declare const allowedEmptyFilterModes: SvelteSet<StringFilterMode | NumberDateFilterMode>;
11
+ /**
12
+ * Filter modes that accept an empty filter value (e.g. "show empty",
13
+ * "show null"). Used by `setFilterMode` / `filterBy` to decide whether
14
+ * to keep an empty stub filter in the active filtering list.
15
+ */
16
+ export declare const allowedEmptyFilterModes: SvelteSet<FilterMode>;
17
+ /**
18
+ * Concrete in-memory data repository. The data array is supplied as a
19
+ * `RefWrapper` so consumers can mutate the underlying array and the
20
+ * repo's `$derived` totals will update reactively without a full
21
+ * reassignment.
22
+ *
23
+ * Implements the five filter callbacks (date / number / select / bool
24
+ * / string). The async signature is preserved across all five even
25
+ * though the bodies are synchronous; converting to a sync fast-path is
26
+ * deferred (LocalTableDataRepository P0 finding, requires a coordinated
27
+ * change to TableContext's `_filteredIndices` loop).
28
+ */
14
29
  export declare class LocalTableDataRepository<T extends object> extends TableDataRepository<T, unknown> implements ILocalDataRepository<T> {
15
30
  addEmptyRow?: (() => void) | undefined;
16
31
  private debug;
@@ -18,40 +33,109 @@ export declare class LocalTableDataRepository<T extends object> extends TableDat
18
33
  constructor(tableName: string, dataRef: RefWrapper<Array<T>>, // reactive
19
34
  getUserId: () => string | undefined, addEmptyRow?: (() => void) | undefined, debug?: boolean);
20
35
  private _isLoading;
36
+ /** Whether a long-running operation is currently in flight. */
21
37
  get isLoading(): boolean;
22
38
  set isLoading(v: boolean);
23
39
  private _dataRef;
40
+ /** The current data array (read from the underlying `RefWrapper`). */
24
41
  get data(): Array<T>;
25
42
  private _lastPage;
43
+ /** The last page index (1-based) given the current page size. */
26
44
  get lastPage(): number;
27
45
  private _sorting;
46
+ /** The active sort columns, in precedence order. */
28
47
  get sorting(): SortingState;
29
48
  set sorting(v: SortingState);
30
49
  private _totalRows;
50
+ /** Total number of rows in the underlying data array. */
31
51
  get totalRows(): number;
32
52
  private _filtering;
53
+ /** The active per-column filter values, in application order. */
33
54
  get filtering(): ColumnFiltersState;
34
55
  set filtering(v: ColumnFiltersState);
56
+ /**
57
+ * Replace the sorting state with either a literal array or a
58
+ * function that maps the previous state to a new state.
59
+ */
35
60
  updateSorting: OnChangeFn<SortingState>;
36
61
  readonly paginationType: "Local";
62
+ /**
63
+ * Sets (or clears) the filter mode for a column. Passing `undefined`
64
+ * removes the mode entry; setting an empty-allowed mode (e.g.
65
+ * "Empty", "Null") additionally adds a stub filter value so the
66
+ * filter actually applies even though no value was typed.
67
+ */
37
68
  readonly setFilterMode: (id: string, mode: FilterMode | undefined) => void;
69
+ /**
70
+ * Sets or updates the filter value for a column. Empty values are
71
+ * dropped from the filtering list unless the column's active mode
72
+ * explicitly accepts an empty value (e.g. "Empty", "Null").
73
+ *
74
+ * Per-keystroke debouncing is deferred to the input layer; the
75
+ * `LocalTableDataRepository` P0 finding tracks adding a
76
+ * `filterByDebounced` helper here.
77
+ */
38
78
  readonly filterBy: (id: string, value: unknown) => void;
39
79
  private _pageStartIndex;
80
+ /** Index of the first row on the current page. */
40
81
  get pageStartIndex(): number;
41
82
  private _pageEndIndexExclusive;
83
+ /** Index one past the last row on the current page. */
42
84
  get pageEndIndexExclusive(): number;
85
+ /** Clears every active filter value (keeps filter modes intact). */
43
86
  readonly resetFilters: () => void;
87
+ /**
88
+ * Sets the page size and clamps the current page index so the new
89
+ * page count covers the current view. Accepts a string so a raw
90
+ * `<select>` value can be passed through without parsing first.
91
+ */
44
92
  setPageSize: (size: number | string) => void;
93
+ /** Jumps to the given 1-based page number, clamped to the last page. */
45
94
  setPage: (page: number) => void;
95
+ /** Advances to the next page, clamped to the last page. */
46
96
  nextPage: () => void;
97
+ /** Returns to the previous page, clamped to page 0. */
47
98
  prevPage: () => void;
99
+ /**
100
+ * Date range filter. The filter value is a `[from, to]` tuple where
101
+ * either bound may be `null` (or `undefined`) to leave that side
102
+ * unbounded. Rows whose value is not a `Date` are excluded.
103
+ *
104
+ * Inner `<T>` generic shadowing of the class `T` (workorder P1) is
105
+ * a known limitation, retained pending a coordinated signature
106
+ * change.
107
+ */
48
108
  readonly dateFilter: ILocalDataRepository<T>['dateFilter'];
109
+ /**
110
+ * Numeric filter supporting equality, range, set, and negation
111
+ * modes. String filter modes that share a literal value are caught
112
+ * at the switch and throw, surfacing a programming error before the
113
+ * user sees stale data.
114
+ */
49
115
  readonly numberFilter: (row: Row<T>, columnId: string, // & keyof T,
50
116
  values: NumberFilterValueType) => Promise<boolean>;
117
+ /**
118
+ * Multi-select / single-value equality filter. Accepts an array, a
119
+ * `Set`, an option-object with a `value` field, or a primitive
120
+ * compared with loose equality.
121
+ */
51
122
  readonly selectFilter: <columnType = T[keyof T]>(row: Row<T>, columnId: string, // & keyof T,
52
123
  filterValue: SelectFilterValueType<T>) => Promise<boolean>;
124
+ /**
125
+ * Boolean filter. Rows whose value is not a boolean are excluded
126
+ * (dev warning logged) so an accidental non-boolean accessor does
127
+ * not silently match every row.
128
+ */
53
129
  readonly boolFilter: (row: Row<T>, columnId: string, // & keyof T,
54
130
  filterValue: BoolFilterValueType) => Promise<boolean>;
131
+ /**
132
+ * String filter implementing every `StringFilterMode` variant.
133
+ * Comparisons are case-insensitive and use trimmed lowercase forms;
134
+ * an empty filter value yields a positive match for inclusion modes
135
+ * and a negative match for negation modes (so empty inputs do not
136
+ * accidentally hide rows when the user is mid-typing a "not equals"
137
+ * filter).
138
+ */
55
139
  readonly stringFilter: (row: Row<T>, columnId: string, // & keyof T,
56
140
  filterValue: StringFilterValueType) => Promise<boolean>;
57
141
  }