@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
package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js
CHANGED
|
@@ -1,18 +1,41 @@
|
|
|
1
|
-
import { generateUUID } from '../../../../../../Helpers/Helpers.svelte.js';
|
|
1
|
+
import { generateUUID, syntheticColumnId } from '../../../../../../Helpers/Helpers.svelte.js';
|
|
2
2
|
import { ColumnType } from '../../ColumnType.js';
|
|
3
3
|
import { ColumnDef } from '../ColumnDef.svelte.js';
|
|
4
|
+
/**
|
|
5
|
+
* `RowSelectionDef<T, FilterValueType, FilterOptionsType>` is the
|
|
6
|
+
* checkbox column that drives row selection. Non-sortable and
|
|
7
|
+
* non-filterable; the header reads `'Row Selected'` and the id is
|
|
8
|
+
* generated via `generateUUID` (UUIDv7).
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
*
|
|
12
|
+
* Two construction forms are supported:
|
|
13
|
+
*
|
|
14
|
+
* - `new RowSelectionDef(isSelectable, isValid?)` - legacy positional
|
|
15
|
+
* signature retained for backwards compatibility.
|
|
16
|
+
* - `new RowSelectionDef({ isSelectable, isValid })` - props-object
|
|
17
|
+
* signature parallel to every other `*Def` class.
|
|
18
|
+
*
|
|
19
|
+
* The positional form was the only outlier in the Def family;
|
|
20
|
+
* consumers are encouraged to migrate to the props-object form.
|
|
21
|
+
*/
|
|
4
22
|
export class RowSelectionDef extends ColumnDef {
|
|
5
|
-
|
|
23
|
+
/** Discriminator literal. */
|
|
6
24
|
columnType = ColumnType.RowSelect;
|
|
7
|
-
|
|
25
|
+
isSelectable;
|
|
26
|
+
constructor(propsOrIsSelectable, legacyIsValid) {
|
|
27
|
+
const props = typeof propsOrIsSelectable === 'function'
|
|
28
|
+
? { isSelectable: propsOrIsSelectable, isValid: legacyIsValid }
|
|
29
|
+
: propsOrIsSelectable;
|
|
8
30
|
super({
|
|
9
|
-
id: `is-selectable-${generateUUID()}
|
|
31
|
+
id: syntheticColumnId(`is-selectable-${generateUUID()}`),
|
|
10
32
|
header: 'Row Selected',
|
|
11
33
|
allowSorting: false,
|
|
12
34
|
allowFiltering: false,
|
|
13
|
-
isValid,
|
|
35
|
+
isValid: props.isValid,
|
|
14
36
|
});
|
|
15
|
-
this.isSelectable = isSelectable;
|
|
37
|
+
this.isSelectable = props.isSelectable;
|
|
16
38
|
}
|
|
17
|
-
|
|
39
|
+
/** Row-selection columns are never filtered. */
|
|
40
|
+
filterFn = undefined;
|
|
18
41
|
}
|
|
@@ -1,3 +1,20 @@
|
|
|
1
1
|
import type { Validity } from '../../../../../Types/Internal/Validity.js';
|
|
2
2
|
import type { ValidityWrapper } from '../../../../../Types/Internal/ValidityWrapper.js';
|
|
3
|
+
/**
|
|
4
|
+
* Per-row validity callback supplied via `ColumnDef.isValid`. Receives the
|
|
5
|
+
* row and a flag indicating whether the row is currently selected (which
|
|
6
|
+
* may itself be a `Promise` if `selectionExtractor` is async).
|
|
7
|
+
*
|
|
8
|
+
* The return union is asymmetric: the synchronous path may resolve to a
|
|
9
|
+
* plain `Validity` enum value or a `ValidityWrapper` with a `reason` string,
|
|
10
|
+
* while the asynchronous path wraps both possibilities in a Promise. The
|
|
11
|
+
* normalised form would be `Validity | ValidityWrapper |
|
|
12
|
+
* Promise<Validity | ValidityWrapper>`; this is a non-breaking renaming of
|
|
13
|
+
* the existing union and is deferred to the dedicated workorder (`ValidationFn`
|
|
14
|
+
* P2 finding).
|
|
15
|
+
*
|
|
16
|
+
* Security note: a throw inside the synchronous part propagates into the
|
|
17
|
+
* caller's effect. Wrapping callers in a `try`/`catch` fence is deferred to
|
|
18
|
+
* the centralised `safeCallerFn` work.
|
|
19
|
+
*/
|
|
3
20
|
export type ValidationFn<T> = (item: T, isSelected: boolean | Promise<boolean>) => Validity | Promise<Validity | ValidityWrapper> | ValidityWrapper;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import type { CustomRemoteFilters } from '../Filtering/CustomRemoteFilters.js';
|
|
2
2
|
import type { ColumnDef } from './Definitions/ColumnDef.svelte.js';
|
|
3
|
+
/**
|
|
4
|
+
* Container returned by every column-defs factory (e.g.
|
|
5
|
+
* `generateExampleItemColumnDefs`). Holds the array of `ColumnDef` instances
|
|
6
|
+
* for a given table plus any custom remote-filter providers.
|
|
7
|
+
*
|
|
8
|
+
* `remoteFilters` is typed `CustomRemoteFilters<unknown>` because the wrapper
|
|
9
|
+
* cannot know the per-column filter value types in advance; the type
|
|
10
|
+
* strictness review tracks tightening this in workorder `TableContext`
|
|
11
|
+
* finding 2.
|
|
12
|
+
*/
|
|
3
13
|
export interface DefsWrapper<T extends object> {
|
|
4
14
|
defs: Array<ColumnDef<T>>;
|
|
5
15
|
remoteFilters?: CustomRemoteFilters<unknown>;
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-taxonomy for `Display`-typed columns. Selects which read-only cell
|
|
3
|
+
* component renders the column body:
|
|
4
|
+
*
|
|
5
|
+
* - `Normal` - plain `DisplayCell` (text-only).
|
|
6
|
+
* - `Bubbles` - `BubbleCell` (one bubble per item in the accessor array).
|
|
7
|
+
* - `Progress` - `ProgressCell` (numeric pair rendered as a progress bar).
|
|
8
|
+
* - `Validity` - validity-icon column driven by `ColumnDef.isValid`.
|
|
9
|
+
*
|
|
10
|
+
* Note: the string values overlap deliberately with `AccessorType` (`'Date'`,
|
|
11
|
+
* `'Normal'`); type-side these are distinct because the unions never mix at
|
|
12
|
+
* the same call site.
|
|
13
|
+
*/
|
|
1
14
|
export declare const DisplayType: {
|
|
2
15
|
readonly Normal: "Normal";
|
|
3
16
|
readonly Bubbles: "Bubbles";
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-taxonomy for `Display`-typed columns. Selects which read-only cell
|
|
3
|
+
* component renders the column body:
|
|
4
|
+
*
|
|
5
|
+
* - `Normal` - plain `DisplayCell` (text-only).
|
|
6
|
+
* - `Bubbles` - `BubbleCell` (one bubble per item in the accessor array).
|
|
7
|
+
* - `Progress` - `ProgressCell` (numeric pair rendered as a progress bar).
|
|
8
|
+
* - `Validity` - validity-icon column driven by `ColumnDef.isValid`.
|
|
9
|
+
*
|
|
10
|
+
* Note: the string values overlap deliberately with `AccessorType` (`'Date'`,
|
|
11
|
+
* `'Normal'`); type-side these are distinct because the unions never mix at
|
|
12
|
+
* the same call site.
|
|
13
|
+
*/
|
|
1
14
|
export const DisplayType = {
|
|
2
15
|
Normal: 'Normal',
|
|
3
16
|
Bubbles: 'Bubbles',
|
|
4
17
|
Progress: 'Progress',
|
|
5
18
|
// Icon: 'Icon', // NYI
|
|
6
|
-
Validity: 'Validity'
|
|
19
|
+
Validity: 'Validity',
|
|
7
20
|
};
|
|
8
21
|
Object.freeze(DisplayType);
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { Primitive } from '../Context/TableInitOptions.js';
|
|
2
2
|
import type { ExpandDef } from './Definitions/Expand/ExpandDef.svelte.js';
|
|
3
|
+
/**
|
|
4
|
+
* Narrowed `Column<T>` whose `columnDef` is an `ExpandDef` (master/detail).
|
|
5
|
+
* `T` is the outer row type, `R` the inner-table row type, `IdType` the
|
|
6
|
+
* `selectionExtractor` return type for the inner table.
|
|
7
|
+
*/
|
|
3
8
|
export interface ExpandColumn<T extends object, R extends object, IdType extends Primitive, FilterValueType> {
|
|
4
9
|
id: string;
|
|
5
10
|
columnDef: ExpandDef<T, R, IdType, FilterValueType>;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { Row } from '../Context/Row.js';
|
|
2
2
|
import type { Primitive } from '../Context/TableInitOptions.js';
|
|
3
3
|
import type { ExpandColumn } from './ExpandColumn.js';
|
|
4
|
+
/**
|
|
5
|
+
* Narrowed `TableCell<T>` for expand columns. The natural shape of
|
|
6
|
+
* `getValue` would be `ReadonlyArray<R> | Promise<ReadonlyArray<R>>`
|
|
7
|
+
* (the inner-table rows for this row), but the cell is currently typed
|
|
8
|
+
* `unknown` for consistency with `TableCell.getValue`; tightening is deferred
|
|
9
|
+
* to the parent `TableCell.getValue` workorder.
|
|
10
|
+
*/
|
|
4
11
|
export interface ExpandTableCell<T extends object, R extends object, IdType extends Primitive, FilterValueType> {
|
|
5
12
|
column: ExpandColumn<T, R, IdType, FilterValueType>;
|
|
6
13
|
row: Row<T>;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialisable mirror of `ColumnPinningState`. `ReadonlyMap` is not
|
|
3
|
+
* `JSON.stringify`-friendly, so column-preset save/restore code in
|
|
4
|
+
* `TableContext` converts to/from this `Array<[id, width]>` representation
|
|
5
|
+
* for localStorage round-trips.
|
|
6
|
+
*/
|
|
1
7
|
export interface JSONColumnPinningState {
|
|
2
8
|
left?: Array<[string, number]>;
|
|
3
9
|
right?: Array<[string, number]>;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { ProgressBarDef } from './Definitions/Display/ProgressBarDef.svelte.js';
|
|
2
|
+
/**
|
|
3
|
+
* Narrowed `Column<T>` whose `columnDef` is a `ProgressBarDef`. As with
|
|
4
|
+
* `DateColumn`, this currently declares its own shape; collapsing to
|
|
5
|
+
* `extends Column<T, F>` is deferred (workorder Types-Columns finding 10).
|
|
6
|
+
*/
|
|
2
7
|
export interface ProgressBarColumn<T extends object, FilterValueType> {
|
|
3
8
|
id: string;
|
|
4
9
|
columnDef: ProgressBarDef<T, FilterValueType>;
|
|
@@ -2,6 +2,15 @@ import type { Row } from '../Context/Row.js';
|
|
|
2
2
|
import type { NumberFilterValueType } from '../Filtering/FilterFn.js';
|
|
3
3
|
import type { ProgressBarColumn } from './ProgressBarColumn.js';
|
|
4
4
|
import type { TableCell } from './TableCell.js';
|
|
5
|
+
/**
|
|
6
|
+
* Narrowed `TableCell<T>` for progress-bar columns. The natural shape of
|
|
7
|
+
* `getValue` here is `[number, number] | Promise<[number, number]>`
|
|
8
|
+
* (current, max); tightening is deferred to the parent `TableCell.getValue`
|
|
9
|
+
* workorder so the change happens in one place.
|
|
10
|
+
*
|
|
11
|
+
* Default `FilterValueType = NumberFilterValueType` reflects the fact that
|
|
12
|
+
* the only sensible filter shape for a progress column is a numeric range.
|
|
13
|
+
*/
|
|
5
14
|
export interface ProgressBarTableCell<T extends object, FilterValueType = NumberFilterValueType> extends TableCell<T, FilterValueType> {
|
|
6
15
|
column: ProgressBarColumn<T, FilterValueType>;
|
|
7
16
|
row: Row<T>;
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { ColourSet } from '../../../../scss/colours.js';
|
|
2
|
+
/**
|
|
3
|
+
* One per-row action exposed by an `ActionsDef`. Rendered as a `Button`
|
|
4
|
+
* inside `ActionsCell.svelte`.
|
|
5
|
+
*
|
|
6
|
+
* - `getLabel(item, index)` produces the visible label (and tooltip /
|
|
7
|
+
* `aria-label`) per row. May return a `Promise` so consumers can read from
|
|
8
|
+
* an async source.
|
|
9
|
+
* - `callback(item, index)` is invoked synchronously on click. The cell
|
|
10
|
+
* awaits any returned promise via `devCatch`.
|
|
11
|
+
* - `colourSet` controls the button colour set (defaults to `Auxiliary`).
|
|
12
|
+
* - `disabled` is a static fallback; `isDisabled` overrides per-row.
|
|
13
|
+
*/
|
|
2
14
|
export interface TableActionButton<T> {
|
|
3
15
|
getLabel: (item: T, index: number) => string | Promise<string>;
|
|
4
16
|
callback: (item: T, index: number) => void;
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
import type { Row } from '../Context/Row.js';
|
|
2
2
|
import type { Column } from './Column.js';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* `TableCell<T, FilterValueType, FilterOptionsType, TValue>` is the per-cell
|
|
5
|
+
* handle exposed to body components.
|
|
6
|
+
*
|
|
7
|
+
* The optional `TValue` generic is the declared value type for the column
|
|
8
|
+
* the cell belongs to. Defaulting it to `unknown` keeps all existing call
|
|
9
|
+
* sites compiling: a cell consumer that does not parametrise on `TValue`
|
|
10
|
+
* continues to see `unknown | Promise<unknown>` exactly as before.
|
|
11
|
+
*
|
|
12
|
+
* Cell hosts that know the column shape (`TableNumberInput`, `TableCheckbox`,
|
|
13
|
+
* etc.) can pass a narrower `TValue` either explicitly or by reading it from
|
|
14
|
+
* a `ColumnDef<T, ..., TValue>`. The intent is to let `cell.getValue()` be
|
|
15
|
+
* typed instead of `unknown` without breaking any external consumer.
|
|
16
|
+
*/
|
|
17
|
+
export interface TableCell<T extends object, in FilterValueType = never, out FilterOptionsType = unknown, TValue = unknown> {
|
|
4
18
|
column: Column<T, FilterValueType, FilterOptionsType>;
|
|
5
19
|
row: Row<T>;
|
|
6
20
|
id: string;
|
|
7
|
-
getValue: () =>
|
|
21
|
+
getValue: () => TValue | Promise<TValue>;
|
|
8
22
|
}
|
|
@@ -1 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-column visibility map keyed by column id. Tri-state by design:
|
|
3
|
+
*
|
|
4
|
+
* - `true` - column is visible (set explicitly by the user).
|
|
5
|
+
* - `false` - column is hidden.
|
|
6
|
+
* - `undefined` - no user preference recorded; the table treats this as
|
|
7
|
+
* visible (every `getIsVisible()` check uses `!== false`).
|
|
8
|
+
*
|
|
9
|
+
* Persisted to localStorage as-is. The tri-state contract is intentional and
|
|
10
|
+
* must be preserved when refactoring; collapsing to `Record<string, boolean>`
|
|
11
|
+
* would lose the "no preference" branch the column-preset code relies on.
|
|
12
|
+
*/
|
|
1
13
|
export type VisibilityState = Record<string, boolean | undefined>;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import type { ColumnDef } from '../Columns/Definitions/ColumnDef.svelte.js';
|
|
2
|
+
import type { ColumnPinningState } from '../Columns/ColumnPinningState.js';
|
|
3
|
+
import type { ColumnSizingState } from '../Columns/ColumnSizingState.js';
|
|
4
|
+
import type { VisibilityState } from '../Columns/VisibilityState.js';
|
|
5
|
+
import type { VisualColumnIndex } from '../Coordinates/ColumnIndices.js';
|
|
6
|
+
/**
|
|
7
|
+
* Dependency surface that `ColumnLayoutState` reads from the surrounding
|
|
8
|
+
* `TableContext`. Every dependency is passed as a thunk so the sub-context
|
|
9
|
+
* never holds a direct reference to the parent; reactivity threads through
|
|
10
|
+
* `$derived` exactly as before the extraction.
|
|
11
|
+
*/
|
|
12
|
+
export interface ColumnLayoutStateDeps {
|
|
13
|
+
/** Master gate from `TableInitOptions.allowColumnReordering`. When
|
|
14
|
+
* false, `setColumnPinning` short-circuits. */
|
|
15
|
+
getAllowColumnReordering: () => boolean;
|
|
16
|
+
/** Logger gate; mirrors the parent `TableContext.debug` field. */
|
|
17
|
+
getDebug: () => boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Phase 6.3 god-object decomposition - sub-context that owns every
|
|
21
|
+
* column-layout concern previously held directly on `TableContext`:
|
|
22
|
+
*
|
|
23
|
+
* - `columnDefs` (the ordered array of column definitions),
|
|
24
|
+
* - `columnDefsById` (`$derived` id->def lookup map),
|
|
25
|
+
* - `columnPinning` / `columnSizing` / `columnVisibility` (the three
|
|
26
|
+
* per-column maps the consumer mutates through the public setters),
|
|
27
|
+
* - `_visualColumns` and `_visualColumnIndexById` (the cached visual
|
|
28
|
+
* display order plus the paired `Map<id, VisualColumnIndex>` that
|
|
29
|
+
* makes `columnVisualIndex` an O(1) lookup - Phase-5 Group 1
|
|
30
|
+
* workorder P0),
|
|
31
|
+
* - `columnVisualIndex(id)` (the public lookup),
|
|
32
|
+
* - `setColumnPinning(updater)` (delegating writer that respects the
|
|
33
|
+
* `allowColumnReordering` master gate).
|
|
34
|
+
*
|
|
35
|
+
* `TableContext` retains delegating getters / setters / methods for
|
|
36
|
+
* every legacy surface (`columnDefs`, `columnPinning`, `columnSizing`,
|
|
37
|
+
* `columnVisibility`, `columnDefsById`, `columnVisualIndex`,
|
|
38
|
+
* `_visualColumns`, `setColumnPinning`, etc.) so existing consumers
|
|
39
|
+
* need no migration. Future consumers can read `tableContext._columnLayout`
|
|
40
|
+
* directly once the migration is complete (see
|
|
41
|
+
* `src/stories/Concepts/TableContext-decomposition.mdx`).
|
|
42
|
+
*
|
|
43
|
+
* The `focusStartVisualColumn` / `focusEndVisualColumn` getters straddle
|
|
44
|
+
* column-layout and focus; the column-layout-side calculation
|
|
45
|
+
* (`columnVisualIndex` lookup) lives here, but the focus-side state
|
|
46
|
+
* (`focusStart`, `focusEnd`) stays on `TableContext` until the Phase 6.6
|
|
47
|
+
* `FocusState` extraction. The parent's `focusStartVisualColumn` getter
|
|
48
|
+
* therefore reads `this.focusStart?.id` and calls
|
|
49
|
+
* `this._columnLayout.columnVisualIndex(...)`.
|
|
50
|
+
*/
|
|
51
|
+
export declare class ColumnLayoutState<T extends object> {
|
|
52
|
+
private readonly _deps;
|
|
53
|
+
private _columnDefs;
|
|
54
|
+
private _columnSizing;
|
|
55
|
+
private _columnPinning;
|
|
56
|
+
private _columnVisibility;
|
|
57
|
+
/**
|
|
58
|
+
* @param deps thunks the sub-context reads from the parent.
|
|
59
|
+
* Constructor-only - no implicit setup so the parent
|
|
60
|
+
* remains in control of effect ownership and lifecycle.
|
|
61
|
+
*/
|
|
62
|
+
constructor(deps: ColumnLayoutStateDeps);
|
|
63
|
+
/**
|
|
64
|
+
* The ordered array of column definitions. Memory order (declaration
|
|
65
|
+
* order) is preserved across reorder operations - drag-reorder
|
|
66
|
+
* mutates the per-def `.index` field but does not change the array
|
|
67
|
+
* identity until the consumer reassigns `columnDefs` wholesale.
|
|
68
|
+
*
|
|
69
|
+
* Setter accepts any array of `ColumnDef<T>`; the parent
|
|
70
|
+
* `TableContext` is responsible for index normalisation when
|
|
71
|
+
* applying drag-drop or preset switches (see `reorderColumn`,
|
|
72
|
+
* `moveColumnTo`, `setSelectedPreset`).
|
|
73
|
+
*/
|
|
74
|
+
get columnDefs(): Array<ColumnDef<T>>;
|
|
75
|
+
set columnDefs(v: Array<ColumnDef<T>>);
|
|
76
|
+
/**
|
|
77
|
+
* Per-column width state (pixels), keyed by column id. Persisted to
|
|
78
|
+
* localStorage as-is by `TableContext._updateLocalStorageSettings`.
|
|
79
|
+
* Setter accepts a full replacement object; per-key writes are
|
|
80
|
+
* handled by `autoResize` mutating in place (which is fine because
|
|
81
|
+
* the underlying `$state` slot is itself the proxy).
|
|
82
|
+
*/
|
|
83
|
+
get columnSizing(): ColumnSizingState;
|
|
84
|
+
set columnSizing(v: ColumnSizingState);
|
|
85
|
+
/**
|
|
86
|
+
* Per-column pin state (left / right). Setter is exposed publicly
|
|
87
|
+
* for direct assignment by the parent (e.g. `setSelectedPreset` and
|
|
88
|
+
* the init flow); the gated `setColumnPinning` updater below honours
|
|
89
|
+
* the `allowColumnReordering` master gate.
|
|
90
|
+
*/
|
|
91
|
+
get columnPinning(): ColumnPinningState;
|
|
92
|
+
set columnPinning(v: ColumnPinningState);
|
|
93
|
+
/**
|
|
94
|
+
* Tri-state per-column visibility map. `true` = visible, `false` =
|
|
95
|
+
* hidden, `undefined` = no preference (treated as visible). See
|
|
96
|
+
* `VisibilityState` for the design rationale.
|
|
97
|
+
*/
|
|
98
|
+
get columnVisibility(): VisibilityState;
|
|
99
|
+
set columnVisibility(v: VisibilityState);
|
|
100
|
+
/**
|
|
101
|
+
* `$derived` id->def lookup map. Re-built whenever `columnDefs`
|
|
102
|
+
* changes; reads on this getter inside `$derived` / `$effect`
|
|
103
|
+
* contexts therefore re-subscribe automatically without the caller
|
|
104
|
+
* having to thread `void this.columnDefs` reads themselves.
|
|
105
|
+
*
|
|
106
|
+
* Made `public` so the parent `TableContext` can pass it directly
|
|
107
|
+
* to other sub-contexts (`SortingState` reads it through the
|
|
108
|
+
* `getColumnDefsById` thunk, the per-row accessor in
|
|
109
|
+
* `createRow` / `rowsPromise` uses it for id-keyed lookups).
|
|
110
|
+
*/
|
|
111
|
+
readonly columnDefsById: ReadonlyMap<string, ColumnDef<T>>;
|
|
112
|
+
/**
|
|
113
|
+
* Columns in visual display order: pinned-left -> centre ->
|
|
114
|
+
* pinned-right, preserving memory order within each section.
|
|
115
|
+
* Excludes columns whose visibility is explicitly `false`.
|
|
116
|
+
*
|
|
117
|
+
* Cached as a `$derived` array (rebuilt only when `columnDefs`,
|
|
118
|
+
* `columnVisibility`, or `columnPinning` change). Phase-5 Group 1
|
|
119
|
+
* workorder P0 introduced this caching layer to avoid the
|
|
120
|
+
* O(columns) filter cost on every focus-arrow keystroke; see the
|
|
121
|
+
* paired `_visualColumnIndexById` below for the O(1) reverse-lookup
|
|
122
|
+
* map.
|
|
123
|
+
*
|
|
124
|
+
* Made `public` (with the underscore prefix preserved) so the
|
|
125
|
+
* parent `TableContext` can delegate its legacy `_visualColumns`
|
|
126
|
+
* field. Future consumers should read
|
|
127
|
+
* `tableContext._columnLayout.visualColumns` directly.
|
|
128
|
+
*/
|
|
129
|
+
readonly visualColumns: Array<ColumnDef<T>>;
|
|
130
|
+
/**
|
|
131
|
+
* Paired `visualColumns` id->index reverse-lookup map. Rebuilt in
|
|
132
|
+
* lockstep with `visualColumns`; addresses the O(1) requirement of
|
|
133
|
+
* `columnVisualIndex` (which is called on every focus-arrow press
|
|
134
|
+
* inside the keyboard nav loop).
|
|
135
|
+
*/
|
|
136
|
+
readonly visualColumnIndexById: ReadonlyMap<string, VisualColumnIndex>;
|
|
137
|
+
/**
|
|
138
|
+
* Returns the visual index of the column with the given id, or
|
|
139
|
+
* `-1` (branded as `VisualColumnIndex`) if the id is not in the
|
|
140
|
+
* current visible-column set. O(1) under the
|
|
141
|
+
* `visualColumnIndexById` cache.
|
|
142
|
+
*/
|
|
143
|
+
columnVisualIndex(id: string): VisualColumnIndex;
|
|
144
|
+
/**
|
|
145
|
+
* Applies an updater to the column-pinning state (left / right
|
|
146
|
+
* pins). No-op when column reordering is disabled at the table
|
|
147
|
+
* level. Mirrors the pre-extraction
|
|
148
|
+
* `TableContext.setColumnPinning` writer verbatim.
|
|
149
|
+
*/
|
|
150
|
+
readonly setColumnPinning: (updater: (state: ColumnPinningState) => ColumnPinningState) => void;
|
|
151
|
+
/**
|
|
152
|
+
* Re-normalises the per-def `.index` field so that pinned-left
|
|
153
|
+
* columns occupy the leading indices, unpinned (centre) columns
|
|
154
|
+
* the middle, and pinned-right columns the trailing indices.
|
|
155
|
+
* Returns the resulting array (sorted by the new index ordering).
|
|
156
|
+
*
|
|
157
|
+
* Pure with respect to `this._columnDefs` / `this._columnPinning`:
|
|
158
|
+
* mutates the per-def `.index` fields in place and returns a new
|
|
159
|
+
* array view. The parent uses this as a helper inside
|
|
160
|
+
* `reorderColumn` / `moveColumnTo` after rearranging the array
|
|
161
|
+
* so the memory-index brand stays consistent with the pin
|
|
162
|
+
* sections.
|
|
163
|
+
*/
|
|
164
|
+
readonly updateDefsBasedOnPinning: () => Array<ColumnDef<T>>;
|
|
165
|
+
/**
|
|
166
|
+
* Re-publishes the column-pinning map so its left / right entries
|
|
167
|
+
* are keyed by the current `columnDefs` ordering. Used by the
|
|
168
|
+
* parent's drag-drop and `moveColumnTo` flows after a reorder
|
|
169
|
+
* operation; preserves the pre-extraction
|
|
170
|
+
* `TableContext._setNewPinningState` contract verbatim.
|
|
171
|
+
*/
|
|
172
|
+
readonly setNewPinningState: () => void;
|
|
173
|
+
}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 6.3 god-object decomposition - sub-context that owns every
|
|
3
|
+
* column-layout concern previously held directly on `TableContext`:
|
|
4
|
+
*
|
|
5
|
+
* - `columnDefs` (the ordered array of column definitions),
|
|
6
|
+
* - `columnDefsById` (`$derived` id->def lookup map),
|
|
7
|
+
* - `columnPinning` / `columnSizing` / `columnVisibility` (the three
|
|
8
|
+
* per-column maps the consumer mutates through the public setters),
|
|
9
|
+
* - `_visualColumns` and `_visualColumnIndexById` (the cached visual
|
|
10
|
+
* display order plus the paired `Map<id, VisualColumnIndex>` that
|
|
11
|
+
* makes `columnVisualIndex` an O(1) lookup - Phase-5 Group 1
|
|
12
|
+
* workorder P0),
|
|
13
|
+
* - `columnVisualIndex(id)` (the public lookup),
|
|
14
|
+
* - `setColumnPinning(updater)` (delegating writer that respects the
|
|
15
|
+
* `allowColumnReordering` master gate).
|
|
16
|
+
*
|
|
17
|
+
* `TableContext` retains delegating getters / setters / methods for
|
|
18
|
+
* every legacy surface (`columnDefs`, `columnPinning`, `columnSizing`,
|
|
19
|
+
* `columnVisibility`, `columnDefsById`, `columnVisualIndex`,
|
|
20
|
+
* `_visualColumns`, `setColumnPinning`, etc.) so existing consumers
|
|
21
|
+
* need no migration. Future consumers can read `tableContext._columnLayout`
|
|
22
|
+
* directly once the migration is complete (see
|
|
23
|
+
* `src/stories/Concepts/TableContext-decomposition.mdx`).
|
|
24
|
+
*
|
|
25
|
+
* The `focusStartVisualColumn` / `focusEndVisualColumn` getters straddle
|
|
26
|
+
* column-layout and focus; the column-layout-side calculation
|
|
27
|
+
* (`columnVisualIndex` lookup) lives here, but the focus-side state
|
|
28
|
+
* (`focusStart`, `focusEnd`) stays on `TableContext` until the Phase 6.6
|
|
29
|
+
* `FocusState` extraction. The parent's `focusStartVisualColumn` getter
|
|
30
|
+
* therefore reads `this.focusStart?.id` and calls
|
|
31
|
+
* `this._columnLayout.columnVisualIndex(...)`.
|
|
32
|
+
*/
|
|
33
|
+
export class ColumnLayoutState {
|
|
34
|
+
_deps;
|
|
35
|
+
_columnDefs = $state([]);
|
|
36
|
+
_columnSizing = $state({});
|
|
37
|
+
_columnPinning = $state({});
|
|
38
|
+
_columnVisibility = $state({});
|
|
39
|
+
/**
|
|
40
|
+
* @param deps thunks the sub-context reads from the parent.
|
|
41
|
+
* Constructor-only - no implicit setup so the parent
|
|
42
|
+
* remains in control of effect ownership and lifecycle.
|
|
43
|
+
*/
|
|
44
|
+
constructor(deps) {
|
|
45
|
+
this._deps = deps;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The ordered array of column definitions. Memory order (declaration
|
|
49
|
+
* order) is preserved across reorder operations - drag-reorder
|
|
50
|
+
* mutates the per-def `.index` field but does not change the array
|
|
51
|
+
* identity until the consumer reassigns `columnDefs` wholesale.
|
|
52
|
+
*
|
|
53
|
+
* Setter accepts any array of `ColumnDef<T>`; the parent
|
|
54
|
+
* `TableContext` is responsible for index normalisation when
|
|
55
|
+
* applying drag-drop or preset switches (see `reorderColumn`,
|
|
56
|
+
* `moveColumnTo`, `setSelectedPreset`).
|
|
57
|
+
*/
|
|
58
|
+
get columnDefs() {
|
|
59
|
+
return this._columnDefs;
|
|
60
|
+
}
|
|
61
|
+
set columnDefs(v) {
|
|
62
|
+
this._columnDefs = v;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Per-column width state (pixels), keyed by column id. Persisted to
|
|
66
|
+
* localStorage as-is by `TableContext._updateLocalStorageSettings`.
|
|
67
|
+
* Setter accepts a full replacement object; per-key writes are
|
|
68
|
+
* handled by `autoResize` mutating in place (which is fine because
|
|
69
|
+
* the underlying `$state` slot is itself the proxy).
|
|
70
|
+
*/
|
|
71
|
+
get columnSizing() {
|
|
72
|
+
return this._columnSizing;
|
|
73
|
+
}
|
|
74
|
+
set columnSizing(v) {
|
|
75
|
+
this._columnSizing = v;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Per-column pin state (left / right). Setter is exposed publicly
|
|
79
|
+
* for direct assignment by the parent (e.g. `setSelectedPreset` and
|
|
80
|
+
* the init flow); the gated `setColumnPinning` updater below honours
|
|
81
|
+
* the `allowColumnReordering` master gate.
|
|
82
|
+
*/
|
|
83
|
+
get columnPinning() {
|
|
84
|
+
return this._columnPinning;
|
|
85
|
+
}
|
|
86
|
+
set columnPinning(v) {
|
|
87
|
+
this._columnPinning = v;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Tri-state per-column visibility map. `true` = visible, `false` =
|
|
91
|
+
* hidden, `undefined` = no preference (treated as visible). See
|
|
92
|
+
* `VisibilityState` for the design rationale.
|
|
93
|
+
*/
|
|
94
|
+
get columnVisibility() {
|
|
95
|
+
return this._columnVisibility;
|
|
96
|
+
}
|
|
97
|
+
set columnVisibility(v) {
|
|
98
|
+
this._columnVisibility = v;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* `$derived` id->def lookup map. Re-built whenever `columnDefs`
|
|
102
|
+
* changes; reads on this getter inside `$derived` / `$effect`
|
|
103
|
+
* contexts therefore re-subscribe automatically without the caller
|
|
104
|
+
* having to thread `void this.columnDefs` reads themselves.
|
|
105
|
+
*
|
|
106
|
+
* Made `public` so the parent `TableContext` can pass it directly
|
|
107
|
+
* to other sub-contexts (`SortingState` reads it through the
|
|
108
|
+
* `getColumnDefsById` thunk, the per-row accessor in
|
|
109
|
+
* `createRow` / `rowsPromise` uses it for id-keyed lookups).
|
|
110
|
+
*/
|
|
111
|
+
columnDefsById = $derived(
|
|
112
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
113
|
+
new Map(this._columnDefs.map((it) => [it.id, it])));
|
|
114
|
+
/**
|
|
115
|
+
* Columns in visual display order: pinned-left -> centre ->
|
|
116
|
+
* pinned-right, preserving memory order within each section.
|
|
117
|
+
* Excludes columns whose visibility is explicitly `false`.
|
|
118
|
+
*
|
|
119
|
+
* Cached as a `$derived` array (rebuilt only when `columnDefs`,
|
|
120
|
+
* `columnVisibility`, or `columnPinning` change). Phase-5 Group 1
|
|
121
|
+
* workorder P0 introduced this caching layer to avoid the
|
|
122
|
+
* O(columns) filter cost on every focus-arrow keystroke; see the
|
|
123
|
+
* paired `_visualColumnIndexById` below for the O(1) reverse-lookup
|
|
124
|
+
* map.
|
|
125
|
+
*
|
|
126
|
+
* Made `public` (with the underscore prefix preserved) so the
|
|
127
|
+
* parent `TableContext` can delegate its legacy `_visualColumns`
|
|
128
|
+
* field. Future consumers should read
|
|
129
|
+
* `tableContext._columnLayout.visualColumns` directly.
|
|
130
|
+
*/
|
|
131
|
+
visualColumns = $derived.by(() => {
|
|
132
|
+
const visibility = this._columnVisibility;
|
|
133
|
+
const pinLeft = this._columnPinning.left;
|
|
134
|
+
const pinRight = this._columnPinning.right;
|
|
135
|
+
const visible = this._columnDefs.filter((it) => visibility[it.id] !== false);
|
|
136
|
+
return [
|
|
137
|
+
...visible.filter((it) => pinLeft?.has(it.id)),
|
|
138
|
+
...visible.filter((it) => !pinLeft?.has(it.id) && !pinRight?.has(it.id)),
|
|
139
|
+
...visible.filter((it) => pinRight?.has(it.id)),
|
|
140
|
+
];
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* Paired `visualColumns` id->index reverse-lookup map. Rebuilt in
|
|
144
|
+
* lockstep with `visualColumns`; addresses the O(1) requirement of
|
|
145
|
+
* `columnVisualIndex` (which is called on every focus-arrow press
|
|
146
|
+
* inside the keyboard nav loop).
|
|
147
|
+
*/
|
|
148
|
+
visualColumnIndexById = $derived.by(() => {
|
|
149
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
150
|
+
const map = new Map();
|
|
151
|
+
const cols = this.visualColumns;
|
|
152
|
+
for (let i = 0; i < cols.length; i++) {
|
|
153
|
+
map.set(cols[i].id, i);
|
|
154
|
+
}
|
|
155
|
+
return map;
|
|
156
|
+
});
|
|
157
|
+
/**
|
|
158
|
+
* Returns the visual index of the column with the given id, or
|
|
159
|
+
* `-1` (branded as `VisualColumnIndex`) if the id is not in the
|
|
160
|
+
* current visible-column set. O(1) under the
|
|
161
|
+
* `visualColumnIndexById` cache.
|
|
162
|
+
*/
|
|
163
|
+
columnVisualIndex(id) {
|
|
164
|
+
return this.visualColumnIndexById.get(id) ?? -1;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Applies an updater to the column-pinning state (left / right
|
|
168
|
+
* pins). No-op when column reordering is disabled at the table
|
|
169
|
+
* level. Mirrors the pre-extraction
|
|
170
|
+
* `TableContext.setColumnPinning` writer verbatim.
|
|
171
|
+
*/
|
|
172
|
+
setColumnPinning = (updater) => {
|
|
173
|
+
if (!this._deps.getAllowColumnReordering()) {
|
|
174
|
+
if (this._deps.getDebug()) {
|
|
175
|
+
console.log('setColumnPinning: ignored (allowColumnReordering=false)');
|
|
176
|
+
}
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
this._columnPinning = updater(this._columnPinning);
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* Re-normalises the per-def `.index` field so that pinned-left
|
|
183
|
+
* columns occupy the leading indices, unpinned (centre) columns
|
|
184
|
+
* the middle, and pinned-right columns the trailing indices.
|
|
185
|
+
* Returns the resulting array (sorted by the new index ordering).
|
|
186
|
+
*
|
|
187
|
+
* Pure with respect to `this._columnDefs` / `this._columnPinning`:
|
|
188
|
+
* mutates the per-def `.index` fields in place and returns a new
|
|
189
|
+
* array view. The parent uses this as a helper inside
|
|
190
|
+
* `reorderColumn` / `moveColumnTo` after rearranging the array
|
|
191
|
+
* so the memory-index brand stays consistent with the pin
|
|
192
|
+
* sections.
|
|
193
|
+
*/
|
|
194
|
+
updateDefsBasedOnPinning = () => {
|
|
195
|
+
const leftDefs = [];
|
|
196
|
+
const midDefs = [];
|
|
197
|
+
const rightDefs = [];
|
|
198
|
+
this._columnDefs.forEach((def) => {
|
|
199
|
+
if (this._columnPinning.left?.has(def.id)) {
|
|
200
|
+
leftDefs.push(def);
|
|
201
|
+
}
|
|
202
|
+
else if (this._columnPinning.right?.has(def.id)) {
|
|
203
|
+
rightDefs.push(def);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
midDefs.push(def);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
leftDefs.sort((a, b) => a.index - b.index);
|
|
210
|
+
midDefs.sort((a, b) => a.index - b.index);
|
|
211
|
+
rightDefs.sort((a, b) => a.index - b.index);
|
|
212
|
+
const allDefs = leftDefs.concat(midDefs, rightDefs);
|
|
213
|
+
allDefs.forEach((def, index) => {
|
|
214
|
+
def.index = index;
|
|
215
|
+
});
|
|
216
|
+
return allDefs;
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* Re-publishes the column-pinning map so its left / right entries
|
|
220
|
+
* are keyed by the current `columnDefs` ordering. Used by the
|
|
221
|
+
* parent's drag-drop and `moveColumnTo` flows after a reorder
|
|
222
|
+
* operation; preserves the pre-extraction
|
|
223
|
+
* `TableContext._setNewPinningState` contract verbatim.
|
|
224
|
+
*/
|
|
225
|
+
setNewPinningState = () => {
|
|
226
|
+
this._columnPinning = {
|
|
227
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
228
|
+
left: new Map(this._columnPinning.left &&
|
|
229
|
+
this._columnDefs
|
|
230
|
+
.filter((col) => {
|
|
231
|
+
return this._columnPinning.left?.has(col.id);
|
|
232
|
+
})
|
|
233
|
+
.map((col, index) => [col.id, index])),
|
|
234
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
235
|
+
right: new Map(this._columnPinning.right &&
|
|
236
|
+
this._columnDefs
|
|
237
|
+
.filter((col) => this._columnPinning.right?.has(col.id))
|
|
238
|
+
.map((col, index) => [col.id, index])),
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
}
|