@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
@@ -8,12 +8,9 @@
8
8
  ContextMenuContext,
9
9
  type IContextMenuOption,
10
10
  } from '../../Contexts/ContextMenuContext.svelte';
11
- import { devCatch, refWrapper } from '../../Helpers/Helpers.svelte';
12
- import type { RefWrapper } from '../../Types/Internal/RefWrapper.js';
11
+ import { cssLength, devCatch, refWrapper } from '../../Helpers/Helpers.svelte';
13
12
  import { getContext, onMount, setContext, tick, untrack } from 'svelte';
14
13
  import LoadingOverlay from '../LoadingOverlay.svelte';
15
- import type { HeightData } from './Body/HeightData.js';
16
- import { shownPopup } from './Body/Rows/Columns/ActionsCell.svelte';
17
14
  import TableBody from './Body/TableBody.svelte';
18
15
  import TableHead from './Headers/TableHead.svelte';
19
16
  import TableFooter from './Misc/TableFooter.svelte';
@@ -32,24 +29,61 @@
32
29
  }
33
30
  }
34
31
 
32
+ /**
33
+ * Top-level orchestrator props. Accepts either:
34
+ *
35
+ * - `table`: the structured `Table` instance returned by `createTable(...)`.
36
+ * This is the consumer-facing form.
37
+ * - `tableContext`: the underlying `TableContext`. Used internally by
38
+ * `NestedTable` which constructs a context directly for each
39
+ * expansion. Not intended for consumer use.
40
+ *
41
+ * Exactly one of the two must be supplied; a runtime guard inside the
42
+ * component throws if both are missing. The reference passed in is
43
+ * captured at mount via `setContext` and should not be reassigned
44
+ * afterwards.
45
+ */
35
46
  export interface TableProps<T extends object, IdType extends Primitive> {
36
- readonly tableContext: TableContext<T, IdType>;
47
+ readonly table?: { readonly _context: TableContext<T, IdType> };
48
+ readonly tableContext?: TableContext<T, IdType>;
37
49
  nested?: boolean;
38
50
  }
39
51
 
52
+ /**
53
+ * Symbol used to share the currently-open quick-filter select across
54
+ * every header in a single Table tree. Stored via `setContext` on
55
+ * the same component that hosts the Table tree so multiple
56
+ * independent tables on a page each own their own popup state.
57
+ */
40
58
  export const quickFilterContextIdentifier: symbol = Symbol();
41
59
 
42
- const openedQuickFilterSelect = refWrapper(null);
60
+ const openedQuickFilterSelect = refWrapper<symbol | null>(null);
43
61
  </script>
44
62
 
45
63
  <script
46
64
  lang="ts"
47
65
  generics="T extends object,IdType extends Primitive"
48
66
  >
49
- const { nested = false, tableContext }: TableProps<T, IdType> = $props();
67
+ const { nested = false, table, tableContext: tableContextProp }: TableProps<T, IdType> = $props();
68
+
69
+ // Resolve the underlying TableContext from whichever prop the caller
70
+ // passed. Consumers pass `table` (the structured instance); the
71
+ // internal `NestedTable` passes `tableContext` directly. Exactly one
72
+ // must be present; throw cleanly otherwise so the failure mode is
73
+ // obvious rather than a downstream null-deref. Result is bound to a
74
+ // `tableContext` const so the existing 30+ references in this file
75
+ // keep resolving without per-site renames.
76
+ const tableContext: TableContext<T, IdType> = (() => {
77
+ const ctx = table?._context ?? tableContextProp;
78
+ if (!ctx) {
79
+ throw new Error(
80
+ 'scoria: <Table /> requires either a `table` prop (the structured instance returned by createTable) or a `tableContext` prop (used internally by NestedTable).'
81
+ );
82
+ }
83
+ return ctx;
84
+ })();
50
85
 
51
86
  // NOTE: known limitation. This is passed as a wrapper, and they should never require reassignment. It is deeply reactive
52
- // svelte-ignore state_referenced_locally
53
87
  setContext(TableContext.identifier, tableContext);
54
88
 
