@lavalogic/scoria 0.35.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 (555) hide show
  1. package/README.md +58 -58
  2. package/dist/Components/AccordionGroup.svelte +46 -42
  3. package/dist/Components/AccordionGroupButton.svelte +106 -106
  4. package/dist/Components/AccordionGroupButtonProps.d.ts +27 -8
  5. package/dist/Components/AccordionGroupProps.d.ts +10 -2
  6. package/dist/Components/Action.svelte +137 -139
  7. package/dist/Components/ActionProps.d.ts +23 -3
  8. package/dist/Components/AlertModal.svelte +176 -125
  9. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +1126 -0
  10. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte.d.ts +4 -0
  11. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.d.ts +92 -0
  12. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.js +12 -0
  13. package/dist/Components/Base/BaseModal.svelte +172 -0
  14. package/dist/Components/Base/BaseModal.svelte.d.ts +4 -0
  15. package/dist/Components/Base/BaseModalProps.d.ts +73 -0
  16. package/dist/Components/Base/BaseModalProps.js +1 -0
  17. package/dist/Components/Base/ContextWrapper.svelte +72 -50
  18. package/dist/Components/Base/ContextWrapper.svelte.d.ts +24 -5
  19. package/dist/Components/Base/ContextWrapperProps.d.ts +22 -0
  20. package/dist/Components/Base/Pagination.svelte +198 -190
  21. package/dist/Components/Base/Pagination.svelte.d.ts +12 -2
  22. package/dist/Components/Base/PaginationProps.d.ts +60 -3
  23. package/dist/Components/Base/Snippets.svelte +36 -29
  24. package/dist/Components/Base/Snippets.svelte.d.ts +5 -1
  25. package/dist/Components/BigRadioSet.svelte +39 -30
  26. package/dist/Components/BigRadioSetProps.d.ts +17 -1
  27. package/dist/Components/Bubble.svelte +110 -77
  28. package/dist/Components/Bubble.svelte.d.ts +23 -2
  29. package/dist/Components/BubbleProps.d.ts +55 -4
  30. package/dist/Components/Button.svelte +209 -197
  31. package/dist/Components/ButtonProps.d.ts +66 -1
  32. package/dist/Components/Checkbox.svelte +100 -72
  33. package/dist/Components/Checkbox.svelte.d.ts +1 -12
  34. package/dist/Components/CheckboxProps.d.ts +27 -0
  35. package/dist/Components/CheckboxProps.js +1 -0
  36. package/dist/Components/CollapsibleCard.svelte +114 -83
  37. package/dist/Components/CollapsibleCardProps.d.ts +22 -1
  38. package/dist/Components/Contexts/ContextMenu.svelte +178 -157
  39. package/dist/Components/Contexts/ContextMenu.svelte.d.ts +26 -0
  40. package/dist/Components/Contexts/ContextMenuDivider.svelte +19 -11
  41. package/dist/Components/Contexts/ContextMenuDivider.svelte.d.ts +9 -0
  42. package/dist/Components/Contexts/ContextMenuOption.svelte +66 -57
  43. package/dist/Components/Contexts/ContextMenuOption.svelte.d.ts +12 -1
  44. package/dist/Components/Contexts/ContextMenuOptionProps.d.ts +34 -2
  45. package/dist/Components/Contexts/Toast.svelte +88 -64
  46. package/dist/Components/Contexts/Toast.svelte.d.ts +14 -0
  47. package/dist/Components/Contexts/ToastContainer.svelte +68 -49
  48. package/dist/Components/Contexts/ToastContainer.svelte.d.ts +14 -0
  49. package/dist/Components/Contexts/ToastProps.d.ts +14 -1
  50. package/dist/Components/Contexts/Tooltip.svelte +47 -36
  51. package/dist/Components/Contexts/Tooltip.svelte.d.ts +10 -0
  52. package/dist/Components/DataMatrixIcon.svelte +113 -42
  53. package/dist/Components/DataMatrixIconProps.d.ts +73 -1
  54. package/dist/Components/DateInput.svelte +144 -109
  55. package/dist/Components/DateInput.svelte.d.ts +1 -1
  56. package/dist/Components/DateOnlyInputProps.d.ts +31 -5
  57. package/dist/Components/DatePicker.svelte +301 -313
  58. package/dist/Components/DatePickerProps.d.ts +18 -1
  59. package/dist/Components/DateTimeInputProps.d.ts +30 -5
  60. package/dist/Components/DesktopModal.svelte +90 -119
  61. package/dist/Components/DesktopModalProps.d.ts +5 -4
  62. package/dist/Components/Dial.svelte +213 -151
  63. package/dist/Components/DialProps.d.ts +74 -2
  64. package/dist/Components/DimensionInput.svelte +171 -185
  65. package/dist/Components/DimensionInput.svelte.d.ts +1 -1
  66. package/dist/Components/DimensionInputProps.d.ts +39 -4
  67. package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -107
  68. package/dist/Components/DragMenu/DragMenuHolderProps.d.ts +30 -1
  69. package/dist/Components/DragMenu/DraggableCard.svelte +77 -41
  70. package/dist/Components/DragMenu/DraggableCardProps.d.ts +27 -1
  71. package/dist/Components/FileCard.svelte +24 -20
  72. package/dist/Components/FileCardProps.d.ts +17 -1
  73. package/dist/Components/FileUpload.svelte +236 -196
  74. package/dist/Components/FileUploadProps.d.ts +34 -4
  75. package/dist/Components/GridInput.svelte +201 -191
  76. package/dist/Components/GridInput.svelte.d.ts +5 -5
  77. package/dist/Components/GridInputProps.d.ts +4 -1
  78. package/dist/Components/GridInputSet.svelte +31 -24
  79. package/dist/Components/GridInputSet.svelte.d.ts +5 -5
  80. package/dist/Components/GridInputSetProps.d.ts +4 -2
  81. package/dist/Components/HorizontalTabGroup.svelte +81 -79
  82. package/dist/Components/HorizontalTabGroupButton.svelte +51 -103
  83. package/dist/Components/HorizontalTabGroupProps.d.ts +15 -2
  84. package/dist/Components/Icon.svelte +144 -103
  85. package/dist/Components/IconProps.d.ts +54 -6
  86. package/dist/Components/Icons.d.ts +8 -0
  87. package/dist/Components/Icons.js +591 -572
  88. package/dist/Components/LoadingAnimation.svelte +39 -39
  89. package/dist/Components/LoadingAnimation.svelte.d.ts +1 -3
  90. package/dist/Components/LoadingAnimationProps.d.ts +16 -0
  91. package/dist/Components/LoadingAnimationProps.js +1 -0
  92. package/dist/Components/LoadingModal.svelte +48 -50
  93. package/dist/Components/LoadingModal.svelte.d.ts +1 -4
  94. package/dist/Components/LoadingModalProps.d.ts +17 -0
  95. package/dist/Components/LoadingModalProps.js +1 -0
  96. package/dist/Components/LoadingOverlay.svelte +28 -30
  97. package/dist/Components/LoadingOverlay.svelte.d.ts +1 -5
  98. package/dist/Components/LoadingOverlayProps.d.ts +28 -0
  99. package/dist/Components/LoadingOverlayProps.js +1 -0
  100. package/dist/Components/Modal.svelte +250 -255
  101. package/dist/Components/Modal.svelte.d.ts +1 -25
  102. package/dist/Components/ModalProps.d.ts +65 -0
  103. package/dist/Components/ModalProps.js +1 -0
  104. package/dist/Components/MultiSelect.svelte +238 -226
  105. package/dist/Components/MultiSelectCommonProps.d.ts +33 -4
  106. package/dist/Components/MultiSelectPropsAsObject.d.ts +5 -0
  107. package/dist/Components/MultiSelectPropsAsPrimitive.d.ts +6 -0
  108. package/dist/Components/Nav/CallbackButtonWithIcon.d.ts +22 -1
  109. package/dist/Components/Nav/Nav.svelte +115 -110
  110. package/dist/Components/Nav/Nav.svelte.d.ts +23 -2
  111. package/dist/Components/Nav/NavProps.d.ts +50 -3
  112. package/dist/Components/Nav/NavServiceMenuList.svelte +44 -35
  113. package/dist/Components/Nav/NavServiceMenuListProps.d.ts +25 -1
  114. package/dist/Components/Nav/NavTab.svelte +62 -91
  115. package/dist/Components/Nav/NavTab.svelte.d.ts +23 -2
  116. package/dist/Components/Nav/NavTabProps.d.ts +16 -2
  117. package/dist/Components/Nav/ServiceMenuItem.svelte +101 -92
  118. package/dist/Components/Nav/ServicesNav.svelte +96 -70
  119. package/dist/Components/Nav/ServicesNav.svelte.d.ts +23 -2
  120. package/dist/Components/Nav/ServicesNavProps.d.ts +20 -4
  121. package/dist/Components/Nav/SideMenuItemProps.d.ts +16 -0
  122. package/dist/Components/NumberInput.svelte +155 -145
  123. package/dist/Components/NumberInputProps.d.ts +37 -0
  124. package/dist/Components/PageHeading.svelte +25 -36
  125. package/dist/Components/PageHeading.svelte.d.ts +1 -6
  126. package/dist/Components/PageHeadingProps.d.ts +23 -0
  127. package/dist/Components/PageHeadingProps.js +1 -0
  128. package/dist/Components/PasswordInput.svelte +85 -73
  129. package/dist/Components/PasswordInput.svelte.d.ts +2 -2
  130. package/dist/Components/PasswordInputProps.d.ts +21 -0
  131. package/dist/Components/PasswordInputProps.js +1 -0
  132. package/dist/Components/Portal.svelte +36 -25
  133. package/dist/Components/PortalProps.d.ts +20 -1
  134. package/dist/Components/ProgressBubble.svelte +129 -84
  135. package/dist/Components/ProgressBubbleProps.d.ts +23 -2
  136. package/dist/Components/QuerySelect.svelte +384 -440
  137. package/dist/Components/QuerySelect.svelte.d.ts +2 -29
  138. package/dist/Components/QuerySelectProps.d.ts +66 -0
  139. package/dist/Components/QuerySelectProps.js +1 -0
  140. package/dist/Components/SingleSelect.svelte +268 -290
  141. package/dist/Components/SingleSelectCommonProps.d.ts +43 -5
  142. package/dist/Components/SingleSelectPropsAsObject.d.ts +7 -0
  143. package/dist/Components/SingleSelectPropsAsPrimitive.d.ts +8 -0
  144. package/dist/Components/StepButton.svelte +70 -120
  145. package/dist/Components/StepForm.svelte +147 -147
  146. package/dist/Components/StepFormProps.d.ts +16 -2
  147. package/dist/Components/Switch.svelte +84 -47
  148. package/dist/Components/Switch.svelte.d.ts +1 -1
  149. package/dist/Components/SwitchProps.d.ts +46 -0
  150. package/dist/Components/Table/Body/HeightData.d.ts +1 -6
  151. package/dist/Components/Table/Body/HeightData.js +8 -0
  152. package/dist/Components/Table/Body/QuickSearchCell.svelte +697 -641
  153. package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -11
  154. package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +6 -0
  155. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +68 -34
  156. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte.d.ts +24 -2
  157. package/dist/Components/Table/Body/Rows/ColumnHighlightProps.d.ts +3 -0
  158. package/dist/Components/Table/Body/Rows/ColumnList.svelte +66 -56
  159. package/dist/Components/Table/Body/Rows/ColumnList.svelte.d.ts +12 -11
  160. package/dist/Components/Table/Body/Rows/ColumnListProps.d.ts +1 -0
  161. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +515 -182
  162. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte.d.ts +12 -11
  163. package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +5 -0
  164. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +79 -49
  165. package/dist/Components/Table/Body/Rows/Columns/AccessorComponentProps.d.ts +12 -0
  166. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +203 -191
  167. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte.d.ts +12 -12
  168. package/dist/Components/Table/Body/Rows/Columns/ActionsColumn.d.ts +9 -0
  169. package/dist/Components/Table/Body/Rows/Columns/ActionsTableCell.d.ts +5 -0
  170. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +150 -115
  171. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte.d.ts +14 -13
  172. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.d.ts +12 -0
  173. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.js +1 -0
  174. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +149 -129
  175. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +149 -126
  176. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte.d.ts +12 -11
  177. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCellProps.d.ts +7 -0
  178. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +142 -108
  179. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte.d.ts +17 -11
  180. package/dist/Components/Table/Body/Rows/Columns/RowSelectionColumn.d.ts +8 -0
  181. package/dist/Components/Table/Body/Rows/Columns/RowSelectionTableCell.d.ts +5 -0
  182. package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +11 -0
  183. package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +11 -0
  184. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +87 -72
  185. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +11 -0
  186. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +148 -137
  187. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte.d.ts +13 -18
  188. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.d.ts +17 -0
  189. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.js +1 -0
  190. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +159 -144
  191. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +1 -7
  192. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.d.ts +16 -0
  193. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.js +1 -0
  194. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +279 -249
  195. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte.d.ts +12 -11
  196. package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +9 -0
  197. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +249 -370
  198. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte.d.ts +20 -12
  199. package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +8 -0
  200. package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +9 -0
  201. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +291 -354
  202. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte.d.ts +12 -11
  203. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelectProps.d.ts +8 -0
  204. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +201 -189
  205. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +2 -5
  206. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.d.ts +14 -0
  207. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.js +1 -0
  208. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +263 -325
  209. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +13 -12
  210. package/dist/Components/Table/Body/Rows/Columns/TableSelectProps.d.ts +6 -0
  211. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +230 -381
  212. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte.d.ts +12 -11
  213. package/dist/Components/Table/Body/Rows/Columns/TableTextInputProps.d.ts +6 -0
  214. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +187 -177
  215. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.d.ts +104 -0
  216. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.js +215 -0
  217. package/dist/Components/Table/Body/Rows/TableRow.svelte +331 -263
  218. package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
  219. package/dist/Components/Table/Body/Rows/TableRowProps.d.ts +11 -2
  220. package/dist/Components/Table/Body/TableBody.svelte +198 -81
  221. package/dist/Components/Table/Body/TableBody.svelte.d.ts +15 -22
  222. package/dist/Components/Table/Body/TableBodyProps.d.ts +9 -7
  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 +41 -39
  227. package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
  228. package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -28
  229. package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
  230. package/dist/Components/Table/Headers/TableHead.svelte +434 -294
  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 +154 -96
  235. package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
  236. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +112 -99
  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 +545 -556
  240. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
  241. package/dist/Components/Table/Misc/FilterPanel.svelte +409 -51
  242. package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
  243. package/dist/Components/Table/Misc/FilterPanelModal.svelte +30 -77
  244. package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
  245. package/dist/Components/Table/Misc/SidePanel.svelte +35 -32
  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 +315 -306
  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 +126 -157
  254. package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
  255. package/dist/Components/Table/Misc/TableSidebar.svelte +158 -177
  256. package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
  257. package/dist/Components/Table/Misc/ToolboxPanel.svelte +147 -81
  258. package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
  259. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -100
  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 +132 -88
  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 +23 -0
  271. package/dist/Components/Table/SubApis.svelte.js +359 -0
  272. package/dist/Components/Table/Table.svelte +694 -519
  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 +41 -1
  306. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +16 -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 +547 -53
  351. package/dist/Components/Table/Types/Context/TableContext.svelte.js +959 -1259
  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 +238 -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 +39 -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 +157 -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 +269 -0
  431. package/dist/Components/Test/TestContextConsumer.svelte +13 -13
  432. package/dist/Components/TextArea.svelte +127 -108
  433. package/dist/Components/TextAreaProps.d.ts +37 -0
  434. package/dist/Components/TextInput.svelte +166 -147
  435. package/dist/Components/TextInputProps.d.ts +58 -1
  436. package/dist/Components/ThreeStateRadio.svelte +140 -143
  437. package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
  438. package/dist/Components/Touch/BoolCard.svelte +45 -52
  439. package/dist/Components/Touch/BoolCard.svelte.d.ts +1 -10
  440. package/dist/Components/Touch/BoolCardProps.d.ts +21 -0
  441. package/dist/Components/Touch/BoolCardProps.js +1 -0
  442. package/dist/Components/Touch/DateModal.svelte +209 -217
  443. package/dist/Components/Touch/DateModal.svelte.d.ts +1 -17
  444. package/dist/Components/Touch/DateModalProps.d.ts +36 -0
  445. package/dist/Components/Touch/DateModalProps.js +1 -0
  446. package/dist/Components/Touch/EditCard.svelte +59 -52
  447. package/dist/Components/Touch/EditCardProps.d.ts +21 -0
  448. package/dist/Components/Touch/InfoCard.svelte +35 -28
  449. package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
  450. package/dist/Components/Touch/InfoTextCard.svelte +28 -21
  451. package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
  452. package/dist/Components/Touch/ModalExplanation.svelte +17 -20
  453. package/dist/Components/Touch/ModalExplanation.svelte.d.ts +1 -6
  454. package/dist/Components/Touch/ModalExplanationProps.d.ts +22 -0
  455. package/dist/Components/Touch/ModalExplanationProps.js +1 -0
  456. package/dist/Components/Touch/NumberKeyboard.svelte +225 -268
  457. package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
  458. package/dist/Components/Touch/NumberModal.svelte +79 -69
  459. package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
  460. package/dist/Components/Touch/PlusMinusCard.svelte +48 -52
  461. package/dist/Components/Touch/PlusMinusCard.svelte.d.ts +1 -6
  462. package/dist/Components/Touch/PlusMinusCardProps.d.ts +18 -0
  463. package/dist/Components/Touch/PlusMinusCardProps.js +1 -0
  464. package/dist/Components/Touch/SelectModal.svelte +123 -105
  465. package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
  466. package/dist/Components/Touch/SummaryCard.svelte +107 -65
  467. package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
  468. package/dist/Components/Touch/TextAreaModal.svelte +95 -86
  469. package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
  470. package/dist/Components/Touch/TextModal.svelte +106 -123
  471. package/dist/Components/Touch/TextModalProps.d.ts +28 -1
  472. package/dist/Components/Touch/TouchCard.svelte +34 -72
  473. package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
  474. package/dist/Components/Touch/TouchModal.svelte +265 -259
  475. package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
  476. package/dist/Components/Touch/UtilityButton.svelte +116 -98
  477. package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
  478. package/dist/Components/VerticalTabGroup.svelte +80 -102
  479. package/dist/Components/VerticalTabGroupButton.svelte +59 -98
  480. package/dist/Components/VerticalTabGroupProps.d.ts +15 -2
  481. package/dist/Contexts/AlertContext.svelte.d.ts +92 -8
  482. package/dist/Contexts/AlertContext.svelte.js +69 -6
  483. package/dist/Contexts/ContextMenuContext.svelte.d.ts +54 -8
  484. package/dist/Contexts/ContextMenuContext.svelte.js +48 -2
  485. package/dist/Contexts/TestContext.svelte.d.ts +27 -1
  486. package/dist/Contexts/TestContext.svelte.js +29 -1
  487. package/dist/Contexts/ToastContext.svelte.d.ts +29 -1
  488. package/dist/Contexts/ToastContext.svelte.js +93 -24
  489. package/dist/Contexts/TooltipContext.svelte.d.ts +68 -1
  490. package/dist/Contexts/TooltipContext.svelte.js +70 -7
  491. package/dist/Contexts/UntypedInputContext.svelte.d.ts +54 -5
  492. package/dist/Contexts/UntypedInputContext.svelte.js +87 -34
  493. package/dist/Delay/Delay.js +1 -1
  494. package/dist/Helpers/AsyncFlag.svelte.d.ts +39 -0
  495. package/dist/Helpers/AsyncFlag.svelte.js +72 -0
  496. package/dist/Helpers/Datamatrix.d.ts +19 -10
  497. package/dist/Helpers/Datamatrix.js +291 -2
  498. package/dist/Helpers/Helpers.svelte.d.ts +252 -17
  499. package/dist/Helpers/Helpers.svelte.js +271 -60
  500. package/dist/Helpers/INamed.d.ts +6 -0
  501. package/dist/Helpers/Storage.d.ts +67 -0
  502. package/dist/Helpers/Storage.js +138 -0
  503. package/dist/Helpers/dropdownPortal.d.ts +52 -0
  504. package/dist/Helpers/dropdownPortal.js +232 -0
  505. package/dist/Helpers/dropdownPortal.svelte.d.ts +2 -0
  506. package/dist/Helpers/dropdownPortal.svelte.js +5 -0
  507. package/dist/Helpers/memoiseByRow.d.ts +45 -0
  508. package/dist/Helpers/memoiseByRow.js +78 -0
  509. package/dist/Helpers/prefersReducedMotion.svelte.d.ts +27 -0
  510. package/dist/Helpers/prefersReducedMotion.svelte.js +18 -0
  511. package/dist/Helpers/useTooltip.svelte.d.ts +53 -0
  512. package/dist/Helpers/useTooltip.svelte.js +62 -0
  513. package/dist/Types/Examples/ExampleModal.svelte +35 -34
  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/_basics.scss +12 -12
  547. package/dist/scss/_colours.scss +134 -134
  548. package/dist/scss/_mixins.scss +3300 -3016
  549. package/dist/scss/_motion.scss +57 -0
  550. package/dist/scss/_sizing.scss +85 -69
  551. package/dist/scss/_transitions.scss +8 -8
  552. package/dist/scss/colours.js +2 -2
  553. package/dist/scss/sizing.d.ts +9 -0
  554. package/dist/scss/sizing.js +10 -1
  555. package/package.json +6 -2
