reka-ui 2.2.1 → 2.3.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/Accordion/AccordionItem.cjs.map +1 -1
- package/dist/Accordion/AccordionItem.js.map +1 -1
- package/dist/Accordion/AccordionRoot.cjs.map +1 -1
- package/dist/Accordion/AccordionRoot.js.map +1 -1
- package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
- package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
- package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
- package/dist/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/Avatar/AvatarFallback.cjs +11 -14
- package/dist/Avatar/AvatarFallback.cjs.map +1 -1
- package/dist/Avatar/AvatarFallback.js +12 -15
- package/dist/Avatar/AvatarFallback.js.map +1 -1
- package/dist/Avatar/AvatarImage.cjs +3 -2
- package/dist/Avatar/AvatarImage.cjs.map +1 -1
- package/dist/Avatar/AvatarImage.js +3 -2
- package/dist/Avatar/AvatarImage.js.map +1 -1
- package/dist/Avatar/AvatarRoot.cjs +1 -1
- package/dist/Avatar/AvatarRoot.cjs.map +1 -1
- package/dist/Avatar/AvatarRoot.js +1 -1
- package/dist/Avatar/AvatarRoot.js.map +1 -1
- package/dist/Avatar/utils.cjs +43 -16
- package/dist/Avatar/utils.cjs.map +1 -1
- package/dist/Avatar/utils.js +44 -17
- package/dist/Avatar/utils.js.map +1 -1
- package/dist/Calendar/CalendarCell.cjs +2 -2
- package/dist/Calendar/CalendarCell.cjs.map +1 -1
- package/dist/Calendar/CalendarCell.js +2 -2
- package/dist/Calendar/CalendarCell.js.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.cjs +5 -1
- package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.js +5 -1
- package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
- package/dist/Calendar/CalendarGrid.cjs.map +1 -1
- package/dist/Calendar/CalendarGrid.js.map +1 -1
- package/dist/Calendar/CalendarHeading.cjs.map +1 -1
- package/dist/Calendar/CalendarHeading.js.map +1 -1
- package/dist/Calendar/CalendarNext.cjs.map +1 -1
- package/dist/Calendar/CalendarNext.js.map +1 -1
- package/dist/Calendar/CalendarPrev.cjs.map +1 -1
- package/dist/Calendar/CalendarPrev.js.map +1 -1
- package/dist/Calendar/CalendarRoot.cjs +7 -4
- package/dist/Calendar/CalendarRoot.cjs.map +1 -1
- package/dist/Calendar/CalendarRoot.js +7 -4
- package/dist/Calendar/CalendarRoot.js.map +1 -1
- package/dist/Calendar/useCalendar.cjs +2 -2
- package/dist/Calendar/useCalendar.cjs.map +1 -1
- package/dist/Calendar/useCalendar.js +2 -2
- package/dist/Calendar/useCalendar.js.map +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
- package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxRoot.js.map +1 -1
- package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
- package/dist/Collapsible/CollapsibleContent.js.map +1 -1
- package/dist/Collapsible/CollapsibleRoot.cjs +2 -0
- package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
- package/dist/Collapsible/CollapsibleRoot.js +2 -0
- package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
- package/dist/Collection/Collection.cjs.map +1 -1
- package/dist/Collection/Collection.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
- package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
- package/dist/Combobox/ComboboxGroup.js.map +1 -1
- package/dist/Combobox/ComboboxInput.cjs.map +1 -1
- package/dist/Combobox/ComboboxInput.js.map +1 -1
- package/dist/Combobox/ComboboxItem.cjs.map +1 -1
- package/dist/Combobox/ComboboxItem.js.map +1 -1
- package/dist/Combobox/ComboboxRoot.cjs +1 -2
- package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
- package/dist/Combobox/ComboboxRoot.js +1 -2
- package/dist/Combobox/ComboboxRoot.js.map +1 -1
- package/dist/Combobox/ComboboxTrigger.cjs.map +1 -1
- package/dist/Combobox/ComboboxTrigger.js.map +1 -1
- package/dist/Combobox/ComboboxViewport.cjs.map +1 -1
- package/dist/Combobox/ComboboxViewport.js.map +1 -1
- package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
- package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
- package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
- package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
- package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuSub.js +1 -1
- package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
- package/dist/DateField/DateFieldInput.cjs +1 -0
- package/dist/DateField/DateFieldInput.cjs.map +1 -1
- package/dist/DateField/DateFieldInput.js +1 -0
- 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/DatePickerCellTrigger.cjs.map +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
- package/dist/DatePicker/DatePickerContent.cjs +8 -3
- package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
- package/dist/DatePicker/DatePickerContent.js +9 -4
- package/dist/DatePicker/DatePickerContent.js.map +1 -1
- package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
- package/dist/DatePicker/DatePickerHeading.js.map +1 -1
- package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
- package/dist/DatePicker/DatePickerNext.js.map +1 -1
- package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
- package/dist/DatePicker/DatePickerPrev.js.map +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +1 -0
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +1 -0
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DateRangeField/DateRangeFieldInput.cjs +1 -0
- package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldInput.js +1 -0
- package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.cjs +13 -9
- package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.js +13 -9
- package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.cjs +2 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.js +2 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -3
- package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.js +9 -4
- package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.cjs +6 -2
- package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js +6 -2
- package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
- package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
- package/dist/Dialog/DialogContentImpl.js.map +1 -1
- package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
- package/dist/Dialog/DialogContentNonModal.js.map +1 -1
- package/dist/Dialog/DialogRoot.cjs +4 -1
- package/dist/Dialog/DialogRoot.cjs.map +1 -1
- package/dist/Dialog/DialogRoot.js +4 -1
- package/dist/Dialog/DialogRoot.js.map +1 -1
- package/dist/Dialog/DialogTrigger.cjs.map +1 -1
- package/dist/Dialog/DialogTrigger.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayerBranch.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayerBranch.js.map +1 -1
- package/dist/DismissableLayer/utils.cjs +7 -3
- package/dist/DismissableLayer/utils.cjs.map +1 -1
- package/dist/DismissableLayer/utils.js +8 -4
- package/dist/DismissableLayer/utils.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
- package/dist/Editable/EditableInput.cjs.map +1 -1
- package/dist/Editable/EditableInput.js.map +1 -1
- package/dist/Editable/EditableRoot.cjs +1 -1
- package/dist/Editable/EditableRoot.cjs.map +1 -1
- package/dist/Editable/EditableRoot.js +1 -1
- package/dist/Editable/EditableRoot.js.map +1 -1
- package/dist/FocusScope/FocusScope.cjs.map +1 -1
- package/dist/FocusScope/FocusScope.js.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
- package/dist/HoverCard/HoverCardRoot.js +1 -1
- package/dist/HoverCard/HoverCardRoot.js.map +1 -1
- package/dist/Listbox/ListboxFilter.cjs.map +1 -1
- package/dist/Listbox/ListboxFilter.js.map +1 -1
- package/dist/Listbox/ListboxItem.cjs.map +1 -1
- package/dist/Listbox/ListboxItem.js.map +1 -1
- package/dist/Listbox/ListboxRoot.cjs +1 -1
- package/dist/Listbox/ListboxRoot.cjs.map +1 -1
- package/dist/Listbox/ListboxRoot.js +1 -1
- package/dist/Listbox/ListboxRoot.js.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.cjs +3 -3
- package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.js +3 -3
- package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
- package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
- package/dist/Menu/MenuCheckboxItem.js.map +1 -1
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js.map +1 -1
- package/dist/Menu/MenuItemImpl.cjs.map +1 -1
- package/dist/Menu/MenuItemImpl.js.map +1 -1
- package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
- package/dist/Menu/MenuItemIndicator.js.map +1 -1
- package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
- package/dist/Menu/MenuRadioGroup.js.map +1 -1
- package/dist/Menu/MenuRoot.cjs +1 -1
- package/dist/Menu/MenuRoot.cjs.map +1 -1
- package/dist/Menu/MenuRoot.js +1 -1
- package/dist/Menu/MenuRoot.js.map +1 -1
- package/dist/Menu/MenuSub.cjs +1 -1
- package/dist/Menu/MenuSub.cjs.map +1 -1
- package/dist/Menu/MenuSub.js +1 -1
- package/dist/Menu/MenuSub.js.map +1 -1
- package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
- package/dist/Menu/MenuSubTrigger.js.map +1 -1
- package/dist/Menubar/MenubarContent.cjs.map +1 -1
- package/dist/Menubar/MenubarContent.js.map +1 -1
- package/dist/Menubar/MenubarMenu.cjs.map +1 -1
- package/dist/Menubar/MenubarMenu.js.map +1 -1
- package/dist/Menubar/MenubarRoot.cjs.map +1 -1
- package/dist/Menubar/MenubarRoot.js.map +1 -1
- package/dist/Menubar/MenubarSub.cjs +1 -1
- package/dist/Menubar/MenubarSub.cjs.map +1 -1
- package/dist/Menubar/MenubarSub.js +1 -1
- package/dist/Menubar/MenubarSub.js.map +1 -1
- package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
- package/dist/Menubar/MenubarTrigger.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
- package/dist/NumberField/NumberFieldInput.cjs +2 -2
- package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
- package/dist/NumberField/NumberFieldInput.js +2 -2
- package/dist/NumberField/NumberFieldInput.js.map +1 -1
- package/dist/NumberField/NumberFieldRoot.cjs +8 -5
- package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
- package/dist/NumberField/NumberFieldRoot.js +8 -5
- package/dist/NumberField/NumberFieldRoot.js.map +1 -1
- package/dist/Pagination/PaginationFirst.cjs.map +1 -1
- package/dist/Pagination/PaginationFirst.js.map +1 -1
- package/dist/Pagination/PaginationLast.cjs.map +1 -1
- package/dist/Pagination/PaginationLast.js.map +1 -1
- package/dist/Pagination/PaginationList.cjs.map +1 -1
- package/dist/Pagination/PaginationList.js.map +1 -1
- package/dist/Pagination/PaginationListItem.cjs.map +1 -1
- package/dist/Pagination/PaginationListItem.js.map +1 -1
- package/dist/Pagination/PaginationNext.cjs.map +1 -1
- package/dist/Pagination/PaginationNext.js.map +1 -1
- package/dist/Pagination/PaginationPrev.cjs.map +1 -1
- package/dist/Pagination/PaginationPrev.js.map +1 -1
- package/dist/Pagination/PaginationRoot.cjs.map +1 -1
- package/dist/Pagination/PaginationRoot.js.map +1 -1
- package/dist/PinInput/PinInputInput.cjs +1 -1
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +1 -1
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/PinInput/PinInputRoot.cjs.map +1 -1
- package/dist/PinInput/PinInputRoot.js.map +1 -1
- package/dist/Popover/PopoverAnchor.cjs.map +1 -1
- package/dist/Popover/PopoverAnchor.js.map +1 -1
- package/dist/Popover/PopoverContentModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentModal.js.map +1 -1
- package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentNonModal.js.map +1 -1
- package/dist/Popover/PopoverRoot.cjs +1 -1
- package/dist/Popover/PopoverRoot.cjs.map +1 -1
- package/dist/Popover/PopoverRoot.js +1 -1
- package/dist/Popover/PopoverRoot.js.map +1 -1
- package/dist/Popover/PopoverTrigger.cjs.map +1 -1
- package/dist/Popover/PopoverTrigger.js.map +1 -1
- package/dist/Popper/PopperAnchor.cjs.map +1 -1
- package/dist/Popper/PopperAnchor.js.map +1 -1
- package/dist/Popper/PopperArrow.cjs.map +1 -1
- package/dist/Popper/PopperArrow.js.map +1 -1
- package/dist/Popper/PopperContent.cjs.map +1 -1
- package/dist/Popper/PopperContent.js.map +1 -1
- package/dist/Presence/Presence.cjs.map +1 -1
- package/dist/Presence/Presence.js.map +1 -1
- package/dist/Presence/usePresence.cjs.map +1 -1
- package/dist/Presence/usePresence.js.map +1 -1
- package/dist/Primitive/Slot.cjs +1 -9
- package/dist/Primitive/Slot.cjs.map +1 -1
- package/dist/Primitive/Slot.js +1 -9
- package/dist/Primitive/Slot.js.map +1 -1
- package/dist/Progress/ProgressRoot.cjs +3 -2
- package/dist/Progress/ProgressRoot.cjs.map +1 -1
- package/dist/Progress/ProgressRoot.js +3 -2
- package/dist/Progress/ProgressRoot.js.map +1 -1
- package/dist/RadioGroup/Radio.cjs.map +1 -1
- package/dist/RadioGroup/Radio.js.map +1 -1
- package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
- package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
- package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
- package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarCell.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCell.js +2 -2
- package/dist/RangeCalendar/RangeCalendarCell.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +28 -9
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js +28 -9
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +26 -9
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +26 -9
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.cjs +21 -4
- package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.js +21 -4
- package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
- package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.js +1 -1
- package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
- package/dist/Select/BubbleSelect.cjs.map +1 -1
- package/dist/Select/BubbleSelect.js.map +1 -1
- package/dist/Select/SelectContent.cjs.map +1 -1
- package/dist/Select/SelectContent.js.map +1 -1
- package/dist/Select/SelectContentImpl.cjs +1 -1
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +1 -1
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/Select/SelectItem.cjs.map +1 -1
- package/dist/Select/SelectItem.js.map +1 -1
- package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
- package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
- package/dist/Select/SelectItemAlignedPosition.js +1 -1
- package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
- package/dist/Select/SelectItemText.cjs.map +1 -1
- package/dist/Select/SelectItemText.js.map +1 -1
- package/dist/Select/SelectProvider.cjs.map +1 -1
- package/dist/Select/SelectProvider.js.map +1 -1
- package/dist/Select/SelectRoot.cjs +3 -1
- package/dist/Select/SelectRoot.cjs.map +1 -1
- package/dist/Select/SelectRoot.js +3 -1
- package/dist/Select/SelectRoot.js.map +1 -1
- package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
- package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
- package/dist/Select/SelectTrigger.cjs.map +1 -1
- package/dist/Select/SelectTrigger.js.map +1 -1
- package/dist/Select/SelectValue.cjs.map +1 -1
- package/dist/Select/SelectValue.js.map +1 -1
- package/dist/Select/SelectViewport.cjs.map +1 -1
- package/dist/Select/SelectViewport.js.map +1 -1
- package/dist/Slider/SliderHorizontal.cjs +7 -4
- package/dist/Slider/SliderHorizontal.cjs.map +1 -1
- package/dist/Slider/SliderHorizontal.js +7 -4
- package/dist/Slider/SliderHorizontal.js.map +1 -1
- package/dist/Slider/SliderRange.cjs +2 -2
- package/dist/Slider/SliderRange.cjs.map +1 -1
- package/dist/Slider/SliderRange.js +2 -2
- package/dist/Slider/SliderRange.js.map +1 -1
- package/dist/Slider/SliderRoot.cjs.map +1 -1
- package/dist/Slider/SliderRoot.js.map +1 -1
- package/dist/Slider/SliderThumb.cjs.map +1 -1
- package/dist/Slider/SliderThumb.js.map +1 -1
- package/dist/Slider/SliderThumbImpl.cjs +3 -3
- package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
- package/dist/Slider/SliderThumbImpl.js +3 -3
- package/dist/Slider/SliderThumbImpl.js.map +1 -1
- package/dist/Slider/SliderVertical.cjs +7 -4
- package/dist/Slider/SliderVertical.cjs.map +1 -1
- package/dist/Slider/SliderVertical.js +7 -4
- package/dist/Slider/SliderVertical.js.map +1 -1
- package/dist/Slider/utils.cjs +1 -1
- package/dist/Slider/utils.cjs.map +1 -1
- package/dist/Slider/utils.js +1 -1
- package/dist/Slider/utils.js.map +1 -1
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js.map +1 -1
- package/dist/Splitter/SplitterPanel.cjs +16 -10
- package/dist/Splitter/SplitterPanel.cjs.map +1 -1
- package/dist/Splitter/SplitterPanel.js +16 -10
- package/dist/Splitter/SplitterPanel.js.map +1 -1
- package/dist/Stepper/StepperIndicator.cjs.map +1 -1
- package/dist/Stepper/StepperIndicator.js.map +1 -1
- package/dist/Stepper/StepperItem.cjs.map +1 -1
- package/dist/Stepper/StepperItem.js.map +1 -1
- package/dist/Stepper/StepperRoot.cjs +30 -3
- package/dist/Stepper/StepperRoot.cjs.map +1 -1
- package/dist/Stepper/StepperRoot.js +30 -3
- package/dist/Stepper/StepperRoot.js.map +1 -1
- package/dist/Stepper/StepperTrigger.cjs.map +1 -1
- package/dist/Stepper/StepperTrigger.js.map +1 -1
- package/dist/Switch/SwitchRoot.cjs.map +1 -1
- package/dist/Switch/SwitchRoot.js.map +1 -1
- package/dist/Tabs/TabsContent.cjs.map +1 -1
- package/dist/Tabs/TabsContent.js.map +1 -1
- package/dist/Tabs/TabsIndicator.cjs.map +1 -1
- package/dist/Tabs/TabsIndicator.js.map +1 -1
- package/dist/Tabs/TabsList.cjs.map +1 -1
- package/dist/Tabs/TabsList.js.map +1 -1
- package/dist/Tabs/TabsRoot.cjs.map +1 -1
- package/dist/Tabs/TabsRoot.js.map +1 -1
- package/dist/Tabs/TabsTrigger.cjs.map +1 -1
- package/dist/Tabs/TabsTrigger.js.map +1 -1
- package/dist/TagsInput/TagsInputInput.cjs +1 -0
- package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
- package/dist/TagsInput/TagsInputInput.js +1 -0
- package/dist/TagsInput/TagsInputInput.js.map +1 -1
- package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItem.js.map +1 -1
- package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
- package/dist/TagsInput/TagsInputRoot.cjs +1 -1
- package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
- package/dist/TagsInput/TagsInputRoot.js +1 -1
- package/dist/TagsInput/TagsInputRoot.js.map +1 -1
- package/dist/TimeField/TimeFieldInput.cjs +1 -0
- package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
- package/dist/TimeField/TimeFieldInput.js +1 -0
- package/dist/TimeField/TimeFieldInput.js.map +1 -1
- package/dist/TimeField/TimeFieldRoot.cjs +13 -4
- package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
- package/dist/TimeField/TimeFieldRoot.js +13 -4
- package/dist/TimeField/TimeFieldRoot.js.map +1 -1
- package/dist/Toast/ToastAnnounce.cjs.map +1 -1
- package/dist/Toast/ToastAnnounce.js.map +1 -1
- package/dist/Toast/ToastRoot.cjs.map +1 -1
- package/dist/Toast/ToastRoot.js.map +1 -1
- package/dist/Toast/ToastRootImpl.cjs +1 -1
- package/dist/Toast/ToastRootImpl.cjs.map +1 -1
- package/dist/Toast/ToastRootImpl.js +1 -1
- package/dist/Toast/ToastRootImpl.js.map +1 -1
- package/dist/Toast/ToastViewport.cjs +1 -1
- package/dist/Toast/ToastViewport.cjs.map +1 -1
- package/dist/Toast/ToastViewport.js +1 -1
- package/dist/Toast/ToastViewport.js.map +1 -1
- package/dist/Toggle/Toggle.cjs.map +1 -1
- package/dist/Toggle/Toggle.js.map +1 -1
- package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
- package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
- package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
- package/dist/Toolbar/ToolbarRoot.js.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +1 -1
- package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
- package/dist/Tooltip/TooltipRoot.cjs +1 -1
- package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
- package/dist/Tooltip/TooltipRoot.js +1 -1
- package/dist/Tooltip/TooltipRoot.js.map +1 -1
- package/dist/Tooltip/TooltipTrigger.cjs +1 -1
- package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
- package/dist/Tooltip/TooltipTrigger.js +1 -1
- package/dist/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/Tree/TreeItem.cjs +4 -1
- package/dist/Tree/TreeItem.cjs.map +1 -1
- package/dist/Tree/TreeItem.js +4 -1
- package/dist/Tree/TreeItem.js.map +1 -1
- package/dist/Tree/TreeRoot.cjs +29 -3
- package/dist/Tree/TreeRoot.cjs.map +1 -1
- package/dist/Tree/TreeRoot.js +29 -3
- package/dist/Tree/TreeRoot.js.map +1 -1
- package/dist/Tree/TreeVirtualizer.cjs +2 -2
- package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
- package/dist/Tree/TreeVirtualizer.js +2 -2
- package/dist/Tree/TreeVirtualizer.js.map +1 -1
- package/dist/Viewport/Viewport.cjs.map +1 -1
- package/dist/Viewport/Viewport.js.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
- package/dist/component/BaseSeparator.cjs.map +1 -1
- package/dist/component/BaseSeparator.js.map +1 -1
- package/dist/date/calendar.cjs.map +1 -1
- package/dist/date/calendar.js.map +1 -1
- package/dist/date/parser.cjs +22 -7
- package/dist/date/parser.cjs.map +1 -1
- package/dist/date/parser.js +23 -8
- package/dist/date/parser.js.map +1 -1
- package/dist/date/useDateField.cjs +21 -6
- package/dist/date/useDateField.cjs.map +1 -1
- package/dist/date/useDateField.js +21 -6
- package/dist/date/useDateField.js.map +1 -1
- package/dist/date/utils.cjs +31 -2
- package/dist/date/utils.cjs.map +1 -1
- package/dist/date/utils.js +30 -3
- package/dist/date/utils.js.map +1 -1
- package/dist/index.d.ts +492 -351
- package/dist/shared/useBodyScrollLock.cjs +2 -2
- package/dist/shared/useBodyScrollLock.cjs.map +1 -1
- package/dist/shared/useBodyScrollLock.js +2 -2
- package/dist/shared/useBodyScrollLock.js.map +1 -1
- package/dist/shared/useDateFormatter.cjs +12 -10
- package/dist/shared/useDateFormatter.cjs.map +1 -1
- package/dist/shared/useDateFormatter.js +12 -10
- package/dist/shared/useDateFormatter.js.map +1 -1
- package/dist/shared/useDirection.cjs.map +1 -1
- package/dist/shared/useDirection.js.map +1 -1
- package/dist/shared/useForwardProps.cjs +4 -2
- package/dist/shared/useForwardProps.cjs.map +1 -1
- package/dist/shared/useForwardProps.js +5 -3
- package/dist/shared/useForwardProps.js.map +1 -1
- package/dist/shared/useGraceArea.cjs.map +1 -1
- package/dist/shared/useGraceArea.js.map +1 -1
- package/dist/shared/useId.cjs +2 -2
- package/dist/shared/useId.cjs.map +1 -1
- package/dist/shared/useId.js +2 -2
- package/dist/shared/useId.js.map +1 -1
- package/dist/shared/useLocale.cjs.map +1 -1
- package/dist/shared/useLocale.js.map +1 -1
- package/dist/shared/useNonce.cjs.map +1 -1
- package/dist/shared/useNonce.js.map +1 -1
- package/package.json +5 -5
package/dist/Menu/MenuRoot.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const vue = require('vue');
|
|
4
|
-
const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
|
|
5
4
|
const core = require('@vueuse/core');
|
|
5
|
+
const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
|
|
6
6
|
const shared_useIsUsingKeyboard = require('../shared/useIsUsingKeyboard.cjs');
|
|
7
7
|
const shared_createContext = require('../shared/createContext.cjs');
|
|
8
8
|
const shared_useDirection = require('../shared/useDirection.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuRoot.cjs","sources":["../../src/Menu/MenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from './utils'\nimport { createContext, useDirection } from '@/shared'\nimport { useIsUsingKeyboard } from '@/shared/useIsUsingKeyboard'\n\nexport interface MenuContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n content: Ref<HTMLElement | undefined>\n onContentChange: (content: HTMLElement | undefined) => void\n}\n\nexport interface MenuRootContext {\n onClose: () => void\n dir: Ref<Direction>\n isUsingKeyboardRef: Ref<boolean>\n modal: Ref<boolean>\n}\n\nexport interface MenuProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /**\n * The modality of the dropdown menu.\n *\n * When set to `true`, interaction with outside elements will be disabled and only menu content will be visible to screen readers.\n */\n modal?: boolean\n}\n\nexport type MenuEmits = {\n 'update:open': [payload: boolean]\n}\n\nexport const [injectMenuContext, provideMenuContext]\n = createContext<MenuContext>(['MenuRoot', 'MenuSub'], 'MenuContext')\n\nexport const [injectMenuRootContext, provideMenuRootContext]\n = createContext<MenuRootContext>('MenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenuRoot.cjs","sources":["../../src/Menu/MenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from './utils'\nimport { createContext, useDirection } from '@/shared'\nimport { useIsUsingKeyboard } from '@/shared/useIsUsingKeyboard'\n\nexport interface MenuContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n content: Ref<HTMLElement | undefined>\n onContentChange: (content: HTMLElement | undefined) => void\n}\n\nexport interface MenuRootContext {\n onClose: () => void\n dir: Ref<Direction>\n isUsingKeyboardRef: Ref<boolean>\n modal: Ref<boolean>\n}\n\nexport interface MenuProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /**\n * The modality of the dropdown menu.\n *\n * When set to `true`, interaction with outside elements will be disabled and only menu content will be visible to screen readers.\n */\n modal?: boolean\n}\n\nexport type MenuEmits = {\n 'update:open': [payload: boolean]\n}\n\nexport const [injectMenuContext, provideMenuContext]\n = createContext<MenuContext>(['MenuRoot', 'MenuSub'], 'MenuContext')\n\nexport const [injectMenuRootContext, provideMenuRootContext]\n = createContext<MenuRootContext>('MenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport {\n ref,\n toRefs,\n} from 'vue'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<MenuProps>(), {\n open: false,\n modal: true,\n})\nconst emits = defineEmits<MenuEmits>()\nconst { modal, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst open = useVModel(props, 'open', emits)\n\nconst content = ref<HTMLElement>()\nconst isUsingKeyboardRef = useIsUsingKeyboard()\n\nprovideMenuContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n content,\n onContentChange: (element) => {\n content.value = element\n },\n})\n\nprovideMenuRootContext({\n onClose: () => {\n open.value = false\n },\n isUsingKeyboardRef,\n dir,\n modal,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot />\n </PopperRoot>\n</template>\n"],"names":["createContext","toRefs","useDirection","useVModel","ref","useIsUsingKeyboard"],"mappings":";;;;;;;;;AAyCa,MAAA,CAAC,mBAAmB,kBAAkB,CAAA,GAC/CA,mCAA2B,CAAC,UAAA,EAAY,SAAS,CAAA,EAAG,aAAa;AAE9D,MAAM,CAAC,qBAAA,EAAuB,sBAAsB,CAAA,GACvDA,mCAA+B,UAAU;;;;;;;;;;AAW7C,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAA,MAAM,EAAE,KAAO,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAIC,WAAO,KAAK,CAAA;AAC5C,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAK,CAAA;AAE3C,IAAA,MAAM,UAAUC,OAAiB,EAAA;AACjC,IAAA,MAAM,qBAAqBC,4CAAmB,EAAA;AAE9C,IAAmB,kBAAA,CAAA;AAAA,MACjB,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,OAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAY,KAAA;AAC5B,QAAA,OAAA,CAAQ,KAAQ,GAAA,OAAA;AAAA;AAClB,KACD,CAAA;AAED,IAAuB,sBAAA,CAAA;AAAA,MACrB,SAAS,MAAM;AACb,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,kBAAA;AAAA,MACA,GAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;"}
|
package/dist/Menu/MenuRoot.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, toRefs, ref, createBlock, openBlock, unref, withCtx, renderSlot } from 'vue';
|
|
2
|
-
import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
|
|
3
2
|
import { useVModel } from '@vueuse/core';
|
|
3
|
+
import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
|
|
4
4
|
import { u as useIsUsingKeyboard } from '../shared/useIsUsingKeyboard.js';
|
|
5
5
|
import { c as createContext } from '../shared/createContext.js';
|
|
6
6
|
import { u as useDirection } from '../shared/useDirection.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuRoot.js","sources":["../../src/Menu/MenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from './utils'\nimport { createContext, useDirection } from '@/shared'\nimport { useIsUsingKeyboard } from '@/shared/useIsUsingKeyboard'\n\nexport interface MenuContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n content: Ref<HTMLElement | undefined>\n onContentChange: (content: HTMLElement | undefined) => void\n}\n\nexport interface MenuRootContext {\n onClose: () => void\n dir: Ref<Direction>\n isUsingKeyboardRef: Ref<boolean>\n modal: Ref<boolean>\n}\n\nexport interface MenuProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /**\n * The modality of the dropdown menu.\n *\n * When set to `true`, interaction with outside elements will be disabled and only menu content will be visible to screen readers.\n */\n modal?: boolean\n}\n\nexport type MenuEmits = {\n 'update:open': [payload: boolean]\n}\n\nexport const [injectMenuContext, provideMenuContext]\n = createContext<MenuContext>(['MenuRoot', 'MenuSub'], 'MenuContext')\n\nexport const [injectMenuRootContext, provideMenuRootContext]\n = createContext<MenuRootContext>('MenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenuRoot.js","sources":["../../src/Menu/MenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from './utils'\nimport { createContext, useDirection } from '@/shared'\nimport { useIsUsingKeyboard } from '@/shared/useIsUsingKeyboard'\n\nexport interface MenuContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n content: Ref<HTMLElement | undefined>\n onContentChange: (content: HTMLElement | undefined) => void\n}\n\nexport interface MenuRootContext {\n onClose: () => void\n dir: Ref<Direction>\n isUsingKeyboardRef: Ref<boolean>\n modal: Ref<boolean>\n}\n\nexport interface MenuProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /**\n * The modality of the dropdown menu.\n *\n * When set to `true`, interaction with outside elements will be disabled and only menu content will be visible to screen readers.\n */\n modal?: boolean\n}\n\nexport type MenuEmits = {\n 'update:open': [payload: boolean]\n}\n\nexport const [injectMenuContext, provideMenuContext]\n = createContext<MenuContext>(['MenuRoot', 'MenuSub'], 'MenuContext')\n\nexport const [injectMenuRootContext, provideMenuRootContext]\n = createContext<MenuRootContext>('MenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport {\n ref,\n toRefs,\n} from 'vue'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<MenuProps>(), {\n open: false,\n modal: true,\n})\nconst emits = defineEmits<MenuEmits>()\nconst { modal, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst open = useVModel(props, 'open', emits)\n\nconst content = ref<HTMLElement>()\nconst isUsingKeyboardRef = useIsUsingKeyboard()\n\nprovideMenuContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n content,\n onContentChange: (element) => {\n content.value = element\n },\n})\n\nprovideMenuRootContext({\n onClose: () => {\n open.value = false\n },\n isUsingKeyboardRef,\n dir,\n modal,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot />\n </PopperRoot>\n</template>\n"],"names":[],"mappings":";;;;;;;AAyCa,MAAA,CAAC,mBAAmB,kBAAkB,CAAA,GAC/C,cAA2B,CAAC,UAAA,EAAY,SAAS,CAAA,EAAG,aAAa;AAE9D,MAAM,CAAC,qBAAA,EAAuB,sBAAsB,CAAA,GACvD,cAA+B,UAAU;;;;;;;;;;AAW7C,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAA,MAAM,EAAE,KAAO,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAI,OAAO,KAAK,CAAA;AAC5C,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAK,CAAA;AAE3C,IAAA,MAAM,UAAU,GAAiB,EAAA;AACjC,IAAA,MAAM,qBAAqB,kBAAmB,EAAA;AAE9C,IAAmB,kBAAA,CAAA;AAAA,MACjB,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,OAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAY,KAAA;AAC5B,QAAA,OAAA,CAAQ,KAAQ,GAAA,OAAA;AAAA;AAClB,KACD,CAAA;AAED,IAAuB,sBAAA,CAAA;AAAA,MACrB,SAAS,MAAM;AACb,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,kBAAA;AAAA,MACA,GAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;"}
|
package/dist/Menu/MenuSub.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const vue = require('vue');
|
|
4
|
-
const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
|
|
5
4
|
const core = require('@vueuse/core');
|
|
5
|
+
const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
|
|
6
6
|
const Menu_MenuRoot = require('./MenuRoot.cjs');
|
|
7
7
|
const shared_createContext = require('../shared/createContext.cjs');
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuSub.cjs","sources":["../../src/Menu/MenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuContext } from './MenuRoot.vue'\nimport { createContext } from '@/shared'\n\nexport interface MenuSubContext {\n contentId: string\n triggerId: string\n trigger: Ref<HTMLElement | undefined>\n onTriggerChange: (trigger: HTMLElement | undefined) => void\n parentMenuContext?: MenuContext\n}\n\nexport const [injectMenuSubContext, provideMenuSubContext]\n = createContext<MenuSubContext>('MenuSub')\n\nexport interface MenuSubProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n}\n\nexport type MenuSubEmits = {\n /** Event handler called when the open state of the submenu changes. */\n 'update:open': [payload: boolean]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenuSub.cjs","sources":["../../src/Menu/MenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuContext } from './MenuRoot.vue'\nimport { createContext } from '@/shared'\n\nexport interface MenuSubContext {\n contentId: string\n triggerId: string\n trigger: Ref<HTMLElement | undefined>\n onTriggerChange: (trigger: HTMLElement | undefined) => void\n parentMenuContext?: MenuContext\n}\n\nexport const [injectMenuSubContext, provideMenuSubContext]\n = createContext<MenuSubContext>('MenuSub')\n\nexport interface MenuSubProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n}\n\nexport type MenuSubEmits = {\n /** Event handler called when the open state of the submenu changes. */\n 'update:open': [payload: boolean]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport {\n ref,\n watchEffect,\n} from 'vue'\nimport { PopperRoot } from '@/Popper'\nimport { injectMenuContext, provideMenuContext } from './MenuRoot.vue'\n\nconst props = withDefaults(defineProps<MenuSubProps>(), {\n open: undefined,\n})\nconst emits = defineEmits<MenuSubEmits>()\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: false,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst parentMenuContext = injectMenuContext()\nconst trigger = ref<HTMLElement>()\nconst content = ref<HTMLElement>()\n\n// Prevent the parent menu from reopening with open submenus.\nwatchEffect((cleanupFn) => {\n if (parentMenuContext?.open.value === false)\n open.value = false\n cleanupFn(() => (open.value = false))\n})\n\nprovideMenuContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n content,\n onContentChange: (element) => {\n content.value = element\n },\n})\n\nprovideMenuSubContext({\n triggerId: '',\n contentId: '',\n trigger,\n onTriggerChange: (element) => {\n trigger.value = element\n },\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot />\n </PopperRoot>\n</template>\n"],"names":["createContext","useVModel","injectMenuContext","ref","watchEffect","provideMenuContext"],"mappings":";;;;;;;;AAaO,MAAM,CAAC,oBAAA,EAAsB,qBAAqB,CAAA,GACrDA,mCAA8B,SAAS;;;;;;;;AAsB3C,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA;AAAA,MAC3C,YAAc,EAAA,KAAA;AAAA,MACd,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,oBAAoBC,+BAAkB,EAAA;AAC5C,IAAA,MAAM,UAAUC,OAAiB,EAAA;AACjC,IAAA,MAAM,UAAUA,OAAiB,EAAA;AAGjC,IAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAI,IAAA,iBAAA,EAAmB,KAAK,KAAU,KAAA,KAAA;AACpC,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACf,MAAU,SAAA,CAAA,MAAO,IAAK,CAAA,KAAA,GAAQ,KAAM,CAAA;AAAA,KACrC,CAAA;AAED,IAAmBC,gCAAA,CAAA;AAAA,MACjB,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,OAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAY,KAAA;AAC5B,QAAA,OAAA,CAAQ,KAAQ,GAAA,OAAA;AAAA;AAClB,KACD,CAAA;AAED,IAAsB,qBAAA,CAAA;AAAA,MACpB,SAAW,EAAA,EAAA;AAAA,MACX,SAAW,EAAA,EAAA;AAAA,MACX,OAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAY,KAAA;AAC5B,QAAA,OAAA,CAAQ,KAAQ,GAAA,OAAA;AAAA;AAClB,KACD,CAAA;;;;;;;;;;;;;;;"}
|
package/dist/Menu/MenuSub.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, watchEffect, createBlock, openBlock, unref, withCtx, renderSlot } from 'vue';
|
|
2
|
-
import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
|
|
3
2
|
import { useVModel } from '@vueuse/core';
|
|
3
|
+
import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
|
|
4
4
|
import { i as injectMenuContext, p as provideMenuContext } from './MenuRoot.js';
|
|
5
5
|
import { c as createContext } from '../shared/createContext.js';
|
|
6
6
|
|
package/dist/Menu/MenuSub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuSub.js","sources":["../../src/Menu/MenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuContext } from './MenuRoot.vue'\nimport { createContext } from '@/shared'\n\nexport interface MenuSubContext {\n contentId: string\n triggerId: string\n trigger: Ref<HTMLElement | undefined>\n onTriggerChange: (trigger: HTMLElement | undefined) => void\n parentMenuContext?: MenuContext\n}\n\nexport const [injectMenuSubContext, provideMenuSubContext]\n = createContext<MenuSubContext>('MenuSub')\n\nexport interface MenuSubProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n}\n\nexport type MenuSubEmits = {\n /** Event handler called when the open state of the submenu changes. */\n 'update:open': [payload: boolean]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenuSub.js","sources":["../../src/Menu/MenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuContext } from './MenuRoot.vue'\nimport { createContext } from '@/shared'\n\nexport interface MenuSubContext {\n contentId: string\n triggerId: string\n trigger: Ref<HTMLElement | undefined>\n onTriggerChange: (trigger: HTMLElement | undefined) => void\n parentMenuContext?: MenuContext\n}\n\nexport const [injectMenuSubContext, provideMenuSubContext]\n = createContext<MenuSubContext>('MenuSub')\n\nexport interface MenuSubProps {\n /** The controlled open state of the menu. Can be used as `v-model:open`. */\n open?: boolean\n}\n\nexport type MenuSubEmits = {\n /** Event handler called when the open state of the submenu changes. */\n 'update:open': [payload: boolean]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport {\n ref,\n watchEffect,\n} from 'vue'\nimport { PopperRoot } from '@/Popper'\nimport { injectMenuContext, provideMenuContext } from './MenuRoot.vue'\n\nconst props = withDefaults(defineProps<MenuSubProps>(), {\n open: undefined,\n})\nconst emits = defineEmits<MenuSubEmits>()\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: false,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst parentMenuContext = injectMenuContext()\nconst trigger = ref<HTMLElement>()\nconst content = ref<HTMLElement>()\n\n// Prevent the parent menu from reopening with open submenus.\nwatchEffect((cleanupFn) => {\n if (parentMenuContext?.open.value === false)\n open.value = false\n cleanupFn(() => (open.value = false))\n})\n\nprovideMenuContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n content,\n onContentChange: (element) => {\n content.value = element\n },\n})\n\nprovideMenuSubContext({\n triggerId: '',\n contentId: '',\n trigger,\n onTriggerChange: (element) => {\n trigger.value = element\n },\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot />\n </PopperRoot>\n</template>\n"],"names":[],"mappings":";;;;;;AAaO,MAAM,CAAC,oBAAA,EAAsB,qBAAqB,CAAA,GACrD,cAA8B,SAAS;;;;;;;;AAsB3C,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA;AAAA,MAC3C,YAAc,EAAA,KAAA;AAAA,MACd,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,oBAAoB,iBAAkB,EAAA;AAC5C,IAAA,MAAM,UAAU,GAAiB,EAAA;AACjC,IAAA,MAAM,UAAU,GAAiB,EAAA;AAGjC,IAAA,WAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAI,IAAA,iBAAA,EAAmB,KAAK,KAAU,KAAA,KAAA;AACpC,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACf,MAAU,SAAA,CAAA,MAAO,IAAK,CAAA,KAAA,GAAQ,KAAM,CAAA;AAAA,KACrC,CAAA;AAED,IAAmB,kBAAA,CAAA;AAAA,MACjB,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,OAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAY,KAAA;AAC5B,QAAA,OAAA,CAAQ,KAAQ,GAAA,OAAA;AAAA;AAClB,KACD,CAAA;AAED,IAAsB,qBAAA,CAAA;AAAA,MACpB,SAAW,EAAA,EAAA;AAAA,MACX,SAAW,EAAA,EAAA;AAAA,MACX,OAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAY,KAAA;AAC5B,QAAA,OAAA,CAAQ,KAAQ,GAAA,OAAA;AAAA;AAClB,KACD,CAAA;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuSubTrigger.cjs","sources":["../../src/Menu/MenuSubTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport type { Side } from './utils'\n\nexport interface MenuSubTriggerProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ComponentPublicInstance } from 'vue'\nimport {
|
|
1
|
+
{"version":3,"file":"MenuSubTrigger.cjs","sources":["../../src/Menu/MenuSubTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport type { Side } from './utils'\n\nexport interface MenuSubTriggerProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ComponentPublicInstance } from 'vue'\nimport { nextTick, onUnmounted, ref } from 'vue'\nimport { useId } from '@/shared'\nimport MenuAnchor from './MenuAnchor.vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport MenuItemImpl from './MenuItemImpl.vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport { injectMenuSubContext } from './MenuSub.vue'\nimport { getOpenState, isMouseEvent, SUB_OPEN_KEYS } from './utils'\n\nconst props = defineProps<MenuSubTriggerProps>()\n\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\nconst subContext = injectMenuSubContext()\nconst contentContext = injectMenuContentContext()\n\nconst openTimerRef = ref<number | null>(null)\n\nsubContext.triggerId ||= useId(undefined, 'reka-menu-sub-trigger')\n\nfunction clearOpenTimer() {\n if (openTimerRef.value)\n window.clearTimeout(openTimerRef.value)\n openTimerRef.value = null\n}\n\nonUnmounted(() => {\n clearOpenTimer()\n})\n\nfunction handlePointerMove(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n const defaultPrevented = contentContext.onItemEnter(event)\n if (defaultPrevented)\n return\n\n if (!props.disabled && !menuContext.open.value && !openTimerRef.value) {\n contentContext.onPointerGraceIntentChange(null)\n openTimerRef.value = window.setTimeout(() => {\n menuContext.onOpenChange(true)\n clearOpenTimer()\n }, 100)\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n clearOpenTimer()\n\n const contentRect = menuContext.content.value?.getBoundingClientRect()\n if (contentRect?.width) {\n // TODO (Radix UI): make sure to update this when we change positioning logic\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L1088\n const side = menuContext.content.value?.dataset.side as Side\n\n const rightSide = side === 'right'\n const bleed = rightSide ? -5 : +5\n const contentNearEdge = contentRect[rightSide ? 'left' : 'right']\n const contentFarEdge = contentRect[rightSide ? 'right' : 'left']\n\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom },\n ],\n side,\n })\n\n window.clearTimeout(contentContext.pointerGraceTimerRef.value)\n contentContext.pointerGraceTimerRef.value = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300,\n )\n }\n else {\n const defaultPrevented = contentContext.onTriggerLeave(event)\n if (defaultPrevented)\n return\n\n // There's 100ms where the user may leave an item before the submenu was opened.\n contentContext.onPointerGraceIntentChange(null)\n }\n}\n\nasync function handleKeyDown(event: KeyboardEvent) {\n const isTypingAhead = contentContext.searchRef.value !== ''\n if (props.disabled || (isTypingAhead && event.key === ' '))\n return\n if (SUB_OPEN_KEYS[rootContext.dir.value].includes(event.key)) {\n menuContext.onOpenChange(true)\n\n await nextTick()\n // The trigger may hold focus if opened via pointer interaction\n // so we ensure content is given focus again when switching to keyboard.\n menuContext.content.value?.focus()\n // prevent window from scrolling\n event.preventDefault()\n }\n}\n</script>\n\n<template>\n <MenuAnchor as-child>\n <MenuItemImpl\n v-bind=\"props\"\n :id=\"subContext.triggerId\"\n :ref=\"\n (vnode: ComponentPublicInstance) => {\n // @ts-ignore\n subContext?.onTriggerChange(vnode?.$el);\n return undefined\n }\n \"\n aria-haspopup=\"menu\"\n :aria-expanded=\"menuContext.open.value\"\n :aria-controls=\"subContext.contentId\"\n :data-state=\"getOpenState(menuContext.open.value)\"\n @click=\"\n async (event) => {\n if (props.disabled || event.defaultPrevented) return;\n /**\n * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)\n * and we rely heavily on `onFocusOutside` for submenus to close when switching\n * between separate submenus.\n */\n event.currentTarget.focus();\n if (!menuContext.open.value) menuContext.onOpenChange(true);\n }\n \"\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </MenuItemImpl>\n </MenuAnchor>\n</template>\n"],"names":["injectMenuContext","injectMenuRootContext","injectMenuSubContext","injectMenuContentContext","ref","useId","onUnmounted","isMouseEvent","SUB_OPEN_KEYS","nextTick"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuSubTrigger.js","sources":["../../src/Menu/MenuSubTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport type { Side } from './utils'\n\nexport interface MenuSubTriggerProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ComponentPublicInstance } from 'vue'\nimport {
|
|
1
|
+
{"version":3,"file":"MenuSubTrigger.js","sources":["../../src/Menu/MenuSubTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport type { Side } from './utils'\n\nexport interface MenuSubTriggerProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ComponentPublicInstance } from 'vue'\nimport { nextTick, onUnmounted, ref } from 'vue'\nimport { useId } from '@/shared'\nimport MenuAnchor from './MenuAnchor.vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport MenuItemImpl from './MenuItemImpl.vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport { injectMenuSubContext } from './MenuSub.vue'\nimport { getOpenState, isMouseEvent, SUB_OPEN_KEYS } from './utils'\n\nconst props = defineProps<MenuSubTriggerProps>()\n\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\nconst subContext = injectMenuSubContext()\nconst contentContext = injectMenuContentContext()\n\nconst openTimerRef = ref<number | null>(null)\n\nsubContext.triggerId ||= useId(undefined, 'reka-menu-sub-trigger')\n\nfunction clearOpenTimer() {\n if (openTimerRef.value)\n window.clearTimeout(openTimerRef.value)\n openTimerRef.value = null\n}\n\nonUnmounted(() => {\n clearOpenTimer()\n})\n\nfunction handlePointerMove(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n const defaultPrevented = contentContext.onItemEnter(event)\n if (defaultPrevented)\n return\n\n if (!props.disabled && !menuContext.open.value && !openTimerRef.value) {\n contentContext.onPointerGraceIntentChange(null)\n openTimerRef.value = window.setTimeout(() => {\n menuContext.onOpenChange(true)\n clearOpenTimer()\n }, 100)\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n clearOpenTimer()\n\n const contentRect = menuContext.content.value?.getBoundingClientRect()\n if (contentRect?.width) {\n // TODO (Radix UI): make sure to update this when we change positioning logic\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L1088\n const side = menuContext.content.value?.dataset.side as Side\n\n const rightSide = side === 'right'\n const bleed = rightSide ? -5 : +5\n const contentNearEdge = contentRect[rightSide ? 'left' : 'right']\n const contentFarEdge = contentRect[rightSide ? 'right' : 'left']\n\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom },\n ],\n side,\n })\n\n window.clearTimeout(contentContext.pointerGraceTimerRef.value)\n contentContext.pointerGraceTimerRef.value = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300,\n )\n }\n else {\n const defaultPrevented = contentContext.onTriggerLeave(event)\n if (defaultPrevented)\n return\n\n // There's 100ms where the user may leave an item before the submenu was opened.\n contentContext.onPointerGraceIntentChange(null)\n }\n}\n\nasync function handleKeyDown(event: KeyboardEvent) {\n const isTypingAhead = contentContext.searchRef.value !== ''\n if (props.disabled || (isTypingAhead && event.key === ' '))\n return\n if (SUB_OPEN_KEYS[rootContext.dir.value].includes(event.key)) {\n menuContext.onOpenChange(true)\n\n await nextTick()\n // The trigger may hold focus if opened via pointer interaction\n // so we ensure content is given focus again when switching to keyboard.\n menuContext.content.value?.focus()\n // prevent window from scrolling\n event.preventDefault()\n }\n}\n</script>\n\n<template>\n <MenuAnchor as-child>\n <MenuItemImpl\n v-bind=\"props\"\n :id=\"subContext.triggerId\"\n :ref=\"\n (vnode: ComponentPublicInstance) => {\n // @ts-ignore\n subContext?.onTriggerChange(vnode?.$el);\n return undefined\n }\n \"\n aria-haspopup=\"menu\"\n :aria-expanded=\"menuContext.open.value\"\n :aria-controls=\"subContext.contentId\"\n :data-state=\"getOpenState(menuContext.open.value)\"\n @click=\"\n async (event) => {\n if (props.disabled || event.defaultPrevented) return;\n /**\n * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)\n * and we rely heavily on `onFocusOutside` for submenus to close when switching\n * between separate submenus.\n */\n event.currentTarget.focus();\n if (!menuContext.open.value) menuContext.onOpenChange(true);\n }\n \"\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </MenuItemImpl>\n </MenuAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAc,iBAAkB,EAAA;AACtC,IAAA,MAAM,cAAc,qBAAsB,EAAA;AAC1C,IAAA,MAAM,aAAa,oBAAqB,EAAA;AACxC,IAAA,MAAM,iBAAiB,wBAAyB,EAAA;AAEhD,IAAM,MAAA,YAAA,GAAe,IAAmB,IAAI,CAAA;AAE5C,IAAW,UAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,uBAAuB,CAAA;AAEjE,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,IAAI,YAAa,CAAA,KAAA;AACf,QAAO,MAAA,CAAA,YAAA,CAAa,aAAa,KAAK,CAAA;AACxC,MAAA,YAAA,CAAa,KAAQ,GAAA,IAAA;AAAA;AAGvB,IAAA,WAAA,CAAY,MAAM;AAChB,MAAe,cAAA,EAAA;AAAA,KAChB,CAAA;AAED,IAAA,SAAS,kBAAkB,KAAqB,EAAA;AAC9C,MAAI,IAAA,CAAC,aAAa,KAAK,CAAA;AACrB,QAAA;AACF,MAAM,MAAA,gBAAA,GAAmB,cAAe,CAAA,WAAA,CAAY,KAAK,CAAA;AACzD,MAAI,IAAA,gBAAA;AACF,QAAA;AAEF,MAAI,IAAA,CAAC,MAAM,QAAY,IAAA,CAAC,YAAY,IAAK,CAAA,KAAA,IAAS,CAAC,YAAA,CAAa,KAAO,EAAA;AACrE,QAAA,cAAA,CAAe,2BAA2B,IAAI,CAAA;AAC9C,QAAa,YAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,UAAA,CAAW,MAAM;AAC3C,UAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAC7B,UAAe,cAAA,EAAA;AAAA,WACd,GAAG,CAAA;AAAA;AACR;AAGF,IAAA,eAAe,mBAAmB,KAAqB,EAAA;AACrD,MAAI,IAAA,CAAC,aAAa,KAAK,CAAA;AACrB,QAAA;AACF,MAAe,cAAA,EAAA;AAEf,MAAA,MAAM,WAAc,GAAA,WAAA,CAAY,OAAQ,CAAA,KAAA,EAAO,qBAAsB,EAAA;AACrE,MAAA,IAAI,aAAa,KAAO,EAAA;AAGtB,QAAA,MAAM,IAAO,GAAA,WAAA,CAAY,OAAQ,CAAA,KAAA,EAAO,OAAQ,CAAA,IAAA;AAEhD,QAAA,MAAM,YAAY,IAAS,KAAA,OAAA;AAC3B,QAAM,MAAA,KAAA,GAAQ,YAAY,EAAK,GAAA,CAAA;AAC/B,QAAA,MAAM,eAAkB,GAAA,WAAA,CAAY,SAAY,GAAA,MAAA,GAAS,OAAO,CAAA;AAChE,QAAA,MAAM,cAAiB,GAAA,WAAA,CAAY,SAAY,GAAA,OAAA,GAAU,MAAM,CAAA;AAE/D,QAAA,cAAA,CAAe,0BAA2B,CAAA;AAAA,UACxC,IAAM,EAAA;AAAA;AAAA;AAAA,YAGJ,EAAE,CAAG,EAAA,KAAA,CAAM,UAAU,KAAO,EAAA,CAAA,EAAG,MAAM,OAAQ,EAAA;AAAA,YAC7C,EAAE,CAAA,EAAG,eAAiB,EAAA,CAAA,EAAG,YAAY,GAAI,EAAA;AAAA,YACzC,EAAE,CAAA,EAAG,cAAgB,EAAA,CAAA,EAAG,YAAY,GAAI,EAAA;AAAA,YACxC,EAAE,CAAA,EAAG,cAAgB,EAAA,CAAA,EAAG,YAAY,MAAO,EAAA;AAAA,YAC3C,EAAE,CAAA,EAAG,eAAiB,EAAA,CAAA,EAAG,YAAY,MAAO;AAAA,WAC9C;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAO,MAAA,CAAA,YAAA,CAAa,cAAe,CAAA,oBAAA,CAAqB,KAAK,CAAA;AAC7D,QAAe,cAAA,CAAA,oBAAA,CAAqB,QAAQ,MAAO,CAAA,UAAA;AAAA,UACjD,MAAM,cAAe,CAAA,0BAAA,CAA2B,IAAI,CAAA;AAAA,UACpD;AAAA,SACF;AAAA,OAEG,MAAA;AACH,QAAM,MAAA,gBAAA,GAAmB,cAAe,CAAA,cAAA,CAAe,KAAK,CAAA;AAC5D,QAAI,IAAA,gBAAA;AACF,UAAA;AAGF,QAAA,cAAA,CAAe,2BAA2B,IAAI,CAAA;AAAA;AAChD;AAGF,IAAA,eAAe,cAAc,KAAsB,EAAA;AACjD,MAAM,MAAA,aAAA,GAAgB,cAAe,CAAA,SAAA,CAAU,KAAU,KAAA,EAAA;AACzD,MAAA,IAAI,KAAM,CAAA,QAAA,IAAa,aAAiB,IAAA,KAAA,CAAM,GAAQ,KAAA,GAAA;AACpD,QAAA;AACF,MAAI,IAAA,aAAA,CAAc,YAAY,GAAI,CAAA,KAAK,EAAE,QAAS,CAAA,KAAA,CAAM,GAAG,CAAG,EAAA;AAC5D,QAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAE7B,QAAA,MAAM,QAAS,EAAA;AAGf,QAAY,WAAA,CAAA,OAAA,CAAQ,OAAO,KAAM,EAAA;AAEjC,QAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarContent.cjs","sources":["../../src/Menubar/MenubarContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuContentEmits, MenuContentProps } from '@/Menu'\nimport { useCollection } from '@/Collection'\n\nexport type MenubarContentEmits = MenuContentEmits\n\nexport interface MenubarContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { wrapArray } from '@/shared/useTypeahead'\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarContent.cjs","sources":["../../src/Menubar/MenubarContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuContentEmits, MenuContentProps } from '@/Menu'\nimport { useCollection } from '@/Collection'\n\nexport type MenubarContentEmits = MenuContentEmits\n\nexport interface MenubarContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { wrapArray } from '@/shared/useTypeahead'\nimport { injectMenubarMenuContext } from './MenubarMenu.vue'\nimport { injectMenubarRootContext } from './MenubarRoot.vue'\n\nconst props = withDefaults(defineProps<MenubarContentProps>(), {\n align: 'start',\n})\nconst emits = defineEmits<MenubarContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nuseForwardExpose()\n\nconst rootContext = injectMenubarRootContext()\nconst menuContext = injectMenubarMenuContext()\n\nmenuContext.contentId ||= useId(undefined, 'reka-menubar-content')\n\nconst { getItems } = useCollection({ key: 'Menubar' })\n\nconst hasInteractedOutsideRef = ref(false)\n\nfunction handleArrowNavigation(event: KeyboardEvent) {\n const target = event.target as HTMLElement\n const targetIsSubTrigger = target.hasAttribute(\n 'data-reka-menubar-subtrigger',\n )\n\n const prevMenuKey = rootContext.dir.value === 'rtl' ? 'ArrowRight' : 'ArrowLeft'\n const isPrevKey = prevMenuKey === event.key\n const isNextKey = !isPrevKey\n\n // Prevent navigation when we're opening a submenu\n if (isNextKey && targetIsSubTrigger)\n return\n\n let candidateValues = getItems().filter(i => i.ref.dataset.disabled !== '').map(i => i.ref.dataset.value)\n if (isPrevKey)\n candidateValues.reverse()\n\n const currentIndex = candidateValues.indexOf(menuContext.value)\n\n candidateValues = rootContext.loop.value\n ? wrapArray(candidateValues, currentIndex + 1)\n : candidateValues.slice(currentIndex + 1)\n\n const [nextValue] = candidateValues\n if (nextValue)\n rootContext.onMenuOpen(nextValue)\n}\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n :id=\"menuContext.contentId\"\n data-reka-menubar-content=\"\"\n :aria-labelledby=\"menuContext.triggerId\"\n :style=\"{\n '--reka-menubar-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-menubar-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-menubar-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-menubar-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-menubar-trigger-height': 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"(event) => {\n const menubarOpen = Boolean(rootContext.modelValue.value);\n if (!menubarOpen && !hasInteractedOutsideRef) {\n menuContext.triggerElement.value?.focus();\n }\n\n hasInteractedOutsideRef = false;\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\"\n @focus-outside=\"(event) => {\n const target = event.target as HTMLElement;\n const isMenubarTrigger = getItems().filter(i => i.ref.dataset.disabled !== '').some((i) => i.ref.contains(target));\n if (isMenubarTrigger) event.preventDefault();\n }\"\n @interact-outside=\"\n (event) => {\n hasInteractedOutsideRef = true;\n }\n \"\n @entry-focus=\"(event) => {\n if (!menuContext.wasKeyboardTriggerOpenRef.value) event.preventDefault()\n }\"\n @keydown.arrow-right.arrow-left=\"handleArrowNavigation\"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":["useForwardPropsEmits","useForwardExpose","injectMenubarRootContext","injectMenubarMenuContext","useId","useCollection","ref","wrapArray"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAiBC,wCAAA,EAAA;AAEjB,IAAA,MAAM,cAAcC,4CAAyB,EAAA;AAC7C,IAAA,MAAM,cAAcC,4CAAyB,EAAA;AAE7C,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,sBAAsB,CAAA;AAEjE,IAAA,MAAM,EAAE,QAAS,EAAA,GAAIC,oCAAc,EAAE,GAAA,EAAK,WAAW,CAAA;AAErD,IAAM,MAAA,uBAAA,GAA0BC,QAAI,KAAK,CAAA;AAEzC,IAAA,SAAS,sBAAsB,KAAsB,EAAA;AACnD,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,MAAA,MAAM,qBAAqB,MAAO,CAAA,YAAA;AAAA,QAChC;AAAA,OACF;AAEA,MAAA,MAAM,WAAc,GAAA,WAAA,CAAY,GAAI,CAAA,KAAA,KAAU,QAAQ,YAAe,GAAA,WAAA;AACrE,MAAM,MAAA,SAAA,GAAY,gBAAgB,KAAM,CAAA,GAAA;AACxC,MAAA,MAAM,YAAY,CAAC,SAAA;AAGnB,MAAA,IAAI,SAAa,IAAA,kBAAA;AACf,QAAA;AAEF,MAAA,IAAI,kBAAkB,QAAS,EAAA,CAAE,MAAO,CAAA,CAAA,CAAA,KAAK,EAAE,GAAI,CAAA,OAAA,CAAQ,QAAa,KAAA,EAAE,EAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,GAAA,CAAI,QAAQ,KAAK,CAAA;AACxG,MAAI,IAAA,SAAA;AACF,QAAA,eAAA,CAAgB,OAAQ,EAAA;AAE1B,MAAA,MAAM,YAAe,GAAA,eAAA,CAAgB,OAAQ,CAAA,WAAA,CAAY,KAAK,CAAA;AAE9D,MAAkB,eAAA,GAAA,WAAA,CAAY,IAAK,CAAA,KAAA,GAC/BC,6BAAU,CAAA,eAAA,EAAiB,YAAe,GAAA,CAAC,CAC3C,GAAA,eAAA,CAAgB,KAAM,CAAA,YAAA,GAAe,CAAC,CAAA;AAE1C,MAAM,MAAA,CAAC,SAAS,CAAI,GAAA,eAAA;AACpB,MAAI,IAAA,SAAA;AACF,QAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarContent.js","sources":["../../src/Menubar/MenubarContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuContentEmits, MenuContentProps } from '@/Menu'\nimport { useCollection } from '@/Collection'\n\nexport type MenubarContentEmits = MenuContentEmits\n\nexport interface MenubarContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { wrapArray } from '@/shared/useTypeahead'\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarContent.js","sources":["../../src/Menubar/MenubarContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuContentEmits, MenuContentProps } from '@/Menu'\nimport { useCollection } from '@/Collection'\n\nexport type MenubarContentEmits = MenuContentEmits\n\nexport interface MenubarContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { wrapArray } from '@/shared/useTypeahead'\nimport { injectMenubarMenuContext } from './MenubarMenu.vue'\nimport { injectMenubarRootContext } from './MenubarRoot.vue'\n\nconst props = withDefaults(defineProps<MenubarContentProps>(), {\n align: 'start',\n})\nconst emits = defineEmits<MenubarContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nuseForwardExpose()\n\nconst rootContext = injectMenubarRootContext()\nconst menuContext = injectMenubarMenuContext()\n\nmenuContext.contentId ||= useId(undefined, 'reka-menubar-content')\n\nconst { getItems } = useCollection({ key: 'Menubar' })\n\nconst hasInteractedOutsideRef = ref(false)\n\nfunction handleArrowNavigation(event: KeyboardEvent) {\n const target = event.target as HTMLElement\n const targetIsSubTrigger = target.hasAttribute(\n 'data-reka-menubar-subtrigger',\n )\n\n const prevMenuKey = rootContext.dir.value === 'rtl' ? 'ArrowRight' : 'ArrowLeft'\n const isPrevKey = prevMenuKey === event.key\n const isNextKey = !isPrevKey\n\n // Prevent navigation when we're opening a submenu\n if (isNextKey && targetIsSubTrigger)\n return\n\n let candidateValues = getItems().filter(i => i.ref.dataset.disabled !== '').map(i => i.ref.dataset.value)\n if (isPrevKey)\n candidateValues.reverse()\n\n const currentIndex = candidateValues.indexOf(menuContext.value)\n\n candidateValues = rootContext.loop.value\n ? wrapArray(candidateValues, currentIndex + 1)\n : candidateValues.slice(currentIndex + 1)\n\n const [nextValue] = candidateValues\n if (nextValue)\n rootContext.onMenuOpen(nextValue)\n}\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n :id=\"menuContext.contentId\"\n data-reka-menubar-content=\"\"\n :aria-labelledby=\"menuContext.triggerId\"\n :style=\"{\n '--reka-menubar-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-menubar-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-menubar-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-menubar-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-menubar-trigger-height': 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"(event) => {\n const menubarOpen = Boolean(rootContext.modelValue.value);\n if (!menubarOpen && !hasInteractedOutsideRef) {\n menuContext.triggerElement.value?.focus();\n }\n\n hasInteractedOutsideRef = false;\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\"\n @focus-outside=\"(event) => {\n const target = event.target as HTMLElement;\n const isMenubarTrigger = getItems().filter(i => i.ref.dataset.disabled !== '').some((i) => i.ref.contains(target));\n if (isMenubarTrigger) event.preventDefault();\n }\"\n @interact-outside=\"\n (event) => {\n hasInteractedOutsideRef = true;\n }\n \"\n @entry-focus=\"(event) => {\n if (!menuContext.wasKeyboardTriggerOpenRef.value) event.preventDefault()\n }\"\n @keydown.arrow-right.arrow-left=\"handleArrowNavigation\"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAiB,gBAAA,EAAA;AAEjB,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAC7C,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAE7C,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,sBAAsB,CAAA;AAEjE,IAAA,MAAM,EAAE,QAAS,EAAA,GAAI,cAAc,EAAE,GAAA,EAAK,WAAW,CAAA;AAErD,IAAM,MAAA,uBAAA,GAA0B,IAAI,KAAK,CAAA;AAEzC,IAAA,SAAS,sBAAsB,KAAsB,EAAA;AACnD,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,MAAA,MAAM,qBAAqB,MAAO,CAAA,YAAA;AAAA,QAChC;AAAA,OACF;AAEA,MAAA,MAAM,WAAc,GAAA,WAAA,CAAY,GAAI,CAAA,KAAA,KAAU,QAAQ,YAAe,GAAA,WAAA;AACrE,MAAM,MAAA,SAAA,GAAY,gBAAgB,KAAM,CAAA,GAAA;AACxC,MAAA,MAAM,YAAY,CAAC,SAAA;AAGnB,MAAA,IAAI,SAAa,IAAA,kBAAA;AACf,QAAA;AAEF,MAAA,IAAI,kBAAkB,QAAS,EAAA,CAAE,MAAO,CAAA,CAAA,CAAA,KAAK,EAAE,GAAI,CAAA,OAAA,CAAQ,QAAa,KAAA,EAAE,EAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,GAAA,CAAI,QAAQ,KAAK,CAAA;AACxG,MAAI,IAAA,SAAA;AACF,QAAA,eAAA,CAAgB,OAAQ,EAAA;AAE1B,MAAA,MAAM,YAAe,GAAA,eAAA,CAAgB,OAAQ,CAAA,WAAA,CAAY,KAAK,CAAA;AAE9D,MAAkB,eAAA,GAAA,WAAA,CAAY,IAAK,CAAA,KAAA,GAC/B,SAAU,CAAA,eAAA,EAAiB,YAAe,GAAA,CAAC,CAC3C,GAAA,eAAA,CAAgB,KAAM,CAAA,YAAA,GAAe,CAAC,CAAA;AAE1C,MAAM,MAAA,CAAC,SAAS,CAAI,GAAA,eAAA;AACpB,MAAI,IAAA,SAAA;AACF,QAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarMenu.cjs","sources":["../../src/Menubar/MenubarMenu.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose, useId } from '@/shared'\n\nexport interface MenubarMenuProps {\n /**\n * A unique value that associates the item with an active value when the navigation menu is controlled.\n *\n * This prop is managed automatically when uncontrolled.\n */\n value?: string\n}\n\ntype MenubarMenuContext = {\n value: string\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n wasKeyboardTriggerOpenRef: Ref<boolean>\n}\n\nexport const [injectMenubarMenuContext, provideMenubarMenuContext]\n = createContext<MenubarMenuContext>('MenubarMenu')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarMenu.cjs","sources":["../../src/Menubar/MenubarMenu.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose, useId } from '@/shared'\n\nexport interface MenubarMenuProps {\n /**\n * A unique value that associates the item with an active value when the navigation menu is controlled.\n *\n * This prop is managed automatically when uncontrolled.\n */\n value?: string\n}\n\ntype MenubarMenuContext = {\n value: string\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n wasKeyboardTriggerOpenRef: Ref<boolean>\n}\n\nexport const [injectMenubarMenuContext, provideMenubarMenuContext]\n = createContext<MenubarMenuContext>('MenubarMenu')\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { MenuRoot } from '@/Menu'\nimport { injectMenubarRootContext } from './MenubarRoot.vue'\n\nconst props = defineProps<MenubarMenuProps>()\n\nconst value = useId(props.value)\nconst rootContext = injectMenubarRootContext()\nuseForwardExpose()\n\nconst triggerElement = ref<HTMLElement>()\nconst wasKeyboardTriggerOpenRef = ref(false)\n\nconst open = computed(() => rootContext.modelValue.value === value)\n\nwatch(open, () => {\n if (!open.value)\n wasKeyboardTriggerOpenRef.value = false\n})\n\nprovideMenubarMenuContext({\n value,\n triggerElement,\n triggerId: value,\n contentId: '',\n wasKeyboardTriggerOpenRef,\n})\n</script>\n\n<template>\n <MenuRoot\n :open=\"open\"\n :modal=\"false\"\n :dir=\"rootContext.dir.value\"\n @update:open=\"\n (value) => {\n // Menu only calls `@update:open` when dismissing so we\n // want to close our MenuBar based on the same events.\n if (!value) rootContext.onMenuClose();\n }\n \"\n >\n <slot />\n </MenuRoot>\n</template>\n"],"names":["createContext","useId","injectMenubarRootContext","useForwardExpose","ref","computed","watch"],"mappings":";;;;;;;;;AAqBO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7DA,mCAAkC,aAAa;;;;;;;AAQnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,KAAA,GAAQC,kBAAM,CAAA,KAAA,CAAM,KAAK,CAAA;AAC/B,IAAA,MAAM,cAAcC,4CAAyB,EAAA;AAC7C,IAAiBC,wCAAA,EAAA;AAEjB,IAAA,MAAM,iBAAiBC,OAAiB,EAAA;AACxC,IAAM,MAAA,yBAAA,GAA4BA,QAAI,KAAK,CAAA;AAE3C,IAAA,MAAM,OAAOC,YAAS,CAAA,MAAM,WAAY,CAAA,UAAA,CAAW,UAAU,KAAK,CAAA;AAElE,IAAAC,SAAA,CAAM,MAAM,MAAM;AAChB,MAAA,IAAI,CAAC,IAAK,CAAA,KAAA;AACR,QAAA,yBAAA,CAA0B,KAAQ,GAAA,KAAA;AAAA,KACrC,CAAA;AAED,IAA0B,yBAAA,CAAA;AAAA,MACxB,KAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAW,EAAA,KAAA;AAAA,MACX,SAAW,EAAA,EAAA;AAAA,MACX;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarMenu.js","sources":["../../src/Menubar/MenubarMenu.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose, useId } from '@/shared'\n\nexport interface MenubarMenuProps {\n /**\n * A unique value that associates the item with an active value when the navigation menu is controlled.\n *\n * This prop is managed automatically when uncontrolled.\n */\n value?: string\n}\n\ntype MenubarMenuContext = {\n value: string\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n wasKeyboardTriggerOpenRef: Ref<boolean>\n}\n\nexport const [injectMenubarMenuContext, provideMenubarMenuContext]\n = createContext<MenubarMenuContext>('MenubarMenu')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarMenu.js","sources":["../../src/Menubar/MenubarMenu.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose, useId } from '@/shared'\n\nexport interface MenubarMenuProps {\n /**\n * A unique value that associates the item with an active value when the navigation menu is controlled.\n *\n * This prop is managed automatically when uncontrolled.\n */\n value?: string\n}\n\ntype MenubarMenuContext = {\n value: string\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n wasKeyboardTriggerOpenRef: Ref<boolean>\n}\n\nexport const [injectMenubarMenuContext, provideMenubarMenuContext]\n = createContext<MenubarMenuContext>('MenubarMenu')\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { MenuRoot } from '@/Menu'\nimport { injectMenubarRootContext } from './MenubarRoot.vue'\n\nconst props = defineProps<MenubarMenuProps>()\n\nconst value = useId(props.value)\nconst rootContext = injectMenubarRootContext()\nuseForwardExpose()\n\nconst triggerElement = ref<HTMLElement>()\nconst wasKeyboardTriggerOpenRef = ref(false)\n\nconst open = computed(() => rootContext.modelValue.value === value)\n\nwatch(open, () => {\n if (!open.value)\n wasKeyboardTriggerOpenRef.value = false\n})\n\nprovideMenubarMenuContext({\n value,\n triggerElement,\n triggerId: value,\n contentId: '',\n wasKeyboardTriggerOpenRef,\n})\n</script>\n\n<template>\n <MenuRoot\n :open=\"open\"\n :modal=\"false\"\n :dir=\"rootContext.dir.value\"\n @update:open=\"\n (value) => {\n // Menu only calls `@update:open` when dismissing so we\n // want to close our MenuBar based on the same events.\n if (!value) rootContext.onMenuClose();\n }\n \"\n >\n <slot />\n </MenuRoot>\n</template>\n"],"names":[],"mappings":";;;;;;;AAqBO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7D,cAAkC,aAAa;;;;;;;AAQnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAM,KAAK,CAAA;AAC/B,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAC7C,IAAiB,gBAAA,EAAA;AAEjB,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AACxC,IAAM,MAAA,yBAAA,GAA4B,IAAI,KAAK,CAAA;AAE3C,IAAA,MAAM,OAAO,QAAS,CAAA,MAAM,WAAY,CAAA,UAAA,CAAW,UAAU,KAAK,CAAA;AAElE,IAAA,KAAA,CAAM,MAAM,MAAM;AAChB,MAAA,IAAI,CAAC,IAAK,CAAA,KAAA;AACR,QAAA,yBAAA,CAA0B,KAAQ,GAAA,KAAA;AAAA,KACrC,CAAA;AAED,IAA0B,yBAAA,CAAA;AAAA,MACxB,KAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAW,EAAA,KAAA;AAAA,MACX,SAAW,EAAA,EAAA;AAAA,MACX;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarRoot.cjs","sources":["../../src/Menubar/MenubarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport { useCollection } from '@/Collection'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface MenubarRootProps {\n /** The controlled value of the menu to open. Can be used as `v-model`. */\n modelValue?: string\n /** The value of the menu that should be open when initially rendered. Use when you do not need to control the value state. */\n defaultValue?: string\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /** When `true`, keyboard navigation will loop from last item to first, and vice versa. */\n loop?: boolean\n}\nexport type MenubarRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: boolean]\n}\n\nexport interface MenubarRootContext {\n modelValue: Ref<string>\n dir: Ref<Direction>\n loop: Ref<boolean>\n onMenuOpen: (value: string) => void\n onMenuClose: () => void\n onMenuToggle: (value: string) => void\n}\n\nexport const [injectMenubarRootContext, provideMenubarRootContext]\n = createContext<MenubarRootContext>('MenubarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarRoot.cjs","sources":["../../src/Menubar/MenubarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport { useCollection } from '@/Collection'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface MenubarRootProps {\n /** The controlled value of the menu to open. Can be used as `v-model`. */\n modelValue?: string\n /** The value of the menu that should be open when initially rendered. Use when you do not need to control the value state. */\n defaultValue?: string\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /** When `true`, keyboard navigation will loop from last item to first, and vice versa. */\n loop?: boolean\n}\nexport type MenubarRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: boolean]\n}\n\nexport interface MenubarRootContext {\n modelValue: Ref<string>\n dir: Ref<Direction>\n loop: Ref<boolean>\n onMenuOpen: (value: string) => void\n onMenuClose: () => void\n onMenuToggle: (value: string) => void\n}\n\nexport const [injectMenubarRootContext, provideMenubarRootContext]\n = createContext<MenubarRootContext>('MenubarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { RovingFocusGroup } from '@/RovingFocus'\n\nconst props = withDefaults(defineProps<MenubarRootProps>(), {\n loop: false,\n})\nconst emit = defineEmits<MenubarRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { forwardRef } = useForwardExpose()\nconst { CollectionSlot } = useCollection({ key: 'Menubar', isProvider: true })\n\nconst modelValue = useVModel(props, 'modelValue', emit, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\n\nconst currentTabStopId = ref<string | null>(null)\n\nconst { dir: propDir, loop } = toRefs(props)\nconst dir = useDirection(propDir)\nprovideMenubarRootContext({\n modelValue,\n dir,\n loop,\n onMenuOpen: (value) => {\n modelValue.value = value\n currentTabStopId.value = value\n },\n onMenuClose: () => {\n modelValue.value = ''\n },\n onMenuToggle: (value) => {\n modelValue.value = modelValue.value ? '' : value\n // `openMenuOpen` and `onMenuToggle` are called exclusively so we\n // need to update the id in either case.\n currentTabStopId.value = value\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <RovingFocusGroup\n v-model:current-tab-stop-id=\"currentTabStopId\"\n orientation=\"horizontal\"\n :loop=\"loop\"\n :dir=\"dir\"\n as-child\n >\n <Primitive\n :ref=\"forwardRef\"\n role=\"menubar\"\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </RovingFocusGroup>\n </CollectionSlot>\n</template>\n"],"names":["createContext","useForwardExpose","useCollection","useVModel","ref","toRefs","useDirection"],"mappings":";;;;;;;;;;;AAkCO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7DA,mCAAkC,aAAa;;;;;;;;;;;AASnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AACxC,IAAM,MAAA,EAAE,gBAAmB,GAAAC,mCAAA,CAAc,EAAE,GAAK,EAAA,SAAA,EAAW,UAAY,EAAA,IAAA,EAAM,CAAA;AAE7E,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,IAAM,EAAA;AAAA,MACtD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmBC,QAAmB,IAAI,CAAA;AAEhD,IAAA,MAAM,EAAE,GAAK,EAAA,OAAA,EAAS,IAAK,EAAA,GAAIC,WAAO,KAAK,CAAA;AAC3C,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAChC,IAA0B,yBAAA,CAAA;AAAA,MACxB,UAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAU,KAAA;AACrB,QAAA,UAAA,CAAW,KAAQ,GAAA,KAAA;AACnB,QAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA,OAC3B;AAAA,MACA,aAAa,MAAM;AACjB,QAAA,UAAA,CAAW,KAAQ,GAAA,EAAA;AAAA,OACrB;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAW,UAAA,CAAA,KAAA,GAAQ,UAAW,CAAA,KAAA,GAAQ,EAAK,GAAA,KAAA;AAG3C,QAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA;AAC3B,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarRoot.js","sources":["../../src/Menubar/MenubarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport { useCollection } from '@/Collection'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface MenubarRootProps {\n /** The controlled value of the menu to open. Can be used as `v-model`. */\n modelValue?: string\n /** The value of the menu that should be open when initially rendered. Use when you do not need to control the value state. */\n defaultValue?: string\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /** When `true`, keyboard navigation will loop from last item to first, and vice versa. */\n loop?: boolean\n}\nexport type MenubarRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: boolean]\n}\n\nexport interface MenubarRootContext {\n modelValue: Ref<string>\n dir: Ref<Direction>\n loop: Ref<boolean>\n onMenuOpen: (value: string) => void\n onMenuClose: () => void\n onMenuToggle: (value: string) => void\n}\n\nexport const [injectMenubarRootContext, provideMenubarRootContext]\n = createContext<MenubarRootContext>('MenubarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarRoot.js","sources":["../../src/Menubar/MenubarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport { useCollection } from '@/Collection'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface MenubarRootProps {\n /** The controlled value of the menu to open. Can be used as `v-model`. */\n modelValue?: string\n /** The value of the menu that should be open when initially rendered. Use when you do not need to control the value state. */\n defaultValue?: string\n /**\n * The reading direction of the combobox when applicable.\n *\n * If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /** When `true`, keyboard navigation will loop from last item to first, and vice versa. */\n loop?: boolean\n}\nexport type MenubarRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: boolean]\n}\n\nexport interface MenubarRootContext {\n modelValue: Ref<string>\n dir: Ref<Direction>\n loop: Ref<boolean>\n onMenuOpen: (value: string) => void\n onMenuClose: () => void\n onMenuToggle: (value: string) => void\n}\n\nexport const [injectMenubarRootContext, provideMenubarRootContext]\n = createContext<MenubarRootContext>('MenubarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { RovingFocusGroup } from '@/RovingFocus'\n\nconst props = withDefaults(defineProps<MenubarRootProps>(), {\n loop: false,\n})\nconst emit = defineEmits<MenubarRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { forwardRef } = useForwardExpose()\nconst { CollectionSlot } = useCollection({ key: 'Menubar', isProvider: true })\n\nconst modelValue = useVModel(props, 'modelValue', emit, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\n\nconst currentTabStopId = ref<string | null>(null)\n\nconst { dir: propDir, loop } = toRefs(props)\nconst dir = useDirection(propDir)\nprovideMenubarRootContext({\n modelValue,\n dir,\n loop,\n onMenuOpen: (value) => {\n modelValue.value = value\n currentTabStopId.value = value\n },\n onMenuClose: () => {\n modelValue.value = ''\n },\n onMenuToggle: (value) => {\n modelValue.value = modelValue.value ? '' : value\n // `openMenuOpen` and `onMenuToggle` are called exclusively so we\n // need to update the id in either case.\n currentTabStopId.value = value\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <RovingFocusGroup\n v-model:current-tab-stop-id=\"currentTabStopId\"\n orientation=\"horizontal\"\n :loop=\"loop\"\n :dir=\"dir\"\n as-child\n >\n <Primitive\n :ref=\"forwardRef\"\n role=\"menubar\"\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </RovingFocusGroup>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":";;;;;;;;;AAkCO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7D,cAAkC,aAAa;;;;;;;;;;;AASnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AACxC,IAAM,MAAA,EAAE,gBAAmB,GAAA,aAAA,CAAc,EAAE,GAAK,EAAA,SAAA,EAAW,UAAY,EAAA,IAAA,EAAM,CAAA;AAE7E,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,IAAM,EAAA;AAAA,MACtD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmB,IAAmB,IAAI,CAAA;AAEhD,IAAA,MAAM,EAAE,GAAK,EAAA,OAAA,EAAS,IAAK,EAAA,GAAI,OAAO,KAAK,CAAA;AAC3C,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAChC,IAA0B,yBAAA,CAAA;AAAA,MACxB,UAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAU,KAAA;AACrB,QAAA,UAAA,CAAW,KAAQ,GAAA,KAAA;AACnB,QAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA,OAC3B;AAAA,MACA,aAAa,MAAM;AACjB,QAAA,UAAA,CAAW,KAAQ,GAAA,EAAA;AAAA,OACrB;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAW,UAAA,CAAA,KAAA,GAAQ,UAAW,CAAA,KAAA,GAAQ,EAAK,GAAA,KAAA;AAG3C,QAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA;AAC3B,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const vue = require('vue');
|
|
4
|
-
const Menu_MenuSub = require('../Menu/MenuSub.cjs');
|
|
5
4
|
const core = require('@vueuse/core');
|
|
5
|
+
const Menu_MenuSub = require('../Menu/MenuSub.cjs');
|
|
6
6
|
const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
|
|
7
7
|
|
|
8
8
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarSub.cjs","sources":["../../src/Menubar/MenubarSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"MenubarSub.cjs","sources":["../../src/Menubar/MenubarSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuSubEmits, MenuSubProps } from '@/Menu'\n\nexport type MenubarSubEmits = MenuSubEmits\nexport interface MenubarSubProps extends MenuSubProps {\n /** The open state of the submenu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { MenuSub } from '@/Menu'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<MenubarSubProps>(), {\n open: undefined,\n})\nconst emit = defineEmits<MenubarSubEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen ?? false,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n</script>\n\n<template>\n <MenuSub v-model:open=\"open\">\n <slot :open=\"open\" />\n </MenuSub>\n</template>\n"],"names":["useForwardExpose","useVModel"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAiBA,wCAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,YAAA,EAAc,MAAM,WAAe,IAAA,KAAA;AAAA,MACnC,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, createBlock, openBlock, unref, isRef, withCtx, renderSlot } from 'vue';
|
|
2
|
-
import { _ as _sfc_main$1 } from '../Menu/MenuSub.js';
|
|
3
2
|
import { useVModel } from '@vueuse/core';
|
|
3
|
+
import { _ as _sfc_main$1 } from '../Menu/MenuSub.js';
|
|
4
4
|
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
5
5
|
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarSub.js","sources":["../../src/Menubar/MenubarSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"MenubarSub.js","sources":["../../src/Menubar/MenubarSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuSubEmits, MenuSubProps } from '@/Menu'\n\nexport type MenubarSubEmits = MenuSubEmits\nexport interface MenubarSubProps extends MenuSubProps {\n /** The open state of the submenu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { MenuSub } from '@/Menu'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<MenubarSubProps>(), {\n open: undefined,\n})\nconst emit = defineEmits<MenubarSubEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen ?? false,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n</script>\n\n<template>\n <MenuSub v-model:open=\"open\">\n <slot :open=\"open\" />\n </MenuSub>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,YAAA,EAAc,MAAM,WAAe,IAAA,KAAA;AAAA,MACnC,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarTrigger.cjs","sources":["../../src/Menubar/MenubarTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useForwardExpose } from '@/shared'\n\nexport interface MenubarTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarTrigger.cjs","sources":["../../src/Menubar/MenubarTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useForwardExpose } from '@/shared'\n\nexport interface MenubarTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref } from 'vue'\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport { injectMenubarMenuContext } from './MenubarMenu.vue'\nimport { injectMenubarRootContext } from './MenubarRoot.vue'\n\nwithDefaults(defineProps<MenubarTriggerProps>(), {\n as: 'button',\n})\nconst rootContext = injectMenubarRootContext()\nconst menuContext = injectMenubarMenuContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\nconst { CollectionItem } = useCollection({ key: 'Menubar' })\n\nconst isFocused = ref(false)\n\nconst open = computed(() => rootContext.modelValue.value === menuContext.value)\n\nonMounted(() => {\n menuContext.triggerElement = triggerElement\n})\n</script>\n\n<template>\n <RovingFocusItem\n as-child\n :focusable=\"!disabled\"\n :tab-stop-id=\"menuContext.value\"\n >\n <CollectionItem>\n <MenuAnchor as-child>\n <Primitive\n :id=\"menuContext.triggerId\"\n :ref=\"forwardRef\"\n :as=\"as\"\n :type=\"as === 'button' ? 'button' : undefined\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"open\"\n :aria-controls=\"open ? menuContext.contentId : undefined\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :data-value=\"menuContext.value\"\n @pointerdown=\"(event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n rootContext.onMenuOpen(menuContext.value);\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (!open) event.preventDefault();\n }\n }\"\n @pointerenter=\"() => {\n const menubarOpen = Boolean(rootContext.modelValue.value);\n if (menubarOpen && !open) {\n rootContext.onMenuOpen(menuContext.value);\n triggerElement?.focus()\n }\n }\"\n @keydown.enter.space.arrow-down=\"(event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) rootContext.onMenuToggle(menuContext.value);\n if (event.key === 'ArrowDown') rootContext.onMenuOpen(menuContext.value);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key)) {\n menuContext.wasKeyboardTriggerOpenRef.value = true;\n event.preventDefault();\n }\n }\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n >\n <slot />\n </Primitive>\n </MenuAnchor>\n </CollectionItem>\n </RovingFocusItem>\n</template>\n"],"names":["injectMenubarRootContext","injectMenubarMenuContext","useForwardExpose","useCollection","ref","computed","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,cAAcA,4CAAyB,EAAA;AAC7C,IAAA,MAAM,cAAcC,4CAAyB,EAAA;AAE7C,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmBC,wCAAiB,EAAA;AACxE,IAAA,MAAM,EAAE,cAAe,EAAA,GAAIC,oCAAc,EAAE,GAAA,EAAK,WAAW,CAAA;AAE3D,IAAM,MAAA,SAAA,GAAYC,QAAI,KAAK,CAAA;AAE3B,IAAA,MAAM,OAAOC,YAAS,CAAA,MAAM,YAAY,UAAW,CAAA,KAAA,KAAU,YAAY,KAAK,CAAA;AAE9E,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAAA,KAC9B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenubarTrigger.js","sources":["../../src/Menubar/MenubarTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useForwardExpose } from '@/shared'\n\nexport interface MenubarTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport {
|
|
1
|
+
{"version":3,"file":"MenubarTrigger.js","sources":["../../src/Menubar/MenubarTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useForwardExpose } from '@/shared'\n\nexport interface MenubarTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref } from 'vue'\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport { injectMenubarMenuContext } from './MenubarMenu.vue'\nimport { injectMenubarRootContext } from './MenubarRoot.vue'\n\nwithDefaults(defineProps<MenubarTriggerProps>(), {\n as: 'button',\n})\nconst rootContext = injectMenubarRootContext()\nconst menuContext = injectMenubarMenuContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\nconst { CollectionItem } = useCollection({ key: 'Menubar' })\n\nconst isFocused = ref(false)\n\nconst open = computed(() => rootContext.modelValue.value === menuContext.value)\n\nonMounted(() => {\n menuContext.triggerElement = triggerElement\n})\n</script>\n\n<template>\n <RovingFocusItem\n as-child\n :focusable=\"!disabled\"\n :tab-stop-id=\"menuContext.value\"\n >\n <CollectionItem>\n <MenuAnchor as-child>\n <Primitive\n :id=\"menuContext.triggerId\"\n :ref=\"forwardRef\"\n :as=\"as\"\n :type=\"as === 'button' ? 'button' : undefined\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"open\"\n :aria-controls=\"open ? menuContext.contentId : undefined\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :data-value=\"menuContext.value\"\n @pointerdown=\"(event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n rootContext.onMenuOpen(menuContext.value);\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (!open) event.preventDefault();\n }\n }\"\n @pointerenter=\"() => {\n const menubarOpen = Boolean(rootContext.modelValue.value);\n if (menubarOpen && !open) {\n rootContext.onMenuOpen(menuContext.value);\n triggerElement?.focus()\n }\n }\"\n @keydown.enter.space.arrow-down=\"(event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) rootContext.onMenuToggle(menuContext.value);\n if (event.key === 'ArrowDown') rootContext.onMenuOpen(menuContext.value);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key)) {\n menuContext.wasKeyboardTriggerOpenRef.value = true;\n event.preventDefault();\n }\n }\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n >\n <slot />\n </Primitive>\n </MenuAnchor>\n </CollectionItem>\n </RovingFocusItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAC7C,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAE7C,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmB,gBAAiB,EAAA;AACxE,IAAA,MAAM,EAAE,cAAe,EAAA,GAAI,cAAc,EAAE,GAAA,EAAK,WAAW,CAAA;AAE3D,IAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA;AAE3B,IAAA,MAAM,OAAO,QAAS,CAAA,MAAM,YAAY,UAAW,CAAA,KAAA,KAAU,YAAY,KAAK,CAAA;AAE9E,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAAA,KAC9B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuContent.cjs","sources":["../../src/NavigationMenu/NavigationMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { NavigationMenuContentImplEmits, NavigationMenuContentImplProps } from './NavigationMenuContentImpl.vue'\n\nexport type NavigationMenuContentEmits = NavigationMenuContentImplEmits\n\nexport interface NavigationMenuContentProps extends NavigationMenuContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"NavigationMenuContent.cjs","sources":["../../src/NavigationMenu/NavigationMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { NavigationMenuContentImplEmits, NavigationMenuContentImplProps } from './NavigationMenuContentImpl.vue'\n\nexport type NavigationMenuContentEmits = NavigationMenuContentImplEmits\n\nexport interface NavigationMenuContentProps extends NavigationMenuContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isClient, reactiveOmit } from '@vueuse/shared'\nimport { computed } from 'vue'\nimport { Presence } from '@/Presence'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\nimport NavigationMenuContentImpl from './NavigationMenuContentImpl.vue'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport { getOpenState, whenMouse } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<NavigationMenuContentProps>()\nconst emits = defineEmits<NavigationMenuContentEmits>()\n\nconst forwarded = useForwardPropsEmits(reactiveOmit(props, 'forceMount'), emits)\nconst { forwardRef } = useForwardExpose()\n\nconst menuContext = injectNavigationMenuContext()\nconst itemContext = injectNavigationMenuItemContext()\n\nconst open = computed(() => itemContext.value === menuContext.modelValue.value)\n\n// We persist the last active content value as the viewport may be animating out\n// and we want the content to remain mounted for the lifecycle of the viewport.\nconst isLastActiveValue = computed(() => {\n if (menuContext.viewport.value) {\n if (!menuContext.modelValue.value && menuContext.previousValue.value)\n return (menuContext.previousValue.value === itemContext.value)\n }\n return false\n})\n</script>\n\n<template>\n <Teleport\n :to=\"isClient && menuContext.viewport.value ? menuContext.viewport.value : 'body'\"\n :disabled=\"isClient && menuContext.viewport.value ? !menuContext.viewport.value : true\"\n >\n <Presence\n v-slot=\"{ present }\"\n :present=\"forceMount || open || isLastActiveValue\"\n :force-mount=\"!menuContext.unmountOnHide.value\"\n >\n <NavigationMenuContentImpl\n :ref=\"forwardRef\"\n :data-state=\"getOpenState(open)\"\n :style=\"{\n pointerEvents: !open && menuContext.isRootMenu ? 'none' : undefined,\n }\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n :hidden=\"!present\"\n @pointerenter=\"menuContext.onContentEnter(itemContext.value)\"\n @pointerleave=\"whenMouse(() => menuContext.onContentLeave())($event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside=\"emits('focusOutside', $event)\"\n @interact-outside=\"emits('interactOutside', $event)\"\n >\n <slot />\n </NavigationMenuContentImpl>\n </Presence>\n </Teleport>\n</template>\n"],"names":["useForwardPropsEmits","reactiveOmit","useForwardExpose","injectNavigationMenuContext","injectNavigationMenuItemContext","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,YAAYA,gDAAqB,CAAAC,mBAAA,CAAa,KAAO,EAAA,YAAY,GAAG,KAAK,CAAA;AAC/E,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AAExC,IAAA,MAAM,cAAcC,6DAA4B,EAAA;AAChD,IAAA,MAAM,cAAcC,iEAAgC,EAAA;AAEpD,IAAA,MAAM,OAAOC,YAAS,CAAA,MAAM,YAAY,KAAU,KAAA,WAAA,CAAY,WAAW,KAAK,CAAA;AAI9E,IAAM,MAAA,iBAAA,GAAoBA,aAAS,MAAM;AACvC,MAAI,IAAA,WAAA,CAAY,SAAS,KAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAA,CAAY,UAAW,CAAA,KAAA,IAAS,YAAY,aAAc,CAAA,KAAA;AAC7D,UAAQ,OAAA,WAAA,CAAY,aAAc,CAAA,KAAA,KAAU,WAAY,CAAA,KAAA;AAAA;AAE5D,MAAO,OAAA,KAAA;AAAA,KACR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuContent.js","sources":["../../src/NavigationMenu/NavigationMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { NavigationMenuContentImplEmits, NavigationMenuContentImplProps } from './NavigationMenuContentImpl.vue'\n\nexport type NavigationMenuContentEmits = NavigationMenuContentImplEmits\n\nexport interface NavigationMenuContentProps extends NavigationMenuContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"NavigationMenuContent.js","sources":["../../src/NavigationMenu/NavigationMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { NavigationMenuContentImplEmits, NavigationMenuContentImplProps } from './NavigationMenuContentImpl.vue'\n\nexport type NavigationMenuContentEmits = NavigationMenuContentImplEmits\n\nexport interface NavigationMenuContentProps extends NavigationMenuContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isClient, reactiveOmit } from '@vueuse/shared'\nimport { computed } from 'vue'\nimport { Presence } from '@/Presence'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\nimport NavigationMenuContentImpl from './NavigationMenuContentImpl.vue'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport { getOpenState, whenMouse } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<NavigationMenuContentProps>()\nconst emits = defineEmits<NavigationMenuContentEmits>()\n\nconst forwarded = useForwardPropsEmits(reactiveOmit(props, 'forceMount'), emits)\nconst { forwardRef } = useForwardExpose()\n\nconst menuContext = injectNavigationMenuContext()\nconst itemContext = injectNavigationMenuItemContext()\n\nconst open = computed(() => itemContext.value === menuContext.modelValue.value)\n\n// We persist the last active content value as the viewport may be animating out\n// and we want the content to remain mounted for the lifecycle of the viewport.\nconst isLastActiveValue = computed(() => {\n if (menuContext.viewport.value) {\n if (!menuContext.modelValue.value && menuContext.previousValue.value)\n return (menuContext.previousValue.value === itemContext.value)\n }\n return false\n})\n</script>\n\n<template>\n <Teleport\n :to=\"isClient && menuContext.viewport.value ? menuContext.viewport.value : 'body'\"\n :disabled=\"isClient && menuContext.viewport.value ? !menuContext.viewport.value : true\"\n >\n <Presence\n v-slot=\"{ present }\"\n :present=\"forceMount || open || isLastActiveValue\"\n :force-mount=\"!menuContext.unmountOnHide.value\"\n >\n <NavigationMenuContentImpl\n :ref=\"forwardRef\"\n :data-state=\"getOpenState(open)\"\n :style=\"{\n pointerEvents: !open && menuContext.isRootMenu ? 'none' : undefined,\n }\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n :hidden=\"!present\"\n @pointerenter=\"menuContext.onContentEnter(itemContext.value)\"\n @pointerleave=\"whenMouse(() => menuContext.onContentLeave())($event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside=\"emits('focusOutside', $event)\"\n @interact-outside=\"emits('interactOutside', $event)\"\n >\n <slot />\n </NavigationMenuContentImpl>\n </Presence>\n </Teleport>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,YAAY,oBAAqB,CAAA,YAAA,CAAa,KAAO,EAAA,YAAY,GAAG,KAAK,CAAA;AAC/E,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AAExC,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAChD,IAAA,MAAM,cAAc,+BAAgC,EAAA;AAEpD,IAAA,MAAM,OAAO,QAAS,CAAA,MAAM,YAAY,KAAU,KAAA,WAAA,CAAY,WAAW,KAAK,CAAA;AAI9E,IAAM,MAAA,iBAAA,GAAoB,SAAS,MAAM;AACvC,MAAI,IAAA,WAAA,CAAY,SAAS,KAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAA,CAAY,UAAW,CAAA,KAAA,IAAS,YAAY,aAAc,CAAA,KAAA;AAC7D,UAAQ,OAAA,WAAA,CAAY,aAAc,CAAA,KAAA,KAAU,WAAY,CAAA,KAAA;AAAA;AAE5D,MAAO,OAAA,KAAA;AAAA,KACR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuContentImpl.cjs","sources":["../../src/NavigationMenu/NavigationMenuContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n DismissableLayerEmits,\n DismissableLayerProps,\n FocusOutsideEvent,\n} from '@/DismissableLayer'\nimport type { PointerDownOutsideEvent } from '@/DismissableLayer/utils'\nimport { useCollection } from '@/Collection'\n\ntype MotionAttribute = 'to-start' | 'to-end' | 'from-start' | 'from-end'\n\nexport type NavigationMenuContentImplEmits = DismissableLayerEmits\n\nexport interface NavigationMenuContentImplProps extends DismissableLayerProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getActiveElement, useArrowNavigation, useForwardExpose } from '@/shared'\nimport { computed, ref, watchEffect } from 'vue'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n EVENT_ROOT_CONTENT_DISMISS,\n focusFirst,\n getOpenState,\n getTabbableCandidates,\n makeContentId,\n makeTriggerId,\n} from './utils'\n\nconst props = defineProps<NavigationMenuContentImplProps>()\nconst emits = defineEmits<NavigationMenuContentImplEmits>()\n\nconst { getItems } = useCollection({ key: 'NavigationMenu' })\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst menuContext = injectNavigationMenuContext()\nconst itemContext = injectNavigationMenuItemContext()\n\nconst triggerId = makeTriggerId(menuContext.baseId, itemContext.value)\nconst contentId = makeContentId(menuContext.baseId, itemContext.value)\n\nconst prevMotionAttributeRef = ref<MotionAttribute | null>(null)\nconst motionAttribute = computed(() => {\n const values = getItems().map(i => i.ref.id.split('trigger-')[1])\n if (menuContext.dir.value === 'rtl')\n values.reverse()\n const index = values.indexOf(menuContext.modelValue.value)\n const prevIndex = values.indexOf(menuContext.previousValue.value)\n const isSelected = itemContext.value === menuContext.modelValue.value\n const wasSelected = prevIndex === values.indexOf(itemContext.value)\n\n // We only want to update selected and the last selected content\n // this avoids animations being interrupted outside of that range\n if (!isSelected && !wasSelected)\n return prevMotionAttributeRef.value\n\n const attribute = (() => {\n // Don't provide a direction on the initial open\n if (index !== prevIndex) {\n // If we're moving to this item from another\n if (isSelected && prevIndex !== -1)\n return index > prevIndex ? 'from-end' : 'from-start'\n // If we're leaving this item for another\n if (wasSelected && index !== -1)\n return index > prevIndex ? 'to-start' : 'to-end'\n }\n // Otherwise we're entering from closed or leaving the list\n // entirely and should not animate in any direction\n return null\n })()\n\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n prevMotionAttributeRef.value = attribute\n return attribute\n})\n\nfunction handleFocusOutside(ev: FocusOutsideEvent) {\n emits('focusOutside', ev)\n emits('interactOutside', ev)\n\n const target = ev.detail.originalEvent.target as HTMLElement\n if (target.hasAttribute('data-navigation-menu-trigger'))\n ev.preventDefault()\n\n if (!ev.defaultPrevented) {\n itemContext.onContentFocusOutside()\n\n const target = ev.target as HTMLElement\n // Only dismiss content when focus moves outside of the menu\n if (menuContext.rootNavigationMenu?.value?.contains(target))\n ev.preventDefault()\n }\n}\n\nfunction handlePointerDownOutside(ev: PointerDownOutsideEvent) {\n emits('pointerDownOutside', ev)\n\n if (!ev.defaultPrevented) {\n const target = ev.target as HTMLElement\n const isTrigger = getItems().some(i =>\n i.ref.contains(target),\n )\n const isRootViewport\n = menuContext.isRootMenu && menuContext.viewport.value?.contains(target)\n\n if (isTrigger || isRootViewport || !menuContext.isRootMenu)\n ev.preventDefault()\n }\n}\n\nwatchEffect((cleanupFn) => {\n const content = currentElement.value\n if (menuContext.isRootMenu && content) {\n // Bubble dismiss to the root content node and focus its trigger\n const handleClose = () => {\n menuContext.onItemDismiss()\n itemContext.onRootContentClose()\n if (content.contains(getActiveElement()))\n itemContext.triggerRef.value?.focus()\n }\n content.addEventListener(EVENT_ROOT_CONTENT_DISMISS, handleClose)\n\n cleanupFn(() =>\n content.removeEventListener(EVENT_ROOT_CONTENT_DISMISS, handleClose),\n )\n }\n})\n\nfunction handleEscapeKeyDown(ev: KeyboardEvent) {\n emits('escapeKeyDown', ev)\n\n if (!ev.defaultPrevented) {\n menuContext.onItemDismiss()\n itemContext.triggerRef?.value?.focus()\n itemContext.wasEscapeCloseRef.value = true\n }\n}\n\nfunction handleKeydown(ev: KeyboardEvent) {\n // prevent parent menu triggering keydown event\n if ((ev.target as HTMLElement).closest('[data-reka-navigation-menu]') !== menuContext.rootNavigationMenu.value)\n return\n\n const isMetaKey = ev.altKey || ev.ctrlKey || ev.metaKey\n const isTabKey = ev.key === 'Tab' && !isMetaKey\n const candidates = getTabbableCandidates(ev.currentTarget as HTMLElement)\n\n if (isTabKey) {\n const focusedElement = getActiveElement()\n const index = candidates.findIndex(\n candidate => candidate === focusedElement,\n )\n const isMovingBackwards = ev.shiftKey\n const nextCandidates = isMovingBackwards\n ? candidates.slice(0, index).reverse()\n : candidates.slice(index + 1, candidates.length)\n\n if (focusFirst(nextCandidates)) {\n // prevent browser tab keydown because we've handled focus\n ev.preventDefault()\n }\n else {\n // If we can't focus that means we're at the edges\n // so focus the proxy and let browser handle\n // tab/shift+tab keypress on the proxy instead\n itemContext.focusProxyRef.value?.focus()\n return\n }\n }\n\n const newSelectedElement = useArrowNavigation(\n ev,\n getActiveElement() as HTMLElement,\n undefined,\n { itemsArray: candidates, loop: false, enableIgnoredElement: true },\n )\n newSelectedElement?.focus()\n}\n\nfunction handleDismiss() {\n const rootContentDismissEvent = new Event(EVENT_ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true,\n })\n currentElement.value?.dispatchEvent(rootContentDismissEvent)\n}\n</script>\n\n<template>\n <DismissableLayer\n :id=\"contentId\"\n :ref=\"forwardRef\"\n :aria-labelledby=\"triggerId\"\n :data-motion=\"motionAttribute\"\n :data-state=\"getOpenState(menuContext.modelValue.value === itemContext.value)\"\n :data-orientation=\"menuContext.orientation\"\n v-bind=\"props\"\n @keydown=\"handleKeydown\"\n @escape-key-down=\"handleEscapeKeyDown\"\n @pointer-down-outside=\"handlePointerDownOutside\"\n @focus-outside=\"handleFocusOutside\"\n @dismiss=\"handleDismiss\"\n >\n <slot />\n </DismissableLayer>\n</template>\n"],"names":["useCollection","useForwardExpose","injectNavigationMenuContext","injectNavigationMenuItemContext","makeTriggerId","makeContentId","ref","computed","target","watchEffect","getActiveElement","EVENT_ROOT_CONTENT_DISMISS","getTabbableCandidates","focusFirst","useArrowNavigation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NavigationMenuContentImpl.cjs","sources":["../../src/NavigationMenu/NavigationMenuContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n DismissableLayerEmits,\n DismissableLayerProps,\n FocusOutsideEvent,\n} from '@/DismissableLayer'\nimport type { PointerDownOutsideEvent } from '@/DismissableLayer/utils'\nimport { useCollection } from '@/Collection'\n\ntype MotionAttribute = 'to-start' | 'to-end' | 'from-start' | 'from-end'\n\nexport type NavigationMenuContentImplEmits = DismissableLayerEmits\n\nexport interface NavigationMenuContentImplProps extends DismissableLayerProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watchEffect } from 'vue'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getActiveElement, useArrowNavigation, useForwardExpose } from '@/shared'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n EVENT_ROOT_CONTENT_DISMISS,\n focusFirst,\n getOpenState,\n getTabbableCandidates,\n makeContentId,\n makeTriggerId,\n} from './utils'\n\nconst props = defineProps<NavigationMenuContentImplProps>()\nconst emits = defineEmits<NavigationMenuContentImplEmits>()\n\nconst { getItems } = useCollection({ key: 'NavigationMenu' })\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst menuContext = injectNavigationMenuContext()\nconst itemContext = injectNavigationMenuItemContext()\n\nconst triggerId = makeTriggerId(menuContext.baseId, itemContext.value)\nconst contentId = makeContentId(menuContext.baseId, itemContext.value)\n\nconst prevMotionAttributeRef = ref<MotionAttribute | null>(null)\nconst motionAttribute = computed(() => {\n const values = getItems().map(i => i.ref.id.split('trigger-')[1])\n if (menuContext.dir.value === 'rtl')\n values.reverse()\n const index = values.indexOf(menuContext.modelValue.value)\n const prevIndex = values.indexOf(menuContext.previousValue.value)\n const isSelected = itemContext.value === menuContext.modelValue.value\n const wasSelected = prevIndex === values.indexOf(itemContext.value)\n\n // We only want to update selected and the last selected content\n // this avoids animations being interrupted outside of that range\n if (!isSelected && !wasSelected)\n return prevMotionAttributeRef.value\n\n const attribute = (() => {\n // Don't provide a direction on the initial open\n if (index !== prevIndex) {\n // If we're moving to this item from another\n if (isSelected && prevIndex !== -1)\n return index > prevIndex ? 'from-end' : 'from-start'\n // If we're leaving this item for another\n if (wasSelected && index !== -1)\n return index > prevIndex ? 'to-start' : 'to-end'\n }\n // Otherwise we're entering from closed or leaving the list\n // entirely and should not animate in any direction\n return null\n })()\n\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n prevMotionAttributeRef.value = attribute\n return attribute\n})\n\nfunction handleFocusOutside(ev: FocusOutsideEvent) {\n emits('focusOutside', ev)\n emits('interactOutside', ev)\n\n const target = ev.detail.originalEvent.target as HTMLElement\n if (target.hasAttribute('data-navigation-menu-trigger'))\n ev.preventDefault()\n\n if (!ev.defaultPrevented) {\n itemContext.onContentFocusOutside()\n\n const target = ev.target as HTMLElement\n // Only dismiss content when focus moves outside of the menu\n if (menuContext.rootNavigationMenu?.value?.contains(target))\n ev.preventDefault()\n }\n}\n\nfunction handlePointerDownOutside(ev: PointerDownOutsideEvent) {\n emits('pointerDownOutside', ev)\n\n if (!ev.defaultPrevented) {\n const target = ev.target as HTMLElement\n const isTrigger = getItems().some(i =>\n i.ref.contains(target),\n )\n const isRootViewport\n = menuContext.isRootMenu && menuContext.viewport.value?.contains(target)\n\n if (isTrigger || isRootViewport || !menuContext.isRootMenu)\n ev.preventDefault()\n }\n}\n\nwatchEffect((cleanupFn) => {\n const content = currentElement.value\n if (menuContext.isRootMenu && content) {\n // Bubble dismiss to the root content node and focus its trigger\n const handleClose = () => {\n menuContext.onItemDismiss()\n itemContext.onRootContentClose()\n if (content.contains(getActiveElement()))\n itemContext.triggerRef.value?.focus()\n }\n content.addEventListener(EVENT_ROOT_CONTENT_DISMISS, handleClose)\n\n cleanupFn(() =>\n content.removeEventListener(EVENT_ROOT_CONTENT_DISMISS, handleClose),\n )\n }\n})\n\nfunction handleEscapeKeyDown(ev: KeyboardEvent) {\n emits('escapeKeyDown', ev)\n\n if (!ev.defaultPrevented) {\n menuContext.onItemDismiss()\n itemContext.triggerRef?.value?.focus()\n itemContext.wasEscapeCloseRef.value = true\n }\n}\n\nfunction handleKeydown(ev: KeyboardEvent) {\n // prevent parent menu triggering keydown event\n if ((ev.target as HTMLElement).closest('[data-reka-navigation-menu]') !== menuContext.rootNavigationMenu.value)\n return\n\n const isMetaKey = ev.altKey || ev.ctrlKey || ev.metaKey\n const isTabKey = ev.key === 'Tab' && !isMetaKey\n const candidates = getTabbableCandidates(ev.currentTarget as HTMLElement)\n\n if (isTabKey) {\n const focusedElement = getActiveElement()\n const index = candidates.findIndex(\n candidate => candidate === focusedElement,\n )\n const isMovingBackwards = ev.shiftKey\n const nextCandidates = isMovingBackwards\n ? candidates.slice(0, index).reverse()\n : candidates.slice(index + 1, candidates.length)\n\n if (focusFirst(nextCandidates)) {\n // prevent browser tab keydown because we've handled focus\n ev.preventDefault()\n }\n else {\n // If we can't focus that means we're at the edges\n // so focus the proxy and let browser handle\n // tab/shift+tab keypress on the proxy instead\n itemContext.focusProxyRef.value?.focus()\n return\n }\n }\n\n const newSelectedElement = useArrowNavigation(\n ev,\n getActiveElement() as HTMLElement,\n undefined,\n { itemsArray: candidates, loop: false, enableIgnoredElement: true },\n )\n newSelectedElement?.focus()\n}\n\nfunction handleDismiss() {\n const rootContentDismissEvent = new Event(EVENT_ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true,\n })\n currentElement.value?.dispatchEvent(rootContentDismissEvent)\n}\n</script>\n\n<template>\n <DismissableLayer\n :id=\"contentId\"\n :ref=\"forwardRef\"\n :aria-labelledby=\"triggerId\"\n :data-motion=\"motionAttribute\"\n :data-state=\"getOpenState(menuContext.modelValue.value === itemContext.value)\"\n :data-orientation=\"menuContext.orientation\"\n v-bind=\"props\"\n @keydown=\"handleKeydown\"\n @escape-key-down=\"handleEscapeKeyDown\"\n @pointer-down-outside=\"handlePointerDownOutside\"\n @focus-outside=\"handleFocusOutside\"\n @dismiss=\"handleDismiss\"\n >\n <slot />\n </DismissableLayer>\n</template>\n"],"names":["useCollection","useForwardExpose","injectNavigationMenuContext","injectNavigationMenuItemContext","makeTriggerId","makeContentId","ref","computed","target","watchEffect","getActiveElement","EVENT_ROOT_CONTENT_DISMISS","getTabbableCandidates","focusFirst","useArrowNavigation"],"mappings":"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"}
|