55
89
  const { openContextMenu: _openContextMenu } = getContext<ContextMenuContext>(
@@ -61,6 +95,10 @@
61
95
 
62
96
  setContext(quickFilterContextIdentifier, openedQuickFilterSelect);
63
97
 
98
+ // Focus-restore on focusStart change. The query/focus DOM work runs
99
+ // inside `untrack` so a future selector tweak that reads reactive
100
+ // state (e.g. document.activeElement) does not retrigger this
101
+ // effect on every focus change.
64
102
  $effect(() => {
65
103
  void tableContext.focusStart;
66
104
  void ref;
@@ -89,21 +127,35 @@
89
127
  });
90
128
  });
91
129
 
130
+ // Scroll-into-view on focusEnd change. The DOM work is wrapped in
131
+ // untrack so reading layout properties from the queried cell never
132
+ // silently re-establishes a reactive dependency.
92
133
  $effect(() => {
93
- if (tableContext.focusEnd && ref) {
94
- const { row, column: index } = tableContext.focusEnd;
95
- const cell = ref.querySelector(
96
- `#${tableContext.tableName}-cell-${row}-${tableContext.columnDefs[index].id}`
97
- ) as HTMLElement | undefined;
98
-
99
- cell?.scrollIntoView({
100
- behavior: 'instant',
101
- block: 'nearest',
102
- inline: 'nearest',
103
- });
104
- }
134
+ void tableContext.focusEnd;
135
+ void ref;
136
+ untrack(() => {
137
+ if (tableContext.focusEnd && ref) {
138
+ const { row, column: index } = tableContext.focusEnd;
139
+ const cell = ref.querySelector(
140
+ `#${tableContext.tableName}-cell-${row}-${tableContext.columnDefs[index].id}`
141
+ ) as HTMLElement | undefined;
142
+
143
+ cell?.scrollIntoView({
144
+ behavior: 'instant',
145
+ block: 'nearest',
146
+ inline: 'nearest',
147
+ });
148
+ }
149
+ });
105
150
  });
106
151
 
