@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,635 +1,689 @@
1
- <svelte:options runes />
2
-
3
- <script
4
- lang="ts"
5
- generics="T extends object, FilterValueType"
6
- >
7
- import { dev } from '$app/environment';
8
- import Action from '../../Action.svelte';
9
- import Button from '../../Button.svelte';
10
- import MultiSelect from '../../MultiSelect.svelte';
11
- import NumberInput from '../../NumberInput.svelte';
12
- import SingleSelect from '../../SingleSelect.svelte';
13
- import TextInput from '../../TextInput.svelte';
14
- import ThreeStateRadio from '../../ThreeStateRadio.svelte';
15
- import DateModal from '../../Touch/DateModal.svelte';
16
- import { devCatch, hasQuery, isDateTuple, isNumericArray } from '../../../Helpers/Helpers.svelte.js';
17
- import { Colour, ColourSet } from '../../../scss/colours.js';
18
- import { InputVariant } from '../../../Types/Internal/InputVariant.js';
19
- import type { SelectOption } from '../../../Types/Internal/SelectOption.js';
20
- import { Size } from '../../../Types/Internal/Size.js';
21
- import { getContext, onMount, untrack } from 'svelte';
22
- import { cubicOut } from 'svelte/easing';
23
- import { fade } from 'svelte/transition';
24
-
25
- import QuerySelect from '../../QuerySelect.svelte';
26
- import { Ternary } from '../../../Types/Internal/Ternary.js';
27
- import { numberDateFilterTypes } from '../Misc/numberDateFilterTypes.js';
28
- import { stringFilterTypes } from '../Misc/stringFilterTypes.js';
29
- import { quickFilterContextIdentifier } from '../Table.svelte';
30
- import { CheckboxDef } from '../Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js';
31
- import { DateInputDef } from '../Types/Columns/Definitions/Accessors/DateInputDef.svelte.js';
32
- import { NumberInputDef } from '../Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js';
33
- import { SelectDef } from '../Types/Columns/Definitions/Accessors/SelectDef.svelte.js';
34
- import { TableContext } from '../Types/Context/TableContext.svelte.js';
35
- import { CustomFilterType } from '../Types/Filtering/CustomFilterType.js';
36
- import { NumberDateFilterMode } from '../Types/Filtering/NumberDateFilterMode.js';
37
- import { StringFilterMode } from '../Types/Filtering/StringFilterMode.js';
38
- import type { QuickSearchCellProps } from './QuickSearchCellProps.js';
39
-
40
- const tableContext = getContext<TableContext<T, never>>(TableContext.identifier);
41
-
42
- const { column, customFilters }: QuickSearchCellProps<T, FilterValueType> = $props();
43
-
44
- const def = $derived(column.columnDef);
45
-
46
- const customFilter = $derived(customFilters?.get(def.id));
47
-
48
- const isSelect = $derived(
49
- def instanceof SelectDef ||
50
- def.filterValueType == CustomFilterType.Select ||
51
- customFilter?.type === CustomFilterType.Select
52
- );
53
-
54
- const hasFilterFn = $derived(!!def.filterFn && typeof def.filterFn === 'function');
55
-
56
- // const hasAcceptableColumnType = $derived(
57
- // (def instanceof AccessorDef && searchableTypes.has(def.accessorType)) ||
58
- // (def instanceof AbstractDisplayDef && searchableTypes.has(def.displayType))
59
- // );
60
-
61
- const isSearchable = $derived(
62
- def.allowFiltering && (hasFilterFn || customFilters?.has(def.id) == true)
63
- // ((hasFilterFn && hasAcceptableColumnType) || customFilters?.has(def.id) == true) // removed hasAcceptableColumnType due to it being redundant
64
- );
65
-
66
- const isNumeric = $derived(
67
- def instanceof NumberInputDef ||
68
- def.filterValueType == 'Number' ||
69
- customFilter?.type === CustomFilterType.Number
70
- );
71
-
72
- function emptyOptsAndWarn(): Array<SelectOption<unknown>> {
73
- console.warn(`def ${def.id} is declared as a select filter but has no getOptions() function`);
74
- return [];
75
- }
76
- const options = $derived(
77
- isSelect ? (def.getOptions?.() ?? customFilter?.options ?? emptyOptsAndWarn()) : []
78
- );
79
- const isDate = $derived(def instanceof DateInputDef);
80
- const isRemoteSelect = $derived(customFilter?.type === CustomFilterType.Select);
81
-
82
- const selectSymbol = Symbol();
83
-
84
- const openedSelect = getContext<{ value: symbol | null } | null | undefined>(
85
- quickFilterContextIdentifier
86
- );
87
-
88
- const isSelectOpen = $derived(openedSelect?.value === selectSymbol);
89
-
90
- // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
91
- let asdfvalue: unknown | null = $state(null);
92
- let valueMin: number | null = $state(null);
93
- let valueMax: number | null = $state(null);
94
-
95
- let selectedOptions: Array<SelectOption<unknown>> = $state([]);
96
- let lastQueryOptions: Array<SelectOption<unknown>> = $state([]);
97
-
98
- const inputId = $derived(`${tableContext.tableName}-cell-quicksearch-${column.id}`);
99
-
100
- const filterMode = $derived(tableContext.paginationRepo?.filterModes.get(def.id));
101
-
102
- const selectedNumberFilterType: SelectOption<NumberDateFilterMode> | null = $derived.by(() => {
103
- const value = (filterMode as NumberDateFilterMode | undefined) ?? NumberDateFilterMode.In;
104
- return numberDateFilterTypes.find((it) => it.value === value) ?? null;
105
- });
106
-
107
- const selectedStringFilterType: SelectOption<StringFilterMode> | null = $derived.by(() => {
108
- const value = (filterMode as StringFilterMode | undefined) ?? StringFilterMode.Contains;
109
- return stringFilterTypes.find((it) => it.value === value) ?? null;
110
- });
111
-
112
- const filteringStateValue = $derived(
113
- tableContext.paginationRepo?.filtering.find((it) => it.id === def.id)?.value
114
- );
115
-
116
- $effect(() => {
117
- if (isRemoteSelect && !tableContext.paginationRepo?.filtering) {
118
- return;
119
- }
120
- void filteringStateValue;
121
-
122
- if (hasQuery(customFilter)) {
123
- if (def.debug) {
124
- console.debug(`${def.id}: `, 'has query');
125
- }
126
-
127
- untrack(async () => {
128
- const gotValue = filteringStateValue as Array<unknown> | undefined;
129
-
130
- try {
131
- // as unknown as string | number | undefined;
132
-
133
- if (gotValue != undefined) {
134
- if (def.debug) {
135
- console.debug(`${def.id}: query values:`, tableContext.dataRepo.__queryValues);
136
- }
137
- const key = customFilter.id;
138
- const x = await tableContext.dataRepo.__queryValues.get(key);
139
-
140
- if (def.debug) {
141
- console.debug(`${def.id}: `, 'value:', $state.snapshot(x));
142
- }
143
- asdfvalue = (await x) ?? null;
144
- } else if (def.debug) {
145
- console.debug(
146
- `${def.id}: `,
147
- 'filtering state value was undefined',
148
- $state.snapshot(tableContext.paginationRepo?.filtering)
149
- );
150
- }
151
- } catch (e) {
152
- console.warn(e);
153
- asdfvalue = null;
154
- }
155
- }).catch(devCatch);
156
- } else if (isSelect) {
157
- if (def.debug) {
158
- console.debug(`${def.id}: `, 'is select (not query)');
159
- }
160
-
161
- if (!tableContext.paginationRepo?.filtering) {
162
- return;
163
- }
164
-
165
- const gotValue = filteringStateValue as Array<unknown> | undefined;
166
-
167
- function isSelectOption(it: unknown): it is SelectOption<unknown> {
168
- return it != null && typeof it == 'object';
169
- }
170
- untrack(async () => {
171
- try {
172
- const opts = await options;
173
- if (def.debug) {
174
- console.debug(`${def.id}: possible options:`, $state.snapshot(opts));
175
- }
176
- const x = opts.filter((it) => {
177
- if (!isSelectOption(it)) {
178
- return false;
179
- }
180
- if (it.value == undefined) {
181
- return true;
182
- }
183
-
184
- if (typeof it.value == 'string' || typeof it.value == 'number') {
185
- return (gotValue as unknown as Array<string | number> | undefined)?.includes(
186
- it.value
187
- );
188
- }
189
-
190
- return false;
191
- });
192
-
193
- if (def.debug) {
194
- console.debug(`${def.id}: `, 'selected options:', x);
195
- }
196
- selectedOptions = x;
197
- } catch (e) {
198
- if (dev || def.debug) {
199
- console.debug(`${def.id}: `, e);
200
- }
201
- }
202
- }).catch(devCatch);
203
- } else if (isNumeric) {
204
- if (
205
- selectedNumberFilterType?.value === NumberDateFilterMode.Between &&
206
- tableContext.paginationRepo?.filtering
207
- ) {
208
- const gotValue = filteringStateValue;
209
- if (gotValue != undefined) {
210
- const [min, max] = gotValue as [number, number | undefined];
211
- asdfvalue = min;
212
- valueMin = min;
213
- valueMax = max ?? null;
214
- } else {
215
- asdfvalue = valueMin = valueMax = null;
216
- }
217
- } else if (tableContext.paginationRepo?.filtering) {
218
- const gotValue = filteringStateValue;
219
-
220
- if (gotValue != undefined) {
221
- const [min] = gotValue as [number, number | undefined];
222
- asdfvalue = min;
223
- valueMin = min;
224
- valueMax = min;
225
- } else {
226
- asdfvalue = valueMin = valueMax = null;
227
- }
228
- }
229
- } else if (tableContext.paginationRepo?.filtering) {
230
- const gotValue = filteringStateValue;
231
- if (gotValue == null || typeof gotValue == 'string' || typeof gotValue == 'number') {
232
- //RATS
233
- rats(gotValue);
234
- asdfvalue = gotValue;
235
- }
236
- }
237
- });
238
-
239
- function rats(gotValue: unknown) {
240
- // RATS
241
- if (dev && gotValue != null && typeof gotValue == 'object' && gotValue instanceof Promise) {
242
- throw new Error(`Unexpected Promise`);
243
- }
244
- }
245
- onMount(() => {
246
- const filterOption =
247
- tableContext.paginationRepo?.filtering &&
248
- tableContext.paginationRepo.filtering.find((it) => it.id === def.id);
249
-
250
- if (filterOption) {
251
- if (isNumericArray(filterOption.value)) {
252
- [valueMin, valueMax] = filterOption.value;
253
- if (valueMax == undefined) {
254
- valueMax = valueMin;
255
- asdfvalue = valueMin?.toString();
256
- } else if (valueMin == undefined) {
257
- valueMin = valueMax;
258
- asdfvalue = valueMax.toString();
259
- } else {
260
- asdfvalue = valueMin.toString();
261
- }
262
- } else if (!hasQuery(customFilter)) {
263
- const gotValue = filterOption.value;
264
- if (gotValue == null || typeof gotValue == 'string' || typeof gotValue == 'number') {
265
- //RATS
266
- rats(gotValue);
267
- asdfvalue = gotValue;
268
- }
269
- }
270
- }
271
- });
272
-
273
- function closeOnCtrlF(e: KeyboardEvent) {
274
- if (e.key.toLocaleUpperCase() === 'F' && e.ctrlKey) {
275
- return;
276
- }
277
- e.stopPropagation();
278
- }
279
-
280
- let showFromDateModal = $state(false);
281
- let showToDateModal = $state(false);
282
-
283
- function generateOnChangeObject(label: string) {
284
- return (newValue: SelectOption<unknown> | null) => {
285
- tableContext.paginationRepo?.filterBy(def.id, newValue?.value ?? null);
286
- tableContext.dataRepo.__queryValues.set(label, newValue);
287
- rats(newValue);
288
- asdfvalue = newValue;
289
- };
290
- }
291
-
292
- function generateOnChangePrimitive(label: string) {
293
- return (newValue: SelectOption<unknown> | null) => {
294
- tableContext.paginationRepo?.filterBy(def.id, newValue?.value ?? null);
295
- tableContext.dataRepo.__queryValues.set(label, newValue?.value ?? null);
296
- rats(newValue);
297
- asdfvalue = newValue?.value ?? null;
298
- };
299
- }
300
-
301
- let isNullFilter = $derived(selectedNumberFilterType?.value == NumberDateFilterMode.null);
302
- </script>
303
-
304
- <td class="input-cell {inputId}">
305
- {#if isSearchable}
306
- <div class="input-wrapper-parent">
307
- {#if isDate}
308
- {@const dateValues = tableContext.paginationRepo?.filtering.find((it) => it.id === def.id)
309
- ?.value ?? [null, null]}
310
- {#if isDateTuple(dateValues)}
311
- {@const [fromDate, toDate] = dateValues}
312
- <div class="spaced-around">
313
- <Button
314
- size={Size.FillHeight}
315
- fullWidth
316
- onclick={() => {
317
- showFromDateModal = true;
318
- }}>From {fromDate?.toLocaleDateString() ?? 'Any Date'}</Button
319
- >
320
-
321
- <Button
322
- size={Size.FillHeight}
323
- fullWidth
324
- onclick={() => {
325
- showToDateModal = true;
326
- }}>To {toDate?.toLocaleDateString() ?? 'Any Date'}</Button
327
- >
328
- </div>
329
-
330
- {#if showFromDateModal}
331
- <DateModal
332
- header="Edit Date From"
333
- value={fromDate}
334
- cancelEditing={() => {
335
- showFromDateModal = false;
336
- }}
337
- confirm={(e) => {
338
- tableContext.paginationRepo?.filterBy(def.id, [e, toDate]);
339
- showFromDateModal = false;
340
- }}
341
- />
342
- {/if}
343
-
344
- {#if showToDateModal}
345
- <DateModal
346
- inclusive
347
- header="Edit Date To"
348
- value={toDate}
349
- cancelEditing={() => {
350
- showToDateModal = false;
351
- }}
352
- confirm={(e) => {
353
- tableContext.paginationRepo?.filterBy(def.id, [fromDate, e]);
354
- showToDateModal = false;
355
- }}
356
- />
357
- {/if}
358
- {/if}
359
- {:else if isSelect}
360
- {#if hasQuery(customFilter)}
361
- {#if customFilter.valueAsObject !== true}
362
- {@const label = customFilter.id}
363
-
364
- <!-- TODO: multiselect -->
365
-
366
- <!-- FIXME: Most likely Unsafe -->
367
- <QuerySelect
368
- valueAsObject={false}
369
- clearable
370
- name={customFilter.objectName ?? 'Item'}
371
- valueProp="value"
372
- labelProp="label"
373
- value={asdfvalue as null}
374
- query={customFilter.query}
375
- bind:options={lastQueryOptions}
376
- onchange={generateOnChangePrimitive(label)}
377
- />
378
- {:else}
379
- {@const label = customFilter.id}
380
-
381
- <!-- TODO: multiselect -->
382
-
383
- <QuerySelect
384
- valueAsObject={true}
385
- clearable
386
- name={customFilter.objectName ?? 'Item'}
387
- valueProp="value"
388
- labelProp="label"
389
- value={asdfvalue as null}
390
- query={customFilter.query}
391
- bind:options={lastQueryOptions}
392
- onchange={generateOnChangeObject(label)}
393
- />
394
- {/if}
395
- {:else}
396
- {#await options then options}
397
- <MultiSelect
398
- labelProp="label"
399
- valueProp="value"
400
- {options}
401
- valueAsObject
402
- onchange={(e: Array<SelectOption<unknown>>) => {
403
- tableContext.paginationRepo?.filterBy(
404
- def.id,
405
- e.map((it) => it.value)
406
- );
407
- }}
408
- selectedValues={selectedOptions}
409
- collapseSelection
410
- />
411
- {/await}
412
- {/if}
413
- {:else if def instanceof CheckboxDef}
414
- {@const value = (() => {
415
- switch (tableContext.paginationRepo?.filtering.find((it) => it.id === def.id)?.value) {
416
- case true: {
417
- return Ternary.True;
418
- }
419
- case false: {
420
- return Ternary.False;
421
- }
422
- default: {
423
- return Ternary.Neutral;
424
- }
425
- }
426
- })()}
427
- <div class="centered">
428
- <ThreeStateRadio
429
- {value}
430
- yesLabel="Selected"
431
- noLabel="Not Selected"
432
- neutralLabel="Any"
433
- neutralIcon={{ name: 'circle-minus' }}
434
- onchange={(v) => {
435
- switch (v) {
436
- case Ternary.False: {
437
- tableContext.paginationRepo?.filterBy(def.id, false);
438
- return;
439
- }
440
- case Ternary.True: {
441
- tableContext.paginationRepo?.filterBy(def.id, true);
442
- return;
443
- }
444
- case Ternary.Neutral:
445
- default: {
446
- tableContext.paginationRepo?.filterBy(def.id, null);
447
- return;
448
- }
449
- }
450
- }}
451
- />
452
- </div>
453
- {:else if isNumeric}
454
- {#if selectedNumberFilterType?.value === NumberDateFilterMode.Between}
455
- <div class="input-wrapper left">
456
- <NumberInput
457
- data-type="quicksearch"
458
- id={inputId}
459
- bind:value={valueMin}
460
- variant={InputVariant.Table}
461
- placeholder="Min&hellip;"
462
- oninput={() => {
463
- tableContext.paginationRepo?.filterBy(def.id, [valueMin, valueMax]);
464
- }}
465
- onkeydown={closeOnCtrlF}
466
- />
467
- </div>
468
- <div class="input-wrapper right">
469
- <NumberInput
470
- data-type="quicksearch"
471
- id={inputId}
472
- bind:value={valueMax}
473
- placeholder="Max&hellip;"
474
- variant={InputVariant.Table}
475
- oninput={() => {
476
- tableContext.paginationRepo?.filterBy(def.id, [valueMin, valueMax]);
477
- }}
478
- onkeydown={closeOnCtrlF}
479
- />
480
- </div>
481
- {:else}
482
- <div class="input-wrapper right">
483
- {#await isNullFilter}
484
- loading
485
- {:then isNullFilter}
486
- {#if isNullFilter}
487
- <TextInput
488
- data-type="quicksearch"
489
- id={inputId}
490
- value="is Null"
491
- disabled
492
- variant={InputVariant.Table}
493
- />
494
- {:else}
495
- <!-- NOTE: This is a text input in order to support the __in functionality, which is a comma separated list of numbers -->
496
- <TextInput
497
- data-type="quicksearch"
498
- id={inputId}
499
- bind:value={asdfvalue as string | null}
500
- placeholder="Filter&hellip;"
501
- variant={InputVariant.Table}
502
- oninput={() => {
503
- tableContext.paginationRepo?.filterBy(def.id, [asdfvalue || null]);
504
- }}
505
- onkeydown={closeOnCtrlF}
506
- />
507
- {/if}
508
- {:catch e}
509
- {@debug e}
510
- {/await}
511
- </div>
512
- {/if}
513
- {:else if asdfvalue == null || typeof asdfvalue == 'string'}
514
- <div class="input-wrapper right">
515
- {#if selectedStringFilterType?.value == StringFilterMode.null}
516
- <TextInput
517
- data-type="quicksearch"
518
- id={inputId}
519
- value="is Null"
520
- disabled
521
- variant={InputVariant.Table}
522
- />
523
- {:else if selectedStringFilterType?.value == StringFilterMode.Empty}
524
- <TextInput
525
- data-type="quicksearch"
526
- id={inputId}
527
- value="is Empty"
528
- disabled
529
- variant={InputVariant.Table}
530
- />
531
- {:else}
532
- <TextInput
533
- data-type="quicksearch"
534
- id={inputId}
535
- oninput={() => {
536
- tableContext.paginationRepo?.filterBy(def.id, asdfvalue);
537
- }}
538
- variant={InputVariant.Table}
539
- bind:value={asdfvalue as string | null}
540
- placeholder="Filter&hellip;"
541
- />
542
- {/if}
543
- </div>
544
- {/if}
545
-
546
- <!-- TODO button for date, checkbox or select for checkbox -->
547
- </div>
548
-
549
- {#if !isSelect && !isDate && !(def instanceof CheckboxDef)}
550
- <div class="stick-right">
551
- <Action
552
- data-type="quicksearch"
553
- size={Size.FillHeight}
554
- colourSet={ColourSet.Auxiliary}
555
- icon={{
556
- name: 'filter-2',
557
- size: Size.MediumLarge,
558
- colour: Colour['$ui-blue-5'],
559
- }}
560
- onclick={() => {
561
- if (!openedSelect) {
562
- return;
563
- }
564
- if (openedSelect.value === selectSymbol) {
565
- openedSelect.value = null;
566
- } else {
567
- openedSelect.value = selectSymbol;
568
- }
569
- }}
570
- />
571
- </div>
572
- {/if}
573
- {/if}
574
-
575
- {#if isSelectOpen}
576
- <div
577
- class="floating"
578
- transition:fade={{ easing: cubicOut, duration: 100 }}
579
- >
580
- <div class="select-wrapper">
581
- {#if isNumeric}
582
- <SingleSelect
583
- options={numberDateFilterTypes}
584
- labelProp="label"
585
- valueProp="value"
586
- name="Filter Type"
587
- valueAsObject
588
- value={selectedNumberFilterType}
589
- onchange={(newValue: SelectOption<NumberDateFilterMode> | null) => {
590
- const oldFilterType = selectedNumberFilterType;
591
-
592
- const newFilterType = newValue?.value ?? NumberDateFilterMode.In;
593
-
594
- if (newFilterType !== oldFilterType?.value) {
595
- tableContext.paginationRepo?.setFilterMode(def.id, newFilterType);
596
-
597
- if (newFilterType === NumberDateFilterMode.Between) {
598
- tableContext.paginationRepo?.filterBy(def.id, [valueMin, valueMin]);
599
- } else if (newFilterType === NumberDateFilterMode.In) {
600
- tableContext.paginationRepo?.filterBy(def.id, [asdfvalue]);
601
- } else {
602
- tableContext.paginationRepo?.filterBy(def.id, [valueMin, valueMax]);
603
- }
604
- }
605
- }}
606
- onkeydown={(e: KeyboardEvent) => {
607
- e.stopPropagation();
608
- }}
609
- />
610
- {:else}
611
- <SingleSelect
612
- options={stringFilterTypes}
613
- labelProp="label"
614
- valueProp="value"
615
- name="Filter Type"
616
- valueAsObject
617
- value={selectedStringFilterType}
618
- onchange={(newValue: SelectOption<StringFilterMode> | null) => {
619
- const filterType = newValue?.value ?? StringFilterMode.Contains;
620
- tableContext.paginationRepo?.setFilterMode(def.id, filterType);
621
- }}
622
- onkeydown={(e: KeyboardEvent) => {
623
- e.stopPropagation();
624
- }}
625
- />
626
- {/if}
627
- </div>
628
- </div>
629
- {/if}
630
- </td>
631
-
632
- <style>td {
1
+ <svelte:options runes />
2
+
3
+ <script
4
+ lang="ts"
5
+ generics="T extends object, IdType extends Primitive, FilterValueType"
6
+ >
7
+ import { dev } from '$app/environment';
8
+ import Action from '../../Action.svelte';
9
+ import Button from '../../Button.svelte';
10
+ import MultiSelect from '../../MultiSelect.svelte';
11
+ import NumberInput from '../../NumberInput.svelte';
12
+ import SingleSelect from '../../SingleSelect.svelte';
13
+ import TextInput from '../../TextInput.svelte';
14
+ import ThreeStateRadio from '../../ThreeStateRadio.svelte';
15
+ import DateModal from '../../Touch/DateModal.svelte';
16
+ import { hasQuery } from '../TableHelpers.svelte.js';
17
+ import { devCatch, isDateTuple, isNumericArray } from '../../../Helpers/Helpers.svelte.js';
18
+ import { Colour, ColourSet } from '../../../scss/colours.js';
19
+ import { InputVariant } from '../../../Types/Internal/InputVariant.js';
20
+ import type { SelectOption } from '../../../Types/Internal/SelectOption.js';
21
+ import { Size } from '../../../Types/Internal/Size.js';
22
+ import { getContext, onDestroy, onMount, untrack } from 'svelte';
23
+ import { cubicOut } from 'svelte/easing';
24
+ import { fade } from 'svelte/transition';
25
+
26
+ import QuerySelect from '../../QuerySelect.svelte';
27
+ import { Ternary } from '../../../Types/Internal/Ternary.js';
28
+ import { numberDateFilterTypes } from '../Misc/numberDateFilterTypes.js';
29
+ import { stringFilterTypes } from '../Misc/stringFilterTypes.js';
30
+ import { quickFilterContextIdentifier } from '../Table.svelte';
31
+ import { CheckboxDef } from '../Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js';
32
+ import { DateInputDef } from '../Types/Columns/Definitions/Accessors/DateInputDef.svelte.js';
33
+ import { NumberInputDef } from '../Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js';
34
+ import { SelectDef } from '../Types/Columns/Definitions/Accessors/SelectDef.svelte.js';
35
+ import { TableContext } from '../Types/Context/TableContext.svelte.js';
36
+ import type { Primitive } from '../Types/Context/TableInitOptions.js';
37
+ import { CustomFilterType } from '../Types/Filtering/CustomFilterType.js';
38
+ import { NumberDateFilterMode } from '../Types/Filtering/NumberDateFilterMode.js';
39
+ import { StringFilterMode } from '../Types/Filtering/StringFilterMode.js';
40
+ import type { QuickSearchCellProps } from './QuickSearchCellProps.js';
41
+
42
+ const tableContext = getContext<TableContext<T, IdType>>(TableContext.identifier);
43
+
44
+ const { column, customFilters }: QuickSearchCellProps<T, FilterValueType> = $props();
45
+
46
+ const def = $derived(column.columnDef);
47
+
48
+ const customFilter = $derived(customFilters?.get(def.id));
49
+
50
+ const isSelect = $derived(
51
+ def instanceof SelectDef ||
52
+ def.filterValueType == CustomFilterType.Select ||
53
+ customFilter?.type === CustomFilterType.Select
54
+ );
55
+
56
+ const hasFilterFn = $derived(!!def.filterFn && typeof def.filterFn === 'function');
57
+
58
+ // const hasAcceptableColumnType = $derived(
59
+ // (def instanceof AccessorDef && searchableTypes.has(def.accessorType)) ||
60
+ // (def instanceof AbstractDisplayDef && searchableTypes.has(def.displayType))
61
+ // );
62
+
63
+ const isSearchable = $derived(
64
+ def.allowFiltering && (hasFilterFn || customFilters?.has(def.id) == true)
65
+ // ((hasFilterFn && hasAcceptableColumnType) || customFilters?.has(def.id) == true) // removed hasAcceptableColumnType due to it being redundant
66
+ );
67
+
68
+ const isNumeric = $derived(
69
+ def instanceof NumberInputDef ||
70
+ def.filterValueType == 'Number' ||
71
+ customFilter?.type === CustomFilterType.Number
72
+ );
73
+
74
+ function emptyOptsAndWarn(): Array<SelectOption<unknown>> {
75
+ console.warn(`def ${def.id} is declared as a select filter but has no getOptions() function`);
76
+ return [];
77
+ }
78
+ const options = $derived(
79
+ isSelect ? (def.getOptions?.() ?? customFilter?.options ?? emptyOptsAndWarn()) : []
80
+ );
81
+ const isDate = $derived(def instanceof DateInputDef);
82
+ const isRemoteSelect = $derived(customFilter?.type === CustomFilterType.Select);
83
+
84
+ const selectSymbol = Symbol();
85
+
86
+ const openedSelect = getContext<{ value: symbol | null } | null | undefined>(
87
+ quickFilterContextIdentifier
88
+ );
89
+
90
+ const isSelectOpen = $derived(openedSelect?.value === selectSymbol);
91
+
92
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
93
+ let value: unknown | null = $state(null);
94
+ let valueMin: number | null = $state(null);
95
+ let valueMax: number | null = $state(null);
96
+
97
+ let selectedOptions: Array<SelectOption<unknown>> = $state([]);
98
+ let lastQueryOptions: Array<SelectOption<unknown>> = $state([]);
99
+
100
+ const inputId = $derived(`${tableContext.tableName}-cell-quicksearch-${column.id}`);
101
+
102
+ const filterMode = $derived(tableContext.paginationRepo?.filterModes.get(def.id));
103
+
104
+ const selectedNumberFilterType: SelectOption<NumberDateFilterMode> | null = $derived.by(() => {
105
+ const value = (filterMode as NumberDateFilterMode | undefined) ?? NumberDateFilterMode.In;
106
+ return numberDateFilterTypes.find((it) => it.value === value) ?? null;
107
+ });
108
+
109
+ const selectedStringFilterType: SelectOption<StringFilterMode> | null = $derived.by(() => {
110
+ const value = (filterMode as StringFilterMode | undefined) ?? StringFilterMode.Contains;
111
+ return stringFilterTypes.find((it) => it.value === value) ?? null;
112
+ });
113
+
114
+ const filteringStateValue = $derived(
115
+ tableContext.paginationRepo?.filtering.find((it) => it.id === def.id)?.value
116
+ );
117
+
118
+ $effect(() => {
119
+ if (isRemoteSelect && !tableContext.paginationRepo?.filtering) {
120
+ return;
121
+ }
122
+ void filteringStateValue;
123
+
124
+ if (hasQuery(customFilter)) {
125
+ if (def.debug) {
126
+ console.debug(`${def.id}: `, 'has query');
127
+ }
128
+
129
+ untrack(async () => {
130
+ const gotValue = filteringStateValue as Array<unknown> | undefined;
131
+
132
+ try {
133
+ // as unknown as string | number | undefined;
134
+
135
+ if (gotValue != undefined) {
136
+ if (def.debug) {
137
+ console.debug(`${def.id}: query values:`, tableContext.dataRepo.__queryValues);
138
+ }
139
+ const key = customFilter.id;
140
+ const x = await tableContext.dataRepo.__queryValues.get(key);
141
+
142
+ if (def.debug) {
143
+ console.debug(`${def.id}: `, 'value:', $state.snapshot(x));
144
+ }
145
+ value = (await x) ?? null;
146
+ } else if (def.debug) {
147
+ console.debug(
148
+ `${def.id}: `,
149
+ 'filtering state value was undefined',
150
+ $state.snapshot(tableContext.paginationRepo?.filtering)
151
+ );
152
+ }
153
+ } catch (e) {
154
+ console.warn(e);
155
+ value = null;
156
+ }
157
+ }).catch(devCatch);
158
+ } else if (isSelect) {
159
+ if (def.debug) {
160
+ console.debug(`${def.id}: `, 'is select (not query)');
161
+ }
162
+
163
+ if (!tableContext.paginationRepo?.filtering) {
164
+ return;
165
+ }
166
+
167
+ const gotValue = filteringStateValue as Array<unknown> | undefined;
168
+
169
+ function isSelectOption(it: unknown): it is SelectOption<unknown> {
170
+ return it != null && typeof it == 'object';
171
+ }
172
+ untrack(async () => {
173
+ try {
174
+ const opts = await options;
175
+ if (def.debug) {
176
+ console.debug(`${def.id}: possible options:`, $state.snapshot(opts));
177
+ }
178
+ const x = opts.filter((it) => {
179
+ if (!isSelectOption(it)) {
180
+ return false;
181
+ }
182
+ if (it.value == undefined) {
183
+ return true;
184
+ }
185
+
186
+ if (typeof it.value == 'string' || typeof it.value == 'number') {
187
+ return (gotValue as unknown as Array<string | number> | undefined)?.includes(
188
+ it.value
189
+ );
190
+ }
191
+
192
+ return false;
193
+ });
194
+
195
+ if (def.debug) {
196
+ console.debug(`${def.id}: `, 'selected options:', x);
197
+ }
198
+ selectedOptions = x;
199
+ } catch (e) {
200
+ if (dev || def.debug) {
201
+ console.debug(`${def.id}: `, e);
202
+ }
203
+ }
204
+ }).catch(devCatch);
205
+ } else if (isNumeric) {
206
+ if (
207
+ selectedNumberFilterType?.value === NumberDateFilterMode.Between &&
208
+ tableContext.paginationRepo?.filtering
209
+ ) {
210
+ const gotValue = filteringStateValue;
211
+ if (gotValue != undefined) {
212
+ const [min, max] = gotValue as [number, number | undefined];
213
+ value = min;
214
+ valueMin = min;
215
+ valueMax = max ?? null;
216
+ } else {
217
+ value = valueMin = valueMax = null;
218
+ }
219
+ } else if (tableContext.paginationRepo?.filtering) {
220
+ const gotValue = filteringStateValue;
221
+
222
+ if (gotValue != undefined) {
223
+ const [min] = gotValue as [number, number | undefined];
224
+ value = min;
225
+ valueMin = min;
226
+ valueMax = min;
227
+ } else {
228
+ value = valueMin = valueMax = null;
229
+ }
230
+ }
231
+ } else if (tableContext.paginationRepo?.filtering) {
232
+ const gotValue = filteringStateValue;
233
+ if (gotValue == null || typeof gotValue == 'string' || typeof gotValue == 'number') {
234
+ assertNotPromise(gotValue);
235
+ value = gotValue;
236
+ }
237
+ }
238
+ });
239
+
240
+ /**
241
+ * Dev-only invariant: a Promise must never reach the synchronous primitive
242
+ * sink (we should always have awaited it upstream). Throws in dev to make
243
+ * any regression loud; no-ops in production builds.
244
+ */
245
+ function assertNotPromise(gotValue: unknown) {
246
+ if (dev && gotValue != null && typeof gotValue == 'object' && gotValue instanceof Promise) {
247
+ throw new Error(`Unexpected Promise`);
248
+ }
249
+ }
250
+ onMount(() => {
251
+ const filterOption =
252
+ tableContext.paginationRepo?.filtering &&
253
+ tableContext.paginationRepo.filtering.find((it) => it.id === def.id);
254
+
255
+ if (filterOption) {
256
+ if (isNumericArray(filterOption.value)) {
257
+ [valueMin, valueMax] = filterOption.value;
258
+ if (valueMax == undefined) {
259
+ valueMax = valueMin;
260
+ value = valueMin?.toString();
261
+ } else if (valueMin == undefined) {
262
+ valueMin = valueMax;
263
+ value = valueMax.toString();
264
+ } else {
265
+ value = valueMin.toString();
266
+ }
267
+ } else if (!hasQuery(customFilter)) {
268
+ const gotValue = filterOption.value;
269
+ if (gotValue == null || typeof gotValue == 'string' || typeof gotValue == 'number') {
270
+ assertNotPromise(gotValue);
271
+ value = gotValue;
272
+ }
273
+ }
274
+ }
275
+ });
276
+
277
+ function closeOnCtrlF(e: KeyboardEvent) {
278
+ if (e.key.toLocaleUpperCase() === 'F' && e.ctrlKey) {
279
+ return;
280
+ }
281
+ e.stopPropagation();
282
+ }
283
+
284
+ let showFromDateModal = $state(false);
285
+ let showToDateModal = $state(false);
286
+
287
+ function generateOnChangeObject(label: string) {
288
+ return (newValue: SelectOption<unknown> | null) => {
289
+ tableContext.paginationRepo?.filterBy(def.id, newValue?.value ?? null);
290
+ tableContext.dataRepo.__queryValues.set(label, newValue);
291
+ assertNotPromise(newValue);
292
+ value = newValue;
293
+ };
294
+ }
295
+
296
+ function generateOnChangePrimitive(label: string) {
297
+ // Phase 7.6: AsPrimitive QuerySelect now hands us the primitive
298
+ // directly (previously typed as `SelectOption` with a hidden
299
+ // `.value` dig). The discriminated typing makes the flow
300
+ // straightforward.
301
+ return (newValue: unknown) => {
302
+ tableContext.paginationRepo?.filterBy(def.id, newValue ?? null);
303
+ tableContext.dataRepo.__queryValues.set(label, newValue ?? null);
304
+ assertNotPromise(newValue);
305
+ value = newValue ?? null;
306
+ };
307
+ }
308
+
309
+ let isNullFilter = $derived(selectedNumberFilterType?.value == NumberDateFilterMode.null);
310
+
311
+ /**
312
+ * Debounce window for typed filter inputs. For a 10k-row table each
313
+ * keystroke would otherwise kick off a full filter pass; coalescing
314
+ * adjacent keystrokes within `FILTER_DEBOUNCE_MS` cuts the cost to
315
+ * roughly one filter pass per pause-in-typing.
316
+ */
317
+ const FILTER_DEBOUNCE_MS = 300;
318
+
319
+ /**
320
+ * Sequence counter used to discard the result of a stale debounce
321
+ * timer. When the user types again before the timer fires, the
322
+ * `pendingSeq` increments; only the timer whose captured `seq`
323
+ * matches `pendingSeq` is allowed to call `filterBy`.
324
+ */
325
+ let pendingSeq = 0;
326
+ let debounceTimer: ReturnType<typeof setTimeout> | undefined;
327
+
328
+ function debouncedFilterBy(value: unknown): void {
329
+ pendingSeq += 1;
330
+ const seq = pendingSeq;
331
+ if (debounceTimer !== undefined) {
332
+ clearTimeout(debounceTimer);
333
+ }
334
+ debounceTimer = setTimeout(() => {
335
+ debounceTimer = undefined;
336
+ if (seq !== pendingSeq) {
337
+ // A newer keystroke superseded this one before the timer
338
+ // fired; the newer timer will handle the filter call.
339
+ return;
340
+ }
341
+ tableContext.paginationRepo?.filterBy(def.id, value);
342
+ }, FILTER_DEBOUNCE_MS);
343
+ }
344
+
345
+ onDestroy(() => {
346
+ if (debounceTimer !== undefined) {
347
+ clearTimeout(debounceTimer);
348
+ debounceTimer = undefined;
349
+ }
350
+ });
351
+ </script>
352
+
353
+ <div class="input-cell {inputId}">
354
+ {#if isSearchable}
355
+ <div class="input-wrapper-parent">
356
+ {#if isDate}
357
+ {@const dateValues = tableContext.paginationRepo?.filtering.find((it) => it.id === def.id)
358
+ ?.value ?? [null, null]}
359
+ {#if isDateTuple(dateValues)}
360
+ {@const [fromDate, toDate] = dateValues}
361
+ <div class="spaced-around">
362
+ <Button
363
+ size={Size.FillHeight}
364
+ fullWidth
365
+ onclick={() => {
366
+ showFromDateModal = true;
367
+ }}>From {fromDate?.toLocaleDateString() ?? 'Any Date'}</Button
368
+ >
369
+
370
+ <Button
371
+ size={Size.FillHeight}
372
+ fullWidth
373
+ onclick={() => {
374
+ showToDateModal = true;
375
+ }}>To {toDate?.toLocaleDateString() ?? 'Any Date'}</Button
376
+ >
377
+ </div>
378
+
379
+ {#if showFromDateModal}
380
+ <DateModal
381
+ header="Edit Date From"
382
+ value={fromDate}
383
+ cancelEditing={() => {
384
+ showFromDateModal = false;
385
+ }}
386
+ confirm={(e) => {
387
+ tableContext.paginationRepo?.filterBy(def.id, [e, toDate]);
388
+ showFromDateModal = false;
389
+ }}
390
+ />
391
+ {/if}
392
+
393
+ {#if showToDateModal}
394
+ <DateModal
395
+ inclusive
396
+ header="Edit Date To"
397
+ value={toDate}
398
+ cancelEditing={() => {
399
+ showToDateModal = false;
400
+ }}
401
+ confirm={(e) => {
402
+ tableContext.paginationRepo?.filterBy(def.id, [fromDate, e]);
403
+ showToDateModal = false;
404
+ }}
405
+ />
406
+ {/if}
407
+ {/if}
408
+ {:else if isSelect}
409
+ {#if hasQuery(customFilter)}
410
+ {#if customFilter.valueAsObject !== true}
411
+ {@const label = customFilter.id}
412
+
413
+ <!-- TODO: multiselect -->
414
+
415
+ <!-- FIXME: Most likely Unsafe -->
416
+ <QuerySelect
417
+ valueAsObject={false}
418
+ clearable
419
+ name={customFilter.objectName ?? 'Item'}
420
+ valueProp="value"
421
+ labelProp="label"
422
+ value={value as null}
423
+ query={customFilter.query}
424
+ bind:options={lastQueryOptions}
425
+ onchange={generateOnChangePrimitive(label)}
426
+ />
427
+ {:else}
428
+ {@const label = customFilter.id}
429
+
430
+ <!-- TODO: multiselect -->
431
+
432
+ <QuerySelect
433
+ valueAsObject={true}
434
+ clearable
435
+ name={customFilter.objectName ?? 'Item'}
436
+ valueProp="value"
437
+ labelProp="label"
438
+ value={value as null}
439
+ query={customFilter.query}
440
+ bind:options={lastQueryOptions}
441
+ onchange={generateOnChangeObject(label)}
442
+ />
443
+ {/if}
444
+ {:else}
445
+ {#await options then options}
446
+ <MultiSelect
447
+ labelProp="label"
448
+ valueProp="value"
449
+ {options}
450
+ valueAsObject
451
+ onchange={(e: Array<SelectOption<unknown>>) => {
452
+ tableContext.paginationRepo?.filterBy(
453
+ def.id,
454
+ e.map((it) => it.value)
455
+ );
456
+ }}
457
+ selectedValues={selectedOptions}
458
+ collapseSelection
459
+ />
460
+ {/await}
461
+ {/if}
462
+ {:else if def instanceof CheckboxDef}
463
+ {@const value = (() => {
464
+ switch (tableContext.paginationRepo?.filtering.find((it) => it.id === def.id)?.value) {
465
+ case true: {
466
+ return Ternary.True;
467
+ }
468
+ case false: {
469
+ return Ternary.False;
470
+ }
471
+ default: {
472
+ return Ternary.Neutral;
473
+ }
474
+ }
475
+ })()}
476
+ <div class="centered">
477
+ <ThreeStateRadio
478
+ {value}
479
+ yesLabel="Selected"
480
+ noLabel="Not Selected"
481
+ neutralLabel="Any"
482
+ neutralIcon={{ name: 'circle-minus' }}
483
+ onchange={(v) => {
484
+ switch (v) {
485
+ case Ternary.False: {
486
+ tableContext.paginationRepo?.filterBy(def.id, false);
487
+ return;
488
+ }
489
+ case Ternary.True: {
490
+ tableContext.paginationRepo?.filterBy(def.id, true);
491
+ return;
492
+ }
493
+ case Ternary.Neutral:
494
+ default: {
495
+ tableContext.paginationRepo?.filterBy(def.id, null);
496
+ return;
497
+ }
498
+ }
499
+ }}
500
+ />
501
+ </div>
502
+ {:else if isNumeric}
503
+ {#if selectedNumberFilterType?.value === NumberDateFilterMode.Between}
504
+ <div class="input-wrapper left">
505
+ <NumberInput
506
+ data-type="quicksearch"
507
+ id={inputId}
508
+ bind:value={valueMin}
509
+ variant={InputVariant.Table}
510
+ placeholder="Min&hellip;"
511
+ oninput={() => {
512
+ debouncedFilterBy([valueMin, valueMax]);
513
+ }}
514
+ onkeydown={closeOnCtrlF}
515
+ />
516
+ </div>
517
+ <div class="input-wrapper right">
518
+ <NumberInput
519
+ data-type="quicksearch"
520
+ id={inputId}
521
+ bind:value={valueMax}
522
+ placeholder="Max&hellip;"
523
+ variant={InputVariant.Table}
524
+ oninput={() => {
525
+ debouncedFilterBy([valueMin, valueMax]);
526
+ }}
527
+ onkeydown={closeOnCtrlF}
528
+ />
529
+ </div>
530
+ {:else}
531
+ <div class="input-wrapper right">
532
+ {#await isNullFilter}
533
+ loading
534
+ {:then isNullFilter}
535
+ {#if isNullFilter}
536
+ <TextInput
537
+ data-type="quicksearch"
538
+ id={inputId}
539
+ value="is Null"
540
+ disabled
541
+ variant={InputVariant.Table}
542
+ />
543
+ {:else}
544
+ <!-- NOTE: This is a text input in order to support the __in functionality, which is a comma separated list of numbers -->
545
+ <TextInput
546
+ data-type="quicksearch"
547
+ id={inputId}
548
+ bind:value={value as string | null}
549
+ placeholder="Filter&hellip;"
550
+ variant={InputVariant.Table}
551
+ oninput={() => {
552
+ debouncedFilterBy([value || null]);
553
+ }}
554
+ onkeydown={closeOnCtrlF}
555
+ />
556
+ {/if}
557
+ {:catch e}
558
+ <!-- eslint-disable-next-line svelte/no-at-debug-tags -->
559
+ {@debug e}
560
+ {/await}
561
+ </div>
562
+ {/if}
563
+ {:else if value == null || typeof value == 'string'}
564
+ <div class="input-wrapper right">
565
+ {#if selectedStringFilterType?.value == StringFilterMode.null}
566
+ <TextInput
567
+ data-type="quicksearch"
568
+ id={inputId}
569
+ value="is Null"
570
+ disabled
571
+ variant={InputVariant.Table}
572
+ />
573
+ {:else if selectedStringFilterType?.value == StringFilterMode.Empty}
574
+ <TextInput
575
+ data-type="quicksearch"
576
+ id={inputId}
577
+ value="is Empty"
578
+ disabled
579
+ variant={InputVariant.Table}
580
+ />
581
+ {:else}
582
+ <TextInput
583
+ data-type="quicksearch"
584
+ id={inputId}
585
+ oninput={() => {
586
+ debouncedFilterBy(value);
587
+ }}
588
+ variant={InputVariant.Table}
589
+ bind:value={value as string | null}
590
+ placeholder="Filter&hellip;"
591
+ />
592
+ {/if}
593
+ </div>
594
+ {/if}
595
+
596
+ <!-- TODO button for date, checkbox or select for checkbox -->
597
+ </div>
598
+
599
+ {#if !isSelect && !isDate && !(def instanceof CheckboxDef)}
600
+ <div class="stick-right">
601
+ <Action
602
+ data-type="quicksearch"
603
+ size={Size.FillHeight}
604
+ colourSet={ColourSet.Auxiliary}
605
+ icon={{
606
+ name: 'filter-2',
607
+ size: Size.MediumLarge,
608
+ colour: Colour['$ui-blue-5'],
609
+ }}
610
+ onclick={() => {
611
+ if (!openedSelect) {
612
+ return;
613
+ }
614
+ if (openedSelect.value === selectSymbol) {
615
+ openedSelect.value = null;
616
+ } else {
617
+ openedSelect.value = selectSymbol;
618
+ }
619
+ }}
620
+ />
621
+ </div>
622
+ {/if}
623
+ {/if}
624
+
625
+ {#if isSelectOpen}
626
+ <div
627
+ class="floating"
628
+ transition:fade={{ easing: cubicOut, duration: 100 }}
629
+ >
630
+ <div class="select-wrapper">
631
+ {#if isNumeric}
632
+ <SingleSelect
633
+ options={numberDateFilterTypes}
634
+ labelProp="label"
635
+ valueProp="value"
636
+ name="Filter Type"
637
+ valueAsObject
638
+ value={selectedNumberFilterType}
639
+ onchange={(newValue: SelectOption<NumberDateFilterMode> | null) => {
640
+ const oldFilterType = selectedNumberFilterType;
641
+
642
+ const newFilterType = newValue?.value ?? NumberDateFilterMode.In;
643
+
644
+ if (newFilterType !== oldFilterType?.value) {
645
+ tableContext.paginationRepo?.setFilterMode(def.id, newFilterType);
646
+
647
+ if (newFilterType === NumberDateFilterMode.Between) {
648
+ tableContext.paginationRepo?.filterBy(def.id, [valueMin, valueMin]);
649
+ } else if (newFilterType === NumberDateFilterMode.In) {
650
+ tableContext.paginationRepo?.filterBy(def.id, [value]);
651
+ } else {
652
+ tableContext.paginationRepo?.filterBy(def.id, [valueMin, valueMax]);
653
+ }
654
+ }
655
+ }}
656
+ onkeydown={(e: KeyboardEvent) => {
657
+ e.stopPropagation();
658
+ }}
659
+ />
660
+ {:else}
661
+ <SingleSelect
662
+ options={stringFilterTypes}
663
+ labelProp="label"
664
+ valueProp="value"
665
+ name="Filter Type"
666
+ valueAsObject
667
+ value={selectedStringFilterType}
668
+ onchange={(newValue: SelectOption<StringFilterMode> | null) => {
669
+ const filterType = newValue?.value ?? StringFilterMode.Contains;
670
+ tableContext.paginationRepo?.setFilterMode(def.id, filterType);
671
+ }}
672
+ onkeydown={(e: KeyboardEvent) => {
673
+ e.stopPropagation();
674
+ }}
675
+ />
676
+ {/if}
677
+ </div>
678
+ </div>
679
+ {/if}
680
+ </div>
681
+
682
+ <style>.focusable,
683
+ .checkbox-cell,
684
+ .input-cell,
685
+ .select-cell,
686
+ .datepicker-cell {
633
687
  transition: line-height 0.2s ease, height 0.2s ease;
634
688
  --input-border: none;
635
689
  --input-height: var(--height);
@@ -639,14 +693,16 @@
639
693
  position: relative;
640
694
  padding-left: 0.75rem;
641
695
  padding-right: 0.75rem;
642
- border: solid 1px #cbd4da;
643
- border-left: none;
696
+ border-right: solid 1px #cbd4da;
697
+ border-bottom: solid 1px #cbd4da;
698
+ box-sizing: border-box;
699
+ width: 100%;
700
+ height: var(--height);
644
701
  }
645
702
 
646
- td.input-cell {
703
+ .input-cell {
647
704
  padding: unset;
648
705
  box-sizing: border-box;
649
- vertical-align: middle;
650
706
  }
651
707
 
652
708
  .spaced-around {
@@ -660,14 +716,14 @@ td.input-cell {
660
716
  justify-content: space-around;
661
717
  }
662
718
 
663
- td {
719
+ div.input-cell {
664
720
  background-color: #f4f7f9;
665
721
  height: var(--height);
666
722
  overflow: visible;
667
723
  padding-left: 0;
668
724
  padding-right: 0;
669
725
  }
670
- td div.stick-right {
726
+ div.input-cell div.stick-right {
671
727
  position: absolute;
672
728
  right: 0.5rem;
673
729
  height: 100%;
@@ -736,10 +792,10 @@ div.input-wrapper-parent div.input-wrapper.right {
736
792
  --input-padding-right: 2.6rem;
737
793
  }
738
794
 
739
- td {
795
+ [role=cell] {
740
796
  --input-width: 100%;
741
797
  }
742
- td .input-wrapper-parent {
798
+ [role=cell] .input-wrapper-parent {
743
799
  width: 100%;
744
800
  }
745
801
 
@@ -753,4 +809,4 @@ td .input-wrapper-parent {
753
809
  height: 60px;
754
810
  --input-height: 60px;
755
811
  background-color: #ffffff;
756
- }</style>
812
+ }</style>