@lavalogic/scoria 0.35.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -58
- package/dist/Components/AccordionGroup.svelte +46 -42
- package/dist/Components/AccordionGroupButton.svelte +106 -106
- package/dist/Components/AccordionGroupButtonProps.d.ts +27 -8
- package/dist/Components/AccordionGroupProps.d.ts +10 -2
- package/dist/Components/Action.svelte +137 -139
- package/dist/Components/ActionProps.d.ts +23 -3
- package/dist/Components/AlertModal.svelte +176 -125
- 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 +72 -50
- 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 +198 -190
- 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 +36 -29
- package/dist/Components/Base/Snippets.svelte.d.ts +5 -1
- package/dist/Components/BigRadioSet.svelte +39 -30
- package/dist/Components/BigRadioSetProps.d.ts +17 -1
- package/dist/Components/Bubble.svelte +110 -77
- package/dist/Components/Bubble.svelte.d.ts +23 -2
- package/dist/Components/BubbleProps.d.ts +55 -4
- package/dist/Components/Button.svelte +209 -197
- package/dist/Components/ButtonProps.d.ts +66 -1
- package/dist/Components/Checkbox.svelte +100 -72
- 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 +114 -83
- package/dist/Components/CollapsibleCardProps.d.ts +22 -1
- package/dist/Components/Contexts/ContextMenu.svelte +178 -157
- package/dist/Components/Contexts/ContextMenu.svelte.d.ts +26 -0
- package/dist/Components/Contexts/ContextMenuDivider.svelte +19 -11
- package/dist/Components/Contexts/ContextMenuDivider.svelte.d.ts +9 -0
- package/dist/Components/Contexts/ContextMenuOption.svelte +66 -57
- 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 +88 -64
- package/dist/Components/Contexts/Toast.svelte.d.ts +14 -0
- package/dist/Components/Contexts/ToastContainer.svelte +68 -49
- 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 +47 -36
- package/dist/Components/Contexts/Tooltip.svelte.d.ts +10 -0
- package/dist/Components/DataMatrixIcon.svelte +113 -42
- package/dist/Components/DataMatrixIconProps.d.ts +73 -1
- package/dist/Components/DateInput.svelte +144 -109
- package/dist/Components/DateInput.svelte.d.ts +1 -1
- package/dist/Components/DateOnlyInputProps.d.ts +31 -5
- package/dist/Components/DatePicker.svelte +301 -313
- package/dist/Components/DatePickerProps.d.ts +18 -1
- package/dist/Components/DateTimeInputProps.d.ts +30 -5
- package/dist/Components/DesktopModal.svelte +90 -119
- package/dist/Components/DesktopModalProps.d.ts +5 -4
- package/dist/Components/Dial.svelte +213 -151
- package/dist/Components/DialProps.d.ts +74 -2
- package/dist/Components/DimensionInput.svelte +171 -185
- package/dist/Components/DimensionInput.svelte.d.ts +1 -1
- package/dist/Components/DimensionInputProps.d.ts +39 -4
- package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -107
- package/dist/Components/DragMenu/DragMenuHolderProps.d.ts +30 -1
- package/dist/Components/DragMenu/DraggableCard.svelte +77 -41
- package/dist/Components/DragMenu/DraggableCardProps.d.ts +27 -1
- package/dist/Components/FileCard.svelte +24 -20
- package/dist/Components/FileCardProps.d.ts +17 -1
- package/dist/Components/FileUpload.svelte +236 -196
- package/dist/Components/FileUploadProps.d.ts +34 -4
- package/dist/Components/GridInput.svelte +201 -191
- package/dist/Components/GridInput.svelte.d.ts +5 -5
- package/dist/Components/GridInputProps.d.ts +4 -1
- package/dist/Components/GridInputSet.svelte +31 -24
- package/dist/Components/GridInputSet.svelte.d.ts +5 -5
- package/dist/Components/GridInputSetProps.d.ts +4 -2
- package/dist/Components/HorizontalTabGroup.svelte +81 -79
- package/dist/Components/HorizontalTabGroupButton.svelte +51 -103
- package/dist/Components/HorizontalTabGroupProps.d.ts +15 -2
- package/dist/Components/Icon.svelte +144 -103
- package/dist/Components/IconProps.d.ts +54 -6
- package/dist/Components/Icons.d.ts +8 -0
- package/dist/Components/Icons.js +591 -572
- package/dist/Components/LoadingAnimation.svelte +39 -39
- 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 +48 -50
- 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 +28 -30
- 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 +250 -255
- 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 +238 -226
- 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 +115 -110
- 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 +44 -35
- package/dist/Components/Nav/NavServiceMenuListProps.d.ts +25 -1
- package/dist/Components/Nav/NavTab.svelte +62 -91
- 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 +101 -92
- package/dist/Components/Nav/ServicesNav.svelte +96 -70
- 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 +155 -145
- package/dist/Components/NumberInputProps.d.ts +37 -0
- package/dist/Components/PageHeading.svelte +25 -36
- 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 +85 -73
- 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 +36 -25
- package/dist/Components/PortalProps.d.ts +20 -1
- package/dist/Components/ProgressBubble.svelte +129 -84
- package/dist/Components/ProgressBubbleProps.d.ts +23 -2
- package/dist/Components/QuerySelect.svelte +384 -440
- 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 +268 -290
- 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 +70 -120
- package/dist/Components/StepForm.svelte +147 -147
- package/dist/Components/StepFormProps.d.ts +16 -2
- package/dist/Components/Switch.svelte +84 -47
- 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 +697 -641
- 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 +68 -34
- 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 +66 -56
- 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 +515 -182
- 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 +79 -49
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponentProps.d.ts +12 -0
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +203 -191
- 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 +150 -115
- 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 +149 -129
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +149 -126
- 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 +142 -108
- 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 +87 -72
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +11 -0
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +148 -137
- 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 +159 -144
- 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 +279 -249
- 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 +249 -370
- 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 +291 -354
- 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 +201 -189
- 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 +263 -325
- 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 +230 -381
- 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 +187 -177
- 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 +331 -263
- 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 +198 -81
- 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 +41 -39
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -28
- package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
- package/dist/Components/Table/Headers/TableHead.svelte +434 -294
- 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 +154 -96
- package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +112 -99
- 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 +545 -556
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/FilterPanel.svelte +409 -51
- package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +30 -77
- package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
- package/dist/Components/Table/Misc/SidePanel.svelte +35 -32
- 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 +315 -306
- 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 +126 -157
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/TableSidebar.svelte +158 -177
- package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +147 -81
- package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -100
- 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 +132 -88
- 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 +694 -519
- 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/Test/TestContextConsumer.svelte +13 -13
- package/dist/Components/TextArea.svelte +127 -108
- package/dist/Components/TextAreaProps.d.ts +37 -0
- package/dist/Components/TextInput.svelte +166 -147
- package/dist/Components/TextInputProps.d.ts +58 -1
- package/dist/Components/ThreeStateRadio.svelte +140 -143
- package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
- package/dist/Components/Touch/BoolCard.svelte +45 -52
- 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 +209 -217
- 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 +59 -52
- package/dist/Components/Touch/EditCardProps.d.ts +21 -0
- package/dist/Components/Touch/InfoCard.svelte +35 -28
- package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
- package/dist/Components/Touch/InfoTextCard.svelte +28 -21
- package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
- package/dist/Components/Touch/ModalExplanation.svelte +17 -20
- 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 +225 -268
- package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
- package/dist/Components/Touch/NumberModal.svelte +79 -69
- package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
- package/dist/Components/Touch/PlusMinusCard.svelte +48 -52
- 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 +123 -105
- package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
- package/dist/Components/Touch/SummaryCard.svelte +107 -65
- package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
- package/dist/Components/Touch/TextAreaModal.svelte +95 -86
- package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
- package/dist/Components/Touch/TextModal.svelte +106 -123
- package/dist/Components/Touch/TextModalProps.d.ts +28 -1
- package/dist/Components/Touch/TouchCard.svelte +34 -72
- package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
- package/dist/Components/Touch/TouchModal.svelte +265 -259
- package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
- package/dist/Components/Touch/UtilityButton.svelte +116 -98
- package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
- package/dist/Components/VerticalTabGroup.svelte +80 -102
- package/dist/Components/VerticalTabGroupButton.svelte +59 -98
- 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 +19 -10
- package/dist/Helpers/Datamatrix.js +291 -2
- package/dist/Helpers/Helpers.svelte.d.ts +252 -17
- package/dist/Helpers/Helpers.svelte.js +271 -60
- 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 +35 -34
- 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/_basics.scss +12 -12
- package/dist/scss/_colours.scss +134 -134
- package/dist/scss/_mixins.scss +3300 -3016
- package/dist/scss/_motion.scss +57 -0
- package/dist/scss/_sizing.scss +85 -69
- package/dist/scss/_transitions.scss +8 -8
- 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 +6 -2
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import { dev } from '$app/environment';
|
|
1
2
|
import { getErrorMessage } from '../Helpers/Helpers.svelte.js';
|
|
2
3
|
import { Validity } from '../Types/Internal/Validity.js';
|
|
3
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Narrows an unknown value to a wrapped-HTTP-response shape:
|
|
6
|
+
* `{ payload: { data: string } }`. Used by {@link ToastContext.toast}
|
|
7
|
+
* so that consumers can pass an unwrapped service response straight
|
|
8
|
+
* into the toast layer without an explicit cast.
|
|
9
|
+
*/
|
|
4
10
|
function isWrappedResponse(message) {
|
|
5
11
|
return (message != null &&
|
|
6
12
|
typeof message == 'object' &&
|
|
@@ -10,23 +16,73 @@ function isWrappedResponse(message) {
|
|
|
10
16
|
'data' in message.payload &&
|
|
11
17
|
typeof message.payload.data == 'string');
|
|
12
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Narrows an object to {@link ToastMessage}: requires both a `result`
|
|
21
|
+
* field that is a recognised {@link Validity} value and a `message`
|
|
22
|
+
* field of type `string`. Previously this guard accepted any object
|
|
23
|
+
* with a `result` property; tightened to actually validate the shape.
|
|
24
|
+
*/
|
|
25
|
+
function isToastMessage(message) {
|
|
26
|
+
if (!('result' in message) || !('message' in message)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const m = message;
|
|
30
|
+
if (typeof m.message !== 'string') {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return (m.result === Validity.Invalid ||
|
|
34
|
+
m.result === Validity.Valid ||
|
|
35
|
+
m.result === Validity.Info ||
|
|
36
|
+
m.result === Validity.Warning ||
|
|
37
|
+
m.result === Validity.Neutral);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Default per-toast lifetime in milliseconds. Mirrors the value
|
|
41
|
+
* referenced from `ToastMessage.timeout` JSDoc.
|
|
42
|
+
*/
|
|
43
|
+
const DEFAULT_TOAST_TIMEOUT_MS = 10000;
|
|
44
|
+
/**
|
|
45
|
+
* Application context driving the global `ToastContainer` host.
|
|
46
|
+
*
|
|
47
|
+
* The id counter is an instance field so multiple contexts (e.g.
|
|
48
|
+
* tests or HMR-reloaded hosts) do not collide. Verbose copy output
|
|
49
|
+
* (stack trace, cause chain) is gated on `$app/environment.dev`
|
|
50
|
+
* so production users cannot leak backend internals to the
|
|
51
|
+
* clipboard.
|
|
52
|
+
*/
|
|
13
53
|
export class ToastContext {
|
|
54
|
+
/** Stable lookup symbol used by `getContext`/`setContext`. */
|
|
14
55
|
static identifier = Symbol();
|
|
56
|
+
idIncrement = 0;
|
|
15
57
|
_toasts = $state([]);
|
|
58
|
+
/**
|
|
59
|
+
* The currently visible toasts. Returned as a `ReadonlyArray` so
|
|
60
|
+
* consumers cannot mutate the internal queue; use {@link ToastContext.toast}
|
|
61
|
+
* to add and `IdentifiableToastMessage.close` to remove.
|
|
62
|
+
*/
|
|
16
63
|
get toasts() {
|
|
17
64
|
return this._toasts;
|
|
18
65
|
}
|
|
19
66
|
set toasts(v) {
|
|
20
|
-
this._toasts = v;
|
|
67
|
+
this._toasts = [...v];
|
|
21
68
|
}
|
|
69
|
+
// The handles map is non-reactive bookkeeping; SvelteMap would just add overhead.
|
|
70
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
71
|
+
timeoutHandles = new Map();
|
|
72
|
+
/**
|
|
73
|
+
* Queues a toast for display. Accepts `string`, `ReadonlyArray<string>`,
|
|
74
|
+
* `Error`, {@link ToastMessage}, the wrapped HTTP response shape, or
|
|
75
|
+
* anything else (rendered as "Unknown Error"). `null` / `undefined`
|
|
76
|
+
* are silently dropped.
|
|
77
|
+
*/
|
|
22
78
|
toast = (message) => {
|
|
23
79
|
if (message == null) {
|
|
24
80
|
return;
|
|
25
81
|
}
|
|
26
|
-
const id = idIncrement++;
|
|
82
|
+
const id = this.idIncrement++;
|
|
27
83
|
const newMessage = (() => {
|
|
28
84
|
const closeable = true;
|
|
29
|
-
const timeout =
|
|
85
|
+
const timeout = DEFAULT_TOAST_TIMEOUT_MS;
|
|
30
86
|
if (Array.isArray(message)) {
|
|
31
87
|
return {
|
|
32
88
|
result: Validity.Info,
|
|
@@ -68,8 +124,8 @@ export class ToastContext {
|
|
|
68
124
|
},
|
|
69
125
|
getVerbose: () => getErrorMessage(message, {
|
|
70
126
|
includeUUID: true,
|
|
71
|
-
includeCause:
|
|
72
|
-
includeStack:
|
|
127
|
+
includeCause: dev,
|
|
128
|
+
includeStack: dev,
|
|
73
129
|
}),
|
|
74
130
|
};
|
|
75
131
|
}
|
|
@@ -86,18 +142,18 @@ export class ToastContext {
|
|
|
86
142
|
},
|
|
87
143
|
};
|
|
88
144
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
}
|
|
145
|
+
if (isWrappedResponse(message)) {
|
|
146
|
+
return {
|
|
147
|
+
result: Validity.Info,
|
|
148
|
+
closeable,
|
|
149
|
+
timeout,
|
|
150
|
+
message: message.payload.data,
|
|
151
|
+
id,
|
|
152
|
+
close: () => {
|
|
153
|
+
this.dismiss(id);
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
101
157
|
}
|
|
102
158
|
return {
|
|
103
159
|
result: Validity.Invalid,
|
|
@@ -108,17 +164,33 @@ export class ToastContext {
|
|
|
108
164
|
close: () => {
|
|
109
165
|
this.dismiss(id);
|
|
110
166
|
},
|
|
111
|
-
getVerbose: () => getErrorMessage(message
|
|
167
|
+
getVerbose: () => getErrorMessage(message, {
|
|
168
|
+
includeUUID: true,
|
|
169
|
+
includeCause: dev,
|
|
170
|
+
includeStack: dev,
|
|
171
|
+
}),
|
|
112
172
|
};
|
|
113
173
|
})();
|
|
114
|
-
this.
|
|
174
|
+
this._toasts.push(newMessage);
|
|
115
175
|
if (newMessage.timeout) {
|
|
116
|
-
setTimeout(() => {
|
|
176
|
+
const handle = setTimeout(() => {
|
|
177
|
+
this.timeoutHandles.delete(newMessage.id);
|
|
117
178
|
this.dismiss(newMessage.id);
|
|
118
179
|
}, newMessage.timeout);
|
|
180
|
+
this.timeoutHandles.set(newMessage.id, handle);
|
|
119
181
|
}
|
|
120
182
|
};
|
|
183
|
+
/**
|
|
184
|
+
* Removes the toast with the given id from the visible queue and
|
|
185
|
+
* clears any pending auto-dismiss timer so the closure does not
|
|
186
|
+
* leak.
|
|
187
|
+
*/
|
|
121
188
|
dismiss(id) {
|
|
189
|
+
const handle = this.timeoutHandles.get(id);
|
|
190
|
+
if (handle !== undefined) {
|
|
191
|
+
clearTimeout(handle);
|
|
192
|
+
this.timeoutHandles.delete(id);
|
|
193
|
+
}
|
|
122
194
|
const index = this._toasts.findIndex((it) => it.id === id);
|
|
123
195
|
if (index != -1) {
|
|
124
196
|
const [removed] = this._toasts.splice(index, 1);
|
|
@@ -126,6 +198,3 @@ export class ToastContext {
|
|
|
126
198
|
}
|
|
127
199
|
}
|
|
128
200
|
}
|
|
129
|
-
function isToastMessage(message) {
|
|
130
|
-
return 'result' in message;
|
|
131
|
-
}
|
|
@@ -1,31 +1,98 @@
|
|
|
1
1
|
import type { Delay } from '../Delay/Delay.js';
|
|
2
2
|
import { Side } from '../Types/Internal/Side.js';
|
|
3
|
+
/**
|
|
4
|
+
* Application context driving the global `Tooltip` host.
|
|
5
|
+
*
|
|
6
|
+
* The visual host (`Components/Contexts/Tooltip.svelte`, mounted by
|
|
7
|
+
* `Components/Base/ContextWrapper.svelte`) listens to `x`, `y`,
|
|
8
|
+
* `text`, `anchor`, and `isShowingTooltip` and renders the tooltip
|
|
9
|
+
* accordingly. Consumers (Button, Action, NavTab, ...) call
|
|
10
|
+
* {@link TooltipContext.showTooltip} on `mouseenter`/`focus` and
|
|
11
|
+
* {@link TooltipContext.hideTooltip} on `mouseleave`/`blur`/`click`
|
|
12
|
+
* and on component unmount.
|
|
13
|
+
*
|
|
14
|
+
* Conforms to the canonical scoria context pattern:
|
|
15
|
+
* - `static readonly identifier = Symbol()`.
|
|
16
|
+
* - Private runes-backed fields exposed via getter / private setter.
|
|
17
|
+
*
|
|
18
|
+
* Stale-tooltip cleanup contract: consumers are responsible for
|
|
19
|
+
* calling `hideTooltip` in their unmount handler when they have
|
|
20
|
+
* called `showTooltip` and the user has not yet moved focus or
|
|
21
|
+
* mouse away. Without this, a component that unmounts mid-hover
|
|
22
|
+
* leaves its tooltip visible indefinitely.
|
|
23
|
+
*/
|
|
3
24
|
export declare class TooltipContext {
|
|
25
|
+
/** Stable lookup symbol used by `getContext`/`setContext`. */
|
|
4
26
|
static readonly identifier: unique symbol;
|
|
5
27
|
private _x;
|
|
28
|
+
/** Tooltip x-coordinate in viewport-relative CSS pixels. */
|
|
6
29
|
get x(): number;
|
|
7
30
|
private set x(value);
|
|
8
31
|
private _y;
|
|
32
|
+
/** Tooltip y-coordinate in viewport-relative CSS pixels. */
|
|
9
33
|
get y(): number;
|
|
10
34
|
private set y(value);
|
|
11
35
|
private _text;
|
|
36
|
+
/**
|
|
37
|
+
* The text currently shown in the tooltip. `undefined` when the
|
|
38
|
+
* tooltip is hidden.
|
|
39
|
+
*/
|
|
12
40
|
get text(): string | undefined;
|
|
13
41
|
private set text(value);
|
|
14
42
|
private _anchor;
|
|
43
|
+
/** The side of the anchor element the tooltip arrow points to. */
|
|
15
44
|
get anchor(): Side;
|
|
16
45
|
private set anchor(value);
|
|
17
46
|
private _isShowingTooltip;
|
|
47
|
+
/**
|
|
48
|
+
* Whether the visual host should render. The host treats this as
|
|
49
|
+
* a strict "draw / do not draw" toggle.
|
|
50
|
+
*/
|
|
18
51
|
get isShowingTooltip(): boolean;
|
|
19
52
|
private set isShowingTooltip(value);
|
|
53
|
+
/**
|
|
54
|
+
* Tracks the pending show-tooltip debounce timer. Initialised to
|
|
55
|
+
* the sentinel value `undefined`; `clearTimeout(undefined)` is a
|
|
56
|
+
* documented no-op.
|
|
57
|
+
*/
|
|
20
58
|
private timeout;
|
|
59
|
+
/**
|
|
60
|
+
* Requests that the tooltip be shown with the given text, anchor
|
|
61
|
+
* side, and bounding rectangle. The actual draw is delayed by
|
|
62
|
+
* `props.delay` (typically `Delay.Default`) so transient hovers
|
|
63
|
+
* do not flash a tooltip.
|
|
64
|
+
*
|
|
65
|
+
* Any pending show-timer is cleared before scheduling the new
|
|
66
|
+
* one, so rapid hover transitions cancel cleanly.
|
|
67
|
+
*/
|
|
21
68
|
readonly showTooltip: (props: TooltipProps) => void;
|
|
22
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Hides the tooltip if its current text matches the given value.
|
|
71
|
+
* The text-compare is a structural race-guard: when two
|
|
72
|
+
* consumers race show/hide on different labels, the wrong
|
|
73
|
+
* consumer's `hideTooltip` does not clobber the right
|
|
74
|
+
* consumer's `showTooltip`.
|
|
75
|
+
*
|
|
76
|
+
* Note: a future migration may switch this to a handle-based
|
|
77
|
+
* API returning an `Unsubscriber` from `showTooltip`. Tracked
|
|
78
|
+
* in the TooltipContext workorder.
|
|
79
|
+
*/
|
|
80
|
+
readonly hideTooltip: (value: string) => void;
|
|
23
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Configuration accepted by {@link TooltipContext.showTooltip}.
|
|
84
|
+
*/
|
|
24
85
|
export interface TooltipProps {
|
|
86
|
+
/** The visible tooltip text. */
|
|
25
87
|
text: string;
|
|
88
|
+
/** Bounding rect of the anchor element (in viewport-relative pixels). */
|
|
26
89
|
rect: DOMRect;
|
|
90
|
+
/** The side of the anchor the arrow points to. */
|
|
27
91
|
arrow: Side;
|
|
92
|
+
/** Optional show-delay in milliseconds. */
|
|
28
93
|
delay?: Delay;
|
|
94
|
+
/** Optional additional x-offset applied after anchor maths. */
|
|
29
95
|
offsetX?: number;
|
|
96
|
+
/** Optional additional y-offset applied after anchor maths. */
|
|
30
97
|
offsetY?: number;
|
|
31
98
|
}
|
|
@@ -1,7 +1,38 @@
|
|
|
1
1
|
import { Side } from '../Types/Internal/Side.js';
|
|
2
|
+
/**
|
|
3
|
+
* CSS arrow-half-width in pixels. Matches the `border-width` set
|
|
4
|
+
* on the `.arrow` pseudo-element in `Tooltip.svelte`. Centralised
|
|
5
|
+
* here so the layout maths and the visual styling cannot drift
|
|
6
|
+
* silently. When updating, also update the matching value in
|
|
7
|
+
* `Components/Contexts/Tooltip.svelte`.
|
|
8
|
+
*/
|
|
9
|
+
const ARROW_HALF_WIDTH_PX = 6;
|
|
10
|
+
/**
|
|
11
|
+
* Application context driving the global `Tooltip` host.
|
|
12
|
+
*
|
|
13
|
+
* The visual host (`Components/Contexts/Tooltip.svelte`, mounted by
|
|
14
|
+
* `Components/Base/ContextWrapper.svelte`) listens to `x`, `y`,
|
|
15
|
+
* `text`, `anchor`, and `isShowingTooltip` and renders the tooltip
|
|
16
|
+
* accordingly. Consumers (Button, Action, NavTab, ...) call
|
|
17
|
+
* {@link TooltipContext.showTooltip} on `mouseenter`/`focus` and
|
|
18
|
+
* {@link TooltipContext.hideTooltip} on `mouseleave`/`blur`/`click`
|
|
19
|
+
* and on component unmount.
|
|
20
|
+
*
|
|
21
|
+
* Conforms to the canonical scoria context pattern:
|
|
22
|
+
* - `static readonly identifier = Symbol()`.
|
|
23
|
+
* - Private runes-backed fields exposed via getter / private setter.
|
|
24
|
+
*
|
|
25
|
+
* Stale-tooltip cleanup contract: consumers are responsible for
|
|
26
|
+
* calling `hideTooltip` in their unmount handler when they have
|
|
27
|
+
* called `showTooltip` and the user has not yet moved focus or
|
|
28
|
+
* mouse away. Without this, a component that unmounts mid-hover
|
|
29
|
+
* leaves its tooltip visible indefinitely.
|
|
30
|
+
*/
|
|
2
31
|
export class TooltipContext {
|
|
32
|
+
/** Stable lookup symbol used by `getContext`/`setContext`. */
|
|
3
33
|
static identifier = Symbol();
|
|
4
34
|
_x = $state(0);
|
|
35
|
+
/** Tooltip x-coordinate in viewport-relative CSS pixels. */
|
|
5
36
|
get x() {
|
|
6
37
|
return this._x;
|
|
7
38
|
}
|
|
@@ -9,6 +40,7 @@ export class TooltipContext {
|
|
|
9
40
|
this._x = v;
|
|
10
41
|
}
|
|
11
42
|
_y = $state(0);
|
|
43
|
+
/** Tooltip y-coordinate in viewport-relative CSS pixels. */
|
|
12
44
|
get y() {
|
|
13
45
|
return this._y;
|
|
14
46
|
}
|
|
@@ -16,6 +48,10 @@ export class TooltipContext {
|
|
|
16
48
|
this._y = v;
|
|
17
49
|
}
|
|
18
50
|
_text = $state();
|
|
51
|
+
/**
|
|
52
|
+
* The text currently shown in the tooltip. `undefined` when the
|
|
53
|
+
* tooltip is hidden.
|
|
54
|
+
*/
|
|
19
55
|
get text() {
|
|
20
56
|
return this._text;
|
|
21
57
|
}
|
|
@@ -23,6 +59,7 @@ export class TooltipContext {
|
|
|
23
59
|
this._text = v;
|
|
24
60
|
}
|
|
25
61
|
_anchor = $state(Side.Top);
|
|
62
|
+
/** The side of the anchor element the tooltip arrow points to. */
|
|
26
63
|
get anchor() {
|
|
27
64
|
return this._anchor;
|
|
28
65
|
}
|
|
@@ -30,27 +67,41 @@ export class TooltipContext {
|
|
|
30
67
|
this._anchor = v;
|
|
31
68
|
}
|
|
32
69
|
_isShowingTooltip = $state(false);
|
|
70
|
+
/**
|
|
71
|
+
* Whether the visual host should render. The host treats this as
|
|
72
|
+
* a strict "draw / do not draw" toggle.
|
|
73
|
+
*/
|
|
33
74
|
get isShowingTooltip() {
|
|
34
75
|
return this._isShowingTooltip;
|
|
35
76
|
}
|
|
36
77
|
set isShowingTooltip(v) {
|
|
37
78
|
this._isShowingTooltip = v;
|
|
38
79
|
}
|
|
39
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Tracks the pending show-tooltip debounce timer. Initialised to
|
|
82
|
+
* the sentinel value `undefined`; `clearTimeout(undefined)` is a
|
|
83
|
+
* documented no-op.
|
|
84
|
+
*/
|
|
85
|
+
timeout = undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Requests that the tooltip be shown with the given text, anchor
|
|
88
|
+
* side, and bounding rectangle. The actual draw is delayed by
|
|
89
|
+
* `props.delay` (typically `Delay.Default`) so transient hovers
|
|
90
|
+
* do not flash a tooltip.
|
|
91
|
+
*
|
|
92
|
+
* Any pending show-timer is cleared before scheduling the new
|
|
93
|
+
* one, so rapid hover transitions cancel cleanly.
|
|
94
|
+
*/
|
|
40
95
|
showTooltip = (props) => {
|
|
41
96
|
clearTimeout(this.timeout);
|
|
42
|
-
if (this.isShowingTooltip) {
|
|
43
|
-
this.isShowingTooltip = false;
|
|
44
|
-
this.text = undefined;
|
|
45
|
-
}
|
|
46
97
|
this.text = props.text;
|
|
47
98
|
this.anchor = props.arrow;
|
|
48
99
|
const totalOffsetX = (props.offsetX ?? 0) +
|
|
49
100
|
(props.arrow === Side.Top || props.arrow === Side.Bottom
|
|
50
101
|
? props.rect.width / 2
|
|
51
102
|
: props.arrow === Side.Right
|
|
52
|
-
? -
|
|
53
|
-
: props.rect.width +
|
|
103
|
+
? -ARROW_HALF_WIDTH_PX
|
|
104
|
+
: props.rect.width + ARROW_HALF_WIDTH_PX);
|
|
54
105
|
const totalOffsetY = (props.offsetY ?? 0) +
|
|
55
106
|
(props.arrow === Side.Left || props.arrow === Side.Right
|
|
56
107
|
? props.rect.height / 2
|
|
@@ -68,9 +119,21 @@ export class TooltipContext {
|
|
|
68
119
|
this.isShowingTooltip = true;
|
|
69
120
|
}
|
|
70
121
|
};
|
|
122
|
+
/**
|
|
123
|
+
* Hides the tooltip if its current text matches the given value.
|
|
124
|
+
* The text-compare is a structural race-guard: when two
|
|
125
|
+
* consumers race show/hide on different labels, the wrong
|
|
126
|
+
* consumer's `hideTooltip` does not clobber the right
|
|
127
|
+
* consumer's `showTooltip`.
|
|
128
|
+
*
|
|
129
|
+
* Note: a future migration may switch this to a handle-based
|
|
130
|
+
* API returning an `Unsubscriber` from `showTooltip`. Tracked
|
|
131
|
+
* in the TooltipContext workorder.
|
|
132
|
+
*/
|
|
71
133
|
hideTooltip = (value) => {
|
|
72
134
|
if (this.text === value) {
|
|
73
135
|
clearTimeout(this.timeout);
|
|
136
|
+
this.timeout = undefined;
|
|
74
137
|
this.isShowingTooltip = false;
|
|
75
138
|
this.text = undefined;
|
|
76
139
|
}
|
|
@@ -1,16 +1,65 @@
|
|
|
1
|
-
export type StringCallback = (value: string) => boolean | Promise<boolean>;
|
|
2
1
|
import type { Unsubscriber } from '../Types/Internal/Misc.js';
|
|
2
|
+
/**
|
|
3
|
+
* Callback signature accepted by
|
|
4
|
+
* {@link UntypedInputContext.registerListener}. Returns - or
|
|
5
|
+
* resolves to - `true` to stop propagation, `false` to continue
|
|
6
|
+
* the chain.
|
|
7
|
+
*/
|
|
8
|
+
export type UntypedInputListener = (value: string) => boolean | Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Legacy alias for {@link UntypedInputListener}. Prefer
|
|
11
|
+
* `UntypedInputListener` in new code; this re-export is kept for
|
|
12
|
+
* backwards compatibility with existing consumers.
|
|
13
|
+
*/
|
|
14
|
+
export type StringCallback = UntypedInputListener;
|
|
15
|
+
/**
|
|
16
|
+
* Application context that buffers global keystrokes so a hardware
|
|
17
|
+
* barcode scanner (which delivers each character as a synthesised
|
|
18
|
+
* `keydown` and terminates with Enter) can be treated as a single
|
|
19
|
+
* "command" without occupying a visible focusable input.
|
|
20
|
+
*
|
|
21
|
+
* Security model:
|
|
22
|
+
* - Treats any sequence of keydowns terminated by `Enter`, while
|
|
23
|
+
* focus is not inside an `INPUT`/`TEXTAREA`/`BUTTON`/`A`, as a
|
|
24
|
+
* trusted command.
|
|
25
|
+
* - Synthetic events (`e.isTrusted === false`) are ignored to
|
|
26
|
+
* blunt the easiest attack vector.
|
|
27
|
+
* - Listeners are run from most-recently registered to oldest,
|
|
28
|
+
* and may short-circuit by returning `true`.
|
|
29
|
+
*/
|
|
3
30
|
export declare class UntypedInputContext {
|
|
4
|
-
private debug;
|
|
5
|
-
|
|
31
|
+
private readonly debug;
|
|
32
|
+
/** Stable lookup symbol used by `getContext`/`setContext`. */
|
|
6
33
|
static readonly identifier: unique symbol;
|
|
34
|
+
/**
|
|
35
|
+
* @param debug - When `true`, internal state transitions are
|
|
36
|
+
* logged via `console.log`.
|
|
37
|
+
*/
|
|
38
|
+
constructor(debug?: boolean);
|
|
7
39
|
private readonly registeredListeners;
|
|
8
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Registers a listener to receive each fully-buffered untyped
|
|
42
|
+
* value. Returns an {@link Unsubscriber} that removes it again.
|
|
43
|
+
*/
|
|
44
|
+
readonly registerListener: (listener: UntypedInputListener) => Unsubscriber;
|
|
45
|
+
/**
|
|
46
|
+
* Fires the registered listeners in reverse-registration order
|
|
47
|
+
* with the current untyped value. Snapshots the listener array
|
|
48
|
+
* before iterating so a listener that mutates the registration
|
|
49
|
+
* set during its own invocation does not corrupt the loop.
|
|
50
|
+
* Short-circuits on the first listener that returns truthy.
|
|
51
|
+
*/
|
|
9
52
|
private readonly fire;
|
|
10
53
|
private _untypedValue;
|
|
54
|
+
/** The current buffered untyped value. Cleared after fire and after debounce. */
|
|
11
55
|
get untypedValue(): string;
|
|
12
56
|
private set untypedValue(value);
|
|
13
57
|
private debounceTimer;
|
|
14
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Global `keydown` handler. Ignores synthetic events, passes
|
|
60
|
+
* through to inputs/buttons/links, buffers single-character
|
|
61
|
+
* keys, and fires the listener chain on `Enter` or after
|
|
62
|
+
* {@link UNTYPED_DEBOUNCE_MS} of idle.
|
|
63
|
+
*/
|
|
15
64
|
readonly handleGlobalKeydown: (e: KeyboardEvent) => void;
|
|
16
65
|
}
|
|
@@ -1,13 +1,47 @@
|
|
|
1
1
|
import { dev } from '$app/environment';
|
|
2
2
|
import { devCatch } from '../Helpers/Helpers.svelte.js';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* The set of `activeElement.tagName` values for which the global
|
|
5
|
+
* keydown listener bows out. If focus is inside any of these the
|
|
6
|
+
* keystroke is treated as ordinary form input.
|
|
7
|
+
*/
|
|
8
|
+
const FOCUSABLE_TAG_NAMES = new Set(['INPUT', 'TEXTAREA', 'BUTTON', 'A']);
|
|
9
|
+
/**
|
|
10
|
+
* Debounce in milliseconds after which the untyped buffer is
|
|
11
|
+
* cleared without firing.
|
|
12
|
+
*/
|
|
13
|
+
const UNTYPED_DEBOUNCE_MS = 500;
|
|
14
|
+
/**
|
|
15
|
+
* Application context that buffers global keystrokes so a hardware
|
|
16
|
+
* barcode scanner (which delivers each character as a synthesised
|
|
17
|
+
* `keydown` and terminates with Enter) can be treated as a single
|
|
18
|
+
* "command" without occupying a visible focusable input.
|
|
19
|
+
*
|
|
20
|
+
* Security model:
|
|
21
|
+
* - Treats any sequence of keydowns terminated by `Enter`, while
|
|
22
|
+
* focus is not inside an `INPUT`/`TEXTAREA`/`BUTTON`/`A`, as a
|
|
23
|
+
* trusted command.
|
|
24
|
+
* - Synthetic events (`e.isTrusted === false`) are ignored to
|
|
25
|
+
* blunt the easiest attack vector.
|
|
26
|
+
* - Listeners are run from most-recently registered to oldest,
|
|
27
|
+
* and may short-circuit by returning `true`.
|
|
28
|
+
*/
|
|
4
29
|
export class UntypedInputContext {
|
|
5
30
|
debug;
|
|
31
|
+
/** Stable lookup symbol used by `getContext`/`setContext`. */
|
|
32
|
+
static identifier = Symbol();
|
|
33
|
+
/**
|
|
34
|
+
* @param debug - When `true`, internal state transitions are
|
|
35
|
+
* logged via `console.log`.
|
|
36
|
+
*/
|
|
6
37
|
constructor(debug = false) {
|
|
7
38
|
this.debug = debug;
|
|
8
39
|
}
|
|
9
|
-
static identifier = Symbol();
|
|
10
40
|
registeredListeners = [];
|
|
41
|
+
/**
|
|
42
|
+
* Registers a listener to receive each fully-buffered untyped
|
|
43
|
+
* value. Returns an {@link Unsubscriber} that removes it again.
|
|
44
|
+
*/
|
|
11
45
|
registerListener = (listener) => {
|
|
12
46
|
this.registeredListeners.push(listener);
|
|
13
47
|
return () => {
|
|
@@ -20,54 +54,73 @@ export class UntypedInputContext {
|
|
|
20
54
|
}
|
|
21
55
|
};
|
|
22
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* Fires the registered listeners in reverse-registration order
|
|
59
|
+
* with the current untyped value. Snapshots the listener array
|
|
60
|
+
* before iterating so a listener that mutates the registration
|
|
61
|
+
* set during its own invocation does not corrupt the loop.
|
|
62
|
+
* Short-circuits on the first listener that returns truthy.
|
|
63
|
+
*/
|
|
23
64
|
fire = async () => {
|
|
24
|
-
|
|
25
|
-
|
|
65
|
+
const snapshot = [...this.registeredListeners];
|
|
66
|
+
const value = this.untypedValue;
|
|
67
|
+
for (let i = snapshot.length - 1; i > -1; i--) {
|
|
68
|
+
const listener = snapshot[i];
|
|
69
|
+
const shouldStop = await listener(value);
|
|
26
70
|
if (shouldStop) {
|
|
27
71
|
return;
|
|
28
72
|
}
|
|
29
73
|
}
|
|
30
74
|
};
|
|
31
75
|
_untypedValue = $state('');
|
|
76
|
+
/** The current buffered untyped value. Cleared after fire and after debounce. */
|
|
32
77
|
get untypedValue() {
|
|
33
78
|
return this._untypedValue;
|
|
34
79
|
}
|
|
35
80
|
set untypedValue(v) {
|
|
36
81
|
this._untypedValue = v;
|
|
37
82
|
}
|
|
38
|
-
debounceTimer =
|
|
39
|
-
|
|
83
|
+
debounceTimer = undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Global `keydown` handler. Ignores synthetic events, passes
|
|
86
|
+
* through to inputs/buttons/links, buffers single-character
|
|
87
|
+
* keys, and fires the listener chain on `Enter` or after
|
|
88
|
+
* {@link UNTYPED_DEBOUNCE_MS} of idle.
|
|
89
|
+
*/
|
|
40
90
|
handleGlobalKeydown = (e) => {
|
|
41
|
-
if (!
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (this.debug) {
|
|
45
|
-
console.log('firing');
|
|
46
|
-
}
|
|
47
|
-
this.fire().catch(devCatch);
|
|
48
|
-
if (this.debug) {
|
|
49
|
-
console.log('clearing');
|
|
50
|
-
}
|
|
51
|
-
this.untypedValue = '';
|
|
52
|
-
return;
|
|
91
|
+
if (!e.isTrusted) {
|
|
92
|
+
if (this.debug) {
|
|
93
|
+
console.log('ignoring synthetic event');
|
|
53
94
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const tag = document.activeElement?.tagName;
|
|
98
|
+
if (tag && FOCUSABLE_TAG_NAMES.has(tag)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
clearTimeout(this.debounceTimer);
|
|
102
|
+
if (e.key === 'Enter') {
|
|
103
|
+
if (this.debug) {
|
|
104
|
+
console.log('firing');
|
|
59
105
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
106
|
+
this.fire().catch(devCatch);
|
|
107
|
+
if (this.debug) {
|
|
108
|
+
console.log('clearing');
|
|
109
|
+
}
|
|
110
|
+
this.untypedValue = '';
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (e.key.length == 1) {
|
|
114
|
+
if (this.debug) {
|
|
115
|
+
console.log(`adding ${e.key}`);
|
|
116
|
+
}
|
|
117
|
+
this.untypedValue += e.key;
|
|
71
118
|
}
|
|
119
|
+
this.debounceTimer = setTimeout(() => {
|
|
120
|
+
if (this.debug) {
|
|
121
|
+
console.log('clearing due to debounce');
|
|
122
|
+
}
|
|
123
|
+
this.untypedValue = '';
|
|
124
|
+
}, UNTYPED_DEBOUNCE_MS);
|
|
72
125
|
};
|
|
73
126
|
}
|
package/dist/Delay/Delay.js
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AsyncFlag } from '../Types/Internal/AsyncFlag.js';
|
|
2
|
+
/**
|
|
3
|
+
* The result returned by {@link useAsyncFlag}. Exposes the latest resolved
|
|
4
|
+
* value of the flag through a readonly `value` getter that is backed by
|
|
5
|
+
* `$state`, so consumers reading it inside a reactive scope automatically
|
|
6
|
+
* re-render when the resolution changes.
|
|
7
|
+
*/
|
|
8
|
+
export interface AsyncFlagResult<T> {
|
|
9
|
+
readonly value: T;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Reactively resolve a prop that may be either a bare value or a Promise
|
|
13
|
+
* of that value (see {@link AsyncFlag}). Centralises the boolean-or-Promise
|
|
14
|
+
* pattern used pervasively across button, tab, and modal families.
|
|
15
|
+
*
|
|
16
|
+
* Behaviour:
|
|
17
|
+
* - If `input()` returns a non-Promise value, `value` is set synchronously.
|
|
18
|
+
* - If `input()` returns `undefined`, `value` falls back to `fallback`.
|
|
19
|
+
* - If `input()` returns a Promise, `value` stays at the current resolution
|
|
20
|
+
* until the Promise settles. A sequence counter discards stale resolutions
|
|
21
|
+
* so that, when several Promises overlap, the most recently issued one
|
|
22
|
+
* wins regardless of resolution order.
|
|
23
|
+
* - Rejected Promises do not flip `value` back; the previous valid resolution
|
|
24
|
+
* (or `fallback`) is preserved.
|
|
25
|
+
*
|
|
26
|
+
* Errors are routed through {@link ToastContext.toast} when a context is
|
|
27
|
+
* available (i.e. the consumer is rendered inside `ContextWrapper`), and
|
|
28
|
+
* fall back to {@link devCatch} otherwise. The helper looks the context up
|
|
29
|
+
* once at initialisation time.
|
|
30
|
+
*
|
|
31
|
+
* @param input A thunk returning the current flag value or a Promise of it.
|
|
32
|
+
* Wrapped in a thunk so the helper can establish its own
|
|
33
|
+
* `$effect` dependency on whatever reactive state the caller
|
|
34
|
+
* reads inside.
|
|
35
|
+
* @param fallback The value to use while no resolution is available, and
|
|
36
|
+
* the value returned when `input()` is `undefined`.
|
|
37
|
+
* @returns An {@link AsyncFlagResult} exposing the latest resolved value.
|
|
38
|
+
*/
|
|
39
|
+
export declare function useAsyncFlag<T>(input: () => AsyncFlag<T> | undefined, fallback: T): AsyncFlagResult<T>;
|