reka-ui 2.1.0 → 2.2.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/README.md +1 -1
- package/dist/Accordion/AccordionContent.cjs +2 -1
- package/dist/Accordion/AccordionContent.cjs.map +1 -1
- package/dist/Accordion/AccordionContent.js +3 -2
- package/dist/Accordion/AccordionContent.js.map +1 -1
- package/dist/Accordion/AccordionHeader.js +1 -1
- package/dist/Accordion/AccordionItem.cjs +2 -2
- package/dist/Accordion/AccordionItem.cjs.map +1 -1
- package/dist/Accordion/AccordionItem.js +3 -3
- package/dist/Accordion/AccordionItem.js.map +1 -1
- package/dist/Accordion/AccordionRoot.cjs +1 -1
- package/dist/Accordion/AccordionRoot.js +2 -2
- package/dist/Accordion/AccordionTrigger.cjs +2 -2
- package/dist/Accordion/AccordionTrigger.cjs.map +1 -1
- package/dist/Accordion/AccordionTrigger.js +3 -3
- package/dist/Accordion/AccordionTrigger.js.map +1 -1
- package/dist/AlertDialog/AlertDialogAction.js +1 -1
- package/dist/AlertDialog/AlertDialogCancel.js +1 -1
- package/dist/AlertDialog/AlertDialogContent.cjs +1 -1
- package/dist/AlertDialog/AlertDialogContent.js +2 -2
- package/dist/AlertDialog/AlertDialogDescription.js +1 -1
- package/dist/AlertDialog/AlertDialogOverlay.js +1 -1
- package/dist/AlertDialog/AlertDialogPortal.js +1 -1
- package/dist/AlertDialog/AlertDialogRoot.js +1 -1
- package/dist/AlertDialog/AlertDialogTitle.js +1 -1
- package/dist/AlertDialog/AlertDialogTrigger.js +1 -1
- package/dist/AspectRatio/AspectRatio.js +1 -1
- package/dist/Avatar/AvatarFallback.js +1 -1
- package/dist/Avatar/AvatarImage.js +1 -1
- package/dist/Avatar/AvatarRoot.cjs +1 -1
- package/dist/Avatar/AvatarRoot.js +2 -2
- package/dist/Calendar/CalendarCell.cjs +2 -2
- package/dist/Calendar/CalendarCell.js +3 -3
- package/dist/Calendar/CalendarCellTrigger.cjs +74 -48
- package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.js +75 -49
- package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
- package/dist/Calendar/CalendarGrid.cjs +2 -2
- package/dist/Calendar/CalendarGrid.cjs.map +1 -1
- package/dist/Calendar/CalendarGrid.js +3 -3
- package/dist/Calendar/CalendarGrid.js.map +1 -1
- package/dist/Calendar/CalendarGridBody.js +1 -1
- package/dist/Calendar/CalendarGridHead.js +1 -1
- package/dist/Calendar/CalendarGridRow.js +1 -1
- package/dist/Calendar/CalendarHeadCell.js +1 -1
- package/dist/Calendar/CalendarHeader.js +1 -1
- package/dist/Calendar/CalendarHeading.cjs +1 -1
- package/dist/Calendar/CalendarHeading.js +2 -2
- package/dist/Calendar/CalendarNext.cjs +3 -3
- package/dist/Calendar/CalendarNext.js +4 -4
- package/dist/Calendar/CalendarPrev.cjs +3 -3
- package/dist/Calendar/CalendarPrev.js +4 -4
- package/dist/Calendar/CalendarRoot.cjs +14 -12
- package/dist/Calendar/CalendarRoot.cjs.map +1 -1
- package/dist/Calendar/CalendarRoot.js +15 -13
- package/dist/Calendar/CalendarRoot.js.map +1 -1
- package/dist/Calendar/useCalendar.js +1 -1
- package/dist/Calendar/utils.cjs +9 -0
- package/dist/Calendar/utils.cjs.map +1 -0
- package/dist/Calendar/utils.js +7 -0
- package/dist/Calendar/utils.js.map +1 -0
- package/dist/Checkbox/CheckboxGroupRoot.cjs +3 -3
- package/dist/Checkbox/CheckboxGroupRoot.js +4 -4
- package/dist/Checkbox/CheckboxIndicator.cjs +1 -1
- package/dist/Checkbox/CheckboxIndicator.js +2 -2
- package/dist/Checkbox/CheckboxRoot.cjs +8 -8
- package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxRoot.js +10 -10
- package/dist/Checkbox/CheckboxRoot.js.map +1 -1
- package/dist/Collapsible/CollapsibleContent.cjs +4 -4
- package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
- package/dist/Collapsible/CollapsibleContent.js +5 -5
- package/dist/Collapsible/CollapsibleContent.js.map +1 -1
- package/dist/Collapsible/CollapsibleRoot.cjs +4 -4
- package/dist/Collapsible/CollapsibleRoot.js +5 -5
- package/dist/Collapsible/CollapsibleTrigger.cjs +2 -2
- package/dist/Collapsible/CollapsibleTrigger.js +3 -3
- package/dist/Combobox/ComboboxAnchor.js +1 -1
- package/dist/Combobox/ComboboxArrow.js +1 -1
- package/dist/Combobox/ComboboxCancel.cjs +1 -1
- package/dist/Combobox/ComboboxCancel.js +2 -2
- package/dist/Combobox/ComboboxContent.cjs +1 -1
- package/dist/Combobox/ComboboxContent.cjs.map +1 -1
- package/dist/Combobox/ComboboxContent.js +2 -2
- package/dist/Combobox/ComboboxContent.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs +1 -1
- package/dist/Combobox/ComboboxContentImpl.js +2 -2
- package/dist/Combobox/ComboboxEmpty.js +1 -1
- package/dist/Combobox/ComboboxGroup.cjs +3 -3
- package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
- package/dist/Combobox/ComboboxGroup.js +4 -4
- package/dist/Combobox/ComboboxGroup.js.map +1 -1
- package/dist/Combobox/ComboboxInput.cjs +1 -1
- package/dist/Combobox/ComboboxInput.js +2 -2
- package/dist/Combobox/ComboboxItem.cjs +2 -5
- package/dist/Combobox/ComboboxItem.cjs.map +1 -1
- package/dist/Combobox/ComboboxItem.js +4 -6
- package/dist/Combobox/ComboboxItem.js.map +1 -1
- package/dist/Combobox/ComboboxItemIndicator.js +1 -1
- package/dist/Combobox/ComboboxLabel.cjs +1 -1
- package/dist/Combobox/ComboboxLabel.cjs.map +1 -1
- package/dist/Combobox/ComboboxLabel.js +2 -2
- package/dist/Combobox/ComboboxLabel.js.map +1 -1
- package/dist/Combobox/ComboboxPortal.js +1 -1
- package/dist/Combobox/ComboboxRoot.cjs +7 -7
- package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
- package/dist/Combobox/ComboboxRoot.js +8 -8
- package/dist/Combobox/ComboboxRoot.js.map +1 -1
- package/dist/Combobox/ComboboxSeparator.js +1 -1
- package/dist/Combobox/ComboboxTrigger.cjs +3 -3
- package/dist/Combobox/ComboboxTrigger.js +4 -4
- package/dist/Combobox/ComboboxViewport.cjs +1 -1
- package/dist/Combobox/ComboboxViewport.js +2 -2
- package/dist/Combobox/ComboboxVirtualizer.js +1 -1
- package/dist/ConfigProvider/ConfigProvider.cjs +2 -2
- package/dist/ConfigProvider/ConfigProvider.js +2 -2
- package/dist/ContextMenu/ContextMenuArrow.js +1 -1
- package/dist/ContextMenu/ContextMenuCheckboxItem.js +1 -1
- package/dist/ContextMenu/ContextMenuContent.js +1 -1
- package/dist/ContextMenu/ContextMenuGroup.js +1 -1
- package/dist/ContextMenu/ContextMenuItem.js +1 -1
- package/dist/ContextMenu/ContextMenuItemIndicator.js +1 -1
- package/dist/ContextMenu/ContextMenuLabel.js +1 -1
- package/dist/ContextMenu/ContextMenuPortal.js +1 -1
- package/dist/ContextMenu/ContextMenuRadioGroup.js +1 -1
- package/dist/ContextMenu/ContextMenuRadioItem.js +1 -1
- package/dist/ContextMenu/ContextMenuRoot.cjs +1 -1
- package/dist/ContextMenu/ContextMenuRoot.js +2 -2
- package/dist/ContextMenu/ContextMenuSeparator.js +1 -1
- package/dist/ContextMenu/ContextMenuSub.cjs +2 -2
- package/dist/ContextMenu/ContextMenuSub.js +3 -3
- package/dist/ContextMenu/ContextMenuSubContent.js +1 -1
- package/dist/ContextMenu/ContextMenuSubTrigger.js +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.cjs +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.js +2 -2
- package/dist/DateField/DateFieldInput.cjs +5 -5
- package/dist/DateField/DateFieldInput.js +6 -6
- package/dist/DateField/DateFieldRoot.cjs +10 -10
- package/dist/DateField/DateFieldRoot.js +11 -11
- package/dist/DatePicker/DatePickerArrow.js +1 -1
- package/dist/DatePicker/DatePickerCalendar.js +1 -1
- package/dist/DatePicker/DatePickerCell.js +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.js +1 -1
- package/dist/DatePicker/DatePickerClose.js +1 -1
- package/dist/DatePicker/DatePickerContent.js +1 -1
- package/dist/DatePicker/DatePickerField.js +1 -1
- package/dist/DatePicker/DatePickerGrid.js +1 -1
- package/dist/DatePicker/DatePickerGridBody.js +1 -1
- package/dist/DatePicker/DatePickerGridHead.js +1 -1
- package/dist/DatePicker/DatePickerGridRow.js +1 -1
- package/dist/DatePicker/DatePickerHeadCell.js +1 -1
- package/dist/DatePicker/DatePickerHeader.js +1 -1
- package/dist/DatePicker/DatePickerHeading.js +1 -1
- package/dist/DatePicker/DatePickerInput.js +1 -1
- package/dist/DatePicker/DatePickerNext.js +1 -1
- package/dist/DatePicker/DatePickerPrev.js +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +11 -11
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +12 -12
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DatePicker/DatePickerTrigger.js +1 -1
- package/dist/DateRangeField/DateRangeFieldInput.cjs +5 -5
- package/dist/DateRangeField/DateRangeFieldInput.js +6 -6
- package/dist/DateRangeField/DateRangeFieldRoot.cjs +22 -18
- package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.js +23 -19
- package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerAnchor.js +1 -1
- package/dist/DateRangePicker/DateRangePickerArrow.js +1 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.js +1 -1
- package/dist/DateRangePicker/DateRangePickerCell.js +1 -1
- package/dist/DateRangePicker/DateRangePickerCellTrigger.js +1 -1
- package/dist/DateRangePicker/DateRangePickerClose.js +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.js +1 -1
- package/dist/DateRangePicker/DateRangePickerField.js +1 -1
- package/dist/DateRangePicker/DateRangePickerGrid.js +1 -1
- package/dist/DateRangePicker/DateRangePickerGridBody.js +1 -1
- package/dist/DateRangePicker/DateRangePickerGridHead.js +1 -1
- package/dist/DateRangePicker/DateRangePickerGridRow.js +1 -1
- package/dist/DateRangePicker/DateRangePickerHeadCell.js +1 -1
- package/dist/DateRangePicker/DateRangePickerHeader.js +1 -1
- package/dist/DateRangePicker/DateRangePickerHeading.js +1 -1
- package/dist/DateRangePicker/DateRangePickerInput.js +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.js +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.js +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.cjs +11 -11
- package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js +12 -12
- package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerTrigger.js +1 -1
- package/dist/Dialog/DialogClose.cjs +1 -1
- package/dist/Dialog/DialogClose.js +2 -2
- package/dist/Dialog/DialogContent.js +1 -1
- package/dist/Dialog/DialogContentImpl.cjs +2 -2
- package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
- package/dist/Dialog/DialogContentImpl.js +3 -3
- package/dist/Dialog/DialogContentImpl.js.map +1 -1
- package/dist/Dialog/DialogContentModal.js +1 -1
- package/dist/Dialog/DialogContentNonModal.js +1 -1
- package/dist/Dialog/DialogDescription.js +1 -1
- package/dist/Dialog/DialogOverlay.js +1 -1
- package/dist/Dialog/DialogOverlayImpl.js +1 -1
- package/dist/Dialog/DialogPortal.js +1 -1
- package/dist/Dialog/DialogRoot.cjs +2 -2
- package/dist/Dialog/DialogRoot.js +2 -2
- package/dist/Dialog/DialogTitle.js +1 -1
- package/dist/Dialog/DialogTrigger.cjs +3 -3
- package/dist/Dialog/DialogTrigger.cjs.map +1 -1
- package/dist/Dialog/DialogTrigger.js +4 -4
- package/dist/Dialog/DialogTrigger.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.cjs +1 -1
- package/dist/DismissableLayer/DismissableLayer.js +2 -2
- package/dist/DismissableLayer/DismissableLayerBranch.js +1 -1
- package/dist/DismissableLayer/utils.cjs +1 -0
- package/dist/DismissableLayer/utils.cjs.map +1 -1
- package/dist/DismissableLayer/utils.js +1 -0
- package/dist/DismissableLayer/utils.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuArrow.js +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.js +2 -2
- package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuGroup.js +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
- package/dist/DropdownMenu/DropdownMenuItemIndicator.js +1 -1
- package/dist/DropdownMenu/DropdownMenuLabel.js +1 -1
- package/dist/DropdownMenu/DropdownMenuPortal.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.cjs +3 -3
- package/dist/DropdownMenu/DropdownMenuRoot.js +4 -4
- package/dist/DropdownMenu/DropdownMenuSeparator.js +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.cjs +2 -2
- package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.js +3 -3
- package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubContent.js +1 -1
- package/dist/DropdownMenu/DropdownMenuSubTrigger.js +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.cjs +4 -4
- package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.js +5 -5
- package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
- package/dist/Editable/EditableArea.cjs +7 -7
- package/dist/Editable/EditableArea.js +8 -8
- package/dist/Editable/EditableCancelTrigger.cjs +4 -4
- package/dist/Editable/EditableCancelTrigger.js +5 -5
- package/dist/Editable/EditableEditTrigger.cjs +4 -4
- package/dist/Editable/EditableEditTrigger.js +5 -5
- package/dist/Editable/EditableInput.cjs +4 -4
- package/dist/Editable/EditableInput.js +5 -5
- package/dist/Editable/EditablePreview.cjs +4 -4
- package/dist/Editable/EditablePreview.js +5 -5
- package/dist/Editable/EditableRoot.cjs +2 -2
- package/dist/Editable/EditableRoot.js +3 -3
- package/dist/Editable/EditableSubmitTrigger.cjs +4 -4
- package/dist/Editable/EditableSubmitTrigger.js +5 -5
- package/dist/FocusScope/FocusScope.js +1 -1
- package/dist/FocusScope/utils.cjs +1 -1
- package/dist/FocusScope/utils.cjs.map +1 -1
- package/dist/FocusScope/utils.js +1 -1
- package/dist/FocusScope/utils.js.map +1 -1
- package/dist/HoverCard/HoverCardArrow.js +1 -1
- package/dist/HoverCard/HoverCardContent.js +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs +2 -2
- package/dist/HoverCard/HoverCardContentImpl.js +3 -3
- package/dist/HoverCard/HoverCardPortal.js +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs +3 -3
- package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
- package/dist/HoverCard/HoverCardRoot.js +4 -4
- package/dist/HoverCard/HoverCardRoot.js.map +1 -1
- package/dist/HoverCard/HoverCardTrigger.js +1 -1
- package/dist/HoverCard/utils.cjs +1 -1
- package/dist/HoverCard/utils.cjs.map +1 -1
- package/dist/HoverCard/utils.js +1 -1
- package/dist/HoverCard/utils.js.map +1 -1
- package/dist/Label/Label.js +1 -1
- package/dist/Listbox/ListboxContent.cjs +2 -2
- package/dist/Listbox/ListboxContent.js +3 -3
- package/dist/Listbox/ListboxFilter.cjs +8 -5
- package/dist/Listbox/ListboxFilter.cjs.map +1 -1
- package/dist/Listbox/ListboxFilter.js +9 -6
- package/dist/Listbox/ListboxFilter.js.map +1 -1
- package/dist/Listbox/ListboxGroup.cjs +2 -2
- package/dist/Listbox/ListboxGroup.cjs.map +1 -1
- package/dist/Listbox/ListboxGroup.js +3 -3
- package/dist/Listbox/ListboxGroup.js.map +1 -1
- package/dist/Listbox/ListboxGroupLabel.js +1 -1
- package/dist/Listbox/ListboxItem.cjs +6 -6
- package/dist/Listbox/ListboxItem.cjs.map +1 -1
- package/dist/Listbox/ListboxItem.js +7 -7
- package/dist/Listbox/ListboxItem.js.map +1 -1
- package/dist/Listbox/ListboxItemIndicator.js +1 -1
- package/dist/Listbox/ListboxRoot.cjs +6 -6
- package/dist/Listbox/ListboxRoot.cjs.map +1 -1
- package/dist/Listbox/ListboxRoot.js +7 -7
- package/dist/Listbox/ListboxRoot.js.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.js +1 -1
- package/dist/Listbox/utils.cjs +2 -2
- package/dist/Listbox/utils.cjs.map +1 -1
- package/dist/Listbox/utils.js +2 -2
- package/dist/Listbox/utils.js.map +1 -1
- package/dist/Menu/MenuAnchor.js +1 -1
- package/dist/Menu/MenuArrow.js +1 -1
- package/dist/Menu/MenuCheckboxItem.js +1 -1
- package/dist/Menu/MenuContent.js +1 -1
- package/dist/Menu/MenuContentImpl.cjs +2 -2
- package/dist/Menu/MenuContentImpl.js +4 -4
- package/dist/Menu/MenuGroup.js +1 -1
- package/dist/Menu/MenuItem.js +1 -1
- package/dist/Menu/MenuItemImpl.cjs +3 -3
- package/dist/Menu/MenuItemImpl.js +4 -4
- package/dist/Menu/MenuItemIndicator.cjs +1 -1
- package/dist/Menu/MenuItemIndicator.js +2 -2
- package/dist/Menu/MenuLabel.js +1 -1
- package/dist/Menu/MenuPortal.js +1 -1
- package/dist/Menu/MenuRadioGroup.js +1 -1
- package/dist/Menu/MenuRadioItem.js +1 -1
- package/dist/Menu/MenuRoot.js +1 -1
- package/dist/Menu/MenuRootContentModal.js +1 -1
- package/dist/Menu/MenuRootContentNonModal.js +1 -1
- package/dist/Menu/MenuSeparator.js +1 -1
- package/dist/Menu/MenuSub.cjs +2 -2
- package/dist/Menu/MenuSub.js +3 -3
- package/dist/Menu/MenuSubContent.cjs +1 -1
- package/dist/Menu/MenuSubContent.cjs.map +1 -1
- package/dist/Menu/MenuSubContent.js +2 -2
- package/dist/Menu/MenuSubContent.js.map +1 -1
- package/dist/Menu/MenuSubTrigger.cjs +2 -2
- package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
- package/dist/Menu/MenuSubTrigger.js +3 -3
- package/dist/Menu/MenuSubTrigger.js.map +1 -1
- package/dist/Menubar/MenubarArrow.js +1 -1
- package/dist/Menubar/MenubarCheckboxItem.js +1 -1
- package/dist/Menubar/MenubarContent.cjs +1 -1
- package/dist/Menubar/MenubarContent.cjs.map +1 -1
- package/dist/Menubar/MenubarContent.js +2 -2
- package/dist/Menubar/MenubarContent.js.map +1 -1
- package/dist/Menubar/MenubarGroup.js +1 -1
- package/dist/Menubar/MenubarItem.js +1 -1
- package/dist/Menubar/MenubarItemIndicator.js +1 -1
- package/dist/Menubar/MenubarLabel.js +1 -1
- package/dist/Menubar/MenubarMenu.cjs +1 -1
- package/dist/Menubar/MenubarMenu.js +2 -2
- package/dist/Menubar/MenubarPortal.js +1 -1
- package/dist/Menubar/MenubarRadioGroup.js +1 -1
- package/dist/Menubar/MenubarRadioItem.js +1 -1
- package/dist/Menubar/MenubarRoot.cjs +3 -3
- package/dist/Menubar/MenubarRoot.js +4 -4
- package/dist/Menubar/MenubarSeparator.js +1 -1
- package/dist/Menubar/MenubarSub.cjs +2 -2
- package/dist/Menubar/MenubarSub.js +3 -3
- package/dist/Menubar/MenubarSubContent.js +1 -1
- package/dist/Menubar/MenubarSubTrigger.js +1 -1
- package/dist/Menubar/MenubarTrigger.cjs +5 -5
- package/dist/Menubar/MenubarTrigger.js +6 -6
- package/dist/NavigationMenu/NavigationMenuContent.cjs +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.js +2 -2
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.js +2 -2
- package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.js +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.cjs +2 -2
- package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.js +3 -3
- package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuLink.cjs +2 -2
- package/dist/NavigationMenu/NavigationMenuLink.js +3 -3
- package/dist/NavigationMenu/NavigationMenuList.js +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.cjs +4 -4
- package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.js +5 -5
- package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.cjs +12 -2
- package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.js +13 -3
- package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.cjs +2 -2
- package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.js +3 -3
- package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.cjs +8 -8
- package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.js +10 -10
- package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
- package/dist/NavigationMenu/utils.cjs +1 -1
- package/dist/NavigationMenu/utils.cjs.map +1 -1
- package/dist/NavigationMenu/utils.js +1 -1
- package/dist/NavigationMenu/utils.js.map +1 -1
- package/dist/NumberField/NumberFieldDecrement.cjs +5 -5
- package/dist/NumberField/NumberFieldDecrement.js +6 -6
- package/dist/NumberField/NumberFieldIncrement.cjs +5 -5
- package/dist/NumberField/NumberFieldIncrement.js +6 -6
- package/dist/NumberField/NumberFieldInput.cjs +3 -3
- package/dist/NumberField/NumberFieldInput.js +4 -4
- package/dist/NumberField/NumberFieldRoot.cjs +7 -7
- package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
- package/dist/NumberField/NumberFieldRoot.js +8 -8
- package/dist/NumberField/NumberFieldRoot.js.map +1 -1
- package/dist/NumberField/utils.js +1 -1
- package/dist/Pagination/PaginationEllipsis.js +1 -1
- package/dist/Pagination/PaginationFirst.cjs +1 -1
- package/dist/Pagination/PaginationFirst.js +2 -2
- package/dist/Pagination/PaginationLast.cjs +1 -1
- package/dist/Pagination/PaginationLast.js +2 -2
- package/dist/Pagination/PaginationList.js +1 -1
- package/dist/Pagination/PaginationListItem.cjs +3 -3
- package/dist/Pagination/PaginationListItem.js +4 -4
- package/dist/Pagination/PaginationNext.cjs +1 -1
- package/dist/Pagination/PaginationNext.js +2 -2
- package/dist/Pagination/PaginationPrev.cjs +1 -1
- package/dist/Pagination/PaginationPrev.js +2 -2
- package/dist/Pagination/PaginationRoot.cjs +2 -2
- package/dist/Pagination/PaginationRoot.js +3 -3
- package/dist/PinInput/PinInputInput.cjs +4 -4
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +5 -5
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/PinInput/PinInputRoot.cjs +4 -4
- package/dist/PinInput/PinInputRoot.js +5 -5
- package/dist/Popover/PopoverAnchor.js +1 -1
- package/dist/Popover/PopoverArrow.js +1 -1
- package/dist/Popover/PopoverClose.cjs +1 -1
- package/dist/Popover/PopoverClose.js +2 -2
- package/dist/Popover/PopoverContent.cjs +1 -1
- package/dist/Popover/PopoverContent.cjs.map +1 -1
- package/dist/Popover/PopoverContent.js +2 -2
- package/dist/Popover/PopoverContent.js.map +1 -1
- package/dist/Popover/PopoverContentImpl.js +1 -1
- package/dist/Popover/PopoverContentModal.js +1 -1
- package/dist/Popover/PopoverContentNonModal.js +1 -1
- package/dist/Popover/PopoverPortal.js +1 -1
- package/dist/Popover/PopoverRoot.cjs +2 -2
- package/dist/Popover/PopoverRoot.js +3 -3
- package/dist/Popover/PopoverTrigger.cjs +2 -2
- package/dist/Popover/PopoverTrigger.cjs.map +1 -1
- package/dist/Popover/PopoverTrigger.js +3 -3
- package/dist/Popover/PopoverTrigger.js.map +1 -1
- package/dist/Popper/PopperAnchor.js +1 -1
- package/dist/Popper/PopperArrow.cjs +4 -4
- package/dist/Popper/PopperArrow.js +5 -5
- package/dist/Popper/PopperContent.cjs +3 -3
- package/dist/Popper/PopperContent.cjs.map +1 -1
- package/dist/Popper/PopperContent.js +5 -5
- package/dist/Popper/PopperContent.js.map +1 -1
- package/dist/Presence/usePresence.cjs +2 -2
- package/dist/Presence/usePresence.cjs.map +1 -1
- package/dist/Presence/usePresence.js +2 -2
- package/dist/Presence/usePresence.js.map +1 -1
- package/dist/Primitive/Primitive.cjs +1 -1
- package/dist/Primitive/Primitive.cjs.map +1 -1
- package/dist/Primitive/Primitive.js +1 -1
- package/dist/Primitive/Primitive.js.map +1 -1
- package/dist/Progress/ProgressIndicator.cjs +1 -1
- package/dist/Progress/ProgressIndicator.js +2 -2
- package/dist/Progress/ProgressRoot.cjs +5 -5
- package/dist/Progress/ProgressRoot.js +6 -6
- package/dist/RadioGroup/Radio.cjs +6 -6
- package/dist/RadioGroup/Radio.cjs.map +1 -1
- package/dist/RadioGroup/Radio.js +7 -7
- package/dist/RadioGroup/Radio.js.map +1 -1
- package/dist/RadioGroup/RadioGroupIndicator.cjs +1 -1
- package/dist/RadioGroup/RadioGroupIndicator.js +2 -2
- package/dist/RadioGroup/RadioGroupItem.cjs +2 -2
- package/dist/RadioGroup/RadioGroupItem.js +3 -3
- package/dist/RadioGroup/RadioGroupRoot.cjs +5 -5
- package/dist/RadioGroup/RadioGroupRoot.js +6 -6
- package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarCell.js +3 -3
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +84 -58
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js +85 -59
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js +3 -3
- package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGridBody.js +1 -1
- package/dist/RangeCalendar/RangeCalendarGridHead.js +1 -1
- package/dist/RangeCalendar/RangeCalendarGridRow.js +1 -1
- package/dist/RangeCalendar/RangeCalendarHeadCell.js +1 -1
- package/dist/RangeCalendar/RangeCalendarHeader.js +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.cjs +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.js +2 -2
- package/dist/RangeCalendar/RangeCalendarNext.cjs +3 -3
- package/dist/RangeCalendar/RangeCalendarNext.js +4 -4
- package/dist/RangeCalendar/RangeCalendarPrev.cjs +3 -3
- package/dist/RangeCalendar/RangeCalendarPrev.js +4 -4
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +18 -16
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +19 -17
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.cjs +4 -4
- package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.js +5 -5
- package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.cjs +4 -4
- package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.js +5 -5
- package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
- package/dist/RovingFocus/utils.cjs +2 -2
- package/dist/RovingFocus/utils.cjs.map +1 -1
- package/dist/RovingFocus/utils.js +2 -2
- package/dist/RovingFocus/utils.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaCorner.js +1 -1
- package/dist/ScrollArea/ScrollAreaCornerImpl.cjs +2 -2
- package/dist/ScrollArea/ScrollAreaCornerImpl.js +3 -3
- package/dist/ScrollArea/ScrollAreaRoot.cjs +4 -4
- package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.js +5 -5
- package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.cjs +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.js +2 -2
- package/dist/ScrollArea/ScrollAreaScrollbarAuto.js +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarHover.js +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.js +2 -2
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarScroll.js +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarVisible.js +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.cjs +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.js +2 -2
- package/dist/ScrollArea/ScrollAreaScrollbarY.cjs +3 -3
- package/dist/ScrollArea/ScrollAreaScrollbarY.js +4 -4
- package/dist/ScrollArea/ScrollAreaThumb.js +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.cjs +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.js +2 -2
- package/dist/Select/BubbleSelect.cjs +2 -2
- package/dist/Select/BubbleSelect.cjs.map +1 -1
- package/dist/Select/BubbleSelect.js +3 -3
- package/dist/Select/BubbleSelect.js.map +1 -1
- package/dist/Select/SelectArrow.js +1 -1
- package/dist/Select/SelectContent.js +1 -1
- package/dist/Select/SelectContentImpl.cjs +17 -7
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +18 -8
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/Select/SelectGroup.cjs +2 -2
- package/dist/Select/SelectGroup.cjs.map +1 -1
- package/dist/Select/SelectGroup.js +3 -3
- package/dist/Select/SelectGroup.js.map +1 -1
- package/dist/Select/SelectIcon.js +1 -1
- package/dist/Select/SelectItem.cjs +6 -6
- package/dist/Select/SelectItem.cjs.map +1 -1
- package/dist/Select/SelectItem.js +7 -7
- package/dist/Select/SelectItem.js.map +1 -1
- package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
- package/dist/Select/SelectItemAlignedPosition.js +2 -2
- package/dist/Select/SelectItemIndicator.js +1 -1
- package/dist/Select/SelectItemText.js +1 -1
- package/dist/Select/SelectLabel.js +1 -1
- package/dist/Select/SelectPopperPosition.js +1 -1
- package/dist/Select/SelectPortal.js +1 -1
- package/dist/Select/SelectRoot.cjs +6 -6
- package/dist/Select/SelectRoot.cjs.map +1 -1
- package/dist/Select/SelectRoot.js +7 -7
- package/dist/Select/SelectRoot.js.map +1 -1
- package/dist/Select/SelectScrollButtonImpl.js +1 -1
- package/dist/Select/SelectScrollDownButton.cjs +1 -1
- package/dist/Select/SelectScrollDownButton.cjs.map +1 -1
- package/dist/Select/SelectScrollDownButton.js +2 -2
- package/dist/Select/SelectScrollDownButton.js.map +1 -1
- package/dist/Select/SelectScrollUpButton.cjs +1 -1
- package/dist/Select/SelectScrollUpButton.cjs.map +1 -1
- package/dist/Select/SelectScrollUpButton.js +2 -2
- package/dist/Select/SelectScrollUpButton.js.map +1 -1
- package/dist/Select/SelectSeparator.js +1 -1
- package/dist/Select/SelectTrigger.cjs +4 -4
- package/dist/Select/SelectTrigger.cjs.map +1 -1
- package/dist/Select/SelectTrigger.js +5 -5
- package/dist/Select/SelectTrigger.js.map +1 -1
- package/dist/Select/SelectValue.cjs +1 -1
- package/dist/Select/SelectValue.js +2 -2
- package/dist/Select/SelectViewport.cjs +1 -1
- package/dist/Select/SelectViewport.cjs.map +1 -1
- package/dist/Select/SelectViewport.js +2 -2
- package/dist/Select/SelectViewport.js.map +1 -1
- package/dist/Select/utils.cjs +2 -2
- package/dist/Select/utils.cjs.map +1 -1
- package/dist/Select/utils.js +2 -2
- package/dist/Select/utils.js.map +1 -1
- package/dist/Separator/Separator.js +1 -1
- package/dist/Slider/SliderHorizontal.cjs +2 -2
- package/dist/Slider/SliderHorizontal.js +3 -3
- package/dist/Slider/SliderImpl.js +1 -1
- package/dist/Slider/SliderRange.cjs +1 -1
- package/dist/Slider/SliderRange.js +2 -2
- package/dist/Slider/SliderRoot.cjs +4 -4
- package/dist/Slider/SliderRoot.cjs.map +1 -1
- package/dist/Slider/SliderRoot.js +5 -5
- package/dist/Slider/SliderRoot.js.map +1 -1
- package/dist/Slider/SliderThumb.cjs +1 -1
- package/dist/Slider/SliderThumb.cjs.map +1 -1
- package/dist/Slider/SliderThumb.js +2 -2
- package/dist/Slider/SliderThumb.js.map +1 -1
- package/dist/Slider/SliderThumbImpl.cjs +4 -4
- package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
- package/dist/Slider/SliderThumbImpl.js +5 -5
- package/dist/Slider/SliderThumbImpl.js.map +1 -1
- package/dist/Slider/SliderTrack.cjs +1 -1
- package/dist/Slider/SliderTrack.js +2 -2
- package/dist/Slider/SliderVertical.cjs +2 -2
- package/dist/Slider/SliderVertical.js +3 -3
- 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 +2 -2
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js +3 -3
- package/dist/Splitter/SplitterGroup.js.map +1 -1
- package/dist/Splitter/SplitterPanel.cjs +3 -3
- package/dist/Splitter/SplitterPanel.cjs.map +1 -1
- package/dist/Splitter/SplitterPanel.js +4 -4
- package/dist/Splitter/SplitterPanel.js.map +1 -1
- package/dist/Splitter/SplitterResizeHandle.cjs +2 -2
- package/dist/Splitter/SplitterResizeHandle.js +3 -3
- package/dist/Stepper/StepperDescription.js +1 -1
- package/dist/Stepper/StepperIndicator.js +1 -1
- package/dist/Stepper/StepperItem.cjs +6 -6
- package/dist/Stepper/StepperItem.cjs.map +1 -1
- package/dist/Stepper/StepperItem.js +7 -7
- package/dist/Stepper/StepperItem.js.map +1 -1
- package/dist/Stepper/StepperRoot.cjs +3 -3
- package/dist/Stepper/StepperRoot.js +4 -4
- package/dist/Stepper/StepperSeparator.js +1 -1
- package/dist/Stepper/StepperTitle.js +1 -1
- package/dist/Stepper/StepperTrigger.cjs +5 -5
- package/dist/Stepper/StepperTrigger.cjs.map +1 -1
- package/dist/Stepper/StepperTrigger.js +6 -6
- package/dist/Stepper/StepperTrigger.js.map +1 -1
- package/dist/Switch/SwitchRoot.cjs +6 -6
- package/dist/Switch/SwitchRoot.cjs.map +1 -1
- package/dist/Switch/SwitchRoot.js +7 -7
- package/dist/Switch/SwitchRoot.js.map +1 -1
- package/dist/Switch/SwitchThumb.cjs +1 -1
- package/dist/Switch/SwitchThumb.js +2 -2
- package/dist/Tabs/TabsContent.cjs +1 -1
- package/dist/Tabs/TabsContent.js +2 -2
- package/dist/Tabs/TabsIndicator.js +1 -1
- package/dist/Tabs/TabsList.cjs +1 -1
- package/dist/Tabs/TabsList.js +2 -2
- package/dist/Tabs/TabsRoot.cjs +3 -3
- package/dist/Tabs/TabsRoot.cjs.map +1 -1
- package/dist/Tabs/TabsRoot.js +4 -4
- package/dist/Tabs/TabsRoot.js.map +1 -1
- package/dist/Tabs/TabsTrigger.cjs +3 -3
- package/dist/Tabs/TabsTrigger.js +4 -4
- package/dist/TagsInput/TagsInputClear.cjs +2 -2
- package/dist/TagsInput/TagsInputClear.js +3 -3
- package/dist/TagsInput/TagsInputInput.cjs +1 -1
- package/dist/TagsInput/TagsInputInput.js +2 -2
- package/dist/TagsInput/TagsInputItem.cjs +2 -2
- package/dist/TagsInput/TagsInputItem.js +3 -3
- package/dist/TagsInput/TagsInputItemDelete.cjs +4 -3
- package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItemDelete.js +5 -4
- package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
- package/dist/TagsInput/TagsInputItemText.cjs +1 -1
- package/dist/TagsInput/TagsInputItemText.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItemText.js +2 -2
- package/dist/TagsInput/TagsInputItemText.js.map +1 -1
- package/dist/TagsInput/TagsInputRoot.cjs +7 -7
- package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
- package/dist/TagsInput/TagsInputRoot.js +8 -8
- package/dist/TagsInput/TagsInputRoot.js.map +1 -1
- package/dist/Teleport/Teleport.js +1 -1
- package/dist/TimeField/TimeFieldInput.cjs +5 -5
- package/dist/TimeField/TimeFieldInput.js +6 -6
- package/dist/TimeField/TimeFieldRoot.cjs +17 -14
- package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
- package/dist/TimeField/TimeFieldRoot.js +19 -16
- package/dist/TimeField/TimeFieldRoot.js.map +1 -1
- package/dist/Toast/FocusProxy.js +1 -1
- package/dist/Toast/ToastAction.js +1 -1
- package/dist/Toast/ToastAnnounce.js +1 -1
- package/dist/Toast/ToastAnnounceExclude.cjs +1 -1
- package/dist/Toast/ToastAnnounceExclude.js +2 -2
- package/dist/Toast/ToastClose.cjs +3 -3
- package/dist/Toast/ToastClose.cjs.map +1 -1
- package/dist/Toast/ToastClose.js +4 -4
- package/dist/Toast/ToastClose.js.map +1 -1
- package/dist/Toast/ToastDescription.js +1 -1
- package/dist/Toast/ToastPortal.js +1 -1
- package/dist/Toast/ToastRoot.cjs +5 -2
- package/dist/Toast/ToastRoot.cjs.map +1 -1
- package/dist/Toast/ToastRoot.js +6 -3
- package/dist/Toast/ToastRoot.js.map +1 -1
- package/dist/Toast/ToastRootImpl.cjs +7 -4
- package/dist/Toast/ToastRootImpl.cjs.map +1 -1
- package/dist/Toast/ToastRootImpl.js +9 -6
- package/dist/Toast/ToastRootImpl.js.map +1 -1
- package/dist/Toast/ToastTitle.js +1 -1
- package/dist/Toast/ToastViewport.cjs +3 -3
- package/dist/Toast/ToastViewport.js +4 -4
- package/dist/Toast/utils.js +1 -1
- package/dist/Toggle/Toggle.cjs +4 -4
- package/dist/Toggle/Toggle.js +5 -5
- package/dist/ToggleGroup/ToggleGroupItem.cjs +1 -1
- package/dist/ToggleGroup/ToggleGroupItem.js +2 -2
- package/dist/ToggleGroup/ToggleGroupRoot.cjs +4 -4
- package/dist/ToggleGroup/ToggleGroupRoot.js +5 -5
- package/dist/Toolbar/ToolbarButton.cjs +2 -2
- package/dist/Toolbar/ToolbarButton.js +3 -3
- package/dist/Toolbar/ToolbarLink.cjs +1 -1
- package/dist/Toolbar/ToolbarLink.js +2 -2
- package/dist/Toolbar/ToolbarRoot.cjs +2 -2
- package/dist/Toolbar/ToolbarRoot.js +3 -3
- package/dist/Toolbar/ToolbarSeparator.js +1 -1
- package/dist/Toolbar/ToolbarToggleGroup.js +1 -1
- package/dist/Toolbar/ToolbarToggleItem.js +1 -1
- package/dist/Tooltip/TooltipArrow.js +1 -1
- package/dist/Tooltip/TooltipContent.js +1 -1
- package/dist/Tooltip/TooltipContentHoverable.js +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +1 -1
- package/dist/Tooltip/TooltipPortal.js +1 -1
- package/dist/Tooltip/TooltipProvider.cjs +1 -1
- package/dist/Tooltip/TooltipProvider.js +1 -1
- package/dist/Tooltip/TooltipRoot.cjs +8 -8
- package/dist/Tooltip/TooltipRoot.js +9 -9
- package/dist/Tooltip/TooltipTrigger.cjs +2 -2
- package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
- package/dist/Tooltip/TooltipTrigger.js +3 -3
- package/dist/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/Tree/TreeItem.cjs +5 -5
- package/dist/Tree/TreeItem.cjs.map +1 -1
- package/dist/Tree/TreeItem.js +6 -6
- package/dist/Tree/TreeItem.js.map +1 -1
- package/dist/Tree/TreeRoot.cjs +8 -8
- package/dist/Tree/TreeRoot.cjs.map +1 -1
- package/dist/Tree/TreeRoot.js +9 -9
- package/dist/Tree/TreeRoot.js.map +1 -1
- package/dist/Tree/TreeVirtualizer.js +1 -1
- package/dist/Viewport/Viewport.js +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.cjs +3 -3
- package/dist/VisuallyHidden/VisuallyHidden.js +4 -4
- package/dist/VisuallyHidden/VisuallyHiddenInput.cjs +9 -3
- package/dist/VisuallyHidden/VisuallyHiddenInput.cjs.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInput.js +10 -4
- package/dist/VisuallyHidden/VisuallyHiddenInput.js.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js +2 -2
- package/dist/component/Arrow.cjs +2 -2
- package/dist/component/Arrow.js +3 -3
- package/dist/component/BaseSeparator.cjs +1 -1
- package/dist/component/BaseSeparator.js +2 -2
- package/dist/constant/components.cjs +4 -0
- package/dist/constant/components.cjs.map +1 -1
- package/dist/constant/components.js +4 -0
- package/dist/constant/components.js.map +1 -1
- package/dist/date/comparators.cjs +1 -1
- package/dist/date/comparators.cjs.map +1 -1
- package/dist/date/comparators.js +2 -2
- package/dist/date/comparators.js.map +1 -1
- package/dist/date/parser.cjs +2 -2
- package/dist/date/parser.js +3 -3
- package/dist/date/useDateField.cjs +9 -9
- package/dist/date/useDateField.cjs.map +1 -1
- package/dist/date/useDateField.js +10 -10
- package/dist/date/useDateField.js.map +1 -1
- package/dist/date/utils.cjs +2 -2
- package/dist/date/utils.cjs.map +1 -1
- package/dist/date/utils.js +2 -2
- package/dist/date/utils.js.map +1 -1
- package/dist/index.cjs +91 -87
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +75 -12
- package/dist/index.js +43 -41
- package/dist/index.js.map +1 -1
- package/dist/shared/nullish.cjs +1 -1
- package/dist/shared/nullish.cjs.map +1 -1
- package/dist/shared/nullish.js +1 -1
- package/dist/shared/nullish.js.map +1 -1
- package/dist/shared/useBodyScrollLock.cjs +2 -2
- package/dist/shared/useBodyScrollLock.cjs.map +1 -1
- package/dist/shared/useBodyScrollLock.js +4 -4
- package/dist/shared/useBodyScrollLock.js.map +1 -1
- package/dist/shared/useDateFormatter.js +2 -2
- package/dist/shared/useForwardProps.cjs +2 -2
- package/dist/shared/useForwardProps.cjs.map +1 -1
- package/dist/shared/useForwardProps.js +2 -2
- package/dist/shared/useForwardProps.js.map +1 -1
- package/dist/shared/useGraceArea.cjs +1 -1
- package/dist/shared/useGraceArea.cjs.map +1 -1
- package/dist/shared/useGraceArea.js +1 -1
- package/dist/shared/useGraceArea.js.map +1 -1
- package/dist/shared/useId.cjs +1 -1
- package/dist/shared/useId.cjs.map +1 -1
- package/dist/shared/useId.js +1 -1
- package/dist/shared/useId.js.map +1 -1
- package/dist/shared/useSelectionBehavior.cjs +1 -1
- package/dist/shared/useSelectionBehavior.cjs.map +1 -1
- package/dist/shared/useSelectionBehavior.js +1 -1
- package/dist/shared/useSelectionBehavior.js.map +1 -1
- package/dist/shared/useSingleOrMultipleValue.cjs +5 -5
- package/dist/shared/useSingleOrMultipleValue.cjs.map +1 -1
- package/dist/shared/useSingleOrMultipleValue.js +5 -5
- package/dist/shared/useSingleOrMultipleValue.js.map +1 -1
- package/dist/shared/useSize.cjs +1 -1
- package/dist/shared/useSize.cjs.map +1 -1
- package/dist/shared/useSize.js +1 -1
- package/dist/shared/useSize.js.map +1 -1
- package/dist/shared/useTypeahead.cjs +1 -1
- package/dist/shared/useTypeahead.cjs.map +1 -1
- package/dist/shared/useTypeahead.js +1 -1
- package/dist/shared/useTypeahead.js.map +1 -1
- package/dist/utils/layout.cjs +1 -1
- package/dist/utils/layout.cjs.map +1 -1
- package/dist/utils/layout.js +1 -1
- package/dist/utils/layout.js.map +1 -1
- package/dist/utils/style.cjs +2 -2
- package/dist/utils/style.cjs.map +1 -1
- package/dist/utils/style.js +3 -3
- package/dist/utils/style.js.map +1 -1
- package/package.json +3 -3
|
@@ -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 { computed, ref, watchEffect } from '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'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getActiveElement, useArrowNavigation, useForwardExpose } from '@/shared'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\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 { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n EVENT_ROOT_CONTENT_DISMISS,\n focusFirst,\n getOpenState,\n getTabbableCandidates,\n makeContentId,\n makeTriggerId,\n} from './utils'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getActiveElement, useArrowNavigation, useForwardExpose } from '@/shared'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\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,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, watchEffect,
|
|
1
|
+
import { defineComponent, ref, computed, watchEffect, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
|
|
2
2
|
import { m as makeTriggerId, a as makeContentId, E as EVENT_ROOT_CONTENT_DISMISS, g as getOpenState, b as getTabbableCandidates, f as focusFirst } from './utils.js';
|
|
3
3
|
import { _ as _sfc_main$1 } from '../DismissableLayer/DismissableLayer.js';
|
|
4
4
|
import { u as useCollection } from '../Collection/Collection.js';
|
|
@@ -119,7 +119,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
119
119
|
const newSelectedElement = useArrowNavigation(
|
|
120
120
|
ev,
|
|
121
121
|
getActiveElement(),
|
|
122
|
-
|
|
122
|
+
void 0,
|
|
123
123
|
{ itemsArray: candidates, loop: false, enableIgnoredElement: true }
|
|
124
124
|
);
|
|
125
125
|
newSelectedElement?.focus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuContentImpl.js","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 { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n EVENT_ROOT_CONTENT_DISMISS,\n focusFirst,\n getOpenState,\n getTabbableCandidates,\n makeContentId,\n makeTriggerId,\n} from './utils'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getActiveElement, useArrowNavigation, useForwardExpose } from '@/shared'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\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":["target"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NavigationMenuContentImpl.js","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 { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n EVENT_ROOT_CONTENT_DISMISS,\n focusFirst,\n getOpenState,\n getTabbableCandidates,\n makeContentId,\n makeTriggerId,\n} from './utils'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getActiveElement, useArrowNavigation, useForwardExpose } from '@/shared'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\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":["target"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, watchEffect, unref, openBlock,
|
|
1
|
+
import { defineComponent, ref, computed, watchEffect, createBlock, createCommentVNode, unref, openBlock, Teleport, createVNode, withCtx, mergeProps, renderSlot } from 'vue';
|
|
2
2
|
import { useResizeObserver } from '@vueuse/core';
|
|
3
3
|
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
4
4
|
import { P as Presence } from '../Presence/Presence.js';
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
const vue = require('vue');
|
|
4
4
|
const NavigationMenu_utils = require('./utils.cjs');
|
|
5
5
|
const Collection_Collection = require('../Collection/Collection.cjs');
|
|
6
|
+
const shared_createContext = require('../shared/createContext.cjs');
|
|
6
7
|
const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
|
|
7
8
|
const NavigationMenu_NavigationMenuRoot = require('./NavigationMenuRoot.cjs');
|
|
8
9
|
const shared_useId = require('../shared/useId.cjs');
|
|
9
10
|
const Primitive_Primitive = require('../Primitive/Primitive.cjs');
|
|
10
|
-
const shared_createContext = require('../shared/createContext.cjs');
|
|
11
11
|
const shared_getActiveElement = require('../shared/getActiveElement.cjs');
|
|
12
12
|
const shared_useArrowNavigation = require('../shared/useArrowNavigation.cjs');
|
|
13
13
|
|
|
@@ -80,7 +80,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
80
80
|
).map((i) => i.ref);
|
|
81
81
|
if (!itemsArray.includes(currentFocus))
|
|
82
82
|
return;
|
|
83
|
-
const newSelectedElement = shared_useArrowNavigation.useArrowNavigation(ev, currentFocus,
|
|
83
|
+
const newSelectedElement = shared_useArrowNavigation.useArrowNavigation(ev, currentFocus, void 0, {
|
|
84
84
|
itemsArray,
|
|
85
85
|
loop: false
|
|
86
86
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuItem.cjs","sources":["../../src/NavigationMenu/NavigationMenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { createContext, getActiveElement, useArrowNavigation, useForwardExpose, useId } from '@/shared'\n\nexport interface NavigationMenuItemProps extends PrimitiveProps {\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\nexport type NavigationMenuItemContext = {\n value: string\n contentId: string\n triggerRef: Ref<HTMLElement | undefined>\n focusProxyRef: Ref<HTMLElement | undefined>\n wasEscapeCloseRef: Ref<boolean>\n onEntryKeyDown: () => void\n onFocusProxyEnter: (side: 'start' | 'end') => void\n onContentFocusOutside: () => void\n onRootContentClose: () => void\n}\n\nexport const [injectNavigationMenuItemContext, provideNavigationMenuItemContext]\n = createContext<NavigationMenuItemContext>('NavigationMenuItem')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport { Primitive } from '@/Primitive'\nimport {\n focusFirst,\n getTabbableCandidates,\n makeContentId,\n removeFromTabOrder,\n} from './utils'\n\nconst props = withDefaults(defineProps<NavigationMenuItemProps>(), {\n as: 'li',\n})\n\nuseForwardExpose()\nconst { getItems } = useCollection({ key: 'NavigationMenu' })\n\nconst context = injectNavigationMenuContext()\n\nconst value = useId(props.value)\nconst triggerRef = ref<HTMLElement>()\nconst focusProxyRef = ref<HTMLElement>()\n\nconst contentId = makeContentId(context.baseId, value)\n\nlet restoreContentTabOrderRef: () => void = () => ({})\n\nconst wasEscapeCloseRef = ref(false)\nasync function handleContentEntry(side = 'start') {\n const el = document.getElementById(contentId)\n if (el) {\n restoreContentTabOrderRef()\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n focusFirst(side === 'start' ? candidates : candidates.reverse())\n }\n}\n\nfunction handleContentExit() {\n const el = document.getElementById(contentId)\n if (el) {\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n restoreContentTabOrderRef = removeFromTabOrder(candidates)\n }\n}\n\nprovideNavigationMenuItemContext({\n value,\n contentId,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onEntryKeyDown: handleContentEntry,\n onFocusProxyEnter: handleContentEntry,\n onContentFocusOutside: handleContentExit,\n onRootContentClose: handleContentExit,\n})\n\nfunction handleClose() {\n context.onItemDismiss()\n triggerRef.value?.focus()\n}\n\nfunction handleKeydown(ev: KeyboardEvent) {\n const currentFocus = getActiveElement() as HTMLElement\n if (ev.keyCode === 32 || ev.key === 'Enter') {\n if (context.modelValue.value === value) {\n handleClose()\n ev.preventDefault()\n return\n }\n else {\n (ev.target as HTMLElement).click()\n ev.preventDefault()\n return\n }\n }\n\n const itemsArray = getItems().filter(i =>\n i.ref.parentElement?.hasAttribute('data-menu-item'),\n ).map(i => i.ref)\n\n // prevent triggering when the focus is on link\n if (!itemsArray.includes(currentFocus))\n return\n\n const newSelectedElement = useArrowNavigation(ev, currentFocus, undefined, {\n itemsArray,\n loop: false,\n })\n\n if (newSelectedElement)\n newSelectedElement?.focus()\n\n ev.preventDefault()\n ev.stopPropagation()\n}\n</script>\n\n<template>\n <Primitive\n :as-child=\"asChild\"\n :as=\"as\"\n data-menu-item\n @keydown.up.down.left.right.home.end.space=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["createContext","useForwardExpose","useCollection","injectNavigationMenuContext","useId","ref","makeContentId","getTabbableCandidates","focusFirst","removeFromTabOrder","getActiveElement","useArrowNavigation"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NavigationMenuItem.cjs","sources":["../../src/NavigationMenu/NavigationMenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { createContext, getActiveElement, useArrowNavigation, useForwardExpose, useId } from '@/shared'\n\nexport interface NavigationMenuItemProps extends PrimitiveProps {\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\nexport type NavigationMenuItemContext = {\n value: string\n contentId: string\n triggerRef: Ref<HTMLElement | undefined>\n focusProxyRef: Ref<HTMLElement | undefined>\n wasEscapeCloseRef: Ref<boolean>\n onEntryKeyDown: () => void\n onFocusProxyEnter: (side: 'start' | 'end') => void\n onContentFocusOutside: () => void\n onRootContentClose: () => void\n}\n\nexport const [injectNavigationMenuItemContext, provideNavigationMenuItemContext]\n = createContext<NavigationMenuItemContext>('NavigationMenuItem')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport { Primitive } from '@/Primitive'\nimport {\n focusFirst,\n getTabbableCandidates,\n makeContentId,\n removeFromTabOrder,\n} from './utils'\n\nconst props = withDefaults(defineProps<NavigationMenuItemProps>(), {\n as: 'li',\n})\n\nuseForwardExpose()\nconst { getItems } = useCollection({ key: 'NavigationMenu' })\n\nconst context = injectNavigationMenuContext()\n\nconst value = useId(props.value)\nconst triggerRef = ref<HTMLElement>()\nconst focusProxyRef = ref<HTMLElement>()\n\nconst contentId = makeContentId(context.baseId, value)\n\nlet restoreContentTabOrderRef: () => void = () => ({})\n\nconst wasEscapeCloseRef = ref(false)\nasync function handleContentEntry(side = 'start') {\n const el = document.getElementById(contentId)\n if (el) {\n restoreContentTabOrderRef()\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n focusFirst(side === 'start' ? candidates : candidates.reverse())\n }\n}\n\nfunction handleContentExit() {\n const el = document.getElementById(contentId)\n if (el) {\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n restoreContentTabOrderRef = removeFromTabOrder(candidates)\n }\n}\n\nprovideNavigationMenuItemContext({\n value,\n contentId,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onEntryKeyDown: handleContentEntry,\n onFocusProxyEnter: handleContentEntry,\n onContentFocusOutside: handleContentExit,\n onRootContentClose: handleContentExit,\n})\n\nfunction handleClose() {\n context.onItemDismiss()\n triggerRef.value?.focus()\n}\n\nfunction handleKeydown(ev: KeyboardEvent) {\n const currentFocus = getActiveElement() as HTMLElement\n if (ev.keyCode === 32 || ev.key === 'Enter') {\n if (context.modelValue.value === value) {\n handleClose()\n ev.preventDefault()\n return\n }\n else {\n (ev.target as HTMLElement).click()\n ev.preventDefault()\n return\n }\n }\n\n const itemsArray = getItems().filter(i =>\n i.ref.parentElement?.hasAttribute('data-menu-item'),\n ).map(i => i.ref)\n\n // prevent triggering when the focus is on link\n if (!itemsArray.includes(currentFocus))\n return\n\n const newSelectedElement = useArrowNavigation(ev, currentFocus, undefined, {\n itemsArray,\n loop: false,\n })\n\n if (newSelectedElement)\n newSelectedElement?.focus()\n\n ev.preventDefault()\n ev.stopPropagation()\n}\n</script>\n\n<template>\n <Primitive\n :as-child=\"asChild\"\n :as=\"as\"\n data-menu-item\n @keydown.up.down.left.right.home.end.space=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["createContext","useForwardExpose","useCollection","injectNavigationMenuContext","useId","ref","makeContentId","getTabbableCandidates","focusFirst","removeFromTabOrder","getActiveElement","useArrowNavigation"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { defineComponent, ref,
|
|
1
|
+
import { defineComponent, ref, createBlock, openBlock, unref, withKeys, withCtx, renderSlot } from 'vue';
|
|
2
2
|
import { a as makeContentId, b as getTabbableCandidates, f as focusFirst, r as removeFromTabOrder } from './utils.js';
|
|
3
3
|
import { u as useCollection } from '../Collection/Collection.js';
|
|
4
|
+
import { c as createContext } from '../shared/createContext.js';
|
|
4
5
|
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
5
6
|
import { i as injectNavigationMenuContext } from './NavigationMenuRoot.js';
|
|
6
7
|
import { u as useId } from '../shared/useId.js';
|
|
7
8
|
import { P as Primitive } from '../Primitive/Primitive.js';
|
|
8
|
-
import { c as createContext } from '../shared/createContext.js';
|
|
9
9
|
import { g as getActiveElement } from '../shared/getActiveElement.js';
|
|
10
10
|
import { u as useArrowNavigation } from '../shared/useArrowNavigation.js';
|
|
11
11
|
|
|
@@ -78,7 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
78
78
|
).map((i) => i.ref);
|
|
79
79
|
if (!itemsArray.includes(currentFocus))
|
|
80
80
|
return;
|
|
81
|
-
const newSelectedElement = useArrowNavigation(ev, currentFocus,
|
|
81
|
+
const newSelectedElement = useArrowNavigation(ev, currentFocus, void 0, {
|
|
82
82
|
itemsArray,
|
|
83
83
|
loop: false
|
|
84
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuItem.js","sources":["../../src/NavigationMenu/NavigationMenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { createContext, getActiveElement, useArrowNavigation, useForwardExpose, useId } from '@/shared'\n\nexport interface NavigationMenuItemProps extends PrimitiveProps {\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\nexport type NavigationMenuItemContext = {\n value: string\n contentId: string\n triggerRef: Ref<HTMLElement | undefined>\n focusProxyRef: Ref<HTMLElement | undefined>\n wasEscapeCloseRef: Ref<boolean>\n onEntryKeyDown: () => void\n onFocusProxyEnter: (side: 'start' | 'end') => void\n onContentFocusOutside: () => void\n onRootContentClose: () => void\n}\n\nexport const [injectNavigationMenuItemContext, provideNavigationMenuItemContext]\n = createContext<NavigationMenuItemContext>('NavigationMenuItem')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport { Primitive } from '@/Primitive'\nimport {\n focusFirst,\n getTabbableCandidates,\n makeContentId,\n removeFromTabOrder,\n} from './utils'\n\nconst props = withDefaults(defineProps<NavigationMenuItemProps>(), {\n as: 'li',\n})\n\nuseForwardExpose()\nconst { getItems } = useCollection({ key: 'NavigationMenu' })\n\nconst context = injectNavigationMenuContext()\n\nconst value = useId(props.value)\nconst triggerRef = ref<HTMLElement>()\nconst focusProxyRef = ref<HTMLElement>()\n\nconst contentId = makeContentId(context.baseId, value)\n\nlet restoreContentTabOrderRef: () => void = () => ({})\n\nconst wasEscapeCloseRef = ref(false)\nasync function handleContentEntry(side = 'start') {\n const el = document.getElementById(contentId)\n if (el) {\n restoreContentTabOrderRef()\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n focusFirst(side === 'start' ? candidates : candidates.reverse())\n }\n}\n\nfunction handleContentExit() {\n const el = document.getElementById(contentId)\n if (el) {\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n restoreContentTabOrderRef = removeFromTabOrder(candidates)\n }\n}\n\nprovideNavigationMenuItemContext({\n value,\n contentId,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onEntryKeyDown: handleContentEntry,\n onFocusProxyEnter: handleContentEntry,\n onContentFocusOutside: handleContentExit,\n onRootContentClose: handleContentExit,\n})\n\nfunction handleClose() {\n context.onItemDismiss()\n triggerRef.value?.focus()\n}\n\nfunction handleKeydown(ev: KeyboardEvent) {\n const currentFocus = getActiveElement() as HTMLElement\n if (ev.keyCode === 32 || ev.key === 'Enter') {\n if (context.modelValue.value === value) {\n handleClose()\n ev.preventDefault()\n return\n }\n else {\n (ev.target as HTMLElement).click()\n ev.preventDefault()\n return\n }\n }\n\n const itemsArray = getItems().filter(i =>\n i.ref.parentElement?.hasAttribute('data-menu-item'),\n ).map(i => i.ref)\n\n // prevent triggering when the focus is on link\n if (!itemsArray.includes(currentFocus))\n return\n\n const newSelectedElement = useArrowNavigation(ev, currentFocus, undefined, {\n itemsArray,\n loop: false,\n })\n\n if (newSelectedElement)\n newSelectedElement?.focus()\n\n ev.preventDefault()\n ev.stopPropagation()\n}\n</script>\n\n<template>\n <Primitive\n :as-child=\"asChild\"\n :as=\"as\"\n data-menu-item\n @keydown.up.down.left.right.home.end.space=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NavigationMenuItem.js","sources":["../../src/NavigationMenu/NavigationMenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { createContext, getActiveElement, useArrowNavigation, useForwardExpose, useId } from '@/shared'\n\nexport interface NavigationMenuItemProps extends PrimitiveProps {\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\nexport type NavigationMenuItemContext = {\n value: string\n contentId: string\n triggerRef: Ref<HTMLElement | undefined>\n focusProxyRef: Ref<HTMLElement | undefined>\n wasEscapeCloseRef: Ref<boolean>\n onEntryKeyDown: () => void\n onFocusProxyEnter: (side: 'start' | 'end') => void\n onContentFocusOutside: () => void\n onRootContentClose: () => void\n}\n\nexport const [injectNavigationMenuItemContext, provideNavigationMenuItemContext]\n = createContext<NavigationMenuItemContext>('NavigationMenuItem')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport { Primitive } from '@/Primitive'\nimport {\n focusFirst,\n getTabbableCandidates,\n makeContentId,\n removeFromTabOrder,\n} from './utils'\n\nconst props = withDefaults(defineProps<NavigationMenuItemProps>(), {\n as: 'li',\n})\n\nuseForwardExpose()\nconst { getItems } = useCollection({ key: 'NavigationMenu' })\n\nconst context = injectNavigationMenuContext()\n\nconst value = useId(props.value)\nconst triggerRef = ref<HTMLElement>()\nconst focusProxyRef = ref<HTMLElement>()\n\nconst contentId = makeContentId(context.baseId, value)\n\nlet restoreContentTabOrderRef: () => void = () => ({})\n\nconst wasEscapeCloseRef = ref(false)\nasync function handleContentEntry(side = 'start') {\n const el = document.getElementById(contentId)\n if (el) {\n restoreContentTabOrderRef()\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n focusFirst(side === 'start' ? candidates : candidates.reverse())\n }\n}\n\nfunction handleContentExit() {\n const el = document.getElementById(contentId)\n if (el) {\n const candidates = getTabbableCandidates(el)\n if (candidates.length)\n restoreContentTabOrderRef = removeFromTabOrder(candidates)\n }\n}\n\nprovideNavigationMenuItemContext({\n value,\n contentId,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onEntryKeyDown: handleContentEntry,\n onFocusProxyEnter: handleContentEntry,\n onContentFocusOutside: handleContentExit,\n onRootContentClose: handleContentExit,\n})\n\nfunction handleClose() {\n context.onItemDismiss()\n triggerRef.value?.focus()\n}\n\nfunction handleKeydown(ev: KeyboardEvent) {\n const currentFocus = getActiveElement() as HTMLElement\n if (ev.keyCode === 32 || ev.key === 'Enter') {\n if (context.modelValue.value === value) {\n handleClose()\n ev.preventDefault()\n return\n }\n else {\n (ev.target as HTMLElement).click()\n ev.preventDefault()\n return\n }\n }\n\n const itemsArray = getItems().filter(i =>\n i.ref.parentElement?.hasAttribute('data-menu-item'),\n ).map(i => i.ref)\n\n // prevent triggering when the focus is on link\n if (!itemsArray.includes(currentFocus))\n return\n\n const newSelectedElement = useArrowNavigation(ev, currentFocus, undefined, {\n itemsArray,\n loop: false,\n })\n\n if (newSelectedElement)\n newSelectedElement?.focus()\n\n ev.preventDefault()\n ev.stopPropagation()\n}\n</script>\n\n<template>\n <Primitive\n :as-child=\"asChild\"\n :as=\"as\"\n data-menu-item\n @keydown.up.down.left.right.home.end.space=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
|
|
@@ -44,8 +44,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
44
44
|
default: vue.withCtx(() => [
|
|
45
45
|
vue.createVNode(vue.unref(Primitive_Primitive.Primitive), {
|
|
46
46
|
as: _ctx.as,
|
|
47
|
-
"data-active": _ctx.active ? "" :
|
|
48
|
-
"aria-current": _ctx.active ? "page" :
|
|
47
|
+
"data-active": _ctx.active ? "" : void 0,
|
|
48
|
+
"aria-current": _ctx.active ? "page" : void 0,
|
|
49
49
|
"as-child": props.asChild,
|
|
50
50
|
onClick: handleClick
|
|
51
51
|
}, {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, createBlock, openBlock, unref, withCtx, createVNode, renderSlot } from 'vue';
|
|
2
2
|
import { L as LINK_SELECT, E as EVENT_ROOT_CONTENT_DISMISS } from './utils.js';
|
|
3
3
|
import { u as useCollection } from '../Collection/Collection.js';
|
|
4
4
|
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
@@ -42,8 +42,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
42
42
|
default: withCtx(() => [
|
|
43
43
|
createVNode(unref(Primitive), {
|
|
44
44
|
as: _ctx.as,
|
|
45
|
-
"data-active": _ctx.active ? "" :
|
|
46
|
-
"aria-current": _ctx.active ? "page" :
|
|
45
|
+
"data-active": _ctx.active ? "" : void 0,
|
|
46
|
+
"aria-current": _ctx.active ? "page" : void 0,
|
|
47
47
|
"as-child": props.asChild,
|
|
48
48
|
onClick: handleClick
|
|
49
49
|
}, {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, onMounted,
|
|
1
|
+
import { defineComponent, onMounted, createBlock, openBlock, unref, withCtx, createVNode, mergeProps, renderSlot } from 'vue';
|
|
2
2
|
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
3
3
|
import { P as Primitive } from '../Primitive/Primitive.js';
|
|
4
4
|
import { i as injectNavigationMenuContext } from './NavigationMenuRoot.js';
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
const vue = require('vue');
|
|
4
4
|
const core = require('@vueuse/core');
|
|
5
5
|
const Collection_Collection = require('../Collection/Collection.cjs');
|
|
6
|
+
const shared_createContext = require('../shared/createContext.cjs');
|
|
6
7
|
const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
|
|
7
8
|
const shared_useDirection = require('../shared/useDirection.cjs');
|
|
8
9
|
const shared_useId = require('../shared/useId.cjs');
|
|
9
10
|
const Primitive_Primitive = require('../Primitive/Primitive.cjs');
|
|
10
|
-
const shared_createContext = require('../shared/createContext.cjs');
|
|
11
11
|
|
|
12
12
|
const [injectNavigationMenuContext, provideNavigationMenuContext] = shared_createContext.createContext(["NavigationMenuRoot", "NavigationMenuSub"], "NavigationMenuContext");
|
|
13
13
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
14
14
|
__name: "NavigationMenuRoot",
|
|
15
15
|
props: {
|
|
16
|
-
modelValue: { default:
|
|
16
|
+
modelValue: { default: void 0 },
|
|
17
17
|
defaultValue: {},
|
|
18
18
|
dir: {},
|
|
19
19
|
orientation: { default: "horizontal" },
|
|
@@ -32,7 +32,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
32
32
|
const emits = __emit;
|
|
33
33
|
const modelValue = core.useVModel(props, "modelValue", emits, {
|
|
34
34
|
defaultValue: props.defaultValue ?? "",
|
|
35
|
-
passive: props.modelValue ===
|
|
35
|
+
passive: props.modelValue === void 0
|
|
36
36
|
});
|
|
37
37
|
const previousValue = vue.ref("");
|
|
38
38
|
const { forwardRef, currentElement: rootNavigationMenu } = shared_useForwardExpose.useForwardExpose();
|
|
@@ -67,7 +67,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
67
67
|
isRootMenu: true,
|
|
68
68
|
modelValue,
|
|
69
69
|
previousValue,
|
|
70
|
-
baseId: shared_useId.useId(
|
|
70
|
+
baseId: shared_useId.useId(void 0, "reka-navigation-menu"),
|
|
71
71
|
disableClickTrigger,
|
|
72
72
|
disableHoverTrigger,
|
|
73
73
|
dir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuRoot.cjs","sources":["../../src/NavigationMenu/NavigationMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, Orientation } from './utils'\nimport { createContext, useDirection, useForwardExpose, useId } from '@/shared'\nimport { useCollection } from '@/Collection'\n\nexport interface NavigationMenuRootProps extends PrimitiveProps {\n /** The controlled value of the menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\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 /** The orientation of the menu. */\n orientation?: Orientation\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened.\n * @defaultValue 200\n */\n delayDuration?: number\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number\n\n /**\n * If `true`, menu cannot be open by click on trigger\n * @defaultValue false\n */\n disableClickTrigger?: boolean\n /**\n * If `true`, menu cannot be open by hover on trigger\n * @defaultValue false\n */\n disableHoverTrigger?: boolean\n /**\n * If `true`, menu will not close during pointer leave event\n * @defaultValue false\n */\n disablePointerLeaveClose?: boolean\n\n /**\n * When `true`, the element will be unmounted on closed state.\n *\n * @defaultValue `true`\n */\n unmountOnHide?: boolean\n}\nexport type NavigationMenuRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuContext {\n isRootMenu: boolean\n modelValue: Ref<string>\n previousValue: Ref<string>\n baseId: string\n dir: Ref<Direction>\n orientation: Orientation\n disableClickTrigger: Ref<boolean>\n disableHoverTrigger: Ref<boolean>\n unmountOnHide: Ref<boolean>\n rootNavigationMenu: Ref<HTMLElement | undefined>\n activeTrigger: Ref<HTMLElement | undefined>\n indicatorTrack: Ref<HTMLElement | undefined>\n onIndicatorTrackChange: (indicatorTrack: HTMLElement | undefined) => void\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement | undefined) => void\n onTriggerEnter: (itemValue: string) => void\n onTriggerLeave: () => void\n onContentEnter: (itemValue: string) => void\n onContentLeave: () => void\n onItemSelect: (itemValue: string) => void\n onItemDismiss: () => void\n}\n\nexport const [injectNavigationMenuContext, provideNavigationMenuContext]\n = createContext<NavigationMenuContext>(['NavigationMenuRoot', 'NavigationMenuSub'], 'NavigationMenuContext')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n ref,\n toRefs,\n watchEffect,\n} from 'vue'\nimport { refAutoReset, useDebounceFn, useVModel } from '@vueuse/core'\nimport {\n Primitive,\n} from '@/Primitive'\n\nconst props = withDefaults(defineProps<NavigationMenuRootProps>(), {\n modelValue: undefined,\n delayDuration: 200,\n skipDelayDuration: 300,\n orientation: 'horizontal',\n disableClickTrigger: false,\n disableHoverTrigger: false,\n unmountOnHide: true,\n as: 'nav',\n})\nconst emits = defineEmits<NavigationMenuRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst { forwardRef, currentElement: rootNavigationMenu } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\nconst activeTrigger = ref<HTMLElement>()\n\nconst { getItems, CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nconst { delayDuration, skipDelayDuration, dir: propDir, disableClickTrigger, disableHoverTrigger, unmountOnHide } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst isDelaySkipped = refAutoReset(false, skipDelayDuration)\nconst computedDelay = computed(() => {\n const isOpen = modelValue.value !== ''\n if (isOpen || isDelaySkipped.value)\n return 150 // 150ms for user to switch trigger or move into content view\n else return delayDuration.value\n})\n\nconst debouncedFn = useDebounceFn((val?: string) => {\n // passing `undefined` meant to reset the debounce timer\n if (typeof val === 'string') {\n previousValue.value = modelValue.value\n modelValue.value = val\n }\n}, computedDelay)\n\nwatchEffect(() => {\n if (!modelValue.value)\n return\n\n const items = getItems().map(i => i.ref)\n activeTrigger.value = items.find(item =>\n item.id.includes(modelValue.value),\n )\n})\n\nprovideNavigationMenuContext({\n isRootMenu: true,\n modelValue,\n previousValue,\n baseId: useId(undefined, 'reka-navigation-menu'),\n disableClickTrigger,\n disableHoverTrigger,\n dir,\n unmountOnHide,\n orientation: props.orientation,\n rootNavigationMenu,\n indicatorTrack,\n activeTrigger,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n onTriggerEnter: (val) => {\n debouncedFn(val)\n },\n onTriggerLeave: () => {\n isDelaySkipped.value = true\n debouncedFn('')\n },\n onContentEnter: () => {\n debouncedFn()\n },\n onContentLeave: () => {\n if (!props.disablePointerLeaveClose)\n debouncedFn('')\n },\n onItemSelect: (val) => {\n // When selecting item we trigger update immediately\n previousValue.value = modelValue.value\n modelValue.value = val\n },\n onItemDismiss: () => {\n previousValue.value = modelValue.value\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n aria-label=\"Main\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-orientation=\"orientation\"\n :dir=\"dir\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["createContext","useVModel","ref","useForwardExpose","useCollection","toRefs","useDirection","refAutoReset","computed","useDebounceFn","watchEffect","useId"],"mappings":";;;;;;;;;;;AAwFa,MAAA,CAAC,6BAA6B,4BAA4B,CAAA,GACnEA,mCAAqC,CAAC,oBAAA,EAAsB,mBAAmB,CAAA,EAAG,uBAAuB;;;;;;;;;;;;;;;;;;;AAe7G,IAAA,MAAM,KAAQ,GAAA,OAAA;AAUd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AACD,IAAM,MAAA,aAAA,GAAgBC,QAAI,EAAE,CAAA;AAE5B,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,kBAAA,KAAuBC,wCAAiB,EAAA;AAE5E,IAAA,MAAM,iBAAiBD,OAAiB,EAAA;AACxC,IAAA,MAAM,WAAWA,OAAiB,EAAA;AAClC,IAAA,MAAM,gBAAgBA,OAAiB,EAAA;AAEvC,IAAM,MAAA,EAAE,QAAU,EAAA,cAAA,EAAmB,GAAAE,mCAAA,CAAc,EAAE,GAAK,EAAA,gBAAA,EAAkB,UAAY,EAAA,IAAA,EAAM,CAAA;AAE9F,IAAM,MAAA,EAAE,aAAe,EAAA,iBAAA,EAAmB,GAAK,EAAA,OAAA,EAAS,qBAAqB,mBAAqB,EAAA,aAAA,EAAkB,GAAAC,UAAA,CAAO,KAAK,CAAA;AAChI,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAEhC,IAAM,MAAA,cAAA,GAAiBC,iBAAa,CAAA,KAAA,EAAO,iBAAiB,CAAA;AAC5D,IAAM,MAAA,aAAA,GAAgBC,aAAS,MAAM;AACnC,MAAM,MAAA,MAAA,GAAS,WAAW,KAAU,KAAA,EAAA;AACpC,MAAA,IAAI,UAAU,cAAe,CAAA,KAAA;AAC3B,QAAO,OAAA,GAAA;AAAA,kBACG,aAAc,CAAA,KAAA;AAAA,KAC3B,CAAA;AAED,IAAM,MAAA,WAAA,GAAcC,kBAAc,CAAA,CAAC,GAAiB,KAAA;AAElD,MAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AAC3B,QAAA,aAAA,CAAc,QAAQ,UAAW,CAAA,KAAA;AACjC,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA;AACrB,OACC,aAAa,CAAA;AAEhB,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,IAAI,CAAC,UAAW,CAAA,KAAA;AACd,QAAA;AAEF,MAAA,MAAM,QAAQ,QAAS,EAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,GAAG,CAAA;AACvC,MAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,IAAA;AAAA,QAAK,CAC/B,IAAA,KAAA,IAAA,CAAK,EAAG,CAAA,QAAA,CAAS,WAAW,KAAK;AAAA,OACnC;AAAA,KACD,CAAA;AAED,IAA6B,4BAAA,CAAA;AAAA,MAC3B,UAAY,EAAA,IAAA;AAAA,MACZ,UAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA,EAAQC,kBAAM,CAAA,
|
|
1
|
+
{"version":3,"file":"NavigationMenuRoot.cjs","sources":["../../src/NavigationMenu/NavigationMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, Orientation } from './utils'\nimport { createContext, useDirection, useForwardExpose, useId } from '@/shared'\nimport { useCollection } from '@/Collection'\n\nexport interface NavigationMenuRootProps extends PrimitiveProps {\n /** The controlled value of the menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\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 /** The orientation of the menu. */\n orientation?: Orientation\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened.\n * @defaultValue 200\n */\n delayDuration?: number\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number\n\n /**\n * If `true`, menu cannot be open by click on trigger\n * @defaultValue false\n */\n disableClickTrigger?: boolean\n /**\n * If `true`, menu cannot be open by hover on trigger\n * @defaultValue false\n */\n disableHoverTrigger?: boolean\n /**\n * If `true`, menu will not close during pointer leave event\n * @defaultValue false\n */\n disablePointerLeaveClose?: boolean\n\n /**\n * When `true`, the element will be unmounted on closed state.\n *\n * @defaultValue `true`\n */\n unmountOnHide?: boolean\n}\nexport type NavigationMenuRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuContext {\n isRootMenu: boolean\n modelValue: Ref<string>\n previousValue: Ref<string>\n baseId: string\n dir: Ref<Direction>\n orientation: Orientation\n disableClickTrigger: Ref<boolean>\n disableHoverTrigger: Ref<boolean>\n unmountOnHide: Ref<boolean>\n rootNavigationMenu: Ref<HTMLElement | undefined>\n activeTrigger: Ref<HTMLElement | undefined>\n indicatorTrack: Ref<HTMLElement | undefined>\n onIndicatorTrackChange: (indicatorTrack: HTMLElement | undefined) => void\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement | undefined) => void\n onTriggerEnter: (itemValue: string) => void\n onTriggerLeave: () => void\n onContentEnter: (itemValue: string) => void\n onContentLeave: () => void\n onItemSelect: (itemValue: string) => void\n onItemDismiss: () => void\n}\n\nexport const [injectNavigationMenuContext, provideNavigationMenuContext]\n = createContext<NavigationMenuContext>(['NavigationMenuRoot', 'NavigationMenuSub'], 'NavigationMenuContext')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n ref,\n toRefs,\n watchEffect,\n} from 'vue'\nimport { refAutoReset, useDebounceFn, useVModel } from '@vueuse/core'\nimport {\n Primitive,\n} from '@/Primitive'\n\nconst props = withDefaults(defineProps<NavigationMenuRootProps>(), {\n modelValue: undefined,\n delayDuration: 200,\n skipDelayDuration: 300,\n orientation: 'horizontal',\n disableClickTrigger: false,\n disableHoverTrigger: false,\n unmountOnHide: true,\n as: 'nav',\n})\nconst emits = defineEmits<NavigationMenuRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst { forwardRef, currentElement: rootNavigationMenu } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\nconst activeTrigger = ref<HTMLElement>()\n\nconst { getItems, CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nconst { delayDuration, skipDelayDuration, dir: propDir, disableClickTrigger, disableHoverTrigger, unmountOnHide } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst isDelaySkipped = refAutoReset(false, skipDelayDuration)\nconst computedDelay = computed(() => {\n const isOpen = modelValue.value !== ''\n if (isOpen || isDelaySkipped.value)\n return 150 // 150ms for user to switch trigger or move into content view\n else return delayDuration.value\n})\n\nconst debouncedFn = useDebounceFn((val?: string) => {\n // passing `undefined` meant to reset the debounce timer\n if (typeof val === 'string') {\n previousValue.value = modelValue.value\n modelValue.value = val\n }\n}, computedDelay)\n\nwatchEffect(() => {\n if (!modelValue.value)\n return\n\n const items = getItems().map(i => i.ref)\n activeTrigger.value = items.find(item =>\n item.id.includes(modelValue.value),\n )\n})\n\nprovideNavigationMenuContext({\n isRootMenu: true,\n modelValue,\n previousValue,\n baseId: useId(undefined, 'reka-navigation-menu'),\n disableClickTrigger,\n disableHoverTrigger,\n dir,\n unmountOnHide,\n orientation: props.orientation,\n rootNavigationMenu,\n indicatorTrack,\n activeTrigger,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n onTriggerEnter: (val) => {\n debouncedFn(val)\n },\n onTriggerLeave: () => {\n isDelaySkipped.value = true\n debouncedFn('')\n },\n onContentEnter: () => {\n debouncedFn()\n },\n onContentLeave: () => {\n if (!props.disablePointerLeaveClose)\n debouncedFn('')\n },\n onItemSelect: (val) => {\n // When selecting item we trigger update immediately\n previousValue.value = modelValue.value\n modelValue.value = val\n },\n onItemDismiss: () => {\n previousValue.value = modelValue.value\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n aria-label=\"Main\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-orientation=\"orientation\"\n :dir=\"dir\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["createContext","useVModel","ref","useForwardExpose","useCollection","toRefs","useDirection","refAutoReset","computed","useDebounceFn","watchEffect","useId"],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { defineComponent, ref, toRefs, computed, watchEffect,
|
|
1
|
+
import { defineComponent, ref, toRefs, computed, watchEffect, createBlock, openBlock, unref, withCtx, createVNode, renderSlot } from 'vue';
|
|
2
2
|
import { useVModel, refAutoReset, useDebounceFn } from '@vueuse/core';
|
|
3
3
|
import { u as useCollection } from '../Collection/Collection.js';
|
|
4
|
+
import { c as createContext } from '../shared/createContext.js';
|
|
4
5
|
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
5
6
|
import { u as useDirection } from '../shared/useDirection.js';
|
|
6
7
|
import { u as useId } from '../shared/useId.js';
|
|
7
8
|
import { P as Primitive } from '../Primitive/Primitive.js';
|
|
8
|
-
import { c as createContext } from '../shared/createContext.js';
|
|
9
9
|
|
|
10
10
|
const [injectNavigationMenuContext, provideNavigationMenuContext] = createContext(["NavigationMenuRoot", "NavigationMenuSub"], "NavigationMenuContext");
|
|
11
11
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
12
12
|
__name: "NavigationMenuRoot",
|
|
13
13
|
props: {
|
|
14
|
-
modelValue: { default:
|
|
14
|
+
modelValue: { default: void 0 },
|
|
15
15
|
defaultValue: {},
|
|
16
16
|
dir: {},
|
|
17
17
|
orientation: { default: "horizontal" },
|
|
@@ -30,7 +30,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
30
30
|
const emits = __emit;
|
|
31
31
|
const modelValue = useVModel(props, "modelValue", emits, {
|
|
32
32
|
defaultValue: props.defaultValue ?? "",
|
|
33
|
-
passive: props.modelValue ===
|
|
33
|
+
passive: props.modelValue === void 0
|
|
34
34
|
});
|
|
35
35
|
const previousValue = ref("");
|
|
36
36
|
const { forwardRef, currentElement: rootNavigationMenu } = useForwardExpose();
|
|
@@ -65,7 +65,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
65
65
|
isRootMenu: true,
|
|
66
66
|
modelValue,
|
|
67
67
|
previousValue,
|
|
68
|
-
baseId: useId(
|
|
68
|
+
baseId: useId(void 0, "reka-navigation-menu"),
|
|
69
69
|
disableClickTrigger,
|
|
70
70
|
disableHoverTrigger,
|
|
71
71
|
dir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuRoot.js","sources":["../../src/NavigationMenu/NavigationMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, Orientation } from './utils'\nimport { createContext, useDirection, useForwardExpose, useId } from '@/shared'\nimport { useCollection } from '@/Collection'\n\nexport interface NavigationMenuRootProps extends PrimitiveProps {\n /** The controlled value of the menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\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 /** The orientation of the menu. */\n orientation?: Orientation\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened.\n * @defaultValue 200\n */\n delayDuration?: number\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number\n\n /**\n * If `true`, menu cannot be open by click on trigger\n * @defaultValue false\n */\n disableClickTrigger?: boolean\n /**\n * If `true`, menu cannot be open by hover on trigger\n * @defaultValue false\n */\n disableHoverTrigger?: boolean\n /**\n * If `true`, menu will not close during pointer leave event\n * @defaultValue false\n */\n disablePointerLeaveClose?: boolean\n\n /**\n * When `true`, the element will be unmounted on closed state.\n *\n * @defaultValue `true`\n */\n unmountOnHide?: boolean\n}\nexport type NavigationMenuRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuContext {\n isRootMenu: boolean\n modelValue: Ref<string>\n previousValue: Ref<string>\n baseId: string\n dir: Ref<Direction>\n orientation: Orientation\n disableClickTrigger: Ref<boolean>\n disableHoverTrigger: Ref<boolean>\n unmountOnHide: Ref<boolean>\n rootNavigationMenu: Ref<HTMLElement | undefined>\n activeTrigger: Ref<HTMLElement | undefined>\n indicatorTrack: Ref<HTMLElement | undefined>\n onIndicatorTrackChange: (indicatorTrack: HTMLElement | undefined) => void\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement | undefined) => void\n onTriggerEnter: (itemValue: string) => void\n onTriggerLeave: () => void\n onContentEnter: (itemValue: string) => void\n onContentLeave: () => void\n onItemSelect: (itemValue: string) => void\n onItemDismiss: () => void\n}\n\nexport const [injectNavigationMenuContext, provideNavigationMenuContext]\n = createContext<NavigationMenuContext>(['NavigationMenuRoot', 'NavigationMenuSub'], 'NavigationMenuContext')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n ref,\n toRefs,\n watchEffect,\n} from 'vue'\nimport { refAutoReset, useDebounceFn, useVModel } from '@vueuse/core'\nimport {\n Primitive,\n} from '@/Primitive'\n\nconst props = withDefaults(defineProps<NavigationMenuRootProps>(), {\n modelValue: undefined,\n delayDuration: 200,\n skipDelayDuration: 300,\n orientation: 'horizontal',\n disableClickTrigger: false,\n disableHoverTrigger: false,\n unmountOnHide: true,\n as: 'nav',\n})\nconst emits = defineEmits<NavigationMenuRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst { forwardRef, currentElement: rootNavigationMenu } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\nconst activeTrigger = ref<HTMLElement>()\n\nconst { getItems, CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nconst { delayDuration, skipDelayDuration, dir: propDir, disableClickTrigger, disableHoverTrigger, unmountOnHide } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst isDelaySkipped = refAutoReset(false, skipDelayDuration)\nconst computedDelay = computed(() => {\n const isOpen = modelValue.value !== ''\n if (isOpen || isDelaySkipped.value)\n return 150 // 150ms for user to switch trigger or move into content view\n else return delayDuration.value\n})\n\nconst debouncedFn = useDebounceFn((val?: string) => {\n // passing `undefined` meant to reset the debounce timer\n if (typeof val === 'string') {\n previousValue.value = modelValue.value\n modelValue.value = val\n }\n}, computedDelay)\n\nwatchEffect(() => {\n if (!modelValue.value)\n return\n\n const items = getItems().map(i => i.ref)\n activeTrigger.value = items.find(item =>\n item.id.includes(modelValue.value),\n )\n})\n\nprovideNavigationMenuContext({\n isRootMenu: true,\n modelValue,\n previousValue,\n baseId: useId(undefined, 'reka-navigation-menu'),\n disableClickTrigger,\n disableHoverTrigger,\n dir,\n unmountOnHide,\n orientation: props.orientation,\n rootNavigationMenu,\n indicatorTrack,\n activeTrigger,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n onTriggerEnter: (val) => {\n debouncedFn(val)\n },\n onTriggerLeave: () => {\n isDelaySkipped.value = true\n debouncedFn('')\n },\n onContentEnter: () => {\n debouncedFn()\n },\n onContentLeave: () => {\n if (!props.disablePointerLeaveClose)\n debouncedFn('')\n },\n onItemSelect: (val) => {\n // When selecting item we trigger update immediately\n previousValue.value = modelValue.value\n modelValue.value = val\n },\n onItemDismiss: () => {\n previousValue.value = modelValue.value\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n aria-label=\"Main\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-orientation=\"orientation\"\n :dir=\"dir\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":";;;;;;;;;AAwFa,MAAA,CAAC,6BAA6B,4BAA4B,CAAA,GACnE,cAAqC,CAAC,oBAAA,EAAsB,mBAAmB,CAAA,EAAG,uBAAuB;;;;;;;;;;;;;;;;;;;AAe7G,IAAA,MAAM,KAAQ,GAAA,OAAA;AAUd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AACD,IAAM,MAAA,aAAA,GAAgB,IAAI,EAAE,CAAA;AAE5B,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,kBAAA,KAAuB,gBAAiB,EAAA;AAE5E,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AACxC,IAAA,MAAM,WAAW,GAAiB,EAAA;AAClC,IAAA,MAAM,gBAAgB,GAAiB,EAAA;AAEvC,IAAM,MAAA,EAAE,QAAU,EAAA,cAAA,EAAmB,GAAA,aAAA,CAAc,EAAE,GAAK,EAAA,gBAAA,EAAkB,UAAY,EAAA,IAAA,EAAM,CAAA;AAE9F,IAAM,MAAA,EAAE,aAAe,EAAA,iBAAA,EAAmB,GAAK,EAAA,OAAA,EAAS,qBAAqB,mBAAqB,EAAA,aAAA,EAAkB,GAAA,MAAA,CAAO,KAAK,CAAA;AAChI,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAEhC,IAAM,MAAA,cAAA,GAAiB,YAAa,CAAA,KAAA,EAAO,iBAAiB,CAAA;AAC5D,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAM,MAAA,MAAA,GAAS,WAAW,KAAU,KAAA,EAAA;AACpC,MAAA,IAAI,UAAU,cAAe,CAAA,KAAA;AAC3B,QAAO,OAAA,GAAA;AAAA,kBACG,aAAc,CAAA,KAAA;AAAA,KAC3B,CAAA;AAED,IAAM,MAAA,WAAA,GAAc,aAAc,CAAA,CAAC,GAAiB,KAAA;AAElD,MAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AAC3B,QAAA,aAAA,CAAc,QAAQ,UAAW,CAAA,KAAA;AACjC,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA;AACrB,OACC,aAAa,CAAA;AAEhB,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,CAAC,UAAW,CAAA,KAAA;AACd,QAAA;AAEF,MAAA,MAAM,QAAQ,QAAS,EAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,GAAG,CAAA;AACvC,MAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,IAAA;AAAA,QAAK,CAC/B,IAAA,KAAA,IAAA,CAAK,EAAG,CAAA,QAAA,CAAS,WAAW,KAAK;AAAA,OACnC;AAAA,KACD,CAAA;AAED,IAA6B,4BAAA,CAAA;AAAA,MAC3B,UAAY,EAAA,IAAA;AAAA,MACZ,UAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA,EAAQ,KAAM,CAAA,
|
|
1
|
+
{"version":3,"file":"NavigationMenuRoot.js","sources":["../../src/NavigationMenu/NavigationMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, Orientation } from './utils'\nimport { createContext, useDirection, useForwardExpose, useId } from '@/shared'\nimport { useCollection } from '@/Collection'\n\nexport interface NavigationMenuRootProps extends PrimitiveProps {\n /** The controlled value of the menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\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 /** The orientation of the menu. */\n orientation?: Orientation\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened.\n * @defaultValue 200\n */\n delayDuration?: number\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number\n\n /**\n * If `true`, menu cannot be open by click on trigger\n * @defaultValue false\n */\n disableClickTrigger?: boolean\n /**\n * If `true`, menu cannot be open by hover on trigger\n * @defaultValue false\n */\n disableHoverTrigger?: boolean\n /**\n * If `true`, menu will not close during pointer leave event\n * @defaultValue false\n */\n disablePointerLeaveClose?: boolean\n\n /**\n * When `true`, the element will be unmounted on closed state.\n *\n * @defaultValue `true`\n */\n unmountOnHide?: boolean\n}\nexport type NavigationMenuRootEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuContext {\n isRootMenu: boolean\n modelValue: Ref<string>\n previousValue: Ref<string>\n baseId: string\n dir: Ref<Direction>\n orientation: Orientation\n disableClickTrigger: Ref<boolean>\n disableHoverTrigger: Ref<boolean>\n unmountOnHide: Ref<boolean>\n rootNavigationMenu: Ref<HTMLElement | undefined>\n activeTrigger: Ref<HTMLElement | undefined>\n indicatorTrack: Ref<HTMLElement | undefined>\n onIndicatorTrackChange: (indicatorTrack: HTMLElement | undefined) => void\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement | undefined) => void\n onTriggerEnter: (itemValue: string) => void\n onTriggerLeave: () => void\n onContentEnter: (itemValue: string) => void\n onContentLeave: () => void\n onItemSelect: (itemValue: string) => void\n onItemDismiss: () => void\n}\n\nexport const [injectNavigationMenuContext, provideNavigationMenuContext]\n = createContext<NavigationMenuContext>(['NavigationMenuRoot', 'NavigationMenuSub'], 'NavigationMenuContext')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n ref,\n toRefs,\n watchEffect,\n} from 'vue'\nimport { refAutoReset, useDebounceFn, useVModel } from '@vueuse/core'\nimport {\n Primitive,\n} from '@/Primitive'\n\nconst props = withDefaults(defineProps<NavigationMenuRootProps>(), {\n modelValue: undefined,\n delayDuration: 200,\n skipDelayDuration: 300,\n orientation: 'horizontal',\n disableClickTrigger: false,\n disableHoverTrigger: false,\n unmountOnHide: true,\n as: 'nav',\n})\nconst emits = defineEmits<NavigationMenuRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst { forwardRef, currentElement: rootNavigationMenu } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\nconst activeTrigger = ref<HTMLElement>()\n\nconst { getItems, CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nconst { delayDuration, skipDelayDuration, dir: propDir, disableClickTrigger, disableHoverTrigger, unmountOnHide } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst isDelaySkipped = refAutoReset(false, skipDelayDuration)\nconst computedDelay = computed(() => {\n const isOpen = modelValue.value !== ''\n if (isOpen || isDelaySkipped.value)\n return 150 // 150ms for user to switch trigger or move into content view\n else return delayDuration.value\n})\n\nconst debouncedFn = useDebounceFn((val?: string) => {\n // passing `undefined` meant to reset the debounce timer\n if (typeof val === 'string') {\n previousValue.value = modelValue.value\n modelValue.value = val\n }\n}, computedDelay)\n\nwatchEffect(() => {\n if (!modelValue.value)\n return\n\n const items = getItems().map(i => i.ref)\n activeTrigger.value = items.find(item =>\n item.id.includes(modelValue.value),\n )\n})\n\nprovideNavigationMenuContext({\n isRootMenu: true,\n modelValue,\n previousValue,\n baseId: useId(undefined, 'reka-navigation-menu'),\n disableClickTrigger,\n disableHoverTrigger,\n dir,\n unmountOnHide,\n orientation: props.orientation,\n rootNavigationMenu,\n indicatorTrack,\n activeTrigger,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n onTriggerEnter: (val) => {\n debouncedFn(val)\n },\n onTriggerLeave: () => {\n isDelaySkipped.value = true\n debouncedFn('')\n },\n onContentEnter: () => {\n debouncedFn()\n },\n onContentLeave: () => {\n if (!props.disablePointerLeaveClose)\n debouncedFn('')\n },\n onItemSelect: (val) => {\n // When selecting item we trigger update immediately\n previousValue.value = modelValue.value\n modelValue.value = val\n },\n onItemDismiss: () => {\n previousValue.value = modelValue.value\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n aria-label=\"Main\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-orientation=\"orientation\"\n :dir=\"dir\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":"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"}
|
|
@@ -22,19 +22,29 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
22
22
|
const emits = __emit;
|
|
23
23
|
const modelValue = core.useVModel(props, "modelValue", emits, {
|
|
24
24
|
defaultValue: props.defaultValue ?? "",
|
|
25
|
-
passive: props.modelValue ===
|
|
25
|
+
passive: props.modelValue === void 0
|
|
26
26
|
});
|
|
27
27
|
const previousValue = vue.ref("");
|
|
28
28
|
const menuContext = NavigationMenu_NavigationMenuRoot.injectNavigationMenuContext();
|
|
29
29
|
const { forwardRef, currentElement } = shared_useForwardExpose.useForwardExpose();
|
|
30
30
|
const indicatorTrack = vue.ref();
|
|
31
31
|
const viewport = vue.ref();
|
|
32
|
-
const
|
|
32
|
+
const activeTrigger = vue.ref();
|
|
33
|
+
const { getItems, CollectionSlot } = Collection_Collection.useCollection({ key: "NavigationMenu", isProvider: true });
|
|
34
|
+
vue.watchEffect(() => {
|
|
35
|
+
if (!modelValue.value)
|
|
36
|
+
return;
|
|
37
|
+
const items = getItems().map((i) => i.ref);
|
|
38
|
+
activeTrigger.value = items.find(
|
|
39
|
+
(item) => item.id.includes(modelValue.value)
|
|
40
|
+
);
|
|
41
|
+
});
|
|
33
42
|
NavigationMenu_NavigationMenuRoot.provideNavigationMenuContext({
|
|
34
43
|
...menuContext,
|
|
35
44
|
isRootMenu: false,
|
|
36
45
|
modelValue,
|
|
37
46
|
previousValue,
|
|
47
|
+
activeTrigger,
|
|
38
48
|
orientation: props.orientation,
|
|
39
49
|
rootNavigationMenu: currentElement,
|
|
40
50
|
indicatorTrack,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuSub.cjs","sources":["../../src/NavigationMenu/NavigationMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Orientation } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\n\nexport type NavigationMenuSubEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuSubProps extends PrimitiveProps {\n /** The controlled value of the sub menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\n defaultValue?: string\n /** The orientation of the menu. */\n orientation?: Orientation\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { injectNavigationMenuContext, provideNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<NavigationMenuSubProps>(), {\n orientation: 'horizontal',\n})\nconst emits = defineEmits<NavigationMenuSubEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst menuContext = injectNavigationMenuContext()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\n\nconst { CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nprovideNavigationMenuContext({\n ...menuContext,\n isRootMenu: false,\n modelValue,\n previousValue,\n orientation: props.orientation,\n rootNavigationMenu: currentElement,\n indicatorTrack,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n\n onTriggerEnter: (val) => {\n modelValue.value = val\n },\n onTriggerLeave: () => {\n // do nothing for submenu\n },\n onContentEnter: () => {\n // do nothing for submenu\n },\n onContentLeave: () => {\n // do nothing for submenu\n },\n onItemSelect: (val) => {\n modelValue.value = val\n },\n onItemDismiss: () => {\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :data-orientation=\"orientation\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["useVModel","ref","injectNavigationMenuContext","useForwardExpose","useCollection","provideNavigationMenuContext"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkCA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAAA,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AACD,IAAM,MAAA,aAAA,GAAgBC,QAAI,EAAE,CAAA;AAE5B,IAAA,MAAM,cAAcC,6DAA4B,EAAA;AAChD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAA,MAAM,iBAAiBF,OAAiB,EAAA;AACxC,IAAA,MAAM,WAAWA,OAAiB,EAAA;
|
|
1
|
+
{"version":3,"file":"NavigationMenuSub.cjs","sources":["../../src/NavigationMenu/NavigationMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Orientation } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\n\nexport type NavigationMenuSubEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuSubProps extends PrimitiveProps {\n /** The controlled value of the sub menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\n defaultValue?: string\n /** The orientation of the menu. */\n orientation?: Orientation\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { injectNavigationMenuContext, provideNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<NavigationMenuSubProps>(), {\n orientation: 'horizontal',\n})\nconst emits = defineEmits<NavigationMenuSubEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst menuContext = injectNavigationMenuContext()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\nconst activeTrigger = ref<HTMLElement>()\n\nconst { getItems, CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nwatchEffect(() => {\n if (!modelValue.value)\n return\n\n const items = getItems().map(i => i.ref)\n activeTrigger.value = items.find(item =>\n item.id.includes(modelValue.value),\n )\n})\n\nprovideNavigationMenuContext({\n ...menuContext,\n isRootMenu: false,\n modelValue,\n previousValue,\n activeTrigger,\n orientation: props.orientation,\n rootNavigationMenu: currentElement,\n indicatorTrack,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n\n onTriggerEnter: (val) => {\n modelValue.value = val\n },\n onTriggerLeave: () => {\n // do nothing for submenu\n },\n onContentEnter: () => {\n // do nothing for submenu\n },\n onContentLeave: () => {\n // do nothing for submenu\n },\n onItemSelect: (val) => {\n modelValue.value = val\n },\n onItemDismiss: () => {\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :data-orientation=\"orientation\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["useVModel","ref","injectNavigationMenuContext","useForwardExpose","useCollection","watchEffect","provideNavigationMenuContext"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkCA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAAA,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AACD,IAAM,MAAA,aAAA,GAAgBC,QAAI,EAAE,CAAA;AAE5B,IAAA,MAAM,cAAcC,6DAA4B,EAAA;AAChD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAA,MAAM,iBAAiBF,OAAiB,EAAA;AACxC,IAAA,MAAM,WAAWA,OAAiB,EAAA;AAClC,IAAA,MAAM,gBAAgBA,OAAiB,EAAA;AAEvC,IAAM,MAAA,EAAE,QAAU,EAAA,cAAA,EAAmB,GAAAG,mCAAA,CAAc,EAAE,GAAK,EAAA,gBAAA,EAAkB,UAAY,EAAA,IAAA,EAAM,CAAA;AAE9F,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,IAAI,CAAC,UAAW,CAAA,KAAA;AACd,QAAA;AAEF,MAAA,MAAM,QAAQ,QAAS,EAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,GAAG,CAAA;AACvC,MAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,IAAA;AAAA,QAAK,CAC/B,IAAA,KAAA,IAAA,CAAK,EAAG,CAAA,QAAA,CAAS,WAAW,KAAK;AAAA,OACnC;AAAA,KACD,CAAA;AAED,IAA6BC,8DAAA,CAAA;AAAA,MAC3B,GAAG,WAAA;AAAA,MACH,UAAY,EAAA,KAAA;AAAA,MACZ,UAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,kBAAoB,EAAA,cAAA;AAAA,MACpB,cAAA;AAAA,MACA,sBAAA,EAAwB,CAAC,GAAQ,KAAA;AAC/B,QAAA,cAAA,CAAe,KAAQ,GAAA,GAAA;AAAA,OACzB;AAAA,MACA,QAAA;AAAA,MACA,gBAAA,EAAkB,CAAC,GAAQ,KAAA;AACzB,QAAA,QAAA,CAAS,KAAQ,GAAA,GAAA;AAAA,OACnB;AAAA,MAEA,cAAA,EAAgB,CAAC,GAAQ,KAAA;AACvB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OACrB;AAAA,MACA,gBAAgB,MAAM;AAAA,OAEtB;AAAA,MACA,gBAAgB,MAAM;AAAA,OAEtB;AAAA,MACA,gBAAgB,MAAM;AAAA,OAEtB;AAAA,MACA,YAAA,EAAc,CAAC,GAAQ,KAAA;AACrB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OACrB;AAAA,MACA,eAAe,MAAM;AACnB,QAAA,UAAA,CAAW,KAAQ,GAAA,EAAA;AAAA;AACrB,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref,
|
|
1
|
+
import { defineComponent, ref, watchEffect, createBlock, openBlock, unref, withCtx, createVNode, renderSlot } from 'vue';
|
|
2
2
|
import { useVModel } from '@vueuse/core';
|
|
3
3
|
import { u as useCollection } from '../Collection/Collection.js';
|
|
4
4
|
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
@@ -20,19 +20,29 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
20
20
|
const emits = __emit;
|
|
21
21
|
const modelValue = useVModel(props, "modelValue", emits, {
|
|
22
22
|
defaultValue: props.defaultValue ?? "",
|
|
23
|
-
passive: props.modelValue ===
|
|
23
|
+
passive: props.modelValue === void 0
|
|
24
24
|
});
|
|
25
25
|
const previousValue = ref("");
|
|
26
26
|
const menuContext = injectNavigationMenuContext();
|
|
27
27
|
const { forwardRef, currentElement } = useForwardExpose();
|
|
28
28
|
const indicatorTrack = ref();
|
|
29
29
|
const viewport = ref();
|
|
30
|
-
const
|
|
30
|
+
const activeTrigger = ref();
|
|
31
|
+
const { getItems, CollectionSlot } = useCollection({ key: "NavigationMenu", isProvider: true });
|
|
32
|
+
watchEffect(() => {
|
|
33
|
+
if (!modelValue.value)
|
|
34
|
+
return;
|
|
35
|
+
const items = getItems().map((i) => i.ref);
|
|
36
|
+
activeTrigger.value = items.find(
|
|
37
|
+
(item) => item.id.includes(modelValue.value)
|
|
38
|
+
);
|
|
39
|
+
});
|
|
31
40
|
provideNavigationMenuContext({
|
|
32
41
|
...menuContext,
|
|
33
42
|
isRootMenu: false,
|
|
34
43
|
modelValue,
|
|
35
44
|
previousValue,
|
|
45
|
+
activeTrigger,
|
|
36
46
|
orientation: props.orientation,
|
|
37
47
|
rootNavigationMenu: currentElement,
|
|
38
48
|
indicatorTrack,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationMenuSub.js","sources":["../../src/NavigationMenu/NavigationMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Orientation } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\n\nexport type NavigationMenuSubEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuSubProps extends PrimitiveProps {\n /** The controlled value of the sub menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\n defaultValue?: string\n /** The orientation of the menu. */\n orientation?: Orientation\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { injectNavigationMenuContext, provideNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<NavigationMenuSubProps>(), {\n orientation: 'horizontal',\n})\nconst emits = defineEmits<NavigationMenuSubEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst menuContext = injectNavigationMenuContext()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\n\nconst { CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nprovideNavigationMenuContext({\n ...menuContext,\n isRootMenu: false,\n modelValue,\n previousValue,\n orientation: props.orientation,\n rootNavigationMenu: currentElement,\n indicatorTrack,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n\n onTriggerEnter: (val) => {\n modelValue.value = val\n },\n onTriggerLeave: () => {\n // do nothing for submenu\n },\n onContentEnter: () => {\n // do nothing for submenu\n },\n onContentLeave: () => {\n // do nothing for submenu\n },\n onItemSelect: (val) => {\n modelValue.value = val\n },\n onItemDismiss: () => {\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :data-orientation=\"orientation\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AACD,IAAM,MAAA,aAAA,GAAgB,IAAI,EAAE,CAAA;AAE5B,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAChD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AACxC,IAAA,MAAM,WAAW,GAAiB,EAAA;
|
|
1
|
+
{"version":3,"file":"NavigationMenuSub.js","sources":["../../src/NavigationMenu/NavigationMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Orientation } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useCollection } from '@/Collection'\n\nexport type NavigationMenuSubEmits = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: string]\n}\n\nexport interface NavigationMenuSubProps extends PrimitiveProps {\n /** The controlled value of the sub menu item to activate. Can be used as `v-model`. */\n modelValue?: string\n /**\n * The value of the menu item that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\n defaultValue?: string\n /** The orientation of the menu. */\n orientation?: Orientation\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { injectNavigationMenuContext, provideNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<NavigationMenuSubProps>(), {\n orientation: 'horizontal',\n})\nconst emits = defineEmits<NavigationMenuSubEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? '',\n passive: (props.modelValue === undefined) as false,\n}) as Ref<string>\nconst previousValue = ref('')\n\nconst menuContext = injectNavigationMenuContext()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst indicatorTrack = ref<HTMLElement>()\nconst viewport = ref<HTMLElement>()\nconst activeTrigger = ref<HTMLElement>()\n\nconst { getItems, CollectionSlot } = useCollection({ key: 'NavigationMenu', isProvider: true })\n\nwatchEffect(() => {\n if (!modelValue.value)\n return\n\n const items = getItems().map(i => i.ref)\n activeTrigger.value = items.find(item =>\n item.id.includes(modelValue.value),\n )\n})\n\nprovideNavigationMenuContext({\n ...menuContext,\n isRootMenu: false,\n modelValue,\n previousValue,\n activeTrigger,\n orientation: props.orientation,\n rootNavigationMenu: currentElement,\n indicatorTrack,\n onIndicatorTrackChange: (val) => {\n indicatorTrack.value = val\n },\n viewport,\n onViewportChange: (val) => {\n viewport.value = val\n },\n\n onTriggerEnter: (val) => {\n modelValue.value = val\n },\n onTriggerLeave: () => {\n // do nothing for submenu\n },\n onContentEnter: () => {\n // do nothing for submenu\n },\n onContentLeave: () => {\n // do nothing for submenu\n },\n onItemSelect: (val) => {\n modelValue.value = val\n },\n onItemDismiss: () => {\n modelValue.value = ''\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :data-orientation=\"orientation\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n data-reka-navigation-menu\n >\n <slot :model-value=\"modelValue\" />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,MAAM,YAAgB,IAAA,EAAA;AAAA,MACpC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AACD,IAAM,MAAA,aAAA,GAAgB,IAAI,EAAE,CAAA;AAE5B,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAChD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AACxC,IAAA,MAAM,WAAW,GAAiB,EAAA;AAClC,IAAA,MAAM,gBAAgB,GAAiB,EAAA;AAEvC,IAAM,MAAA,EAAE,QAAU,EAAA,cAAA,EAAmB,GAAA,aAAA,CAAc,EAAE,GAAK,EAAA,gBAAA,EAAkB,UAAY,EAAA,IAAA,EAAM,CAAA;AAE9F,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,CAAC,UAAW,CAAA,KAAA;AACd,QAAA;AAEF,MAAA,MAAM,QAAQ,QAAS,EAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,GAAG,CAAA;AACvC,MAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,IAAA;AAAA,QAAK,CAC/B,IAAA,KAAA,IAAA,CAAK,EAAG,CAAA,QAAA,CAAS,WAAW,KAAK;AAAA,OACnC;AAAA,KACD,CAAA;AAED,IAA6B,4BAAA,CAAA;AAAA,MAC3B,GAAG,WAAA;AAAA,MACH,UAAY,EAAA,KAAA;AAAA,MACZ,UAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,kBAAoB,EAAA,cAAA;AAAA,MACpB,cAAA;AAAA,MACA,sBAAA,EAAwB,CAAC,GAAQ,KAAA;AAC/B,QAAA,cAAA,CAAe,KAAQ,GAAA,GAAA;AAAA,OACzB;AAAA,MACA,QAAA;AAAA,MACA,gBAAA,EAAkB,CAAC,GAAQ,KAAA;AACzB,QAAA,QAAA,CAAS,KAAQ,GAAA,GAAA;AAAA,OACnB;AAAA,MAEA,cAAA,EAAgB,CAAC,GAAQ,KAAA;AACvB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OACrB;AAAA,MACA,gBAAgB,MAAM;AAAA,OAEtB;AAAA,MACA,gBAAgB,MAAM;AAAA,OAEtB;AAAA,MACA,gBAAgB,MAAM;AAAA,OAEtB;AAAA,MACA,YAAA,EAAc,CAAC,GAAQ,KAAA;AACrB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OACrB;AAAA,MACA,eAAe,MAAM;AACnB,QAAA,UAAA,CAAW,KAAQ,GAAA,EAAA;AAAA;AACrB,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
|