reshaped 3.4.2 → 3.4.4
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 +7 -0
- package/dist/bundle.css +1 -1
- package/dist/bundle.d.ts +8 -6
- package/dist/bundle.js +11 -11
- package/dist/components/Accordion/Accordion.d.ts +9 -2
- package/dist/components/Accordion/Accordion.js +1 -0
- package/dist/components/Accordion/AccordionContent.d.ts +4 -1
- package/dist/components/Accordion/AccordionContent.js +1 -0
- package/dist/components/Accordion/AccordionControlled.d.ts +4 -1
- package/dist/components/Accordion/AccordionControlled.js +1 -0
- package/dist/components/Accordion/AccordionTrigger.d.ts +4 -1
- package/dist/components/Accordion/AccordionTrigger.js +1 -0
- package/dist/components/Accordion/AccordionUncontrolled.d.ts +4 -1
- package/dist/components/Accordion/AccordionUncontrolled.js +1 -0
- package/dist/components/Accordion/tests/Accordion.stories.d.ts +9 -2
- package/dist/components/Accordion/tests/Accordion.stories.js +1 -1
- package/dist/components/ActionBar/ActionBar.d.ts +4 -1
- package/dist/components/ActionBar/ActionBar.js +1 -0
- package/dist/components/ActionBar/tests/ActionBar.stories.d.ts +4 -1
- package/dist/components/ActionBar/tests/ActionBar.test.stories.d.ts +4 -1
- package/dist/components/Actionable/Actionable.js +1 -0
- package/dist/components/Actionable/tests/Actionable.stories.js +1 -1
- package/dist/components/Actionable/tests/Actionable.test.stories.js +1 -1
- package/dist/components/Alert/Alert.d.ts +4 -1
- package/dist/components/Alert/Alert.js +1 -0
- package/dist/components/Alert/tests/Alert.stories.d.ts +4 -1
- package/dist/components/Alert/tests/Alert.test.stories.d.ts +4 -1
- package/dist/components/Autocomplete/Autocomplete.d.ts +5 -1
- package/dist/components/Autocomplete/Autocomplete.js +2 -0
- package/dist/components/Autocomplete/tests/Autocomplete.stories.d.ts +5 -1
- package/dist/components/Autocomplete/tests/Autocomplete.test.stories.d.ts +5 -1
- package/dist/components/Avatar/Avatar.d.ts +4 -1
- package/dist/components/Avatar/Avatar.js +4 -2
- package/dist/components/Avatar/Avatar.types.d.ts +4 -19
- package/dist/components/Avatar/tests/Avatar.stories.d.ts +10 -1
- package/dist/components/Avatar/tests/Avatar.stories.js +79 -27
- package/dist/components/Badge/Badge.js +1 -0
- package/dist/components/Badge/BadgeContainer.d.ts +4 -1
- package/dist/components/Badge/BadgeContainer.js +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -0
- package/dist/components/Breadcrumbs/BreadcrumbsItem.d.ts +4 -1
- package/dist/components/Breadcrumbs/BreadcrumbsItem.js +1 -0
- package/dist/components/Breadcrumbs/index.d.ts +4 -1
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -2
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +8 -2
- package/dist/components/Button/Button.js +1 -0
- package/dist/components/Button/ButtonAligner.d.ts +4 -1
- package/dist/components/Button/ButtonAligner.js +1 -0
- package/dist/components/Button/ButtonGroup.d.ts +4 -1
- package/dist/components/Button/ButtonGroup.js +1 -0
- package/dist/components/Calendar/Calendar.d.ts +4 -1
- package/dist/components/Calendar/Calendar.js +1 -0
- package/dist/components/Calendar/CalendarControlled.d.ts +4 -1
- package/dist/components/Calendar/CalendarControlled.js +1 -0
- package/dist/components/Calendar/CalendarControls.d.ts +4 -1
- package/dist/components/Calendar/CalendarControls.js +1 -0
- package/dist/components/Calendar/CalendarDate.d.ts +4 -1
- package/dist/components/Calendar/CalendarDate.js +1 -0
- package/dist/components/Calendar/CalendarMonth.d.ts +4 -1
- package/dist/components/Calendar/CalendarMonth.js +1 -0
- package/dist/components/Calendar/CalendarUncontrolled.d.ts +4 -1
- package/dist/components/Calendar/CalendarUncontrolled.js +1 -0
- package/dist/components/Calendar/CalendarYear.d.ts +4 -1
- package/dist/components/Calendar/CalendarYear.js +1 -0
- package/dist/components/Calendar/tests/Calendar.stories.d.ts +4 -1
- package/dist/components/Card/Card.js +1 -0
- package/dist/components/Carousel/Carousel.d.ts +4 -1
- package/dist/components/Carousel/Carousel.js +1 -0
- package/dist/components/Carousel/CarouselControl.d.ts +4 -1
- package/dist/components/Carousel/CarouselControl.js +1 -0
- package/dist/components/Carousel/tests/Carousel.stories.d.ts +4 -1
- package/dist/components/Checkbox/Checkbox.d.ts +4 -1
- package/dist/components/Checkbox/Checkbox.js +1 -0
- package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +4 -1
- package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +4 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.js +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroupControlled.d.ts +4 -1
- package/dist/components/CheckboxGroup/CheckboxGroupControlled.js +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroupUncontrolled.d.ts +4 -1
- package/dist/components/CheckboxGroup/CheckboxGroupUncontrolled.js +1 -0
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +4 -1
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +4 -1
- package/dist/components/Container/Container.d.ts +4 -1
- package/dist/components/Container/Container.js +1 -0
- package/dist/components/Container/tests/Container.stories.d.ts +4 -1
- package/dist/components/Container/tests/Container.stories.js +1 -1
- package/dist/components/Container/tests/Container.test.stories.d.ts +4 -1
- package/dist/components/Container/tests/Container.test.stories.js +1 -1
- package/dist/components/ContextMenu/ContextMenu.d.ts +21 -5
- package/dist/components/ContextMenu/ContextMenu.js +1 -0
- package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +21 -5
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +21 -5
- package/dist/components/Dismissible/Dismissible.d.ts +4 -1
- package/dist/components/Dismissible/Dismissible.js +1 -0
- package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +4 -1
- package/dist/components/Dismissible/tests/Dismissible.stories.js +1 -1
- package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +4 -1
- package/dist/components/Dismissible/tests/Dismissible.test.stories.js +1 -1
- package/dist/components/Divider/Divider.d.ts +4 -1
- package/dist/components/Divider/Divider.js +1 -0
- package/dist/components/Divider/tests/Divider.stories.d.ts +4 -1
- package/dist/components/Divider/tests/Divider.test.stories.d.ts +4 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +29 -7
- package/dist/components/DropdownMenu/DropdownMenu.js +7 -1
- package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +29 -7
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +29 -7
- package/dist/components/FileUpload/FileUpload.d.ts +5 -1
- package/dist/components/FileUpload/FileUpload.js +2 -0
- package/dist/components/FileUpload/tests/FileUpload.stories.d.ts +5 -1
- package/dist/components/FileUpload/tests/FileUpload.test.stories.d.ts +5 -1
- package/dist/components/FormControl/FormControl.js +1 -0
- package/dist/components/FormControl/FormControlError.d.ts +4 -1
- package/dist/components/FormControl/FormControlError.js +1 -0
- package/dist/components/FormControl/FormControlHelper.d.ts +4 -1
- package/dist/components/FormControl/FormControlHelper.js +1 -0
- package/dist/components/FormControl/FormControlLabel.d.ts +4 -1
- package/dist/components/FormControl/FormControlLabel.js +1 -0
- package/dist/components/FormControl/tests/FormControl.stories.js +1 -1
- package/dist/components/FormControl/tests/FormControl.test.stories.js +1 -1
- package/dist/components/Grid/Grid.d.ts +5 -1
- package/dist/components/Grid/Grid.js +2 -0
- package/dist/components/Grid/tests/Grid.stories.d.ts +5 -1
- package/dist/components/Grid/tests/Grid.stories.js +1 -1
- package/dist/components/Grid/tests/Grid.test.stories.d.ts +5 -1
- package/dist/components/Grid/tests/Grid.test.stories.js +1 -1
- package/dist/components/Hidden/Hidden.d.ts +4 -1
- package/dist/components/Hidden/Hidden.js +1 -0
- package/dist/components/Hidden/tests/Hidden.stories.d.ts +4 -1
- package/dist/components/Hidden/tests/Hidden.stories.js +1 -1
- package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +4 -1
- package/dist/components/Hidden/tests/Hidden.test.stories.js +1 -1
- package/dist/components/HiddenVisually/HiddenVisually.d.ts +4 -1
- package/dist/components/HiddenVisually/HiddenVisually.js +1 -0
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +4 -1
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +1 -1
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +4 -1
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +1 -1
- package/dist/components/Hotkey/Hotkey.d.ts +4 -1
- package/dist/components/Hotkey/Hotkey.js +1 -0
- package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +4 -1
- package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +4 -1
- package/dist/components/Icon/Icon.d.ts +4 -1
- package/dist/components/Icon/Icon.js +1 -0
- package/dist/components/Icon/Icon.module.css +1 -1
- package/dist/components/Icon/tests/Icon.stories.d.ts +4 -1
- package/dist/components/Icon/tests/Icon.stories.js +1 -1
- package/dist/components/Icon/tests/Icon.test.stories.d.ts +4 -1
- package/dist/components/Icon/tests/Icon.test.stories.js +1 -1
- package/dist/components/Image/Image.d.ts +4 -1
- package/dist/components/Image/Image.js +1 -0
- package/dist/components/Image/tests/Image.stories.d.ts +4 -1
- package/dist/components/Image/tests/Image.stories.js +1 -1
- package/dist/components/Image/tests/Image.test.stories.d.ts +4 -1
- package/dist/components/Image/tests/Image.test.stories.js +1 -1
- package/dist/components/Link/Link.js +1 -0
- package/dist/components/Loader/Loader.d.ts +4 -1
- package/dist/components/Loader/Loader.js +1 -0
- package/dist/components/Loader/tests/Loader.stories.d.ts +4 -1
- package/dist/components/Loader/tests/Loader.test.stories.d.ts +4 -1
- package/dist/components/MenuItem/MenuItem.js +1 -0
- package/dist/components/MenuItem/MenuItemAligner.d.ts +4 -1
- package/dist/components/MenuItem/MenuItemAligner.js +1 -0
- package/dist/components/Modal/Modal.d.ts +9 -2
- package/dist/components/Modal/Modal.js +3 -0
- package/dist/components/Modal/tests/Modal.stories.d.ts +9 -2
- package/dist/components/Modal/tests/Modal.test.stories.d.ts +9 -2
- package/dist/components/Overlay/Overlay.d.ts +4 -1
- package/dist/components/Overlay/Overlay.js +1 -0
- package/dist/components/Overlay/tests/Overlay.stories.d.ts +4 -1
- package/dist/components/Overlay/tests/Overlay.stories.js +1 -1
- package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +4 -1
- package/dist/components/Overlay/tests/Overlay.test.stories.js +1 -1
- package/dist/components/Pagination/Pagination.d.ts +4 -1
- package/dist/components/Pagination/Pagination.js +1 -0
- package/dist/components/Pagination/PaginationControlled.d.ts +4 -1
- package/dist/components/Pagination/PaginationControlled.js +1 -0
- package/dist/components/Pagination/PaginationUncontrolled.d.ts +4 -1
- package/dist/components/Pagination/PaginationUncontrolled.js +1 -0
- package/dist/components/Pagination/tests/Pagination.stories.d.ts +4 -1
- package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +4 -1
- package/dist/components/PinField/PinField.d.ts +4 -1
- package/dist/components/PinField/PinField.js +1 -0
- package/dist/components/PinField/PinFieldControlled.d.ts +4 -1
- package/dist/components/PinField/PinFieldControlled.js +1 -0
- package/dist/components/PinField/PinFieldUncontrolled.d.ts +4 -1
- package/dist/components/PinField/PinFieldUncontrolled.js +1 -0
- package/dist/components/PinField/tests/PinField.stories.d.ts +4 -1
- package/dist/components/PinField/tests/PinField.test.stories.d.ts +4 -1
- package/dist/components/Popover/Popover.d.ts +13 -3
- package/dist/components/Popover/Popover.js +2 -0
- package/dist/components/Popover/tests/Popover.stories.d.ts +13 -3
- package/dist/components/Popover/tests/Popover.test.stories.d.ts +13 -3
- package/dist/components/Progress/Progress.d.ts +4 -1
- package/dist/components/Progress/Progress.js +1 -0
- package/dist/components/Progress/tests/Progress.stories.d.ts +4 -1
- package/dist/components/Progress/tests/Progress.test.stories.d.ts +4 -1
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +4 -1
- package/dist/components/ProgressIndicator/ProgressIndicator.js +1 -0
- package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.d.ts +4 -1
- package/dist/components/Radio/Radio.d.ts +4 -1
- package/dist/components/Radio/Radio.js +1 -0
- package/dist/components/Radio/tests/Radio.stories.d.ts +4 -1
- package/dist/components/Radio/tests/Radio.test.stories.d.ts +4 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts +4 -1
- package/dist/components/RadioGroup/RadioGroup.js +1 -0
- package/dist/components/RadioGroup/RadioGroupControlled.d.ts +4 -1
- package/dist/components/RadioGroup/RadioGroupControlled.js +1 -0
- package/dist/components/RadioGroup/RadioGroupUncontrolled.d.ts +4 -1
- package/dist/components/RadioGroup/RadioGroupUncontrolled.js +1 -0
- package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +4 -1
- package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +4 -1
- package/dist/components/Reshaped/Reshaped.d.ts +4 -1
- package/dist/components/Reshaped/Reshaped.js +1 -0
- package/dist/components/Reshaped/tests/Reshaped.stories.js +1 -1
- package/dist/components/Resizable/Resizable.d.ts +1 -0
- package/dist/components/Resizable/Resizable.js +2 -1
- package/dist/components/Resizable/Resizable.types.d.ts +1 -1
- package/dist/components/Resizable/tests/Resizable.stories.d.ts +1 -0
- package/dist/components/Resizable/tests/Resizable.test.stories.d.ts +1 -0
- package/dist/components/Scrim/Scrim.d.ts +4 -1
- package/dist/components/Scrim/Scrim.js +1 -0
- package/dist/components/Scrim/tests/Scrim.stories.d.ts +4 -1
- package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +4 -1
- package/dist/components/ScrollArea/ScrollArea.js +1 -0
- package/dist/components/ScrollArea/tests/ScrollArea.stories.js +1 -1
- package/dist/components/ScrollArea/tests/ScrollArea.test.stories.js +1 -1
- package/dist/components/Select/Select.d.ts +4 -1
- package/dist/components/Select/Select.js +1 -0
- package/dist/components/Select/tests/Select.stories.d.ts +4 -1
- package/dist/components/Select/tests/Select.test.stories.d.ts +4 -1
- package/dist/components/Skeleton/Skeleton.d.ts +4 -1
- package/dist/components/Skeleton/Skeleton.js +1 -0
- package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +4 -1
- package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +4 -1
- package/dist/components/Slider/Slider.d.ts +4 -1
- package/dist/components/Slider/Slider.js +1 -0
- package/dist/components/Slider/SliderControlled.d.ts +4 -1
- package/dist/components/Slider/SliderControlled.js +1 -0
- package/dist/components/Slider/SliderThumb.js +1 -0
- package/dist/components/Slider/SliderUncontrolled.d.ts +4 -1
- package/dist/components/Slider/SliderUncontrolled.js +1 -0
- package/dist/components/Slider/tests/Slider.stories.d.ts +4 -1
- package/dist/components/Slider/tests/Slider.test.stories.d.ts +4 -1
- package/dist/components/Stepper/Stepper.d.ts +5 -1
- package/dist/components/Stepper/Stepper.js +2 -0
- package/dist/components/Stepper/tests/Stepper.stories.d.ts +5 -1
- package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +5 -1
- package/dist/components/Switch/Switch.d.ts +4 -1
- package/dist/components/Switch/Switch.js +1 -0
- package/dist/components/Switch/tests/Switch.stories.d.ts +4 -1
- package/dist/components/Switch/tests/Switch.test.stories.d.ts +4 -1
- package/dist/components/Table/Table.d.ts +21 -5
- package/dist/components/Table/Table.js +6 -0
- package/dist/components/Table/tests/Table.stories.d.ts +21 -5
- package/dist/components/Table/tests/Table.test.stories.d.ts +21 -5
- package/dist/components/Tabs/Tabs.d.ts +9 -2
- package/dist/components/Tabs/Tabs.js +1 -0
- package/dist/components/Tabs/TabsControlled.d.ts +4 -1
- package/dist/components/Tabs/TabsControlled.js +1 -0
- package/dist/components/Tabs/TabsItem.js +1 -0
- package/dist/components/Tabs/TabsList.d.ts +4 -1
- package/dist/components/Tabs/TabsList.js +1 -0
- package/dist/components/Tabs/TabsPanel.d.ts +4 -1
- package/dist/components/Tabs/TabsPanel.js +1 -0
- package/dist/components/Tabs/TabsUncontrolled.d.ts +4 -1
- package/dist/components/Tabs/TabsUncontrolled.js +1 -0
- package/dist/components/Tabs/tests/Tabs.stories.d.ts +9 -2
- package/dist/components/Tabs/tests/Tabs.test.stories.d.ts +9 -2
- package/dist/components/Text/Text.d.ts +4 -1
- package/dist/components/Text/Text.js +1 -0
- package/dist/components/Text/tests/Text.stories.d.ts +4 -1
- package/dist/components/Text/tests/Text.stories.js +1 -1
- package/dist/components/Text/tests/Text.test.stories.d.ts +4 -1
- package/dist/components/Text/tests/Text.test.stories.js +1 -1
- package/dist/components/TextArea/TextArea.d.ts +5 -1
- package/dist/components/TextArea/TextArea.js +1 -0
- package/dist/components/TextArea/tests/TextArea.stories.d.ts +5 -1
- package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +5 -1
- package/dist/components/TextField/TextField.d.ts +5 -1
- package/dist/components/TextField/TextField.js +1 -0
- package/dist/components/TextField/tests/TextField.stories.d.ts +5 -1
- package/dist/components/TextField/tests/TextField.test.stories.d.ts +5 -1
- package/dist/components/Theme/GlobalColorMode.d.ts +4 -1
- package/dist/components/Theme/GlobalColorMode.js +1 -0
- package/dist/components/Theme/Theme.d.ts +4 -1
- package/dist/components/Theme/Theme.js +1 -0
- package/dist/components/Theme/tests/Theme.test.stories.d.ts +4 -1
- package/dist/components/Theme/tests/Theme.test.stories.js +1 -1
- package/dist/components/Timeline/Timeline.d.ts +5 -1
- package/dist/components/Timeline/Timeline.js +2 -0
- package/dist/components/Timeline/tests/Timeline.stories.d.ts +5 -1
- package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +5 -1
- package/dist/components/Toast/Toast.d.ts +6 -3
- package/dist/components/Toast/Toast.js +1 -0
- package/dist/components/Toast/ToastContainer.d.ts +4 -1
- package/dist/components/Toast/ToastContainer.js +1 -0
- package/dist/components/Toast/ToastProvider.d.ts +4 -1
- package/dist/components/Toast/ToastProvider.js +1 -0
- package/dist/components/Toast/ToastRegion.d.ts +4 -1
- package/dist/components/Toast/ToastRegion.js +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +4 -1
- package/dist/components/Tooltip/Tooltip.js +1 -0
- package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +4 -1
- package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +4 -1
- package/dist/components/View/View.d.ts +5 -1
- package/dist/components/View/View.js +2 -0
- package/dist/components/View/tests/View.stories.d.ts +5 -1
- package/dist/components/View/tests/View.stories.js +1 -1
- package/dist/components/View/tests/View.test.stories.d.ts +5 -1
- package/dist/components/View/tests/View.test.stories.js +1 -1
- package/dist/components/_private/Aligner/Aligner.d.ts +4 -1
- package/dist/components/_private/Aligner/Aligner.js +1 -0
- package/dist/components/_private/Expandable/Expandable.d.ts +4 -1
- package/dist/components/_private/Expandable/Expandable.js +1 -0
- package/dist/components/_private/Flyout/Flyout.d.ts +9 -2
- package/dist/components/_private/Flyout/Flyout.js +1 -0
- package/dist/components/_private/Flyout/Flyout.types.d.ts +1 -1
- package/dist/components/_private/Flyout/FlyoutContent.d.ts +4 -1
- package/dist/components/_private/Flyout/FlyoutContent.js +4 -0
- package/dist/components/_private/Flyout/FlyoutControlled.d.ts +5 -2
- package/dist/components/_private/Flyout/FlyoutControlled.js +8 -9
- package/dist/components/_private/Flyout/FlyoutTrigger.d.ts +4 -1
- package/dist/components/_private/Flyout/FlyoutTrigger.js +1 -0
- package/dist/components/_private/Flyout/FlyoutUncontrolled.d.ts +4 -1
- package/dist/components/_private/Flyout/FlyoutUncontrolled.js +1 -0
- package/dist/components/_private/HiddenInput/HiddenInput.d.ts +4 -1
- package/dist/components/_private/HiddenInput/HiddenInput.js +1 -0
- package/dist/components/_private/Portal/Portal.d.ts +4 -0
- package/dist/components/_private/Portal/Portal.js +2 -0
- package/dist/hooks/{useDrag.js → _private/useDrag.js} +6 -6
- package/dist/hooks/tests/useDrag.stories.d.ts +26 -1
- package/dist/hooks/tests/useDrag.stories.js +120 -3
- package/dist/hooks/tests/useElementId.stories.d.ts +5 -0
- package/dist/hooks/tests/useElementId.stories.js +6 -2
- package/dist/hooks/tests/useHandlerRef.stories.d.ts +14 -0
- package/dist/hooks/tests/useHandlerRef.stories.js +44 -0
- package/dist/hooks/tests/useHotkeys.stories.d.ts +39 -1
- package/dist/hooks/tests/useHotkeys.stories.js +157 -38
- package/dist/hooks/tests/useKeyboardMode.stories.d.ts +5 -0
- package/dist/hooks/tests/useKeyboardMode.stories.js +6 -1
- package/dist/hooks/tests/useOnClickOutside.stories.d.ts +23 -0
- package/dist/hooks/tests/useOnClickOutside.stories.js +111 -0
- package/dist/hooks/tests/useRTL.stories.d.ts +5 -0
- package/dist/hooks/tests/useRTL.stories.js +9 -11
- package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +5 -0
- package/dist/hooks/tests/useResponsiveClientValue.stories.js +6 -1
- package/dist/hooks/tests/useScrollLock.stories.d.ts +7 -0
- package/dist/hooks/tests/useScrollLock.stories.js +47 -1
- package/dist/hooks/tests/useToggle.stories.d.ts +5 -0
- package/dist/hooks/tests/useToggle.stories.js +6 -1
- package/dist/hooks/useHandlerRef.js +1 -1
- package/dist/hooks/{_private/useOnClickOutside.d.ts → useOnClickOutside.d.ts} +3 -1
- package/dist/hooks/{_private/useOnClickOutside.js → useOnClickOutside.js} +13 -4
- package/dist/hooks/useScrollLock.d.ts +1 -1
- package/dist/hooks/useScrollLock.js +2 -2
- package/dist/index.d.ts +8 -6
- package/dist/index.js +7 -4
- package/dist/tests/ShadowDOM.stories.js +1 -1
- package/dist/themes/_generator/tests/themes.stories.js +1 -1
- package/dist/utilities/a11y/TrapFocus.d.ts +1 -1
- package/dist/utilities/a11y/TrapFocus.js +17 -11
- package/dist/utilities/a11y/tests/TrapFocus.stories.d.ts +10 -2
- package/dist/utilities/a11y/tests/TrapFocus.stories.js +596 -40
- package/dist/utilities/a11y/types.d.ts +3 -1
- package/package.json +15 -15
- package/dist/components/Avatar/tests/Avatar.test.stories.d.ts +0 -17
- package/dist/components/Avatar/tests/Avatar.test.stories.js +0 -39
- package/dist/hooks/tests/useDrag.test.stories.d.ts +0 -26
- package/dist/hooks/tests/useDrag.test.stories.js +0 -120
- package/dist/hooks/tests/useHotkeys.test.stories.d.ts +0 -39
- package/dist/hooks/tests/useHotkeys.test.stories.js +0 -119
- /package/dist/hooks/{useDrag.d.ts → _private/useDrag.d.ts} +0 -0
@@ -2,7 +2,12 @@ import { expect, userEvent } from "@storybook/test";
|
|
2
2
|
import Button from "../../components/Button/index.js";
|
3
3
|
import View from "../../components/View/index.js";
|
4
4
|
import useKeyboardMode from "../useKeyboardMode.js";
|
5
|
-
export default {
|
5
|
+
export default {
|
6
|
+
title: "Hooks/useKeyboardMode",
|
7
|
+
parameters: {
|
8
|
+
chromatic: { disableSnapshot: true },
|
9
|
+
},
|
10
|
+
};
|
6
11
|
const Component = () => {
|
7
12
|
const { activate, deactivate, disable, enable } = useKeyboardMode();
|
8
13
|
return (<View direction="row" gap={2}>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react";
|
2
|
+
import { type Mock } from "@storybook/test";
|
3
|
+
declare const _default: {
|
4
|
+
title: string;
|
5
|
+
parameters: {
|
6
|
+
chromatic: {
|
7
|
+
disableSnapshot: boolean;
|
8
|
+
};
|
9
|
+
};
|
10
|
+
};
|
11
|
+
export default _default;
|
12
|
+
export declare const base: StoryObj<{
|
13
|
+
handleOutsideClick: Mock;
|
14
|
+
}>;
|
15
|
+
export declare const refs: StoryObj<{
|
16
|
+
handleOutsideClick: Mock;
|
17
|
+
}>;
|
18
|
+
export declare const disabled: StoryObj<{
|
19
|
+
handleOutsideClick: Mock;
|
20
|
+
}>;
|
21
|
+
export declare const deps: StoryObj<{
|
22
|
+
handleOutsideClick: Mock;
|
23
|
+
}>;
|
@@ -0,0 +1,111 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { expect, fn, userEvent } from "@storybook/test";
|
3
|
+
import Button from "../../components/Button/index.js";
|
4
|
+
import useOnClickOutside from "../useOnClickOutside.js";
|
5
|
+
import View from "../../components/View/index.js";
|
6
|
+
export default {
|
7
|
+
title: "Hooks/useOnClickOutside",
|
8
|
+
parameters: {
|
9
|
+
chromatic: { disableSnapshot: true },
|
10
|
+
},
|
11
|
+
};
|
12
|
+
export const base = {
|
13
|
+
name: "base",
|
14
|
+
args: {
|
15
|
+
handleOutsideClick: fn(),
|
16
|
+
},
|
17
|
+
render: (args) => {
|
18
|
+
const ref = React.useRef(null);
|
19
|
+
const [target, setTarget] = React.useState(null);
|
20
|
+
useOnClickOutside([ref], () => {
|
21
|
+
args.handleOutsideClick();
|
22
|
+
setTarget("outside");
|
23
|
+
});
|
24
|
+
return (<View gap={4} align="start">
|
25
|
+
<Button attributes={{ ref }} onClick={() => setTarget("inside")}>
|
26
|
+
Trigger
|
27
|
+
</Button>
|
28
|
+
{target && `Clicked ${target}`}
|
29
|
+
</View>);
|
30
|
+
},
|
31
|
+
play: async ({ canvas, args }) => {
|
32
|
+
const button = canvas.getAllByRole("button")[0];
|
33
|
+
await userEvent.click(button);
|
34
|
+
expect(args.handleOutsideClick).not.toHaveBeenCalled();
|
35
|
+
await userEvent.click(document.body);
|
36
|
+
expect(args.handleOutsideClick).toHaveBeenCalledTimes(1);
|
37
|
+
expect(args.handleOutsideClick).toHaveBeenCalledWith();
|
38
|
+
},
|
39
|
+
};
|
40
|
+
export const refs = {
|
41
|
+
name: "multiple refs",
|
42
|
+
args: {
|
43
|
+
handleOutsideClick: fn(),
|
44
|
+
},
|
45
|
+
render: (args) => {
|
46
|
+
const ref = React.useRef(null);
|
47
|
+
const ref2 = React.useRef(null);
|
48
|
+
useOnClickOutside([ref, ref2], () => {
|
49
|
+
args.handleOutsideClick();
|
50
|
+
});
|
51
|
+
return (<View gap={4} align="start">
|
52
|
+
<Button attributes={{ ref }}>Trigger</Button>
|
53
|
+
<Button attributes={{ ref: ref2 }}>Trigger 2</Button>
|
54
|
+
</View>);
|
55
|
+
},
|
56
|
+
play: async ({ canvas, args }) => {
|
57
|
+
const [button, button2] = canvas.getAllByRole("button");
|
58
|
+
await userEvent.click(button);
|
59
|
+
expect(args.handleOutsideClick).not.toHaveBeenCalled();
|
60
|
+
await userEvent.click(button2);
|
61
|
+
expect(args.handleOutsideClick).not.toHaveBeenCalled();
|
62
|
+
await userEvent.click(document.body);
|
63
|
+
expect(args.handleOutsideClick).toHaveBeenCalledTimes(1);
|
64
|
+
expect(args.handleOutsideClick).toHaveBeenCalledWith();
|
65
|
+
},
|
66
|
+
};
|
67
|
+
export const disabled = {
|
68
|
+
name: "disabled",
|
69
|
+
args: {
|
70
|
+
handleOutsideClick: fn(),
|
71
|
+
},
|
72
|
+
render: (args) => {
|
73
|
+
const ref = React.useRef(null);
|
74
|
+
useOnClickOutside([ref], () => {
|
75
|
+
args.handleOutsideClick();
|
76
|
+
}, {
|
77
|
+
disabled: true,
|
78
|
+
});
|
79
|
+
return (<View gap={4} align="start">
|
80
|
+
<Button attributes={{ ref }}>Trigger</Button>
|
81
|
+
</View>);
|
82
|
+
},
|
83
|
+
play: async ({ args }) => {
|
84
|
+
await userEvent.click(document.body);
|
85
|
+
expect(args.handleOutsideClick).not.toHaveBeenCalled();
|
86
|
+
},
|
87
|
+
};
|
88
|
+
export const deps = {
|
89
|
+
name: "test: handler uses latest state",
|
90
|
+
args: {
|
91
|
+
handleOutsideClick: fn(),
|
92
|
+
},
|
93
|
+
render: (args) => {
|
94
|
+
const ref = React.useRef(null);
|
95
|
+
const [count, setCount] = React.useState(0);
|
96
|
+
useOnClickOutside([ref], () => {
|
97
|
+
args.handleOutsideClick({ count });
|
98
|
+
});
|
99
|
+
return (<Button attributes={{ ref }} onClick={() => setCount((prev) => prev + 1)}>
|
100
|
+
Trigger
|
101
|
+
</Button>);
|
102
|
+
},
|
103
|
+
play: async ({ canvas, args }) => {
|
104
|
+
const button = canvas.getAllByRole("button")[0];
|
105
|
+
await userEvent.click(document.body);
|
106
|
+
expect(args.handleOutsideClick).toHaveBeenLastCalledWith({ count: 0 });
|
107
|
+
await userEvent.click(button);
|
108
|
+
await userEvent.click(document.body);
|
109
|
+
expect(args.handleOutsideClick).toHaveBeenLastCalledWith({ count: 1 });
|
110
|
+
},
|
111
|
+
};
|
@@ -1,8 +1,12 @@
|
|
1
1
|
import React from "react";
|
2
|
-
import { expect
|
3
|
-
import Reshaped from "../../components/Reshaped/index.js";
|
2
|
+
import { expect } from "@storybook/test";
|
4
3
|
import useRTL from "../useRTL.js";
|
5
|
-
export default {
|
4
|
+
export default {
|
5
|
+
title: "Hooks/useRTL",
|
6
|
+
parameters: {
|
7
|
+
chromatic: { disableSnapshot: true },
|
8
|
+
},
|
9
|
+
};
|
6
10
|
const Component = () => {
|
7
11
|
const [rtl, setRTL] = useRTL();
|
8
12
|
React.useEffect(() => {
|
@@ -12,14 +16,8 @@ const Component = () => {
|
|
12
16
|
};
|
13
17
|
export const setRTL = {
|
14
18
|
name: "setRTL",
|
15
|
-
render: () =>
|
16
|
-
return (<Reshaped theme="reshaped">
|
17
|
-
<Component />
|
18
|
-
</Reshaped>);
|
19
|
-
},
|
19
|
+
render: () => <Component />,
|
20
20
|
play: async () => {
|
21
|
-
|
22
|
-
expect(document.documentElement).toHaveAttribute("dir", "rtl");
|
23
|
-
});
|
21
|
+
expect(document.documentElement).toHaveAttribute("dir", "rtl");
|
24
22
|
},
|
25
23
|
};
|
@@ -1,6 +1,11 @@
|
|
1
1
|
import useResponsiveClientValue from "../useResponsiveClientValue.js";
|
2
2
|
import View from "../../components/View/index.js";
|
3
|
-
export default {
|
3
|
+
export default {
|
4
|
+
title: "Hooks/useResponsiveClientValue",
|
5
|
+
parameters: {
|
6
|
+
chromatic: { disableSnapshot: true },
|
7
|
+
},
|
8
|
+
};
|
4
9
|
export const base = {
|
5
10
|
name: "base",
|
6
11
|
render: () => {
|
@@ -1,6 +1,13 @@
|
|
1
1
|
import { StoryObj } from "@storybook/react";
|
2
2
|
declare const _default: {
|
3
3
|
title: string;
|
4
|
+
parameters: {
|
5
|
+
chromatic: {
|
6
|
+
disableSnapshot: boolean;
|
7
|
+
};
|
8
|
+
};
|
4
9
|
};
|
5
10
|
export default _default;
|
6
11
|
export declare const base: StoryObj;
|
12
|
+
export declare const origin: StoryObj;
|
13
|
+
export declare const container: StoryObj;
|
@@ -2,7 +2,13 @@ import React from "react";
|
|
2
2
|
import { expect, userEvent } from "@storybook/test";
|
3
3
|
import Button from "../../components/Button/index.js";
|
4
4
|
import useScrollLock from "../useScrollLock.js";
|
5
|
-
|
5
|
+
import View from "../../components/View/index.js";
|
6
|
+
export default {
|
7
|
+
title: "Hooks/useScrollLock",
|
8
|
+
parameters: {
|
9
|
+
chromatic: { disableSnapshot: true },
|
10
|
+
},
|
11
|
+
};
|
6
12
|
export const base = {
|
7
13
|
name: "base",
|
8
14
|
render: () => {
|
@@ -20,3 +26,43 @@ export const base = {
|
|
20
26
|
expect(document.body).not.toHaveStyle("overflow: hidden");
|
21
27
|
},
|
22
28
|
};
|
29
|
+
export const origin = {
|
30
|
+
name: "originRef",
|
31
|
+
render: () => {
|
32
|
+
const originRef = React.useRef(null);
|
33
|
+
const { lockScroll, unlockScroll, scrollLocked } = useScrollLock({ originRef });
|
34
|
+
return (<View overflow="auto" height={25} attributes={{ ref: originRef, "data-testid": "root" }}>
|
35
|
+
<View height={50} padding={4} backgroundColor="neutral-faded" borderRadius="medium">
|
36
|
+
<Button onClick={scrollLocked ? unlockScroll : lockScroll}>Toggle</Button>
|
37
|
+
</View>
|
38
|
+
</View>);
|
39
|
+
},
|
40
|
+
play: async ({ canvas }) => {
|
41
|
+
const button = canvas.getAllByRole("button")[0];
|
42
|
+
const root = canvas.getByTestId("root");
|
43
|
+
await userEvent.click(button);
|
44
|
+
expect(document.body).not.toHaveStyle("overflow: hidden");
|
45
|
+
expect(root).toHaveStyle("overflow: hidden");
|
46
|
+
await userEvent.click(button);
|
47
|
+
expect(root).not.toHaveStyle("overflow: hidden");
|
48
|
+
},
|
49
|
+
};
|
50
|
+
export const container = {
|
51
|
+
name: "containerRef",
|
52
|
+
render: () => {
|
53
|
+
const containerRef = React.useRef(null);
|
54
|
+
const { lockScroll, unlockScroll, scrollLocked } = useScrollLock({ containerRef });
|
55
|
+
return (<View height={25} attributes={{ ref: containerRef, "data-testid": "root" }}>
|
56
|
+
<Button onClick={scrollLocked ? unlockScroll : lockScroll}>Toggle</Button>
|
57
|
+
</View>);
|
58
|
+
},
|
59
|
+
play: async ({ canvas }) => {
|
60
|
+
const button = canvas.getAllByRole("button")[0];
|
61
|
+
const root = canvas.getByTestId("root");
|
62
|
+
await userEvent.click(button);
|
63
|
+
expect(document.body).not.toHaveStyle("overflow: hidden");
|
64
|
+
expect(root).toHaveStyle("overflow: hidden");
|
65
|
+
await userEvent.click(button);
|
66
|
+
expect(root).not.toHaveStyle("overflow: hidden");
|
67
|
+
},
|
68
|
+
};
|
@@ -2,7 +2,12 @@ import React from "react";
|
|
2
2
|
import { expect, userEvent } from "@storybook/test";
|
3
3
|
import Button from "../../components/Button/index.js";
|
4
4
|
import useToggle from "../useToggle.js";
|
5
|
-
export default {
|
5
|
+
export default {
|
6
|
+
title: "Hooks/useToggle",
|
7
|
+
parameters: {
|
8
|
+
chromatic: { disableSnapshot: true },
|
9
|
+
},
|
10
|
+
};
|
6
11
|
export const toggle = {
|
7
12
|
name: "toggle",
|
8
13
|
render: () => {
|
@@ -1,3 +1,5 @@
|
|
1
1
|
import React from "react";
|
2
|
-
declare const useOnClickOutside: (refs: React.RefObject<HTMLElement | null>[], handler: (event: Event) => void,
|
2
|
+
declare const useOnClickOutside: (refs: React.RefObject<HTMLElement | null>[], handler: (event: Event) => void, options?: {
|
3
|
+
disabled?: boolean;
|
4
|
+
}) => void;
|
3
5
|
export default useOnClickOutside;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import React from "react";
|
2
|
-
import useHandlerRef from "
|
3
|
-
const useOnClickOutside = (refs, handler,
|
2
|
+
import useHandlerRef from "./useHandlerRef.js";
|
3
|
+
const useOnClickOutside = (refs, handler, options) => {
|
4
|
+
const { disabled } = options || {};
|
4
5
|
const handlerRef = useHandlerRef(handler);
|
5
6
|
/**
|
6
7
|
* We're checking the element position in the DOM on mousedown to make sure
|
@@ -9,6 +10,10 @@ const useOnClickOutside = (refs, handler, deps) => {
|
|
9
10
|
*/
|
10
11
|
const isMouseDownInsideRef = React.useRef(false);
|
11
12
|
React.useEffect(() => {
|
13
|
+
/**
|
14
|
+
* Not checking for disabled here since some components can enable the hook
|
15
|
+
* after it was clicked
|
16
|
+
*/
|
12
17
|
const handleMouseDown = (event) => {
|
13
18
|
isMouseDownInsideRef.current = false;
|
14
19
|
const clickedEl = event.composedPath()[0];
|
@@ -31,16 +36,20 @@ const useOnClickOutside = (refs, handler, deps) => {
|
|
31
36
|
React.useEffect(() => {
|
32
37
|
if (!handlerRef.current)
|
33
38
|
return;
|
39
|
+
if (disabled)
|
40
|
+
return;
|
34
41
|
const handleClick = (event) => {
|
42
|
+
if (!event.pointerType)
|
43
|
+
return;
|
35
44
|
if (event.button === 2)
|
36
45
|
return;
|
37
46
|
if (isMouseDownInsideRef.current)
|
38
47
|
return;
|
39
48
|
handlerRef.current?.(event);
|
40
49
|
};
|
41
|
-
document.addEventListener("click", handleClick);
|
50
|
+
document.addEventListener("click", handleClick, { passive: true });
|
42
51
|
return () => document.removeEventListener("click", handleClick);
|
43
52
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
44
|
-
}, [handlerRef,
|
53
|
+
}, [handlerRef, disabled, ...refs]);
|
45
54
|
};
|
46
55
|
export default useOnClickOutside;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
"use client";
|
2
2
|
import React from "react";
|
3
3
|
import { lockScroll, unlockScroll } from "../utilities/scroll/index.js";
|
4
|
-
const useScrollLock = (
|
5
|
-
const { containerRef, originRef } =
|
4
|
+
const useScrollLock = (options) => {
|
5
|
+
const { containerRef, originRef } = options || {};
|
6
6
|
const [locked, setLocked] = React.useState(false);
|
7
7
|
const handleLockScroll = React.useCallback(() => {
|
8
8
|
lockScroll({
|
package/dist/index.d.ts
CHANGED
@@ -119,19 +119,21 @@ export type { ViewProps, ViewItemProps } from "./components/View";
|
|
119
119
|
* Hooks
|
120
120
|
*/
|
121
121
|
export { useFormControl } from "./components/FormControl";
|
122
|
-
export { default as Theme, useTheme } from "./components/Theme";
|
123
|
-
export
|
124
|
-
export { default as useScrollLock } from "./hooks/useScrollLock";
|
125
|
-
export { default as useToggle } from "./hooks/useToggle";
|
126
|
-
export { default as useRTL } from "./hooks/useRTL";
|
127
|
-
export { default as useIsomorphicLayoutEffect } from "./hooks/useIsomorphicLayoutEffect";
|
122
|
+
export { default as Theme, useTheme, type ThemeProps } from "./components/Theme";
|
123
|
+
export { default as useHandlerRef } from "./hooks/useHandlerRef";
|
128
124
|
export { default as useHotkeys } from "./hooks/useHotkeys";
|
125
|
+
export { default as useIsomorphicLayoutEffect } from "./hooks/useIsomorphicLayoutEffect";
|
129
126
|
export { default as useKeyboardMode } from "./hooks/useKeyboardMode";
|
127
|
+
export { default as useOnClickOutside } from "./hooks/useOnClickOutside";
|
130
128
|
export { default as useResponsiveClientValue } from "./hooks/useResponsiveClientValue";
|
129
|
+
export { default as useRTL } from "./hooks/useRTL";
|
130
|
+
export { default as useScrollLock } from "./hooks/useScrollLock";
|
131
|
+
export { default as useToggle } from "./hooks/useToggle";
|
131
132
|
/**
|
132
133
|
* Utilities
|
133
134
|
*/
|
134
135
|
export { classNames, responsiveClassNames, responsivePropDependency } from "./utilities/helpers";
|
136
|
+
export { TrapFocus } from "./utilities/a11y";
|
135
137
|
/**
|
136
138
|
* Types
|
137
139
|
*/
|
package/dist/index.js
CHANGED
@@ -63,17 +63,20 @@ export { default as View } from "./components/View/index.js";
|
|
63
63
|
*/
|
64
64
|
export { useFormControl } from "./components/FormControl/index.js";
|
65
65
|
export { default as Theme, useTheme } from "./components/Theme/index.js";
|
66
|
-
export { default as
|
67
|
-
export { default as useToggle } from "./hooks/useToggle.js";
|
68
|
-
export { default as useRTL } from "./hooks/useRTL.js";
|
69
|
-
export { default as useIsomorphicLayoutEffect } from "./hooks/useIsomorphicLayoutEffect.js";
|
66
|
+
export { default as useHandlerRef } from "./hooks/useHandlerRef.js";
|
70
67
|
export { default as useHotkeys } from "./hooks/useHotkeys.js";
|
68
|
+
export { default as useIsomorphicLayoutEffect } from "./hooks/useIsomorphicLayoutEffect.js";
|
71
69
|
export { default as useKeyboardMode } from "./hooks/useKeyboardMode.js";
|
70
|
+
export { default as useOnClickOutside } from "./hooks/useOnClickOutside.js";
|
72
71
|
export { default as useResponsiveClientValue } from "./hooks/useResponsiveClientValue.js";
|
72
|
+
export { default as useRTL } from "./hooks/useRTL.js";
|
73
|
+
export { default as useScrollLock } from "./hooks/useScrollLock.js";
|
74
|
+
export { default as useToggle } from "./hooks/useToggle.js";
|
73
75
|
/**
|
74
76
|
* Utilities
|
75
77
|
*/
|
76
78
|
export { classNames, responsiveClassNames, responsivePropDependency } from "./utilities/helpers.js";
|
79
|
+
export { TrapFocus } from "./utilities/a11y/index.js";
|
77
80
|
/**
|
78
81
|
* Dev utilities
|
79
82
|
*/
|
@@ -9,7 +9,7 @@ import Select from "../components/Select/index.js";
|
|
9
9
|
import Button from "../components/Button/index.js";
|
10
10
|
import Tooltip from "../components/Tooltip/index.js";
|
11
11
|
export default {
|
12
|
-
title: "
|
12
|
+
title: "Internal/ShadowDOM",
|
13
13
|
};
|
14
14
|
const getStylesData = () => {
|
15
15
|
const sourceStylesContainer = document.head;
|
@@ -14,7 +14,7 @@ import Link from "../../../components/Link/index.js";
|
|
14
14
|
import Text from "../../../components/Text/index.js";
|
15
15
|
import { getThemeCSS, generateThemeColors, baseThemeDefinition } from "../../index.js";
|
16
16
|
export default {
|
17
|
-
title: "
|
17
|
+
title: "Internal/Themes",
|
18
18
|
parameters: {
|
19
19
|
iframe: { url: "https://reshaped.so/docs/tokens/theming/runtime-theming" },
|
20
20
|
a11y: {
|
@@ -25,25 +25,27 @@ class TrapFocus {
|
|
25
25
|
return;
|
26
26
|
if (TrapFocus.chain.tailId !== this.chainId)
|
27
27
|
return;
|
28
|
-
const { mode,
|
28
|
+
const { mode, onRelease, pseudoFocus, includeTrigger } = this.options;
|
29
29
|
let navigationMode = "tabs";
|
30
|
-
if (mode === "action-menu" || mode === "selection-menu")
|
30
|
+
if (mode === "action-menu" || mode === "selection-menu" || mode === "action-bar") {
|
31
31
|
navigationMode = "arrows";
|
32
|
+
}
|
32
33
|
const key = event.key;
|
33
34
|
const isTab = key === keys.TAB;
|
35
|
+
const isPrevTab = isTab && event.shiftKey;
|
34
36
|
const isNextTab = isTab && !event.shiftKey;
|
35
|
-
const
|
36
|
-
const
|
37
|
-
const
|
38
|
-
const isPrev = (
|
39
|
-
const isNext = (isNextTab && navigationMode === "tabs") ||
|
37
|
+
const isArrow = [keys.LEFT, keys.RIGHT, keys.UP, keys.DOWN].includes(key);
|
38
|
+
const isPrevArrow = navigationMode === "arrows" && key === (mode === "action-bar" ? keys.LEFT : keys.UP);
|
39
|
+
const isNextArrow = navigationMode === "arrows" && key === (mode === "action-bar" ? keys.RIGHT : keys.DOWN);
|
40
|
+
const isPrev = (isPrevTab && navigationMode === "tabs") || isPrevArrow;
|
41
|
+
const isNext = (isNextTab && navigationMode === "tabs") || isNextArrow;
|
40
42
|
const isFocusedOnTrigger = getActiveElement(this.root) === this.trigger;
|
41
43
|
const focusData = getFocusData({
|
42
44
|
root: this.root,
|
43
45
|
target: isPrev ? "prev" : "next",
|
44
46
|
options: {
|
45
47
|
additionalElement: includeTrigger ? this.trigger : undefined,
|
46
|
-
circular: mode !== "action-menu",
|
48
|
+
circular: mode !== "action-menu" && mode !== "action-bar",
|
47
49
|
},
|
48
50
|
});
|
49
51
|
// Release the trap when tab is used in navigation modes that support arrows
|
@@ -51,14 +53,18 @@ class TrapFocus {
|
|
51
53
|
(mode === "content-menu" && isTab && focusData.overflow);
|
52
54
|
if (hasNavigatedOutside) {
|
53
55
|
// Prevent shift + tab event to avoid focus moving after the trap release
|
54
|
-
if (
|
56
|
+
if (isPrevTab && !isFocusedOnTrigger)
|
55
57
|
event.preventDefault();
|
56
58
|
this.release();
|
57
|
-
|
59
|
+
onRelease?.();
|
58
60
|
return;
|
59
61
|
}
|
60
|
-
if (!isPrev && !isNext)
|
62
|
+
if (!isPrev && !isNext) {
|
63
|
+
// Avoid page from scrolling with arrow keys while focus it trapped
|
64
|
+
if (isArrow && (mode === "action-bar" || mode === "action-menu"))
|
65
|
+
event.preventDefault();
|
61
66
|
return;
|
67
|
+
}
|
62
68
|
event.preventDefault();
|
63
69
|
if (!focusData.el)
|
64
70
|
return;
|
@@ -1,6 +1,14 @@
|
|
1
|
-
import
|
1
|
+
import { StoryObj } from "@storybook/react";
|
2
2
|
declare const _default: {
|
3
3
|
title: string;
|
4
4
|
};
|
5
5
|
export default _default;
|
6
|
-
export declare const
|
6
|
+
export declare const modeDialog: StoryObj;
|
7
|
+
export declare const modeActionMenu: StoryObj;
|
8
|
+
export declare const modeActionBar: StoryObj;
|
9
|
+
export declare const modeContentMenu: StoryObj;
|
10
|
+
export declare const includeTrigger: StoryObj;
|
11
|
+
export declare const initialFocusEl: StoryObj;
|
12
|
+
export declare const focusableElements: StoryObj;
|
13
|
+
export declare const nested: StoryObj;
|
14
|
+
export declare const mutationObserver: StoryObj;
|