@@ -1,199 +1,222 @@
1
- <svelte:options runes />
2
-
3
- <script lang="ts" generics="V extends object, VP extends ValueProp<V>">
4
- import { autoPluralise, generateShortUUID, vowels } from '../Helpers/Helpers.svelte.js';
5
- import { Colour, ColourSet } from '../scss/colours.js';
6
- import type { ValueProp } from '../Types/Internal/Misc.js';
7
- import { Size } from '../Types/Internal/Size.js';
8
- import Svelecte from 'svelecte';
9
- import { onMount } from 'svelte';
10
- import Action from './Action.svelte';
11
- import Icon from './Icon.svelte';
12
- import type { MultiSelectProps } from './MultiSelectProps.js';
13
-
14
- // HACK selectedValues is mutated by svelecte without asking, so we sometimes have to reverse it without a callback (side effects)
15
- let {
16
- label,
17
- inputId = generateShortUUID(),
18
- options,
19
- labelProp,
20
- valueProp,
21
- width,
22
- valueAsObject = true,
23
- height,
24
- selectedValues,
25
- onchange,
26
- collapseSelection = false,
27
- name = 'Item',
28
- disabled,
29
- required,
30
- invalid
31
- }: MultiSelectProps<V, VP> = $props();
32
-
33
- const an = $derived(name && vowels.has(name.at(0)?.toLocaleLowerCase() ?? '') ? 'an' : 'a');
34
-
35
- const hidden = $state(false);
36
-
37
- onMount(() => {
38
- const input = document.getElementById(inputId);
39
- // input?.addEventListener('focus', () => {
40
- // hidden = true;
41
- // });
42
- // input?.addEventListener('blur', () => {
43
- // hidden = false;
44
- // });
45
-
46
- // HACK callback for is-open on/off
47
- const dropdownRef = input?.closest('div.svelecte')?.querySelector('.sv_dropdown') ?? undefined;
48
- const observer = new MutationObserver((mutations: Array<MutationRecord>) => {
49
- for (let i = mutations.length - 1; i > -1; i--) {
50
- const mutation = mutations[i];
51
- if (mutation.attributeName === 'class') {
52
- isExpanded = dropdownRef?.classList.contains('is-open') ?? false;
53
- }
54
- }
55
- });
56
-
57
- if (dropdownRef) {
58
- observer.observe(dropdownRef, { attributes: true });
59
- }
60
-
61
- return () => {
62
- observer.disconnect();
63
- };
64
- });
65
-
66
- let isExpanded = $state(false);
67
-
68
- const isInvalid = $derived((required && !selectedValues.length) || invalid);
69
-
70
- function usesValuesAsObjects(_values: Array<V> | Array<V[VP]>): _values is Array<V> {
71
- return valueAsObject;
72
- }
73
-
74
- function usesValuesAsPrimitives(_values: Array<V> | Array<V[VP]>): _values is Array<V[VP]> {
75
- return !valueAsObject;
76
- }
77
- </script>
78
-
79
- <div
80
- class:invalid={isInvalid}
81
- class="select-wrapper"
82
- style={`${width ? `--input-width: ${width};` : ''}${height ? `--input-height: ${height};` : ''}`}
83
- >
84
- {#if label}
85
- <label for={inputId}>
86
- <span>{label}</span>
87
- <span class="border">{label}</span>
88
- </label>
89
- {/if}
90
-
91
- <Svelecte
92
- multiple
93
- {valueAsObject}
94
- {disabled}
95
- {inputId}
96
- valueField={valueProp}
97
- labelField={labelProp}
98
- {options}
99
- searchable
100
- value={selectedValues}
101
- onChange={(e: Array<V>) => {
102
- onchange(e);
103
- }}
104
- {name}
105
- selectOnTab
106
- keepSelectionInList
107
- searchProps={{ keepSelectionInList: true }}
108
- creatable={false}
109
- collapseSelection={collapseSelection ? 'always' : null}
110
- deselectMode="toggle"
111
- highlightFirstItem={false}
112
- placeholder="Please Select {name ? `${an} ${name}` : ''}"
113
- selection={collapseSelection ? selection : undefined}
114
- >
115
- {#snippet option(opt)}
116
- {@const option = opt as V}
117
- <span class="dropdown-item">
118
- <div
119
- class="toggle-icon"
120
- class:yes={usesValuesAsObjects(selectedValues)
121
- ? selectedValues.findIndex((v) => v[valueProp] === option[valueProp]) > -1
122
- : usesValuesAsPrimitives(selectedValues)
123
- ? (selectedValues as Array<V[VP]>).findIndex((v: V[VP]) => v === option[valueProp]) >
124
- -1
125
- : false}
126
- >
127
- <Icon name="tick" size={Size.MediumSmall} />
128
- </div>
129
- {option[labelProp]}</span
130
- >
131
- {/snippet}
132
-
133
- {#snippet collapsedSelection(selectedOptions: Array<object> /*_i18n*/)}
134
- <span class="selection" class:hidden
135
- >{#if selectedOptions.length}{selectedOptions.length}
136
- {#if name}{autoPluralise(name, selectedOptions.length)}{/if} Selected
137
- {:else}Please Select {#if name}
138
- {an} {name}{/if}
139
- {/if}</span
140
- >
141
- {/snippet}
142
-
143
- {#snippet append()}
144
- <div class="icons">
145
- <Action
146
- {disabled}
147
- size={Size.Small}
148
- noTabIndex
149
- colourSet={ColourSet.Auxiliary}
150
- onclick={(e: MouseEvent) => {
151
- if (isExpanded) {
152
- e.stopPropagation();
153
- }
154
-
155
- if (selectedValues.length) {
156
- onchange([]);
157
- } else {
158
- onchange(options.concat());
159
- }
160
- }}
161
- icon={{
162
- name: selectedValues.length ? 'close-menu-cross' : 'manage-product-group',
163
- colour: Colour['$ui-blue-10']
164
- }}
165
- />
166
-
167
- <Action
168
- {disabled}
169
- size={Size.Small}
170
- noTabIndex
171
- colourSet={ColourSet.Auxiliary}
172
- icon={{
173
- name: isExpanded ? 'chevron-up' : 'chevron-down',
174
- colour: Colour['$ui-blue-10']
175
- }}
176
- />
177
- </div>
178
- {/snippet}
179
- {#snippet toggleIcon()}
180
- <div class="nothing"></div>
181
- <!-- <div class="icon-bg">
182
- <Icon name="chevron-down" size={Size.MediumSmall} />
183
- </div> -->
184
- {/snippet}
185
- </Svelecte>
186
-
187
- {#snippet selection(/*_selectedOptions: Array<unknown>*/)}
188
- <!-- {#if selectedOptions.length === 0}
189
- <span class="selection" class:hidden
190
- >Please Select {#if objectName}
191
- {an} {objectName}{/if}</span
192
- >
193
- {/if} -->
194
- {/snippet}
195
- </div>
196
-
1
+ <svelte:options runes />
2
+
3
+ <script
4
+ lang="ts"
5
+ generics="V extends object, VP extends ValueProp<V>"
6
+ >
7
+ import { autoPluralise, generateWeakId, vowels } from '../Helpers/Helpers.svelte.js';
8
+ import { attachDropdownPortal } from '../Helpers/dropdownPortal.js';
9
+ import { Colour, ColourSet } from '../scss/colours.js';
10
+ import type { ValueProp } from '../Types/Internal/Misc.js';
11
+ import { Size } from '../Types/Internal/Size.js';
12
+ import Svelecte from 'svelecte';
13
+ import { SvelteSet } from 'svelte/reactivity';
14
+ import { onMount } from 'svelte';
15
+ import Action from './Action.svelte';
16
+ import Icon from './Icon.svelte';
17
+ import type { MultiSelectProps } from './MultiSelectProps.js';
18
+
19
+ // NOTE selectedValues is mutated by svelecte without asking, so we sometimes have to reverse it without a callback (side effects)
20
+ const {
21
+ label,
22
+ inputId = generateWeakId(),
23
+ options,
24
+ labelProp,
25
+ valueProp,
26
+ width,
27
+ valueAsObject = true,
28
+ height,
29
+ selectedValues,
30
+ onchange,
31
+ collapseSelection = false,
32
+ name = 'Item',
33
+ disabled,
34
+ required,
35
+ invalid,
36
+ }: MultiSelectProps<V, VP> = $props();
37
+
38
+ const an = $derived(name && vowels.has(name.at(0)?.toLocaleLowerCase() ?? '') ? 'an' : 'a');
39
+
40
+ // Pre-computed set of selected primitive keys. Used in the option snippet
41
+ // to avoid an O(n*m) findIndex sweep per render.
42
+ const selectedKeys = $derived.by(() => {
43
+ const s = new SvelteSet<V[VP]>();
44
+ if (valueAsObject) {
45
+ for (const v of selectedValues as Array<V>) {
46
+ s.add(v[valueProp]);
47
+ }
48
+ } else {
49
+ for (const v of selectedValues as Array<V[VP]>) {
50
+ s.add(v);
51
+ }
52
+ }
53
+ return s;
54
+ });
55
+
56
+ let isExpanded = $state(false);
57
+
58
+ onMount(() => {
59
+ const input = document.getElementById(inputId);
60
+ const svelecteRoot = input?.closest('div.svelecte') as HTMLElement | null;
61
+ const dropdownRef =
62
+ (svelecteRoot?.querySelector('.sv_dropdown') as HTMLElement | null) ?? undefined;
63
+
64
+ // HACK callback for is-open on/off; drives the chevron rotation
65
+ // in the action snippet further down.
66
+ const observer = new MutationObserver((mutations: Array<MutationRecord>) => {
67
+ for (let i = mutations.length - 1; i > -1; i--) {
68
+ const mutation = mutations[i];
69
+ if (mutation.attributeName === 'class') {
70
+ isExpanded = dropdownRef?.classList.contains('is-open') ?? false;
71
+ }
72
+ }
73
+ });
74
+
75
+ if (dropdownRef) {
76
+ observer.observe(dropdownRef, { attributes: true });
77
+ }
78
+
79
+ // Teleport the Svelecte dropdown to `document.body` while open
80
+ // so it escapes every ancestor `overflow` / `transform` /
81
+ // `z-index` stacking context. See `Helpers/dropdownPortal.ts`
82
+ // for the rationale and behaviour (auto-flip upwards on tight
83
+ // viewports, scroll-aware repositioning, viewport-bounded
84
+ // max-height).
85
+ const detachPortal = attachDropdownPortal({
86
+ getTrigger: () => svelecteRoot,
87
+ getDropdown: () => dropdownRef,
88
+ });
89
+
90
+ return () => {
91
+ observer.disconnect();
92
+ detachPortal();
93
+ };
94
+ });
95
+
96
+ const isInvalid = $derived((required && !selectedValues.length) || invalid);
97
+ </script>
98
+
99
+ <div
100
+ class:invalid={isInvalid}
101
+ class="select-wrapper"
102
+ style={`${width ? `--input-width: ${width};` : ''}${height ? `--input-height: ${height};` : ''}`}
103
+ >
104
+ {#if label}
105
+ <label for={inputId}>
106
+ <span>{label}</span>
107
+ <span class="border">{label}</span>
108
+ </label>
109
+ {/if}
110
+
111
+ <Svelecte
112
+ multiple
113
+ {valueAsObject}
114
+ {disabled}
115
+ {inputId}
116
+ valueField={valueProp}
117
+ labelField={labelProp}
118
+ {options}
119
+ searchable
120
+ value={selectedValues}
121
+ onChange={(e: Array<V>) => {
122
+ // svelecte always emits the full option objects; normalise to the
123
+ // shape the variant promised: primitives for AsPrimitive,
124
+ // objects for AsObject. This is what the discriminated
125
+ // `onchange` typing now guarantees to consumers.
126
+ if (valueAsObject) {
127
+ void (onchange as (v: Array<V>) => void | Promise<void>)(e);
128
+ } else {
129
+ const primitives = e.map((it) => it[valueProp]);
130
+ void (onchange as (v: Array<V[VP]>) => void | Promise<void>)(primitives);
131
+ }
132
+ }}
133
+ {name}
134
+ selectOnTab
135
+ keepSelectionInList
136
+ searchProps={{ keepSelectionInList: true }}
137
+ creatable={false}
138
+ collapseSelection={collapseSelection ? 'always' : null}
139
+ deselectMode="toggle"
140
+ highlightFirstItem={false}
141
+ placeholder="Please Select {name ? `${an} ${name}` : ''}"
142
+ selection={collapseSelection ? selection : undefined}
143
+ >
144
+ {#snippet option(opt)}
145
+ {@const option = opt as V}
146
+ <span class="dropdown-item">
147
+ <div
148
+ class="toggle-icon"
149
+ class:yes={selectedKeys.has(option[valueProp])}
150
+ >
151
+ <Icon
152
+ name="tick"
153
+ size={Size.MediumSmall}
154
+ />
155
+ </div>
156
+ {option[labelProp]}</span
157
+ >
158
+ {/snippet}
159
+
160
+ {#snippet collapsedSelection(selectedOptions: Array<object> /*_i18n*/)}
161
+ <span class="selection"
162
+ >{#if selectedOptions.length}{selectedOptions.length}
163
+ {#if name}{autoPluralise(name, selectedOptions.length)}{/if} Selected
164
+ {:else}Please Select {#if name}
165
+ {an} {name}{/if}
166
+ {/if}</span
167
+ >
168
+ {/snippet}
169
+
170
+ {#snippet append()}
171
+ <div class="icons">
172
+ <Action
173
+ {disabled}
174
+ size={Size.Small}
175
+ noTabIndex
176
+ colourSet={ColourSet.Auxiliary}
177
+ onclick={(e: MouseEvent) => {
178
+ if (isExpanded) {
179
+ e.stopPropagation();
180
+ }
181
+
182
+ if (selectedValues.length) {
183
+ // Empty array satisfies both Array<V> and Array<V[VP]>.
184
+ void (onchange as (v: Array<V> | Array<V[VP]>) => void | Promise<void>)([]);
185
+ } else if (valueAsObject) {
186
+ void (onchange as (v: Array<V>) => void | Promise<void>)(options.concat());
187
+ } else {
188
+ const primitives = options.map((it) => it[valueProp]);
189
+ void (onchange as (v: Array<V[VP]>) => void | Promise<void>)(primitives);
190
+ }
191
+ }}
192
+ icon={{
193
+ name: selectedValues.length ? 'close-menu-cross' : 'manage-product-group',
194
+ colour: Colour['$ui-blue-10'],
195
+ }}
196
+ />
197
+
198
+ <Action
199
+ {disabled}
200
+ size={Size.Small}
201
+ noTabIndex
202
+ colourSet={ColourSet.Auxiliary}
203
+ icon={{
204
+ name: isExpanded ? 'chevron-up' : 'chevron-down',
205
+ colour: Colour['$ui-blue-10'],
206
+ }}
207
+ />
208
+ </div>
209
+ {/snippet}
210
+ {#snippet toggleIcon()}
211
+ <div class="nothing"></div>
212
+ {/snippet}
213
+ </Svelecte>
214
+
215
+ {#snippet selection(/*_selectedOptions: Array<unknown>*/)}
216
+ <!-- collapsed selection rendered above -->
217
+ {/snippet}
218
+ </div>
219
+
197
220
  <style>.select-wrapper {
198
221
  min-width: var(--input-min-width, 12rem);
199
222
  width: var(--input-width, 100%);
@@ -262,24 +285,13 @@
262
285
  max-height: 100%;
263
286
  box-sizing: border-box;
264
287
  }
265
- .select-wrapper :global(.sv-item--content) {
266
- font-size: 0.875rem;
267
- }
268
- .select-wrapper :global(.sv-item--wrap.in-dropdown) {
269
- cursor: pointer;
270
- min-height: 40px;
271
- align-items: center;
272
- }
273
- .select-wrapper :global(.sv-item--content) {
274
- min-height: 1.2rem;
275
- }
276
288
  .select-wrapper :global(.sv-btn-indicator) {
277
289
  cursor: pointer;
278
290
  }
279
291
  .select-wrapper.no-border {
280
292
  --sv-border: none;
281
293
  }
282
- .select-wrapper .select-wrapper.force-upwards :global .sv_dropdown.is-open {
294
+ .select-wrapper.force-upwards :global .sv_dropdown.is-open {
283
295
  bottom: var(--dropdown-bottom);
284
296
  }
285
297
  .select-wrapper :global .sv-control {
@@ -300,32 +312,18 @@
300
312
  .select-wrapper :global .svelecte.svelecte-control {
301
313
  cursor: pointer;
302
314
  }
303
- .select-wrapper :global .sv-item--wrap.in-dropdown {
304
- cursor: pointer;
305
- min-height: 40px;
306
- align-items: center;
307
- }
308
- .select-wrapper :global .sv-item--content {
309
- min-height: 1.2rem;
310
- }
311
315
  .select-wrapper :global span {
312
316
  transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
313
317
  }
314
318
  .select-wrapper :global .sv-control {
315
319
  transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
316
320
  }
317
- .select-wrapper :global div.sv_dropdown.is-open {
318
- z-index: 99;
319
- }
320
321
  .select-wrapper div.nothing {
321
322
  height: 0;
322
323
  width: 0;
323
324
  }
324
- .select-wrapper .dropdown-item,
325
325
  .select-wrapper .selection {
326
326
  font-size: 0.875rem;
327
- }
328
- .select-wrapper .selection {
329
327
  padding-left: 0.5rem;
330
328
  white-space: nowrap;
331
329
  display: flex;
@@ -349,22 +347,36 @@ div.icons {
349
347
  box-sizing: border-box;
350
348
  }
351
349
 
352
- .dropdown-item {
350
+ :global .sv-item--wrap.in-dropdown {
351
+ cursor: pointer;
352
+ min-height: 40px;
353
+ align-items: center;
354
+ }
355
+ :global .sv-item--content {
356
+ font-size: 0.875rem;
357
+ min-height: 1.2rem;
358
+ }
359
+ :global div.sv_dropdown.is-open {
360
+ z-index: 99;
361
+ }
362
+
363
+ :global(.dropdown-item) {
353
364
  display: flex;
354
365
  flex-flow: row nowrap;
355
366
  width: 100%;
356
367
  overflow: hidden;
357
368
  text-overflow: ellipsis;
358
369
  gap: 1rem;
370
+ font-size: 0.875rem;
359
371
  fill: #259fc7;
360
372
  }
361
- .dropdown-item .toggle-icon {
373
+ :global(.dropdown-item) .toggle-icon {
362
374
  display: flex;
363
375
  align-items: center;
364
376
  justify-content: center;
365
377
  flex-flow: column nowrap;
366
378
  opacity: 0;
367
379
  }
368
- .dropdown-item .toggle-icon.yes {
380
+ :global(.dropdown-item) .toggle-icon.yes {
369
381
  opacity: 1;
370
- }</style>
382
+ }</style>
@@ -1,16 +1,45 @@
1
- import type { NonNullableKey, ValueProp } from '../Types/Internal/Misc.js';
1
+ import type { CssLength, NonNullableKey, ValueProp } from '../Types/Internal/Misc.js';
2
+ /**
3
+ * Keys of `V` whose value is a string. Re-exported for callers that want
4
+ * a tighter constraint than `NonNullableKey<V>`. Currently aliased to
5
+ * `NonNullableKey<V>` to avoid cascading into Table subtree consumers
6
+ * (see workorder MultiSelect P1).
7
+ */
8
+ export type StringValuedKey<V> = NonNullableKey<V>;
2
9
  export interface MultiSelectCommonProps<V extends object, VP extends ValueProp<V>> {
10
+ /** Available options to choose from. */
3
11
  options: Array<V>;
12
+ /** Singular display name of the entity. */
4
13
  name?: string;
14
+ /** Key of `V` whose value is the human-readable label. */
5
15
  labelProp: NonNullableKey<V>;
16
+ /** Key of `V` whose value is the unique identifier. */
6
17
  valueProp: VP;
18
+ /** Disable the input. */
7
19
  disabled?: boolean;
20
+ /** Whether at least one selection is required. */
8
21
  required?: boolean;
22
+ /** Force the invalid visual state. */
9
23
  invalid?: boolean;
24
+ /** Top label. */
10
25
  label?: string;
26
+ /** DOM id of the underlying svelecte input. */
11
27
  inputId?: string;
12
- width?: string;
13
- height?: string;
14
- onchange: (e: Array<V>) => void;
28
+ /**
29
+ * CSS width override. Interpolated into a CSS custom property.
30
+ *
31
+ * BREAKING (Phase 7.7): was `string`; now requires the `CssLength`
32
+ * brand. Use the `cssLength('...')` helper to mark intentional CSS
33
+ * length strings.
34
+ */
35
+ width?: CssLength;
36
+ /**
37
+ * CSS height override. Interpolated into a CSS custom property.
38
+ *
39
+ * BREAKING (Phase 7.7): was `string`; now requires the `CssLength`
40
+ * brand. Use the `cssLength('...')` helper.
41
+ */
42
+ height?: CssLength;
43
+ /** When true, render a summary instead of chips. */
15
44
  collapseSelection?: boolean;
16
45
  }
@@ -3,4 +3,9 @@ import type { MultiSelectCommonProps } from './MultiSelectCommonProps.js';
3
3
  export interface MultiSelectPropsAsObject<V extends object, VP extends ValueProp<V>> extends MultiSelectCommonProps<V, VP> {
4
4
  valueAsObject: true;
5
5
  selectedValues: Array<V>;
6
+ /**
7
+ * Called when the selection changes. Receives an array of the full
8
+ * option objects because `valueAsObject` is `true`.
9
+ */
10
+ onchange: (newValues: Array<V>) => void | Promise<void>;
6
11
  }
@@ -3,4 +3,10 @@ import type { MultiSelectCommonProps } from './MultiSelectCommonProps.js';
3
3
  export interface MultiSelectPropsAsPrimitive<V extends object, VP extends ValueProp<V>> extends MultiSelectCommonProps<V, VP> {
4
4
  valueAsObject: false;
5
5
  selectedValues: Array<V[VP]>;
6
+ /**
7
+ * Called when the selection changes. Receives an array of the
8
+ * primitive key values (`V[VP]`) because `valueAsObject` is `false`.
9
+ * Do NOT read `.value` off the items -- they are already primitives.
10
+ */
11
+ onchange: (newValues: Array<V[VP]>) => void | Promise<void>;
6
12
  }
@@ -1,22 +1,43 @@
1
1
  import type { Pathname } from '$app/types';
2
2
  import type { IconProps } from '../IconProps.js';
3
+ import type { AsyncFlag } from '../../Types/Internal/AsyncFlag.js';
4
+ /**
5
+ * Either a path-bearing nav button or a callback-bearing nav button.
6
+ *
7
+ * Modelled as a proper discriminated union so that providing both
8
+ * `path` and `callback` is a compile error. Each member uses
9
+ * `?: never` on the absent discriminant; this is the recommended
10
+ * template across scoria for "either A or B" prop shapes.
11
+ */
3
12
  export type CallbackButtonWithIcon = CallbackButtonWithPath | CallbackButtonWithCallback;
13
+ /** Fields common to every nav button variant. */
4
14
  export interface NavButtonPartial {
15
+ /** Name of the icon to render to the left of the label. */
5
16
  iconName?: IconProps['name'];
17
+ /** Visible label shown next to the icon. */
6
18
  label: string;
19
+ /** Tooltip text displayed on hover. */
7
20
  hoverLabel?: string;
21
+ /** Optional second line shown below the label. */
8
22
  subtitle?: string;
9
- visible?: boolean | Promise<boolean>;
23
+ /**
24
+ * AsyncFlag of a boolean. Nav button is hidden when this resolves
25
+ * to false. Defaults to true.
26
+ */
27
+ visible?: AsyncFlag<boolean>;
10
28
  }
29
+ /** Convenience alias used by some consumers that build `NavButton` directly. */
11
30
  export type NavButton = NavButtonPartial & ({
12
31
  path: Pathname;
13
32
  } | {
14
33
  callback: () => void;
15
34
  });
35
+ /** Nav button that navigates to a SvelteKit route. */
16
36
  export interface CallbackButtonWithPath extends NavButtonPartial {
17
37
  path: Pathname;
18
38
  callback?: never;
19
39
  }
40
+ /** Nav button that fires a callback when clicked. */
20
41
  export interface CallbackButtonWithCallback extends NavButtonPartial {
21
42
  path?: never;
22
43
  callback: () => void;