@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
@@ -1,16 +1,22 @@
1
- <!-- eslint-disable prefer-const -->
2
1
  <svelte:options runes />
3
2
 
4
- <script lang="ts">
3
+ <script
4
+ module
5
+ lang="ts"
6
+ >
5
7
  import { DATAMatrix } from '../../Helpers/Datamatrix.js';
8
+ import { useAsyncFlag } from '../../Helpers/AsyncFlag.svelte.js';
6
9
  import { passthrough } from '../../Helpers/Helpers.svelte.js';
7
10
  import { ColourSet } from '../../scss/colours.js';
8
11
  import { Size } from '../../Types/Internal/Size.js';
9
12
  import { onMount } from 'svelte';
10
13
  import Action from '../Action.svelte';
14
+ import BaseModal from '../Base/BaseModal.svelte';
11
15
  import DataMatrixIcon from '../DataMatrixIcon.svelte';
12
16
  import type { TouchModalProps } from './TouchModalProps.js';
17
+ </script>
13
18
 
19
+ <script lang="ts">
14
20
  let {
15
21
  header,
16
22
  buttons,
@@ -36,39 +42,54 @@
36
42
  submitRef = $bindable(),
37
43
  }: TouchModalProps = $props();
38
44
 
39
- let dialog: HTMLDialogElement | undefined;
40
- let form: HTMLFormElement;
45
+ let open = $state(true);
46
+ let form: HTMLFormElement | undefined = $state();
41
47
  let timeout: ReturnType<typeof setTimeout> | undefined = undefined;
42
48
  let paused = $state(false);
49
+ let isActive = $state(false);
43
50
 
44
- $effect(() => {
45
- if (dialog) {
46
- dialog.showModal();
47
- onShowCallback?.();
48
- }
49
- });
51
+ // Pre-compute barcode SVGs once per `buttons` array. Building a DataMatrix
52
+ // barcode is non-trivial; rebuilding inside the each-block re-runs the
53
+ // encoder on every render.
54
+ const barcodeIcons = $derived.by(
55
+ () => buttons?.map((b) => (b.barcodeValue != null ? DATAMatrix(b.barcodeValue) : null)) ?? []
56
+ );
50
57
 
51
- let isActive = false;
58
+ // Resolve each button's `isValid` once at the component level rather than
59
+ // inside the each-block. `useAsyncFlag` debounces stale resolutions, holds
60
+ // the previous value until a new Promise settles, and stops the
61
+ // `{#await}` flicker the previous implementation exhibited.
62
+ const buttonValidities = useAsyncFlag(
63
+ () => Promise.all((buttons ?? []).map((b) => Promise.resolve(b.isValid ?? true))),
64
+ [] as Array<boolean>
65
+ );
52
66
 
