@salt-ds/core 1.72.0 → 1.74.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/CHANGELOG.md +178 -0
- package/css/salt-core.css +533 -147
- package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
- package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
- package/dist-cjs/breadcrumbs/Breadcrumb.js +5 -6
- package/dist-cjs/breadcrumbs/Breadcrumb.js.map +1 -1
- package/dist-cjs/button/Button.css.js +1 -1
- package/dist-cjs/card/CardContent.css.js +1 -1
- package/dist-cjs/card/hasCardSection.js +11 -3
- package/dist-cjs/card/hasCardSection.js.map +1 -1
- package/dist-cjs/checkbox/CheckboxIcon.js.map +1 -1
- package/dist-cjs/collapsible/CollapsiblePanel.css.js +1 -1
- package/dist-cjs/collapsible/CollapsiblePanel.js +15 -15
- package/dist-cjs/collapsible/CollapsiblePanel.js.map +1 -1
- package/dist-cjs/combo-box/ComboBox.js.map +1 -1
- package/dist-cjs/dialog/DialogHeader.js +2 -0
- package/dist-cjs/dialog/DialogHeader.js.map +1 -1
- package/dist-cjs/drawer/Drawer.css.js +1 -1
- package/dist-cjs/drawer/Drawer.js +54 -6
- package/dist-cjs/drawer/Drawer.js.map +1 -1
- package/dist-cjs/drawer/DrawerContext.js +2 -0
- package/dist-cjs/drawer/DrawerContext.js.map +1 -1
- package/dist-cjs/drawer/DrawerFooter.css.js +1 -1
- package/dist-cjs/drawer/DrawerHeader.css.js +1 -1
- package/dist-cjs/drawer/DrawerHeader.js +8 -3
- package/dist-cjs/drawer/DrawerHeader.js.map +1 -1
- package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js +6 -0
- package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
- package/dist-cjs/drawer/internal/DrawerResizeGuide.js +44 -0
- package/dist-cjs/drawer/internal/DrawerResizeGuide.js.map +1 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js +6 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.js +43 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.js.map +1 -0
- package/dist-cjs/drawer/internal/useDrawerResize.js +519 -0
- package/dist-cjs/drawer/internal/useDrawerResize.js.map +1 -0
- package/dist-cjs/dropdown/Dropdown.css.js +1 -1
- package/dist-cjs/dropdown/Dropdown.js +1 -1
- package/dist-cjs/dropdown/Dropdown.js.map +1 -1
- package/dist-cjs/form-field/FormField.js +2 -2
- package/dist-cjs/form-field/FormField.js.map +1 -1
- package/dist-cjs/form-field/FormFieldHelperText.js +2 -0
- package/dist-cjs/form-field/FormFieldHelperText.js.map +1 -1
- package/dist-cjs/form-field/FormFieldLabel.css.js +1 -1
- package/dist-cjs/form-field/FormFieldLabel.js +2 -0
- package/dist-cjs/form-field/FormFieldLabel.js.map +1 -1
- package/dist-cjs/form-field-context/FormFieldContext.js.map +1 -1
- package/dist-cjs/index.js +11 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/input/Input.css.js +1 -1
- package/dist-cjs/link/Link.js +2 -0
- package/dist-cjs/link/Link.js.map +1 -1
- package/dist-cjs/link/LinkAction.js +3 -2
- package/dist-cjs/link/LinkAction.js.map +1 -1
- package/dist-cjs/link-button/LinkButton.css.js +1 -1
- package/dist-cjs/link-button/LinkButton.js +3 -2
- package/dist-cjs/link-button/LinkButton.js.map +1 -1
- package/dist-cjs/list-box/ListBox.js +1 -1
- package/dist-cjs/list-box/ListBox.js.map +1 -1
- package/dist-cjs/list-control/ListControlContext.js.map +1 -1
- package/dist-cjs/list-control/ListControlOptionContext.js.map +1 -1
- package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js +1 -1
- package/dist-cjs/mega-menu/MegaMenuListItem.css.js +1 -1
- package/dist-cjs/menu/MenuAlignmentContext.js +55 -0
- package/dist-cjs/menu/MenuAlignmentContext.js.map +1 -0
- package/dist-cjs/menu/MenuBase.js +9 -3
- package/dist-cjs/menu/MenuBase.js.map +1 -1
- package/dist-cjs/menu/MenuGroup.css.js +1 -1
- package/dist-cjs/menu/MenuGroup.js +42 -3
- package/dist-cjs/menu/MenuGroup.js.map +1 -1
- package/dist-cjs/menu/MenuGroupContext.js +27 -0
- package/dist-cjs/menu/MenuGroupContext.js.map +1 -0
- package/dist-cjs/menu/MenuItem.css.js +1 -1
- package/dist-cjs/menu/MenuItem.js +176 -50
- package/dist-cjs/menu/MenuItem.js.map +1 -1
- package/dist-cjs/menu/MenuPanel.js +12 -3
- package/dist-cjs/menu/MenuPanel.js.map +1 -1
- package/dist-cjs/menu/MenuPanelContext.js +3 -1
- package/dist-cjs/menu/MenuPanelContext.js.map +1 -1
- package/dist-cjs/multiline-input/MultilineInput.css.js +1 -1
- package/dist-cjs/navigation-item/NavigationItem.css.js +1 -1
- package/dist-cjs/number-input/NumberInput.css.js +1 -1
- package/dist-cjs/on-solid-button/OnSolidButton.css.js +6 -0
- package/dist-cjs/on-solid-button/OnSolidButton.css.js.map +1 -0
- package/dist-cjs/on-solid-button/OnSolidButton.js +68 -0
- package/dist-cjs/on-solid-button/OnSolidButton.js.map +1 -0
- package/dist-cjs/option/Option.css.js +1 -1
- package/dist-cjs/option/Option.js +7 -1
- package/dist-cjs/option/Option.js.map +1 -1
- package/dist-cjs/option/OptionGroup.css.js +1 -1
- package/dist-cjs/overlay/OverlayHeader.js +2 -0
- package/dist-cjs/overlay/OverlayHeader.js.map +1 -1
- package/dist-cjs/overlay/OverlayPanelCloseButton.js +1 -1
- package/dist-cjs/overlay/OverlayPanelCloseButton.js.map +1 -1
- package/dist-cjs/pagination/CompactPaginator.js +2 -0
- package/dist-cjs/pagination/CompactPaginator.js.map +1 -1
- package/dist-cjs/pagination/GoToInput.js +2 -0
- package/dist-cjs/pagination/GoToInput.js.map +1 -1
- package/dist-cjs/pill/PillCheckIcon.js.map +1 -1
- package/dist-cjs/pill-input/PillInput.css.js +1 -1
- package/dist-cjs/progress/CircularProgress/CircularProgress.js +2 -0
- package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
- package/dist-cjs/progress/LinearProgress/LinearProgress.js +2 -0
- package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
- package/dist-cjs/salt-provider/ThemeApplicator.js +10 -6
- package/dist-cjs/salt-provider/ThemeApplicator.js.map +1 -1
- package/dist-cjs/side-panel/SidePanelTitle.js +2 -0
- package/dist-cjs/side-panel/SidePanelTitle.js.map +1 -1
- package/dist-cjs/side-panel/SidePanelTrigger.js.map +1 -1
- package/dist-cjs/side-panel/internal/useIsScrollable.js.map +1 -1
- package/dist-cjs/side-panel/useSidePanel.js +4 -9
- package/dist-cjs/side-panel/useSidePanel.js.map +1 -1
- package/dist-cjs/skip-link/internal/useManageFocusOnTarget.js +2 -2
- package/dist-cjs/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
- package/dist-cjs/slider/internal/SliderThumb.js.map +1 -1
- package/dist-cjs/slider/internal/SliderTooltip.js +2 -0
- package/dist-cjs/slider/internal/SliderTooltip.js.map +1 -1
- package/dist-cjs/slider/internal/SliderTrack.js +2 -0
- package/dist-cjs/slider/internal/SliderTrack.js.map +1 -1
- package/dist-cjs/slider/internal/useRangeSliderThumb.js.map +1 -1
- package/dist-cjs/slider/internal/useSliderThumb.js.map +1 -1
- package/dist-cjs/slider/internal/utils.js.map +1 -1
- package/dist-cjs/stepper/Stepper.js +1 -1
- package/dist-cjs/stepper/Stepper.js.map +1 -1
- package/dist-cjs/stepper/internal/StepText.css.js +1 -1
- package/dist-cjs/stepper/internal/StepText.js +2 -0
- package/dist-cjs/stepper/internal/StepText.js.map +1 -1
- package/dist-cjs/table/Table.css.js +1 -1
- package/dist-cjs/tabs/Tabs.js +1 -1
- package/dist-cjs/tabs/Tabs.js.map +1 -1
- package/dist-cjs/tabs/internal/overflow/useOverflow.js.map +1 -1
- package/dist-cjs/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -1
- package/dist-cjs/text/Code.js +1 -1
- package/dist-cjs/text/Code.js.map +1 -1
- package/dist-cjs/text/Editorial.js +32 -0
- package/dist-cjs/text/Editorial.js.map +1 -0
- package/dist-cjs/text/Eyebrow.js +12 -0
- package/dist-cjs/text/Eyebrow.js.map +1 -0
- package/dist-cjs/text/Text.css.js +1 -1
- package/dist-cjs/text/Text.js +6 -2
- package/dist-cjs/text/Text.js.map +1 -1
- package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
- package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
- package/dist-cjs/toolbar/ToolbarOverflow.js +8 -4
- package/dist-cjs/toolbar/ToolbarOverflow.js.map +1 -1
- package/dist-cjs/toolbar/toolbarUtils.js.map +1 -1
- package/dist-cjs/tooltip/useAriaAnnounce.js +4 -2
- package/dist-cjs/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-cjs/tooltip/useTooltip.js.map +1 -1
- package/dist-cjs/tree/TreeContext.js.map +1 -1
- package/dist-cjs/tree/TreeNodeTrigger.css.js +1 -1
- package/dist-cjs/tree/TreeNodeTrigger.js +0 -1
- package/dist-cjs/tree/TreeNodeTrigger.js.map +1 -1
- package/dist-cjs/utils/forkRef.js +34 -0
- package/dist-cjs/utils/forkRef.js.map +1 -0
- package/dist-cjs/utils/getRefFromChildren.js.map +1 -1
- package/dist-cjs/utils/marginMiddleware.js.map +1 -1
- package/dist-cjs/utils/setRef.js.map +1 -1
- package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
- package/dist-cjs/utils/useForkRef.js +3 -6
- package/dist-cjs/utils/useForkRef.js.map +1 -1
- package/dist-cjs/utils/useResizeObserver.js.map +1 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +1 -1
- package/dist-es/accordion/AccordionHeader.css.js +1 -1
- package/dist-es/border-layout/BorderLayout.js.map +1 -1
- package/dist-es/breadcrumbs/Breadcrumb.js +5 -6
- package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
- package/dist-es/button/Button.css.js +1 -1
- package/dist-es/card/CardContent.css.js +1 -1
- package/dist-es/card/hasCardSection.js +11 -3
- package/dist-es/card/hasCardSection.js.map +1 -1
- package/dist-es/checkbox/CheckboxIcon.js.map +1 -1
- package/dist-es/collapsible/CollapsiblePanel.css.js +1 -1
- package/dist-es/collapsible/CollapsiblePanel.js +16 -16
- package/dist-es/collapsible/CollapsiblePanel.js.map +1 -1
- package/dist-es/combo-box/ComboBox.js.map +1 -1
- package/dist-es/dialog/DialogHeader.js +2 -0
- package/dist-es/dialog/DialogHeader.js.map +1 -1
- package/dist-es/drawer/Drawer.css.js +1 -1
- package/dist-es/drawer/Drawer.js +54 -6
- package/dist-es/drawer/Drawer.js.map +1 -1
- package/dist-es/drawer/DrawerContext.js +2 -0
- package/dist-es/drawer/DrawerContext.js.map +1 -1
- package/dist-es/drawer/DrawerFooter.css.js +1 -1
- package/dist-es/drawer/DrawerHeader.css.js +1 -1
- package/dist-es/drawer/DrawerHeader.js +8 -3
- package/dist-es/drawer/DrawerHeader.js.map +1 -1
- package/dist-es/drawer/internal/DrawerResizeGuide.css.js +4 -0
- package/dist-es/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
- package/dist-es/drawer/internal/DrawerResizeGuide.js +42 -0
- package/dist-es/drawer/internal/DrawerResizeGuide.js.map +1 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.css.js +4 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.js +41 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.js.map +1 -0
- package/dist-es/drawer/internal/useDrawerResize.js +517 -0
- package/dist-es/drawer/internal/useDrawerResize.js.map +1 -0
- package/dist-es/dropdown/Dropdown.css.js +1 -1
- package/dist-es/dropdown/Dropdown.js +1 -1
- package/dist-es/dropdown/Dropdown.js.map +1 -1
- package/dist-es/form-field/FormField.js +2 -2
- package/dist-es/form-field/FormField.js.map +1 -1
- package/dist-es/form-field/FormFieldHelperText.js +2 -0
- package/dist-es/form-field/FormFieldHelperText.js.map +1 -1
- package/dist-es/form-field/FormFieldLabel.css.js +1 -1
- package/dist-es/form-field/FormFieldLabel.js +2 -0
- package/dist-es/form-field/FormFieldLabel.js.map +1 -1
- package/dist-es/form-field-context/FormFieldContext.js.map +1 -1
- package/dist-es/index.js +3 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/input/Input.css.js +1 -1
- package/dist-es/link/Link.js +2 -0
- package/dist-es/link/Link.js.map +1 -1
- package/dist-es/link/LinkAction.js +3 -2
- package/dist-es/link/LinkAction.js.map +1 -1
- package/dist-es/link-button/LinkButton.css.js +1 -1
- package/dist-es/link-button/LinkButton.js +3 -2
- package/dist-es/link-button/LinkButton.js.map +1 -1
- package/dist-es/list-box/ListBox.js +1 -1
- package/dist-es/list-box/ListBox.js.map +1 -1
- package/dist-es/list-control/ListControlContext.js.map +1 -1
- package/dist-es/list-control/ListControlOptionContext.js.map +1 -1
- package/dist-es/mega-menu/MegaMenuGroupHeading.css.js +1 -1
- package/dist-es/mega-menu/MegaMenuListItem.css.js +1 -1
- package/dist-es/menu/MenuAlignmentContext.js +50 -0
- package/dist-es/menu/MenuAlignmentContext.js.map +1 -0
- package/dist-es/menu/MenuBase.js +9 -3
- package/dist-es/menu/MenuBase.js.map +1 -1
- package/dist-es/menu/MenuGroup.css.js +1 -1
- package/dist-es/menu/MenuGroup.js +44 -5
- package/dist-es/menu/MenuGroup.js.map +1 -1
- package/dist-es/menu/MenuGroupContext.js +23 -0
- package/dist-es/menu/MenuGroupContext.js.map +1 -0
- package/dist-es/menu/MenuItem.css.js +1 -1
- package/dist-es/menu/MenuItem.js +177 -51
- package/dist-es/menu/MenuItem.js.map +1 -1
- package/dist-es/menu/MenuPanel.js +12 -3
- package/dist-es/menu/MenuPanel.js.map +1 -1
- package/dist-es/menu/MenuPanelContext.js +3 -1
- package/dist-es/menu/MenuPanelContext.js.map +1 -1
- package/dist-es/multiline-input/MultilineInput.css.js +1 -1
- package/dist-es/navigation-item/NavigationItem.css.js +1 -1
- package/dist-es/number-input/NumberInput.css.js +1 -1
- package/dist-es/on-solid-button/OnSolidButton.css.js +4 -0
- package/dist-es/on-solid-button/OnSolidButton.css.js.map +1 -0
- package/dist-es/on-solid-button/OnSolidButton.js +66 -0
- package/dist-es/on-solid-button/OnSolidButton.js.map +1 -0
- package/dist-es/option/Option.css.js +1 -1
- package/dist-es/option/Option.js +7 -1
- package/dist-es/option/Option.js.map +1 -1
- package/dist-es/option/OptionGroup.css.js +1 -1
- package/dist-es/overlay/OverlayHeader.js +2 -0
- package/dist-es/overlay/OverlayHeader.js.map +1 -1
- package/dist-es/overlay/OverlayPanelCloseButton.js +1 -1
- package/dist-es/overlay/OverlayPanelCloseButton.js.map +1 -1
- package/dist-es/pagination/CompactPaginator.js +2 -0
- package/dist-es/pagination/CompactPaginator.js.map +1 -1
- package/dist-es/pagination/GoToInput.js +2 -0
- package/dist-es/pagination/GoToInput.js.map +1 -1
- package/dist-es/pill/PillCheckIcon.js.map +1 -1
- package/dist-es/pill-input/PillInput.css.js +1 -1
- package/dist-es/progress/CircularProgress/CircularProgress.js +2 -0
- package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
- package/dist-es/progress/LinearProgress/LinearProgress.js +2 -0
- package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
- package/dist-es/salt-provider/ThemeApplicator.js +10 -6
- package/dist-es/salt-provider/ThemeApplicator.js.map +1 -1
- package/dist-es/side-panel/SidePanelTitle.js +2 -0
- package/dist-es/side-panel/SidePanelTitle.js.map +1 -1
- package/dist-es/side-panel/SidePanelTrigger.js.map +1 -1
- package/dist-es/side-panel/internal/useIsScrollable.js.map +1 -1
- package/dist-es/side-panel/useSidePanel.js +4 -9
- package/dist-es/side-panel/useSidePanel.js.map +1 -1
- package/dist-es/skip-link/internal/useManageFocusOnTarget.js +2 -2
- package/dist-es/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
- package/dist-es/slider/internal/SliderThumb.js.map +1 -1
- package/dist-es/slider/internal/SliderTooltip.js +2 -0
- package/dist-es/slider/internal/SliderTooltip.js.map +1 -1
- package/dist-es/slider/internal/SliderTrack.js +2 -0
- package/dist-es/slider/internal/SliderTrack.js.map +1 -1
- package/dist-es/slider/internal/useRangeSliderThumb.js.map +1 -1
- package/dist-es/slider/internal/useSliderThumb.js.map +1 -1
- package/dist-es/slider/internal/utils.js.map +1 -1
- package/dist-es/stepper/Stepper.js +1 -1
- package/dist-es/stepper/Stepper.js.map +1 -1
- package/dist-es/stepper/internal/StepText.css.js +1 -1
- package/dist-es/stepper/internal/StepText.js +2 -0
- package/dist-es/stepper/internal/StepText.js.map +1 -1
- package/dist-es/table/Table.css.js +1 -1
- package/dist-es/tabs/Tabs.js +1 -1
- package/dist-es/tabs/Tabs.js.map +1 -1
- package/dist-es/tabs/internal/overflow/useOverflow.js.map +1 -1
- package/dist-es/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -1
- package/dist-es/text/Code.js +1 -1
- package/dist-es/text/Code.js.map +1 -1
- package/dist-es/text/Editorial.js +25 -0
- package/dist-es/text/Editorial.js.map +1 -0
- package/dist-es/text/Eyebrow.js +10 -0
- package/dist-es/text/Eyebrow.js.map +1 -0
- package/dist-es/text/Text.css.js +1 -1
- package/dist-es/text/Text.js +6 -2
- package/dist-es/text/Text.js.map +1 -1
- package/dist-es/toggle-button/ToggleButton.css.js +1 -1
- package/dist-es/toggle-button/ToggleButton.js.map +1 -1
- package/dist-es/toolbar/ToolbarOverflow.js +8 -4
- package/dist-es/toolbar/ToolbarOverflow.js.map +1 -1
- package/dist-es/toolbar/toolbarUtils.js.map +1 -1
- package/dist-es/tooltip/useAriaAnnounce.js +4 -2
- package/dist-es/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-es/tooltip/useTooltip.js.map +1 -1
- package/dist-es/tree/TreeContext.js.map +1 -1
- package/dist-es/tree/TreeNodeTrigger.css.js +1 -1
- package/dist-es/tree/TreeNodeTrigger.js +0 -1
- package/dist-es/tree/TreeNodeTrigger.js.map +1 -1
- package/dist-es/utils/forkRef.js +32 -0
- package/dist-es/utils/forkRef.js.map +1 -0
- package/dist-es/utils/getRefFromChildren.js.map +1 -1
- package/dist-es/utils/marginMiddleware.js.map +1 -1
- package/dist-es/utils/setRef.js.map +1 -1
- package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
- package/dist-es/utils/useForkRef.js +3 -6
- package/dist-es/utils/useForkRef.js.map +1 -1
- package/dist-es/utils/useResizeObserver.js.map +1 -1
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +1 -1
- package/dist-types/checkbox/CheckboxIcon.d.ts +2 -1
- package/dist-types/collapsible/CollapsiblePanel.d.ts +8 -1
- package/dist-types/combo-box/ComboBox.d.ts +2 -2
- package/dist-types/drawer/Drawer.d.ts +6 -0
- package/dist-types/drawer/DrawerContext.d.ts +3 -0
- package/dist-types/drawer/DrawerHeader.d.ts +1 -1
- package/dist-types/drawer/internal/DrawerResizeGuide.d.ts +7 -0
- package/dist-types/drawer/internal/DrawerResizeHandle.d.ts +8 -0
- package/dist-types/drawer/internal/index.d.ts +3 -0
- package/dist-types/drawer/internal/useDrawerResize.d.ts +34 -0
- package/dist-types/dropdown/Dropdown.d.ts +2 -2
- package/dist-types/form-field/FormFieldHelperText.d.ts +1 -1
- package/dist-types/form-field/FormFieldLabel.d.ts +1 -1
- package/dist-types/form-field-context/FormFieldContext.d.ts +1 -1
- package/dist-types/index.d.ts +1 -0
- package/dist-types/list-box/ListBox.d.ts +2 -2
- package/dist-types/list-control/ListControlContext.d.ts +1 -1
- package/dist-types/list-control/ListControlOptionContext.d.ts +1 -1
- package/dist-types/menu/MenuAlignmentContext.d.ts +14 -0
- package/dist-types/menu/MenuGroup.d.ts +26 -4
- package/dist-types/menu/MenuGroupContext.d.ts +10 -0
- package/dist-types/menu/MenuItem.d.ts +4 -0
- package/dist-types/menu/MenuPanelContext.d.ts +2 -0
- package/dist-types/on-solid-button/OnSolidButton.d.ts +12 -0
- package/dist-types/on-solid-button/index.d.ts +1 -0
- package/dist-types/pill/PillCheckIcon.d.ts +2 -1
- package/dist-types/registerClassNameInjection.d.ts +0 -2
- package/dist-types/salt-provider/SaltProvider.d.ts +1 -1
- package/dist-types/side-panel/internal/useIsScrollable.d.ts +1 -1
- package/dist-types/skip-link/internal/useManageFocusOnTarget.d.ts +1 -1
- package/dist-types/slider/internal/SliderThumb.d.ts +2 -2
- package/dist-types/slider/internal/SliderTrack.d.ts +2 -2
- package/dist-types/slider/internal/useRangeSliderThumb.d.ts +1 -1
- package/dist-types/slider/internal/useSliderThumb.d.ts +1 -1
- package/dist-types/slider/internal/utils.d.ts +1 -1
- package/dist-types/tabs/internal/overflow/useOverflow.d.ts +2 -2
- package/dist-types/tabs/internal/overflow/useRenderedTabWidth.d.ts +1 -1
- package/dist-types/text/Editorial.d.ts +7 -0
- package/dist-types/text/Eyebrow.d.ts +2 -0
- package/dist-types/text/Text.d.ts +9 -2
- package/dist-types/text/index.d.ts +2 -0
- package/dist-types/toggle-button/ToggleButton.d.ts +1 -1
- package/dist-types/tooltip/useTooltip.d.ts +12 -26
- package/dist-types/tree/TreeContext.d.ts +1 -1
- package/dist-types/utils/forkRef.d.ts +11 -0
- package/dist-types/utils/inferElementType.d.ts +1 -2
- package/dist-types/utils/marginMiddleware.d.ts +1 -1
- package/dist-types/utils/setRef.d.ts +4 -0
- package/dist-types/utils/useFloatingUI/useFloatingUI.d.ts +1 -5
- package/dist-types/utils/useResizeObserver.d.ts +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
import { useWindow } from '@salt-ds/window';
|
|
2
|
+
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
3
|
+
import 'clsx';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import { useEventCallback } from '../../utils/useEventCallback.js';
|
|
6
|
+
import '../../utils/useFloatingUI/useFloatingUI.js';
|
|
7
|
+
import '../../utils/useId.js';
|
|
8
|
+
import { useIsomorphicLayoutEffect } from '../../utils/useIsomorphicLayoutEffect.js';
|
|
9
|
+
import '../../salt-provider/SaltProvider.js';
|
|
10
|
+
import '../../viewport/ViewportProvider.js';
|
|
11
|
+
|
|
12
|
+
const KEYBOARD_STEP = 8;
|
|
13
|
+
const PROBE_SIZE = 1e6;
|
|
14
|
+
const CLICK_THRESHOLD = 4;
|
|
15
|
+
const isElement = (target) => target !== null && target.nodeType === 1;
|
|
16
|
+
const focusWithoutRing = (element) => element == null ? void 0 : element.focus({
|
|
17
|
+
preventScroll: true,
|
|
18
|
+
focusVisible: false
|
|
19
|
+
});
|
|
20
|
+
const setDocumentCursor = (ownerDocument, cursor) => {
|
|
21
|
+
const view = ownerDocument.defaultView;
|
|
22
|
+
if (!view || !ownerDocument.adoptedStyleSheets) return void 0;
|
|
23
|
+
const sheet = new view.CSSStyleSheet();
|
|
24
|
+
sheet.replaceSync(`*, *:hover { cursor: ${cursor} !important; }`);
|
|
25
|
+
ownerDocument.adoptedStyleSheets = [
|
|
26
|
+
...ownerDocument.adoptedStyleSheets,
|
|
27
|
+
sheet
|
|
28
|
+
];
|
|
29
|
+
return () => {
|
|
30
|
+
ownerDocument.adoptedStyleSheets = ownerDocument.adoptedStyleSheets.filter(
|
|
31
|
+
(adopted) => adopted !== sheet
|
|
32
|
+
);
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
const isHorizontal = (position) => position === "left" || position === "right";
|
|
36
|
+
const growsWithCoordinate = (position) => position === "left" || position === "top";
|
|
37
|
+
const measure = (element, horizontal) => {
|
|
38
|
+
const { width, height } = element.getBoundingClientRect();
|
|
39
|
+
return horizontal ? width : height;
|
|
40
|
+
};
|
|
41
|
+
const restoreStyle = (style, property, value, priority) => {
|
|
42
|
+
if (value) {
|
|
43
|
+
style.setProperty(property, value, priority);
|
|
44
|
+
} else {
|
|
45
|
+
style.removeProperty(property);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const probeBounds = (element, horizontal) => {
|
|
49
|
+
const property = horizontal ? "width" : "height";
|
|
50
|
+
const { style } = element;
|
|
51
|
+
const previousValue = style.getPropertyValue(property);
|
|
52
|
+
const previousPriority = style.getPropertyPriority(property);
|
|
53
|
+
const previousTransition = style.getPropertyValue("transition-property");
|
|
54
|
+
const previousTransitionPriority = style.getPropertyPriority(
|
|
55
|
+
"transition-property"
|
|
56
|
+
);
|
|
57
|
+
style.setProperty("transition-property", "none", "important");
|
|
58
|
+
style.setProperty(property, "0px", "important");
|
|
59
|
+
const min = measure(element, horizontal);
|
|
60
|
+
style.setProperty(property, `${PROBE_SIZE}px`, "important");
|
|
61
|
+
const max = measure(element, horizontal);
|
|
62
|
+
restoreStyle(style, property, previousValue, previousPriority);
|
|
63
|
+
measure(element, horizontal);
|
|
64
|
+
restoreStyle(
|
|
65
|
+
style,
|
|
66
|
+
"transition-property",
|
|
67
|
+
previousTransition,
|
|
68
|
+
previousTransitionPriority
|
|
69
|
+
);
|
|
70
|
+
return { min, max: Math.max(min, max) };
|
|
71
|
+
};
|
|
72
|
+
const clamp = (value, { min, max }) => Math.min(Math.max(value, min), max);
|
|
73
|
+
const sizeFromPoint = (rect, position, { clientX: x, clientY: y }) => {
|
|
74
|
+
switch (position) {
|
|
75
|
+
case "left":
|
|
76
|
+
return x - rect.left;
|
|
77
|
+
case "right":
|
|
78
|
+
return rect.right - x;
|
|
79
|
+
case "top":
|
|
80
|
+
return y - rect.top;
|
|
81
|
+
case "bottom":
|
|
82
|
+
return rect.bottom - y;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const edgeFromSize = (rect, position, size) => {
|
|
86
|
+
switch (position) {
|
|
87
|
+
case "left":
|
|
88
|
+
return rect.left + size;
|
|
89
|
+
case "right":
|
|
90
|
+
return rect.right - size;
|
|
91
|
+
case "top":
|
|
92
|
+
return rect.top + size;
|
|
93
|
+
case "bottom":
|
|
94
|
+
return rect.bottom - size;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
function useDrawerResize({
|
|
98
|
+
enabled,
|
|
99
|
+
position,
|
|
100
|
+
element
|
|
101
|
+
}) {
|
|
102
|
+
const horizontal = isHorizontal(position);
|
|
103
|
+
const targetWindow = useWindow();
|
|
104
|
+
const [sizeState, setSizeState] = useState(void 0);
|
|
105
|
+
const [sizeAxisHorizontal, setSizeAxisHorizontal] = useState(horizontal);
|
|
106
|
+
const size = enabled && sizeAxisHorizontal === horizontal ? sizeState : void 0;
|
|
107
|
+
const [interaction, setInteraction] = useState("inactive");
|
|
108
|
+
const [metrics, setMetrics] = useState(
|
|
109
|
+
null
|
|
110
|
+
);
|
|
111
|
+
const dragRef = useRef(null);
|
|
112
|
+
const placingRef = useRef(null);
|
|
113
|
+
const handleRef = useRef(null);
|
|
114
|
+
const guideRef = useRef(null);
|
|
115
|
+
const cancelResizeEventRef = useRef(null);
|
|
116
|
+
const restoreSizeRef = useRef(null);
|
|
117
|
+
const initialSizeRef = useRef(null);
|
|
118
|
+
const axisRef = useRef(horizontal);
|
|
119
|
+
const boundsRef = useRef(null);
|
|
120
|
+
const readMetrics = useEventCallback((reuseBounds = false) => {
|
|
121
|
+
if (!element) return null;
|
|
122
|
+
const bounds = reuseBounds && boundsRef.current ? boundsRef.current : probeBounds(element, horizontal);
|
|
123
|
+
boundsRef.current = bounds;
|
|
124
|
+
const current = clamp(measure(element, horizontal), bounds);
|
|
125
|
+
const next = { ...bounds, current };
|
|
126
|
+
setMetrics(next);
|
|
127
|
+
return next;
|
|
128
|
+
});
|
|
129
|
+
const applySize = (nextSize) => {
|
|
130
|
+
setSizeState(nextSize);
|
|
131
|
+
setSizeAxisHorizontal(horizontal);
|
|
132
|
+
};
|
|
133
|
+
const isOverHandle = ({
|
|
134
|
+
clientX: x,
|
|
135
|
+
clientY: y
|
|
136
|
+
}) => {
|
|
137
|
+
var _a;
|
|
138
|
+
const rect = (_a = handleRef.current) == null ? void 0 : _a.getBoundingClientRect();
|
|
139
|
+
return rect !== void 0 && x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
|
|
140
|
+
};
|
|
141
|
+
const isHandle = useEventCallback(
|
|
142
|
+
(target) => {
|
|
143
|
+
var _a;
|
|
144
|
+
return enabled && isElement(target) && ((_a = handleRef.current) == null ? void 0 : _a.contains(target)) === true;
|
|
145
|
+
}
|
|
146
|
+
);
|
|
147
|
+
const startDrag = useEventCallback((event) => {
|
|
148
|
+
const current = readMetrics();
|
|
149
|
+
if (!current) return;
|
|
150
|
+
event.preventDefault();
|
|
151
|
+
dragRef.current = {
|
|
152
|
+
pointerId: event.pointerId,
|
|
153
|
+
startX: event.clientX,
|
|
154
|
+
startY: event.clientY,
|
|
155
|
+
originSize: current.current,
|
|
156
|
+
previousSize: current.current,
|
|
157
|
+
cancelSize: size,
|
|
158
|
+
min: current.min,
|
|
159
|
+
max: current.max,
|
|
160
|
+
moved: false
|
|
161
|
+
};
|
|
162
|
+
focusWithoutRing(handleRef.current);
|
|
163
|
+
setInteraction("active");
|
|
164
|
+
});
|
|
165
|
+
const moveDrag = useEventCallback((event, drag) => {
|
|
166
|
+
var _a;
|
|
167
|
+
if (!drag.moved) {
|
|
168
|
+
if (Math.hypot(event.clientX - drag.startX, event.clientY - drag.startY) < CLICK_THRESHOLD) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
drag.moved = true;
|
|
172
|
+
try {
|
|
173
|
+
(_a = handleRef.current) == null ? void 0 : _a.setPointerCapture(event.pointerId);
|
|
174
|
+
} catch {
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const coordinate = horizontal ? event.clientX : event.clientY;
|
|
178
|
+
const origin = horizontal ? drag.startX : drag.startY;
|
|
179
|
+
const direction = growsWithCoordinate(position) ? 1 : -1;
|
|
180
|
+
const nextSize = clamp(
|
|
181
|
+
drag.originSize + (coordinate - origin) * direction,
|
|
182
|
+
drag
|
|
183
|
+
);
|
|
184
|
+
if (nextSize !== drag.previousSize) {
|
|
185
|
+
drag.previousSize = nextSize;
|
|
186
|
+
applySize(nextSize);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
const moveGuide = (offset) => {
|
|
190
|
+
var _a;
|
|
191
|
+
const placing = placingRef.current;
|
|
192
|
+
if (!placing) return;
|
|
193
|
+
placing.guideOffset = offset;
|
|
194
|
+
(_a = guideRef.current) == null ? void 0 : _a.style.setProperty(
|
|
195
|
+
"--drawerResizeGuide-offset",
|
|
196
|
+
`${offset}px`
|
|
197
|
+
);
|
|
198
|
+
};
|
|
199
|
+
const setGuide = useCallback((node) => {
|
|
200
|
+
guideRef.current = node;
|
|
201
|
+
const placing = placingRef.current;
|
|
202
|
+
if (node && placing) {
|
|
203
|
+
node.style.setProperty(
|
|
204
|
+
"--drawerResizeGuide-offset",
|
|
205
|
+
`${placing.guideOffset}px`
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
}, []);
|
|
209
|
+
const startPlacing = useEventCallback((drag) => {
|
|
210
|
+
if (!element) return;
|
|
211
|
+
placingRef.current = {
|
|
212
|
+
min: drag.min,
|
|
213
|
+
max: drag.max,
|
|
214
|
+
guideOffset: edgeFromSize(
|
|
215
|
+
element.getBoundingClientRect(),
|
|
216
|
+
position,
|
|
217
|
+
drag.originSize
|
|
218
|
+
),
|
|
219
|
+
pressed: false
|
|
220
|
+
};
|
|
221
|
+
setInteraction("placing");
|
|
222
|
+
});
|
|
223
|
+
const stopPlacing = useEventCallback(() => {
|
|
224
|
+
if (!placingRef.current) return;
|
|
225
|
+
placingRef.current = null;
|
|
226
|
+
setInteraction("inactive");
|
|
227
|
+
});
|
|
228
|
+
const endDrag = useEventCallback((event) => {
|
|
229
|
+
var _a;
|
|
230
|
+
const drag = dragRef.current;
|
|
231
|
+
if (!drag) return;
|
|
232
|
+
dragRef.current = null;
|
|
233
|
+
const pointer = event;
|
|
234
|
+
const stillHovered = "pointerType" in event && pointer.pointerType !== "touch" && isHandle(
|
|
235
|
+
((_a = handleRef.current) == null ? void 0 : _a.ownerDocument.elementFromPoint(
|
|
236
|
+
pointer.clientX,
|
|
237
|
+
pointer.clientY
|
|
238
|
+
)) ?? null
|
|
239
|
+
);
|
|
240
|
+
setInteraction(stillHovered ? "hover" : "inactive");
|
|
241
|
+
});
|
|
242
|
+
const cancelDrag = useEventCallback((event) => {
|
|
243
|
+
const drag = dragRef.current;
|
|
244
|
+
if (!drag) return;
|
|
245
|
+
const handle = handleRef.current;
|
|
246
|
+
if (handle == null ? void 0 : handle.hasPointerCapture(drag.pointerId)) {
|
|
247
|
+
handle.releasePointerCapture(drag.pointerId);
|
|
248
|
+
}
|
|
249
|
+
setSizeState(drag.cancelSize);
|
|
250
|
+
endDrag(event);
|
|
251
|
+
});
|
|
252
|
+
const sizeToPlace = (target, rect, point, bounds) => clamp(
|
|
253
|
+
isOverHandle(point) ? measure(target, horizontal) : sizeFromPoint(rect, position, point),
|
|
254
|
+
bounds
|
|
255
|
+
);
|
|
256
|
+
const moveGuideToPointer = (event) => {
|
|
257
|
+
const placing = placingRef.current;
|
|
258
|
+
if (!placing || !element) return;
|
|
259
|
+
const rect = element.getBoundingClientRect();
|
|
260
|
+
moveGuide(
|
|
261
|
+
edgeFromSize(rect, position, sizeToPlace(element, rect, event, placing))
|
|
262
|
+
);
|
|
263
|
+
};
|
|
264
|
+
const onGuidePointerDown = useEventCallback(
|
|
265
|
+
(event) => {
|
|
266
|
+
const placing = placingRef.current;
|
|
267
|
+
if (!placing) return;
|
|
268
|
+
if (event.pointerType === "mouse" && event.button > 0) {
|
|
269
|
+
stopPlacing();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
event.preventDefault();
|
|
273
|
+
event.stopPropagation();
|
|
274
|
+
placing.pressed = true;
|
|
275
|
+
moveGuideToPointer(event);
|
|
276
|
+
}
|
|
277
|
+
);
|
|
278
|
+
const onGuidePointerMove = useEventCallback(
|
|
279
|
+
(event) => {
|
|
280
|
+
moveGuideToPointer(event);
|
|
281
|
+
}
|
|
282
|
+
);
|
|
283
|
+
const onGuideClick = useEventCallback(
|
|
284
|
+
(event) => {
|
|
285
|
+
const placing = placingRef.current;
|
|
286
|
+
if (!(placing == null ? void 0 : placing.pressed) || !element) return;
|
|
287
|
+
event.stopPropagation();
|
|
288
|
+
stopPlacing();
|
|
289
|
+
const rect = element.getBoundingClientRect();
|
|
290
|
+
const nextSize = sizeToPlace(element, rect, event, placing);
|
|
291
|
+
const current = clamp(measure(element, horizontal), placing);
|
|
292
|
+
if (nextSize !== current) {
|
|
293
|
+
applySize(nextSize);
|
|
294
|
+
}
|
|
295
|
+
focusWithoutRing(handleRef.current);
|
|
296
|
+
}
|
|
297
|
+
);
|
|
298
|
+
useEffect(() => {
|
|
299
|
+
if (!enabled || !element || !targetWindow) return;
|
|
300
|
+
const ownerDocument = targetWindow.document;
|
|
301
|
+
const onPointerDown = (event) => {
|
|
302
|
+
if (event.defaultPrevented || !event.isPrimary) return;
|
|
303
|
+
if (event.pointerType === "mouse" && event.button > 0) return;
|
|
304
|
+
if (placingRef.current || dragRef.current || !isHandle(event.target)) {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
startDrag(event);
|
|
308
|
+
};
|
|
309
|
+
const onPointerMove = (event) => {
|
|
310
|
+
if (event.defaultPrevented) return;
|
|
311
|
+
if (placingRef.current) return;
|
|
312
|
+
const drag = dragRef.current;
|
|
313
|
+
if (!drag) {
|
|
314
|
+
if (event.pointerType !== "touch") {
|
|
315
|
+
setInteraction(isHandle(event.target) ? "hover" : "inactive");
|
|
316
|
+
}
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
if (event.pointerId !== drag.pointerId) return;
|
|
320
|
+
if (event.buttons === 0) {
|
|
321
|
+
endDrag(event);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
moveDrag(event, drag);
|
|
325
|
+
};
|
|
326
|
+
const onPointerUp = (event) => {
|
|
327
|
+
if (event.defaultPrevented) return;
|
|
328
|
+
if (event.pointerType === "mouse" && event.button > 0) return;
|
|
329
|
+
const drag = dragRef.current;
|
|
330
|
+
if ((drag == null ? void 0 : drag.pointerId) !== event.pointerId) return;
|
|
331
|
+
event.preventDefault();
|
|
332
|
+
if (!drag.moved) {
|
|
333
|
+
dragRef.current = null;
|
|
334
|
+
startPlacing(drag);
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
endDrag(event);
|
|
338
|
+
};
|
|
339
|
+
const onPointerCancel = (event) => {
|
|
340
|
+
var _a;
|
|
341
|
+
if (((_a = dragRef.current) == null ? void 0 : _a.pointerId) === event.pointerId) endDrag(event);
|
|
342
|
+
};
|
|
343
|
+
const onContextMenu = (event) => {
|
|
344
|
+
if (!event.defaultPrevented) endDrag(event);
|
|
345
|
+
};
|
|
346
|
+
const onKeyDown2 = (event) => {
|
|
347
|
+
if (event.key !== "Escape" || !dragRef.current) return;
|
|
348
|
+
event.preventDefault();
|
|
349
|
+
cancelResizeEventRef.current = event;
|
|
350
|
+
cancelDrag(event);
|
|
351
|
+
};
|
|
352
|
+
const onBlur = (event) => {
|
|
353
|
+
endDrag(event);
|
|
354
|
+
stopPlacing();
|
|
355
|
+
};
|
|
356
|
+
const onPointerOut = (event) => {
|
|
357
|
+
if (!dragRef.current && isElement(event.relatedTarget) && event.relatedTarget.tagName === "IFRAME") {
|
|
358
|
+
setInteraction("inactive");
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
ownerDocument.addEventListener("pointerdown", onPointerDown, true);
|
|
362
|
+
ownerDocument.addEventListener("pointermove", onPointerMove);
|
|
363
|
+
ownerDocument.addEventListener("pointerup", onPointerUp, true);
|
|
364
|
+
ownerDocument.addEventListener("pointercancel", onPointerCancel);
|
|
365
|
+
ownerDocument.addEventListener("contextmenu", onContextMenu, true);
|
|
366
|
+
ownerDocument.addEventListener("keydown", onKeyDown2, true);
|
|
367
|
+
ownerDocument.addEventListener("pointerout", onPointerOut);
|
|
368
|
+
targetWindow.addEventListener("blur", onBlur);
|
|
369
|
+
return () => {
|
|
370
|
+
ownerDocument.removeEventListener("pointerdown", onPointerDown, true);
|
|
371
|
+
ownerDocument.removeEventListener("pointermove", onPointerMove);
|
|
372
|
+
ownerDocument.removeEventListener("pointerup", onPointerUp, true);
|
|
373
|
+
ownerDocument.removeEventListener("pointercancel", onPointerCancel);
|
|
374
|
+
ownerDocument.removeEventListener("contextmenu", onContextMenu, true);
|
|
375
|
+
ownerDocument.removeEventListener("keydown", onKeyDown2, true);
|
|
376
|
+
ownerDocument.removeEventListener("pointerout", onPointerOut);
|
|
377
|
+
targetWindow.removeEventListener("blur", onBlur);
|
|
378
|
+
dragRef.current = null;
|
|
379
|
+
placingRef.current = null;
|
|
380
|
+
setInteraction("inactive");
|
|
381
|
+
};
|
|
382
|
+
}, [
|
|
383
|
+
enabled,
|
|
384
|
+
element,
|
|
385
|
+
targetWindow,
|
|
386
|
+
isHandle,
|
|
387
|
+
startDrag,
|
|
388
|
+
moveDrag,
|
|
389
|
+
endDrag,
|
|
390
|
+
cancelDrag,
|
|
391
|
+
startPlacing,
|
|
392
|
+
stopPlacing
|
|
393
|
+
]);
|
|
394
|
+
const showResizeCursor = interaction !== "inactive";
|
|
395
|
+
useEffect(() => {
|
|
396
|
+
if (!showResizeCursor || !targetWindow) return;
|
|
397
|
+
return setDocumentCursor(
|
|
398
|
+
targetWindow.document,
|
|
399
|
+
horizontal ? "var(--salt-cursor-drag-ew, ew-resize)" : "var(--salt-cursor-drag-ns, ns-resize)"
|
|
400
|
+
);
|
|
401
|
+
}, [showResizeCursor, targetWindow, horizontal]);
|
|
402
|
+
const onKeyDown = useEventCallback(
|
|
403
|
+
(event) => {
|
|
404
|
+
const { key } = event;
|
|
405
|
+
if (placingRef.current) {
|
|
406
|
+
stopPlacing();
|
|
407
|
+
if (key === "Escape") {
|
|
408
|
+
event.preventDefault();
|
|
409
|
+
cancelResizeEventRef.current = event.nativeEvent;
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
const resizeKeys = horizontal ? ["ArrowLeft", "ArrowRight"] : ["ArrowUp", "ArrowDown"];
|
|
414
|
+
if (!resizeKeys.includes(key) && key !== "Home" && key !== "End" && key !== "Enter") {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
const current = readMetrics(true);
|
|
418
|
+
if (!current) return;
|
|
419
|
+
event.preventDefault();
|
|
420
|
+
const collapsed = current.current <= current.min + 1;
|
|
421
|
+
let nextSize;
|
|
422
|
+
if (key === "Home") {
|
|
423
|
+
if (!collapsed) {
|
|
424
|
+
restoreSizeRef.current = current.current;
|
|
425
|
+
}
|
|
426
|
+
nextSize = current.min;
|
|
427
|
+
} else if (key === "End") {
|
|
428
|
+
nextSize = current.max;
|
|
429
|
+
} else if (key === "Enter") {
|
|
430
|
+
if (collapsed) {
|
|
431
|
+
nextSize = restoreSizeRef.current ?? initialSizeRef.current ?? current.max;
|
|
432
|
+
} else {
|
|
433
|
+
restoreSizeRef.current = current.current;
|
|
434
|
+
nextSize = current.min;
|
|
435
|
+
}
|
|
436
|
+
} else {
|
|
437
|
+
const towardsHigherCoordinate = key === "ArrowRight" || key === "ArrowDown";
|
|
438
|
+
const direction = towardsHigherCoordinate === growsWithCoordinate(position) ? 1 : -1;
|
|
439
|
+
nextSize = current.current + KEYBOARD_STEP * direction;
|
|
440
|
+
}
|
|
441
|
+
nextSize = clamp(nextSize, current);
|
|
442
|
+
if (nextSize === current.current) return;
|
|
443
|
+
applySize(nextSize);
|
|
444
|
+
}
|
|
445
|
+
);
|
|
446
|
+
const isCancelResizeEvent = useCallback(
|
|
447
|
+
(event) => event !== void 0 && event === cancelResizeEventRef.current,
|
|
448
|
+
[]
|
|
449
|
+
);
|
|
450
|
+
const onFocus = useCallback(() => {
|
|
451
|
+
if (!dragRef.current) readMetrics();
|
|
452
|
+
}, [readMetrics]);
|
|
453
|
+
const setHandle = useCallback((node) => {
|
|
454
|
+
handleRef.current = node;
|
|
455
|
+
}, []);
|
|
456
|
+
useEffect(() => {
|
|
457
|
+
if (!enabled) {
|
|
458
|
+
setSizeState(void 0);
|
|
459
|
+
setMetrics(null);
|
|
460
|
+
restoreSizeRef.current = null;
|
|
461
|
+
initialSizeRef.current = null;
|
|
462
|
+
}
|
|
463
|
+
}, [enabled]);
|
|
464
|
+
useIsomorphicLayoutEffect(() => {
|
|
465
|
+
if (!enabled || !element) return;
|
|
466
|
+
if (axisRef.current !== horizontal) {
|
|
467
|
+
axisRef.current = horizontal;
|
|
468
|
+
restoreSizeRef.current = null;
|
|
469
|
+
initialSizeRef.current = null;
|
|
470
|
+
}
|
|
471
|
+
const next = readMetrics();
|
|
472
|
+
if (next && initialSizeRef.current === null) {
|
|
473
|
+
initialSizeRef.current = next.current;
|
|
474
|
+
}
|
|
475
|
+
}, [enabled, element, horizontal, readMetrics]);
|
|
476
|
+
useIsomorphicLayoutEffect(() => {
|
|
477
|
+
if (!enabled || !element) return;
|
|
478
|
+
readMetrics(true);
|
|
479
|
+
}, [enabled, element, size, readMetrics]);
|
|
480
|
+
useEffect(() => {
|
|
481
|
+
if (!enabled || !element || !targetWindow) return;
|
|
482
|
+
const onResize = () => {
|
|
483
|
+
stopPlacing();
|
|
484
|
+
readMetrics();
|
|
485
|
+
};
|
|
486
|
+
targetWindow.addEventListener("resize", onResize);
|
|
487
|
+
return () => targetWindow.removeEventListener("resize", onResize);
|
|
488
|
+
}, [enabled, element, targetWindow, readMetrics, stopPlacing]);
|
|
489
|
+
return {
|
|
490
|
+
sizeStyle: size !== void 0 ? { [horizontal ? "width" : "height"]: size } : void 0,
|
|
491
|
+
isResizing: interaction === "active" || interaction === "placing",
|
|
492
|
+
isHovered: interaction === "hover",
|
|
493
|
+
isPlacing: interaction === "placing",
|
|
494
|
+
isCancelResizeEvent,
|
|
495
|
+
separatorProps: {
|
|
496
|
+
role: "separator",
|
|
497
|
+
tabIndex: 0,
|
|
498
|
+
ref: setHandle,
|
|
499
|
+
"aria-orientation": horizontal ? "vertical" : "horizontal",
|
|
500
|
+
"aria-valuenow": metrics ? Math.round(metrics.current) : void 0,
|
|
501
|
+
"aria-valuemin": metrics ? Math.round(metrics.min) : void 0,
|
|
502
|
+
"aria-valuemax": metrics ? Math.round(metrics.max) : void 0,
|
|
503
|
+
onKeyDown,
|
|
504
|
+
onFocus
|
|
505
|
+
},
|
|
506
|
+
guideProps: {
|
|
507
|
+
ref: setGuide,
|
|
508
|
+
onPointerDown: onGuidePointerDown,
|
|
509
|
+
onPointerMove: onGuidePointerMove,
|
|
510
|
+
onClick: onGuideClick,
|
|
511
|
+
onContextMenu: stopPlacing
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
export { useDrawerResize };
|
|
517
|
+
//# sourceMappingURL=useDrawerResize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDrawerResize.js","sources":["../src/drawer/internal/useDrawerResize.ts"],"sourcesContent":["import { useWindow } from \"@salt-ds/window\";\nimport type {\n AriaAttributes,\n CSSProperties,\n KeyboardEvent as ReactKeyboardEvent,\n MouseEvent as ReactMouseEvent,\n PointerEvent as ReactPointerEvent,\n} from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useEventCallback, useIsomorphicLayoutEffect } from \"../../utils\";\nimport type { DrawerProps } from \"../Drawer\";\n\ntype DrawerPosition = NonNullable<DrawerProps[\"position\"]>;\n\ninterface Bounds {\n min: number;\n max: number;\n}\n\ninterface DragState extends Bounds {\n pointerId: number;\n startX: number;\n startY: number;\n originSize: number;\n previousSize: number;\n cancelSize: number | undefined;\n moved: boolean;\n}\n\n/** Click-to-place resizing */\ninterface PlacingState extends Bounds {\n /** In viewport coordinates. */\n guideOffset: number;\n /** The placing press started on the guide layer. */\n pressed: boolean;\n}\n\ntype Interaction = \"inactive\" | \"hover\" | \"active\" | \"placing\";\n\nexport interface SeparatorProps\n extends Pick<\n AriaAttributes,\n \"aria-orientation\" | \"aria-valuenow\" | \"aria-valuemin\" | \"aria-valuemax\"\n > {\n role: \"separator\";\n tabIndex: number;\n ref: (element: HTMLElement | null) => void;\n onKeyDown: (event: ReactKeyboardEvent<HTMLElement>) => void;\n onFocus: () => void;\n}\n\nexport interface GuideProps {\n ref: (element: HTMLElement | null) => void;\n onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\n onPointerMove: (event: ReactPointerEvent<HTMLElement>) => void;\n onClick: (event: ReactMouseEvent<HTMLElement>) => void;\n onContextMenu: () => void;\n}\n\nexport interface UseDrawerResizeProps {\n enabled: boolean;\n position: DrawerPosition;\n element: HTMLElement | null | undefined;\n}\n\nexport interface UseDrawerResizeResult {\n sizeStyle: CSSProperties | undefined;\n isResizing: boolean;\n isHovered: boolean;\n isPlacing: boolean;\n /** Whether the event is the Escape that cancelled a resize, so it shouldn't close the drawer. */\n isCancelResizeEvent: (event?: Event) => boolean;\n separatorProps: SeparatorProps;\n guideProps: GuideProps;\n}\n\nconst KEYBOARD_STEP = 8;\nconst PROBE_SIZE = 1e6;\n// A press that moves less than this is a click on the handle, not a drag.\nconst CLICK_THRESHOLD = 4;\n\nconst isElement = (target: EventTarget | null): target is Element =>\n target !== null && (target as Node).nodeType === 1;\n\nconst focusWithoutRing = (element: HTMLElement | null) =>\n element?.focus({\n preventScroll: true,\n focusVisible: false,\n } as FocusOptions);\n\n/** Shows the cursor everywhere in the document, over any element's own cursor. */\nconst setDocumentCursor = (ownerDocument: Document, cursor: string) => {\n const view = ownerDocument.defaultView as (Window & typeof globalThis) | null;\n if (!view || !ownerDocument.adoptedStyleSheets) return undefined;\n const sheet = new view.CSSStyleSheet();\n sheet.replaceSync(`*, *:hover { cursor: ${cursor} !important; }`);\n ownerDocument.adoptedStyleSheets = [\n ...ownerDocument.adoptedStyleSheets,\n sheet,\n ];\n return () => {\n ownerDocument.adoptedStyleSheets = ownerDocument.adoptedStyleSheets.filter(\n (adopted) => adopted !== sheet,\n );\n };\n};\n\nconst isHorizontal = (position: DrawerPosition) =>\n position === \"left\" || position === \"right\";\n\nconst growsWithCoordinate = (position: DrawerPosition) =>\n position === \"left\" || position === \"top\";\n\nconst measure = (element: HTMLElement, horizontal: boolean) => {\n const { width, height } = element.getBoundingClientRect();\n return horizontal ? width : height;\n};\n\nconst restoreStyle = (\n style: CSSStyleDeclaration,\n property: string,\n value: string,\n priority: string,\n) => {\n if (value) {\n style.setProperty(property, value, priority);\n } else {\n style.removeProperty(property);\n }\n};\n\n/** Resolves the drawer's CSS min/max size by briefly forcing it to both extremes. */\nconst probeBounds = (element: HTMLElement, horizontal: boolean): Bounds => {\n const property = horizontal ? \"width\" : \"height\";\n const { style } = element;\n const previousValue = style.getPropertyValue(property);\n const previousPriority = style.getPropertyPriority(property);\n const previousTransition = style.getPropertyValue(\"transition-property\");\n const previousTransitionPriority = style.getPropertyPriority(\n \"transition-property\",\n );\n\n // A transition would report the current size at both extremes.\n style.setProperty(\"transition-property\", \"none\", \"important\");\n style.setProperty(property, \"0px\", \"important\");\n const min = measure(element, horizontal);\n style.setProperty(property, `${PROBE_SIZE}px`, \"important\");\n const max = measure(element, horizontal);\n\n restoreStyle(style, property, previousValue, previousPriority);\n // Applies the restored size before transitions return, so it doesn't animate.\n measure(element, horizontal);\n restoreStyle(\n style,\n \"transition-property\",\n previousTransition,\n previousTransitionPriority,\n );\n\n return { min, max: Math.max(min, max) };\n};\n\nconst clamp = (value: number, { min, max }: Bounds) =>\n Math.min(Math.max(value, min), max);\n\n/** Size the drawer needs for its moving edge to sit at the given point. */\nconst sizeFromPoint = (\n rect: DOMRect,\n position: DrawerPosition,\n { clientX: x, clientY: y }: Pick<MouseEvent, \"clientX\" | \"clientY\">,\n) => {\n switch (position) {\n case \"left\":\n return x - rect.left;\n case \"right\":\n return rect.right - x;\n case \"top\":\n return y - rect.top;\n case \"bottom\":\n return rect.bottom - y;\n }\n};\n\n/** Viewport coordinate of the moving edge for a given size. */\nconst edgeFromSize = (\n rect: DOMRect,\n position: DrawerPosition,\n size: number,\n) => {\n switch (position) {\n case \"left\":\n return rect.left + size;\n case \"right\":\n return rect.right - size;\n case \"top\":\n return rect.top + size;\n case \"bottom\":\n return rect.bottom - size;\n }\n};\n\nexport function useDrawerResize({\n enabled,\n position,\n element,\n}: UseDrawerResizeProps): UseDrawerResizeResult {\n const horizontal = isHorizontal(position);\n const targetWindow = useWindow();\n\n // Unset until the user resizes, so the drawer keeps its CSS size.\n const [sizeState, setSizeState] = useState<number | undefined>(undefined);\n // Drop the size when `position` switches axis.\n const [sizeAxisHorizontal, setSizeAxisHorizontal] = useState(horizontal);\n const size =\n enabled && sizeAxisHorizontal === horizontal ? sizeState : undefined;\n\n const [interaction, setInteraction] = useState<Interaction>(\"inactive\");\n const [metrics, setMetrics] = useState<(Bounds & { current: number }) | null>(\n null,\n );\n const dragRef = useRef<DragState | null>(null);\n const placingRef = useRef<PlacingState | null>(null);\n const handleRef = useRef<HTMLElement | null>(null);\n const guideRef = useRef<HTMLElement | null>(null);\n const cancelResizeEventRef = useRef<Event | null>(null);\n const restoreSizeRef = useRef<number | null>(null);\n const initialSizeRef = useRef<number | null>(null);\n const axisRef = useRef(horizontal);\n\n // Probing forces layout, so key presses reuse the last bounds.\n const boundsRef = useRef<Bounds | null>(null);\n\n const readMetrics = useEventCallback((reuseBounds = false) => {\n if (!element) return null;\n const bounds =\n reuseBounds && boundsRef.current\n ? boundsRef.current\n : probeBounds(element, horizontal);\n boundsRef.current = bounds;\n const current = clamp(measure(element, horizontal), bounds);\n const next = { ...bounds, current };\n setMetrics(next);\n return next;\n });\n\n const applySize = (nextSize: number) => {\n setSizeState(nextSize);\n setSizeAxisHorizontal(horizontal);\n };\n\n const isOverHandle = ({\n clientX: x,\n clientY: y,\n }: Pick<MouseEvent, \"clientX\" | \"clientY\">) => {\n const rect = handleRef.current?.getBoundingClientRect();\n return (\n rect !== undefined &&\n x >= rect.left &&\n x <= rect.right &&\n y >= rect.top &&\n y <= rect.bottom\n );\n };\n\n const isHandle = useEventCallback(\n (target: EventTarget | null) =>\n enabled &&\n isElement(target) &&\n handleRef.current?.contains(target) === true,\n );\n\n const startDrag = useEventCallback((event: PointerEvent) => {\n const current = readMetrics();\n if (!current) return;\n\n event.preventDefault();\n dragRef.current = {\n pointerId: event.pointerId,\n startX: event.clientX,\n startY: event.clientY,\n originSize: current.current,\n previousSize: current.current,\n cancelSize: size,\n min: current.min,\n max: current.max,\n moved: false,\n };\n focusWithoutRing(handleRef.current);\n setInteraction(\"active\");\n });\n\n const moveDrag = useEventCallback((event: PointerEvent, drag: DragState) => {\n // Small movement keeps the press a click, so it can start placing the edge by click.\n if (!drag.moved) {\n if (\n Math.hypot(event.clientX - drag.startX, event.clientY - drag.startY) <\n CLICK_THRESHOLD\n ) {\n return;\n }\n drag.moved = true;\n try {\n handleRef.current?.setPointerCapture(event.pointerId);\n } catch {\n // The pointer is no longer active.\n }\n }\n\n const coordinate = horizontal ? event.clientX : event.clientY;\n const origin = horizontal ? drag.startX : drag.startY;\n const direction = growsWithCoordinate(position) ? 1 : -1;\n const nextSize = clamp(\n drag.originSize + (coordinate - origin) * direction,\n drag,\n );\n if (nextSize !== drag.previousSize) {\n drag.previousSize = nextSize;\n applySize(nextSize);\n }\n });\n\n // Set directly, to avoid a re-render on every pointer move.\n const moveGuide = (offset: number) => {\n const placing = placingRef.current;\n if (!placing) return;\n placing.guideOffset = offset;\n guideRef.current?.style.setProperty(\n \"--drawerResizeGuide-offset\",\n `${offset}px`,\n );\n };\n\n const setGuide = useCallback((node: HTMLElement | null) => {\n guideRef.current = node;\n const placing = placingRef.current;\n if (node && placing) {\n node.style.setProperty(\n \"--drawerResizeGuide-offset\",\n `${placing.guideOffset}px`,\n );\n }\n }, []);\n\n const startPlacing = useEventCallback((drag: DragState) => {\n if (!element) return;\n placingRef.current = {\n min: drag.min,\n max: drag.max,\n guideOffset: edgeFromSize(\n element.getBoundingClientRect(),\n position,\n drag.originSize,\n ),\n pressed: false,\n };\n setInteraction(\"placing\");\n });\n\n const stopPlacing = useEventCallback(() => {\n if (!placingRef.current) return;\n placingRef.current = null;\n setInteraction(\"inactive\");\n });\n\n const endDrag = useEventCallback((event: Event) => {\n const drag = dragRef.current;\n if (!drag) return;\n dragRef.current = null;\n // Pointer capture retargets the release to the handle.\n const pointer = event as PointerEvent;\n const stillHovered =\n \"pointerType\" in event &&\n pointer.pointerType !== \"touch\" &&\n isHandle(\n handleRef.current?.ownerDocument.elementFromPoint(\n pointer.clientX,\n pointer.clientY,\n ) ?? null,\n );\n setInteraction(stillHovered ? \"hover\" : \"inactive\");\n });\n\n const cancelDrag = useEventCallback((event: KeyboardEvent) => {\n const drag = dragRef.current;\n if (!drag) return;\n const handle = handleRef.current;\n if (handle?.hasPointerCapture(drag.pointerId)) {\n handle.releasePointerCapture(drag.pointerId);\n }\n setSizeState(drag.cancelSize);\n endDrag(event);\n });\n\n const sizeToPlace = (\n target: HTMLElement,\n rect: DOMRect,\n point: Pick<MouseEvent, \"clientX\" | \"clientY\">,\n bounds: Bounds,\n ) =>\n clamp(\n isOverHandle(point)\n ? measure(target, horizontal)\n : sizeFromPoint(rect, position, point),\n bounds,\n );\n\n const moveGuideToPointer = (\n event: Pick<MouseEvent, \"clientX\" | \"clientY\">,\n ) => {\n const placing = placingRef.current;\n if (!placing || !element) return;\n const rect = element.getBoundingClientRect();\n moveGuide(\n edgeFromSize(rect, position, sizeToPlace(element, rect, event, placing)),\n );\n };\n\n const onGuidePointerDown = useEventCallback(\n (event: ReactPointerEvent<HTMLElement>) => {\n const placing = placingRef.current;\n if (!placing) return;\n if (event.pointerType === \"mouse\" && event.button > 0) {\n stopPlacing();\n return;\n }\n // Keeps focus on the handle.\n event.preventDefault();\n // React bubbles events from the portal up to the drawer.\n event.stopPropagation();\n placing.pressed = true;\n moveGuideToPointer(event);\n },\n );\n\n const onGuidePointerMove = useEventCallback(\n (event: ReactPointerEvent<HTMLElement>) => {\n moveGuideToPointer(event);\n },\n );\n\n const onGuideClick = useEventCallback(\n (event: ReactMouseEvent<HTMLElement>) => {\n const placing = placingRef.current;\n // Ignores the click that started placing.\n if (!placing?.pressed || !element) return;\n event.stopPropagation();\n stopPlacing();\n // The drawer may have moved since placing started, e.g. while sliding in.\n const rect = element.getBoundingClientRect();\n const nextSize = sizeToPlace(element, rect, event, placing);\n const current = clamp(measure(element, horizontal), placing);\n if (nextSize !== current) {\n applySize(nextSize);\n }\n focusWithoutRing(handleRef.current);\n },\n );\n\n useEffect(() => {\n if (!enabled || !element || !targetWindow) return;\n const ownerDocument = targetWindow.document;\n\n const onPointerDown = (event: PointerEvent) => {\n if (event.defaultPrevented || !event.isPrimary) return;\n if (event.pointerType === \"mouse\" && event.button > 0) return;\n if (placingRef.current || dragRef.current || !isHandle(event.target)) {\n return;\n }\n startDrag(event);\n };\n\n const onPointerMove = (event: PointerEvent) => {\n if (event.defaultPrevented) return;\n if (placingRef.current) return;\n const drag = dragRef.current;\n if (!drag) {\n // Touch has no hover, so it would leave the hover state behind.\n if (event.pointerType !== \"touch\") {\n setInteraction(isHandle(event.target) ? \"hover\" : \"inactive\");\n }\n return;\n }\n if (event.pointerId !== drag.pointerId) return;\n // No buttons pressed means the release was missed, e.g. over an iframe.\n if (event.buttons === 0) {\n endDrag(event);\n return;\n }\n moveDrag(event, drag);\n };\n\n const onPointerUp = (event: PointerEvent) => {\n if (event.defaultPrevented) return;\n if (event.pointerType === \"mouse\" && event.button > 0) return;\n const drag = dragRef.current;\n if (drag?.pointerId !== event.pointerId) return;\n event.preventDefault();\n if (!drag.moved) {\n dragRef.current = null;\n startPlacing(drag);\n return;\n }\n endDrag(event);\n };\n\n const onPointerCancel = (event: PointerEvent) => {\n if (dragRef.current?.pointerId === event.pointerId) endDrag(event);\n };\n\n const onContextMenu = (event: MouseEvent) => {\n if (!event.defaultPrevented) endDrag(event);\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\" || !dragRef.current) return;\n event.preventDefault();\n cancelResizeEventRef.current = event;\n cancelDrag(event);\n };\n\n const onBlur = (event: FocusEvent) => {\n endDrag(event);\n stopPlacing();\n };\n\n // \"pointerout\" doesn't fire when the pointer moves into an iframe, so hover would stick.\n const onPointerOut = (event: PointerEvent) => {\n if (\n !dragRef.current &&\n isElement(event.relatedTarget) &&\n event.relatedTarget.tagName === \"IFRAME\"\n ) {\n setInteraction(\"inactive\");\n }\n };\n\n ownerDocument.addEventListener(\"pointerdown\", onPointerDown, true);\n ownerDocument.addEventListener(\"pointermove\", onPointerMove);\n ownerDocument.addEventListener(\"pointerup\", onPointerUp, true);\n ownerDocument.addEventListener(\"pointercancel\", onPointerCancel);\n ownerDocument.addEventListener(\"contextmenu\", onContextMenu, true);\n // Capture, to run before the drawer closes on Escape.\n ownerDocument.addEventListener(\"keydown\", onKeyDown, true);\n ownerDocument.addEventListener(\"pointerout\", onPointerOut);\n targetWindow.addEventListener(\"blur\", onBlur);\n return () => {\n ownerDocument.removeEventListener(\"pointerdown\", onPointerDown, true);\n ownerDocument.removeEventListener(\"pointermove\", onPointerMove);\n ownerDocument.removeEventListener(\"pointerup\", onPointerUp, true);\n ownerDocument.removeEventListener(\"pointercancel\", onPointerCancel);\n ownerDocument.removeEventListener(\"contextmenu\", onContextMenu, true);\n ownerDocument.removeEventListener(\"keydown\", onKeyDown, true);\n ownerDocument.removeEventListener(\"pointerout\", onPointerOut);\n targetWindow.removeEventListener(\"blur\", onBlur);\n dragRef.current = null;\n placingRef.current = null;\n setInteraction(\"inactive\");\n };\n }, [\n enabled,\n element,\n targetWindow,\n isHandle,\n startDrag,\n moveDrag,\n endDrag,\n cancelDrag,\n startPlacing,\n stopPlacing,\n ]);\n\n const showResizeCursor = interaction !== \"inactive\";\n useEffect(() => {\n if (!showResizeCursor || !targetWindow) return;\n return setDocumentCursor(\n targetWindow.document,\n horizontal\n ? \"var(--salt-cursor-drag-ew, ew-resize)\"\n : \"var(--salt-cursor-drag-ns, ns-resize)\",\n );\n }, [showResizeCursor, targetWindow, horizontal]);\n\n const onKeyDown = useEventCallback(\n (event: ReactKeyboardEvent<HTMLElement>) => {\n const { key } = event;\n if (placingRef.current) {\n stopPlacing();\n if (key === \"Escape\") {\n event.preventDefault();\n cancelResizeEventRef.current = event.nativeEvent;\n return;\n }\n }\n const resizeKeys = horizontal\n ? [\"ArrowLeft\", \"ArrowRight\"]\n : [\"ArrowUp\", \"ArrowDown\"];\n if (\n !resizeKeys.includes(key) &&\n key !== \"Home\" &&\n key !== \"End\" &&\n key !== \"Enter\"\n ) {\n return;\n }\n\n const current = readMetrics(true);\n if (!current) return;\n\n event.preventDefault();\n\n const collapsed = current.current <= current.min + 1;\n let nextSize: number;\n if (key === \"Home\") {\n if (!collapsed) {\n restoreSizeRef.current = current.current;\n }\n nextSize = current.min;\n } else if (key === \"End\") {\n nextSize = current.max;\n } else if (key === \"Enter\") {\n if (collapsed) {\n nextSize =\n restoreSizeRef.current ?? initialSizeRef.current ?? current.max;\n } else {\n restoreSizeRef.current = current.current;\n nextSize = current.min;\n }\n } else {\n const towardsHigherCoordinate =\n key === \"ArrowRight\" || key === \"ArrowDown\";\n const direction =\n towardsHigherCoordinate === growsWithCoordinate(position) ? 1 : -1;\n nextSize = current.current + KEYBOARD_STEP * direction;\n }\n\n nextSize = clamp(nextSize, current);\n if (nextSize === current.current) return;\n applySize(nextSize);\n },\n );\n\n const isCancelResizeEvent = useCallback(\n (event?: Event) =>\n event !== undefined && event === cancelResizeEventRef.current,\n [],\n );\n\n const onFocus = useCallback(() => {\n if (!dragRef.current) readMetrics();\n }, [readMetrics]);\n\n const setHandle = useCallback((node: HTMLElement | null) => {\n handleRef.current = node;\n }, []);\n\n useEffect(() => {\n if (!enabled) {\n setSizeState(undefined);\n setMetrics(null);\n restoreSizeRef.current = null;\n initialSizeRef.current = null;\n }\n }, [enabled]);\n\n useIsomorphicLayoutEffect(() => {\n if (!enabled || !element) return;\n if (axisRef.current !== horizontal) {\n axisRef.current = horizontal;\n restoreSizeRef.current = null;\n initialSizeRef.current = null;\n }\n const next = readMetrics();\n if (next && initialSizeRef.current === null) {\n initialSizeRef.current = next.current;\n }\n }, [enabled, element, horizontal, readMetrics]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-syncs the separator's aria values whenever the size changes.\n useIsomorphicLayoutEffect(() => {\n if (!enabled || !element) return;\n readMetrics(true);\n }, [enabled, element, size, readMetrics]);\n\n useEffect(() => {\n if (!enabled || !element || !targetWindow) return;\n const onResize = () => {\n // The size limits stored for placing are stale after the window resizes.\n stopPlacing();\n readMetrics();\n };\n targetWindow.addEventListener(\"resize\", onResize);\n return () => targetWindow.removeEventListener(\"resize\", onResize);\n }, [enabled, element, targetWindow, readMetrics, stopPlacing]);\n\n return {\n sizeStyle:\n size !== undefined\n ? { [horizontal ? \"width\" : \"height\"]: size }\n : undefined,\n isResizing: interaction === \"active\" || interaction === \"placing\",\n isHovered: interaction === \"hover\",\n isPlacing: interaction === \"placing\",\n isCancelResizeEvent,\n separatorProps: {\n role: \"separator\",\n tabIndex: 0,\n ref: setHandle,\n \"aria-orientation\": horizontal ? \"vertical\" : \"horizontal\",\n \"aria-valuenow\": metrics ? Math.round(metrics.current) : undefined,\n \"aria-valuemin\": metrics ? Math.round(metrics.min) : undefined,\n \"aria-valuemax\": metrics ? Math.round(metrics.max) : undefined,\n onKeyDown,\n onFocus,\n },\n guideProps: {\n ref: setGuide,\n onPointerDown: onGuidePointerDown,\n onPointerMove: onGuidePointerMove,\n onClick: onGuideClick,\n onContextMenu: stopPlacing,\n },\n };\n}\n"],"names":["onKeyDown"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var css_248z = ".saltDropdown {\n all: unset;\n box-sizing: border-box;\n min-width: 4em;\n width: 100%;\n background: var(--dropdown-background);\n min-height: var(--salt-size-base);\n border-radius: var(--salt-palette-corner-weak, 0);\n display: inline-flex;\n align-items: center;\n padding: 0 var(--salt-spacing-100);\n color: var(--dropdown-color);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n position: relative;\n overflow: hidden;\n}\n\n.saltDropdown:hover {\n cursor: var(--salt-cursor-hover);\n}\n\n.saltDropdown-bordered.saltDropdown {\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--dropdown-borderColor);\n}\n\n.saltDropdown-bordered.saltDropdown:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--dropdown-borderColor-hover);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltDropdown-bordered.saltDropdown:focus,\n.saltDropdown-bordered.saltDropdown:focus:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--dropdown-borderColor-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltDropdown-bordered.saltDropdown[aria-readonly=\"true\"],\n.saltDropdown-bordered.saltDropdown[aria-readonly=\"true\"]:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltDropdown-bordered.saltDropdown-disabled,\n.saltDropdown-bordered.saltDropdown-disabled:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltDropdown-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--dropdown-borderColor);\n}\n\n.saltDropdown:hover .saltDropdown-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--dropdown-borderColor-hover);\n}\n\n.saltDropdown:focus .saltDropdown-activationIndicator,\n.saltDropdown:focus:hover .saltDropdown-activationIndicator {\n border-bottom: var(--salt-size-fixed-200) var(--salt-borderStyle-solid) var(--dropdown-borderColor-active);\n}\n\n.saltDropdown[aria-readonly=\"true\"] .saltDropdown-activationIndicator,\n.saltDropdown[aria-readonly=\"true\"]:hover .saltDropdown-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltDropdown-disabled .saltDropdown-activationIndicator,\n.saltDropdown-disabled:hover .saltDropdown-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltDropdown-bordered .saltDropdown-activationIndicator,\n.saltDropdown-bordered.saltDropdown[aria-readonly=\"true\"] .saltDropdown-activationIndicator,\n.saltDropdown-bordered.saltDropdown-disabled:hover .saltDropdown-activationIndicator {\n border-bottom-width: 0;\n}\n\n.saltDropdown-bordered.saltDropdown:focus .saltDropdown-activationIndicator {\n /* Activation indicator width minus the border from the input. */\n border-bottom-width: var(--salt-size-fixed-100);\n}\n\n.saltDropdown-primary {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-editable-primary-background);\n --dropdown-background-disabled: var(--salt-editable-primary-background-disabled);\n --dropdown-background-readonly: var(--salt-editable-background-readonly);\n --dropdown-borderColor: var(--salt-editable-borderColor);\n --dropdown-borderColor-active: var(--salt-editable-borderColor-active);\n --dropdown-borderColor-hover: var(--salt-editable-borderColor-hover);\n --dropdown-outlineColor: var(--salt-focused-outlineColor);\n}\n\n.saltDropdown-secondary {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-editable-secondary-background);\n --dropdown-background-disabled: var(--salt-editable-secondary-background-disabled);\n --dropdown-background-readonly: var(--salt-editable-background-readonly);\n --dropdown-borderColor: var(--salt-editable-borderColor);\n --dropdown-borderColor-active: var(--salt-editable-borderColor-active);\n --dropdown-borderColor-hover: var(--salt-editable-borderColor-hover);\n --dropdown-outlineColor: var(--salt-focused-outlineColor);\n}\n\n.saltDropdown-tertiary {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-editable-tertiary-background);\n --dropdown-background-disabled: var(--salt-editable-tertiary-background-disabled);\n --dropdown-background-readonly: var(--salt-editable-background-readonly);\n --dropdown-borderColor: var(--salt-editable-borderColor);\n --dropdown-borderColor-active: var(--salt-editable-borderColor-active);\n --dropdown-borderColor-hover: var(--salt-editable-borderColor-hover);\n --dropdown-outlineColor: var(--salt-focused-outlineColor);\n}\n\n.saltDropdown-error {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-status-error-background);\n --dropdown-background-readonly: var(--salt-status-error-background);\n --dropdown-borderColor: var(--salt-status-error-borderColor);\n --dropdown-borderColor-active: var(--salt-status-error-borderColor);\n --dropdown-borderColor-hover: var(--salt-status-error-borderColor);\n --dropdown-outlineColor: var(--salt-status-error-borderColor);\n}\n\n.saltDropdown-warning {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-status-warning-background);\n --dropdown-background-readonly: var(--salt-status-warning-background);\n --dropdown-borderColor: var(--salt-status-warning-borderColor);\n --dropdown-borderColor-active: var(--salt-status-warning-borderColor);\n --dropdown-borderColor-hover: var(--salt-status-warning-borderColor);\n --dropdown-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n.saltDropdown-success {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-status-success-background);\n --dropdown-background-readonly: var(--salt-status-success-background);\n --dropdown-borderColor: var(--salt-status-success-borderColor);\n --dropdown-borderColor-active: var(--salt-status-success-borderColor);\n --dropdown-borderColor-hover: var(--salt-status-success-borderColor);\n --dropdown-outlineColor: var(--salt-status-success-borderColor);\n}\n\n.saltDropdown:focus,\n.saltDropdown:focus:hover {\n cursor: var(--salt-cursor-hover);\n outline: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--dropdown-outlineColor);\n}\n\n.saltDropdown.saltDropdown[aria-readonly=\"true\"] {\n background: var(--dropdown-background-readonly);\n cursor: var(--salt-cursor-readonly);\n}\n\n.saltDropdown.saltDropdown:disabled,\n.saltDropdown.saltDropdown:disabled:hover {\n background: var(--dropdown-background-disabled);\n cursor: var(--salt-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n.saltDropdown-content {\n flex: 1;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n text-wrap: nowrap;\n}\n\n.saltDropdown-placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-
|
|
1
|
+
var css_248z = ".saltDropdown {\n all: unset;\n box-sizing: border-box;\n min-width: 4em;\n width: 100%;\n background: var(--dropdown-background);\n min-height: var(--salt-size-base);\n border-radius: var(--salt-palette-corner-weak, 0);\n display: inline-flex;\n align-items: center;\n padding: 0 var(--salt-spacing-100);\n color: var(--dropdown-color);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n position: relative;\n overflow: hidden;\n}\n\n.saltDropdown:hover {\n cursor: var(--salt-cursor-hover);\n}\n\n.saltDropdown-bordered.saltDropdown {\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--dropdown-borderColor);\n}\n\n.saltDropdown-bordered.saltDropdown:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--dropdown-borderColor-hover);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltDropdown-bordered.saltDropdown:focus,\n.saltDropdown-bordered.saltDropdown:focus:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--dropdown-borderColor-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltDropdown-bordered.saltDropdown[aria-readonly=\"true\"],\n.saltDropdown-bordered.saltDropdown[aria-readonly=\"true\"]:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltDropdown-bordered.saltDropdown-disabled,\n.saltDropdown-bordered.saltDropdown-disabled:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltDropdown-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--dropdown-borderColor);\n}\n\n.saltDropdown:hover .saltDropdown-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--dropdown-borderColor-hover);\n}\n\n.saltDropdown:focus .saltDropdown-activationIndicator,\n.saltDropdown:focus:hover .saltDropdown-activationIndicator {\n border-bottom: var(--salt-size-fixed-200) var(--salt-borderStyle-solid) var(--dropdown-borderColor-active);\n}\n\n.saltDropdown[aria-readonly=\"true\"] .saltDropdown-activationIndicator,\n.saltDropdown[aria-readonly=\"true\"]:hover .saltDropdown-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltDropdown-disabled .saltDropdown-activationIndicator,\n.saltDropdown-disabled:hover .saltDropdown-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltDropdown-bordered .saltDropdown-activationIndicator,\n.saltDropdown-bordered.saltDropdown[aria-readonly=\"true\"] .saltDropdown-activationIndicator,\n.saltDropdown-bordered.saltDropdown-disabled:hover .saltDropdown-activationIndicator {\n border-bottom-width: 0;\n}\n\n.saltDropdown-bordered.saltDropdown:focus .saltDropdown-activationIndicator {\n /* Activation indicator width minus the border from the input. */\n border-bottom-width: var(--salt-size-fixed-100);\n}\n\n.saltDropdown-primary {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-editable-primary-background);\n --dropdown-background-disabled: var(--salt-editable-primary-background-disabled);\n --dropdown-background-readonly: var(--salt-editable-background-readonly);\n --dropdown-borderColor: var(--salt-editable-borderColor);\n --dropdown-borderColor-active: var(--salt-editable-borderColor-active);\n --dropdown-borderColor-hover: var(--salt-editable-borderColor-hover);\n --dropdown-outlineColor: var(--salt-focused-outlineColor);\n}\n\n.saltDropdown-secondary {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-editable-secondary-background);\n --dropdown-background-disabled: var(--salt-editable-secondary-background-disabled);\n --dropdown-background-readonly: var(--salt-editable-background-readonly);\n --dropdown-borderColor: var(--salt-editable-borderColor);\n --dropdown-borderColor-active: var(--salt-editable-borderColor-active);\n --dropdown-borderColor-hover: var(--salt-editable-borderColor-hover);\n --dropdown-outlineColor: var(--salt-focused-outlineColor);\n}\n\n.saltDropdown-tertiary {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-editable-tertiary-background);\n --dropdown-background-disabled: var(--salt-editable-tertiary-background-disabled);\n --dropdown-background-readonly: var(--salt-editable-background-readonly);\n --dropdown-borderColor: var(--salt-editable-borderColor);\n --dropdown-borderColor-active: var(--salt-editable-borderColor-active);\n --dropdown-borderColor-hover: var(--salt-editable-borderColor-hover);\n --dropdown-outlineColor: var(--salt-focused-outlineColor);\n}\n\n.saltDropdown-error {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-status-error-background);\n --dropdown-background-readonly: var(--salt-status-error-background);\n --dropdown-borderColor: var(--salt-status-error-borderColor);\n --dropdown-borderColor-active: var(--salt-status-error-borderColor);\n --dropdown-borderColor-hover: var(--salt-status-error-borderColor);\n --dropdown-outlineColor: var(--salt-status-error-borderColor);\n}\n\n.saltDropdown-warning {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-status-warning-background);\n --dropdown-background-readonly: var(--salt-status-warning-background);\n --dropdown-borderColor: var(--salt-status-warning-borderColor);\n --dropdown-borderColor-active: var(--salt-status-warning-borderColor);\n --dropdown-borderColor-hover: var(--salt-status-warning-borderColor);\n --dropdown-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n.saltDropdown-success {\n --dropdown-color: var(--salt-content-primary-foreground);\n --dropdown-background: var(--salt-status-success-background);\n --dropdown-background-readonly: var(--salt-status-success-background);\n --dropdown-borderColor: var(--salt-status-success-borderColor);\n --dropdown-borderColor-active: var(--salt-status-success-borderColor);\n --dropdown-borderColor-hover: var(--salt-status-success-borderColor);\n --dropdown-outlineColor: var(--salt-status-success-borderColor);\n}\n\n.saltDropdown:focus,\n.saltDropdown:focus:hover {\n cursor: var(--salt-cursor-hover);\n outline: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--dropdown-outlineColor);\n}\n\n.saltDropdown.saltDropdown[aria-readonly=\"true\"] {\n background: var(--dropdown-background-readonly);\n cursor: var(--salt-cursor-readonly);\n}\n\n.saltDropdown.saltDropdown:disabled,\n.saltDropdown.saltDropdown:disabled:hover {\n background: var(--dropdown-background-disabled);\n cursor: var(--salt-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n.saltDropdown-content {\n flex: 1;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n text-wrap: nowrap;\n}\n\n.saltDropdown-placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-lighter);\n}\n\n.saltDropdown-startAdornmentContainer {\n margin-right: var(--salt-spacing-100);\n}\n\n.saltDropdown .saltDropdown-toggle {\n margin-left: var(--salt-spacing-100);\n}\n";
|
|
2
2
|
|
|
3
3
|
export { css_248z as default };
|
|
4
4
|
//# sourceMappingURL=Dropdown.css.js.map
|
|
@@ -150,7 +150,7 @@ const Dropdown = forwardRef(function Dropdown2(props, ref) {
|
|
|
150
150
|
const handleTriggerRef = useForkRef(reference, buttonRef);
|
|
151
151
|
const handleButtonRef = useForkRef(handleTriggerRef, ref);
|
|
152
152
|
const typeaheadString = useRef("");
|
|
153
|
-
const typeaheadTimeout = useRef();
|
|
153
|
+
const typeaheadTimeout = useRef(void 0);
|
|
154
154
|
const handleTypeahead = (event) => {
|
|
155
155
|
if (typeaheadTimeout.current) {
|
|
156
156
|
clearTimeout(typeaheadTimeout.current);
|