152
+ /**
153
+ * Routes a right-click into either a "focus the cell that was
154
+ * clicked" path (if the click landed on a cell other than the
155
+ * current focus) or a "show copy options" context menu (when the
156
+ * Table is configured with `allowCopy` and the platform exposes the
157
+ * Clipboard API).
158
+ */
107
159
  function openContextMenu(e: MouseEvent) {
108
160
  e.stopPropagation();
109
161
 
@@ -126,7 +178,11 @@
126
178
  ) {
127
179
  const columnIndex = tableContext.columnDefs.find((it) => it.id === columnId)?.index;
128
180
 
129
- if (columnIndex) {
181
+ // Use `!= null` rather than a truthy check so a column at
182
+ // memory index 0 (the leftmost column) is not silently
183
+ // rejected. The previous truthy check broke right-click
184
+ // copy on the first column.
185
+ if (columnIndex != null) {
130
186
  tableContext.moveFocus({
131
187
  column: columnIndex,
132
188
  row,
@@ -163,16 +219,30 @@
163
219
  }
164
220
  }
165
221
 
222
+ /**
223
+ * Closes the quick-filter popup and the actions-cell popup whenever
224
+ * the user clicks somewhere that is not inside either floating UI.
225
+ */
166
226
  function handleClickOutside(e: MouseEvent) {
167
227
  const target = e.target as HTMLElement;
168
228
  if (target.isConnected) {
169
- if (target.closest('div.floating') == null && target.closest('div.stick-right') == null) {
229
+ // A click in a teleported Svelecte dropdown (see
230
+ // `Helpers/dropdownPortal.ts`) is a logical extension of
231
+ // the trigger inside the quick-filter popup, so it must
232
+ // not close either floating popover. The portal helper
233
+ // sets `data-scoria-portal-dropdown` on the dropdown
234
+ // while it is teleported to `document.body`.
235
+ const insidePortalDropdown = target.closest('[data-scoria-portal-dropdown]') != null;
236
+ if (
237
+ !insidePortalDropdown &&
238
+ target.closest('div.floating') == null &&
239
+ target.closest('div.stick-right') == null
240
+ ) {
170
241
  openedQuickFilterSelect.value = null;
171
242
  }
172
243
 
173
- if (target.closest('div.slot-wrapper') == null) {
174
- // svelte type gen/eslint miscommunication
175
- (shownPopup as RefWrapper<symbol | undefined>).value = undefined;
244
+ if (!insidePortalDropdown && target.closest('div.slot-wrapper') == null) {
245
+ tableContext.shownActionsPopup = undefined;
176
246
  }
177
247
  }
178
248
  }
@@ -182,29 +252,40 @@
182
252
  let remPxRatio = $state(0);
183
253
  const minNestedHeight = $derived(20 * remPxRatio);
184
254
 
185
- // HACK please figure this one out
186
- let nestedHeight = $derived(minNestedHeight);
255
+ let nestedHeight = $state(0);
256
+ $effect.pre(() => {
257
+ if (!isResizing) {
258
+ nestedHeight = minNestedHeight;
259
+ }
260
+ });
187
261
 
188
- let tableRef: HTMLDivElement | undefined = undefined;
262
+ let tableRef: HTMLDivElement | undefined = $state();
189
263
  let mousedDownEmptySpace = $state(false);
190
264
 
191
265
  onMount(() => {
192
266
  remPxRatio = parseFloat(getComputedStyle(document.documentElement).fontSize);
193
267
  });
194
268
 
195
- function addOverrideResizeHandler() {
196
- isResizing = true;
269
+ $effect(() => {
270
+ if (!isResizing) {
271
+ return;
272
+ }
273
+ const onResize = (e: MouseEvent) => {
274
+ const sliderHeight = tableRef ? e.clientY - tableRef.getBoundingClientRect().top : 0;
275
+ nestedHeight = Math.max(sliderHeight, minNestedHeight);
276
+ };
197
277
  window.addEventListener('mousemove', onResize);
198
- }
278
+ return () => {
279
+ window.removeEventListener('mousemove', onResize);
280
+ };
281
+ });
199
282
 
200
- function onResize(e: MouseEvent) {
201
- const sliderHeight = tableRef ? e.clientY - tableRef.getBoundingClientRect().top : 0;
202
- nestedHeight = Math.max(sliderHeight, minNestedHeight);
283
+ function addOverrideResizeHandler() {
284
+ isResizing = true;
203
285
  }
204
286
 
205
287
  function removeOverrideResizeHandler() {
206
288
  isResizing = false;
207
- window.removeEventListener('mousemove', onResize);
208
289
  }
209
290
 
210
291
  const usesLoading = $derived(
@@ -225,10 +306,11 @@
225
306
 
226
307
  $effect(() => {
227
308
  if ((shouldUnfocusRemote || shouldUnfocusLocal) && unfocusRef) {
309
+ const el = unfocusRef;
228
310
  untrack(() => {
229
311
  tableContext.unfocus();
312
+ el.scrollTop = 0;
230
313
  });
231
- unfocusRef.scrollTop = 0;
232
314
  } else if (usesLoading && tableContext.paginationRepo?.isLoading === false) {
233
315
  // refocus same element after a reload
234
316
  // this does not break mutifocus
@@ -241,77 +323,234 @@
241
323
 
242
324
  tick()
243
325
  .then(() => {
244
- if (idToFocusTo) {
245
- (document.querySelector(idToFocusTo) as HTMLTableCellElement | undefined)?.focus();
246
- }
326
+ (document.querySelector(idToFocusTo) as HTMLElement | undefined)?.focus();
247
327
  })
248
328
  .catch(devCatch);
249
329
  });
250
330
  }
251
331
  });
252
332
 
253
- const leftTotalSize = $derived(tableContext.table.getLeftTotalSize());
254
- const centreTotalSize = $derived(tableContext.table.getCenterTotalSize());
255
- const rightTotalSize = $derived(tableContext.table.getRightTotalSize());
256
-
257
333
  const leftColumns = $derived(tableContext.table.getLeftVisibleLeafColumns());
258
334
  const centreColumns = $derived(tableContext.table.getCenterVisibleLeafColumns());
259
335
  const rightColumns = $derived(tableContext.table.getRightVisibleLeafColumns());
260
336
 
261
- const appropriateSide = $derived.by(() => {
262
- if (leftColumns.length > 0) {
263
- return 'left';
264
- } else if (rightColumns.length != tableContext.columnDefs.length) {
265
- return 'centre';
266
- } else {
267
- return 'right';
337
+ const visibleColumns = $derived([...leftColumns, ...centreColumns, ...rightColumns]);
338
+
339
+ // CSS Grid template for the table.
340
+ //
341
+ // - First track is the highlight column (always present, fixed at
342
+ // 20px to match the existing visual).
343
+ // - Each other track uses one of two strategies based on the
344
+ // column's `userResized` flag:
345
+ // - `userResized = false` (default): `minmax(width, 1fr)`. The
346
+ // column flexes to share the row's remaining horizontal space
347
+ // so the grid fills the container, and it automatically takes
348
+ // back any space a sibling column gives up when shrunk - this
349
+ // means the table never ends up narrower than its container
350
+ // while any column is still in the flexible set.
351
+ // - `userResized = true`: `${width}px` (fixed). The column sits
352
+ // at exactly the size the user dragged it to, and dragging the
353
+ // handle again only changes this column - other user-resized
354
+ // columns keep their explicit widths and non-resized columns
355
+ // just adjust their flex share.
356
+ // - Pinned and centre columns use the same per-column rule so
357
+ // toggling a column's pin state does not change its width.
358
+ // - Sticky-cell offsets are read from `_columnRenderedWidths`
359
+ // (populated by TableHead's ResizeObserver), which gives
360
+ // accurate sticky positions in both states.
361
+ const colsTemplate = $derived.by(() => {
362
+ void tableContext.columnSizing;
363
+ const track = (col: { columnDef: { width: number; userResized: boolean } }) =>
364
+ col.columnDef.userResized
365
+ ? `${col.columnDef.width}px`
366
+ : `minmax(${col.columnDef.width}px, 1fr)`;
367
+ const tracks: Array<string> = ['20px'];
368
+ for (const col of leftColumns) {
369
+ tracks.push(track(col));
370
+ }
371
+ for (const col of centreColumns) {
372
+ tracks.push(track(col));
268
373
  }
374
+ for (const col of rightColumns) {
375
+ tracks.push(track(col));
376
+ }
377
+ return tracks.join(' ');
269
378
  });
270
379
 
271
- type SvelteTableElement = {
272
- rowHeights: RefWrapper<Array<number>>;
273
- };
380
+ // Total rendered width of the pinned-left and pinned-right column
381
+ // stacks. Driven by `_columnRenderedWidths` (populated by
382
+ // TableHead's ResizeObserver) so the values track actual layout,
383
+ // not the declared `columnDef.width`. Exposed to CSS via
384
+ // `--pinned-left` / `--pinned-right` on `.datatable`; the SCSS
385
+ // then uses them in `scroll-padding-left` / `scroll-padding-right`
386
+ // so that `scrollIntoView` (called by keyboard arrow navigation
387
+ // and tab focus restore) keeps the focused cell out from behind
388
+ // the pinned columns. The highlight column is always 20px and
389
+ // always pinned-left when present, so it is added to the left
390
+ // total unconditionally.
391
+ const totalPinnedLeftWidth = $derived.by(() => {
392
+ void tableContext._columnRenderedWidths.size;
393
+ let total = 20;
394
+ for (const col of leftColumns) {
395
+ total += tableContext._columnRenderedWidths.get(col.id) ?? col.columnDef.width;
396
+ }
397
+ return total;
398
+ });
399
+ const totalPinnedRightWidth = $derived.by(() => {
400
+ void tableContext._columnRenderedWidths.size;
401
+ let total = 0;
402
+ for (const col of rightColumns) {
403
+ total += tableContext._columnRenderedWidths.get(col.id) ?? col.columnDef.width;
404
+ }
405
+ return total;
406
+ });
274
407
 
275
- let leftTable: SvelteTableElement | undefined = $state();
276
- let centreTable: SvelteTableElement | undefined = $state();
277
- let rightTable: SvelteTableElement | undefined = $state();
408
+ // Phase 7.4 row virtualisation - wire the single scroll listener
409
+ // for the shared scroll container. The single grid container is
410
+ // the scroll host now (the previous three-table siblings have
411
+ // collapsed into one).
412
+ //
413
+ // The same handler also drives `hasScrolledPastHeader` /
414
+ // `hasContentBelowFooter`, which feed the CSS variables that
415
+ // gate the sticky-row drop shadows. The shadows only appear when
416
+ // there is actually content scrolled under the relevant sticky
417
+ // row, so a freshly mounted (or fully-in-viewport) table shows no
418
+ // shadows.
419
+ let hasScrolledPastHeader = $state(false);
420
+ let hasContentBelowFooter = $state(false);
421
+
422
+ // Measured rendered height of the sticky strip at the top of
423
+ // `.datatable` (header row + quick-filter row when active).
424
+ // Drives `scroll-padding-top` via `--sticky-top-height` on
425
+ // `.datatable`, so `scrollIntoView` (keyboard arrow navigation,
426
+ // focus restore) parks the focused cell below the actual strip
427
+ // even at sub-pixel rounding and any borders. Using `calc(var(--height) + 61px)`
428
+ // statically left a 1-2px gap that hid the top edge of the
429
+ // first visible body row when navigating to it.
430
+ let stickyTopHeight: number = $state(0);
431
+
432
+ function recomputeScrollShadows(): void {
433
+ if (!tableRef) {
434
+ hasScrolledPastHeader = false;
435
+ hasContentBelowFooter = false;
436
+ return;
437
+ }
438
+ // `.datatable` has `overflow-x: auto`. Per the CSS spec, when
439
+ // one overflow axis is non-visible the other axis becomes
440
+ // auto too, so `.datatable` is itself the vertical scroll
441
+ // container for the sticky header / footer when the table
442
+ // is constrained inside a fixed-height parent (the typical
443
+ // app shell). Detect that internal scroll directly.
444
+ const internalScrolledPast = tableRef.scrollTop > 0;
445
+ const internalContentBelow =
446
+ tableRef.scrollTop + tableRef.clientHeight < tableRef.scrollHeight - 1;
447
+ // Fall back to window-relative checks for the case where the
448
+ // table is not constrained and the page itself is the scroll
449
+ // container (e.g. a story with no wrapper height).
450
+ const rect = tableRef.getBoundingClientRect();
451
+ const windowScrolledPast = rect.top < 0;
452
+ const windowContentBelow = rect.bottom > window.innerHeight;
453
+ hasScrolledPastHeader = internalScrolledPast || windowScrolledPast;
454
+ hasContentBelowFooter = internalContentBelow || windowContentBelow;
455
+ }
278
456
 
279
- const totalRowSizes: Array<HeightData<T>> = $derived.by(() => {
280
- if (!leftTable || !centreTable || !rightTable) {
281
- return [];
457
+ $effect(() => {
458
+ void tableRef;
459
+ void unfocusRef;
460
+ const handler = (e: Event): void => {
461
+ const el = e.currentTarget as HTMLElement | null;
462
+ if (!el) {
463
+ return;
464
+ }
465
+ tableContext._virtualisation.registerScrollPosition(el.scrollTop, el.clientHeight);
466
+ // Internal scroll inside `.datatable` is the sticky-context
467
+ // for the header / footer in the constrained-height case,
468
+ // so the shadow flags need to refresh on every internal
469
+ // scroll, not just window scroll. Without this, scrolling
470
+ // the table body never flips `hasScrolledPastHeader` /
471
+ // `hasContentBelowFooter` and the shadows never appear.
472
+ recomputeScrollShadows();
473
+ };
474
+ const elements: Array<HTMLElement> = [];
475
+ if (tableRef) {
476
+ elements.push(tableRef);
477
+ }
478
+ if (unfocusRef && unfocusRef !== tableRef) {
479
+ elements.push(unfocusRef);
480
+ }
481
+ for (const el of elements) {
482
+ el.addEventListener('scroll', handler, { passive: true });
483
+ }
484
+ const primary = tableRef ?? unfocusRef;
485
+ if (primary) {
486
+ tableContext._virtualisation.registerScrollPosition(primary.scrollTop, primary.clientHeight);
282
487
  }
283
488
 
284
- // console.debug(`got refs for all tables`);
285
- const centre = centreTable.rowHeights.value;
286
- const right = rightTable.rowHeights.value;
489
+ // Window-level scroll + resize cover the case where the table
490
+ // is not constrained and the page itself scrolls instead.
491
+ // `recomputeScrollShadows` checks both internal and window-level
492
+ // scroll position so either path flips the shadow flags.
493
+ const onWindow = (): void => {
494
+ recomputeScrollShadows();
495
+ };
496
+ window.addEventListener('scroll', onWindow, { passive: true });
497
+ window.addEventListener('resize', onWindow, { passive: true });
498
+
499
+ // Content-height changes (rows added / removed, pagination
500
+ // turning the page, expand toggled) flip whether there is
501
+ // anything below the footer or above the header, so shadow
502
+ // flags need to re-evaluate any time the table's intrinsic
503
+ // height changes - not just on actual user scroll.
504
+ const ro =
505
+ typeof ResizeObserver === 'undefined'
506
+ ? null
507
+ : new ResizeObserver(() => {
508
+ recomputeScrollShadows();
509
+ });
510
+ if (ro && tableRef) {
511
+ ro.observe(tableRef);
512
+ }
287
513
 
288
- return leftTable.rowHeights.value.map((_leftHeight, index) => {
289
- const leftHeight = _leftHeight || 0;
290
- const centreHeight = centre[index] || 0;
291
- const rightHeight = right[index] || 0;
514
+ // Measure the actual rendered height of the sticky strip
515
+ // (header row + quick-filter row when active) so
516
+ // `scroll-padding-top` matches it to the pixel. Static
517
+ // `calc(var(--height) + 61px)` ignored the header's
518
+ // border-bottom plus any sub-pixel rounding, leaving the
519
+ // first visible body row 1-2px behind the strip when
520
+ // `scrollIntoView` parked it at the top edge.
521
+ const measureStickyTop = (): void => {
522
+ if (!tableRef) {
523
+ return;
524
+ }
525
+ const headerRow = tableRef.querySelector('.datatable-row.header-row') as HTMLElement | null;
526
+ const filterRow = tableRef.querySelector(
527
+ '.datatable-row.quick-filter-row'
528
+ ) as HTMLElement | null;
529
+ stickyTopHeight = (headerRow?.offsetHeight ?? 0) + (filterRow?.offsetHeight ?? 0);
530
+ };
531
+ const stickyRo =
532
+ typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measureStickyTop);
533
+ if (stickyRo && tableRef) {
534
+ // Observe the scroll host so any change inside (mode
535
+ // toggle, rows added, etc.) re-measures on the next frame.
536
+ stickyRo.observe(tableRef);
537
+ }
538
+ // Initial measurement so the very first focus / arrow-key
539
+ // navigation lands below the strip without waiting for the
540
+ // observer's first frame.
541
+ measureStickyTop();
292
542
 
293
- const maxHeight = Math.max(leftHeight, centreHeight, rightHeight);
294
- const applyTo: HeightData<T>['applyTo'] = [];
543
+ recomputeScrollShadows();
295
544
 
296
- if (leftHeight < maxHeight) {
297
- // console.debug(`left (${leftHeight}) was lower than max (${maxHeight})`);
298
- applyTo.push('left');
545
+ return () => {
546
+ for (const el of elements) {
547
+ el.removeEventListener('scroll', handler);
299
548
  }
300
- if (centreHeight < maxHeight) {
301
- // console.debug(`centre (${centreHeight}) was lower than max (${maxHeight})`);
302
- applyTo.push('centre');
303
- }
304
- if (rightHeight < maxHeight) {
305
- // console.debug(`right (${rightHeight}) was lower than max (${maxHeight})`);
306
- applyTo.push('right');
307
- }
308
-
309
- return {
310
- index,
311
- applyTo,
312
- maxHeight,
313
- };
314
- });
549
+ window.removeEventListener('scroll', onWindow);
550
+ window.removeEventListener('resize', onWindow);
551
+ ro?.disconnect();
552
+ stickyRo?.disconnect();
553
+ };
315
554
  });
316
555
  </script>
317
556
 
@@ -347,11 +586,14 @@
347
586
  <div
348
587
  class="grid"
349
588
  class:nested
589
+ style="--show-top-shadow: {hasScrolledPastHeader
590
+ ? 1
591
+ : 0}; --show-bottom-shadow: {hasContentBelowFooter ? 1 : 0};"
350
592
  >
351
593
  {#if tableContext.dataRepo.isLoading}
352
594
  <LoadingOverlay
353
595
  absolute
354
- borderRadius="4px"
596
+ borderRadius={cssLength('4px')}
355
597
  message={tableContext.dataRepo.loadingMessage}
356
598
  />
357
599
  {/if}
@@ -402,6 +644,7 @@
402
644
  class:compact={tableContext.isCompact}
403
645
  class:quick-filtering={tableContext.showQuickFiltering}
404
646
  onkeydown={tableContext.handleTdKeydown}
647
+ style="--pinned-left: {totalPinnedLeftWidth}px; --pinned-right: {totalPinnedRightWidth}px; --sticky-top-height: {stickyTopHeight}px;"
405
648
  >
406
649
  <div
407
650
  class="flex_table"
@@ -413,66 +656,15 @@
413
656
  class="table-wrapper"
414
657
  oncontextmenu={openContextMenu}
415
658
  >
416
- <!-- {#if leftTotalSize > 0} -->
417
- <table
418
- class="datatable__table left"
419
- style="min-width: {leftTotalSize}px"
659
+ <div
660
+ role="table"
661
+ class="datatable-grid"
662
+ style="--cols: {colsTemplate};"
420
663
  >
421
- <TableHead
422
- showHighlight={leftTotalSize > 0}
423
- side="left"
424
- />
425
- <TableBody
426
- includeHighlight={appropriateSide == 'left'}
427
- columns={leftColumns}
428
- side="left"
429
- heights={totalRowSizes}
430
- bind:this={leftTable}
431
- />
432
- </table>
433
- <!-- {/if} -->
434
-
435
- <!-- {#if centreTotalSize > 0} -->
436
-
437
- <table
438
- class="datatable__table centre"
439
- style="min-width: {centreTotalSize}px"
440
- >
441
- <TableHead
442
- showHighlight={leftTotalSize == 0}
443
- side="centre"
444
- />
445
- <TableBody
446
- includeHighlight={appropriateSide == 'centre'}
447
- columns={centreColumns}
448
- side="centre"
449
- heights={totalRowSizes}
450
- bind:this={centreTable}
451
- />
452
- </table>
453
- <!-- {/if} -->
454
-
455
- <!-- {#if rightTotalSize > 0} -->
456
- <table
457
- class="datatable__table right"
458
- style="min-width: {rightTotalSize}px"
459
- >
460
- <TableHead
461
- showHighlight={false}
462
- side="right"
463
- />
464
- <TableBody
465
- includeHighlight={appropriateSide == 'right'}
466
- columns={rightColumns}
467
- side="right"
468
- heights={totalRowSizes}
469
- bind:this={rightTable}
470
- />
471
- </table>
472
- <!-- {/if} -->
664
+ <TableHead />
665
+ <TableBody />
666
+ </div>
473
667
  </div>
474
-
475
- <!-- TODO add filter callbacks -->
476
668
  </div>
477
669
 
478
670
  {#if nested}
@@ -552,14 +744,6 @@ div.resizer.isResizing {
552
744
  opacity: 1;
553
745
  }
554
746
 
555
- .left {
556
- border-right: solid 2px #3a4952;
557
- }
558
-
559
- .right {
560
- border-left: solid 2px #3a4952;
561
- }
562
-
563
747
  div.sidebar-wrapper {
564
748
  display: flex;
565
749
  flex-flow: row nowrap;
@@ -604,7 +788,6 @@ div.sidebar-wrapper .sidebar.toolbar-right {
604
788
  position: relative;
605
789
  flex-grow: 2;
606
790
  max-height: 100%;
607
- scroll-padding-top: calc(3rem + 0px);
608
791
  }
609
792
 
610
793
  .datatable {
@@ -621,6 +804,9 @@ div.sidebar-wrapper .sidebar.toolbar-right {
621
804
  height: 100%;
622
805
  flex-grow: 1;
623
806
  --progress-bar-radius: 18px;
807
+ scroll-padding-top: var(--sticky-top-height, 0px);
808
+ scroll-padding-left: var(--pinned-left, 0px);
809
+ scroll-padding-right: var(--pinned-right, 0px);
624
810
  }
625
811
  .datatable.quick-filtering {
626
812
  --quick-filter-height: 3rem;
@@ -638,23 +824,12 @@ div.sidebar-wrapper .sidebar.toolbar-right {
638
824
  max-height: var(--nested-height, 20rem);
639
825
  }
640
826
 
641
- .datatable__table {
642
- table-layout: fixed;
643
- border-collapse: collapse;
644
- border-spacing: 0;
827
+ .datatable-grid {
828
+ display: flex;
829
+ flex-flow: column nowrap;
830
+ flex-grow: 2;
831
+ width: 100%;
645
832
  text-align: left;
646
- }
647
- .datatable__table.left {
648
- position: sticky;
649
- z-index: 2;
650
- left: 0;
651
- }
652
- .datatable__table.centre {
653
- z-index: 1;
654
- flex-grow: 10;
655
- }
656
- .datatable__table.right {
657
- position: sticky;
658
- z-index: 2;
659
- right: 0;
833
+ min-width: max-content;
834
+ isolation: isolate;
660
835
  }</style>