@lavalogic/scoria 0.36.0 → 0.37.1

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 (552) 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 +437 -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 +133 -26
  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 +46 -23
  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.d.ts +2 -2
  223. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +18 -12
  224. package/dist/Components/Table/ColumnFactory.svelte.d.ts +43 -0
  225. package/dist/Components/Table/ColumnFactory.svelte.js +339 -0
  226. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +5 -3
  227. package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
  228. package/dist/Components/Table/Headers/SelectAllHeader.svelte +5 -3
  229. package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
  230. package/dist/Components/Table/Headers/TableHead.svelte +340 -200
  231. package/dist/Components/Table/Headers/TableHead.svelte.d.ts +13 -16
  232. package/dist/Components/Table/Headers/TableHeadProps.d.ts +10 -0
  233. package/dist/Components/Table/Headers/TableHeadProps.js +1 -0
  234. package/dist/Components/Table/Misc/ColumnPanel.svelte +108 -50
  235. package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
  236. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +20 -7
  237. package/dist/Components/Table/Misc/ColumnPanelModal.svelte.d.ts +12 -11
  238. package/dist/Components/Table/Misc/ColumnPanelModalProps.d.ts +5 -0
  239. package/dist/Components/Table/Misc/FilterInput.svelte +30 -41
  240. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
  241. package/dist/Components/Table/Misc/FilterPanel.svelte +387 -29
  242. package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
  243. package/dist/Components/Table/Misc/FilterPanelModal.svelte +4 -51
  244. package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
  245. package/dist/Components/Table/Misc/SidePanel.svelte +12 -9
  246. package/dist/Components/Table/Misc/SidePanel.svelte.d.ts +1 -7
  247. package/dist/Components/Table/Misc/SidePanelProps.d.ts +17 -0
  248. package/dist/Components/Table/Misc/SidePanelProps.js +1 -0
  249. package/dist/Components/Table/Misc/TableFooter.svelte +44 -35
  250. package/dist/Components/Table/Misc/TableFooter.svelte.d.ts +13 -14
  251. package/dist/Components/Table/Misc/TableFooterProps.d.ts +8 -0
  252. package/dist/Components/Table/Misc/TableFooterProps.js +1 -0
  253. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +17 -48
  254. package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
  255. package/dist/Components/Table/Misc/TableSidebar.svelte +28 -47
  256. package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
  257. package/dist/Components/Table/Misc/ToolboxPanel.svelte +121 -55
  258. package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
  259. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +31 -24
  260. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte.d.ts +12 -11
  261. package/dist/Components/Table/Misc/ToolboxPanelModalProps.d.ts +5 -0
  262. package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
  263. package/dist/Components/Table/Misc/numberDateFilterTypes.js +8 -3
  264. package/dist/Components/Table/Misc/stringFilterTypes.d.ts +6 -4
  265. package/dist/Components/Table/Misc/stringFilterTypes.js +7 -3
  266. package/dist/Components/Table/NestedTable.svelte +85 -41
  267. package/dist/Components/Table/NestedTable.svelte.d.ts +2 -10
  268. package/dist/Components/Table/NestedTableProps.d.ts +25 -0
  269. package/dist/Components/Table/NestedTableProps.js +1 -0
  270. package/dist/Components/Table/SubApis.svelte.d.ts +24 -0
  271. package/dist/Components/Table/SubApis.svelte.js +380 -0
  272. package/dist/Components/Table/Table.svelte +345 -172
  273. package/dist/Components/Table/Table.svelte.d.ts +24 -1
  274. package/dist/Components/Table/TableHelpers.svelte.d.ts +58 -0
  275. package/dist/Components/Table/TableHelpers.svelte.js +88 -0
  276. package/dist/Components/Table/Types/Columns/Column.d.ts +10 -0
  277. package/dist/Components/Table/Types/Columns/ColumnPinningState.d.ts +12 -0
  278. package/dist/Components/Table/Types/Columns/ColumnSizingState.d.ts +8 -0
  279. package/dist/Components/Table/Types/Columns/ColumnType.d.ts +17 -0
  280. package/dist/Components/Table/Types/Columns/ColumnType.js +18 -1
  281. package/dist/Components/Table/Types/Columns/DateColumn.d.ts +6 -0
  282. package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -0
  283. package/dist/Components/Table/Types/Columns/Definitions/AccessorFn.d.ts +13 -0
  284. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +28 -3
  285. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +15 -0
  286. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.d.ts +10 -0
  287. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.js +11 -1
  288. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +23 -2
  289. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +9 -2
  290. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +21 -2
  291. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +8 -0
  292. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +29 -3
  293. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +11 -0
  294. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +23 -0
  295. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +8 -0
  296. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +31 -0
  297. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +17 -3
  298. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +21 -2
  299. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +7 -0
  300. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +29 -1
  301. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +17 -3
  302. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +122 -11
  303. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +77 -11
  304. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +9 -0
  305. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +30 -9
  306. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +14 -0
  307. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +19 -1
  308. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +12 -1
  309. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +11 -0
  310. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +6 -3
  311. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +19 -0
  312. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +25 -1
  313. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +26 -0
  314. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +20 -5
  315. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +43 -7
  316. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +18 -3
  317. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +19 -5
  318. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +16 -5
  319. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +14 -0
  320. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +34 -2
  321. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +30 -7
  322. package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +17 -0
  323. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +10 -0
  324. package/dist/Components/Table/Types/Columns/DisplayType.d.ts +13 -0
  325. package/dist/Components/Table/Types/Columns/DisplayType.js +14 -1
  326. package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +5 -0
  327. package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +7 -0
  328. package/dist/Components/Table/Types/Columns/JSONColumnPinningState.d.ts +6 -0
  329. package/dist/Components/Table/Types/Columns/ProgressBarColumn.d.ts +5 -0
  330. package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +9 -0
  331. package/dist/Components/Table/Types/Columns/TableActionButton.d.ts +12 -0
  332. package/dist/Components/Table/Types/Columns/TableCell.d.ts +16 -2
  333. package/dist/Components/Table/Types/Columns/VisibilityState.d.ts +12 -0
  334. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +173 -0
  335. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +241 -0
  336. package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +166 -0
  337. package/dist/Components/Table/Types/Context/FilteringState.svelte.js +180 -0
  338. package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +316 -0
  339. package/dist/Components/Table/Types/Context/FocusState.svelte.js +751 -0
  340. package/dist/Components/Table/Types/Context/ITable.d.ts +10 -0
  341. package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +242 -0
  342. package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +317 -0
  343. package/dist/Components/Table/Types/Context/ReadonlyRowModel.d.ts +14 -3
  344. package/dist/Components/Table/Types/Context/Row.d.ts +18 -0
  345. package/dist/Components/Table/Types/Context/RowModel.d.ts +11 -0
  346. package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +260 -0
  347. package/dist/Components/Table/Types/Context/SelectionState.svelte.js +613 -0
  348. package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +112 -0
  349. package/dist/Components/Table/Types/Context/SortingState.svelte.js +272 -0
  350. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +580 -58
  351. package/dist/Components/Table/Types/Context/TableContext.svelte.js +984 -1278
  352. package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +16 -0
  353. package/dist/Components/Table/Types/Context/TableSettings.d.ts +20 -0
  354. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +167 -0
  355. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +226 -0
  356. package/dist/Components/Table/Types/Coordinates/CellCoordinates.d.ts +12 -0
  357. package/dist/Components/Table/Types/Coordinates/CellCoordinatesWithoutColumn.d.ts +5 -0
  358. package/dist/Components/Table/Types/Coordinates/ColumnIndices.d.ts +16 -2
  359. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +143 -0
  360. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +454 -0
  361. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +21 -0
  362. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +10 -0
  363. package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +16 -0
  364. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +87 -3
  365. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +112 -7
  366. package/dist/Components/Table/Types/DataRepository/SortingState.d.ts +12 -0
  367. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +87 -2
  368. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +74 -1
  369. package/dist/Components/Table/Types/ExpandedPanel.d.ts +9 -0
  370. package/dist/Components/Table/Types/ExpandedPanel.js +10 -1
  371. package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +17 -0
  372. package/dist/Components/Table/Types/Filtering/CustomFilter.d.ts +21 -0
  373. package/dist/Components/Table/Types/Filtering/CustomFilterType.d.ts +5 -0
  374. package/dist/Components/Table/Types/Filtering/CustomFilterType.js +6 -1
  375. package/dist/Components/Table/Types/Filtering/CustomRemoteFilters.d.ts +6 -0
  376. package/dist/Components/Table/Types/Filtering/FilterFn.d.ts +28 -0
  377. package/dist/Components/Table/Types/Filtering/FilterMode.d.ts +7 -0
  378. package/dist/Components/Table/Types/Filtering/FilterType.d.ts +8 -0
  379. package/dist/Components/Table/Types/Filtering/FilterType.js +9 -1
  380. package/dist/Components/Table/Types/Filtering/FilterValueType.d.ts +11 -0
  381. package/dist/Components/Table/Types/Filtering/FilterValueType.js +12 -1
  382. package/dist/Components/Table/Types/Filtering/HasCustomFilterFunction.d.ts +23 -2
  383. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.d.ts +19 -12
  384. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.js +18 -14
  385. package/dist/Components/Table/Types/Filtering/StringFilterMode.d.ts +22 -15
  386. package/dist/Components/Table/Types/Filtering/StringFilterMode.js +22 -16
  387. package/dist/Components/Table/Types/Focus/MultiFocusEdge.d.ts +8 -0
  388. package/dist/Components/Table/Types/Focus/MultiFocusEdge.js +9 -1
  389. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +22 -0
  390. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +22 -0
  391. package/dist/Components/Table/Types/Header.d.ts +8 -0
  392. package/dist/Components/Table/Types/HeaderGroup.d.ts +7 -0
  393. package/dist/Components/Table/Types/Layout/CellPinning.d.ts +1 -0
  394. package/dist/Components/Table/Types/Layout/CellPinning.js +8 -0
  395. package/dist/Components/Table/Types/OnChangeFn.d.ts +11 -0
  396. package/dist/Components/Table/Types/Pagination/PaginationState.d.ts +9 -0
  397. package/dist/Components/Table/Types/Pagination/PaginationType.d.ts +10 -0
  398. package/dist/Components/Table/Types/Pagination/PaginationType.js +11 -1
  399. package/dist/Components/Table/Types/Public/AnyEditEvent.d.ts +30 -0
  400. package/dist/Components/Table/Types/Public/AnyEditEvent.js +1 -0
  401. package/dist/Components/Table/Types/Public/BaseColumnOptions.d.ts +44 -0
  402. package/dist/Components/Table/Types/Public/BaseColumnOptions.js +1 -0
  403. package/dist/Components/Table/Types/Public/ColumnFactory.d.ts +35 -0
  404. package/dist/Components/Table/Types/Public/ColumnFactory.js +1 -0
  405. package/dist/Components/Table/Types/Public/ColumnOptions.d.ts +244 -0
  406. package/dist/Components/Table/Types/Public/ColumnOptions.js +1 -0
  407. package/dist/Components/Table/Types/Public/ColumnSpec.d.ts +39 -0
  408. package/dist/Components/Table/Types/Public/ColumnSpec.js +1 -0
  409. package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +87 -0
  410. package/dist/Components/Table/Types/Public/CreateTableOptions.js +1 -0
  411. package/dist/Components/Table/Types/Public/KeyConstraints.d.ts +42 -0
  412. package/dist/Components/Table/Types/Public/KeyConstraints.js +22 -0
  413. package/dist/Components/Table/Types/Public/RowSource.d.ts +87 -0
  414. package/dist/Components/Table/Types/Public/RowSource.js +1 -0
  415. package/dist/Components/Table/Types/Public/SelectionOptions.d.ts +26 -0
  416. package/dist/Components/Table/Types/Public/SelectionOptions.js +1 -0
  417. package/dist/Components/Table/Types/Public/Table.d.ts +40 -0
  418. package/dist/Components/Table/Types/Public/Table.js +1 -0
  419. package/dist/Components/Table/Types/Public/TableInitialState.d.ts +26 -0
  420. package/dist/Components/Table/Types/Public/TableInitialState.js +1 -0
  421. package/dist/Components/Table/Types/Public/TablePersistence.d.ts +38 -0
  422. package/dist/Components/Table/Types/Public/TablePersistence.js +1 -0
  423. package/dist/Components/Table/Types/Public/TableSubApis.d.ts +190 -0
  424. package/dist/Components/Table/Types/Public/TableSubApis.js +1 -0
  425. package/dist/Components/Table/Types/Public/index.d.ts +20 -0
  426. package/dist/Components/Table/Types/Public/index.js +8 -0
  427. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.d.ts +4 -0
  428. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.js +5 -1
  429. package/dist/Components/Table/createTable.svelte.d.ts +53 -0
  430. package/dist/Components/Table/createTable.svelte.js +270 -0
  431. package/dist/Components/TextArea.svelte +37 -18
  432. package/dist/Components/TextAreaProps.d.ts +37 -0
  433. package/dist/Components/TextInput.svelte +41 -22
  434. package/dist/Components/TextInputProps.d.ts +58 -1
  435. package/dist/Components/ThreeStateRadio.svelte +61 -64
  436. package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
  437. package/dist/Components/Touch/BoolCard.svelte +8 -15
  438. package/dist/Components/Touch/BoolCard.svelte.d.ts +1 -10
  439. package/dist/Components/Touch/BoolCardProps.d.ts +21 -0
  440. package/dist/Components/Touch/BoolCardProps.js +1 -0
  441. package/dist/Components/Touch/DateModal.svelte +17 -25
  442. package/dist/Components/Touch/DateModal.svelte.d.ts +1 -17
  443. package/dist/Components/Touch/DateModalProps.d.ts +36 -0
  444. package/dist/Components/Touch/DateModalProps.js +1 -0
  445. package/dist/Components/Touch/EditCard.svelte +10 -3
  446. package/dist/Components/Touch/EditCardProps.d.ts +21 -0
  447. package/dist/Components/Touch/InfoCard.svelte +14 -7
  448. package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
  449. package/dist/Components/Touch/InfoTextCard.svelte +9 -2
  450. package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
  451. package/dist/Components/Touch/ModalExplanation.svelte +9 -12
  452. package/dist/Components/Touch/ModalExplanation.svelte.d.ts +1 -6
  453. package/dist/Components/Touch/ModalExplanationProps.d.ts +22 -0
  454. package/dist/Components/Touch/ModalExplanationProps.js +1 -0
  455. package/dist/Components/Touch/NumberKeyboard.svelte +62 -105
  456. package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
  457. package/dist/Components/Touch/NumberModal.svelte +16 -6
  458. package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
  459. package/dist/Components/Touch/PlusMinusCard.svelte +12 -16
  460. package/dist/Components/Touch/PlusMinusCard.svelte.d.ts +1 -6
  461. package/dist/Components/Touch/PlusMinusCardProps.d.ts +18 -0
  462. package/dist/Components/Touch/PlusMinusCardProps.js +1 -0
  463. package/dist/Components/Touch/SelectModal.svelte +33 -15
  464. package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
  465. package/dist/Components/Touch/SummaryCard.svelte +56 -14
  466. package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
  467. package/dist/Components/Touch/TextAreaModal.svelte +18 -9
  468. package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
  469. package/dist/Components/Touch/TextModal.svelte +15 -32
  470. package/dist/Components/Touch/TextModalProps.d.ts +28 -1
  471. package/dist/Components/Touch/TouchCard.svelte +9 -47
  472. package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
  473. package/dist/Components/Touch/TouchModal.svelte +105 -99
  474. package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
  475. package/dist/Components/Touch/UtilityButton.svelte +36 -18
  476. package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
  477. package/dist/Components/VerticalTabGroup.svelte +18 -40
  478. package/dist/Components/VerticalTabGroupButton.svelte +11 -50
  479. package/dist/Components/VerticalTabGroupProps.d.ts +15 -2
  480. package/dist/Contexts/AlertContext.svelte.d.ts +92 -8
  481. package/dist/Contexts/AlertContext.svelte.js +69 -6
  482. package/dist/Contexts/ContextMenuContext.svelte.d.ts +54 -8
  483. package/dist/Contexts/ContextMenuContext.svelte.js +48 -2
  484. package/dist/Contexts/TestContext.svelte.d.ts +27 -1
  485. package/dist/Contexts/TestContext.svelte.js +29 -1
  486. package/dist/Contexts/ToastContext.svelte.d.ts +29 -1
  487. package/dist/Contexts/ToastContext.svelte.js +93 -24
  488. package/dist/Contexts/TooltipContext.svelte.d.ts +68 -1
  489. package/dist/Contexts/TooltipContext.svelte.js +70 -7
  490. package/dist/Contexts/UntypedInputContext.svelte.d.ts +54 -5
  491. package/dist/Contexts/UntypedInputContext.svelte.js +87 -34
  492. package/dist/Delay/Delay.js +1 -1
  493. package/dist/Helpers/AsyncFlag.svelte.d.ts +39 -0
  494. package/dist/Helpers/AsyncFlag.svelte.js +72 -0
  495. package/dist/Helpers/Datamatrix.d.ts +10 -1
  496. package/dist/Helpers/Datamatrix.js +290 -1
  497. package/dist/Helpers/Helpers.svelte.d.ts +252 -18
  498. package/dist/Helpers/Helpers.svelte.js +271 -75
  499. package/dist/Helpers/INamed.d.ts +6 -0
  500. package/dist/Helpers/Storage.d.ts +67 -0
  501. package/dist/Helpers/Storage.js +138 -0
  502. package/dist/Helpers/dropdownPortal.d.ts +52 -0
  503. package/dist/Helpers/dropdownPortal.js +232 -0
  504. package/dist/Helpers/dropdownPortal.svelte.d.ts +2 -0
  505. package/dist/Helpers/dropdownPortal.svelte.js +5 -0
  506. package/dist/Helpers/memoiseByRow.d.ts +45 -0
  507. package/dist/Helpers/memoiseByRow.js +78 -0
  508. package/dist/Helpers/prefersReducedMotion.svelte.d.ts +27 -0
  509. package/dist/Helpers/prefersReducedMotion.svelte.js +18 -0
  510. package/dist/Helpers/useTooltip.svelte.d.ts +53 -0
  511. package/dist/Helpers/useTooltip.svelte.js +62 -0
  512. package/dist/Types/Examples/ExampleModal.svelte +12 -11
  513. package/dist/Types/Examples/ExampleModal.svelte.d.ts +2 -2
  514. package/dist/Types/Examples/ExampleSelectEnum.js +1 -1
  515. package/dist/Types/Internal/AsyncFlag.d.ts +7 -0
  516. package/dist/Types/Internal/AsyncFlag.js +1 -0
  517. package/dist/Types/Internal/BigRadioOption.d.ts +8 -0
  518. package/dist/Types/Internal/ButtonProp.d.ts +24 -2
  519. package/dist/Types/Internal/CallbackButton.d.ts +12 -0
  520. package/dist/Types/Internal/DateChange.d.ts +8 -0
  521. package/dist/Types/Internal/DatePickerType.d.ts +5 -0
  522. package/dist/Types/Internal/DatePickerType.js +6 -1
  523. package/dist/Types/Internal/IdentifiableToastMessage.d.ts +8 -0
  524. package/dist/Types/Internal/InputVariant.d.ts +5 -0
  525. package/dist/Types/Internal/InputVariant.js +6 -1
  526. package/dist/Types/Internal/Misc.d.ts +91 -0
  527. package/dist/Types/Internal/RefWrapper.d.ts +6 -0
  528. package/dist/Types/Internal/SelectOption.d.ts +8 -0
  529. package/dist/Types/Internal/Shape.d.ts +1 -0
  530. package/dist/Types/Internal/Shape.js +2 -1
  531. package/dist/Types/Internal/Side.d.ts +1 -0
  532. package/dist/Types/Internal/Side.js +2 -1
  533. package/dist/Types/Internal/Size.d.ts +5 -0
  534. package/dist/Types/Internal/Size.js +6 -1
  535. package/dist/Types/Internal/TabOption.d.ts +15 -5
  536. package/dist/Types/Internal/Ternary.d.ts +6 -0
  537. package/dist/Types/Internal/Ternary.js +7 -1
  538. package/dist/Types/Internal/ToastMessage.d.ts +28 -0
  539. package/dist/Types/Internal/Validity.d.ts +6 -0
  540. package/dist/Types/Internal/Validity.js +7 -1
  541. package/dist/Types/Internal/ValidityWrapper.d.ts +8 -0
  542. package/dist/Types/Internal/Variant.d.ts +5 -0
  543. package/dist/Types/Internal/Variant.js +6 -1
  544. package/dist/index.d.ts +27 -82
  545. package/dist/index.js +24 -62
  546. package/dist/scss/_mixins.scss +451 -167
  547. package/dist/scss/_motion.scss +57 -0
  548. package/dist/scss/_sizing.scss +16 -0
  549. package/dist/scss/colours.js +2 -2
  550. package/dist/scss/sizing.d.ts +9 -0
  551. package/dist/scss/sizing.js +10 -1
  552. package/package.json +35 -31
