@hina-ui/vue 1.7.6 → 1.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7952 -663
- package/dist/index.js.map +1 -1
- package/dist/shared/behavior/anchor-follow.ts +20 -11
- package/dist/shared/lib/command-palette/match.ts +9 -0
- package/dist/shared/lib/float-button.ts +14 -0
- package/dist/shared/lib/line-clamp.ts +76 -0
- package/dist/shared/lib/scroll-restore.ts +145 -0
- package/dist/shared/locale/en-US.ts +4 -0
- package/dist/shared/locale/index.ts +2 -0
- package/dist/shared/locale/ja-JP.ts +229 -0
- package/dist/shared/locale/types.ts +4 -0
- package/dist/shared/locale/zh-CN.ts +4 -0
- package/dist/shared/primitives/accordion/LICENSE +21 -0
- package/dist/shared/primitives/accordion/index.ts +34 -0
- package/dist/shared/primitives/arrow-navigation/LICENSE +21 -0
- package/dist/shared/primitives/arrow-navigation/index.ts +90 -0
- package/dist/shared/primitives/body-scroll-lock/LICENSE +21 -0
- package/dist/shared/primitives/body-scroll-lock/index.ts +115 -0
- package/dist/shared/primitives/checkbox/LICENSE +21 -0
- package/dist/shared/primitives/checkbox/index.ts +23 -0
- package/dist/shared/primitives/collapsible/LICENSE +21 -0
- package/dist/shared/primitives/collapsible/index.ts +31 -0
- package/dist/shared/primitives/collection/LICENSE +21 -0
- package/dist/shared/primitives/collection/index.ts +19 -0
- package/dist/shared/primitives/dismissable-layer/LICENSE +21 -0
- package/dist/shared/primitives/dismissable-layer/index.ts +203 -0
- package/dist/shared/primitives/focus-guards/LICENSE +21 -0
- package/dist/shared/primitives/focus-guards/index.ts +24 -0
- package/dist/shared/primitives/focus-scope/LICENSE +21 -0
- package/dist/shared/primitives/focus-scope/index.ts +216 -0
- package/dist/shared/primitives/label/LICENSE +21 -0
- package/dist/shared/primitives/label/index.ts +4 -0
- package/dist/shared/primitives/pagination/LICENSE +21 -0
- package/dist/shared/primitives/pagination/index.ts +99 -0
- package/dist/shared/primitives/pin-input/LICENSE +21 -0
- package/dist/shared/primitives/pin-input/index.ts +126 -0
- package/dist/shared/primitives/presence/LICENSE +21 -0
- package/dist/shared/primitives/presence/index.ts +135 -0
- package/dist/shared/primitives/progress/LICENSE +21 -0
- package/dist/shared/primitives/progress/index.ts +41 -0
- package/dist/shared/primitives/radio-group/LICENSE +21 -0
- package/dist/shared/primitives/radio-group/index.ts +46 -0
- package/dist/shared/primitives/rating/LICENSE +21 -0
- package/dist/shared/primitives/rating/index.ts +37 -0
- package/dist/shared/primitives/roving-focus/LICENSE +21 -0
- package/dist/shared/primitives/roving-focus/index.ts +44 -0
- package/dist/shared/primitives/separator/LICENSE +21 -0
- package/dist/shared/primitives/separator/index.ts +14 -0
- package/dist/shared/primitives/size/LICENSE +21 -0
- package/dist/shared/primitives/size/index.ts +19 -0
- package/dist/shared/primitives/slider/LICENSE +21 -0
- package/dist/shared/primitives/slider/index.ts +183 -0
- package/dist/shared/primitives/splitter/LICENSE +21 -0
- package/dist/shared/primitives/splitter/arrays.ts +6 -0
- package/dist/shared/primitives/splitter/assert.ts +9 -0
- package/dist/shared/primitives/splitter/calculate.ts +139 -0
- package/dist/shared/primitives/splitter/callPanelCallbacks.ts +40 -0
- package/dist/shared/primitives/splitter/compare.ts +13 -0
- package/dist/shared/primitives/splitter/constants.ts +1 -0
- package/dist/shared/primitives/splitter/debounce.ts +10 -0
- package/dist/shared/primitives/splitter/dom.ts +64 -0
- package/dist/shared/primitives/splitter/events.ts +29 -0
- package/dist/shared/primitives/splitter/flags.ts +4 -0
- package/dist/shared/primitives/splitter/layout.ts +153 -0
- package/dist/shared/primitives/splitter/pivot.ts +10 -0
- package/dist/shared/primitives/splitter/rects.ts +24 -0
- package/dist/shared/primitives/splitter/registry.ts +231 -0
- package/dist/shared/primitives/splitter/resizePanel.ts +30 -0
- package/dist/shared/primitives/splitter/stackingOrder.ts +88 -0
- package/dist/shared/primitives/splitter/storage.ts +95 -0
- package/dist/shared/primitives/splitter/style.ts +95 -0
- package/dist/shared/primitives/splitter/types.ts +48 -0
- package/dist/shared/primitives/splitter/units.ts +123 -0
- package/dist/shared/primitives/splitter/validation.ts +55 -0
- package/dist/shared/primitives/stepper/LICENSE +21 -0
- package/dist/shared/primitives/stepper/index.ts +58 -0
- package/dist/shared/primitives/tabs/LICENSE +21 -0
- package/dist/shared/primitives/tabs/index.ts +18 -0
- package/dist/shared/primitives/toggle/LICENSE +21 -0
- package/dist/shared/primitives/toggle/index.ts +5 -0
- package/dist/shared/primitives/value/LICENSE +21 -0
- package/dist/shared/primitives/value/index.ts +80 -0
- package/dist/shared/primitives/visually-hidden/LICENSE +21 -0
- package/dist/shared/primitives/visually-hidden/index.ts +25 -0
- package/dist/shared/styles/density.css +4 -0
- package/dist/shared/styles/float-button.css +20 -6
- package/dist/shared/styles/line-clamp.css +98 -0
- package/dist/shared/styles/tokens.css +1 -0
- package/dist/shared/styles/typography.css +18 -0
- package/dist/shared/variants/button.ts +2 -0
- package/dist/shared/variants/command-palette.ts +4 -0
- package/dist/shared/variants/line-clamp.ts +13 -0
- package/dist/shared/variants/panel.ts +5 -0
- package/dist/shared/variants/tag.ts +1 -0
- package/dist/types/shared/src/behavior/anchor-follow.d.ts.map +1 -1
- package/dist/types/shared/src/lib/command-palette/match.d.ts +5 -0
- package/dist/types/shared/src/lib/command-palette/match.d.ts.map +1 -1
- package/dist/types/shared/src/lib/float-button.d.ts +15 -0
- package/dist/types/shared/src/lib/float-button.d.ts.map +1 -0
- package/dist/types/shared/src/lib/line-clamp.d.ts +6 -0
- package/dist/types/shared/src/lib/line-clamp.d.ts.map +1 -0
- package/dist/types/shared/src/lib/scroll-restore.d.ts +14 -0
- package/dist/types/shared/src/lib/scroll-restore.d.ts.map +1 -1
- package/dist/types/shared/src/locale/en-US.d.ts.map +1 -1
- package/dist/types/shared/src/locale/index.d.ts +1 -0
- package/dist/types/shared/src/locale/index.d.ts.map +1 -1
- package/dist/types/shared/src/locale/ja-JP.d.ts +3 -0
- package/dist/types/shared/src/locale/ja-JP.d.ts.map +1 -0
- package/dist/types/shared/src/locale/types.d.ts +4 -0
- package/dist/types/shared/src/locale/types.d.ts.map +1 -1
- package/dist/types/shared/src/locale/zh-CN.d.ts.map +1 -1
- package/dist/types/shared/src/primitives/accordion/index.d.ts +9 -0
- package/dist/types/shared/src/primitives/accordion/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/arrow-navigation/index.d.ts +12 -0
- package/dist/types/shared/src/primitives/arrow-navigation/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/checkbox/index.d.ts +6 -0
- package/dist/types/shared/src/primitives/checkbox/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/collapsible/index.d.ts +12 -0
- package/dist/types/shared/src/primitives/collapsible/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/collection/index.d.ts +6 -0
- package/dist/types/shared/src/primitives/collection/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/dismissable-layer/index.d.ts +41 -0
- package/dist/types/shared/src/primitives/dismissable-layer/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/focus-scope/index.d.ts +51 -0
- package/dist/types/shared/src/primitives/focus-scope/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/label/index.d.ts +2 -0
- package/dist/types/shared/src/primitives/label/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/pagination/index.d.ts +17 -0
- package/dist/types/shared/src/primitives/pagination/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/pin-input/index.d.ts +31 -0
- package/dist/types/shared/src/primitives/pin-input/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/presence/index.d.ts +14 -0
- package/dist/types/shared/src/primitives/presence/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/progress/index.d.ts +10 -0
- package/dist/types/shared/src/primitives/progress/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/radio-group/index.d.ts +12 -0
- package/dist/types/shared/src/primitives/radio-group/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/rating/index.d.ts +8 -0
- package/dist/types/shared/src/primitives/rating/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/roving-focus/index.d.ts +13 -0
- package/dist/types/shared/src/primitives/roving-focus/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/separator/index.d.ts +10 -0
- package/dist/types/shared/src/primitives/separator/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/size/index.d.ts +7 -0
- package/dist/types/shared/src/primitives/size/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/slider/index.d.ts +60 -0
- package/dist/types/shared/src/primitives/slider/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/arrays.d.ts +2 -0
- package/dist/types/shared/src/primitives/splitter/arrays.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/assert.d.ts +2 -0
- package/dist/types/shared/src/primitives/splitter/assert.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/calculate.d.ts +15 -0
- package/dist/types/shared/src/primitives/splitter/calculate.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/callPanelCallbacks.d.ts +3 -0
- package/dist/types/shared/src/primitives/splitter/callPanelCallbacks.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/compare.d.ts +3 -0
- package/dist/types/shared/src/primitives/splitter/compare.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/constants.d.ts +2 -0
- package/dist/types/shared/src/primitives/splitter/constants.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/debounce.d.ts +2 -0
- package/dist/types/shared/src/primitives/splitter/debounce.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/dom.d.ts +8 -0
- package/dist/types/shared/src/primitives/splitter/dom.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/events.d.ts +10 -0
- package/dist/types/shared/src/primitives/splitter/events.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/flags.d.ts +5 -0
- package/dist/types/shared/src/primitives/splitter/flags.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/layout.d.ts +10 -0
- package/dist/types/shared/src/primitives/splitter/layout.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/pivot.d.ts +2 -0
- package/dist/types/shared/src/primitives/splitter/pivot.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/rects.d.ts +8 -0
- package/dist/types/shared/src/primitives/splitter/rects.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/registry.d.ts +5 -0
- package/dist/types/shared/src/primitives/splitter/registry.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/resizePanel.d.ts +7 -0
- package/dist/types/shared/src/primitives/splitter/resizePanel.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/stackingOrder.d.ts +2 -0
- package/dist/types/shared/src/primitives/splitter/stackingOrder.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/storage.d.ts +9 -0
- package/dist/types/shared/src/primitives/splitter/storage.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/style.d.ts +21 -0
- package/dist/types/shared/src/primitives/splitter/style.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/types.d.ts +42 -0
- package/dist/types/shared/src/primitives/splitter/types.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/units.d.ts +13 -0
- package/dist/types/shared/src/primitives/splitter/units.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/splitter/validation.d.ts +6 -0
- package/dist/types/shared/src/primitives/splitter/validation.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/stepper/index.d.ts +21 -0
- package/dist/types/shared/src/primitives/stepper/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/tabs/index.d.ts +7 -0
- package/dist/types/shared/src/primitives/tabs/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/toggle/index.d.ts +3 -0
- package/dist/types/shared/src/primitives/toggle/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/value/index.d.ts +15 -0
- package/dist/types/shared/src/primitives/value/index.d.ts.map +1 -0
- package/dist/types/shared/src/primitives/visually-hidden/index.d.ts +19 -0
- package/dist/types/shared/src/primitives/visually-hidden/index.d.ts.map +1 -0
- package/dist/types/shared/src/variants/button.d.ts +6 -0
- package/dist/types/shared/src/variants/button.d.ts.map +1 -1
- package/dist/types/shared/src/variants/command-palette.d.ts +1 -0
- package/dist/types/shared/src/variants/command-palette.d.ts.map +1 -1
- package/dist/types/shared/src/variants/line-clamp.d.ts +4 -0
- package/dist/types/shared/src/variants/line-clamp.d.ts.map +1 -0
- package/dist/types/shared/src/variants/panel.d.ts +13 -1
- package/dist/types/shared/src/variants/panel.d.ts.map +1 -1
- package/dist/types/shared/src/variants/tag.d.ts +3 -0
- package/dist/types/shared/src/variants/tag.d.ts.map +1 -1
- package/dist/types/shared/src/variants/toggle.d.ts +7 -0
- package/dist/types/shared/src/variants/toggle.d.ts.map +1 -1
- package/dist/types/vue/src/components/accordion/Accordion.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/app-shell/AppShell.vue.d.ts +2 -2
- package/dist/types/vue/src/components/app-shell/AppShell.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/breadcrumb/BreadcrumbItem.vue.d.ts +2 -2
- package/dist/types/vue/src/components/breadcrumb/BreadcrumbItem.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/button/Button.vue.d.ts +2 -2
- package/dist/types/vue/src/components/button/Button.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/card/Card.vue.d.ts +2 -2
- package/dist/types/vue/src/components/card/Card.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/carousel/composables/useCarousel.d.ts +1 -1
- package/dist/types/vue/src/components/chip/Chip.vue.d.ts +1 -1
- package/dist/types/vue/src/components/chip/Chip.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/chip/composables/useChipRoot.d.ts +2 -2
- package/dist/types/vue/src/components/chip/composables/useChipRoot.d.ts.map +1 -1
- package/dist/types/vue/src/components/close-button/CloseButton.vue.d.ts +1 -1
- package/dist/types/vue/src/components/collapsible/Collapsible.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/command-palette/CommandPalette.vue.d.ts +40 -34
- package/dist/types/vue/src/components/command-palette/CommandPalette.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/command-palette/CommandPaletteInput.vue.d.ts +8 -0
- package/dist/types/vue/src/components/command-palette/CommandPaletteInput.vue.d.ts.map +1 -0
- package/dist/types/vue/src/components/command-palette/CommandPaletteItem.vue.d.ts +21 -7
- package/dist/types/vue/src/components/command-palette/CommandPaletteItem.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/command-palette/CommandPalettePanel.vue.d.ts +37 -31
- package/dist/types/vue/src/components/command-palette/CommandPalettePanel.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/command-palette/composables/useCommandItems.d.ts +6 -6
- package/dist/types/vue/src/components/command-palette/composables/useCommandItems.d.ts.map +1 -1
- package/dist/types/vue/src/components/command-palette/context.d.ts +11 -0
- package/dist/types/vue/src/components/command-palette/context.d.ts.map +1 -0
- package/dist/types/vue/src/components/command-palette/types.d.ts +16 -5
- package/dist/types/vue/src/components/command-palette/types.d.ts.map +1 -1
- package/dist/types/vue/src/components/command-palette/utils/match.d.ts +3 -3
- package/dist/types/vue/src/components/command-palette/utils/match.d.ts.map +1 -1
- package/dist/types/vue/src/components/copy-button/CopyButton.vue.d.ts +1 -1
- package/dist/types/vue/src/components/data-list/DataList.vue.d.ts +2 -2
- package/dist/types/vue/src/components/data-table/DataTable.vue.d.ts +2 -2
- package/dist/types/vue/src/components/description-list/DescriptionList.vue.d.ts +1 -0
- package/dist/types/vue/src/components/description-list/DescriptionList.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/dialog/Dialog.vue.d.ts +3 -0
- package/dist/types/vue/src/components/dialog/Dialog.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/drawer/Drawer.vue.d.ts +3 -0
- package/dist/types/vue/src/components/drawer/Drawer.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/float-button/FloatButton.vue.d.ts +1 -1
- package/dist/types/vue/src/components/float-button/FloatButton.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/float-button/types.d.ts +3 -2
- package/dist/types/vue/src/components/float-button/types.d.ts.map +1 -1
- package/dist/types/vue/src/components/form/Form.vue.d.ts +5 -0
- package/dist/types/vue/src/components/form/Form.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/form/scope.d.ts +4 -0
- package/dist/types/vue/src/components/form/scope.d.ts.map +1 -0
- package/dist/types/vue/src/components/heading/Heading.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/icon-button/IconButton.vue.d.ts +2 -2
- package/dist/types/vue/src/components/icon-button/IconButton.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/image/Image.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/indicator/Indicator.vue.d.ts +2 -2
- package/dist/types/vue/src/components/indicator/Indicator.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/line-clamp/LineClamp.vue.d.ts +28 -0
- package/dist/types/vue/src/components/line-clamp/LineClamp.vue.d.ts.map +1 -0
- package/dist/types/vue/src/components/line-clamp/line-clamp.variants.d.ts +2 -0
- package/dist/types/vue/src/components/line-clamp/line-clamp.variants.d.ts.map +1 -0
- package/dist/types/vue/src/components/link/Link.vue.d.ts +2 -2
- package/dist/types/vue/src/components/link/Link.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/multi-select/MultiSelect.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/nav-link/NavLink.vue.d.ts +9 -5
- package/dist/types/vue/src/components/nav-link/NavLink.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/nav-link/NavLinkChild.d.ts +27 -0
- package/dist/types/vue/src/components/nav-link/NavLinkChild.d.ts.map +1 -0
- package/dist/types/vue/src/components/navigation-menu/NavigationMenuLink.vue.d.ts +2 -2
- package/dist/types/vue/src/components/navigation-menu/NavigationMenuLink.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/pagination/PaginationControl.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/prev-next/PrevNextLink.vue.d.ts +2 -2
- package/dist/types/vue/src/components/prev-next/PrevNextLink.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/prose/Prose.vue.d.ts +2 -2
- package/dist/types/vue/src/components/prose/Prose.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/section/Section.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/segmented-control/SegmentedControl.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/sheet/Sheet.vue.d.ts +3 -0
- package/dist/types/vue/src/components/sheet/Sheet.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/sidebar/Sidebar.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/sidebar/context.d.ts +2 -0
- package/dist/types/vue/src/components/sidebar/context.d.ts.map +1 -1
- package/dist/types/vue/src/components/slider/SliderHandle.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/split-button/SplitButton.vue.d.ts +1 -1
- package/dist/types/vue/src/components/split-button/types.d.ts +1 -1
- package/dist/types/vue/src/components/split-button/types.d.ts.map +1 -1
- package/dist/types/vue/src/components/tag/Tag.vue.d.ts +2 -2
- package/dist/types/vue/src/components/tag/Tag.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/text/Text.vue.d.ts +2 -2
- package/dist/types/vue/src/components/text/Text.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/time/Time.vue.d.ts +2 -0
- package/dist/types/vue/src/components/time/Time.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/toast/Toaster.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/toggle/Toggle.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/toolbar/ToolbarControl.vue.d.ts +1 -1
- package/dist/types/vue/src/components/toolbar/ToolbarLink.vue.d.ts +1 -1
- package/dist/types/vue/src/components/toolbar/ToolbarToggleGroup.vue.d.ts.map +1 -1
- package/dist/types/vue/src/components/toolbar/types.d.ts +1 -1
- package/dist/types/vue/src/components/toolbar/types.d.ts.map +1 -1
- package/dist/types/vue/src/components/virtual-list/composables/useVirtualList.d.ts +1 -1
- package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts +2 -2
- package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts.map +1 -1
- package/dist/types/vue/src/index.d.ts +6 -4
- package/dist/types/vue/src/index.d.ts.map +1 -1
- package/dist/types/vue/src/lib/useDirection.d.ts +2 -2
- package/dist/types/vue/src/lib/useDirection.d.ts.map +1 -1
- package/dist/types/vue/src/locale/index.d.ts +1 -1
- package/dist/types/vue/src/locale/index.d.ts.map +1 -1
- package/dist/types/vue/src/primitives/accordion/AccordionContent.d.ts +40 -0
- package/dist/types/vue/src/primitives/accordion/AccordionContent.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/accordion/AccordionHeader.d.ts +33 -0
- package/dist/types/vue/src/primitives/accordion/AccordionHeader.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/accordion/AccordionItem.d.ts +61 -0
- package/dist/types/vue/src/primitives/accordion/AccordionItem.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/accordion/AccordionRoot.d.ts +122 -0
- package/dist/types/vue/src/primitives/accordion/AccordionRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/accordion/AccordionTrigger.d.ts +30 -0
- package/dist/types/vue/src/primitives/accordion/AccordionTrigger.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/accordion/context.d.ts +27 -0
- package/dist/types/vue/src/primitives/accordion/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/accordion/index.d.ts +7 -0
- package/dist/types/vue/src/primitives/accordion/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/aspect-ratio/AspectRatio.d.ts +42 -0
- package/dist/types/vue/src/primitives/aspect-ratio/AspectRatio.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/aspect-ratio/index.d.ts +2 -0
- package/dist/types/vue/src/primitives/aspect-ratio/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/checkbox/CheckboxGroupRoot.d.ts +121 -0
- package/dist/types/vue/src/primitives/checkbox/CheckboxGroupRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/checkbox/CheckboxRoot.d.ts +127 -0
- package/dist/types/vue/src/primitives/checkbox/CheckboxRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/checkbox/context.d.ts +14 -0
- package/dist/types/vue/src/primitives/checkbox/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/checkbox/index.d.ts +4 -0
- package/dist/types/vue/src/primitives/checkbox/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/collapsible/CollapsibleContent.d.ts +45 -0
- package/dist/types/vue/src/primitives/collapsible/CollapsibleContent.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/collapsible/CollapsibleRoot.d.ts +81 -0
- package/dist/types/vue/src/primitives/collapsible/CollapsibleRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/collapsible/CollapsibleTrigger.d.ts +33 -0
- package/dist/types/vue/src/primitives/collapsible/CollapsibleTrigger.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/collapsible/context.d.ts +10 -0
- package/dist/types/vue/src/primitives/collapsible/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/collapsible/index.d.ts +5 -0
- package/dist/types/vue/src/primitives/collapsible/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/collection/index.d.ts +28 -0
- package/dist/types/vue/src/primitives/collection/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts +2 -2
- package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts.map +1 -1
- package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts +2 -2
- package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts.map +1 -1
- package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts +2 -2
- package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts.map +1 -1
- package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts +2 -2
- package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts.map +1 -1
- package/dist/types/vue/src/primitives/pagination/PaginationEdge.d.ts +111 -0
- package/dist/types/vue/src/primitives/pagination/PaginationEdge.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pagination/PaginationList.d.ts +30 -0
- package/dist/types/vue/src/primitives/pagination/PaginationList.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pagination/PaginationListItem.d.ts +42 -0
- package/dist/types/vue/src/primitives/pagination/PaginationListItem.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pagination/PaginationRoot.d.ts +114 -0
- package/dist/types/vue/src/primitives/pagination/PaginationRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pagination/context.d.ts +11 -0
- package/dist/types/vue/src/primitives/pagination/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pagination/index.d.ts +6 -0
- package/dist/types/vue/src/primitives/pagination/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pin-input/PinInputInput.d.ts +52 -0
- package/dist/types/vue/src/primitives/pin-input/PinInputInput.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pin-input/PinInputRoot.d.ts +149 -0
- package/dist/types/vue/src/primitives/pin-input/PinInputRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pin-input/context.d.ts +20 -0
- package/dist/types/vue/src/primitives/pin-input/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/pin-input/index.d.ts +4 -0
- package/dist/types/vue/src/primitives/pin-input/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/presence/Presence.d.ts +31 -0
- package/dist/types/vue/src/primitives/presence/Presence.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/presence/index.d.ts +3 -0
- package/dist/types/vue/src/primitives/presence/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/presence/usePresence.d.ts +5 -0
- package/dist/types/vue/src/primitives/presence/usePresence.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/primitive/Primitive.d.ts +31 -0
- package/dist/types/vue/src/primitives/primitive/Primitive.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/primitive/Slot.d.ts +6 -0
- package/dist/types/vue/src/primitives/primitive/Slot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/primitive/index.d.ts +3 -0
- package/dist/types/vue/src/primitives/primitive/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/progress/ProgressIndicator.vue.d.ts +14 -0
- package/dist/types/vue/src/primitives/progress/ProgressIndicator.vue.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/progress/ProgressRoot.vue.d.ts +33 -0
- package/dist/types/vue/src/primitives/progress/ProgressRoot.vue.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/progress/context.d.ts +9 -0
- package/dist/types/vue/src/primitives/progress/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/progress/index.d.ts +4 -0
- package/dist/types/vue/src/primitives/progress/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/radio-group/Radio.d.ts +88 -0
- package/dist/types/vue/src/primitives/radio-group/Radio.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/radio-group/RadioGroupIndicator.d.ts +43 -0
- package/dist/types/vue/src/primitives/radio-group/RadioGroupIndicator.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/radio-group/RadioGroupItem.d.ts +85 -0
- package/dist/types/vue/src/primitives/radio-group/RadioGroupItem.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/radio-group/RadioGroupRoot.d.ts +119 -0
- package/dist/types/vue/src/primitives/radio-group/RadioGroupRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/radio-group/context.d.ts +19 -0
- package/dist/types/vue/src/primitives/radio-group/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/radio-group/index.d.ts +5 -0
- package/dist/types/vue/src/primitives/radio-group/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/rating/RatingItem.d.ts +42 -0
- package/dist/types/vue/src/primitives/rating/RatingItem.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/rating/RatingItemIndicator.d.ts +39 -0
- package/dist/types/vue/src/primitives/rating/RatingItemIndicator.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/rating/RatingRoot.d.ts +159 -0
- package/dist/types/vue/src/primitives/rating/RatingRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/rating/context.d.ts +16 -0
- package/dist/types/vue/src/primitives/rating/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/rating/index.d.ts +5 -0
- package/dist/types/vue/src/primitives/rating/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/roving-focus/RovingFocusGroup.vue.d.ts +38 -0
- package/dist/types/vue/src/primitives/roving-focus/RovingFocusGroup.vue.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/roving-focus/RovingFocusItem.vue.d.ts +21 -0
- package/dist/types/vue/src/primitives/roving-focus/RovingFocusItem.vue.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/roving-focus/context.d.ts +15 -0
- package/dist/types/vue/src/primitives/roving-focus/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/roving-focus/index.d.ts +4 -0
- package/dist/types/vue/src/primitives/roving-focus/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/separator/Separator.vue.d.ts +19 -0
- package/dist/types/vue/src/primitives/separator/Separator.vue.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/separator/index.d.ts +2 -0
- package/dist/types/vue/src/primitives/separator/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/slider/SliderImpl.d.ts +36 -0
- package/dist/types/vue/src/primitives/slider/SliderImpl.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/slider/SliderOrientation.d.ts +91 -0
- package/dist/types/vue/src/primitives/slider/SliderOrientation.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/slider/SliderRoot.d.ts +187 -0
- package/dist/types/vue/src/primitives/slider/SliderRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/slider/SliderThumb.d.ts +33 -0
- package/dist/types/vue/src/primitives/slider/SliderThumb.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/slider/SliderTrack.d.ts +33 -0
- package/dist/types/vue/src/primitives/slider/SliderTrack.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/slider/context.d.ts +22 -0
- package/dist/types/vue/src/primitives/slider/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/slider/index.d.ts +5 -0
- package/dist/types/vue/src/primitives/slider/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/splitter/SplitterGroup.d.ts +90 -0
- package/dist/types/vue/src/primitives/splitter/SplitterGroup.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/splitter/SplitterPanel.d.ts +113 -0
- package/dist/types/vue/src/primitives/splitter/SplitterPanel.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/splitter/SplitterResizeHandle.d.ts +85 -0
- package/dist/types/vue/src/primitives/splitter/SplitterResizeHandle.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/splitter/behaviors.d.ts +22 -0
- package/dist/types/vue/src/primitives/splitter/behaviors.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/splitter/context.d.ts +23 -0
- package/dist/types/vue/src/primitives/splitter/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/splitter/index.d.ts +6 -0
- package/dist/types/vue/src/primitives/splitter/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/stepper/StepperItem.d.ts +63 -0
- package/dist/types/vue/src/primitives/stepper/StepperItem.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/stepper/StepperParts.d.ts +130 -0
- package/dist/types/vue/src/primitives/stepper/StepperParts.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/stepper/StepperRoot.d.ts +91 -0
- package/dist/types/vue/src/primitives/stepper/StepperRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/stepper/StepperTrigger.d.ts +33 -0
- package/dist/types/vue/src/primitives/stepper/StepperTrigger.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/stepper/context.d.ts +23 -0
- package/dist/types/vue/src/primitives/stepper/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/stepper/index.d.ts +6 -0
- package/dist/types/vue/src/primitives/stepper/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/switch/SwitchRoot.d.ts +133 -0
- package/dist/types/vue/src/primitives/switch/SwitchRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/switch/index.d.ts +2 -0
- package/dist/types/vue/src/primitives/switch/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/tabs/TabsContent.d.ts +50 -0
- package/dist/types/vue/src/primitives/tabs/TabsContent.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/tabs/TabsList.d.ts +42 -0
- package/dist/types/vue/src/primitives/tabs/TabsList.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/tabs/TabsRoot.d.ts +101 -0
- package/dist/types/vue/src/primitives/tabs/TabsRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/tabs/TabsTrigger.d.ts +55 -0
- package/dist/types/vue/src/primitives/tabs/TabsTrigger.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/tabs/context.d.ts +19 -0
- package/dist/types/vue/src/primitives/tabs/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/tabs/index.d.ts +6 -0
- package/dist/types/vue/src/primitives/tabs/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toggle/Toggle.d.ts +91 -0
- package/dist/types/vue/src/primitives/toggle/Toggle.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toggle/index.d.ts +2 -0
- package/dist/types/vue/src/primitives/toggle/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toggle-group/ToggleGroupItem.d.ts +53 -0
- package/dist/types/vue/src/primitives/toggle-group/ToggleGroupItem.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toggle-group/ToggleGroupRoot.d.ts +141 -0
- package/dist/types/vue/src/primitives/toggle-group/ToggleGroupRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toggle-group/context.d.ts +16 -0
- package/dist/types/vue/src/primitives/toggle-group/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toggle-group/index.d.ts +4 -0
- package/dist/types/vue/src/primitives/toggle-group/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarButton.d.ts +43 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarButton.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarRoot.d.ts +63 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarRoot.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarToggleGroup.d.ts +135 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarToggleGroup.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarToggleItem.d.ts +50 -0
- package/dist/types/vue/src/primitives/toolbar/ToolbarToggleItem.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toolbar/context.d.ts +9 -0
- package/dist/types/vue/src/primitives/toolbar/context.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/toolbar/index.d.ts +6 -0
- package/dist/types/vue/src/primitives/toolbar/index.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/config.d.ts +2 -0
- package/dist/types/vue/src/primitives/utils/config.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/createContext.d.ts +2 -0
- package/dist/types/vue/src/primitives/utils/createContext.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/renderSlotFragments.d.ts +3 -0
- package/dist/types/vue/src/primitives/utils/renderSlotFragments.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/types.d.ts +2 -0
- package/dist/types/vue/src/primitives/utils/types.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useComposing.d.ts +8 -0
- package/dist/types/vue/src/primitives/utils/useComposing.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useDirection.d.ts +4 -0
- package/dist/types/vue/src/primitives/utils/useDirection.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useEmitAsProps.d.ts +2 -0
- package/dist/types/vue/src/primitives/utils/useEmitAsProps.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useFormControl.d.ts +4 -0
- package/dist/types/vue/src/primitives/utils/useFormControl.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useForwardExpose.d.ts +7 -0
- package/dist/types/vue/src/primitives/utils/useForwardExpose.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useForwardProps.d.ts +3 -0
- package/dist/types/vue/src/primitives/utils/useForwardProps.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useForwardPropsEmits.d.ts +3 -0
- package/dist/types/vue/src/primitives/utils/useForwardPropsEmits.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useForwardScopeId.d.ts +2 -0
- package/dist/types/vue/src/primitives/utils/useForwardScopeId.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useId.d.ts +2 -0
- package/dist/types/vue/src/primitives/utils/useId.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useNonce.d.ts +3 -0
- package/dist/types/vue/src/primitives/utils/useNonce.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useSingleOrMultipleValue.d.ts +12 -0
- package/dist/types/vue/src/primitives/utils/useSingleOrMultipleValue.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/utils/useSize.d.ts +7 -0
- package/dist/types/vue/src/primitives/utils/useSize.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/visually-hidden/VisuallyHidden.vue.d.ts +19 -0
- package/dist/types/vue/src/primitives/visually-hidden/VisuallyHidden.vue.d.ts.map +1 -0
- package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts +2 -2
- package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts.map +1 -1
- package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts +1 -1
- package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts.map +1 -1
- package/dist/types/vue/src/primitives/visually-hidden/index.d.ts +3 -0
- package/dist/types/vue/src/primitives/visually-hidden/index.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/accordion/Accordion.vue +2 -1
- package/src/components/accordion/AccordionContent.vue +1 -1
- package/src/components/accordion/AccordionItem.vue +1 -1
- package/src/components/accordion/AccordionTrigger.vue +3 -3
- package/src/components/app-shell/AppShell.vue +54 -4
- package/src/components/aspect-ratio/AspectRatio.vue +1 -1
- package/src/components/breadcrumb/BreadcrumbItem.vue +2 -1
- package/src/components/button/Button.vue +2 -1
- package/src/components/card/Card.vue +2 -1
- package/src/components/checkbox/Checkbox.vue +1 -1
- package/src/components/checkbox-group/CheckboxGroup.vue +1 -1
- package/src/components/chip/Chip.vue +2 -1
- package/src/components/chip/composables/useChipRoot.ts +1 -1
- package/src/components/collapsible/Collapsible.vue +2 -1
- package/src/components/collapsible/CollapsibleContent.vue +1 -1
- package/src/components/collapsible/CollapsibleTrigger.vue +2 -2
- package/src/components/command-palette/CommandPalette.vue +53 -16
- package/src/components/command-palette/CommandPaletteInput.vue +32 -0
- package/src/components/command-palette/CommandPaletteItem.vue +7 -5
- package/src/components/command-palette/CommandPalettePanel.vue +95 -34
- package/src/components/command-palette/composables/useCommandItems.ts +16 -14
- package/src/components/command-palette/context.ts +28 -0
- package/src/components/command-palette/types.ts +21 -5
- package/src/components/command-palette/utils/match.ts +6 -3
- package/src/components/description-list/DescriptionList.vue +8 -2
- package/src/components/dialog/Dialog.vue +13 -8
- package/src/components/divider/Divider.vue +1 -1
- package/src/components/drawer/Drawer.vue +13 -8
- package/src/components/float-button/FloatButton.vue +4 -11
- package/src/components/float-button/types.ts +3 -2
- package/src/components/form/Form.vue +14 -1
- package/src/components/form/scope.ts +39 -0
- package/src/components/heading/Heading.vue +1 -1
- package/src/components/icon-button/IconButton.vue +2 -1
- package/src/components/image/Image.vue +1 -1
- package/src/components/indicator/Indicator.vue +2 -1
- package/src/components/input/InputAction.vue +1 -1
- package/src/components/line-clamp/LineClamp.vue +105 -0
- package/src/components/line-clamp/line-clamp.variants.ts +1 -0
- package/src/components/link/Link.vue +2 -1
- package/src/components/multi-select/MultiSelect.vue +4 -1
- package/src/components/nav-link/NavLink.vue +33 -4
- package/src/components/nav-link/NavLinkChild.ts +57 -0
- package/src/components/navigation-menu/NavigationMenuLink.vue +1 -1
- package/src/components/pagination/Pagination.vue +1 -1
- package/src/components/pagination/PaginationContent.vue +1 -1
- package/src/components/pagination/PaginationControl.vue +6 -1
- package/src/components/pagination/PaginationPage.vue +1 -1
- package/src/components/panel/Panel.vue +1 -1
- package/src/components/pin-input/PinInput.vue +1 -1
- package/src/components/prev-next/PrevNextLink.vue +2 -1
- package/src/components/progress/Progress.vue +1 -1
- package/src/components/prose/Prose.vue +2 -1
- package/src/components/radio-group/RadioGroup.vue +1 -1
- package/src/components/range-slider/RangeSlider.vue +1 -1
- package/src/components/rating/Rating.vue +1 -1
- package/src/components/ring-progress/RingProgress.vue +1 -1
- package/src/components/section/Section.vue +13 -2
- package/src/components/segmented-control/SegmentedControl.vue +2 -1
- package/src/components/sheet/Sheet.vue +14 -10
- package/src/components/sidebar/Sidebar.vue +2 -1
- package/src/components/sidebar/context.ts +9 -0
- package/src/components/slider/Slider.vue +1 -1
- package/src/components/slider/SliderHandle.vue +2 -1
- package/src/components/split-button/types.ts +1 -1
- package/src/components/splitter/Splitter.vue +1 -1
- package/src/components/splitter/SplitterHandle.vue +1 -1
- package/src/components/splitter/SplitterPanel.vue +1 -1
- package/src/components/statistic/Statistic.vue +2 -2
- package/src/components/stepper/Stepper.vue +1 -1
- package/src/components/stepper/StepperStep.vue +1 -1
- package/src/components/switch/Switch.vue +1 -1
- package/src/components/tabs/Tabs.vue +1 -1
- package/src/components/tabs/TabsContent.vue +1 -1
- package/src/components/tabs/TabsList.vue +1 -1
- package/src/components/tabs/TabsTrigger.vue +1 -1
- package/src/components/tag/Tag.vue +2 -1
- package/src/components/text/Text.vue +2 -1
- package/src/components/time/Time.vue +22 -5
- package/src/components/toast/Toaster.vue +1 -0
- package/src/components/toggle/Toggle.vue +2 -1
- package/src/components/toolbar/Toolbar.vue +1 -1
- package/src/components/toolbar/ToolbarButton.vue +1 -1
- package/src/components/toolbar/ToolbarLink.vue +1 -1
- package/src/components/toolbar/ToolbarSeparator.vue +1 -1
- package/src/components/toolbar/ToolbarToggleGroup.vue +2 -1
- package/src/components/toolbar/ToolbarToggleItem.vue +1 -1
- package/src/components/toolbar/types.ts +1 -1
- package/src/components/visually-hidden/VisuallyHidden.vue +4 -18
- package/src/index.ts +15 -2
- package/src/lib/useDirection.ts +2 -1
- package/src/locale/index.ts +1 -1
- package/src/primitives/accordion/AccordionContent.ts +47 -0
- package/src/primitives/accordion/AccordionHeader.ts +35 -0
- package/src/primitives/accordion/AccordionItem.ts +83 -0
- package/src/primitives/accordion/AccordionRoot.ts +75 -0
- package/src/primitives/accordion/AccordionTrigger.ts +55 -0
- package/src/primitives/accordion/LICENSE +44 -0
- package/src/primitives/accordion/context.ts +34 -0
- package/src/primitives/accordion/index.ts +11 -0
- package/src/primitives/aspect-ratio/AspectRatio.ts +47 -0
- package/src/primitives/aspect-ratio/LICENSE +44 -0
- package/src/primitives/aspect-ratio/index.ts +1 -0
- package/src/primitives/checkbox/CheckboxGroupRoot.ts +93 -0
- package/src/primitives/checkbox/CheckboxRoot.ts +170 -0
- package/src/primitives/checkbox/LICENSE +44 -0
- package/src/primitives/checkbox/context.ts +20 -0
- package/src/primitives/checkbox/index.ts +8 -0
- package/src/primitives/collapsible/CollapsibleContent.ts +124 -0
- package/src/primitives/collapsible/CollapsibleRoot.ts +63 -0
- package/src/primitives/collapsible/CollapsibleTrigger.ts +43 -0
- package/src/primitives/collapsible/LICENSE +44 -0
- package/src/primitives/collapsible/context.ts +13 -0
- package/src/primitives/collapsible/index.ts +12 -0
- package/src/primitives/collection/LICENSE +44 -0
- package/src/primitives/collection/index.ts +82 -0
- package/src/primitives/number-field/NumberFieldDecrement.vue +2 -3
- package/src/primitives/number-field/NumberFieldIncrement.vue +2 -3
- package/src/primitives/number-field/NumberFieldInput.vue +2 -3
- package/src/primitives/number-field/NumberFieldRoot.vue +3 -3
- package/src/primitives/pagination/LICENSE +44 -0
- package/src/primitives/pagination/PaginationEdge.ts +77 -0
- package/src/primitives/pagination/PaginationList.ts +46 -0
- package/src/primitives/pagination/PaginationListItem.ts +61 -0
- package/src/primitives/pagination/PaginationRoot.ts +73 -0
- package/src/primitives/pagination/context.ts +14 -0
- package/src/primitives/pagination/index.ts +15 -0
- package/src/primitives/pin-input/LICENSE +44 -0
- package/src/primitives/pin-input/PinInputInput.ts +218 -0
- package/src/primitives/pin-input/PinInputRoot.ts +136 -0
- package/src/primitives/pin-input/context.ts +24 -0
- package/src/primitives/pin-input/index.ts +3 -0
- package/src/primitives/presence/LICENSE +44 -0
- package/src/primitives/presence/Presence.ts +70 -0
- package/src/primitives/presence/index.ts +2 -0
- package/src/primitives/presence/usePresence.ts +28 -0
- package/src/primitives/primitive/LICENSE +44 -0
- package/src/primitives/primitive/Primitive.ts +45 -0
- package/src/primitives/primitive/Slot.ts +22 -0
- package/src/primitives/primitive/index.ts +2 -0
- package/src/primitives/progress/LICENSE +44 -0
- package/src/primitives/progress/ProgressIndicator.vue +24 -0
- package/src/primitives/progress/ProgressRoot.vue +95 -0
- package/src/primitives/progress/context.ts +12 -0
- package/src/primitives/progress/index.ts +7 -0
- package/src/primitives/radio-group/LICENSE +44 -0
- package/src/primitives/radio-group/Radio.ts +110 -0
- package/src/primitives/radio-group/RadioGroupIndicator.ts +54 -0
- package/src/primitives/radio-group/RadioGroupItem.ts +116 -0
- package/src/primitives/radio-group/RadioGroupRoot.ts +108 -0
- package/src/primitives/radio-group/context.ts +25 -0
- package/src/primitives/radio-group/index.ts +9 -0
- package/src/primitives/rating/LICENSE +44 -0
- package/src/primitives/rating/RatingItem.ts +35 -0
- package/src/primitives/rating/RatingItemIndicator.ts +87 -0
- package/src/primitives/rating/RatingRoot.ts +111 -0
- package/src/primitives/rating/context.ts +22 -0
- package/src/primitives/rating/index.ts +9 -0
- package/src/primitives/roving-focus/LICENSE +44 -0
- package/src/primitives/roving-focus/RovingFocusGroup.vue +125 -0
- package/src/primitives/roving-focus/RovingFocusItem.vue +99 -0
- package/src/primitives/roving-focus/context.ts +18 -0
- package/src/primitives/roving-focus/index.ts +7 -0
- package/src/primitives/separator/LICENSE +44 -0
- package/src/primitives/separator/Separator.vue +26 -0
- package/src/primitives/separator/index.ts +1 -0
- package/src/primitives/slider/LICENSE +44 -0
- package/src/primitives/slider/SliderImpl.ts +66 -0
- package/src/primitives/slider/SliderOrientation.ts +100 -0
- package/src/primitives/slider/SliderRoot.ts +214 -0
- package/src/primitives/slider/SliderThumb.ts +139 -0
- package/src/primitives/slider/SliderTrack.ts +37 -0
- package/src/primitives/slider/context.ts +31 -0
- package/src/primitives/slider/index.ts +8 -0
- package/src/primitives/splitter/LICENSE +44 -0
- package/src/primitives/splitter/SplitterGroup.ts +642 -0
- package/src/primitives/splitter/SplitterPanel.ts +170 -0
- package/src/primitives/splitter/SplitterResizeHandle.ts +170 -0
- package/src/primitives/splitter/behaviors.ts +173 -0
- package/src/primitives/splitter/context.ts +33 -0
- package/src/primitives/splitter/index.ts +13 -0
- package/src/primitives/stepper/LICENSE +44 -0
- package/src/primitives/stepper/StepperItem.ts +68 -0
- package/src/primitives/stepper/StepperParts.ts +103 -0
- package/src/primitives/stepper/StepperRoot.ts +171 -0
- package/src/primitives/stepper/StepperTrigger.ts +119 -0
- package/src/primitives/stepper/context.ts +29 -0
- package/src/primitives/stepper/index.ts +17 -0
- package/src/primitives/switch/LICENSE +44 -0
- package/src/primitives/switch/SwitchRoot.ts +151 -0
- package/src/primitives/switch/index.ts +6 -0
- package/src/primitives/tabs/LICENSE +44 -0
- package/src/primitives/tabs/TabsContent.ts +94 -0
- package/src/primitives/tabs/TabsList.ts +52 -0
- package/src/primitives/tabs/TabsRoot.ts +99 -0
- package/src/primitives/tabs/TabsTrigger.ts +97 -0
- package/src/primitives/tabs/context.ts +22 -0
- package/src/primitives/tabs/index.ts +5 -0
- package/src/primitives/toggle/LICENSE +44 -0
- package/src/primitives/toggle/Toggle.ts +116 -0
- package/src/primitives/toggle/index.ts +1 -0
- package/src/primitives/toggle-group/LICENSE +44 -0
- package/src/primitives/toggle-group/ToggleGroupItem.ts +80 -0
- package/src/primitives/toggle-group/ToggleGroupRoot.ts +113 -0
- package/src/primitives/toggle-group/context.ts +19 -0
- package/src/primitives/toggle-group/index.ts +7 -0
- package/src/primitives/toolbar/LICENSE +44 -0
- package/src/primitives/toolbar/ToolbarButton.ts +44 -0
- package/src/primitives/toolbar/ToolbarRoot.ts +53 -0
- package/src/primitives/toolbar/ToolbarToggleGroup.ts +69 -0
- package/src/primitives/toolbar/ToolbarToggleItem.ts +43 -0
- package/src/primitives/toolbar/context.ts +12 -0
- package/src/primitives/toolbar/index.ts +9 -0
- package/src/primitives/utils/config.ts +1 -0
- package/src/primitives/utils/createContext.ts +34 -0
- package/src/primitives/utils/renderSlotFragments.ts +8 -0
- package/src/primitives/utils/types.ts +1 -0
- package/src/primitives/utils/useComposing.ts +44 -0
- package/src/primitives/utils/useDirection.ts +9 -0
- package/src/primitives/utils/useEmitAsProps.ts +13 -0
- package/src/primitives/utils/useFormControl.ts +6 -0
- package/src/primitives/utils/useForwardExpose.ts +78 -0
- package/src/primitives/utils/useForwardProps.ts +29 -0
- package/src/primitives/utils/useForwardPropsEmits.ts +12 -0
- package/src/primitives/utils/useForwardScopeId.ts +6 -0
- package/src/primitives/utils/useId.ts +9 -0
- package/src/primitives/utils/useNonce.ts +7 -0
- package/src/primitives/utils/useSingleOrMultipleValue.ts +36 -0
- package/src/primitives/utils/useSize.ts +25 -0
- package/src/primitives/visually-hidden/VisuallyHidden.vue +30 -0
- package/src/primitives/visually-hidden/VisuallyHiddenInput.ts +1 -1
- package/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue +2 -2
- package/src/primitives/visually-hidden/index.ts +2 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { COLLECTION_ITEM } from '../collection'
|
|
2
|
+
|
|
3
|
+
const IGNORED = ['INPUT', 'TEXTAREA']
|
|
4
|
+
|
|
5
|
+
export interface ArrowNavigationOptions {
|
|
6
|
+
arrowKeyOptions?: 'horizontal' | 'vertical' | 'both'
|
|
7
|
+
attributeName?: string
|
|
8
|
+
itemsArray?: HTMLElement[]
|
|
9
|
+
loop?: boolean
|
|
10
|
+
dir?: 'ltr' | 'rtl'
|
|
11
|
+
preventScroll?: boolean
|
|
12
|
+
enableIgnoredElement?: boolean
|
|
13
|
+
focus?: boolean
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function arrowNavigation(
|
|
17
|
+
event: KeyboardEvent,
|
|
18
|
+
currentElement: HTMLElement | null | undefined,
|
|
19
|
+
parentElement: HTMLElement | null | undefined,
|
|
20
|
+
options: ArrowNavigationOptions = {},
|
|
21
|
+
): HTMLElement | null {
|
|
22
|
+
if (
|
|
23
|
+
!currentElement ||
|
|
24
|
+
(options.enableIgnoredElement && IGNORED.includes(currentElement.nodeName))
|
|
25
|
+
)
|
|
26
|
+
return null
|
|
27
|
+
const {
|
|
28
|
+
arrowKeyOptions = 'both',
|
|
29
|
+
attributeName = `[${COLLECTION_ITEM}]`,
|
|
30
|
+
itemsArray = [],
|
|
31
|
+
loop = true,
|
|
32
|
+
dir = 'ltr',
|
|
33
|
+
preventScroll = true,
|
|
34
|
+
focus = false,
|
|
35
|
+
} = options
|
|
36
|
+
const right = event.key === 'ArrowRight'
|
|
37
|
+
const left = event.key === 'ArrowLeft'
|
|
38
|
+
const up = event.key === 'ArrowUp'
|
|
39
|
+
const down = event.key === 'ArrowDown'
|
|
40
|
+
const home = event.key === 'Home'
|
|
41
|
+
const end = event.key === 'End'
|
|
42
|
+
const goingVertical = up || down
|
|
43
|
+
const goingHorizontal = right || left
|
|
44
|
+
if (
|
|
45
|
+
!home &&
|
|
46
|
+
!end &&
|
|
47
|
+
((!goingVertical && !goingHorizontal) ||
|
|
48
|
+
(arrowKeyOptions === 'vertical' && goingHorizontal) ||
|
|
49
|
+
(arrowKeyOptions === 'horizontal' && goingVertical))
|
|
50
|
+
)
|
|
51
|
+
return null
|
|
52
|
+
const items = parentElement
|
|
53
|
+
? Array.from(parentElement.querySelectorAll<HTMLElement>(attributeName))
|
|
54
|
+
: itemsArray
|
|
55
|
+
if (!items.length) return null
|
|
56
|
+
if (preventScroll) event.preventDefault()
|
|
57
|
+
let item: HTMLElement | null = null
|
|
58
|
+
if (goingHorizontal || goingVertical) {
|
|
59
|
+
const goForward = goingVertical ? down : dir === 'ltr' ? right : left
|
|
60
|
+
item = findNextFocusableElement(items, currentElement, { goForward, loop })
|
|
61
|
+
} else if (home) item = items.at(0) || null
|
|
62
|
+
else if (end) item = items.at(-1) || null
|
|
63
|
+
if (focus) item?.focus()
|
|
64
|
+
return item
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function findNextFocusableElement(
|
|
68
|
+
elements: HTMLElement[],
|
|
69
|
+
currentElement: HTMLElement,
|
|
70
|
+
options: { goForward: boolean; loop: boolean },
|
|
71
|
+
iterations = elements.includes(currentElement) ? elements.length : elements.length + 1,
|
|
72
|
+
): HTMLElement | null {
|
|
73
|
+
if (--iterations === 0) return null
|
|
74
|
+
const index = elements.indexOf(currentElement)
|
|
75
|
+
const newIndex =
|
|
76
|
+
index === -1
|
|
77
|
+
? options.goForward
|
|
78
|
+
? 0
|
|
79
|
+
: elements.length - 1
|
|
80
|
+
: options.goForward
|
|
81
|
+
? index + 1
|
|
82
|
+
: index - 1
|
|
83
|
+
if (!options.loop && (newIndex < 0 || newIndex >= elements.length)) return null
|
|
84
|
+
const candidate = elements[(newIndex + elements.length) % elements.length]
|
|
85
|
+
if (!candidate) return null
|
|
86
|
+
const disabled =
|
|
87
|
+
candidate.hasAttribute('disabled') && candidate.getAttribute('disabled') !== 'false'
|
|
88
|
+
if (disabled) return findNextFocusableElement(elements, candidate, options, iterations)
|
|
89
|
+
return candidate
|
|
90
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 UnoVue <https://github.com/unovue>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { blockingLayerCount } from '../dismissable-layer'
|
|
2
|
+
|
|
3
|
+
export interface ScrollBodyOption {
|
|
4
|
+
padding?: boolean | number | string
|
|
5
|
+
margin?: boolean | number | string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type ScrollBody = boolean | ScrollBodyOption
|
|
9
|
+
|
|
10
|
+
const locks = new Map<symbol, boolean>()
|
|
11
|
+
let initialOverflow: string | undefined
|
|
12
|
+
let releaseTouchMove: (() => void) | undefined
|
|
13
|
+
let active = false
|
|
14
|
+
|
|
15
|
+
const isIOS =
|
|
16
|
+
typeof navigator !== 'undefined' &&
|
|
17
|
+
(/iP(?:ad|hone|od)/.test(navigator.userAgent) ||
|
|
18
|
+
(navigator.maxTouchPoints > 2 && /iPad|Macintosh/.test(navigator.userAgent)))
|
|
19
|
+
|
|
20
|
+
function scrollable(element: Element): boolean {
|
|
21
|
+
const style = getComputedStyle(element)
|
|
22
|
+
if (
|
|
23
|
+
style.overflowX === 'scroll' ||
|
|
24
|
+
style.overflowY === 'scroll' ||
|
|
25
|
+
(style.overflowX === 'auto' && element.clientWidth < element.scrollWidth) ||
|
|
26
|
+
(style.overflowY === 'auto' && element.clientHeight < element.scrollHeight)
|
|
27
|
+
)
|
|
28
|
+
return true
|
|
29
|
+
const parent = element.parentNode
|
|
30
|
+
if (!(parent instanceof Element) || parent.tagName === 'BODY') return false
|
|
31
|
+
return scrollable(parent)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function preventTouchMove(event: TouchEvent) {
|
|
35
|
+
const target = event.target
|
|
36
|
+
if (target instanceof Element && scrollable(target)) return
|
|
37
|
+
if (event.touches.length > 1) return
|
|
38
|
+
if (event.cancelable) event.preventDefault()
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function locked() {
|
|
42
|
+
for (const value of locks.values()) if (value) return true
|
|
43
|
+
return false
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function size(value: boolean | number | string) {
|
|
47
|
+
return typeof value === 'number' ? `${value}px` : String(value)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function offsets(scrollBody: ScrollBody, scrollbar: number) {
|
|
51
|
+
if (!scrollBody) return { padding: 0, margin: 0 }
|
|
52
|
+
if (typeof scrollBody !== 'object') return { padding: scrollbar, margin: 0 }
|
|
53
|
+
const pick = (value: boolean | number | string | undefined, fallback: number) =>
|
|
54
|
+
value === true ? scrollbar : (value ?? fallback)
|
|
55
|
+
return { padding: pick(scrollBody.padding, scrollbar), margin: pick(scrollBody.margin, 0) }
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function reset() {
|
|
59
|
+
const body = document.body
|
|
60
|
+
body.style.paddingRight = ''
|
|
61
|
+
body.style.marginRight = ''
|
|
62
|
+
if (blockingLayerCount() === 0) body.style.pointerEvents = ''
|
|
63
|
+
document.documentElement.style.removeProperty('--scrollbar-width')
|
|
64
|
+
body.style.overflow = initialOverflow ?? ''
|
|
65
|
+
releaseTouchMove?.()
|
|
66
|
+
releaseTouchMove = undefined
|
|
67
|
+
initialOverflow = undefined
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function apply(scrollBody: ScrollBody, defer: (callback: () => void) => void) {
|
|
71
|
+
const body = document.body
|
|
72
|
+
if (initialOverflow === undefined) initialOverflow = body.style.overflow
|
|
73
|
+
const scrollbar = window.innerWidth - document.documentElement.clientWidth
|
|
74
|
+
const { padding, margin } = offsets(scrollBody, scrollbar)
|
|
75
|
+
if (scrollbar > 0) {
|
|
76
|
+
body.style.paddingRight = size(padding)
|
|
77
|
+
body.style.marginRight = size(margin)
|
|
78
|
+
document.documentElement.style.setProperty('--scrollbar-width', `${scrollbar}px`)
|
|
79
|
+
body.style.overflow = 'hidden'
|
|
80
|
+
}
|
|
81
|
+
if (isIOS) {
|
|
82
|
+
document.addEventListener('touchmove', preventTouchMove, { passive: false })
|
|
83
|
+
releaseTouchMove = () => document.removeEventListener('touchmove', preventTouchMove)
|
|
84
|
+
}
|
|
85
|
+
defer(() => {
|
|
86
|
+
if (!locked()) return
|
|
87
|
+
body.style.pointerEvents = 'none'
|
|
88
|
+
body.style.overflow = 'hidden'
|
|
89
|
+
})
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function sync(scrollBody: ScrollBody, defer: (callback: () => void) => void) {
|
|
93
|
+
const next = locked()
|
|
94
|
+
if (next === active) return
|
|
95
|
+
active = next
|
|
96
|
+
if (next) apply(scrollBody, defer)
|
|
97
|
+
else reset()
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function createScrollLock(
|
|
101
|
+
scrollBody: () => ScrollBody,
|
|
102
|
+
defer: (callback: () => void) => void = queueMicrotask,
|
|
103
|
+
) {
|
|
104
|
+
const id = Symbol('scroll-lock')
|
|
105
|
+
return {
|
|
106
|
+
set(value: boolean) {
|
|
107
|
+
locks.set(id, value)
|
|
108
|
+
sync(scrollBody(), defer)
|
|
109
|
+
},
|
|
110
|
+
release() {
|
|
111
|
+
locks.delete(id)
|
|
112
|
+
sync(scrollBody(), defer)
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 UnoVue <https://github.com/unovue>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type CheckedState = boolean | 'indeterminate'
|
|
2
|
+
|
|
3
|
+
export function isIndeterminate(checked: unknown): checked is 'indeterminate' {
|
|
4
|
+
return checked === 'indeterminate'
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function getCheckedState(checked: unknown) {
|
|
8
|
+
return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked'
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function ariaChecked(state: CheckedState) {
|
|
12
|
+
return isIndeterminate(state) ? 'mixed' : state
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function nextCheckedValue<T>(
|
|
16
|
+
current: unknown,
|
|
17
|
+
checked: boolean,
|
|
18
|
+
trueValue: T,
|
|
19
|
+
falseValue: T,
|
|
20
|
+
) {
|
|
21
|
+
if (isIndeterminate(current)) return trueValue
|
|
22
|
+
return checked ? falseValue : trueValue
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 UnoVue <https://github.com/unovue>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface CollapsibleMotion {
|
|
2
|
+
transitionDuration: string
|
|
3
|
+
animationName: string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export function openState(open: unknown) {
|
|
7
|
+
return open ? 'open' : 'closed'
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function measureCollapsibleContent(
|
|
11
|
+
node: HTMLElement,
|
|
12
|
+
saved: CollapsibleMotion | undefined,
|
|
13
|
+
suppressed: boolean,
|
|
14
|
+
) {
|
|
15
|
+
const motion = saved || {
|
|
16
|
+
transitionDuration: node.style.transitionDuration,
|
|
17
|
+
animationName: node.style.animationName,
|
|
18
|
+
}
|
|
19
|
+
node.style.transitionDuration = '0s'
|
|
20
|
+
node.style.animationName = 'none'
|
|
21
|
+
const rect = node.getBoundingClientRect()
|
|
22
|
+
if (!suppressed) {
|
|
23
|
+
node.style.transitionDuration = motion.transitionDuration
|
|
24
|
+
node.style.animationName = motion.animationName
|
|
25
|
+
}
|
|
26
|
+
return { motion, width: rect.width, height: rect.height }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function isCollapsibleContentRendered(present: boolean, unmountOnHide: boolean) {
|
|
30
|
+
return unmountOnHide ? present : true
|
|
31
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 UnoVue <https://github.com/unovue>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const COLLECTION_ITEM = 'data-reka-collection-item'
|
|
2
|
+
|
|
3
|
+
export interface CollectionEntry {
|
|
4
|
+
ref: HTMLElement
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function orderCollectionItems<T extends CollectionEntry>(
|
|
8
|
+
root: HTMLElement | null | undefined,
|
|
9
|
+
items: Iterable<T>,
|
|
10
|
+
includeDisabled = false,
|
|
11
|
+
) {
|
|
12
|
+
if (!root) return []
|
|
13
|
+
const nodes = Array.from(root.querySelectorAll(`[${COLLECTION_ITEM}]`))
|
|
14
|
+
const order = new Map(nodes.map((node, index) => [node, index]))
|
|
15
|
+
const ordered = Array.from(items).sort(
|
|
16
|
+
(a, b) => (order.get(a.ref) ?? -1) - (order.get(b.ref) ?? -1),
|
|
17
|
+
)
|
|
18
|
+
return includeDisabled ? ordered : ordered.filter(item => item.ref.dataset.disabled !== '')
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 UnoVue <https://github.com/unovue>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
export type PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>
|
|
2
|
+
export type FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>
|
|
3
|
+
|
|
4
|
+
export const POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'
|
|
5
|
+
export const FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'
|
|
6
|
+
|
|
7
|
+
const layers = new Set<HTMLElement>()
|
|
8
|
+
const blocking = new Set<HTMLElement>()
|
|
9
|
+
const branches = new Set<HTMLElement>()
|
|
10
|
+
const listeners = new Set<() => void>()
|
|
11
|
+
let originalBodyPointerEvents: string | undefined
|
|
12
|
+
let version = 0
|
|
13
|
+
|
|
14
|
+
function changed() {
|
|
15
|
+
version += 1
|
|
16
|
+
for (const listener of listeners) listener()
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function subscribeLayers(listener: () => void) {
|
|
20
|
+
listeners.add(listener)
|
|
21
|
+
return () => {
|
|
22
|
+
listeners.delete(listener)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function layersVersion() {
|
|
27
|
+
return version
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function addLayer(element: HTMLElement) {
|
|
31
|
+
layers.add(element)
|
|
32
|
+
changed()
|
|
33
|
+
return () => {
|
|
34
|
+
if (layers.delete(element)) changed()
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function addBranch(element: HTMLElement) {
|
|
39
|
+
branches.add(element)
|
|
40
|
+
changed()
|
|
41
|
+
return () => {
|
|
42
|
+
if (branches.delete(element)) changed()
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function blockOutsidePointerEvents(element: HTMLElement) {
|
|
47
|
+
const body = element.ownerDocument.body
|
|
48
|
+
if (blocking.size === 0) {
|
|
49
|
+
originalBodyPointerEvents = body.style.pointerEvents
|
|
50
|
+
body.style.pointerEvents = 'none'
|
|
51
|
+
}
|
|
52
|
+
blocking.add(element)
|
|
53
|
+
changed()
|
|
54
|
+
return () => {
|
|
55
|
+
if (!blocking.delete(element)) return
|
|
56
|
+
if (blocking.size === 0 && originalBodyPointerEvents != null)
|
|
57
|
+
body.style.pointerEvents = originalBodyPointerEvents
|
|
58
|
+
changed()
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function releaseLayer(element: HTMLElement) {
|
|
63
|
+
const removed = layers.delete(element)
|
|
64
|
+
const unblocked = blocking.delete(element)
|
|
65
|
+
if (removed || unblocked) changed()
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function blockingLayerCount() {
|
|
69
|
+
return blocking.size
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function layerIndex(element: HTMLElement | null | undefined) {
|
|
73
|
+
return element ? [...layers].indexOf(element) : -1
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function isHighestLayer(element: HTMLElement | null | undefined) {
|
|
77
|
+
return layerIndex(element) === layers.size - 1
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function bodyPointerEventsDisabled() {
|
|
81
|
+
return blocking.size > 0
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function pointerEventsEnabled(element: HTMLElement | null | undefined) {
|
|
85
|
+
const highest = [...blocking].at(-1)
|
|
86
|
+
return layerIndex(element) >= (highest ? [...layers].indexOf(highest) : -1)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function layerPointerEvents(element: HTMLElement | null | undefined) {
|
|
90
|
+
if (!bodyPointerEventsDisabled()) return undefined
|
|
91
|
+
return pointerEventsEnabled(element) ? 'auto' : 'none'
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function inBranch(target: EventTarget | null) {
|
|
95
|
+
return [...branches].some(branch => branch.contains(target as Node | null))
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function isLayerExist(layer: HTMLElement, target: EventTarget | null) {
|
|
99
|
+
if (!(target instanceof Element)) return false
|
|
100
|
+
const targetLayer = target.closest('[data-dismissable-layer]')
|
|
101
|
+
const mainLayer =
|
|
102
|
+
layer.dataset.dismissableLayer === ''
|
|
103
|
+
? layer
|
|
104
|
+
: layer.querySelector<HTMLElement>('[data-dismissable-layer]')
|
|
105
|
+
const all = Array.from(layer.ownerDocument.querySelectorAll('[data-dismissable-layer]'))
|
|
106
|
+
return (
|
|
107
|
+
!!targetLayer &&
|
|
108
|
+
!!mainLayer &&
|
|
109
|
+
(mainLayer === targetLayer || all.indexOf(mainLayer) < all.indexOf(targetLayer))
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function handleAndDispatchCustomEvent<E extends CustomEvent<{ originalEvent: Event }>>(
|
|
114
|
+
name: string,
|
|
115
|
+
handler: ((event: E) => void) | undefined,
|
|
116
|
+
detail: E['detail'],
|
|
117
|
+
) {
|
|
118
|
+
const target = detail.originalEvent.target as EventTarget
|
|
119
|
+
const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail })
|
|
120
|
+
if (handler) target.addEventListener(name, handler as EventListener, { once: true })
|
|
121
|
+
target.dispatchEvent(event)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface OutsideWatcher<E> {
|
|
125
|
+
element: () => HTMLElement | null | undefined
|
|
126
|
+
onOutside: (event: E) => void
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export function watchPointerDownOutside({
|
|
130
|
+
element,
|
|
131
|
+
onOutside,
|
|
132
|
+
}: OutsideWatcher<PointerDownOutsideEvent>) {
|
|
133
|
+
const ownerDocument = element()?.ownerDocument ?? globalThis.document
|
|
134
|
+
let inside = false
|
|
135
|
+
let pendingClick: () => void = () => {}
|
|
136
|
+
|
|
137
|
+
const handlePointerDown = (event: PointerEvent) => {
|
|
138
|
+
const layer = element()
|
|
139
|
+
const target = event.target as HTMLElement | null
|
|
140
|
+
if (!layer || !target) return
|
|
141
|
+
if (isLayerExist(layer, target)) {
|
|
142
|
+
inside = false
|
|
143
|
+
return
|
|
144
|
+
}
|
|
145
|
+
if (!inside) {
|
|
146
|
+
const dispatch = () =>
|
|
147
|
+
handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, onOutside, { originalEvent: event })
|
|
148
|
+
if (event.pointerType === 'touch') {
|
|
149
|
+
ownerDocument.removeEventListener('click', pendingClick)
|
|
150
|
+
pendingClick = dispatch
|
|
151
|
+
ownerDocument.addEventListener('click', pendingClick, { once: true })
|
|
152
|
+
} else dispatch()
|
|
153
|
+
} else ownerDocument.removeEventListener('click', pendingClick)
|
|
154
|
+
inside = false
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const timer = window.setTimeout(() => {
|
|
158
|
+
ownerDocument.addEventListener('pointerdown', handlePointerDown)
|
|
159
|
+
}, 0)
|
|
160
|
+
|
|
161
|
+
return {
|
|
162
|
+
onPointerDownCapture() {
|
|
163
|
+
inside = true
|
|
164
|
+
},
|
|
165
|
+
stop() {
|
|
166
|
+
window.clearTimeout(timer)
|
|
167
|
+
ownerDocument.removeEventListener('pointerdown', handlePointerDown)
|
|
168
|
+
ownerDocument.removeEventListener('click', pendingClick)
|
|
169
|
+
},
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export function watchFocusOutside({
|
|
174
|
+
element,
|
|
175
|
+
onOutside,
|
|
176
|
+
settle,
|
|
177
|
+
}: OutsideWatcher<FocusOutsideEvent> & { settle?: () => Promise<void> }) {
|
|
178
|
+
const ownerDocument = element()?.ownerDocument ?? globalThis.document
|
|
179
|
+
let inside = false
|
|
180
|
+
|
|
181
|
+
const handleFocus = async (event: FocusEvent) => {
|
|
182
|
+
if (!element()) return
|
|
183
|
+
if (settle) await settle()
|
|
184
|
+
const layer = element()
|
|
185
|
+
const target = event.target as HTMLElement | null
|
|
186
|
+
if (!layer || !target || isLayerExist(layer, target)) return
|
|
187
|
+
if (!inside) handleAndDispatchCustomEvent(FOCUS_OUTSIDE, onOutside, { originalEvent: event })
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
ownerDocument.addEventListener('focusin', handleFocus)
|
|
191
|
+
|
|
192
|
+
return {
|
|
193
|
+
onFocusCapture() {
|
|
194
|
+
inside = true
|
|
195
|
+
},
|
|
196
|
+
onBlurCapture() {
|
|
197
|
+
inside = false
|
|
198
|
+
},
|
|
199
|
+
stop() {
|
|
200
|
+
ownerDocument.removeEventListener('focusin', handleFocus)
|
|
201
|
+
},
|
|
202
|
+
}
|
|
203
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 UnoVue <https://github.com/unovue>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const GUARD = 'data-reka-focus-guard'
|
|
2
|
+
let count = 0
|
|
3
|
+
|
|
4
|
+
function createFocusGuard() {
|
|
5
|
+
const element = document.createElement('span')
|
|
6
|
+
element.setAttribute(GUARD, '')
|
|
7
|
+
element.tabIndex = 0
|
|
8
|
+
element.style.outline = 'none'
|
|
9
|
+
element.style.opacity = '0'
|
|
10
|
+
element.style.position = 'fixed'
|
|
11
|
+
element.style.pointerEvents = 'none'
|
|
12
|
+
return element
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function installFocusGuards() {
|
|
16
|
+
const edges = document.querySelectorAll(`[${GUARD}]`)
|
|
17
|
+
document.body.insertAdjacentElement('afterbegin', edges[0] ?? createFocusGuard())
|
|
18
|
+
document.body.insertAdjacentElement('beforeend', edges[1] ?? createFocusGuard())
|
|
19
|
+
count += 1
|
|
20
|
+
return () => {
|
|
21
|
+
if (count === 1) for (const node of document.querySelectorAll(`[${GUARD}]`)) node.remove()
|
|
22
|
+
count -= 1
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 UnoVue <https://github.com/unovue>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|