53
67
  onMount(() => {
54
- setTimeout(() => {
68
+ queueMicrotask(() => {
69
+ onShowCallback?.();
70
+ });
71
+
72
+ const activeTimer = setTimeout(() => {
55
73
  isActive = true;
56
74
  }, 200);
57
75
 
58
76
  if (defaultTimer) {
59
77
  timeout = setTimeout(() => {
60
- if (dialog && dialog.open) {
78
+ if (open) {
61
79
  if (defaultTimer.action === 'submit') {
62
- form.requestSubmit();
80
+ form?.requestSubmit();
63
81
  defaultTimer.callback?.();
64
82
  } else {
65
- dialog.close();
83
+ open = false;
66
84
  }
67
85
  }
68
86
  }, defaultTimer.time);
69
87
  }
70
88
 
71
- return clearTimer;
89
+ return () => {
90
+ clearTimeout(activeTimer);
91
+ clearTimer();
92
+ };
72
93
  });
73
94
 
74
95
  function clearTimer() {
@@ -79,46 +100,57 @@
79
100
  }
80
101
 
81
102
  function handleEsc(e: KeyboardEvent) {
82
- // e.stopPropagation();
83
-
84
103
  if (e.key === 'Escape') {
85
104
  e.preventDefault();
86
105
  if (!mandatory) {
87
- dialog?.close();
106
+ open = false;
88
107
  }
89
108
  }
90
109
  }
110
+
111
+ function requestClose() {
112
+ open = false;
113
+ }
114
+
115
+ const dialogClassNames = $derived(
116
+ [
117
+ staticHeight ? 'static-height' : null,
118
+ staticWidth ? 'static-width' : null,
119
+ noscroll ? 'noscroll' : null,
120
+ ]
121
+ .filter((c): c is string => c !== null)
122
+ .join(' ')
123
+ );
124
+
125
+ const dialogStyle = $derived(
126
+ `--timer: ${defaultTimer ? defaultTimer.time.toString() + 'ms' : 'unset'};` +
127
+ `--dialog-min-width: ${minWidth};` +
128
+ `--dialog-min-height: ${minHeight};` +
129
+ (height != null ? `--dialog-height: ${height};` : '') +
130
+ (width != null ? `--dialog-width: ${width};` : '')
131
+ );
91
132
  </script>
92
133
 
93
- <dialog
94
- style="--timer: {defaultTimer && defaultTimer.time.toString() + 'ms'}; {minWidth &&
95
- `--dialog-min-width: ${minWidth};`} {minHeight &&
96
- `--dialog-min-height: ${minHeight};`} {height && `--dialog-height: ${height};`} {width &&
97
- `--dialog-width: ${width};`}"
98
- class:static-height={staticHeight}
99
- class:static-width={staticWidth}
100
- class:noscroll
101
- bind:this={dialog}
134
+ <BaseModal
135
+ bind:value={open}
102
136
  {onclose}
103
- onkeydown={handleEsc}
104
- onclick={(e) => {
105
- if (e.target === dialog) {
106
- if (!mandatory) {
107
- dialog.close();
108
- }
109
- }
110
- clearTimer();
111
- }}
137
+ {mandatory}
138
+ dialogClass={dialogClassNames}
139
+ {dialogStyle}
112
140
  >
141
+ <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
142
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
113
143
  <form
114
144
  method="dialog"
115
145
  bind:this={form}
116
146
  onsubmit={(e) => {
117
147
  e.preventDefault();
148
+ clearTimer();
118
149
  if (isActive) {
119
150
  onsubmit?.(e);
120
151
  }
121
152
  }}
153
+ onclick={clearTimer}
122
154
  class="modal-root"
123
155
  >
124
156
  <div class="modal-header">
@@ -132,9 +164,7 @@
132
164
  <div class="close-button">
133
165
  <Action
134
166
  size={Size.Large}
135
- onclick={() => {
136
- dialog?.close();
137
- }}
167
+ onclick={requestClose}
138
168
  icon={{
139
169
  name: 'cross',
140
170
  size: Size.DoubleXLarge,
@@ -153,7 +183,6 @@
153
183
  </div>
154
184
 
155
185
  {#if defaultTimer}
156
- <!-- class:paused -->
157
186
  <div class="bar-container">
158
187
  <div
159
188
  class:paused
@@ -178,83 +207,60 @@
178
207
  {@render footer()}
179
208
  {:else if buttons?.length}
180
209
  <div class="modal-footer">
181
- {#each buttons as button (button)}
210
+ {#each buttons as button, index (button.label)}
211
+ {@const buttonIsValid = buttonValidities.value[index] ?? true}
182
212
  {#if button.callback}
183
213
  <div class="button-barcode-set">
184
- {#if button.barcodeValue}
185
- {@const icon = DATAMatrix(button.barcodeValue)}
214
+ {#if barcodeIcons[index]}
186
215
  <DataMatrixIcon
187
216
  title={button.label}
188
- {icon}
217
+ icon={{ kind: 'svg', svg: barcodeIcons[index] }}
189
218
  />
190
219
  {/if}
191
- {#await button.isValid}
192
- <button
193
- onkeydown={passthrough}
194
- disabled
195
- class:margin-left={button.margin === 'left'}
196
- class:margin-right={button.margin === 'right'}
197
- type={button.type ?? 'button'}
198
- onclick={button.callback}>{button.label}</button
199
- >
200
- {:then buttonIsValid}
201
- <button
202
- class:call-to-action={button.colourSet === ColourSet.CallToAction}
203
- class:primary={button.colourSet === ColourSet.Primary}
204
- class:secondary-colour={button.colourSet === ColourSet.Secondary}
205
- class:warning={button.colourSet === ColourSet.Warning}
206
- class:error={button.colourSet === ColourSet.Error}
207
- class:info={button.colourSet === ColourSet.Info}
208
- onkeydown={passthrough}
209
- disabled={buttonIsValid === false}
210
- class:margin-left={button.margin === 'left'}
211
- class:margin-right={button.margin === 'right'}
212
- type={button.type ?? 'button'}
213
- onclick={button.callback}>{button.label}</button
214
- >
215
- {/await}
220
+ <button
221
+ class:call-to-action={button.colourSet === ColourSet.CallToAction}
222
+ class:primary={button.colourSet === ColourSet.Primary}
223
+ class:secondary-colour={button.colourSet === ColourSet.Secondary}
224
+ class:warning={button.colourSet === ColourSet.Warning}
225
+ class:error={button.colourSet === ColourSet.Error}
226
+ class:info={button.colourSet === ColourSet.Info}
227
+ onkeydown={passthrough}
228
+ disabled={!buttonIsValid}
229
+ class:margin-left={button.margin === 'left'}
230
+ class:margin-right={button.margin === 'right'}
231
+ type={button.type ?? 'button'}
232
+ onclick={button.callback}>{button.label}</button
233
+ >
216
234
  </div>
217
235
  {:else}
218
236
  <div class="button-barcode-set">
219
- {#if button.barcodeValue}
220
- {@const icon = DATAMatrix(button.barcodeValue)}
237
+ {#if barcodeIcons[index]}
221
238
  <DataMatrixIcon
222
239
  title={button.label}
223
- {icon}
240
+ icon={{ kind: 'svg', svg: barcodeIcons[index] }}
224
241
  />
225
242
  {/if}
226
- {#await button.isValid}
227
- <button
228
- onkeydown={passthrough}
229
- disabled
230
- class:margin-left={button.margin === 'left'}
231
- class:margin-right={button.margin === 'right'}
232
- bind:this={submitRef}
233
- type={button.type ?? 'submit'}>{button.label}await</button
234
- >
235
- {:then buttonIsValid}
236
- <button
237
- class:call-to-action={button.colourSet === ColourSet.CallToAction}
238
- class:primary={button.colourSet === ColourSet.Primary}
239
- class:secondary-colour={button.colourSet === ColourSet.Secondary}
240
- class:warning={button.colourSet === ColourSet.Warning}
241
- class:error={button.colourSet === ColourSet.Error}
242
- class:info={button.colourSet === ColourSet.Info}
243
- onkeydown={passthrough}
244
- disabled={buttonIsValid === false || !isValid}
245
- class:margin-left={button.margin === 'left'}
246
- class:margin-right={button.margin === 'right'}
247
- bind:this={submitRef}
248
- type={button.type ?? 'submit'}>{button.label}</button
249
- >
250
- {/await}
243
+ <button
244
+ class:call-to-action={button.colourSet === ColourSet.CallToAction}
245
+ class:primary={button.colourSet === ColourSet.Primary}
246
+ class:secondary-colour={button.colourSet === ColourSet.Secondary}
247
+ class:warning={button.colourSet === ColourSet.Warning}
248
+ class:error={button.colourSet === ColourSet.Error}
249
+ class:info={button.colourSet === ColourSet.Info}
250
+ onkeydown={passthrough}
251
+ disabled={!buttonIsValid || !isValid}
252
+ class:margin-left={button.margin === 'left'}
253
+ class:margin-right={button.margin === 'right'}
254
+ bind:this={submitRef}
255
+ type={button.type ?? 'submit'}>{button.label}</button
256
+ >
251
257
  </div>
252
258
  {/if}
253
259
  {/each}
254
260
  </div>
255
261
  {/if}
256
262
  </form>
257
- </dialog>
263
+ </BaseModal>
258
264
 
259
265
  <style>dialog {
260
266
  overflow: clip;
@@ -1,27 +1,61 @@
1
1
  import type { ButtonProp } from '../../Types/Internal/ButtonProp.js';
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { DefaultTimer } from './DefaultTimer.js';
4
+ /**
5
+ * Props for `TouchModal`, the touch-friendly variant of `Modal`. Provides
6
+ * a `<dialog>`-based modal with a header, optional explanation, body,
7
+ * and either a footer snippet or a `buttons` array. Each button's
8
+ * `isValid` flag is resolved through `useAsyncFlag`, so promise-based
9
+ * validation does not flicker the disabled state on re-render.
10
+ *
11
+ * Used as the foundation for the Touch-family modal variants
12
+ * (`NumberModal`, `TextModal`, `TextAreaModal`, `SelectModal`,
13
+ * `DateModal`).
14
+ */
4
15
  export interface TouchModalProps {
16
+ /** Header text shown in the modal title bar. */
5
17
  header: string;
18
+ /** Modal body. Rendered inside the scroll container. */
6
19
  children: Snippet;
20
+ /** Fires after the native `<dialog>` element closes. */
7
21
  onclose?: () => void;
22
+ /** Lay the modal body out in row direction. */
8
23
  row?: boolean;
24
+ /** Allow the row-flowed body to wrap. */
9
25
  wrap?: boolean;
26
+ /** Native form submit handler. The default action prevents the
27
+ * submission and forwards the event. */
10
28
  onsubmit?: (e: SubmitEvent) => void;
11
- buttons?: Array<ButtonProp>;
29
+ /** Buttons rendered into the footer. Provide `footer` to override. */
30
+ buttons?: ReadonlyArray<ButtonProp>;
31
+ /** If true, the modal cannot be dismissed via Escape or backdrop click. */
12
32
  mandatory?: boolean;
33
+ /** Fix the dialog to its minimum height regardless of content. */
13
34
  staticHeight?: boolean;
35
+ /** Fix the dialog to its minimum width regardless of content. */
14
36
  staticWidth?: boolean;
37
+ /** CSS length string for the dialog's minimum width. */
15
38
  minWidth?: string;
39
+ /** CSS length string for the dialog's minimum height. */
16
40
  minHeight?: string;
41
+ /** CSS length string for the dialog's width. */
17
42
  width?: string;
43
+ /** CSS length string for the dialog's height. */
18
44
  height?: string;
45
+ /** Fires once the dialog has been shown. */
19
46
  onShowCallback?: () => void;
47
+ /** Two-way bindable reference to the submit button DOM element. */
20
48
  submitRef?: HTMLButtonElement | undefined;
49
+ /** Optional countdown timer that auto-submits or auto-closes. */
21
50
  defaultTimer?: DefaultTimer;
51
+ /** Disables the submit button when false. */
22
52
  isValid?: boolean;
53
+ /** Disable the scroll container, letting overflow be visible. */
23
54
  noscroll?: boolean;
55
+ /** Snippet rendered alongside the header (e.g. extra controls). */
24
56
  headerExtra?: Snippet;
57
+ /** Optional explanation snippet rendered above the body. */
25
58
  explanation?: Snippet | undefined;
59
+ /** Footer snippet that replaces the default buttons row. */
26
60
  footer?: Snippet;
27
61
  }
@@ -8,6 +8,7 @@
8
8
  import { onMount } from 'svelte';
9
9
  import DataMatrixIcon from '../DataMatrixIcon.svelte';
10
10
  import Icon from '../Icon.svelte';
11
+ import type { DataMatrixSvg } from '../DataMatrixIconProps.js';
11
12
  import type { UtilityButtonProps } from './UtilityButtonProps.js';
12
13
  let {
13
14
  type = 'button',
@@ -18,11 +19,12 @@
18
19
  notifications,
19
20
  ref = $bindable(),
20
21
  disabled = false,
22
+ label,
21
23
  onEditBarcode,
22
24
  onclick,
23
25
  onfocus,
24
26
  onblur,
25
- children
27
+ children,
26
28
  }: UtilityButtonProps = $props();
27
29
 
28
30
  let isMounted = $state(false);
@@ -30,25 +32,32 @@
30
32
  onMount(() => {
31
33
  isMounted = true;
32
34
  });
33
- const size = $derived(
34
- isMounted
35
- ? (explicitSize ?? icon instanceof SVGSVGElement)
36
- ? Size.DoubleXLarge
37
- : (icon?.size ?? Size.DoubleXLarge)
38
- : Size.DoubleXLarge
39
- );
35
+
36
+ const size: Size = $derived.by(() => {
37
+ if (!isMounted) {
38
+ return Size.DoubleXLarge;
39
+ }
40
+ if (explicitSize !== undefined) {
41
+ return explicitSize;
42
+ }
43
+ if (icon instanceof SVGSVGElement) {
44
+ return Size.DoubleXLarge;
45
+ }
46
+ return icon?.size ?? Size.DoubleXLarge;
47
+ });
40
48
  let slotSpan: HTMLSpanElement | undefined = $state();
41
49
  </script>
42
50
 
43
51
  <button
44
52
  {type}
45
53
  class:call-to-action={colourSet === ColourSet.Primary || colourSet === ColourSet.CallToAction}
46
- disabled={disabled ? true : undefined}
54
+ {disabled}
47
55
  class:left={side == Side.Left}
48
56
  class:right={side == Side.Right}
49
57
  class:top={side == Side.Top}
50
58
  class:bottom={side == Side.Bottom}
51
59
  bind:this={ref}
60
+ aria-label={label}
52
61
  {onclick}
53
62
  {onfocus}
54
63
  {onblur}
@@ -69,13 +78,22 @@
69
78
  class:bottom={side == Side.Bottom}
70
79
  >
71
80
  {#if icon instanceof SVGSVGElement}
72
- <DataMatrixIcon title={slotSpan?.textContent ?? '{unknown}'} {icon} />
81
+ <!-- SECURITY: UtilityButton accepts a generic SVGSVGElement here for backwards
82
+ compatibility. The cast to DataMatrixSvg trusts the caller; DataMatrixIcon
83
+ additionally sanitises the cloned subtree before mounting. -->
84
+ <DataMatrixIcon
85
+ title={slotSpan?.textContent ?? '{unknown}'}
86
+ icon={{ kind: 'svg', svg: icon as DataMatrixSvg }}
87
+ />
73
88
  {:else}
74
89
  {#if notifications}
75
90
  <span class="notification">{notifications}</span>
76
91
  {/if}
77
92
 
78
- <Icon {...icon} {size} />
93
+ <Icon
94
+ {...icon}
95
+ {size}
96
+ />
79
97
  {/if}
80
98
  </div>
81
99
  {/if}
@@ -143,21 +161,21 @@ button:not([disabled]) span.notification {
143
161
  vertical-align: middle;
144
162
  border-radius: 50%;
145
163
  line-height: 1.5rem;
146
- font-size: 0.82rem;
164
+ font-size: 0.75rem;
147
165
  }
148
166
  button:not([disabled]) span.utility-label span.notification-on-text {
149
167
  position: absolute;
150
- right: 12px;
151
- bottom: 12px;
168
+ right: 0.75rem;
169
+ bottom: 0.75rem;
152
170
  background-color: #259fc7;
153
171
  color: #ffffff;
154
- width: 24px;
155
- height: 24px;
172
+ width: 1.5rem;
173
+ height: 1.5rem;
156
174
  text-align: center;
157
175
  vertical-align: middle;
158
176
  border-radius: 50%;
159
- line-height: 24px;
160
- font-size: 0.82rem;
177
+ line-height: 1.5rem;
178
+ font-size: 0.75rem;
161
179
  }
162
180
  button:not([disabled]).call-to-action:not([disabled]) {
163
181
  background-color: #259fc7;
@@ -3,18 +3,34 @@ import type { Side } from '../../Types/Internal/Side.js';
3
3
  import type { Size } from '../../Types/Internal/Size.js';
4
4
  import type { Snippet } from 'svelte';
5
5
  import type { PartialIconProps } from '../PartialIconProps.js';
6
+ /** Props for the touch-friendly UtilityButton. */
6
7
  export interface UtilityButtonProps {
8
+ /** Icon descriptor or pre-built SVG element. */
7
9
  icon?: PartialIconProps | SVGSVGElement | null;
10
+ /** Native button type. */
8
11
  type?: 'button' | 'submit' | 'reset' | null;
12
+ /** Semantic colour set. */
9
13
  colourSet?: ColourSet;
14
+ /** Anchor side. */
10
15
  side?: Side;
16
+ /** Explicit icon size override. */
11
17
  size?: Size;
18
+ /** Notification badge text. */
12
19
  notifications?: string;
20
+ /** Bindable button reference. */
13
21
  ref?: HTMLButtonElement | undefined;
22
+ /** Disable interaction. */
14
23
  disabled?: boolean;
24
+ /** Accessible name; wired as aria-label. */
25
+ label?: string;
26
+ /** Right-click hook for editing a paired barcode. */
15
27
  onEditBarcode?: () => void;
28
+ /** Click handler. */
16
29
  onclick?: ((e: MouseEvent) => void) | undefined;
30
+ /** Native focus handler. */
17
31
  onfocus?: ((e: FocusEvent) => void) | undefined;
32
+ /** Native blur handler. */
18
33
  onblur?: ((e: FocusEvent) => void) | undefined;
34
+ /** Snippet rendered next to the icon. */
19
35
  children?: Snippet;
20
36
  }
@@ -4,10 +4,11 @@
4
4
  lang="ts"
5
5
  generics="CommonDenominator"
6
6
  >
7
+ import { readJSON } from '../Helpers/Storage.js';
7
8
  import { onMount, untrack } from 'svelte';
8
9
  import VerticalTabGroupButton from './VerticalTabGroupButton.svelte';
9
10
  import type { VerticalTabGroupProps } from './VerticalTabGroupProps.js';
10
- let {
11
+ const {
11
12
  name,
12
13
  tabs,
13
14
  selected,
@@ -17,9 +18,14 @@
17
18
  nohistory = false,
18
19
  }: VerticalTabGroupProps<CommonDenominator> = $props();
19
20
 
21
+ const isNonEmptyString = (raw: unknown): raw is string =>
22
+ typeof raw === 'string' && raw.length > 0;
23
+
24
+ const storageKey = (key: string): string => `scoria-vertical-tab-group:${key}:active-tab`;
25
+
20
26
  onMount(() => {
21
27
  if (name && !nohistory) {
22
- const tabName = sessionStorage.getItem(`${name}-active-tab`);
28
+ const tabName = readJSON(sessionStorage, storageKey(name), isNonEmptyString, '');
23
29
  if (tabName) {
24
30
  tabs.find((it) => it.label === tabName)?.onclick();
25
31
  }
@@ -29,7 +35,11 @@
29
35
  $effect(() => {
30
36
  if (name && selected) {
31
37
  untrack(() => {
32
- sessionStorage.setItem(`${name}-active-tab`, selected.label);
38
+ try {
39
+ sessionStorage.setItem(storageKey(name), JSON.stringify(selected.label));
40
+ } catch {
41
+ // storage unavailable (private browsing, quota); persistence is best-effort
42
+ }
33
43
  });
34
44
  }
35
45
  });
@@ -41,7 +51,7 @@
41
51
  {style}
42
52
  >
43
53
  <div class="tabs">
44
- {#each tabs as option (option)}
54
+ {#each tabs as option (option.label)}
45
55
  <VerticalTabGroupButton
46
56
  {option}
47
57
  selected={selected?.label === option.label}
@@ -85,47 +95,15 @@
85
95
  overflow-x: auto;
86
96
  max-width: 100%;
87
97
  gap: 0.5rem;
88
- padding-top: 0.25rem;
89
- padding-left: 1rem;
90
- padding-right: 1rem;
91
- flex-basis: 52px;
98
+ padding-top: 0.375rem;
99
+ padding-left: 1.0005rem;
100
+ padding-right: 1.0005rem;
101
+ flex-basis: 3.25rem;
92
102
  flex-shrink: 0;
93
103
  background-color: #ffffff;
94
104
  border-bottom: solid 1px #cbd4da;
95
105
  border-top: solid 2px transparent;
96
106
  }
97
- .wrapper .tabs .tab {
98
- color: #3a4952;
99
- cursor: pointer;
100
- font-size: 0.875rem;
101
- padding: 0;
102
- background-color: transparent;
103
- border: none;
104
- }
105
- .wrapper .tabs .tab .bordered {
106
- border-radius: 4px;
107
- padding: 0.25rem 0.75rem;
108
- margin-bottom: 0.25rem;
109
- 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;
110
- white-space: nowrap;
111
- display: flex;
112
- flex-flow: row nowrap;
113
- align-items: center;
114
- gap: 0.5rem;
115
- }
116
- .wrapper .tabs .tab .bordered.invalid {
117
- color: #aa1414;
118
- background-color: #f9e9e9;
119
- }
120
- .wrapper .tabs .tab.selected {
121
- border-bottom-color: #259fc7;
122
- }
123
- .wrapper .tabs .tab.selected.invalid {
124
- border-bottom-color: #aa1414;
125
- }
126
- .wrapper .tabs .tab:hover .bordered, .wrapper .tabs .tab.selected:hover .bordered {
127
- background-color: #f4f7f9;
128
- }
129
107
  .wrapper .content {
130
108
  background-color: #f4f7f9;
131
109
  flex-grow: 1;