@@ -1357,9 +1357,44 @@
1357
1357
  }
1358
1358
 
1359
1359
  @mixin table-column-highlight {
1360
- td {
1360
+ // Outer leaf-cell content inside the highlight wrapper. Needs an
1361
+ // explicit height because the cell wrapper (`.cell.highlight-cell`)
1362
+ // uses CSS Grid with auto-row sizing, so without a stated height
1363
+ // the outer div collapses to zero and the absolute-positioned
1364
+ // `.wrapper` inside has no parent box to fill.
1365
+ //
1366
+ // Row-border (`border-bottom`) lets the horizontal row dividers
1367
+ // run continuously from the table's left edge across the highlight
1368
+ // column into the rest of the row.
1369
+ .highlight-content {
1361
1370
  position: relative;
1362
1371
  padding: 0;
1372
+ width: 100%;
1373
+ // `height: 100%` makes the highlight content fill its grid
1374
+ // item (the `.cell.highlight-cell` wrapper), which the grid
1375
+ // stretches to the row's actual height. Using an explicit
1376
+ // `var(--height, 3rem)` here would lock the highlight cell to
1377
+ // 3rem regardless of how tall the row actually became from
1378
+ // data cells, which is what produced a 1px offset whenever
1379
+ // the row was taller than 3rem.
1380
+ // The `min-height` is a safety net for the edge case where
1381
+ // other cells collapse and the row would otherwise become 0.
1382
+ height: 100%;
1383
+ min-height: var(--height, 3rem);
1384
+ box-sizing: border-box;
1385
+ // `border-right` provides the column separator between the
1386
+ // highlight column and the first pinned-left data column.
1387
+ // Every other leaf cell already paints its own border-right
1388
+ // via `table-cell-basic`, so the highlight column was the
1389
+ // only spot in the row where the vertical separator was
1390
+ // missing - visible as a blank edge whenever a column was
1391
+ // pinned to the left.
1392
+ border-right: solid 1px colours.$ui-blue-4;
1393
+ // Single `border-bottom` matches the data leaf cells (which
1394
+ // now also emit only `border-right + border-bottom` via
1395
+ // `table-cell-basic`), so each row boundary is a uniform 1px
1396
+ // line across the whole row.
1397
+ border-bottom: solid 1px colours.$ui-blue-4;
1363
1398
  }
1364
1399
 
1365
1400
  div.wrapper {
@@ -1543,8 +1578,30 @@
1543
1578
  }
1544
1579
  }
1545
1580
 
1581
+ // Cell-level mixin set. Each leaf cell component (TableCheckbox,
1582
+ // TableTextInput, etc.) includes the subset it needs; the rules get
1583
+ // emitted scoped to that component's template, which is how the
1584
+ // styling actually attaches to the leaf cell's outer div. The wrapper
1585
+ // `<div role="cell" class="cell">` rendered by TableRow / TableHead /
1586
+ // TableBody carries only sticky-pinning and layout-shell styling,
1587
+ // defined separately on `.cell` below.
1588
+
1546
1589
  @mixin table-cell-basic {
1547
- td {
1590
+ // Leaf cell box-level styling. The selector list covers every
1591
+ // root class a leaf cell can have; Svelte's per-component scoping
1592
+ // keeps each rule local to the file that includes this mixin.
1593
+ //
1594
+ // Each leaf cell renders only `border-right` + `border-bottom`. The
1595
+ // top and left edges are handled by the previous row's bottom
1596
+ // border and the previous cell's right border respectively, so
1597
+ // adjacent cells share a single 1px line. Doing top + bottom would
1598
+ // produce a stacked 2px line at every row boundary which read as
1599
+ // "two borders" visually.
1600
+ .focusable,
1601
+ .checkbox-cell,
1602
+ .input-cell,
1603
+ .select-cell,
1604
+ .datepicker-cell {
1548
1605
  @include table-height-transition;
1549
1606
  --input-border: none;
1550
1607
  --input-height: var(--height);
@@ -1554,13 +1611,30 @@
1554
1611
  position: relative;
1555
1612
  padding-left: 0.75rem;
1556
1613
  padding-right: 0.75rem;
1557
- border: solid 1px colours.$ui-blue-4;
1558
- border-left: none;
1614
+ border-right: solid 1px colours.$ui-blue-4;
1615
+ border-bottom: solid 1px colours.$ui-blue-4;
1616
+ box-sizing: border-box;
1617
+ width: 100%;
1618
+ // `height: var(--height)` (was `100%`) so every leaf cell
1619
+ // gets exactly the same total rendered height regardless of
1620
+ // whether its component also includes `table-cell-display`.
1621
+ // With `100%` the input-style leaf cells stretched to the
1622
+ // row track that was being determined by the display cells'
1623
+ // explicit `var(--height)` + sub-pixel rounding from text
1624
+ // content's `line-height`, which left input cells 1px taller
1625
+ // than display cells (FocusableImmutableCell, ExpandCell,
1626
+ // BubbleCell, etc.) - the visible symptom was the display
1627
+ // cells' bottom borders sitting 1px above the row's actual
1628
+ // bottom edge.
1629
+ height: var(--height);
1559
1630
  }
1560
1631
  }
1561
1632
 
1562
1633
  @mixin table-cell-multifocus {
1563
- td {
1634
+ .focusable,
1635
+ .checkbox-cell,
1636
+ .input-cell,
1637
+ .select-cell {
1564
1638
  &.multifocus {
1565
1639
  background-color: var(--multifocus-colour, colours.$primary-blue-2);
1566
1640
 
@@ -1572,20 +1646,21 @@
1572
1646
  }
1573
1647
 
1574
1648
  @mixin table-cell-focusable {
1575
- td {
1576
- &.focusable {
1577
- user-select: none;
1578
- cursor: default;
1579
- outline: none;
1580
- &.editable {
1581
- cursor: pointer;
1582
- }
1649
+ .focusable {
1650
+ user-select: none;
1651
+ cursor: default;
1652
+ outline: none;
1653
+ &.editable {
1654
+ cursor: pointer;
1583
1655
  }
1584
1656
  }
1585
1657
  }
1586
1658
 
1587
1659
  @mixin table-cell-validity {
1588
- td {
1660
+ .focusable,
1661
+ .checkbox-cell,
1662
+ .input-cell,
1663
+ .select-cell {
1589
1664
  &.info {
1590
1665
  background-color: #{colours.$brand-dark};
1591
1666
  }
@@ -1601,10 +1676,23 @@
1601
1676
  }
1602
1677
 
1603
1678
  @mixin table-cell-display {
1604
- td {
1679
+ .focusable,
1680
+ .checkbox-cell,
1681
+ .input-cell,
1682
+ .select-cell {
1605
1683
  max-height: var(--max-height);
1606
1684
  height: var(--height);
1607
- box-sizing: content-box;
1685
+ // `border-box` (was `content-box`) so the leaf cell's total
1686
+ // rendered size equals --height including its 1px border-bottom.
1687
+ // With `content-box`, display cells (FocusableImmutableCell,
1688
+ // BubbleCell, etc.) rendered 1px taller than input-style leaf
1689
+ // cells (TableTextInput, TableNumberInput, ...) which never
1690
+ // include this mixin and use `border-box` from
1691
+ // `table-cell-basic`. The 1px gap shifted row dividers
1692
+ // between adjacent display and text columns and was the cause
1693
+ // of the misalignment reported on the `Name` (text) column
1694
+ // rows next to the `ID` (display) column rows.
1695
+ box-sizing: border-box;
1608
1696
  overflow-x: clip;
1609
1697
  --td-padding-left: 0;
1610
1698
  --td-padding-right: 0;
@@ -1633,18 +1721,12 @@
1633
1721
  }
1634
1722
 
1635
1723
  @mixin table-cell-svelecte {
1636
- td {
1637
- &.select-cell {
1638
- padding: unset;
1639
- box-sizing: border-box;
1640
- vertical-align: middle;
1641
-
1642
- text-align: center;
1643
- }
1644
- }
1645
-
1646
- td {
1724
+ .select-cell {
1725
+ padding: unset;
1726
+ box-sizing: border-box;
1727
+ text-align: center;
1647
1728
  --sv-border: none;
1729
+
1648
1730
  :global(.select-wrapper) {
1649
1731
  --sv-min-height: 0px;
1650
1732
  --sv-general-padding: 0px;
@@ -1659,119 +1741,103 @@
1659
1741
  @include table-cell-focusable;
1660
1742
  @include table-cell-validity;
1661
1743
 
1662
- td {
1663
- &.invalid {
1664
- background-color: colours.$error-background !important;
1665
- }
1744
+ .invalid {
1745
+ background-color: colours.$error-background !important;
1746
+ }
1666
1747
 
1667
- &.focusable.focus {
1668
- user-select: none;
1669
- cursor: default;
1670
- outline: none;
1671
- }
1748
+ .focusable.focus {
1749
+ user-select: none;
1750
+ cursor: default;
1751
+ outline: none;
1752
+ }
1753
+
1754
+ .input-cell,
1755
+ .select-cell,
1756
+ .datepicker-cell {
1757
+ padding: unset;
1758
+ box-sizing: border-box;
1672
1759
 
1673
- &.input-cell,
1674
- &.select-cell,
1675
- &.datepicker-cell {
1676
- padding: unset;
1760
+ .react-datepicker-wrapper {
1761
+ width: 100%;
1677
1762
  box-sizing: border-box;
1678
- vertical-align: middle;
1763
+ display: flex;
1764
+ justify-content: center;
1679
1765
 
1680
- .react-datepicker-wrapper {
1766
+ .react-datepicker__input-container {
1681
1767
  width: 100%;
1682
- box-sizing: border-box;
1683
1768
  display: flex;
1684
1769
  justify-content: center;
1685
-
1686
- .react-datepicker__input-container {
1687
- width: 100%;
1688
- // width: calc(100% - 2px);
1689
- display: flex;
1690
- justify-content: center;
1691
- box-sizing: border-box;
1692
- }
1693
-
1694
- input {
1695
- width: 100%;
1696
- border: none;
1697
- outline: none;
1698
- box-shadow: basics.$table-focus;
1699
- box-sizing: border-box;
1700
- border-radius: 0;
1701
- line-height: 1.5;
1702
- font-size: inherit;
1703
- font-family: inherit;
1704
- padding: 0.8rem 0.75rem;
1705
- }
1770
+ box-sizing: border-box;
1706
1771
  }
1707
1772
 
1708
- .select {
1773
+ input {
1709
1774
  width: 100%;
1710
-
1711
- input {
1712
- padding: 0.8rem 0.75rem;
1713
- border-radius: 0;
1714
- width: 100%;
1715
- border: none;
1716
- outline: none;
1717
- box-shadow: basics.$table-focus;
1718
- }
1775
+ border: none;
1776
+ outline: none;
1777
+ box-shadow: basics.$table-focus;
1778
+ box-sizing: border-box;
1779
+ border-radius: 0;
1780
+ line-height: 1.5;
1781
+ font-size: inherit;
1782
+ font-family: inherit;
1783
+ padding: 0.8rem 0.75rem;
1719
1784
  }
1720
1785
  }
1721
1786
 
1722
- .stretch {
1723
- display: flex;
1724
- // position: absolute;
1725
- // top: 0;
1726
- // bottom: 0;
1727
- // left: 0;
1728
- // right: 0;
1729
- }
1730
-
1731
- &.checkbox-cell {
1732
- box-sizing: content-box;
1733
- height: var(--height);
1734
-
1735
- & * {
1736
- outline-color: colours.$transparent-20;
1737
- // transition: outline-color transitions.$ease;
1738
- &.focus-within {
1739
- outline: solid 1px colours.$brand-primary;
1740
- }
1741
- }
1742
-
1743
- // & .checkbox__icn {
1744
- // transition: all transitions.$ease;
1745
- // }
1746
- }
1787
+ .select {
1788
+ width: 100%;
1747
1789
 
1748
- &.select-cell {
1749
1790
  input {
1791
+ padding: 0.8rem 0.75rem;
1792
+ border-radius: 0;
1750
1793
  width: 100%;
1751
- // width: calc(100% - 2px);
1794
+ border: none;
1795
+ outline: none;
1796
+ box-shadow: basics.$table-focus;
1752
1797
  }
1753
1798
  }
1799
+ }
1754
1800
 
1755
- &.checkbox-cell,
1756
- &.select-cell {
1757
- text-align: center;
1801
+ .stretch {
1802
+ display: flex;
1803
+ }
1804
+
1805
+ .checkbox-cell {
1806
+ box-sizing: content-box;
1807
+ height: var(--height);
1808
+
1809
+ & * {
1810
+ outline-color: colours.$transparent-20;
1811
+ &.focus-within {
1812
+ outline: solid 1px colours.$brand-primary;
1813
+ }
1758
1814
  }
1815
+ }
1759
1816
 
1760
- .input-container {
1817
+ .select-cell {
1818
+ input {
1761
1819
  width: 100%;
1762
- // width: calc(100% - 2px);
1820
+ }
1821
+ }
1763
1822
 
1764
- input {
1765
- width: 100%;
1766
- box-sizing: border-box;
1767
- border-radius: 0;
1823
+ .checkbox-cell,
1824
+ .select-cell {
1825
+ text-align: center;
1826
+ }
1768
1827
 
1769
- font-size: inherit;
1828
+ .input-container {
1829
+ width: 100%;
1770
1830
 
1771
- &:focus {
1772
- outline: none;
1773
- box-shadow: basics.$table-focus;
1774
- }
1831
+ input {
1832
+ width: 100%;
1833
+ box-sizing: border-box;
1834
+ border-radius: 0;
1835
+
1836
+ font-size: inherit;
1837
+
1838
+ &:focus {
1839
+ outline: none;
1840
+ box-shadow: basics.$table-focus;
1775
1841
  }
1776
1842
  }
1777
1843
  }
@@ -1788,7 +1854,7 @@
1788
1854
  width: 100%;
1789
1855
  justify-content: space-around;
1790
1856
  }
1791
- td {
1857
+ div.input-cell {
1792
1858
  background-color: colours.$ui-blue-1;
1793
1859
  height: var(--height);
1794
1860
  overflow: visible;
@@ -1872,12 +1938,9 @@
1872
1938
  }
1873
1939
 
1874
1940
  @mixin table-cell-input-basic {
1875
- td {
1876
- &.input-cell {
1877
- padding: unset;
1878
- box-sizing: border-box;
1879
- vertical-align: middle;
1880
- }
1941
+ .input-cell {
1942
+ padding: unset;
1943
+ box-sizing: border-box;
1881
1944
  }
1882
1945
  }
1883
1946
 
@@ -1947,22 +2010,114 @@
1947
2010
  }
1948
2011
  }
1949
2012
 
2013
+ // Cell-wrapper layout. The wrapper `<div role="cell" class="cell">`
2014
+ // rendered by TableRow / TableHead / TableBody is the grid item that
2015
+ // carries sticky-pinning offsets; the visible cell content lives in
2016
+ // the leaf cell inside (see the table-cell-* mixins above which the
2017
+ // leaf cell components include).
2018
+ //
2019
+ // Pinned-left and pinned-right cells additionally get a coloured
2020
+ // boundary line and a directional drop shadow. The shadow only
2021
+ // projects beyond the pin (right for pinned-left, left for
2022
+ // pinned-right); for an interior pinned cell the next pinned cell's
2023
+ // opaque background covers the shadow, so only the OUTERMOST pinned
2024
+ // cell on each side shows its shadow over the centre region. That
2025
+ // gives the visual "pinned columns are floating above the rest"
2026
+ // without per-cell special-casing.
2027
+ @mixin table-cell-wrapper {
2028
+ .cell {
2029
+ display: block;
2030
+ position: relative;
2031
+ min-width: 0;
2032
+ // `overflow: visible` so absolutely positioned popups inside
2033
+ // the cell (e.g. the quick-search filter dropdown, the actions
2034
+ // cell context menu) can render outside the cell's box.
2035
+ // Cell-internal text overflow is still clipped because the
2036
+ // leaf cells inside use `overflow-x: clip` from
2037
+ // table-cell-basic.
2038
+ overflow: visible;
2039
+ box-sizing: border-box;
2040
+
2041
+ &.pinned-left,
2042
+ &.pinned-right {
2043
+ position: sticky;
2044
+ z-index: 2;
2045
+ background-color: colours.$ui-white;
2046
+ }
2047
+
2048
+ // Pinned-column boundary is drawn by the leaf cell's
2049
+ // border-right / border-left (set in `table-cell-basic`),
2050
+ // matching the rest of the column. The wrapper only adds the
2051
+ // directional drop shadow so the pinned column visually
2052
+ // floats above the scrolling content. Putting `border-right`
2053
+ // here too would stack with the leaf cell's border-right and
2054
+ // produce a 2px line that sits 1px to the left of the
2055
+ // header's single 1px border line, which is what was making
2056
+ // the header column-border look offset.
2057
+ &.pinned-left {
2058
+ box-shadow: 2px 0 4px rgba(0, 0, 0, 0.08);
2059
+ }
2060
+
2061
+ &.pinned-right {
2062
+ box-shadow: -2px 0 4px rgba(0, 0, 0, 0.08);
2063
+ }
2064
+ }
2065
+ }
2066
+
1950
2067
  @mixin table-head {
1951
- th {
2068
+ .cell.header {
1952
2069
  position: relative;
1953
- min-width: fit-content;
2070
+ // `min-width: 0` (was `fit-content`) so the header cell
2071
+ // always tracks the column's grid track width. With
2072
+ // `fit-content`, a header cell whose content (text + sort
2073
+ // icon) was wider than a narrow user-resized track would
2074
+ // overflow the track, pushing the resize handle out into the
2075
+ // next column's track area where it became visually unreachable
2076
+ // (covered by the next column's content) and could not be
2077
+ // dragged back. The `overflow: hidden` on `.header` keeps the
2078
+ // header text clipped to the track without leaking outwards
2079
+ // so the rightmost 6px stay reserved for the resize handle.
2080
+ min-width: 0;
1954
2081
  color: colours.$ui-black;
1955
- border: solid 1px colours.$ui-blue-4;
2082
+ // Match the data leaf cells: only border-right + border-bottom.
2083
+ // The previous `border: solid 1px` shorthand added a left
2084
+ // border which shifted the header content 1px right relative
2085
+ // to the filter / body cells in the same column.
2086
+ border-right: solid 1px colours.$ui-blue-4;
2087
+ border-bottom: solid 1px colours.$ui-blue-4;
1956
2088
  }
1957
2089
  }
1958
2090
 
1959
- @mixin table-row-basic {
1960
- tr {
2091
+ // Grid layout for every `.datatable-row`. This rule must emit from
2092
+ // every component that actually renders the class (TableRow, TableHead,
2093
+ // TableBody), because Svelte 5 scopes CSS per-component and a rule
2094
+ // emitted by one component does not match elements rendered by
2095
+ // siblings. Without this mixin, header rows and the quick-filter row
2096
+ // fall back to `display: block` and each cell stacks vertically.
2097
+ @mixin table-row-grid {
2098
+ .datatable-row {
2099
+ display: grid;
2100
+ grid-template-columns: var(--cols);
1961
2101
  line-height: var(--line-height, 3);
1962
2102
  @include table-height-transition;
1963
- background-color: colours.$ui-white;
2103
+ }
2104
+ }
2105
+
2106
+ @mixin table-row-basic {
2107
+ @include table-row-grid;
1964
2108
 
1965
- td.no-padding {
2109
+ .datatable-row {
2110
+ background-color: colours.$ui-white;
2111
+ // `scroll-margin` keeps keyboard arrow navigation (`scrollIntoView`)
2112
+ // honest about the sticky bars above and below. Without it, scrolling
2113
+ // to a row at the top of the viewport leaves it hidden behind the
2114
+ // header / filter; below, the footer covers the bottom rows. The top
2115
+ // offset includes the filter row's 61px when `.quick-filtering` is
2116
+ // on; the bottom offset matches the footer's intrinsic height.
2117
+ scroll-margin-top: 3rem;
2118
+ scroll-margin-bottom: 3rem;
2119
+
2120
+ & > .cell.no-padding {
1966
2121
  padding: 0;
1967
2122
  }
1968
2123
 
@@ -1975,21 +2130,77 @@
1975
2130
  background-color: colours.$primary-blue-2;
1976
2131
  }
1977
2132
  }
2133
+
2134
+ :global(.datatable.quick-filtering) .datatable-row {
2135
+ scroll-margin-top: calc(3rem + 61px);
2136
+ }
2137
+
2138
+ // Pinned cells carry an opaque `background-color: $ui-white` from
2139
+ // `table-cell-wrapper` so scrolled content does not bleed through
2140
+ // during horizontal scroll. That opacity also masks the row's
2141
+ // hover / highlight / alt backgrounds; the rules below re-apply
2142
+ // the row's state colour to the pinned cells so the whole row
2143
+ // (including pinned columns) highlights as a unit.
2144
+ .datatable-row.alt > .cell.pinned-left,
2145
+ .datatable-row.alt > .cell.pinned-right {
2146
+ background-color: colours.$ui-blue-1;
2147
+ }
2148
+
2149
+ .datatable-row.highlighted > .cell.pinned-left,
2150
+ .datatable-row.highlighted > .cell.pinned-right,
2151
+ .datatable-row.hoverable:hover > .cell.pinned-left,
2152
+ .datatable-row.hoverable:hover > .cell.pinned-right {
2153
+ background-color: colours.$primary-blue-2;
2154
+ }
2155
+ }
2156
+
2157
+ // Sticky-positioned header row plus the top-corner z-index bump so
2158
+ // pinned-left / pinned-right header cells stack above the sticky pinned
2159
+ // body cells. Include only in TableHead.
2160
+ @mixin table-header-sticky {
2161
+ .datatable-row.header-row {
2162
+ position: sticky;
2163
+ top: 0;
2164
+ // z-index 10 sits above the nested-table sticky panel
2165
+ // (z-index 3 in NestedTable.svelte) and well clear of body
2166
+ // pinned cells (z 2). Matches the quick-filter row in
2167
+ // `TableBody.svelte` so the two sticky strips at the top
2168
+ // share a single stacking layer.
2169
+ z-index: 10;
2170
+ // Row-level background so the header strip stays opaque past
2171
+ // the last column. Without it, only the individual header
2172
+ // cells were white and the area to the right of the last
2173
+ // column (when the grid does not fill the container, or when
2174
+ // scrolled horizontally past the right edge) fell back to the
2175
+ // table-wrapper's grey background.
2176
+ background-color: colours.$ui-white;
2177
+ // Soft downward drop shadow so users can see body content is
2178
+ // scrolling underneath the sticky header. The opacity is
2179
+ // gated by `--show-top-shadow`, a 0/1 CSS variable set on
2180
+ // `.grid` in Table.svelte from the window-scroll listener;
2181
+ // the shadow only appears when there's actually content
2182
+ // scrolled above the header.
2183
+ box-shadow: 0 2px 4px rgba(0, 0, 0, calc(0.08 * var(--show-top-shadow, 0)));
2184
+
2185
+ & > .cell.pinned-left,
2186
+ & > .cell.pinned-right {
2187
+ // Bumped to 11 in lockstep with the header row going to 10.
2188
+ z-index: 11;
2189
+ }
2190
+ }
1978
2191
  }
1979
2192
 
1980
2193
  @mixin table-row-no-hover {
1981
- tr {
2194
+ .datatable-row {
1982
2195
  line-height: var(--line-height, 3);
1983
2196
 
1984
- th {
2197
+ & > .cell.header {
1985
2198
  border-top: none;
1986
2199
  border-bottom: none;
1987
2200
  &:first-of-type {
1988
- // border-top-left-radius: sizing.$border-radius;
1989
2201
  border-left: none;
1990
2202
  }
1991
2203
  &:last-of-type {
1992
- // border-top-right-radius: sizing.$border-radius;
1993
2204
  border-right: none;
1994
2205
  }
1995
2206
  }
@@ -1998,7 +2209,7 @@
1998
2209
 
1999
2210
  @mixin table-row {
2000
2211
  @include table-row-no-hover;
2001
- tr {
2212
+ .datatable-row {
2002
2213
  &.hovered {
2003
2214
  background-color: colours.$ui-blue-1;
2004
2215
  }
@@ -2350,6 +2561,69 @@
2350
2561
  }
2351
2562
  }
2352
2563
 
2564
+ // Shared structure for the table's side-panel sections (Advanced
2565
+ // Filter, Modify Columns, Settings). Every panel is laid out as a
2566
+ // vertical stack of an optional header (`.side-panel-header`), a
2567
+ // scrollable body (`.side-panel-body`), and an optional footer
2568
+ // (`.side-panel-footer`). The mixin centralises the title typography,
2569
+ // the section borders and the body / footer padding so the three
2570
+ // panels look identical from the outside even though their contents
2571
+ // differ. Include in any component that renders one of those panels.
2572
+ @mixin side-panel-section {
2573
+ .side-panel-section {
2574
+ display: flex;
2575
+ flex-flow: column nowrap;
2576
+ height: 100%;
2577
+ width: 100%;
2578
+ background-color: colours.$ui-white;
2579
+ box-sizing: border-box;
2580
+ min-height: 0;
2581
+ }
2582
+
2583
+ .side-panel-header {
2584
+ flex-shrink: 0;
2585
+ padding: 1.25rem 1.25rem 0.875rem;
2586
+ border-bottom: solid 1px colours.$ui-blue-4;
2587
+ background-color: colours.$ui-white;
2588
+ display: flex;
2589
+ flex-flow: row nowrap;
2590
+ align-items: center;
2591
+ justify-content: space-between;
2592
+ gap: 0.75rem;
2593
+
2594
+ h2 {
2595
+ margin: 0;
2596
+ font-size: sizing.$text-medium-large;
2597
+ font-weight: 600;
2598
+ color: colours.$font-primary;
2599
+ line-height: 1.25;
2600
+ }
2601
+ }
2602
+
2603
+ .side-panel-body {
2604
+ flex: 1 1 auto;
2605
+ min-height: 0;
2606
+ display: flex;
2607
+ flex-flow: column nowrap;
2608
+ gap: 0.75rem;
2609
+ padding: 1rem 1.25rem;
2610
+ overflow-y: auto;
2611
+ box-sizing: border-box;
2612
+ }
2613
+
2614
+ .side-panel-footer {
2615
+ flex-shrink: 0;
2616
+ padding: 0.875rem 1.25rem;
2617
+ border-top: solid 1px colours.$ui-blue-4;
2618
+ background-color: colours.$ui-white;
2619
+ display: flex;
2620
+ flex-flow: row nowrap;
2621
+ gap: 0.75rem;
2622
+ align-items: center;
2623
+ box-sizing: border-box;
2624
+ }
2625
+ }
2626
+
2353
2627
  @mixin select {
2354
2628
  .select-wrapper {
2355
2629
  // --input-width: #{sizing.$input-width};
@@ -2425,19 +2699,6 @@
2425
2699
  box-sizing: border-box;
2426
2700
  }
2427
2701
 
2428
- :global(.sv-item--content) {
2429
- font-size: #{sizing.$text-small-small-medium};
2430
- }
2431
-
2432
- :global(.sv-item--wrap.in-dropdown) {
2433
- cursor: pointer;
2434
- min-height: 40px;
2435
- align-items: center;
2436
- }
2437
- :global(.sv-item--content) {
2438
- min-height: 1.2rem;
2439
- }
2440
-
2441
2702
  :global(.sv-btn-indicator) {
2442
2703
  cursor: pointer;
2443
2704
  }
@@ -2445,10 +2706,18 @@
2445
2706
  --sv-border: none;
2446
2707
  }
2447
2708
 
2448
- .select-wrapper.force-upwards {
2709
+ // `forceUpwards` flips the dropdown so it anchors against the
2710
+ // wrapper's top edge. The `dropdownPortal` helper handles
2711
+ // auto-flip generically (the dropdown is teleported to
2712
+ // `document.body` and positioned with `position: fixed`), so
2713
+ // this rule only fires when a consumer explicitly passes
2714
+ // `forceUpwards={true}` *and* the portal happens to be
2715
+ // inactive (which is currently impossible, but the rule is
2716
+ // retained for compatibility with any future call site that
2717
+ // disables the portal).
2718
+ &.force-upwards {
2449
2719
  :global {
2450
2720
  .sv_dropdown.is-open {
2451
- // position: fixed !important;
2452
2721
  bottom: var(--dropdown-bottom);
2453
2722
  }
2454
2723
  }
@@ -2475,15 +2744,6 @@
2475
2744
  cursor: pointer;
2476
2745
  }
2477
2746
 
2478
- .sv-item--wrap.in-dropdown {
2479
- cursor: pointer;
2480
- min-height: 40px;
2481
- align-items: center;
2482
- }
2483
- .sv-item--content {
2484
- min-height: 1.2rem;
2485
- }
2486
-
2487
2747
  span {
2488
2748
  transition: transitions.$colours;
2489
2749
  }
@@ -2491,10 +2751,6 @@
2491
2751
  .sv-control {
2492
2752
  transition: transitions.$colours;
2493
2753
  }
2494
-
2495
- div.sv_dropdown.is-open {
2496
- z-index: 99;
2497
- }
2498
2754
  }
2499
2755
 
2500
2756
  div.nothing {
@@ -2502,12 +2758,8 @@
2502
2758
  width: 0;
2503
2759
  }
2504
2760
 
2505
- .dropdown-item,
2506
2761
  .selection {
2507
2762
  font-size: #{sizing.$text-small-small-medium};
2508
- }
2509
-
2510
- .selection {
2511
2763
  padding-left: 0.5rem;
2512
2764
  white-space: nowrap;
2513
2765
  display: flex;
@@ -2535,13 +2787,45 @@
2535
2787
  box-sizing: border-box;
2536
2788
  }
2537
2789
 
2538
- .dropdown-item {
2790
+ // Dropdown-internal rules. Lifted out of the `.select-wrapper`
2791
+ // scope because the `dropdownPortal` helper teleports
2792
+ // `.sv_dropdown` to `document.body` while open, so any rule that
2793
+ // requires `.select-wrapper` as an ancestor stops applying. The
2794
+ // `:global` wrapper escapes Svelte's component-scoping (which
2795
+ // would otherwise restrict the selector to descendants of this
2796
+ // component's render tree, ruling out the teleported dropdown).
2797
+ :global {
2798
+ .sv-item--wrap.in-dropdown {
2799
+ cursor: pointer;
2800
+ min-height: 40px;
2801
+ align-items: center;
2802
+ }
2803
+
2804
+ .sv-item--content {
2805
+ font-size: #{sizing.$text-small-small-medium};
2806
+ min-height: 1.2rem;
2807
+ }
2808
+
2809
+ div.sv_dropdown.is-open {
2810
+ z-index: 99;
2811
+ }
2812
+ }
2813
+
2814
+ // The option snippet renders `<span class="dropdown-item">...`
2815
+ // inside the dropdown. The dropdown is teleported on open, so
2816
+ // this rule (Svelte-scoped to the host component) only matches
2817
+ // when the snippet is inside the original parent. Tagging the
2818
+ // inner selector with `:global` ensures the rule applies to the
2819
+ // teleported `.dropdown-item` too, because the Svelte hash class
2820
+ // stays on the element regardless of where it lives in the DOM.
2821
+ :global(.dropdown-item) {
2539
2822
  display: flex;
2540
2823
  flex-flow: row nowrap;
2541
2824
  width: 100%;
2542
2825
  overflow: hidden;
2543
2826
  text-overflow: ellipsis;
2544
2827
  gap: 1rem;
2828
+ font-size: #{sizing.$text-small-small-medium};
2545
2829
  fill: colours.$brand-primary;
2546
2830
 
2547
2831
  .toggle-icon {