reka-ui 2.9.9 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlertDialog/AlertDialogContent.cjs +2 -1
- package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogContent.js +2 -1
- package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
- package/dist/AlertDialog/AlertDialogRoot.cjs +4 -0
- package/dist/AlertDialog/AlertDialogRoot.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogRoot.js +4 -0
- package/dist/AlertDialog/AlertDialogRoot.js.map +1 -1
- package/dist/Checkbox/CheckboxRoot.cjs +27 -18
- package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxRoot.js +28 -19
- package/dist/Checkbox/CheckboxRoot.js.map +1 -1
- package/dist/Collection/Collection.cjs +2 -1
- package/dist/Collection/Collection.cjs.map +1 -1
- package/dist/Collection/Collection.js +2 -1
- package/dist/Collection/Collection.js.map +1 -1
- package/dist/Combobox/ComboboxContent.cjs +8 -0
- package/dist/Combobox/ComboboxContent.cjs.map +1 -1
- package/dist/Combobox/ComboboxContent.js +8 -0
- package/dist/Combobox/ComboboxContent.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs +18 -2
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js +18 -2
- package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
- package/dist/Combobox/ComboboxItem.cjs +11 -2
- package/dist/Combobox/ComboboxItem.cjs.map +1 -1
- package/dist/Combobox/ComboboxItem.js +12 -3
- package/dist/Combobox/ComboboxItem.js.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.cjs +7 -1
- package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.js +7 -1
- package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.cjs +4 -0
- package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.js +4 -0
- package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
- package/dist/ContextMenu/ContextMenuSubContent.cjs +4 -0
- package/dist/ContextMenu/ContextMenuSubContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuSubContent.js +4 -0
- package/dist/ContextMenu/ContextMenuSubContent.js.map +1 -1
- package/dist/DateField/DateFieldInput.cjs +3 -1
- package/dist/DateField/DateFieldInput.cjs.map +1 -1
- package/dist/DateField/DateFieldInput.js +3 -1
- package/dist/DateField/DateFieldInput.js.map +1 -1
- package/dist/DateField/DateFieldRoot.cjs +7 -1
- package/dist/DateField/DateFieldRoot.cjs.map +1 -1
- package/dist/DateField/DateFieldRoot.js +7 -1
- package/dist/DateField/DateFieldRoot.js.map +1 -1
- package/dist/DatePicker/DatePickerContent.cjs +8 -0
- package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
- package/dist/DatePicker/DatePickerContent.js +8 -0
- package/dist/DatePicker/DatePickerContent.js.map +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +4 -0
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +4 -0
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -0
- package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.js +8 -0
- package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
- package/dist/Dialog/DialogContent.cjs +16 -10
- package/dist/Dialog/DialogContent.cjs.map +1 -1
- package/dist/Dialog/DialogContent.js +17 -11
- package/dist/Dialog/DialogContent.js.map +1 -1
- package/dist/Dialog/DialogContentImpl.cjs +8 -1
- package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
- package/dist/Dialog/DialogContentImpl.js +8 -1
- package/dist/Dialog/DialogContentImpl.js.map +1 -1
- package/dist/Dialog/DialogContentModal.cjs +23 -5
- package/dist/Dialog/DialogContentModal.cjs.map +1 -1
- package/dist/Dialog/DialogContentModal.js +24 -6
- package/dist/Dialog/DialogContentModal.js.map +1 -1
- package/dist/Dialog/DialogContentNonModal.cjs +18 -2
- package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
- package/dist/Dialog/DialogContentNonModal.js +19 -3
- package/dist/Dialog/DialogContentNonModal.js.map +1 -1
- package/dist/Dialog/DialogOverlay.cjs +12 -6
- package/dist/Dialog/DialogOverlay.cjs.map +1 -1
- package/dist/Dialog/DialogOverlay.js +13 -7
- package/dist/Dialog/DialogOverlay.js.map +1 -1
- package/dist/Dialog/DialogOverlayImpl.cjs +8 -1
- package/dist/Dialog/DialogOverlayImpl.cjs.map +1 -1
- package/dist/Dialog/DialogOverlayImpl.js +9 -2
- package/dist/Dialog/DialogOverlayImpl.js.map +1 -1
- package/dist/Dialog/DialogRoot.cjs +7 -1
- package/dist/Dialog/DialogRoot.cjs.map +1 -1
- package/dist/Dialog/DialogRoot.js +7 -1
- package/dist/Dialog/DialogRoot.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.cjs +27 -10
- package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.js +28 -11
- package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
- package/dist/Drawer/DrawerClose.cjs +48 -0
- package/dist/Drawer/DrawerClose.cjs.map +1 -0
- package/dist/Drawer/DrawerClose.js +42 -0
- package/dist/Drawer/DrawerClose.js.map +1 -0
- package/dist/Drawer/DrawerContent.cjs +139 -0
- package/dist/Drawer/DrawerContent.cjs.map +1 -0
- package/dist/Drawer/DrawerContent.js +133 -0
- package/dist/Drawer/DrawerContent.js.map +1 -0
- package/dist/Drawer/DrawerContentImpl.cjs +298 -0
- package/dist/Drawer/DrawerContentImpl.cjs.map +1 -0
- package/dist/Drawer/DrawerContentImpl.js +292 -0
- package/dist/Drawer/DrawerContentImpl.js.map +1 -0
- package/dist/Drawer/DrawerDescription.cjs +45 -0
- package/dist/Drawer/DrawerDescription.cjs.map +1 -0
- package/dist/Drawer/DrawerDescription.js +39 -0
- package/dist/Drawer/DrawerDescription.js.map +1 -0
- package/dist/Drawer/DrawerHandle.cjs +48 -0
- package/dist/Drawer/DrawerHandle.cjs.map +1 -0
- package/dist/Drawer/DrawerHandle.js +42 -0
- package/dist/Drawer/DrawerHandle.js.map +1 -0
- package/dist/Drawer/DrawerIndent.cjs +78 -0
- package/dist/Drawer/DrawerIndent.cjs.map +1 -0
- package/dist/Drawer/DrawerIndent.js +72 -0
- package/dist/Drawer/DrawerIndent.js.map +1 -0
- package/dist/Drawer/DrawerIndentBackground.cjs +49 -0
- package/dist/Drawer/DrawerIndentBackground.cjs.map +1 -0
- package/dist/Drawer/DrawerIndentBackground.js +43 -0
- package/dist/Drawer/DrawerIndentBackground.js.map +1 -0
- package/dist/Drawer/DrawerOverlay.cjs +66 -0
- package/dist/Drawer/DrawerOverlay.cjs.map +1 -0
- package/dist/Drawer/DrawerOverlay.js +60 -0
- package/dist/Drawer/DrawerOverlay.js.map +1 -0
- package/dist/Drawer/DrawerOverlayImpl.cjs +69 -0
- package/dist/Drawer/DrawerOverlayImpl.cjs.map +1 -0
- package/dist/Drawer/DrawerOverlayImpl.js +63 -0
- package/dist/Drawer/DrawerOverlayImpl.js.map +1 -0
- package/dist/Drawer/DrawerPortal.cjs +47 -0
- package/dist/Drawer/DrawerPortal.cjs.map +1 -0
- package/dist/Drawer/DrawerPortal.js +41 -0
- package/dist/Drawer/DrawerPortal.js.map +1 -0
- package/dist/Drawer/DrawerProvider.cjs +80 -0
- package/dist/Drawer/DrawerProvider.cjs.map +1 -0
- package/dist/Drawer/DrawerProvider.js +68 -0
- package/dist/Drawer/DrawerProvider.js.map +1 -0
- package/dist/Drawer/DrawerRoot.cjs +197 -0
- package/dist/Drawer/DrawerRoot.cjs.map +1 -0
- package/dist/Drawer/DrawerRoot.js +185 -0
- package/dist/Drawer/DrawerRoot.js.map +1 -0
- package/dist/Drawer/DrawerSwipeArea.cjs +87 -0
- package/dist/Drawer/DrawerSwipeArea.cjs.map +1 -0
- package/dist/Drawer/DrawerSwipeArea.js +81 -0
- package/dist/Drawer/DrawerSwipeArea.js.map +1 -0
- package/dist/Drawer/DrawerTitle.cjs +45 -0
- package/dist/Drawer/DrawerTitle.cjs.map +1 -0
- package/dist/Drawer/DrawerTitle.js +39 -0
- package/dist/Drawer/DrawerTitle.js.map +1 -0
- package/dist/Drawer/DrawerTrigger.cjs +64 -0
- package/dist/Drawer/DrawerTrigger.cjs.map +1 -0
- package/dist/Drawer/DrawerTrigger.js +58 -0
- package/dist/Drawer/DrawerTrigger.js.map +1 -0
- package/dist/Drawer/DrawerViewport.cjs +49 -0
- package/dist/Drawer/DrawerViewport.cjs.map +1 -0
- package/dist/Drawer/DrawerViewport.js +43 -0
- package/dist/Drawer/DrawerViewport.js.map +1 -0
- package/dist/Drawer/utils.cjs +185 -0
- package/dist/Drawer/utils.cjs.map +1 -0
- package/dist/Drawer/utils.js +149 -0
- package/dist/Drawer/utils.js.map +1 -0
- package/dist/DropdownMenu/DropdownMenuContent.cjs +4 -0
- package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.js +4 -0
- package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubContent.cjs +4 -0
- package/dist/DropdownMenu/DropdownMenuSubContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubContent.js +4 -0
- package/dist/DropdownMenu/DropdownMenuSubContent.js.map +1 -1
- package/dist/FocusScope/FocusScope.cjs +31 -11
- package/dist/FocusScope/FocusScope.cjs.map +1 -1
- package/dist/FocusScope/FocusScope.js +32 -12
- package/dist/FocusScope/FocusScope.js.map +1 -1
- package/dist/HoverCard/HoverCardContent.cjs +8 -0
- package/dist/HoverCard/HoverCardContent.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContent.js +8 -0
- package/dist/HoverCard/HoverCardContent.js.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs +8 -0
- package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.js +8 -0
- package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs +9 -2
- package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
- package/dist/HoverCard/HoverCardRoot.js +9 -2
- package/dist/HoverCard/HoverCardRoot.js.map +1 -1
- package/dist/HoverCard/HoverCardTrigger.cjs +6 -0
- package/dist/HoverCard/HoverCardTrigger.cjs.map +1 -1
- package/dist/HoverCard/HoverCardTrigger.js +6 -0
- package/dist/HoverCard/HoverCardTrigger.js.map +1 -1
- package/dist/Listbox/ListboxRoot.cjs +4 -1
- package/dist/Listbox/ListboxRoot.cjs.map +1 -1
- package/dist/Listbox/ListboxRoot.js +4 -1
- package/dist/Listbox/ListboxRoot.js.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.cjs +7 -3
- package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.js +7 -3
- package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
- package/dist/Menu/MenuContent.cjs +4 -0
- package/dist/Menu/MenuContent.cjs.map +1 -1
- package/dist/Menu/MenuContent.js +4 -0
- package/dist/Menu/MenuContent.js.map +1 -1
- package/dist/Menu/MenuContentImpl.cjs +4 -0
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js +4 -0
- package/dist/Menu/MenuContentImpl.js.map +1 -1
- package/dist/Menu/MenuRootContentModal.cjs +4 -0
- package/dist/Menu/MenuRootContentModal.cjs.map +1 -1
- package/dist/Menu/MenuRootContentModal.js +4 -0
- package/dist/Menu/MenuRootContentModal.js.map +1 -1
- package/dist/Menu/MenuRootContentNonModal.cjs +4 -0
- package/dist/Menu/MenuRootContentNonModal.cjs.map +1 -1
- package/dist/Menu/MenuRootContentNonModal.js +4 -0
- package/dist/Menu/MenuRootContentNonModal.js.map +1 -1
- package/dist/Menu/MenuSubContent.cjs +4 -0
- package/dist/Menu/MenuSubContent.cjs.map +1 -1
- package/dist/Menu/MenuSubContent.js +4 -0
- package/dist/Menu/MenuSubContent.js.map +1 -1
- package/dist/Menubar/MenubarContent.cjs +4 -0
- package/dist/Menubar/MenubarContent.cjs.map +1 -1
- package/dist/Menubar/MenubarContent.js +4 -0
- package/dist/Menubar/MenubarContent.js.map +1 -1
- package/dist/Menubar/MenubarSubContent.cjs +4 -0
- package/dist/Menubar/MenubarSubContent.cjs.map +1 -1
- package/dist/Menubar/MenubarSubContent.js +4 -0
- package/dist/Menubar/MenubarSubContent.js.map +1 -1
- package/dist/Popover/PopoverContent.cjs +8 -0
- package/dist/Popover/PopoverContent.cjs.map +1 -1
- package/dist/Popover/PopoverContent.js +8 -0
- package/dist/Popover/PopoverContent.js.map +1 -1
- package/dist/Popover/PopoverContentImpl.cjs +8 -0
- package/dist/Popover/PopoverContentImpl.cjs.map +1 -1
- package/dist/Popover/PopoverContentImpl.js +8 -0
- package/dist/Popover/PopoverContentImpl.js.map +1 -1
- package/dist/Popover/PopoverContentModal.cjs +8 -0
- package/dist/Popover/PopoverContentModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentModal.js +8 -0
- package/dist/Popover/PopoverContentModal.js.map +1 -1
- package/dist/Popover/PopoverContentNonModal.cjs +8 -0
- package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentNonModal.js +8 -0
- package/dist/Popover/PopoverContentNonModal.js.map +1 -1
- package/dist/Popper/PopperContent.cjs +49 -6
- package/dist/Popper/PopperContent.cjs.map +1 -1
- package/dist/Popper/PopperContent.js +50 -7
- package/dist/Popper/PopperContent.js.map +1 -1
- package/dist/Popper/utils.cjs +10 -5
- package/dist/Popper/utils.cjs.map +1 -1
- package/dist/Popper/utils.js +10 -5
- package/dist/Popper/utils.js.map +1 -1
- package/dist/RadioGroup/Radio.cjs +27 -22
- package/dist/RadioGroup/Radio.cjs.map +1 -1
- package/dist/RadioGroup/Radio.js +28 -23
- package/dist/RadioGroup/Radio.js.map +1 -1
- package/dist/Rating/RatingItem.cjs +66 -0
- package/dist/Rating/RatingItem.cjs.map +1 -0
- package/dist/Rating/RatingItem.js +54 -0
- package/dist/Rating/RatingItem.js.map +1 -0
- package/dist/Rating/RatingItemIndicator.cjs +89 -0
- package/dist/Rating/RatingItemIndicator.cjs.map +1 -0
- package/dist/Rating/RatingItemIndicator.js +83 -0
- package/dist/Rating/RatingItemIndicator.js.map +1 -0
- package/dist/Rating/RatingRoot.cjs +136 -0
- package/dist/Rating/RatingRoot.cjs.map +1 -0
- package/dist/Rating/RatingRoot.js +124 -0
- package/dist/Rating/RatingRoot.js.map +1 -0
- package/dist/RovingFocus/RovingFocusItem.cjs +5 -0
- package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.js +6 -1
- package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
- package/dist/Select/SelectContent.cjs +8 -0
- package/dist/Select/SelectContent.cjs.map +1 -1
- package/dist/Select/SelectContent.js +8 -0
- package/dist/Select/SelectContent.js.map +1 -1
- package/dist/Select/SelectContentImpl.cjs +8 -0
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +8 -0
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/Select/SelectPopperPosition.cjs +8 -0
- package/dist/Select/SelectPopperPosition.cjs.map +1 -1
- package/dist/Select/SelectPopperPosition.js +8 -0
- package/dist/Select/SelectPopperPosition.js.map +1 -1
- package/dist/Select/SelectRoot.cjs +10 -5
- package/dist/Select/SelectRoot.cjs.map +1 -1
- package/dist/Select/SelectRoot.js +10 -5
- package/dist/Select/SelectRoot.js.map +1 -1
- package/dist/Select/SelectTrigger.cjs +25 -14
- package/dist/Select/SelectTrigger.cjs.map +1 -1
- package/dist/Select/SelectTrigger.js +25 -14
- package/dist/Select/SelectTrigger.js.map +1 -1
- package/dist/Switch/SwitchRoot.cjs +25 -18
- package/dist/Switch/SwitchRoot.cjs.map +1 -1
- package/dist/Switch/SwitchRoot.js +26 -19
- package/dist/Switch/SwitchRoot.js.map +1 -1
- package/dist/Tabs/TabsIndicator.cjs +4 -0
- package/dist/Tabs/TabsIndicator.cjs.map +1 -1
- package/dist/Tabs/TabsIndicator.js +4 -0
- package/dist/Tabs/TabsIndicator.js.map +1 -1
- package/dist/Teleport/Teleport.cjs +6 -3
- package/dist/Teleport/Teleport.cjs.map +1 -1
- package/dist/Teleport/Teleport.js +7 -4
- package/dist/Teleport/Teleport.js.map +1 -1
- package/dist/Toggle/Toggle.cjs +21 -16
- package/dist/Toggle/Toggle.cjs.map +1 -1
- package/dist/Toggle/Toggle.js +22 -17
- package/dist/Toggle/Toggle.js.map +1 -1
- package/dist/Toolbar/ToolbarToggleItem.cjs +5 -2
- package/dist/Toolbar/ToolbarToggleItem.cjs.map +1 -1
- package/dist/Toolbar/ToolbarToggleItem.js +5 -2
- package/dist/Toolbar/ToolbarToggleItem.js.map +1 -1
- package/dist/Tree/TreeItem.cjs +18 -2
- package/dist/Tree/TreeItem.cjs.map +1 -1
- package/dist/Tree/TreeItem.js +18 -2
- package/dist/Tree/TreeItem.js.map +1 -1
- package/dist/Tree/TreeVirtualizer.cjs +2 -1
- package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
- package/dist/Tree/TreeVirtualizer.js +2 -1
- package/dist/Tree/TreeVirtualizer.js.map +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.cjs +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/composables/useDrawerSnapPoints.cjs +130 -0
- package/dist/composables/useDrawerSnapPoints.cjs.map +1 -0
- package/dist/composables/useDrawerSnapPoints.js +124 -0
- package/dist/composables/useDrawerSnapPoints.js.map +1 -0
- package/dist/composables/useSwipeDismiss.cjs +397 -0
- package/dist/composables/useSwipeDismiss.cjs.map +1 -0
- package/dist/composables/useSwipeDismiss.js +391 -0
- package/dist/composables/useSwipeDismiss.js.map +1 -0
- package/dist/constant/components.cjs +20 -0
- package/dist/constant/components.cjs.map +1 -1
- package/dist/constant/components.js +20 -0
- package/dist/constant/components.js.map +1 -1
- package/dist/constant.d.cts +2 -0
- package/dist/constant.d.cts.map +1 -1
- package/dist/constant.d.ts +2 -0
- package/dist/constant.d.ts.map +1 -1
- package/dist/date/utils.cjs +1 -1
- package/dist/date/utils.cjs.map +1 -1
- package/dist/date/utils.js +1 -1
- package/dist/date/utils.js.map +1 -1
- package/dist/index.cjs +45 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +24 -2
- package/dist/index2.d.cts.map +1 -1
- package/dist/index3.d.cts +68 -29
- package/dist/index3.d.cts.map +1 -1
- package/dist/index3.d.ts +68 -29
- package/dist/index3.d.ts.map +1 -1
- package/dist/index4.d.cts +1648 -1190
- package/dist/index4.d.cts.map +1 -1
- package/dist/index4.d.ts +1660 -1202
- package/dist/index4.d.ts.map +1 -1
- package/dist/internal.cjs +1 -1
- package/dist/internal.d.cts +3 -3
- package/dist/internal.d.ts +3 -3
- package/dist/internal.js +1 -1
- package/dist/namespaced/index.cjs +22 -0
- package/dist/namespaced/index.d.cts +22 -2
- package/dist/namespaced/index.d.mts +22 -2
- package/dist/namespaced/index.mjs +22 -2
- package/dist/nuxt/index.d.cts +2 -1
- package/dist/nuxt/index.d.mts +2 -1
- package/dist/resolver/index.d.cts +2 -1
- package/dist/resolver/index.d.mts +2 -1
- package/dist/shared/useEmitAsProps.cjs +5 -0
- package/dist/shared/useEmitAsProps.cjs.map +1 -1
- package/dist/shared/useEmitAsProps.js +5 -0
- package/dist/shared/useEmitAsProps.js.map +1 -1
- package/dist/shared/useForwardPropsEmits.cjs +0 -12
- package/dist/shared/useForwardPropsEmits.cjs.map +1 -1
- package/dist/shared/useForwardPropsEmits.js +0 -12
- package/dist/shared/useForwardPropsEmits.js.map +1 -1
- package/dist/shared/useForwardScopeId.cjs +34 -0
- package/dist/shared/useForwardScopeId.cjs.map +1 -0
- package/dist/shared/useForwardScopeId.js +28 -0
- package/dist/shared/useForwardScopeId.js.map +1 -0
- package/dist/shared/useId.cjs +7 -8
- package/dist/shared/useId.cjs.map +1 -1
- package/dist/shared/useId.js +7 -8
- package/dist/shared/useId.js.map +1 -1
- package/dist/shared/useSize.cjs +6 -2
- package/dist/shared/useSize.cjs.map +1 -1
- package/dist/shared/useSize.js +7 -3
- package/dist/shared/useSize.js.map +1 -1
- package/dist/shared.cjs +2 -2
- package/dist/shared.d.cts +2 -2
- package/dist/shared.d.ts +2 -2
- package/dist/shared.js +2 -2
- package/dist/utils/style.cjs +1 -1
- package/dist/utils/style.cjs.map +1 -1
- package/dist/utils/style.js +1 -1
- package/dist/utils/style.js.map +1 -1
- package/package.json +7 -5
- package/src/AlertDialog/AlertDialogContent.vue +6 -1
- package/src/Checkbox/CheckboxRoot.vue +28 -16
- package/src/Collection/Collection.ts +2 -1
- package/src/Combobox/ComboboxContentImpl.vue +20 -4
- package/src/Combobox/ComboboxItem.vue +1 -0
- package/src/ConfigProvider/ConfigProvider.vue +11 -1
- package/src/DateField/DateFieldInput.vue +6 -1
- package/src/DateField/DateFieldRoot.vue +6 -1
- package/src/Dialog/DialogContent.vue +16 -2
- package/src/Dialog/DialogContentImpl.vue +9 -2
- package/src/Dialog/DialogContentModal.vue +23 -4
- package/src/Dialog/DialogContentNonModal.vue +21 -3
- package/src/Dialog/DialogOverlay.vue +4 -0
- package/src/Dialog/DialogOverlayImpl.vue +7 -2
- package/src/Dialog/DialogRoot.vue +10 -1
- package/src/DismissableLayer/DismissableLayer.vue +75 -23
- package/src/Drawer/DrawerClose.vue +25 -0
- package/src/Drawer/DrawerContent.vue +98 -0
- package/src/Drawer/DrawerContentImpl.vue +386 -0
- package/src/Drawer/DrawerDescription.vue +24 -0
- package/src/Drawer/DrawerHandle.vue +25 -0
- package/src/Drawer/DrawerIndent.vue +61 -0
- package/src/Drawer/DrawerIndentBackground.vue +26 -0
- package/src/Drawer/DrawerOverlay.vue +42 -0
- package/src/Drawer/DrawerOverlayImpl.vue +54 -0
- package/src/Drawer/DrawerPortal.vue +17 -0
- package/src/Drawer/DrawerProvider.vue +87 -0
- package/src/Drawer/DrawerRoot.vue +244 -0
- package/src/Drawer/DrawerSwipeArea.vue +73 -0
- package/src/Drawer/DrawerTitle.vue +24 -0
- package/src/Drawer/DrawerTrigger.vue +44 -0
- package/src/Drawer/DrawerViewport.vue +34 -0
- package/src/Drawer/composables/useDrawerSnapPoints.ts +200 -0
- package/src/Drawer/composables/useSwipeDismiss.ts +557 -0
- package/src/Drawer/index.ts +74 -0
- package/src/Drawer/utils.ts +205 -0
- package/src/FocusScope/FocusScope.vue +76 -19
- package/src/HoverCard/HoverCardRoot.vue +7 -1
- package/src/HoverCard/HoverCardTrigger.vue +11 -0
- package/src/Listbox/ListboxRoot.vue +7 -4
- package/src/Listbox/ListboxVirtualizer.vue +19 -3
- package/src/Popper/PopperContent.vue +45 -4
- package/src/Popper/utils.ts +17 -7
- package/src/RadioGroup/Radio.vue +22 -14
- package/src/Rating/RatingItem.vue +1 -0
- package/src/Rating/RatingItemIndicator.vue +3 -2
- package/src/Rating/RatingRoot.vue +6 -3
- package/src/Rating/index.ts +3 -3
- package/src/RovingFocus/RovingFocusItem.vue +12 -1
- package/src/Select/SelectRoot.vue +4 -1
- package/src/Select/SelectTrigger.vue +49 -33
- package/src/Splitter/utils/style.ts +1 -1
- package/src/Switch/SwitchRoot.vue +20 -12
- package/src/Tabs/TabsIndicator.vue +5 -0
- package/src/Teleport/Teleport.vue +8 -4
- package/src/Toggle/Toggle.vue +18 -9
- package/src/Toolbar/ToolbarToggleItem.vue +4 -1
- package/src/Tree/TreeItem.vue +18 -0
- package/src/Tree/TreeRoot.vue +2 -2
- package/src/Tree/TreeVirtualizer.vue +3 -1
- package/src/VisuallyHidden/VisuallyHidden.vue +1 -1
- package/src/index.ts +2 -0
- package/src/shared/date/utils.ts +1 -1
- package/src/shared/index.ts +2 -2
- package/src/shared/useEmitAsProps.test-d.ts +77 -0
- package/src/shared/useEmitAsProps.ts +83 -4
- package/src/shared/useForwardProps.ts +1 -1
- package/src/shared/useForwardPropsEmits.ts +17 -2
- package/src/shared/useForwardScopeId.ts +26 -0
- package/src/shared/useId.ts +14 -6
- package/src/shared/useSize.ts +9 -4
- package/dist/shared/trap-focus.cjs +0 -35
- package/dist/shared/trap-focus.cjs.map +0 -1
- package/dist/shared/trap-focus.js +0 -30
- package/dist/shared/trap-focus.js.map +0 -1
- package/src/shared/trap-focus.ts +0 -43
package/src/RadioGroup/Radio.vue
CHANGED
|
@@ -22,10 +22,14 @@ export interface RadioProps extends PrimitiveProps, FormFieldProps {
|
|
|
22
22
|
import { useVModel } from '@vueuse/core'
|
|
23
23
|
import { computed, toRefs } from 'vue'
|
|
24
24
|
import { Primitive } from '@/Primitive'
|
|
25
|
-
import { useFormControl, useForwardExpose } from '@/shared'
|
|
25
|
+
import { useFormControl, useForwardExpose, useForwardScopeId } from '@/shared'
|
|
26
26
|
import { VisuallyHiddenInput } from '@/VisuallyHidden'
|
|
27
27
|
import { handleSelect } from './utils'
|
|
28
28
|
|
|
29
|
+
defineOptions({
|
|
30
|
+
inheritAttrs: false,
|
|
31
|
+
})
|
|
32
|
+
|
|
29
33
|
const props = withDefaults(defineProps<RadioProps>(), {
|
|
30
34
|
disabled: false,
|
|
31
35
|
checked: undefined,
|
|
@@ -47,6 +51,9 @@ const checked = useVModel(props, 'checked', emits, {
|
|
|
47
51
|
const { value } = toRefs(props)
|
|
48
52
|
const { forwardRef, currentElement: triggerElement } = useForwardExpose()
|
|
49
53
|
const isFormControl = useFormControl(triggerElement)
|
|
54
|
+
// Hidden form input is a sibling (not nested) of the control to avoid the
|
|
55
|
+
// `nested-interactive` a11y violation; forward the parent scope id for scoped styles.
|
|
56
|
+
const scopeIdAttrs = useForwardScopeId()
|
|
50
57
|
|
|
51
58
|
const ariaLabel = computed(() => props.id && triggerElement.value ? (document.querySelector(`[for="${props.id}"]`) as HTMLLabelElement)?.innerText ?? props.value : undefined)
|
|
52
59
|
|
|
@@ -72,13 +79,12 @@ function handleClick(event: MouseEvent) {
|
|
|
72
79
|
|
|
73
80
|
<template>
|
|
74
81
|
<Primitive
|
|
75
|
-
v-bind="$attrs"
|
|
76
82
|
:id="id"
|
|
77
83
|
:ref="forwardRef"
|
|
78
84
|
role="radio"
|
|
79
85
|
:type="as === 'button' ? 'button' : undefined"
|
|
80
86
|
:as="as"
|
|
81
|
-
:aria-checked="checked"
|
|
87
|
+
:aria-checked="checked ?? false"
|
|
82
88
|
:aria-label="ariaLabel"
|
|
83
89
|
:as-child="asChild"
|
|
84
90
|
:disabled="disabled ? '' : undefined"
|
|
@@ -87,19 +93,21 @@ function handleClick(event: MouseEvent) {
|
|
|
87
93
|
:value="value"
|
|
88
94
|
:required="required"
|
|
89
95
|
:name="name"
|
|
96
|
+
v-bind="{ ...scopeIdAttrs, ...$attrs }"
|
|
90
97
|
@click.stop="handleClick"
|
|
91
98
|
>
|
|
92
99
|
<slot :checked="checked" />
|
|
93
|
-
|
|
94
|
-
<VisuallyHiddenInput
|
|
95
|
-
v-if="isFormControl && name"
|
|
96
|
-
type="radio"
|
|
97
|
-
tabindex="-1"
|
|
98
|
-
:value="value"
|
|
99
|
-
:checked="!!checked"
|
|
100
|
-
:name="name"
|
|
101
|
-
:disabled="disabled"
|
|
102
|
-
:required="required"
|
|
103
|
-
/>
|
|
104
100
|
</Primitive>
|
|
101
|
+
|
|
102
|
+
<VisuallyHiddenInput
|
|
103
|
+
v-if="isFormControl && name"
|
|
104
|
+
type="radio"
|
|
105
|
+
tabindex="-1"
|
|
106
|
+
:value="value"
|
|
107
|
+
:checked="!!checked"
|
|
108
|
+
:name="name"
|
|
109
|
+
:disabled="disabled"
|
|
110
|
+
:required="required"
|
|
111
|
+
v-bind="scopeIdAttrs"
|
|
112
|
+
/>
|
|
105
113
|
</template>
|
|
@@ -7,13 +7,14 @@ import { useForwardExpose } from '@/shared'
|
|
|
7
7
|
import { injectRatingItemContext } from './RatingItem.vue'
|
|
8
8
|
import { injectRatingRootContext } from './RatingRoot.vue'
|
|
9
9
|
|
|
10
|
-
export interface
|
|
10
|
+
export interface RatingItemIndicatorProps extends PrimitiveProps {
|
|
11
|
+
/** The step value this indicator represents. */
|
|
11
12
|
step: number
|
|
12
13
|
}
|
|
13
14
|
</script>
|
|
14
15
|
|
|
15
16
|
<script setup lang="ts">
|
|
16
|
-
const props = defineProps<
|
|
17
|
+
const props = defineProps<RatingItemIndicatorProps>()
|
|
17
18
|
|
|
18
19
|
const rootContext = injectRatingRootContext()
|
|
19
20
|
const { currentElement, forwardRef } = useForwardExpose()
|
|
@@ -16,16 +16,19 @@ export interface RatingRootContext {
|
|
|
16
16
|
|
|
17
17
|
export interface RatingRootProps extends Omit<RadioGroupRootProps, 'modelValue' | 'defaultValue'> {
|
|
18
18
|
/**
|
|
19
|
-
* The value
|
|
19
|
+
* The rating value when initially rendered. Use when you do not need to control the state of the rating.
|
|
20
20
|
*/
|
|
21
21
|
defaultValue?: number
|
|
22
|
-
/** The controlled value
|
|
22
|
+
/** The controlled rating value. Can be bound with `v-model`. */
|
|
23
23
|
modelValue?: number
|
|
24
|
+
/** The number of rating items to render. */
|
|
24
25
|
length?: number
|
|
26
|
+
/** When `true`, clicking the currently selected rating resets the value to `0`. */
|
|
25
27
|
clearable?: boolean
|
|
28
|
+
/** When `true`, the rating previews the value under the pointer on hover. */
|
|
26
29
|
hoverable?: boolean
|
|
30
|
+
/** The granularity each rating item is divided into. */
|
|
27
31
|
step?: 1 | 0.5 | 0.25 | 0.1
|
|
28
|
-
|
|
29
32
|
}
|
|
30
33
|
export type RatingRootEmits = {
|
|
31
34
|
/** Event handler called when the value changes */
|
package/src/Rating/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { default as RatingItem, type RatingItemProps } from './RatingItem.vue'
|
|
2
|
-
export { default as RatingItemIndicator } from './RatingItemIndicator.vue'
|
|
3
|
-
export { default as RatingRoot, type RatingRootProps } from './RatingRoot.vue'
|
|
1
|
+
export { injectRatingItemContext, default as RatingItem, type RatingItemProps } from './RatingItem.vue'
|
|
2
|
+
export { default as RatingItemIndicator, type RatingItemIndicatorProps } from './RatingItemIndicator.vue'
|
|
3
|
+
export { injectRatingRootContext, default as RatingRoot, type RatingRootEmits, type RatingRootProps } from './RatingRoot.vue'
|
|
@@ -16,7 +16,7 @@ export interface RovingFocusItemProps extends PrimitiveProps {
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<script setup lang="ts">
|
|
19
|
-
import { computed, nextTick, onMounted, onUnmounted } from 'vue'
|
|
19
|
+
import { computed, nextTick, onMounted, onUnmounted, watch } from 'vue'
|
|
20
20
|
import { useCollection } from '@/Collection'
|
|
21
21
|
import { Primitive } from '@/Primitive'
|
|
22
22
|
import { useId } from '@/shared'
|
|
@@ -46,6 +46,17 @@ onUnmounted(() => {
|
|
|
46
46
|
context.onFocusableItemRemove()
|
|
47
47
|
})
|
|
48
48
|
|
|
49
|
+
watch(() => props.focusable, (newVal, oldVal) => {
|
|
50
|
+
if (newVal === oldVal)
|
|
51
|
+
return
|
|
52
|
+
if (newVal) {
|
|
53
|
+
context.onFocusableItemAdd()
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
context.onFocusableItemRemove()
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
|
|
49
60
|
function handleKeydown(event: KeyboardEvent) {
|
|
50
61
|
if (event.key === 'Tab' && event.shiftKey) {
|
|
51
62
|
context.onItemShiftTab()
|
|
@@ -14,6 +14,8 @@ export interface SelectRootProps<T = AcceptableValue> extends FormFieldProps {
|
|
|
14
14
|
defaultValue?: T | Array<T>
|
|
15
15
|
/** The controlled value of the Select. Can be bind as `v-model`. */
|
|
16
16
|
modelValue?: T | Array<T>
|
|
17
|
+
/** The value of the hidden native select option when the model value is nullish. */
|
|
18
|
+
nullableValue?: string
|
|
17
19
|
/** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */
|
|
18
20
|
by?: string | ((a: T, b: T) => boolean)
|
|
19
21
|
/** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */
|
|
@@ -75,6 +77,7 @@ defineOptions({
|
|
|
75
77
|
const props = withDefaults(defineProps<SelectRootProps<T>>(), {
|
|
76
78
|
modelValue: undefined,
|
|
77
79
|
open: undefined,
|
|
80
|
+
nullableValue: '',
|
|
78
81
|
})
|
|
79
82
|
const emits = defineEmits<SelectRootEmits<T>>()
|
|
80
83
|
|
|
@@ -214,7 +217,7 @@ provideSelectRootContext({
|
|
|
214
217
|
>
|
|
215
218
|
<option
|
|
216
219
|
v-if="isNullish(modelValue)"
|
|
217
|
-
value=""
|
|
220
|
+
:value="nullableValue"
|
|
218
221
|
/>
|
|
219
222
|
<option
|
|
220
223
|
v-for="option in Array.from(optionsSet)"
|
|
@@ -47,6 +47,52 @@ function handlePointerOpen(event: PointerEvent) {
|
|
|
47
47
|
y: Math.round(event.pageY),
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
function isPlainLeftClick(event: MouseEvent) {
|
|
52
|
+
return event.button === 0 && event.ctrlKey === false
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Tracks direct mouse presses handled in `pointerdown` so the Safari label
|
|
56
|
+
// `click` workaround below does not re-focus the trigger after opening.
|
|
57
|
+
let openedFromPointerDown = false
|
|
58
|
+
|
|
59
|
+
function onTriggerPointerDown(event: PointerEvent) {
|
|
60
|
+
// Prevent opening on touch down.
|
|
61
|
+
// https://github.com/unovue/reka-ui/issues/804
|
|
62
|
+
if (event.pointerType === 'touch')
|
|
63
|
+
return event.preventDefault()
|
|
64
|
+
|
|
65
|
+
// prevent implicit pointer capture
|
|
66
|
+
// https://www.w3.org/TR/pointerevents3/#implicit-pointer-capture
|
|
67
|
+
const target = event.target as HTMLElement
|
|
68
|
+
if (target.hasPointerCapture(event.pointerId))
|
|
69
|
+
target.releasePointerCapture(event.pointerId)
|
|
70
|
+
|
|
71
|
+
// only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
|
|
72
|
+
// but not when the control key is pressed (avoiding MacOS right click)
|
|
73
|
+
if (isPlainLeftClick(event)) {
|
|
74
|
+
handlePointerOpen(event)
|
|
75
|
+
openedFromPointerDown = true
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function onTriggerMouseDown(event: MouseEvent) {
|
|
80
|
+
// Prevent trigger from stealing focus from the active item after opening.
|
|
81
|
+
// We avoid calling `preventDefault` in `pointerdown` because that suppresses
|
|
82
|
+
// compatibility mouse events (`mousedown`, `mouseup`, `click`).
|
|
83
|
+
if (isPlainLeftClick(event))
|
|
84
|
+
event.preventDefault()
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function onTriggerClick(event: MouseEvent) {
|
|
88
|
+
// Safari: label-associated clicks may not run `pointerdown` on the trigger.
|
|
89
|
+
// Direct mouse clicks open in `pointerdown` and must not re-focus the trigger
|
|
90
|
+
// here — `mousedown` `preventDefault` does not suppress `click`.
|
|
91
|
+
if (!openedFromPointerDown)
|
|
92
|
+
(event.currentTarget as HTMLElement)?.focus()
|
|
93
|
+
|
|
94
|
+
openedFromPointerDown = false
|
|
95
|
+
}
|
|
50
96
|
</script>
|
|
51
97
|
|
|
52
98
|
<template>
|
|
@@ -69,39 +115,9 @@ function handlePointerOpen(event: PointerEvent) {
|
|
|
69
115
|
:data-placeholder="shouldShowPlaceholder(rootContext.modelValue?.value) ? '' : undefined"
|
|
70
116
|
:as-child="asChild"
|
|
71
117
|
:as="as"
|
|
72
|
-
@click="
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// on a label, Safari seems to struggle with the fact that there's no `onClick`.
|
|
76
|
-
// We force `focus` in this case. Note: this doesn't create any other side-effect
|
|
77
|
-
// because we are preventing default in `onPointerDown` so effectively
|
|
78
|
-
// this only runs for a label 'click'
|
|
79
|
-
(event?.currentTarget as HTMLElement)?.focus();
|
|
80
|
-
}
|
|
81
|
-
"
|
|
82
|
-
@pointerdown="
|
|
83
|
-
(event: PointerEvent) => {
|
|
84
|
-
// Prevent opening on touch down.
|
|
85
|
-
// https://github.com/unovue/reka-ui/issues/804
|
|
86
|
-
if (event.pointerType === 'touch')
|
|
87
|
-
return event.preventDefault();
|
|
88
|
-
|
|
89
|
-
// prevent implicit pointer capture
|
|
90
|
-
// https://www.w3.org/TR/pointerevents3/#implicit-pointer-capture
|
|
91
|
-
const target = event.target as HTMLElement;
|
|
92
|
-
if (target.hasPointerCapture(event.pointerId)) {
|
|
93
|
-
target.releasePointerCapture(event.pointerId);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
|
|
97
|
-
// but not when the control key is pressed (avoiding MacOS right click)
|
|
98
|
-
if (event.button === 0 && event.ctrlKey === false) {
|
|
99
|
-
handlePointerOpen(event)
|
|
100
|
-
// prevent trigger from stealing focus from the active item after opening.
|
|
101
|
-
event.preventDefault();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
"
|
|
118
|
+
@click="onTriggerClick"
|
|
119
|
+
@pointerdown="onTriggerPointerDown"
|
|
120
|
+
@mousedown="onTriggerMouseDown"
|
|
105
121
|
@pointerup.prevent="
|
|
106
122
|
(event: PointerEvent) => {
|
|
107
123
|
// Only open on pointer up when using touch devices
|
|
@@ -85,7 +85,7 @@ export function setGlobalCursorStyle(
|
|
|
85
85
|
document.head.appendChild(styleElement)
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
styleElement.
|
|
88
|
+
styleElement.textContent = `*{cursor: ${style}!important;}`
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
// the % of the group's overall space this panel should occupy.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { ComputedRef, Ref } from 'vue'
|
|
3
3
|
import type { PrimitiveProps } from '@/Primitive'
|
|
4
4
|
import type { FormFieldProps } from '@/shared/types'
|
|
5
|
-
import { createContext, useFormControl, useForwardExpose } from '@/shared'
|
|
5
|
+
import { createContext, useFormControl, useForwardExpose, useForwardScopeId } from '@/shared'
|
|
6
6
|
|
|
7
7
|
export interface SwitchRootProps<T = boolean> extends PrimitiveProps, FormFieldProps {
|
|
8
8
|
/** The state of the switch when it is initially rendered. Use when you do not need to control its state. */
|
|
@@ -45,6 +45,10 @@ import { computed, toRefs } from 'vue'
|
|
|
45
45
|
import { Primitive } from '@/Primitive'
|
|
46
46
|
import { VisuallyHiddenInput } from '@/VisuallyHidden'
|
|
47
47
|
|
|
48
|
+
defineOptions({
|
|
49
|
+
inheritAttrs: false,
|
|
50
|
+
})
|
|
51
|
+
|
|
48
52
|
const props = withDefaults(defineProps<SwitchRootProps<T>>(), {
|
|
49
53
|
as: 'button',
|
|
50
54
|
modelValue: undefined,
|
|
@@ -81,6 +85,9 @@ function toggleCheck() {
|
|
|
81
85
|
|
|
82
86
|
const { forwardRef, currentElement } = useForwardExpose()
|
|
83
87
|
const isFormControl = useFormControl(currentElement)
|
|
88
|
+
// Hidden form input is a sibling (not nested) of the control to avoid the
|
|
89
|
+
// `nested-interactive` a11y violation; forward the parent scope id for scoped styles.
|
|
90
|
+
const scopeIdAttrs = useForwardScopeId()
|
|
84
91
|
const ariaLabel = computed(() => props.id && currentElement.value ? (document.querySelector(`[for="${props.id}"]`) as HTMLLabelElement)?.innerText : undefined)
|
|
85
92
|
|
|
86
93
|
provideSwitchRootContext({
|
|
@@ -92,7 +99,6 @@ provideSwitchRootContext({
|
|
|
92
99
|
|
|
93
100
|
<template>
|
|
94
101
|
<Primitive
|
|
95
|
-
v-bind="$attrs"
|
|
96
102
|
:id="id"
|
|
97
103
|
:ref="forwardRef"
|
|
98
104
|
role="switch"
|
|
@@ -106,6 +112,7 @@ provideSwitchRootContext({
|
|
|
106
112
|
:as-child="asChild"
|
|
107
113
|
:as="as"
|
|
108
114
|
:disabled="disabled"
|
|
115
|
+
v-bind="{ ...scopeIdAttrs, ...$attrs }"
|
|
109
116
|
@click="toggleCheck"
|
|
110
117
|
@keydown.enter.prevent="toggleCheck"
|
|
111
118
|
>
|
|
@@ -113,15 +120,16 @@ provideSwitchRootContext({
|
|
|
113
120
|
:model-value="modelValue"
|
|
114
121
|
:checked="checked"
|
|
115
122
|
/>
|
|
116
|
-
|
|
117
|
-
<VisuallyHiddenInput
|
|
118
|
-
v-if="isFormControl && name"
|
|
119
|
-
type="checkbox"
|
|
120
|
-
:name="name"
|
|
121
|
-
:disabled="disabled"
|
|
122
|
-
:required="required"
|
|
123
|
-
:value="value"
|
|
124
|
-
:checked="checked"
|
|
125
|
-
/>
|
|
126
123
|
</Primitive>
|
|
124
|
+
|
|
125
|
+
<VisuallyHiddenInput
|
|
126
|
+
v-if="isFormControl && name"
|
|
127
|
+
type="checkbox"
|
|
128
|
+
:name="name"
|
|
129
|
+
:disabled="disabled"
|
|
130
|
+
:required="required"
|
|
131
|
+
:value="value"
|
|
132
|
+
:checked="checked"
|
|
133
|
+
v-bind="scopeIdAttrs"
|
|
134
|
+
/>
|
|
127
135
|
</template>
|
|
@@ -22,10 +22,12 @@ const isMounted = useMounted()
|
|
|
22
22
|
|
|
23
23
|
interface IndicatorStyle {
|
|
24
24
|
size: number | null
|
|
25
|
+
thickness: number | null
|
|
25
26
|
position: number | null
|
|
26
27
|
}
|
|
27
28
|
const indicatorStyle = ref<IndicatorStyle>({
|
|
28
29
|
size: null,
|
|
30
|
+
thickness: null,
|
|
29
31
|
position: null,
|
|
30
32
|
})
|
|
31
33
|
const tabs = ref<Array<HTMLElement>>([])
|
|
@@ -49,12 +51,14 @@ function updateIndicatorStyle() {
|
|
|
49
51
|
if (context.orientation.value === 'horizontal') {
|
|
50
52
|
indicatorStyle.value = {
|
|
51
53
|
size: activeTab.offsetWidth,
|
|
54
|
+
thickness: activeTab.offsetHeight,
|
|
52
55
|
position: activeTab.offsetLeft,
|
|
53
56
|
}
|
|
54
57
|
}
|
|
55
58
|
else {
|
|
56
59
|
indicatorStyle.value = {
|
|
57
60
|
size: activeTab.offsetHeight,
|
|
61
|
+
thickness: activeTab.offsetWidth,
|
|
58
62
|
position: activeTab.offsetTop,
|
|
59
63
|
}
|
|
60
64
|
}
|
|
@@ -67,6 +71,7 @@ function updateIndicatorStyle() {
|
|
|
67
71
|
v-bind="props"
|
|
68
72
|
:style="{
|
|
69
73
|
'--reka-tabs-indicator-size': `${indicatorStyle.size}px`,
|
|
74
|
+
'--reka-tabs-indicator-thickness': `${indicatorStyle.thickness}px`,
|
|
70
75
|
'--reka-tabs-indicator-position': `${indicatorStyle.position}px`,
|
|
71
76
|
}"
|
|
72
77
|
>
|
|
@@ -29,10 +29,14 @@ export interface TeleportProps {
|
|
|
29
29
|
|
|
30
30
|
<script setup lang="ts">
|
|
31
31
|
import { useMounted } from '@vueuse/core'
|
|
32
|
+
import { computed } from 'vue'
|
|
33
|
+
import { injectConfigProviderContext } from '@/ConfigProvider/ConfigProvider.vue'
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
})
|
|
35
|
+
const props = defineProps<TeleportProps>()
|
|
36
|
+
|
|
37
|
+
const configContext = injectConfigProviderContext({})
|
|
38
|
+
|
|
39
|
+
const target = computed(() => props.to ?? configContext.teleportTo?.value ?? 'body')
|
|
36
40
|
|
|
37
41
|
const isMounted = useMounted()
|
|
38
42
|
</script>
|
|
@@ -40,7 +44,7 @@ const isMounted = useMounted()
|
|
|
40
44
|
<template>
|
|
41
45
|
<Teleport
|
|
42
46
|
v-if="isMounted || forceMount"
|
|
43
|
-
:to="
|
|
47
|
+
:to="target"
|
|
44
48
|
:disabled="disabled"
|
|
45
49
|
:defer="defer"
|
|
46
50
|
>
|
package/src/Toggle/Toggle.vue
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { PrimitiveProps } from '@/Primitive'
|
|
3
3
|
import type { FormFieldProps } from '@/shared/types'
|
|
4
|
-
import { useFormControl, useForwardExpose } from '@/shared'
|
|
4
|
+
import { useFormControl, useForwardExpose, useForwardScopeId } from '@/shared'
|
|
5
5
|
import { injectToggleGroupRootContext } from '@/ToggleGroup/ToggleGroupRoot.vue'
|
|
6
6
|
import VisuallyHiddenInput from '@/VisuallyHidden/VisuallyHiddenInput.vue'
|
|
7
7
|
|
|
@@ -34,6 +34,10 @@ import { useVModel } from '@vueuse/core'
|
|
|
34
34
|
import { computed } from 'vue'
|
|
35
35
|
import { Primitive } from '@/Primitive'
|
|
36
36
|
|
|
37
|
+
defineOptions({
|
|
38
|
+
inheritAttrs: false,
|
|
39
|
+
})
|
|
40
|
+
|
|
37
41
|
const props = withDefaults(defineProps<ToggleProps>(), {
|
|
38
42
|
modelValue: undefined,
|
|
39
43
|
disabled: false,
|
|
@@ -56,6 +60,9 @@ defineSlots<{
|
|
|
56
60
|
}>()
|
|
57
61
|
|
|
58
62
|
const { forwardRef, currentElement } = useForwardExpose()
|
|
63
|
+
// Hidden form input is a sibling (not nested) of the control to avoid the
|
|
64
|
+
// `nested-interactive` a11y violation; forward the parent scope id for scoped styles.
|
|
65
|
+
const scopeIdAttrs = useForwardScopeId()
|
|
59
66
|
const toggleGroupContext = injectToggleGroupRootContext(null)
|
|
60
67
|
|
|
61
68
|
const modelValue = useVModel(props, 'modelValue', emits, {
|
|
@@ -84,6 +91,7 @@ const isFormControl = useFormControl(currentElement)
|
|
|
84
91
|
:data-state="dataState"
|
|
85
92
|
:data-disabled="disabled ? '' : undefined"
|
|
86
93
|
:disabled="disabled"
|
|
94
|
+
v-bind="{ ...scopeIdAttrs, ...$attrs }"
|
|
87
95
|
@click="togglePressed"
|
|
88
96
|
>
|
|
89
97
|
<slot
|
|
@@ -92,13 +100,14 @@ const isFormControl = useFormControl(currentElement)
|
|
|
92
100
|
:pressed="modelValue"
|
|
93
101
|
:state="dataState"
|
|
94
102
|
/>
|
|
95
|
-
|
|
96
|
-
<VisuallyHiddenInput
|
|
97
|
-
v-if="isFormControl && name && !toggleGroupContext"
|
|
98
|
-
type="checkbox"
|
|
99
|
-
:name="name"
|
|
100
|
-
:value="modelValue"
|
|
101
|
-
:required="required"
|
|
102
|
-
/>
|
|
103
103
|
</Primitive>
|
|
104
|
+
|
|
105
|
+
<VisuallyHiddenInput
|
|
106
|
+
v-if="isFormControl && name && !toggleGroupContext"
|
|
107
|
+
type="checkbox"
|
|
108
|
+
:name="name"
|
|
109
|
+
:value="modelValue"
|
|
110
|
+
:required="required"
|
|
111
|
+
v-bind="scopeIdAttrs"
|
|
112
|
+
/>
|
|
104
113
|
</template>
|
package/src/Tree/TreeItem.vue
CHANGED
|
@@ -4,6 +4,8 @@ export interface TreeItemProps<T> extends PrimitiveProps {
|
|
|
4
4
|
value: T
|
|
5
5
|
/** Level of depth */
|
|
6
6
|
level: number
|
|
7
|
+
/** When `true`, prevents the user from interacting with the item. */
|
|
8
|
+
disabled?: boolean
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
export type SelectEvent<T> = CustomEvent<{ originalEvent: PointerEvent | KeyboardEvent, value?: T, isExpanded: boolean, isSelected: boolean }>
|
|
@@ -45,6 +47,7 @@ defineSlots<{
|
|
|
45
47
|
isExpanded: boolean
|
|
46
48
|
isSelected: boolean
|
|
47
49
|
isIndeterminate: boolean | undefined
|
|
50
|
+
isDisabled: boolean
|
|
48
51
|
handleToggle: () => void
|
|
49
52
|
handleSelect: () => void
|
|
50
53
|
}) => any
|
|
@@ -81,7 +84,11 @@ const isIndeterminate = computed(() => {
|
|
|
81
84
|
}
|
|
82
85
|
})
|
|
83
86
|
|
|
87
|
+
const isDisabled = computed(() => rootContext.disabled.value || props.disabled)
|
|
88
|
+
|
|
84
89
|
function handleKeydownRight(ev: KeyboardEvent) {
|
|
90
|
+
if (isDisabled.value)
|
|
91
|
+
return
|
|
85
92
|
if (!hasChildren.value)
|
|
86
93
|
return
|
|
87
94
|
|
|
@@ -103,6 +110,8 @@ function handleKeydownRight(ev: KeyboardEvent) {
|
|
|
103
110
|
}
|
|
104
111
|
|
|
105
112
|
function handleKeydownLeft(ev: KeyboardEvent) {
|
|
113
|
+
if (isDisabled.value)
|
|
114
|
+
return
|
|
106
115
|
if (isExpanded.value) {
|
|
107
116
|
// close expanded
|
|
108
117
|
handleToggleCustomEvent(ev)
|
|
@@ -121,6 +130,8 @@ function handleKeydownLeft(ev: KeyboardEvent) {
|
|
|
121
130
|
}
|
|
122
131
|
|
|
123
132
|
async function handleSelect(ev: SelectEvent<T>) {
|
|
133
|
+
if (isDisabled.value)
|
|
134
|
+
return
|
|
124
135
|
emits('select', ev)
|
|
125
136
|
if (ev?.defaultPrevented)
|
|
126
137
|
return
|
|
@@ -128,6 +139,8 @@ async function handleSelect(ev: SelectEvent<T>) {
|
|
|
128
139
|
rootContext.onSelect(props.value)
|
|
129
140
|
}
|
|
130
141
|
async function handleToggle(ev: ToggleEvent<T>) {
|
|
142
|
+
if (isDisabled.value)
|
|
143
|
+
return
|
|
131
144
|
emits('toggle', ev)
|
|
132
145
|
if (ev?.defaultPrevented)
|
|
133
146
|
return
|
|
@@ -155,6 +168,7 @@ defineExpose({
|
|
|
155
168
|
isExpanded,
|
|
156
169
|
isSelected,
|
|
157
170
|
isIndeterminate,
|
|
171
|
+
isDisabled,
|
|
158
172
|
handleToggle: () => rootContext.onToggle(props.value),
|
|
159
173
|
handleSelect: () => rootContext.onSelect(props.value),
|
|
160
174
|
})
|
|
@@ -165,6 +179,7 @@ defineExpose({
|
|
|
165
179
|
as-child
|
|
166
180
|
:value="value"
|
|
167
181
|
allow-shift-key
|
|
182
|
+
:focusable="!isDisabled"
|
|
168
183
|
>
|
|
169
184
|
<Primitive
|
|
170
185
|
v-bind="$attrs"
|
|
@@ -174,9 +189,11 @@ defineExpose({
|
|
|
174
189
|
:aria-selected="isSelected"
|
|
175
190
|
:aria-expanded="hasChildren ? isExpanded : undefined"
|
|
176
191
|
:aria-level="level"
|
|
192
|
+
:aria-disabled="isDisabled ? true : undefined"
|
|
177
193
|
:data-indent="level"
|
|
178
194
|
:data-selected="isSelected ? '' : undefined"
|
|
179
195
|
:data-expanded="isExpanded ? '' : undefined"
|
|
196
|
+
:data-disabled="isDisabled ? '' : undefined"
|
|
180
197
|
@keydown.enter.space.self.prevent="handleSelectCustomEvent"
|
|
181
198
|
@keydown.right.prevent="(ev: KeyboardEvent) => rootContext.dir.value === 'ltr' ? handleKeydownRight(ev) : handleKeydownLeft(ev)"
|
|
182
199
|
@keydown.left.prevent="(ev: KeyboardEvent) => rootContext.dir.value === 'ltr' ? handleKeydownLeft(ev) : handleKeydownRight(ev)"
|
|
@@ -189,6 +206,7 @@ defineExpose({
|
|
|
189
206
|
:is-expanded="isExpanded"
|
|
190
207
|
:is-selected="isSelected"
|
|
191
208
|
:is-indeterminate="isIndeterminate"
|
|
209
|
+
:is-disabled="isDisabled"
|
|
192
210
|
:handle-select="() => rootContext.onSelect(value)"
|
|
193
211
|
:handle-toggle="() => rootContext.onToggle(value)"
|
|
194
212
|
/>
|
package/src/Tree/TreeRoot.vue
CHANGED
|
@@ -26,9 +26,9 @@ export interface TreeRootProps<T = Record<string, any>, U extends Record<string,
|
|
|
26
26
|
dir?: Direction
|
|
27
27
|
/** When `true`, prevents the user from interacting with tree */
|
|
28
28
|
disabled?: boolean
|
|
29
|
-
/** When `true`, selecting parent will select the descendants. */
|
|
29
|
+
/** When `true`, selecting parent will select the descendants. Requires `multiple` to be `true`. */
|
|
30
30
|
propagateSelect?: boolean
|
|
31
|
-
/** When `true`, selecting children will update the parent state. */
|
|
31
|
+
/** When `true`, selecting children will update the parent state. Requires `multiple` to be `true`. */
|
|
32
32
|
bubbleSelect?: boolean
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -133,7 +133,9 @@ rootContext.virtualKeydownHook.on((event) => {
|
|
|
133
133
|
const index = intent === 'first' ? 0 : rootContext.expandedItems.value.length - 1
|
|
134
134
|
virtualizer.value.scrollToIndex(index)
|
|
135
135
|
requestAnimationFrame(() => {
|
|
136
|
-
const items = getItems()
|
|
136
|
+
const items = getItems().filter(i => i.ref.dataset.disabled !== '')
|
|
137
|
+
if (!items.length)
|
|
138
|
+
return
|
|
137
139
|
const item = intent === 'first' ? items[0] : items.at(-1)!
|
|
138
140
|
item.ref.focus()
|
|
139
141
|
})
|
|
@@ -16,7 +16,7 @@ withDefaults(defineProps<VisuallyHiddenProps>(), { as: 'span', feature: 'focusab
|
|
|
16
16
|
<Primitive
|
|
17
17
|
:as="as"
|
|
18
18
|
:as-child="asChild"
|
|
19
|
-
:aria-hidden="feature === 'focusable' ? 'true' : undefined"
|
|
19
|
+
:aria-hidden="feature === 'focusable' || feature === 'fully-hidden' ? 'true' : undefined"
|
|
20
20
|
:data-hidden="feature === 'fully-hidden' ? '' : undefined"
|
|
21
21
|
:tabindex="feature === 'fully-hidden' ? '-1' : undefined"
|
|
22
22
|
:style="{
|
package/src/index.ts
CHANGED
|
@@ -21,6 +21,7 @@ export * from './DateRangeField'
|
|
|
21
21
|
export * from './DateRangePicker'
|
|
22
22
|
export * from './Dialog'
|
|
23
23
|
export { type FocusOutsideEvent, type PointerDownOutsideEvent } from './DismissableLayer'
|
|
24
|
+
export * from './Drawer'
|
|
24
25
|
export * from './DropdownMenu'
|
|
25
26
|
export * from './Editable'
|
|
26
27
|
export * from './FocusScope'
|
|
@@ -40,6 +41,7 @@ export { type AsTag, Primitive, type PrimitiveProps, Slot } from './Primitive'
|
|
|
40
41
|
export * from './Progress'
|
|
41
42
|
export * from './RadioGroup'
|
|
42
43
|
export * from './RangeCalendar'
|
|
44
|
+
export * from './Rating'
|
|
43
45
|
export * from './RovingFocus'
|
|
44
46
|
export * from './ScrollArea'
|
|
45
47
|
export * from './Select'
|
package/src/shared/date/utils.ts
CHANGED
|
@@ -62,7 +62,7 @@ export function handleCalendarInitialFocus(calendar: HTMLElement) {
|
|
|
62
62
|
if (today)
|
|
63
63
|
return today.focus()
|
|
64
64
|
|
|
65
|
-
const firstDay = calendar.querySelector<HTMLElement>('[data-
|
|
65
|
+
const firstDay = calendar.querySelector<HTMLElement>('[data-value]:not([data-outside-view]):not([data-disabled])')
|
|
66
66
|
if (firstDay)
|
|
67
67
|
return firstDay.focus()
|
|
68
68
|
}
|