@lavalogic/scoria 0.36.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Components/AccordionGroup.svelte +6 -2
- package/dist/Components/AccordionGroupButton.svelte +78 -78
- package/dist/Components/AccordionGroupButtonProps.d.ts +27 -8
- package/dist/Components/AccordionGroupProps.d.ts +10 -2
- package/dist/Components/Action.svelte +31 -33
- package/dist/Components/ActionProps.d.ts +23 -3
- package/dist/Components/AlertModal.svelte +90 -39
- package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +1126 -0
- package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte.d.ts +4 -0
- package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.d.ts +92 -0
- package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.js +12 -0
- package/dist/Components/Base/BaseModal.svelte +172 -0
- package/dist/Components/Base/BaseModal.svelte.d.ts +4 -0
- package/dist/Components/Base/BaseModalProps.d.ts +73 -0
- package/dist/Components/Base/BaseModalProps.js +1 -0
- package/dist/Components/Base/ContextWrapper.svelte +37 -15
- package/dist/Components/Base/ContextWrapper.svelte.d.ts +24 -5
- package/dist/Components/Base/ContextWrapperProps.d.ts +22 -0
- package/dist/Components/Base/Pagination.svelte +70 -62
- package/dist/Components/Base/Pagination.svelte.d.ts +12 -2
- package/dist/Components/Base/PaginationProps.d.ts +60 -3
- package/dist/Components/Base/Snippets.svelte +7 -0
- package/dist/Components/Base/Snippets.svelte.d.ts +5 -1
- package/dist/Components/BigRadioSet.svelte +18 -9
- package/dist/Components/BigRadioSetProps.d.ts +17 -1
- package/dist/Components/Bubble.svelte +67 -34
- package/dist/Components/Bubble.svelte.d.ts +23 -2
- package/dist/Components/BubbleProps.d.ts +55 -4
- package/dist/Components/Button.svelte +50 -38
- package/dist/Components/ButtonProps.d.ts +66 -1
- package/dist/Components/Checkbox.svelte +57 -29
- package/dist/Components/Checkbox.svelte.d.ts +1 -12
- package/dist/Components/CheckboxProps.d.ts +27 -0
- package/dist/Components/CheckboxProps.js +1 -0
- package/dist/Components/CollapsibleCard.svelte +53 -22
- package/dist/Components/CollapsibleCardProps.d.ts +22 -1
- package/dist/Components/Contexts/ContextMenu.svelte +53 -32
- package/dist/Components/Contexts/ContextMenu.svelte.d.ts +26 -0
- package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -7
- package/dist/Components/Contexts/ContextMenuDivider.svelte.d.ts +9 -0
- package/dist/Components/Contexts/ContextMenuOption.svelte +27 -18
- package/dist/Components/Contexts/ContextMenuOption.svelte.d.ts +12 -1
- package/dist/Components/Contexts/ContextMenuOptionProps.d.ts +34 -2
- package/dist/Components/Contexts/Toast.svelte +28 -4
- package/dist/Components/Contexts/Toast.svelte.d.ts +14 -0
- package/dist/Components/Contexts/ToastContainer.svelte +30 -11
- package/dist/Components/Contexts/ToastContainer.svelte.d.ts +14 -0
- package/dist/Components/Contexts/ToastProps.d.ts +14 -1
- package/dist/Components/Contexts/Tooltip.svelte +21 -10
- package/dist/Components/Contexts/Tooltip.svelte.d.ts +10 -0
- package/dist/Components/DataMatrixIcon.svelte +82 -11
- package/dist/Components/DataMatrixIconProps.d.ts +73 -1
- package/dist/Components/DateInput.svelte +64 -29
- package/dist/Components/DateInput.svelte.d.ts +1 -1
- package/dist/Components/DateOnlyInputProps.d.ts +31 -5
- package/dist/Components/DatePicker.svelte +96 -108
- package/dist/Components/DatePickerProps.d.ts +18 -1
- package/dist/Components/DateTimeInputProps.d.ts +30 -5
- package/dist/Components/DesktopModal.svelte +14 -43
- package/dist/Components/DesktopModalProps.d.ts +5 -4
- package/dist/Components/Dial.svelte +103 -41
- package/dist/Components/DialProps.d.ts +74 -2
- package/dist/Components/DimensionInput.svelte +50 -64
- package/dist/Components/DimensionInput.svelte.d.ts +1 -1
- package/dist/Components/DimensionInputProps.d.ts +39 -4
- package/dist/Components/DragMenu/DragMenuHolder.svelte +41 -29
- package/dist/Components/DragMenu/DragMenuHolderProps.d.ts +30 -1
- package/dist/Components/DragMenu/DraggableCard.svelte +44 -8
- package/dist/Components/DragMenu/DraggableCardProps.d.ts +27 -1
- package/dist/Components/FileCard.svelte +6 -2
- package/dist/Components/FileCardProps.d.ts +17 -1
- package/dist/Components/FileUpload.svelte +82 -42
- package/dist/Components/FileUploadProps.d.ts +34 -4
- package/dist/Components/GridInput.svelte +27 -17
- package/dist/Components/GridInput.svelte.d.ts +5 -5
- package/dist/Components/GridInputProps.d.ts +4 -1
- package/dist/Components/GridInputSet.svelte +12 -5
- package/dist/Components/GridInputSet.svelte.d.ts +5 -5
- package/dist/Components/GridInputSetProps.d.ts +4 -2
- package/dist/Components/HorizontalTabGroup.svelte +13 -11
- package/dist/Components/HorizontalTabGroupButton.svelte +16 -68
- package/dist/Components/HorizontalTabGroupProps.d.ts +15 -2
- package/dist/Components/Icon.svelte +62 -21
- package/dist/Components/IconProps.d.ts +54 -6
- package/dist/Components/Icons.d.ts +8 -0
- package/dist/Components/Icons.js +234 -215
- package/dist/Components/LoadingAnimation.svelte +18 -18
- package/dist/Components/LoadingAnimation.svelte.d.ts +1 -3
- package/dist/Components/LoadingAnimationProps.d.ts +16 -0
- package/dist/Components/LoadingAnimationProps.js +1 -0
- package/dist/Components/LoadingModal.svelte +18 -20
- package/dist/Components/LoadingModal.svelte.d.ts +1 -4
- package/dist/Components/LoadingModalProps.d.ts +17 -0
- package/dist/Components/LoadingModalProps.js +1 -0
- package/dist/Components/LoadingOverlay.svelte +11 -13
- package/dist/Components/LoadingOverlay.svelte.d.ts +1 -5
- package/dist/Components/LoadingOverlayProps.d.ts +28 -0
- package/dist/Components/LoadingOverlayProps.js +1 -0
- package/dist/Components/Modal.svelte +77 -82
- package/dist/Components/Modal.svelte.d.ts +1 -25
- package/dist/Components/ModalProps.d.ts +65 -0
- package/dist/Components/ModalProps.js +1 -0
- package/dist/Components/MultiSelect.svelte +88 -76
- package/dist/Components/MultiSelectCommonProps.d.ts +33 -4
- package/dist/Components/MultiSelectPropsAsObject.d.ts +5 -0
- package/dist/Components/MultiSelectPropsAsPrimitive.d.ts +6 -0
- package/dist/Components/Nav/CallbackButtonWithIcon.d.ts +22 -1
- package/dist/Components/Nav/Nav.svelte +35 -30
- package/dist/Components/Nav/Nav.svelte.d.ts +23 -2
- package/dist/Components/Nav/NavProps.d.ts +50 -3
- package/dist/Components/Nav/NavServiceMenuList.svelte +12 -3
- package/dist/Components/Nav/NavServiceMenuListProps.d.ts +25 -1
- package/dist/Components/Nav/NavTab.svelte +19 -48
- package/dist/Components/Nav/NavTab.svelte.d.ts +23 -2
- package/dist/Components/Nav/NavTabProps.d.ts +16 -2
- package/dist/Components/Nav/ServiceMenuItem.svelte +29 -20
- package/dist/Components/Nav/ServicesNav.svelte +60 -34
- package/dist/Components/Nav/ServicesNav.svelte.d.ts +23 -2
- package/dist/Components/Nav/ServicesNavProps.d.ts +20 -4
- package/dist/Components/Nav/SideMenuItemProps.d.ts +16 -0
- package/dist/Components/NumberInput.svelte +37 -27
- package/dist/Components/NumberInputProps.d.ts +37 -0
- package/dist/Components/PageHeading.svelte +2 -13
- package/dist/Components/PageHeading.svelte.d.ts +1 -6
- package/dist/Components/PageHeadingProps.d.ts +23 -0
- package/dist/Components/PageHeadingProps.js +1 -0
- package/dist/Components/PasswordInput.svelte +27 -15
- package/dist/Components/PasswordInput.svelte.d.ts +2 -2
- package/dist/Components/PasswordInputProps.d.ts +21 -0
- package/dist/Components/PasswordInputProps.js +1 -0
- package/dist/Components/Portal.svelte +14 -3
- package/dist/Components/PortalProps.d.ts +20 -1
- package/dist/Components/ProgressBubble.svelte +98 -53
- package/dist/Components/ProgressBubbleProps.d.ts +23 -2
- package/dist/Components/QuerySelect.svelte +103 -159
- package/dist/Components/QuerySelect.svelte.d.ts +2 -29
- package/dist/Components/QuerySelectProps.d.ts +66 -0
- package/dist/Components/QuerySelectProps.js +1 -0
- package/dist/Components/SingleSelect.svelte +86 -108
- package/dist/Components/SingleSelectCommonProps.d.ts +43 -5
- package/dist/Components/SingleSelectPropsAsObject.d.ts +7 -0
- package/dist/Components/SingleSelectPropsAsPrimitive.d.ts +8 -0
- package/dist/Components/StepButton.svelte +19 -69
- package/dist/Components/StepForm.svelte +52 -52
- package/dist/Components/StepFormProps.d.ts +16 -2
- package/dist/Components/Switch.svelte +68 -31
- package/dist/Components/Switch.svelte.d.ts +1 -1
- package/dist/Components/SwitchProps.d.ts +46 -0
- package/dist/Components/Table/Body/HeightData.d.ts +1 -6
- package/dist/Components/Table/Body/HeightData.js +8 -0
- package/dist/Components/Table/Body/QuickSearchCell.svelte +106 -50
- package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -11
- package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +6 -0
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +43 -9
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte.d.ts +24 -2
- package/dist/Components/Table/Body/Rows/ColumnHighlightProps.d.ts +3 -0
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +15 -5
- package/dist/Components/Table/Body/Rows/ColumnList.svelte.d.ts +12 -11
- package/dist/Components/Table/Body/Rows/ColumnListProps.d.ts +1 -0
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +424 -91
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte.d.ts +12 -11
- package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +5 -0
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +43 -13
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponentProps.d.ts +12 -0
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +50 -38
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte.d.ts +12 -12
- package/dist/Components/Table/Body/Rows/Columns/ActionsColumn.d.ts +9 -0
- package/dist/Components/Table/Body/Rows/Columns/ActionsTableCell.d.ts +5 -0
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +61 -26
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte.d.ts +14 -13
- package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.d.ts +12 -0
- package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.js +1 -0
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +36 -16
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +47 -24
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte.d.ts +12 -11
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCellProps.d.ts +7 -0
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +54 -20
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte.d.ts +17 -11
- package/dist/Components/Table/Body/Rows/Columns/RowSelectionColumn.d.ts +8 -0
- package/dist/Components/Table/Body/Rows/Columns/RowSelectionTableCell.d.ts +5 -0
- package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +11 -0
- package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +11 -0
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +55 -40
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +11 -0
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +38 -27
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte.d.ts +13 -18
- package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.d.ts +17 -0
- package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.js +1 -0
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +22 -7
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +1 -7
- package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.d.ts +16 -0
- package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.js +1 -0
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +61 -31
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte.d.ts +12 -11
- package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +9 -0
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +123 -244
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte.d.ts +20 -12
- package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +8 -0
- package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +9 -0
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +126 -189
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte.d.ts +12 -11
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelectProps.d.ts +8 -0
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +31 -19
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +2 -5
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.d.ts +14 -0
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.js +1 -0
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +125 -187
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +13 -12
- package/dist/Components/Table/Body/Rows/Columns/TableSelectProps.d.ts +6 -0
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +119 -270
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte.d.ts +12 -11
- package/dist/Components/Table/Body/Rows/Columns/TableTextInputProps.d.ts +6 -0
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +23 -13
- package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.d.ts +104 -0
- package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.js +215 -0
- package/dist/Components/Table/Body/Rows/TableRow.svelte +200 -132
- package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
- package/dist/Components/Table/Body/Rows/TableRowProps.d.ts +11 -2
- package/dist/Components/Table/Body/TableBody.svelte +170 -53
- package/dist/Components/Table/Body/TableBody.svelte.d.ts +15 -22
- package/dist/Components/Table/Body/TableBodyProps.d.ts +9 -7
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +18 -12
- package/dist/Components/Table/ColumnFactory.svelte.d.ts +43 -0
- package/dist/Components/Table/ColumnFactory.svelte.js +339 -0
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +5 -3
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +5 -3
- package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
- package/dist/Components/Table/Headers/TableHead.svelte +340 -200
- package/dist/Components/Table/Headers/TableHead.svelte.d.ts +13 -16
- package/dist/Components/Table/Headers/TableHeadProps.d.ts +10 -0
- package/dist/Components/Table/Headers/TableHeadProps.js +1 -0
- package/dist/Components/Table/Misc/ColumnPanel.svelte +108 -50
- package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +20 -7
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ColumnPanelModalProps.d.ts +5 -0
- package/dist/Components/Table/Misc/FilterInput.svelte +30 -41
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/FilterPanel.svelte +387 -29
- package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +4 -51
- package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
- package/dist/Components/Table/Misc/SidePanel.svelte +12 -9
- package/dist/Components/Table/Misc/SidePanel.svelte.d.ts +1 -7
- package/dist/Components/Table/Misc/SidePanelProps.d.ts +17 -0
- package/dist/Components/Table/Misc/SidePanelProps.js +1 -0
- package/dist/Components/Table/Misc/TableFooter.svelte +44 -35
- package/dist/Components/Table/Misc/TableFooter.svelte.d.ts +13 -14
- package/dist/Components/Table/Misc/TableFooterProps.d.ts +8 -0
- package/dist/Components/Table/Misc/TableFooterProps.js +1 -0
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +17 -48
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/TableSidebar.svelte +28 -47
- package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +121 -55
- package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +31 -24
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ToolboxPanelModalProps.d.ts +5 -0
- package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
- package/dist/Components/Table/Misc/numberDateFilterTypes.js +8 -3
- package/dist/Components/Table/Misc/stringFilterTypes.d.ts +6 -4
- package/dist/Components/Table/Misc/stringFilterTypes.js +7 -3
- package/dist/Components/Table/NestedTable.svelte +85 -41
- package/dist/Components/Table/NestedTable.svelte.d.ts +2 -10
- package/dist/Components/Table/NestedTableProps.d.ts +25 -0
- package/dist/Components/Table/NestedTableProps.js +1 -0
- package/dist/Components/Table/SubApis.svelte.d.ts +23 -0
- package/dist/Components/Table/SubApis.svelte.js +359 -0
- package/dist/Components/Table/Table.svelte +347 -172
- package/dist/Components/Table/Table.svelte.d.ts +24 -1
- package/dist/Components/Table/TableHelpers.svelte.d.ts +58 -0
- package/dist/Components/Table/TableHelpers.svelte.js +88 -0
- package/dist/Components/Table/Types/Columns/Column.d.ts +10 -0
- package/dist/Components/Table/Types/Columns/ColumnPinningState.d.ts +12 -0
- package/dist/Components/Table/Types/Columns/ColumnSizingState.d.ts +8 -0
- package/dist/Components/Table/Types/Columns/ColumnType.d.ts +17 -0
- package/dist/Components/Table/Types/Columns/ColumnType.js +18 -1
- package/dist/Components/Table/Types/Columns/DateColumn.d.ts +6 -0
- package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -0
- package/dist/Components/Table/Types/Columns/Definitions/AccessorFn.d.ts +13 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +28 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +15 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.d.ts +10 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.js +11 -1
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +23 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +9 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +21 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +8 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +29 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +11 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +23 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +8 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +31 -0
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +17 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +21 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +7 -0
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +29 -1
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +17 -3
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +122 -11
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +77 -11
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +9 -0
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +41 -1
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +16 -0
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +19 -1
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +12 -1
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +11 -0
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +6 -3
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +19 -0
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +25 -1
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +26 -0
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +20 -5
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +43 -7
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +18 -3
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +19 -5
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +16 -5
- package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +14 -0
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +34 -2
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +30 -7
- package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +17 -0
- package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +10 -0
- package/dist/Components/Table/Types/Columns/DisplayType.d.ts +13 -0
- package/dist/Components/Table/Types/Columns/DisplayType.js +14 -1
- package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +5 -0
- package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +7 -0
- package/dist/Components/Table/Types/Columns/JSONColumnPinningState.d.ts +6 -0
- package/dist/Components/Table/Types/Columns/ProgressBarColumn.d.ts +5 -0
- package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +9 -0
- package/dist/Components/Table/Types/Columns/TableActionButton.d.ts +12 -0
- package/dist/Components/Table/Types/Columns/TableCell.d.ts +16 -2
- package/dist/Components/Table/Types/Columns/VisibilityState.d.ts +12 -0
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +173 -0
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +241 -0
- package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +166 -0
- package/dist/Components/Table/Types/Context/FilteringState.svelte.js +180 -0
- package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +316 -0
- package/dist/Components/Table/Types/Context/FocusState.svelte.js +751 -0
- package/dist/Components/Table/Types/Context/ITable.d.ts +10 -0
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +242 -0
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +317 -0
- package/dist/Components/Table/Types/Context/ReadonlyRowModel.d.ts +14 -3
- package/dist/Components/Table/Types/Context/Row.d.ts +18 -0
- package/dist/Components/Table/Types/Context/RowModel.d.ts +11 -0
- package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +260 -0
- package/dist/Components/Table/Types/Context/SelectionState.svelte.js +613 -0
- package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +112 -0
- package/dist/Components/Table/Types/Context/SortingState.svelte.js +272 -0
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +547 -53
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +959 -1259
- package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +16 -0
- package/dist/Components/Table/Types/Context/TableSettings.d.ts +20 -0
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +167 -0
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +226 -0
- package/dist/Components/Table/Types/Coordinates/CellCoordinates.d.ts +12 -0
- package/dist/Components/Table/Types/Coordinates/CellCoordinatesWithoutColumn.d.ts +5 -0
- package/dist/Components/Table/Types/Coordinates/ColumnIndices.d.ts +16 -2
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +143 -0
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +454 -0
- package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +21 -0
- package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +10 -0
- package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +16 -0
- package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +87 -3
- package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +112 -7
- package/dist/Components/Table/Types/DataRepository/SortingState.d.ts +12 -0
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +87 -2
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +74 -1
- package/dist/Components/Table/Types/ExpandedPanel.d.ts +9 -0
- package/dist/Components/Table/Types/ExpandedPanel.js +10 -1
- package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +17 -0
- package/dist/Components/Table/Types/Filtering/CustomFilter.d.ts +21 -0
- package/dist/Components/Table/Types/Filtering/CustomFilterType.d.ts +5 -0
- package/dist/Components/Table/Types/Filtering/CustomFilterType.js +6 -1
- package/dist/Components/Table/Types/Filtering/CustomRemoteFilters.d.ts +6 -0
- package/dist/Components/Table/Types/Filtering/FilterFn.d.ts +28 -0
- package/dist/Components/Table/Types/Filtering/FilterMode.d.ts +7 -0
- package/dist/Components/Table/Types/Filtering/FilterType.d.ts +8 -0
- package/dist/Components/Table/Types/Filtering/FilterType.js +9 -1
- package/dist/Components/Table/Types/Filtering/FilterValueType.d.ts +11 -0
- package/dist/Components/Table/Types/Filtering/FilterValueType.js +12 -1
- package/dist/Components/Table/Types/Filtering/HasCustomFilterFunction.d.ts +23 -2
- package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.d.ts +19 -12
- package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.js +18 -14
- package/dist/Components/Table/Types/Filtering/StringFilterMode.d.ts +22 -15
- package/dist/Components/Table/Types/Filtering/StringFilterMode.js +22 -16
- package/dist/Components/Table/Types/Focus/MultiFocusEdge.d.ts +8 -0
- package/dist/Components/Table/Types/Focus/MultiFocusEdge.js +9 -1
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +22 -0
- package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +22 -0
- package/dist/Components/Table/Types/Header.d.ts +8 -0
- package/dist/Components/Table/Types/HeaderGroup.d.ts +7 -0
- package/dist/Components/Table/Types/Layout/CellPinning.d.ts +1 -0
- package/dist/Components/Table/Types/Layout/CellPinning.js +8 -0
- package/dist/Components/Table/Types/OnChangeFn.d.ts +11 -0
- package/dist/Components/Table/Types/Pagination/PaginationState.d.ts +9 -0
- package/dist/Components/Table/Types/Pagination/PaginationType.d.ts +10 -0
- package/dist/Components/Table/Types/Pagination/PaginationType.js +11 -1
- package/dist/Components/Table/Types/Public/AnyEditEvent.d.ts +30 -0
- package/dist/Components/Table/Types/Public/AnyEditEvent.js +1 -0
- package/dist/Components/Table/Types/Public/BaseColumnOptions.d.ts +44 -0
- package/dist/Components/Table/Types/Public/BaseColumnOptions.js +1 -0
- package/dist/Components/Table/Types/Public/ColumnFactory.d.ts +35 -0
- package/dist/Components/Table/Types/Public/ColumnFactory.js +1 -0
- package/dist/Components/Table/Types/Public/ColumnOptions.d.ts +238 -0
- package/dist/Components/Table/Types/Public/ColumnOptions.js +1 -0
- package/dist/Components/Table/Types/Public/ColumnSpec.d.ts +39 -0
- package/dist/Components/Table/Types/Public/ColumnSpec.js +1 -0
- package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +87 -0
- package/dist/Components/Table/Types/Public/CreateTableOptions.js +1 -0
- package/dist/Components/Table/Types/Public/KeyConstraints.d.ts +42 -0
- package/dist/Components/Table/Types/Public/KeyConstraints.js +22 -0
- package/dist/Components/Table/Types/Public/RowSource.d.ts +87 -0
- package/dist/Components/Table/Types/Public/RowSource.js +1 -0
- package/dist/Components/Table/Types/Public/SelectionOptions.d.ts +26 -0
- package/dist/Components/Table/Types/Public/SelectionOptions.js +1 -0
- package/dist/Components/Table/Types/Public/Table.d.ts +39 -0
- package/dist/Components/Table/Types/Public/Table.js +1 -0
- package/dist/Components/Table/Types/Public/TableInitialState.d.ts +26 -0
- package/dist/Components/Table/Types/Public/TableInitialState.js +1 -0
- package/dist/Components/Table/Types/Public/TablePersistence.d.ts +38 -0
- package/dist/Components/Table/Types/Public/TablePersistence.js +1 -0
- package/dist/Components/Table/Types/Public/TableSubApis.d.ts +157 -0
- package/dist/Components/Table/Types/Public/TableSubApis.js +1 -0
- package/dist/Components/Table/Types/Public/index.d.ts +20 -0
- package/dist/Components/Table/Types/Public/index.js +8 -0
- package/dist/Components/Table/Types/Toolbar/ToolbarPosition.d.ts +4 -0
- package/dist/Components/Table/Types/Toolbar/ToolbarPosition.js +5 -1
- package/dist/Components/Table/createTable.svelte.d.ts +53 -0
- package/dist/Components/Table/createTable.svelte.js +269 -0
- package/dist/Components/TextArea.svelte +37 -18
- package/dist/Components/TextAreaProps.d.ts +37 -0
- package/dist/Components/TextInput.svelte +41 -22
- package/dist/Components/TextInputProps.d.ts +58 -1
- package/dist/Components/ThreeStateRadio.svelte +61 -64
- package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
- package/dist/Components/Touch/BoolCard.svelte +8 -15
- package/dist/Components/Touch/BoolCard.svelte.d.ts +1 -10
- package/dist/Components/Touch/BoolCardProps.d.ts +21 -0
- package/dist/Components/Touch/BoolCardProps.js +1 -0
- package/dist/Components/Touch/DateModal.svelte +17 -25
- package/dist/Components/Touch/DateModal.svelte.d.ts +1 -17
- package/dist/Components/Touch/DateModalProps.d.ts +36 -0
- package/dist/Components/Touch/DateModalProps.js +1 -0
- package/dist/Components/Touch/EditCard.svelte +10 -3
- package/dist/Components/Touch/EditCardProps.d.ts +21 -0
- package/dist/Components/Touch/InfoCard.svelte +14 -7
- package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
- package/dist/Components/Touch/InfoTextCard.svelte +9 -2
- package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
- package/dist/Components/Touch/ModalExplanation.svelte +9 -12
- package/dist/Components/Touch/ModalExplanation.svelte.d.ts +1 -6
- package/dist/Components/Touch/ModalExplanationProps.d.ts +22 -0
- package/dist/Components/Touch/ModalExplanationProps.js +1 -0
- package/dist/Components/Touch/NumberKeyboard.svelte +62 -105
- package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
- package/dist/Components/Touch/NumberModal.svelte +16 -6
- package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
- package/dist/Components/Touch/PlusMinusCard.svelte +12 -16
- package/dist/Components/Touch/PlusMinusCard.svelte.d.ts +1 -6
- package/dist/Components/Touch/PlusMinusCardProps.d.ts +18 -0
- package/dist/Components/Touch/PlusMinusCardProps.js +1 -0
- package/dist/Components/Touch/SelectModal.svelte +33 -15
- package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
- package/dist/Components/Touch/SummaryCard.svelte +56 -14
- package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
- package/dist/Components/Touch/TextAreaModal.svelte +18 -9
- package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
- package/dist/Components/Touch/TextModal.svelte +15 -32
- package/dist/Components/Touch/TextModalProps.d.ts +28 -1
- package/dist/Components/Touch/TouchCard.svelte +9 -47
- package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
- package/dist/Components/Touch/TouchModal.svelte +105 -99
- package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
- package/dist/Components/Touch/UtilityButton.svelte +36 -18
- package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
- package/dist/Components/VerticalTabGroup.svelte +18 -40
- package/dist/Components/VerticalTabGroupButton.svelte +11 -50
- package/dist/Components/VerticalTabGroupProps.d.ts +15 -2
- package/dist/Contexts/AlertContext.svelte.d.ts +92 -8
- package/dist/Contexts/AlertContext.svelte.js +69 -6
- package/dist/Contexts/ContextMenuContext.svelte.d.ts +54 -8
- package/dist/Contexts/ContextMenuContext.svelte.js +48 -2
- package/dist/Contexts/TestContext.svelte.d.ts +27 -1
- package/dist/Contexts/TestContext.svelte.js +29 -1
- package/dist/Contexts/ToastContext.svelte.d.ts +29 -1
- package/dist/Contexts/ToastContext.svelte.js +93 -24
- package/dist/Contexts/TooltipContext.svelte.d.ts +68 -1
- package/dist/Contexts/TooltipContext.svelte.js +70 -7
- package/dist/Contexts/UntypedInputContext.svelte.d.ts +54 -5
- package/dist/Contexts/UntypedInputContext.svelte.js +87 -34
- package/dist/Delay/Delay.js +1 -1
- package/dist/Helpers/AsyncFlag.svelte.d.ts +39 -0
- package/dist/Helpers/AsyncFlag.svelte.js +72 -0
- package/dist/Helpers/Datamatrix.d.ts +10 -1
- package/dist/Helpers/Datamatrix.js +290 -1
- package/dist/Helpers/Helpers.svelte.d.ts +252 -18
- package/dist/Helpers/Helpers.svelte.js +271 -75
- package/dist/Helpers/INamed.d.ts +6 -0
- package/dist/Helpers/Storage.d.ts +67 -0
- package/dist/Helpers/Storage.js +138 -0
- package/dist/Helpers/dropdownPortal.d.ts +52 -0
- package/dist/Helpers/dropdownPortal.js +232 -0
- package/dist/Helpers/dropdownPortal.svelte.d.ts +2 -0
- package/dist/Helpers/dropdownPortal.svelte.js +5 -0
- package/dist/Helpers/memoiseByRow.d.ts +45 -0
- package/dist/Helpers/memoiseByRow.js +78 -0
- package/dist/Helpers/prefersReducedMotion.svelte.d.ts +27 -0
- package/dist/Helpers/prefersReducedMotion.svelte.js +18 -0
- package/dist/Helpers/useTooltip.svelte.d.ts +53 -0
- package/dist/Helpers/useTooltip.svelte.js +62 -0
- package/dist/Types/Examples/ExampleModal.svelte +2 -1
- package/dist/Types/Examples/ExampleSelectEnum.js +1 -1
- package/dist/Types/Internal/AsyncFlag.d.ts +7 -0
- package/dist/Types/Internal/AsyncFlag.js +1 -0
- package/dist/Types/Internal/BigRadioOption.d.ts +8 -0
- package/dist/Types/Internal/ButtonProp.d.ts +24 -2
- package/dist/Types/Internal/CallbackButton.d.ts +12 -0
- package/dist/Types/Internal/DateChange.d.ts +8 -0
- package/dist/Types/Internal/DatePickerType.d.ts +5 -0
- package/dist/Types/Internal/DatePickerType.js +6 -1
- package/dist/Types/Internal/IdentifiableToastMessage.d.ts +8 -0
- package/dist/Types/Internal/InputVariant.d.ts +5 -0
- package/dist/Types/Internal/InputVariant.js +6 -1
- package/dist/Types/Internal/Misc.d.ts +91 -0
- package/dist/Types/Internal/RefWrapper.d.ts +6 -0
- package/dist/Types/Internal/SelectOption.d.ts +8 -0
- package/dist/Types/Internal/Shape.d.ts +1 -0
- package/dist/Types/Internal/Shape.js +2 -1
- package/dist/Types/Internal/Side.d.ts +1 -0
- package/dist/Types/Internal/Side.js +2 -1
- package/dist/Types/Internal/Size.d.ts +5 -0
- package/dist/Types/Internal/Size.js +6 -1
- package/dist/Types/Internal/TabOption.d.ts +15 -5
- package/dist/Types/Internal/Ternary.d.ts +6 -0
- package/dist/Types/Internal/Ternary.js +7 -1
- package/dist/Types/Internal/ToastMessage.d.ts +28 -0
- package/dist/Types/Internal/Validity.d.ts +6 -0
- package/dist/Types/Internal/Validity.js +7 -1
- package/dist/Types/Internal/ValidityWrapper.d.ts +8 -0
- package/dist/Types/Internal/Variant.d.ts +5 -0
- package/dist/Types/Internal/Variant.js +6 -1
- package/dist/index.d.ts +27 -82
- package/dist/index.js +24 -62
- package/dist/scss/_mixins.scss +451 -167
- package/dist/scss/_motion.scss +57 -0
- package/dist/scss/_sizing.scss +16 -0
- package/dist/scss/colours.js +2 -2
- package/dist/scss/sizing.d.ts +9 -0
- package/dist/scss/sizing.js +10 -1
- package/package.json +35 -31
|
@@ -1,14 +1,26 @@
|
|
|
1
|
+
import { dev } from '$app/environment';
|
|
1
2
|
import { SvelteSet } from 'svelte/reactivity';
|
|
2
3
|
import { FilterType } from '../Filtering/FilterType.js';
|
|
3
4
|
import { NumberDateFilterMode } from '../Filtering/NumberDateFilterMode.js';
|
|
4
5
|
import { StringFilterMode } from '../Filtering/StringFilterMode.js';
|
|
5
6
|
import { PaginationType } from '../Pagination/PaginationType.js';
|
|
6
7
|
import { TableDataRepository } from './TableDataRepository.svelte.js';
|
|
8
|
+
/**
|
|
9
|
+
* Filter modes that accept an empty filter value (e.g. "show empty",
|
|
10
|
+
* "show null"). Used by `setFilterMode` / `filterBy` to decide whether
|
|
11
|
+
* to keep an empty stub filter in the active filtering list.
|
|
12
|
+
*/
|
|
7
13
|
export const allowedEmptyFilterModes = new SvelteSet([
|
|
8
14
|
StringFilterMode.Empty,
|
|
9
15
|
StringFilterMode.null,
|
|
10
16
|
NumberDateFilterMode.null,
|
|
11
17
|
]);
|
|
18
|
+
/**
|
|
19
|
+
* Negation-style filter modes. Used by the per-row filter callbacks to
|
|
20
|
+
* decide whether a row with a missing or wrong-shaped value should pass
|
|
21
|
+
* the filter (rows that cannot be tested are included for negation
|
|
22
|
+
* modes and excluded for inclusion modes).
|
|
23
|
+
*/
|
|
12
24
|
const inclusiveFilterModes = new SvelteSet([
|
|
13
25
|
//strings
|
|
14
26
|
StringFilterMode.NotEquals,
|
|
@@ -21,7 +33,18 @@ const inclusiveFilterModes = new SvelteSet([
|
|
|
21
33
|
NumberDateFilterMode.NotIn,
|
|
22
34
|
NumberDateFilterMode.null,
|
|
23
35
|
]);
|
|
24
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Concrete in-memory data repository. The data array is supplied as a
|
|
38
|
+
* `RefWrapper` so consumers can mutate the underlying array and the
|
|
39
|
+
* repo's `$derived` totals will update reactively without a full
|
|
40
|
+
* reassignment.
|
|
41
|
+
*
|
|
42
|
+
* Implements the five filter callbacks (date / number / select / bool
|
|
43
|
+
* / string). The async signature is preserved across all five even
|
|
44
|
+
* though the bodies are synchronous; converting to a sync fast-path is
|
|
45
|
+
* deferred (LocalTableDataRepository P0 finding, requires a coordinated
|
|
46
|
+
* change to TableContext's `_filteredIndices` loop).
|
|
47
|
+
*/
|
|
25
48
|
export class LocalTableDataRepository extends TableDataRepository {
|
|
26
49
|
addEmptyRow;
|
|
27
50
|
debug;
|
|
@@ -36,6 +59,7 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
36
59
|
this._totalRows = $derived(this._dataRef.value.length);
|
|
37
60
|
}
|
|
38
61
|
_isLoading = $state(false);
|
|
62
|
+
/** Whether a long-running operation is currently in flight. */
|
|
39
63
|
get isLoading() {
|
|
40
64
|
return this._isLoading;
|
|
41
65
|
}
|
|
@@ -43,14 +67,17 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
43
67
|
this._isLoading = v;
|
|
44
68
|
}
|
|
45
69
|
_dataRef;
|
|
70
|
+
/** The current data array (read from the underlying `RefWrapper`). */
|
|
46
71
|
get data() {
|
|
47
72
|
return this._dataRef.value;
|
|
48
73
|
}
|
|
49
74
|
_lastPage;
|
|
75
|
+
/** The last page index (1-based) given the current page size. */
|
|
50
76
|
get lastPage() {
|
|
51
77
|
return this._lastPage;
|
|
52
78
|
}
|
|
53
79
|
_sorting = $state([]);
|
|
80
|
+
/** The active sort columns, in precedence order. */
|
|
54
81
|
get sorting() {
|
|
55
82
|
return this._sorting;
|
|
56
83
|
}
|
|
@@ -58,16 +85,22 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
58
85
|
this._sorting = v;
|
|
59
86
|
}
|
|
60
87
|
_totalRows;
|
|
88
|
+
/** Total number of rows in the underlying data array. */
|
|
61
89
|
get totalRows() {
|
|
62
90
|
return this._totalRows;
|
|
63
91
|
}
|
|
64
92
|
_filtering = $state([]);
|
|
93
|
+
/** The active per-column filter values, in application order. */
|
|
65
94
|
get filtering() {
|
|
66
95
|
return this._filtering;
|
|
67
96
|
}
|
|
68
97
|
set filtering(v) {
|
|
69
98
|
this._filtering = v;
|
|
70
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Replace the sorting state with either a literal array or a
|
|
102
|
+
* function that maps the previous state to a new state.
|
|
103
|
+
*/
|
|
71
104
|
updateSorting = (stateOrCallback) => {
|
|
72
105
|
if (typeof stateOrCallback == 'function') {
|
|
73
106
|
this.sorting = stateOrCallback(this.sorting);
|
|
@@ -77,6 +110,12 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
77
110
|
}
|
|
78
111
|
};
|
|
79
112
|
paginationType = PaginationType.Local;
|
|
113
|
+
/**
|
|
114
|
+
* Sets (or clears) the filter mode for a column. Passing `undefined`
|
|
115
|
+
* removes the mode entry; setting an empty-allowed mode (e.g.
|
|
116
|
+
* "Empty", "Null") additionally adds a stub filter value so the
|
|
117
|
+
* filter actually applies even though no value was typed.
|
|
118
|
+
*/
|
|
80
119
|
setFilterMode = (id, mode) => {
|
|
81
120
|
if (mode != undefined) {
|
|
82
121
|
if (this.debug) {
|
|
@@ -95,6 +134,15 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
95
134
|
this._filterModes.delete(id);
|
|
96
135
|
}
|
|
97
136
|
};
|
|
137
|
+
/**
|
|
138
|
+
* Sets or updates the filter value for a column. Empty values are
|
|
139
|
+
* dropped from the filtering list unless the column's active mode
|
|
140
|
+
* explicitly accepts an empty value (e.g. "Empty", "Null").
|
|
141
|
+
*
|
|
142
|
+
* Per-keystroke debouncing is deferred to the input layer; the
|
|
143
|
+
* `LocalTableDataRepository` P0 finding tracks adding a
|
|
144
|
+
* `filterByDebounced` helper here.
|
|
145
|
+
*/
|
|
98
146
|
filterBy = (id, value) => {
|
|
99
147
|
if (typeof value === 'string') {
|
|
100
148
|
value = value.trim();
|
|
@@ -134,16 +182,24 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
134
182
|
this.filtering = newFiltering;
|
|
135
183
|
};
|
|
136
184
|
_pageStartIndex = $derived(this.paginationState.pageIndex * this.paginationState.pageSize);
|
|
185
|
+
/** Index of the first row on the current page. */
|
|
137
186
|
get pageStartIndex() {
|
|
138
187
|
return this._pageStartIndex;
|
|
139
188
|
}
|
|
140
189
|
_pageEndIndexExclusive = $derived((this.paginationState.pageIndex + 1) * this.paginationState.pageSize);
|
|
190
|
+
/** Index one past the last row on the current page. */
|
|
141
191
|
get pageEndIndexExclusive() {
|
|
142
192
|
return this._pageEndIndexExclusive;
|
|
143
193
|
}
|
|
194
|
+
/** Clears every active filter value (keeps filter modes intact). */
|
|
144
195
|
resetFilters = () => {
|
|
145
196
|
this.filtering = [];
|
|
146
197
|
};
|
|
198
|
+
/**
|
|
199
|
+
* Sets the page size and clamps the current page index so the new
|
|
200
|
+
* page count covers the current view. Accepts a string so a raw
|
|
201
|
+
* `<select>` value can be passed through without parsing first.
|
|
202
|
+
*/
|
|
147
203
|
setPageSize = (size) => {
|
|
148
204
|
if (typeof size === 'string') {
|
|
149
205
|
size = parseInt(size);
|
|
@@ -158,6 +214,7 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
158
214
|
pageIndex: Math.max(0, Math.min(this.paginationState.pageIndex, lastIndex)),
|
|
159
215
|
};
|
|
160
216
|
};
|
|
217
|
+
/** Jumps to the given 1-based page number, clamped to the last page. */
|
|
161
218
|
setPage = (page) => {
|
|
162
219
|
const lastIndex = this._lastPage - 1;
|
|
163
220
|
this.paginationState = {
|
|
@@ -165,6 +222,7 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
165
222
|
pageIndex: Math.max(0, Math.min(lastIndex, page - 1)),
|
|
166
223
|
};
|
|
167
224
|
};
|
|
225
|
+
/** Advances to the next page, clamped to the last page. */
|
|
168
226
|
nextPage = () => {
|
|
169
227
|
const lastIndex = this._lastPage - 1;
|
|
170
228
|
this.paginationState = {
|
|
@@ -172,6 +230,7 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
172
230
|
pageIndex: Math.min(lastIndex, this.paginationState.pageIndex + 1),
|
|
173
231
|
};
|
|
174
232
|
};
|
|
233
|
+
/** Returns to the previous page, clamped to page 0. */
|
|
175
234
|
prevPage = () => {
|
|
176
235
|
this.paginationState = {
|
|
177
236
|
...this.paginationState,
|
|
@@ -179,12 +238,28 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
179
238
|
};
|
|
180
239
|
};
|
|
181
240
|
// #region filters
|
|
241
|
+
/**
|
|
242
|
+
* Date range filter. The filter value is a `[from, to]` tuple where
|
|
243
|
+
* either bound may be `null` (or `undefined`) to leave that side
|
|
244
|
+
* unbounded. Rows whose value is not a `Date` are excluded.
|
|
245
|
+
*
|
|
246
|
+
* Inner `<T>` generic shadowing of the class `T` (workorder P1) is
|
|
247
|
+
* a known limitation, retained pending a coordinated signature
|
|
248
|
+
* change.
|
|
249
|
+
*/
|
|
182
250
|
dateFilter = async (row, columnId, // & keyof T,
|
|
183
251
|
[dateFrom, dateTo]) => {
|
|
184
252
|
if (!dateFrom && !dateTo) {
|
|
185
253
|
return true;
|
|
186
254
|
}
|
|
187
|
-
const
|
|
255
|
+
const rawValue = await row.getValue(columnId);
|
|
256
|
+
if (!(rawValue instanceof Date)) {
|
|
257
|
+
if (dev && rawValue != null) {
|
|
258
|
+
console.warn(`dateFilter: column ${columnId} value was not a Date`, rawValue);
|
|
259
|
+
}
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
const columnValue = rawValue.valueOf();
|
|
188
263
|
if (!columnValue) {
|
|
189
264
|
return false;
|
|
190
265
|
}
|
|
@@ -202,19 +277,24 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
202
277
|
const dateToTimestamp = dateTo.valueOf();
|
|
203
278
|
return columnValue <= dateToTimestamp;
|
|
204
279
|
}
|
|
205
|
-
else {
|
|
280
|
+
else if (dev) {
|
|
206
281
|
console.warn('no valid dateFrom or dateTo exist in filter');
|
|
207
282
|
//should never happen
|
|
208
283
|
}
|
|
209
284
|
return true;
|
|
210
285
|
};
|
|
286
|
+
/**
|
|
287
|
+
* Numeric filter supporting equality, range, set, and negation
|
|
288
|
+
* modes. String filter modes that share a literal value are caught
|
|
289
|
+
* at the switch and throw, surfacing a programming error before the
|
|
290
|
+
* user sees stale data.
|
|
291
|
+
*/
|
|
211
292
|
numberFilter = async (row, columnId, // & keyof T,
|
|
212
293
|
values) => {
|
|
213
294
|
const columnValue = await row.getValue(columnId);
|
|
214
295
|
const mode = this.filterModes.get(columnId) ?? NumberDateFilterMode.In;
|
|
215
296
|
const isValueInvalid = columnValue == null || typeof columnValue != 'number' || isNaN(columnValue);
|
|
216
297
|
if (mode == NumberDateFilterMode.null) {
|
|
217
|
-
// TODO test
|
|
218
298
|
return isValueInvalid;
|
|
219
299
|
}
|
|
220
300
|
if (isValueInvalid || typeof columnValue != 'number') {
|
|
@@ -290,18 +370,24 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
290
370
|
case StringFilterMode.In:
|
|
291
371
|
case StringFilterMode.NotIn:
|
|
292
372
|
case StringFilterMode.Empty:
|
|
293
|
-
|
|
373
|
+
// StringFilterMode.null shares its value ('__null=') with NumberDateFilterMode.null
|
|
374
|
+
// and is handled by the early-return above; we do not list it here because the
|
|
375
|
+
// frozen-const filter mode types collapse to identical string literals.
|
|
294
376
|
throw new Error('Using string filter mode in a number filter column');
|
|
295
377
|
}
|
|
296
378
|
//default
|
|
297
379
|
return !!values[0] && columnValue.toString().includes(values[0].toString());
|
|
298
380
|
};
|
|
381
|
+
/**
|
|
382
|
+
* Multi-select / single-value equality filter. Accepts an array, a
|
|
383
|
+
* `Set`, an option-object with a `value` field, or a primitive
|
|
384
|
+
* compared with loose equality.
|
|
385
|
+
*/
|
|
299
386
|
selectFilter = async (row, columnId, // & keyof T,
|
|
300
387
|
filterValue) => {
|
|
301
388
|
if (!filterValue) {
|
|
302
389
|
return true;
|
|
303
390
|
}
|
|
304
|
-
void filterValue;
|
|
305
391
|
const columnValue = (await row.getValue(columnId));
|
|
306
392
|
if (Array.isArray(filterValue)) {
|
|
307
393
|
return filterValue.find((it) => it === columnValue) != null;
|
|
@@ -314,11 +400,30 @@ export class LocalTableDataRepository extends TableDataRepository {
|
|
|
314
400
|
}
|
|
315
401
|
return filterValue == columnValue;
|
|
316
402
|
};
|
|
403
|
+
/**
|
|
404
|
+
* Boolean filter. Rows whose value is not a boolean are excluded
|
|
405
|
+
* (dev warning logged) so an accidental non-boolean accessor does
|
|
406
|
+
* not silently match every row.
|
|
407
|
+
*/
|
|
317
408
|
boolFilter = async (row, columnId, // & keyof T,
|
|
318
409
|
filterValue) => {
|
|
319
|
-
const columnValue =
|
|
410
|
+
const columnValue = await row.getValue(columnId);
|
|
411
|
+
if (typeof columnValue !== 'boolean') {
|
|
412
|
+
if (dev && columnValue != null) {
|
|
413
|
+
console.warn(`boolFilter: column ${columnId} value was not a boolean`, columnValue);
|
|
414
|
+
}
|
|
415
|
+
return filterValue == null;
|
|
416
|
+
}
|
|
320
417
|
return filterValue == null || filterValue === columnValue;
|
|
321
418
|
};
|
|
419
|
+
/**
|
|
420
|
+
* String filter implementing every `StringFilterMode` variant.
|
|
421
|
+
* Comparisons are case-insensitive and use trimmed lowercase forms;
|
|
422
|
+
* an empty filter value yields a positive match for inclusion modes
|
|
423
|
+
* and a negative match for negation modes (so empty inputs do not
|
|
424
|
+
* accidentally hide rows when the user is mid-typing a "not equals"
|
|
425
|
+
* filter).
|
|
426
|
+
*/
|
|
322
427
|
stringFilter = async (row, columnId, // & keyof T,
|
|
323
428
|
filterValue) => {
|
|
324
429
|
const filterType = this.filterModes.get(columnId) ?? StringFilterMode.Contains;
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One sort instruction. `id` is the column id and `desc` is `true` for
|
|
3
|
+
* descending, `false` for ascending. `id` is a bare `string` rather than
|
|
4
|
+
* `string & keyof T` because column-preset deserialisation cannot statically
|
|
5
|
+
* know the row type; tightening is deferred (workorder
|
|
6
|
+
* Types-DataRepository-interfaces finding 4).
|
|
7
|
+
*/
|
|
1
8
|
export interface ColumnSort {
|
|
2
9
|
desc: boolean;
|
|
3
10
|
id: string;
|
|
4
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Ordered list of column sorts. Earlier entries win when
|
|
14
|
+
* `enableMultiSort` is on. An empty array means the data is in its natural
|
|
15
|
+
* (repository-supplied) order.
|
|
16
|
+
*/
|
|
5
17
|
export type SortingState = Array<ColumnSort>;
|
|
@@ -3,21 +3,50 @@ import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
|
|
|
3
3
|
import type { FilterMode } from '../Filtering/FilterMode.js';
|
|
4
4
|
import type { FilterType } from '../Filtering/FilterType.js';
|
|
5
5
|
import type { PaginationState } from '../Pagination/PaginationState.js';
|
|
6
|
+
import { PaginationType } from '../Pagination/PaginationType.js';
|
|
6
7
|
import type { IDataRepository } from './IDataRepository.js';
|
|
7
8
|
import type { SortingState } from './SortingState.js';
|
|
9
|
+
/**
|
|
10
|
+
* Pagination state with the read-only contract enforced at the type
|
|
11
|
+
* level. Both fields are read-only because consumers should never mutate
|
|
12
|
+
* an existing pagination object - they must reassign the whole shape
|
|
13
|
+
* through the public setter so the previously viewed page is tracked.
|
|
14
|
+
*/
|
|
8
15
|
export interface ReadonlyPaginationState extends PaginationState {
|
|
9
16
|
readonly pageIndex: number;
|
|
10
17
|
readonly pageSize: number;
|
|
11
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Abstract base for every data repository that backs a `TableContext`.
|
|
21
|
+
* Owns pagination state with localStorage write-through on `pageSize`,
|
|
22
|
+
* the reactive filter-mode map, the force-refresh hook, and shared
|
|
23
|
+
* static helpers for parsing comma-separated filter input.
|
|
24
|
+
*
|
|
25
|
+
* The `out FilterValueType` variance annotation is currently advisory:
|
|
26
|
+
* `filtering` reads the parameter (contravariant) but `__queryValues`
|
|
27
|
+
* does not currently use it. A proper variance audit is deferred to a
|
|
28
|
+
* future workorder; the existing annotation does not break type
|
|
29
|
+
* checking.
|
|
30
|
+
*/
|
|
12
31
|
export declare abstract class TableDataRepository<T extends object, out FilterValueType> implements IDataRepository<T> {
|
|
13
32
|
private tableName;
|
|
14
33
|
protected getUserId: () => string | undefined;
|
|
15
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Discriminator used by `TableContext` to route pagination control
|
|
36
|
+
* flow. Subclasses must declare a concrete value drawn from
|
|
37
|
+
* `PaginationType` (currently `Local` or `Remote`).
|
|
38
|
+
*/
|
|
39
|
+
abstract paginationType: typeof PaginationType.Local | typeof PaginationType.Remote;
|
|
16
40
|
abstract filterType: FilterType;
|
|
17
41
|
abstract totalRows: number;
|
|
18
42
|
abstract isLoading: boolean;
|
|
19
43
|
abstract data: Array<T>;
|
|
20
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Subclasses widen the parameter to `number | string` so a raw input
|
|
46
|
+
* value coming from a `<select>` element can be parsed inline. The
|
|
47
|
+
* abstract signature mirrors that broader contract.
|
|
48
|
+
*/
|
|
49
|
+
abstract setPageSize: (size: number | string) => void;
|
|
21
50
|
abstract filtering: ColumnFiltersState<FilterValueType>;
|
|
22
51
|
abstract setFilterMode: (id: string, mode: FilterMode) => void;
|
|
23
52
|
abstract filterBy: (id: string, value: unknown) => void;
|
|
@@ -29,20 +58,76 @@ export declare abstract class TableDataRepository<T extends object, out FilterVa
|
|
|
29
58
|
abstract pageStartIndex: number;
|
|
30
59
|
abstract pageEndIndexExclusive: number;
|
|
31
60
|
constructor(tableName: string, getUserId: () => string | undefined);
|
|
61
|
+
/**
|
|
62
|
+
* Reactive bag of consumer-defined query values keyed by column id.
|
|
63
|
+
* Stored as `unknown` because the shape depends on the column type;
|
|
64
|
+
* narrowing to `FilterValueType` is deferred (would force consumers
|
|
65
|
+
* to choose a single value type at construction time, which is too
|
|
66
|
+
* restrictive for tables mixing several filter modes).
|
|
67
|
+
*/
|
|
32
68
|
__queryValues: SvelteMap<string, unknown>;
|
|
33
69
|
private _paginationState;
|
|
70
|
+
/** Current page index plus the configured page size. */
|
|
34
71
|
get paginationState(): ReadonlyPaginationState;
|
|
72
|
+
/**
|
|
73
|
+
* Replaces pagination state and writes the new `pageSize` through to
|
|
74
|
+
* localStorage. Idempotent: identical states are dropped so the
|
|
75
|
+
* previously-viewed-page tracker does not lose its value when the
|
|
76
|
+
* same state is reassigned (e.g. from a `$derived` re-evaluation).
|
|
77
|
+
*/
|
|
35
78
|
set paginationState(v: ReadonlyPaginationState);
|
|
36
79
|
private _previouslyViewedPage;
|
|
80
|
+
/**
|
|
81
|
+
* The page index that was current immediately before the most recent
|
|
82
|
+
* `paginationState` assignment. Used by `Table.svelte` to decide
|
|
83
|
+
* whether to scroll-reset on remote-load.
|
|
84
|
+
*/
|
|
37
85
|
get previouslyViewedPage(): number;
|
|
38
86
|
private set previouslyViewedPage(value);
|
|
39
87
|
protected _filterModes: SvelteMap<string, FilterMode>;
|
|
88
|
+
/** Per-column filter mode (e.g. `Equals`, `Contains`). */
|
|
40
89
|
get filterModes(): SvelteMap<string, FilterMode>;
|
|
41
90
|
private _forceRefresh;
|
|
91
|
+
/**
|
|
92
|
+
* Returns the currently-registered force-refresh callback. Until a
|
|
93
|
+
* consumer registers a callback via `registerRefreshMethod` the
|
|
94
|
+
* returned function logs a console warning and otherwise does
|
|
95
|
+
* nothing.
|
|
96
|
+
*/
|
|
42
97
|
get forceRefresh(): () => void;
|
|
98
|
+
/**
|
|
99
|
+
* Replaces the force-refresh callback. Also invokes the new callback
|
|
100
|
+
* immediately so callers wiring up a remote repo can request a fresh
|
|
101
|
+
* payload as a single assignment.
|
|
102
|
+
*
|
|
103
|
+
* The implicit invocation on set is a known footgun (TableDataRepository
|
|
104
|
+
* P1 finding): a future workorder will introduce a dedicated
|
|
105
|
+
* `triggerRefresh()` method and remove the side effect from the
|
|
106
|
+
* setter. Behaviour preserved here to avoid breaking existing
|
|
107
|
+
* consumers.
|
|
108
|
+
*/
|
|
43
109
|
set forceRefresh(v: () => void);
|
|
110
|
+
/**
|
|
111
|
+
* Registers a refresh callback without invoking it. Preferred over
|
|
112
|
+
* the `forceRefresh` setter when the caller does not want the
|
|
113
|
+
* implicit immediate refresh.
|
|
114
|
+
*/
|
|
44
115
|
readonly registerRefreshMethod: (method: () => void) => void;
|
|
116
|
+
/**
|
|
117
|
+
* Parses a comma-separated filter value list into a reactive set of
|
|
118
|
+
* finite numbers, dropping non-numeric entries.
|
|
119
|
+
*/
|
|
45
120
|
protected getValueSet(values: Array<string | number | undefined>): SvelteSet<number>;
|
|
121
|
+
/**
|
|
122
|
+
* Splits a comma-separated filter input into a numeric array,
|
|
123
|
+
* dropping `NaN` entries. Static so it can be reused inside filter
|
|
124
|
+
* functions without an instance reference.
|
|
125
|
+
*/
|
|
46
126
|
static getValues(values: Array<string | number | null | undefined>): Array<number>;
|
|
127
|
+
/**
|
|
128
|
+
* Parses up to two filter-input values into a `[min, max]` tuple,
|
|
129
|
+
* coalescing missing or non-numeric `max` to `min` so a single-input
|
|
130
|
+
* filter still compares against a useful upper bound.
|
|
131
|
+
*/
|
|
47
132
|
static getMinMax(values: Array<string | number | null | undefined>): number[] | undefined[];
|
|
48
133
|
}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { browser } from '$app/environment';
|
|
2
2
|
import { SvelteMap, SvelteSet } from 'svelte/reactivity';
|
|
3
|
+
import { PaginationType } from '../Pagination/PaginationType.js';
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base for every data repository that backs a `TableContext`.
|
|
6
|
+
* Owns pagination state with localStorage write-through on `pageSize`,
|
|
7
|
+
* the reactive filter-mode map, the force-refresh hook, and shared
|
|
8
|
+
* static helpers for parsing comma-separated filter input.
|
|
9
|
+
*
|
|
10
|
+
* The `out FilterValueType` variance annotation is currently advisory:
|
|
11
|
+
* `filtering` reads the parameter (contravariant) but `__queryValues`
|
|
12
|
+
* does not currently use it. A proper variance audit is deferred to a
|
|
13
|
+
* future workorder; the existing annotation does not break type
|
|
14
|
+
* checking.
|
|
15
|
+
*/
|
|
3
16
|
export class TableDataRepository {
|
|
4
17
|
tableName;
|
|
5
18
|
getUserId;
|
|
@@ -7,22 +20,45 @@ export class TableDataRepository {
|
|
|
7
20
|
this.tableName = tableName;
|
|
8
21
|
this.getUserId = getUserId;
|
|
9
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Reactive bag of consumer-defined query values keyed by column id.
|
|
25
|
+
* Stored as `unknown` because the shape depends on the column type;
|
|
26
|
+
* narrowing to `FilterValueType` is deferred (would force consumers
|
|
27
|
+
* to choose a single value type at construction time, which is too
|
|
28
|
+
* restrictive for tables mixing several filter modes).
|
|
29
|
+
*/
|
|
10
30
|
__queryValues = new SvelteMap();
|
|
11
31
|
_paginationState = $state({
|
|
12
32
|
pageIndex: 0,
|
|
13
33
|
pageSize: 20,
|
|
14
34
|
});
|
|
35
|
+
/** Current page index plus the configured page size. */
|
|
15
36
|
get paginationState() {
|
|
16
37
|
return this._paginationState;
|
|
17
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Replaces pagination state and writes the new `pageSize` through to
|
|
41
|
+
* localStorage. Idempotent: identical states are dropped so the
|
|
42
|
+
* previously-viewed-page tracker does not lose its value when the
|
|
43
|
+
* same state is reassigned (e.g. from a `$derived` re-evaluation).
|
|
44
|
+
*/
|
|
18
45
|
set paginationState(v) {
|
|
46
|
+
if (v.pageIndex === this._paginationState.pageIndex &&
|
|
47
|
+
v.pageSize === this._paginationState.pageSize) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
19
50
|
this._previouslyViewedPage = this._paginationState.pageIndex;
|
|
20
51
|
this._paginationState = v;
|
|
21
52
|
if (browser) {
|
|
22
|
-
localStorage.setItem(
|
|
53
|
+
localStorage.setItem(`scoria-table:${this.getUserId() ?? 'anon'}:${this.tableName}:page-size`, v.pageSize.toString());
|
|
23
54
|
}
|
|
24
55
|
}
|
|
25
56
|
_previouslyViewedPage = $state(0);
|
|
57
|
+
/**
|
|
58
|
+
* The page index that was current immediately before the most recent
|
|
59
|
+
* `paginationState` assignment. Used by `Table.svelte` to decide
|
|
60
|
+
* whether to scroll-reset on remote-load.
|
|
61
|
+
*/
|
|
26
62
|
get previouslyViewedPage() {
|
|
27
63
|
return this._previouslyViewedPage;
|
|
28
64
|
}
|
|
@@ -30,25 +66,57 @@ export class TableDataRepository {
|
|
|
30
66
|
this._previouslyViewedPage = v;
|
|
31
67
|
}
|
|
32
68
|
_filterModes = $state(new SvelteMap());
|
|
69
|
+
/** Per-column filter mode (e.g. `Equals`, `Contains`). */
|
|
33
70
|
get filterModes() {
|
|
34
71
|
return this._filterModes;
|
|
35
72
|
}
|
|
36
73
|
_forceRefresh = $state(() => {
|
|
37
74
|
console.warn('tried to force refresh without a callback registered');
|
|
38
75
|
});
|
|
76
|
+
/**
|
|
77
|
+
* Returns the currently-registered force-refresh callback. Until a
|
|
78
|
+
* consumer registers a callback via `registerRefreshMethod` the
|
|
79
|
+
* returned function logs a console warning and otherwise does
|
|
80
|
+
* nothing.
|
|
81
|
+
*/
|
|
39
82
|
get forceRefresh() {
|
|
40
83
|
return this._forceRefresh;
|
|
41
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Replaces the force-refresh callback. Also invokes the new callback
|
|
87
|
+
* immediately so callers wiring up a remote repo can request a fresh
|
|
88
|
+
* payload as a single assignment.
|
|
89
|
+
*
|
|
90
|
+
* The implicit invocation on set is a known footgun (TableDataRepository
|
|
91
|
+
* P1 finding): a future workorder will introduce a dedicated
|
|
92
|
+
* `triggerRefresh()` method and remove the side effect from the
|
|
93
|
+
* setter. Behaviour preserved here to avoid breaking existing
|
|
94
|
+
* consumers.
|
|
95
|
+
*/
|
|
42
96
|
set forceRefresh(v) {
|
|
43
97
|
this._forceRefresh = v;
|
|
44
98
|
this._forceRefresh();
|
|
45
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Registers a refresh callback without invoking it. Preferred over
|
|
102
|
+
* the `forceRefresh` setter when the caller does not want the
|
|
103
|
+
* implicit immediate refresh.
|
|
104
|
+
*/
|
|
46
105
|
registerRefreshMethod = (method) => {
|
|
47
106
|
this._forceRefresh = method;
|
|
48
107
|
};
|
|
108
|
+
/**
|
|
109
|
+
* Parses a comma-separated filter value list into a reactive set of
|
|
110
|
+
* finite numbers, dropping non-numeric entries.
|
|
111
|
+
*/
|
|
49
112
|
getValueSet(values) {
|
|
50
113
|
return new SvelteSet(TableDataRepository.getValues(values));
|
|
51
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Splits a comma-separated filter input into a numeric array,
|
|
117
|
+
* dropping `NaN` entries. Static so it can be reused inside filter
|
|
118
|
+
* functions without an instance reference.
|
|
119
|
+
*/
|
|
52
120
|
static getValues(values) {
|
|
53
121
|
return values
|
|
54
122
|
.toString()
|
|
@@ -58,6 +126,11 @@ export class TableDataRepository {
|
|
|
58
126
|
})
|
|
59
127
|
.filter((it) => !isNaN(it));
|
|
60
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Parses up to two filter-input values into a `[min, max]` tuple,
|
|
131
|
+
* coalescing missing or non-numeric `max` to `min` so a single-input
|
|
132
|
+
* filter still compares against a useful upper bound.
|
|
133
|
+
*/
|
|
61
134
|
static getMinMax(values) {
|
|
62
135
|
let [min, max] = values;
|
|
63
136
|
if (typeof min === 'string') {
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discriminator on the currently-visible toolbar sidebar panel:
|
|
3
|
+
*
|
|
4
|
+
* - `None` - no panel open (currently the `null` state is preferred in
|
|
5
|
+
* `TableSidebar.svelte`; `None` is kept for symmetry but unused).
|
|
6
|
+
* - `Column` - column-picker panel.
|
|
7
|
+
* - `Filter` - advanced filter panel.
|
|
8
|
+
* - `Toolbox` - settings / toolbox panel.
|
|
9
|
+
*/
|
|
1
10
|
export declare const ExpandedPanel: {
|
|
2
11
|
readonly None: "None";
|
|
3
12
|
readonly Column: "Column";
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discriminator on the currently-visible toolbar sidebar panel:
|
|
3
|
+
*
|
|
4
|
+
* - `None` - no panel open (currently the `null` state is preferred in
|
|
5
|
+
* `TableSidebar.svelte`; `None` is kept for symmetry but unused).
|
|
6
|
+
* - `Column` - column-picker panel.
|
|
7
|
+
* - `Filter` - advanced filter panel.
|
|
8
|
+
* - `Toolbox` - settings / toolbox panel.
|
|
9
|
+
*/
|
|
1
10
|
export const ExpandedPanel = {
|
|
2
11
|
None: 'None',
|
|
3
12
|
Column: 'Column',
|
|
4
13
|
Filter: 'Filter',
|
|
5
|
-
Toolbox: 'Toolbox'
|
|
14
|
+
Toolbox: 'Toolbox',
|
|
6
15
|
};
|
|
7
16
|
Object.freeze(ExpandedPanel);
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One filter entry: the column id (`string`, not narrowed to `keyof T` here
|
|
3
|
+
* because the state is heterogeneous across columns) plus the current filter
|
|
4
|
+
* value. The value's concrete shape depends on the column's
|
|
5
|
+
* `filterValueType` (see `FilterValueType`); the type parameter `T` here is
|
|
6
|
+
* the value-side, not the row-side, and defaults to `unknown` for the
|
|
7
|
+
* `ColumnFiltersState` aggregate.
|
|
8
|
+
*
|
|
9
|
+
* Tightening to a discriminated union (`{ kind: 'String'; value: string }
|
|
10
|
+
* | { kind: 'Number'; value: NumberFilterValueType } | ...`) is deferred to
|
|
11
|
+
* the `ColumnFilter` workorder.
|
|
12
|
+
*/
|
|
1
13
|
export interface ColumnFilter<T> {
|
|
2
14
|
id: string;
|
|
3
15
|
value: T;
|
|
4
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Heterogeneous list of filter entries. Default `T = unknown` reflects the
|
|
19
|
+
* fact that the per-entry filter value type cannot be statically known once
|
|
20
|
+
* the entries are mixed.
|
|
21
|
+
*/
|
|
5
22
|
export type ColumnFiltersState<T = unknown> = Array<ColumnFilter<T>>;
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import type { SelectOption } from '../../../../Types/Internal/SelectOption.js';
|
|
2
2
|
import type { CustomFilterType } from './CustomFilterType.js';
|
|
3
|
+
/**
|
|
4
|
+
* Description of a consumer-supplied "custom" filter, surfaced in the filter
|
|
5
|
+
* panel alongside the per-column filter inputs. Used to let remote tables
|
|
6
|
+
* register filters that are not tied to a single column (e.g. a
|
|
7
|
+
* facility-wide status filter).
|
|
8
|
+
*
|
|
9
|
+
* - `queryKey` is the URL parameter / GraphQL variable name the filter binds
|
|
10
|
+
* to on the remote side.
|
|
11
|
+
* - `type` selects the input control (`String`, `Number`, `Select`, `Date`).
|
|
12
|
+
* - `id` is a stable identifier used as a map key in `CustomRemoteFilters`.
|
|
13
|
+
* - `options` is the static option set for `Select` filters; pass a Promise
|
|
14
|
+
* to load them async.
|
|
15
|
+
* - `query` is the dynamic option fetcher for `Select` filters whose options
|
|
16
|
+
* are searchable. The `value` argument is the user-entered search string
|
|
17
|
+
* from the filter input.
|
|
18
|
+
*
|
|
19
|
+
* Security note: `query.value` is untrusted user input. Implementers
|
|
20
|
+
* forwarding it to a backend MUST escape / parameterise it; the type
|
|
21
|
+
* signature is intentionally `unknown` for backwards compatibility but the
|
|
22
|
+
* runtime value is the user's keystrokes from the search box.
|
|
23
|
+
*/
|
|
3
24
|
export interface CustomFilter<FilterValueType> {
|
|
4
25
|
queryKey: string;
|
|
5
26
|
type: CustomFilterType;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input-type discriminator for a `CustomFilter`. Selects which control the
|
|
3
|
+
* filter panel renders for the custom filter (string field, number field,
|
|
4
|
+
* select dropdown, date picker).
|
|
5
|
+
*/
|
|
1
6
|
export declare const CustomFilterType: {
|
|
2
7
|
readonly String: "String";
|
|
3
8
|
readonly Number: "Number";
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input-type discriminator for a `CustomFilter`. Selects which control the
|
|
3
|
+
* filter panel renders for the custom filter (string field, number field,
|
|
4
|
+
* select dropdown, date picker).
|
|
5
|
+
*/
|
|
1
6
|
export const CustomFilterType = {
|
|
2
7
|
String: 'String',
|
|
3
8
|
Number: 'Number',
|
|
4
9
|
Select: 'Select',
|
|
5
|
-
Date: 'Date'
|
|
10
|
+
Date: 'Date',
|
|
6
11
|
};
|
|
7
12
|
Object.freeze(CustomFilterType);
|