@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
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-Table persistence configuration. Every field defaults to `true`. Pass
|
|
3
|
+
* the literal `false` to disable persistence entirely (no storage reads, no
|
|
4
|
+
* storage writes); pass an object to enable a subset.
|
|
5
|
+
*
|
|
6
|
+
* Storage namespace is `scoria-table:<userId|'anon'>:<name>:<suffix>` as
|
|
7
|
+
* established in Phase 5 Group 6. The `name` segment is the Table's `name`
|
|
8
|
+
* option passed to `createTable`; the `userId` segment is whatever
|
|
9
|
+
* `getUserId()` returns at the time of the read or write, or the literal
|
|
10
|
+
* `'anon'` when it returns undefined.
|
|
11
|
+
*/
|
|
12
|
+
export type TablePersistence = boolean | TablePersistenceObject;
|
|
13
|
+
/** Object form of `TablePersistence`. Use when enabling some layers and
|
|
14
|
+
* disabling others; the boolean form is the all-or-nothing shortcut. */
|
|
15
|
+
export interface TablePersistenceObject {
|
|
16
|
+
/** Saved column presets (visibility / pinning / sizing snapshots). Default
|
|
17
|
+
* true. */
|
|
18
|
+
presets?: boolean;
|
|
19
|
+
/** User-controlled table settings (compact mode, alternate row colours,
|
|
20
|
+
* single-click editing, etc.). Default true. */
|
|
21
|
+
settings?: boolean;
|
|
22
|
+
/** Last-selected page size. Default true. */
|
|
23
|
+
pageSize?: boolean;
|
|
24
|
+
/** Currently-expanded sub-table id (when the table has `ExpandDef`
|
|
25
|
+
* columns). Default true. */
|
|
26
|
+
activeExpand?: boolean;
|
|
27
|
+
/** Custom storage backend. Useful for tests; defaults to `localStorage`
|
|
28
|
+
* for presets and settings, `sessionStorage` for active state. */
|
|
29
|
+
storage?: TableStorageAdapter;
|
|
30
|
+
}
|
|
31
|
+
/** Storage backend hook for tests and custom persistence. Mirrors the subset
|
|
32
|
+
* of the `Storage` interface scoria actually uses; matches the existing
|
|
33
|
+
* internal contract so swapping a real backend in is a single-line change. */
|
|
34
|
+
export interface TableStorageAdapter {
|
|
35
|
+
getItem(key: string): string | null;
|
|
36
|
+
setItem(key: string, value: string): void;
|
|
37
|
+
removeItem(key: string): void;
|
|
38
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { SvelteMap } from 'svelte/reactivity';
|
|
2
|
+
import type { CellCoordinates } from '../Coordinates/CellCoordinates.js';
|
|
3
|
+
import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
|
|
4
|
+
import type { ColumnPinningState } from '../Columns/ColumnPinningState.js';
|
|
5
|
+
import type { ColumnSizingState } from '../Columns/ColumnSizingState.js';
|
|
6
|
+
import type { FilterMode } from '../Filtering/FilterMode.js';
|
|
7
|
+
import type { Primitive } from '../Context/TableInitOptions.js';
|
|
8
|
+
import type { SortingState } from '../DataRepository/SortingState.js';
|
|
9
|
+
import type { TableSettings } from '../Context/TableSettings.js';
|
|
10
|
+
import type { VisibilityState } from '../Columns/VisibilityState.js';
|
|
11
|
+
import type { ColumnSpec } from './ColumnSpec.js';
|
|
12
|
+
/**
|
|
13
|
+
* Public sub-API surface of a `Table<TRow, TRowId>` instance. Each interface
|
|
14
|
+
* here is the canonical consumer-facing replacement for one of the Phase 6
|
|
15
|
+
* internal sub-contexts (`_selection`, `_filtering`, `_columnLayout`,
|
|
16
|
+
* `_preferences`, `_focus`, `_sorting`, plus pagination and clipboard which
|
|
17
|
+
* stayed on `TableContext` proper).
|
|
18
|
+
*
|
|
19
|
+
* The interfaces are intentionally narrower than the underlying internals.
|
|
20
|
+
* Methods that exist purely for internal lifecycle reasons (boot-time
|
|
21
|
+
* hydration, abort-controller plumbing, the per-row mutation rebind path)
|
|
22
|
+
* are not surfaced here. If a consumer use case appears that needs one of
|
|
23
|
+
* those, surface it explicitly on the matching sub-API rather than exposing
|
|
24
|
+
* the internal symbol.
|
|
25
|
+
*
|
|
26
|
+
* Every field is reactive: reading triggers the Svelte 5 reactivity graph
|
|
27
|
+
* just as it does for the underlying `$state`/`$derived` slot on the
|
|
28
|
+
* implementation. Writes go through the listed setter methods.
|
|
29
|
+
*/
|
|
30
|
+
export interface SelectionApi<TRow extends object, TRowId extends Primitive> {
|
|
31
|
+
/** Live selection map. Reactive; identical reference whether selection is
|
|
32
|
+
* internally owned or externally bound. */
|
|
33
|
+
readonly map: SvelteMap<TRowId, TRow>;
|
|
34
|
+
/** Number of selected rows. Reactive convenience read. */
|
|
35
|
+
readonly size: number;
|
|
36
|
+
/** Per-row toggle. Honours `isSelectable`; no-ops when false. */
|
|
37
|
+
toggle(row: TRow): void;
|
|
38
|
+
/** Set or clear selection for a single row. */
|
|
39
|
+
set(rowId: TRowId, row: TRow): void;
|
|
40
|
+
delete(rowId: TRowId): void;
|
|
41
|
+
clear(): void;
|
|
42
|
+
values(): IterableIterator<TRow>;
|
|
43
|
+
keys(): IterableIterator<TRowId>;
|
|
44
|
+
entries(): IterableIterator<[TRowId, TRow]>;
|
|
45
|
+
/** Selects every row on the current page that passes `isSelectable`. */
|
|
46
|
+
selectAll(): void;
|
|
47
|
+
/** Map of selected rows whose `isValid` returned `Validity.Invalid`. */
|
|
48
|
+
readonly invalidMap: SvelteMap<TRowId, TRow>;
|
|
49
|
+
/** Convenience: `invalidMap.size > 0`. */
|
|
50
|
+
readonly hasInvalid: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface FilteringApi<TRow extends object> {
|
|
53
|
+
/** Current column-filter state. Reactive. */
|
|
54
|
+
readonly state: ColumnFiltersState;
|
|
55
|
+
/** Set or clear the filter for a single column. */
|
|
56
|
+
set(columnId: keyof TRow & string, value: unknown): void;
|
|
57
|
+
/** Reset every column's filter to its default. */
|
|
58
|
+
reset(): void;
|
|
59
|
+
/** Change the filter mode (e.g. `'contains'` vs `'starts-with'`) for a
|
|
60
|
+
* string column or `'between'` for a number / date column. */
|
|
61
|
+
setMode(columnId: keyof TRow & string, mode: FilterMode): void;
|
|
62
|
+
/** Whether the quick-filter input row is visible. */
|
|
63
|
+
showQuickFilter: boolean;
|
|
64
|
+
/** Whether the table is showing only selected rows. */
|
|
65
|
+
showSelectedOnly: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface SortingApi<TRow extends object> {
|
|
68
|
+
/** Current sort state. Reactive. */
|
|
69
|
+
readonly state: SortingState;
|
|
70
|
+
/** Set the sort for a single column. When `desc` is omitted, ascending. */
|
|
71
|
+
setSort(columnId: keyof TRow & string, desc?: boolean): void;
|
|
72
|
+
/** Clear sorting on every column. */
|
|
73
|
+
clear(): void;
|
|
74
|
+
}
|
|
75
|
+
export interface PaginationApi {
|
|
76
|
+
readonly page: number;
|
|
77
|
+
readonly pageSize: number;
|
|
78
|
+
readonly totalPages: number;
|
|
79
|
+
readonly totalRows: number;
|
|
80
|
+
next(): void;
|
|
81
|
+
prev(): void;
|
|
82
|
+
goTo(page: number): void;
|
|
83
|
+
setPageSize(size: number): void;
|
|
84
|
+
}
|
|
85
|
+
export interface ColumnsApi<TRow extends object> {
|
|
86
|
+
/** Ordered column specs in memory order. */
|
|
87
|
+
readonly specs: ReadonlyArray<ColumnSpec<TRow>>;
|
|
88
|
+
/** Lookup map by column id. */
|
|
89
|
+
readonly byId: ReadonlyMap<string, ColumnSpec<TRow>>;
|
|
90
|
+
/** Visual order of column ids (pinned-left -> centre -> pinned-right,
|
|
91
|
+
* excluding hidden columns). */
|
|
92
|
+
readonly visualOrder: ReadonlyArray<string>;
|
|
93
|
+
/** Current visibility map. */
|
|
94
|
+
readonly visibility: VisibilityState;
|
|
95
|
+
/** Current pinning map. */
|
|
96
|
+
readonly pinning: ColumnPinningState;
|
|
97
|
+
/** Current sizing map. */
|
|
98
|
+
readonly sizing: ColumnSizingState;
|
|
99
|
+
setVisibility(columnId: string, visible: boolean): void;
|
|
100
|
+
setPinning(columnId: string, side: 'left' | 'right' | 'none'): void;
|
|
101
|
+
resize(columnId: string, width: number): void;
|
|
102
|
+
reorder(fromIndex: number, toIndex: number): void;
|
|
103
|
+
}
|
|
104
|
+
export interface FocusApi<TRow extends object> {
|
|
105
|
+
/** Start of the focused range, or `undefined` when no cell is focused. */
|
|
106
|
+
readonly start: CellCoordinates | undefined;
|
|
107
|
+
/** End of the focused range (equals `start` for single-cell focus). */
|
|
108
|
+
readonly end: CellCoordinates | undefined;
|
|
109
|
+
/** Whether the focused cell is currently in edit mode. */
|
|
110
|
+
readonly isEditing: boolean;
|
|
111
|
+
/** Move focus to a specific cell. */
|
|
112
|
+
moveTo(row: number, column: number): void;
|
|
113
|
+
/** Clear focus. */
|
|
114
|
+
clear(): void;
|
|
115
|
+
/** Phantom; carries the row type through the API so generic inference
|
|
116
|
+
* flows from `Table<TRow, ...>` into focus callbacks. Never read. */
|
|
117
|
+
readonly _row?: TRow;
|
|
118
|
+
}
|
|
119
|
+
/** Stored preset shape. Mirrors the existing internal `JSONColumnDefSet`. */
|
|
120
|
+
export interface SavedPreset {
|
|
121
|
+
readonly name: string;
|
|
122
|
+
readonly savedAt: string;
|
|
123
|
+
readonly columns: ReadonlyArray<{
|
|
124
|
+
readonly id: string;
|
|
125
|
+
readonly visible: boolean;
|
|
126
|
+
readonly width: number;
|
|
127
|
+
readonly pinned: 'left' | 'right' | 'none';
|
|
128
|
+
}>;
|
|
129
|
+
}
|
|
130
|
+
export interface PreferencesApi<TRow extends object> {
|
|
131
|
+
/** Saved column presets. Reactive. */
|
|
132
|
+
readonly presets: ReadonlyArray<SavedPreset>;
|
|
133
|
+
/** Currently-applied preset, or `undefined`. */
|
|
134
|
+
readonly selectedPreset: SavedPreset | undefined;
|
|
135
|
+
savePreset(name: string): void;
|
|
136
|
+
applyPreset(preset: SavedPreset): void;
|
|
137
|
+
deletePreset(name: string): void;
|
|
138
|
+
/** Live table settings (compact mode, etc). Reading via `.settings.x`
|
|
139
|
+
* is reactive; writing via the per-field setters below persists. */
|
|
140
|
+
readonly settings: Readonly<TableSettings>;
|
|
141
|
+
compact: boolean;
|
|
142
|
+
alternateRowColours: boolean;
|
|
143
|
+
singleClickEditing: boolean;
|
|
144
|
+
changeColourOnHover: boolean;
|
|
145
|
+
copyWithHeaders: boolean;
|
|
146
|
+
commaSeparatedCopy: boolean;
|
|
147
|
+
/** Phantom; carries the row type. */
|
|
148
|
+
readonly _row?: TRow;
|
|
149
|
+
}
|
|
150
|
+
export interface ClipboardApi<TRow extends object> {
|
|
151
|
+
/** Copy the current selection to the clipboard. */
|
|
152
|
+
copySelection(): Promise<void>;
|
|
153
|
+
/** Copy the currently-highlighted range. */
|
|
154
|
+
copyHighlighted(): Promise<void>;
|
|
155
|
+
/** Copy a single cell. */
|
|
156
|
+
copyCell(row: TRow, columnId: string): Promise<void>;
|
|
157
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel re-export of every public Table API type. Imported by
|
|
3
|
+
* `src/lib/index.ts` and by sub-deliverable 1.2's `ColumnFactory`
|
|
4
|
+
* runtime module.
|
|
5
|
+
*
|
|
6
|
+
* Phase 1 is type-only; no runtime symbols flow through this barrel.
|
|
7
|
+
*/
|
|
8
|
+
export type { AnyEditEvent } from './AnyEditEvent.js';
|
|
9
|
+
export type { BaseColumnOptions } from './BaseColumnOptions.js';
|
|
10
|
+
export type { ColumnFactory } from './ColumnFactory.js';
|
|
11
|
+
export type { ActionsColumnOptions, BubbleColumnOptions, CheckboxColumnOptions, DateColumnOptions, DisplayColumnOptions, DisplayModalProps, ExpandColumnOptions, FilterOnlyColumnOptions, NumberColumnOptions, ProgressColumnOptions, QueryColumnOptions, RowAction, RowSelectionColumnOptions, SelectColumnOptions, TextColumnOptions, ValidityColumnOptions, } from './ColumnOptions.js';
|
|
12
|
+
export type { ColumnKind, ColumnSpec } from './ColumnSpec.js';
|
|
13
|
+
export type { CreateTableOptions } from './CreateTableOptions.js';
|
|
14
|
+
export type { BooleanKeyOf, DateKeyOf, LiteralRowIdKey, NumberKeyOf, StringKeyOf, } from './KeyConstraints.js';
|
|
15
|
+
export type { CustomRowSource, LocalRowSource, RemoteRowSource, RowFetchRequest, RowFetchResponse, RowSource, } from './RowSource.js';
|
|
16
|
+
export type { SelectionOptions } from './SelectionOptions.js';
|
|
17
|
+
export type { Table } from './Table.js';
|
|
18
|
+
export type { TableInitialState } from './TableInitialState.js';
|
|
19
|
+
export type { TablePersistence, TablePersistenceObject, TableStorageAdapter, } from './TablePersistence.js';
|
|
20
|
+
export type { ClipboardApi, ColumnsApi, FilteringApi, FocusApi, PaginationApi, PreferencesApi, SavedPreset, SelectionApi, SortingApi, } from './TableSubApis.js';
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placement of the table's toolbar. Set via `TableInitOptions.toolbar`
|
|
3
|
+
* (defaults to `Right` when the option is omitted).
|
|
4
|
+
*/
|
|
1
5
|
export const ToolbarPosition = {
|
|
2
6
|
None: 'None',
|
|
3
7
|
Left: 'Left',
|
|
4
8
|
Top: 'Top',
|
|
5
|
-
Right: 'Right'
|
|
9
|
+
Right: 'Right',
|
|
6
10
|
};
|
|
7
11
|
Object.freeze(ToolbarPosition);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `createTable` is the entry point for the new public Table API. It accepts
|
|
3
|
+
* a single options object and returns a structured `Table<TRow, TRowId>`
|
|
4
|
+
* instance.
|
|
5
|
+
*
|
|
6
|
+
* Phase 1 implementation strategy: this function is a thin facade. It
|
|
7
|
+
* unwraps the column specs, constructs the existing internal repository
|
|
8
|
+
* (`LocalTableDataRepository` for `kind: 'local'`, the new
|
|
9
|
+
* `BuiltInRemoteRepository` for `kind: 'remote'`, an adapter for
|
|
10
|
+
* `kind: 'custom'`), invokes `TableContext.init`, wires the per-column
|
|
11
|
+
* edit handlers and the optional `onAnyEdit` observer, then returns a
|
|
12
|
+
* structured `Table` instance whose sub-APIs are facades over the Phase 6
|
|
13
|
+
* sub-contexts. Phase 2 will inline the internals.
|
|
14
|
+
*
|
|
15
|
+
* The structured `Table` instance is also exposed as the `_context` field
|
|
16
|
+
* for the Phase 1 `<Table>` component which still reads from a
|
|
17
|
+
* `TableContext` via `setContext`. Phase 2 reshapes `<Table>` to consume
|
|
18
|
+
* the structured instance directly.
|
|
19
|
+
*/
|
|
20
|
+
import { TableContext } from './Types/Context/TableContext.svelte.js';
|
|
21
|
+
import type { Primitive } from './Types/Context/TableInitOptions.js';
|
|
22
|
+
import type { CreateTableOptions } from './Types/Public/CreateTableOptions.js';
|
|
23
|
+
import type { CustomRowSource, LocalRowSource, RemoteRowSource } from './Types/Public/RowSource.js';
|
|
24
|
+
import type { Table } from './Types/Public/Table.js';
|
|
25
|
+
/**
|
|
26
|
+
* Construct a new Table from the supplied options. Returns the structured
|
|
27
|
+
* `Table<TRow, TRowId>` instance. Mount the rendering component via
|
|
28
|
+
* `<Table {table} />` (Phase 1 also accepts the legacy
|
|
29
|
+
* `<Table tableContext={table._context} />` form).
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const table = createTable<PickWave>({
|
|
34
|
+
* name: 'pick-waves',
|
|
35
|
+
* rowId: 'id',
|
|
36
|
+
* rows: { kind: 'local', source: dataRef },
|
|
37
|
+
* columns: (col) => [
|
|
38
|
+
* col.rowSelection(),
|
|
39
|
+
* col.text({ id: 'reference', header: 'Reference' }),
|
|
40
|
+
* col.number({ id: 'lineCount', header: 'Lines' }),
|
|
41
|
+
* ],
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function createTable<TRow extends object, TRowId extends Primitive = string>(options: CreateTableOptions<TRow, TRowId>): Table<TRow, TRowId> & {
|
|
46
|
+
readonly _context: TableContext<TRow, TRowId>;
|
|
47
|
+
};
|
|
48
|
+
/** Helper that stamps `kind: 'local'` for type-safe row-source construction. */
|
|
49
|
+
export declare function localRows<TRow extends object>(options: Omit<LocalRowSource<TRow>, 'kind'>): LocalRowSource<TRow>;
|
|
50
|
+
/** Helper that stamps `kind: 'remote'`. */
|
|
51
|
+
export declare function remoteRows<TRow extends object>(options: Omit<RemoteRowSource<TRow>, 'kind'>): RemoteRowSource<TRow>;
|
|
52
|
+
/** Helper that stamps `kind: 'custom'`. */
|
|
53
|
+
export declare function customRows<TRow extends object>(options: Omit<CustomRowSource<TRow>, 'kind'>): CustomRowSource<TRow>;
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `createTable` is the entry point for the new public Table API. It accepts
|
|
3
|
+
* a single options object and returns a structured `Table<TRow, TRowId>`
|
|
4
|
+
* instance.
|
|
5
|
+
*
|
|
6
|
+
* Phase 1 implementation strategy: this function is a thin facade. It
|
|
7
|
+
* unwraps the column specs, constructs the existing internal repository
|
|
8
|
+
* (`LocalTableDataRepository` for `kind: 'local'`, the new
|
|
9
|
+
* `BuiltInRemoteRepository` for `kind: 'remote'`, an adapter for
|
|
10
|
+
* `kind: 'custom'`), invokes `TableContext.init`, wires the per-column
|
|
11
|
+
* edit handlers and the optional `onAnyEdit` observer, then returns a
|
|
12
|
+
* structured `Table` instance whose sub-APIs are facades over the Phase 6
|
|
13
|
+
* sub-contexts. Phase 2 will inline the internals.
|
|
14
|
+
*
|
|
15
|
+
* The structured `Table` instance is also exposed as the `_context` field
|
|
16
|
+
* for the Phase 1 `<Table>` component which still reads from a
|
|
17
|
+
* `TableContext` via `setContext`. Phase 2 reshapes `<Table>` to consume
|
|
18
|
+
* the structured instance directly.
|
|
19
|
+
*/
|
|
20
|
+
import { devCatch, refWrapper } from '../../Helpers/Helpers.svelte.js';
|
|
21
|
+
import { BuiltInRemoteRepository, CustomRemoteRepository, } from './Types/DataRepository/BuiltInRemoteRepository.svelte.js';
|
|
22
|
+
import { LocalTableDataRepository } from './Types/DataRepository/LocalTableDataRepository.svelte.js';
|
|
23
|
+
import { TableContext } from './Types/Context/TableContext.svelte.js';
|
|
24
|
+
import { ToolbarPosition } from './Types/Toolbar/ToolbarPosition.js';
|
|
25
|
+
import { createColumnFactory, unwrapColumnSpec } from './ColumnFactory.svelte.js';
|
|
26
|
+
import { makeClipboardApi, makeColumnsApi, makeFilteringApi, makeFocusApi, makePaginationApi, makePreferencesApi, makeSelectionApi, makeSortingApi, } from './SubApis.svelte.js';
|
|
27
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
28
|
+
// Public entry point
|
|
29
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
30
|
+
/**
|
|
31
|
+
* Construct a new Table from the supplied options. Returns the structured
|
|
32
|
+
* `Table<TRow, TRowId>` instance. Mount the rendering component via
|
|
33
|
+
* `<Table {table} />` (Phase 1 also accepts the legacy
|
|
34
|
+
* `<Table tableContext={table._context} />` form).
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* const table = createTable<PickWave>({
|
|
39
|
+
* name: 'pick-waves',
|
|
40
|
+
* rowId: 'id',
|
|
41
|
+
* rows: { kind: 'local', source: dataRef },
|
|
42
|
+
* columns: (col) => [
|
|
43
|
+
* col.rowSelection(),
|
|
44
|
+
* col.text({ id: 'reference', header: 'Reference' }),
|
|
45
|
+
* col.number({ id: 'lineCount', header: 'Lines' }),
|
|
46
|
+
* ],
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export function createTable(options) {
|
|
51
|
+
// ── 1. Resolve rowId ────────────────────────────────────────────
|
|
52
|
+
const rowIdFn = resolveRowId(options.rowId);
|
|
53
|
+
// ── 2. Run the column-builder closure ───────────────────────────
|
|
54
|
+
const factory = createColumnFactory();
|
|
55
|
+
const specs = options.columns(factory);
|
|
56
|
+
// Build a Map<columnId, ColumnSpec> for the ColumnsApi, plus a
|
|
57
|
+
// Map<columnId, perColumnOnEdit> for the onEditCell dispatcher.
|
|
58
|
+
// These are constructed once during init and never reassigned reactively,
|
|
59
|
+
// so a plain Map is correct here.
|
|
60
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
61
|
+
const specsById = new Map();
|
|
62
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
63
|
+
const editHandlers = new Map();
|
|
64
|
+
const defs = specs.map((spec) => {
|
|
65
|
+
specsById.set(spec.id, spec);
|
|
66
|
+
const internal = unwrapColumnSpec(spec);
|
|
67
|
+
if (internal.onEdit) {
|
|
68
|
+
editHandlers.set(spec.id, internal.onEdit);
|
|
69
|
+
}
|
|
70
|
+
return internal.def;
|
|
71
|
+
});
|
|
72
|
+
const defsWrapper = { defs };
|
|
73
|
+
// ── 3. Construct the repository for the chosen row source ──────
|
|
74
|
+
const repository = makeRepository(options.name, options.rows, options.getUserId);
|
|
75
|
+
// ── 4. Build the `onEditCell` wrapper ──────────────────────────
|
|
76
|
+
const onEditCell = makeOnEditCell(editHandlers, options.onAnyEdit);
|
|
77
|
+
// ── 5. Translate the new options to TableInitOptions ───────────
|
|
78
|
+
const initOptions = {
|
|
79
|
+
selectionExtractor: rowIdFn,
|
|
80
|
+
getUserId: options.getUserId ?? (() => undefined),
|
|
81
|
+
allowCopy: options.allowCopy,
|
|
82
|
+
enableResize: options.allowResize,
|
|
83
|
+
allowColumnReordering: options.allowReorder,
|
|
84
|
+
allowQuickFiltering: options.allowQuickFilter,
|
|
85
|
+
showQuickFilterByDefault: options.showQuickFilterByDefault,
|
|
86
|
+
allowAdvancedFiltering: options.allowAdvancedFilter,
|
|
87
|
+
toolbar: translateToolbar(options.toolbar),
|
|
88
|
+
displayFooter: options.showFooter,
|
|
89
|
+
onEditCell,
|
|
90
|
+
debug: options.debug,
|
|
91
|
+
};
|
|
92
|
+
// ── 6. Build the TableContext ──────────────────────────────────
|
|
93
|
+
const ctx = TableContext.init(defsWrapper, options.name, repository, initOptions);
|
|
94
|
+
// ── 7. Wire selection.bindTo (Phase 1 uses the existing setter) ─
|
|
95
|
+
if (options.selection && options.selection.mode !== 'none' && options.selection.bindTo) {
|
|
96
|
+
ctx.setSelectionMap(options.selection.bindTo);
|
|
97
|
+
}
|
|
98
|
+
// ── 8. Apply initialState ───────────────────────────────────────
|
|
99
|
+
if (options.initialState) {
|
|
100
|
+
applyInitialState(ctx, options.initialState);
|
|
101
|
+
}
|
|
102
|
+
// ── 9. Build the structured Table instance ─────────────────────
|
|
103
|
+
const table = Object.freeze({
|
|
104
|
+
get name() {
|
|
105
|
+
return ctx.tableName;
|
|
106
|
+
},
|
|
107
|
+
get rows() {
|
|
108
|
+
return ctx.currentPageData;
|
|
109
|
+
},
|
|
110
|
+
get totalRows() {
|
|
111
|
+
return ctx.dataRepo.totalRows;
|
|
112
|
+
},
|
|
113
|
+
get isLoading() {
|
|
114
|
+
return ctx.dataRepo.isLoading ?? false;
|
|
115
|
+
},
|
|
116
|
+
columns: makeColumnsApi(ctx, specsById),
|
|
117
|
+
selection: makeSelectionApi(ctx),
|
|
118
|
+
filtering: makeFilteringApi(ctx),
|
|
119
|
+
sorting: makeSortingApi(ctx),
|
|
120
|
+
pagination: makePaginationApi(ctx),
|
|
121
|
+
focus: makeFocusApi(ctx),
|
|
122
|
+
preferences: makePreferencesApi(ctx),
|
|
123
|
+
clipboard: makeClipboardApi(ctx),
|
|
124
|
+
reload() {
|
|
125
|
+
return ctx.dataRepo.reload?.() ?? Promise.resolve();
|
|
126
|
+
},
|
|
127
|
+
destroy() {
|
|
128
|
+
// Phase 1: no teardown hook exists on TableContext. Phase 2 will
|
|
129
|
+
// introduce one when <Table> consumes the structured instance.
|
|
130
|
+
},
|
|
131
|
+
_context: ctx,
|
|
132
|
+
});
|
|
133
|
+
return table;
|
|
134
|
+
}
|
|
135
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
136
|
+
// Row-source helpers (nominal `kind` stampers)
|
|
137
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
138
|
+
/** Helper that stamps `kind: 'local'` for type-safe row-source construction. */
|
|
139
|
+
export function localRows(options) {
|
|
140
|
+
return { kind: 'local', ...options };
|
|
141
|
+
}
|
|
142
|
+
/** Helper that stamps `kind: 'remote'`. */
|
|
143
|
+
export function remoteRows(options) {
|
|
144
|
+
return { kind: 'remote', ...options };
|
|
145
|
+
}
|
|
146
|
+
/** Helper that stamps `kind: 'custom'`. */
|
|
147
|
+
export function customRows(options) {
|
|
148
|
+
return { kind: 'custom', ...options };
|
|
149
|
+
}
|
|
150
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
151
|
+
// Internals
|
|
152
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
153
|
+
/** Resolve the `rowId` option (function form or literal-key form) to a
|
|
154
|
+
* uniform `(row) => TRowId | Promise<TRowId>` function. */
|
|
155
|
+
function resolveRowId(rowId) {
|
|
156
|
+
if (typeof rowId === 'function') {
|
|
157
|
+
return rowId;
|
|
158
|
+
}
|
|
159
|
+
const key = rowId;
|
|
160
|
+
return (row) => row[key];
|
|
161
|
+
}
|
|
162
|
+
/** Construct the underlying `IDataRepository<TRow>` for the chosen row
|
|
163
|
+
* source variant. */
|
|
164
|
+
function makeRepository(tableName, source, getUserId) {
|
|
165
|
+
const userIdFn = getUserId ?? (() => undefined);
|
|
166
|
+
switch (source.kind) {
|
|
167
|
+
case 'local': {
|
|
168
|
+
const raw = source.source;
|
|
169
|
+
const dataRef = Array.isArray(raw)
|
|
170
|
+
? refWrapper(Array.from(raw))
|
|
171
|
+
: raw;
|
|
172
|
+
return new LocalTableDataRepository(tableName, dataRef, userIdFn);
|
|
173
|
+
}
|
|
174
|
+
case 'remote': {
|
|
175
|
+
const repo = new BuiltInRemoteRepository({
|
|
176
|
+
tableName,
|
|
177
|
+
getUserId: userIdFn,
|
|
178
|
+
endpoint: source.endpoint,
|
|
179
|
+
method: source.method,
|
|
180
|
+
defaultFilters: source.defaultFilters,
|
|
181
|
+
responseTransform: source.responseTransform,
|
|
182
|
+
filterEncoding: source.filterEncoding,
|
|
183
|
+
headers: source.headers,
|
|
184
|
+
reloadDebounce: source.reloadDebounce,
|
|
185
|
+
});
|
|
186
|
+
// Fire the first fetch immediately so the table shows real data
|
|
187
|
+
// on mount. Errors route to devCatch inside the repository.
|
|
188
|
+
void repo.reload();
|
|
189
|
+
return repo;
|
|
190
|
+
}
|
|
191
|
+
case 'custom': {
|
|
192
|
+
const repo = new CustomRemoteRepository(tableName, userIdFn, source.fetch);
|
|
193
|
+
void repo.reload();
|
|
194
|
+
return repo;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/** Build the `onEditCell` wrapper. Dispatches to the per-column `onEdit`
|
|
199
|
+
* (from the column factory) first; if that resolves successfully and the
|
|
200
|
+
* consumer supplied a top-level `onAnyEdit`, fires that next. A per-column
|
|
201
|
+
* callback that throws or rejects suppresses the corresponding
|
|
202
|
+
* `onAnyEdit`. */
|
|
203
|
+
function makeOnEditCell(editHandlers, onAnyEdit) {
|
|
204
|
+
if (editHandlers.size === 0 && !onAnyEdit) {
|
|
205
|
+
return () => {
|
|
206
|
+
/* no-op: no edit handlers wired */
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return async (item, coords, value) => {
|
|
210
|
+
const handler = editHandlers.get(coords.id);
|
|
211
|
+
if (handler) {
|
|
212
|
+
try {
|
|
213
|
+
await handler(item, value, coords);
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
devCatch(e);
|
|
217
|
+
// Suppress onAnyEdit on per-column failure (documented behaviour).
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (onAnyEdit) {
|
|
222
|
+
try {
|
|
223
|
+
await onAnyEdit({ column: coords.id, value, row: item, coords });
|
|
224
|
+
}
|
|
225
|
+
catch (e) {
|
|
226
|
+
devCatch(e);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/** Translate the public `toolbar` string into the internal
|
|
232
|
+
* `ToolbarPosition` enum value. */
|
|
233
|
+
function translateToolbar(toolbar) {
|
|
234
|
+
if (!toolbar) {
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
switch (toolbar) {
|
|
238
|
+
case 'top':
|
|
239
|
+
return ToolbarPosition.Top;
|
|
240
|
+
case 'right':
|
|
241
|
+
return ToolbarPosition.Right;
|
|
242
|
+
case 'left':
|
|
243
|
+
return ToolbarPosition.Left;
|
|
244
|
+
case 'none':
|
|
245
|
+
return ToolbarPosition.None;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** Apply the `initialState` options to a freshly-constructed TableContext.
|
|
249
|
+
* Phase 1 wires the subset of fields the existing sub-contexts already
|
|
250
|
+
* support; Phase 2 may extend the surface. */
|
|
251
|
+
function applyInitialState(ctx, state) {
|
|
252
|
+
if (state.sortBy && state.sortBy.length > 0) {
|
|
253
|
+
ctx.dataRepo.updateSorting?.(state.sortBy.map((s) => ({ id: s.id, desc: s.desc ?? false })));
|
|
254
|
+
}
|
|
255
|
+
if (state.filters && state.filters.size > 0) {
|
|
256
|
+
for (const [columnId, value] of state.filters) {
|
|
257
|
+
ctx.dataRepo.filterBy(columnId, value);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (state.columnVisibility) {
|
|
261
|
+
ctx._columnLayout.columnVisibility = {
|
|
262
|
+
...ctx._columnLayout.columnVisibility,
|
|
263
|
+
...state.columnVisibility,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
if (state.compact !== undefined) {
|
|
267
|
+
ctx.setIsCompact(state.compact);
|
|
268
|
+
}
|
|
269
|
+
}
|