reka-ui 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Accordion/AccordionItem.cjs.map +1 -1
- package/dist/Accordion/AccordionItem.js.map +1 -1
- package/dist/Accordion/AccordionRoot.cjs.map +1 -1
- package/dist/Accordion/AccordionRoot.js.map +1 -1
- package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
- package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
- package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
- package/dist/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/Avatar/AvatarFallback.cjs +11 -14
- package/dist/Avatar/AvatarFallback.cjs.map +1 -1
- package/dist/Avatar/AvatarFallback.js +12 -15
- package/dist/Avatar/AvatarFallback.js.map +1 -1
- package/dist/Avatar/AvatarImage.cjs +3 -2
- package/dist/Avatar/AvatarImage.cjs.map +1 -1
- package/dist/Avatar/AvatarImage.js +3 -2
- package/dist/Avatar/AvatarImage.js.map +1 -1
- package/dist/Avatar/AvatarRoot.cjs +1 -1
- package/dist/Avatar/AvatarRoot.cjs.map +1 -1
- package/dist/Avatar/AvatarRoot.js +1 -1
- package/dist/Avatar/AvatarRoot.js.map +1 -1
- package/dist/Avatar/utils.cjs +43 -16
- package/dist/Avatar/utils.cjs.map +1 -1
- package/dist/Avatar/utils.js +44 -17
- package/dist/Avatar/utils.js.map +1 -1
- package/dist/Calendar/CalendarCell.cjs +2 -2
- package/dist/Calendar/CalendarCell.cjs.map +1 -1
- package/dist/Calendar/CalendarCell.js +2 -2
- package/dist/Calendar/CalendarCell.js.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.cjs +5 -1
- package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.js +5 -1
- package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
- package/dist/Calendar/CalendarGrid.cjs.map +1 -1
- package/dist/Calendar/CalendarGrid.js.map +1 -1
- package/dist/Calendar/CalendarHeading.cjs.map +1 -1
- package/dist/Calendar/CalendarHeading.js.map +1 -1
- package/dist/Calendar/CalendarNext.cjs.map +1 -1
- package/dist/Calendar/CalendarNext.js.map +1 -1
- package/dist/Calendar/CalendarPrev.cjs.map +1 -1
- package/dist/Calendar/CalendarPrev.js.map +1 -1
- package/dist/Calendar/CalendarRoot.cjs +7 -4
- package/dist/Calendar/CalendarRoot.cjs.map +1 -1
- package/dist/Calendar/CalendarRoot.js +7 -4
- package/dist/Calendar/CalendarRoot.js.map +1 -1
- package/dist/Calendar/useCalendar.cjs +2 -2
- package/dist/Calendar/useCalendar.cjs.map +1 -1
- package/dist/Calendar/useCalendar.js +2 -2
- package/dist/Calendar/useCalendar.js.map +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
- package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxRoot.js.map +1 -1
- package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
- package/dist/Collapsible/CollapsibleContent.js.map +1 -1
- package/dist/Collapsible/CollapsibleRoot.cjs +2 -0
- package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
- package/dist/Collapsible/CollapsibleRoot.js +2 -0
- package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
- package/dist/Collection/Collection.cjs.map +1 -1
- package/dist/Collection/Collection.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
- package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
- package/dist/Combobox/ComboboxGroup.js.map +1 -1
- package/dist/Combobox/ComboboxInput.cjs.map +1 -1
- package/dist/Combobox/ComboboxInput.js.map +1 -1
- package/dist/Combobox/ComboboxItem.cjs.map +1 -1
- package/dist/Combobox/ComboboxItem.js.map +1 -1
- package/dist/Combobox/ComboboxRoot.cjs +1 -2
- package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
- package/dist/Combobox/ComboboxRoot.js +1 -2
- package/dist/Combobox/ComboboxRoot.js.map +1 -1
- package/dist/Combobox/ComboboxTrigger.cjs.map +1 -1
- package/dist/Combobox/ComboboxTrigger.js.map +1 -1
- package/dist/Combobox/ComboboxViewport.cjs.map +1 -1
- package/dist/Combobox/ComboboxViewport.js.map +1 -1
- package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
- package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
- package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
- package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
- package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuSub.js +1 -1
- package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
- package/dist/DateField/DateFieldInput.cjs +1 -0
- package/dist/DateField/DateFieldInput.cjs.map +1 -1
- package/dist/DateField/DateFieldInput.js +1 -0
- package/dist/DateField/DateFieldInput.js.map +1 -1
- package/dist/DateField/DateFieldRoot.cjs +7 -1
- package/dist/DateField/DateFieldRoot.cjs.map +1 -1
- package/dist/DateField/DateFieldRoot.js +7 -1
- package/dist/DateField/DateFieldRoot.js.map +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
- package/dist/DatePicker/DatePickerContent.cjs +8 -3
- package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
- package/dist/DatePicker/DatePickerContent.js +9 -4
- package/dist/DatePicker/DatePickerContent.js.map +1 -1
- package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
- package/dist/DatePicker/DatePickerHeading.js.map +1 -1
- package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
- package/dist/DatePicker/DatePickerNext.js.map +1 -1
- package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
- package/dist/DatePicker/DatePickerPrev.js.map +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +1 -0
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +1 -0
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DateRangeField/DateRangeFieldInput.cjs +1 -0
- package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldInput.js +1 -0
- package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.cjs +13 -9
- package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.js +13 -9
- package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.cjs +2 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.js +2 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -3
- package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.js +9 -4
- package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.cjs +6 -2
- package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js +6 -2
- package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
- package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
- package/dist/Dialog/DialogContentImpl.js.map +1 -1
- package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
- package/dist/Dialog/DialogContentNonModal.js.map +1 -1
- package/dist/Dialog/DialogRoot.cjs +4 -1
- package/dist/Dialog/DialogRoot.cjs.map +1 -1
- package/dist/Dialog/DialogRoot.js +4 -1
- package/dist/Dialog/DialogRoot.js.map +1 -1
- package/dist/Dialog/DialogTrigger.cjs.map +1 -1
- package/dist/Dialog/DialogTrigger.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayerBranch.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayerBranch.js.map +1 -1
- package/dist/DismissableLayer/utils.cjs +7 -3
- package/dist/DismissableLayer/utils.cjs.map +1 -1
- package/dist/DismissableLayer/utils.js +8 -4
- package/dist/DismissableLayer/utils.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
- package/dist/Editable/EditableInput.cjs.map +1 -1
- package/dist/Editable/EditableInput.js.map +1 -1
- package/dist/Editable/EditableRoot.cjs +1 -1
- package/dist/Editable/EditableRoot.cjs.map +1 -1
- package/dist/Editable/EditableRoot.js +1 -1
- package/dist/Editable/EditableRoot.js.map +1 -1
- package/dist/FocusScope/FocusScope.cjs.map +1 -1
- package/dist/FocusScope/FocusScope.js.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
- package/dist/HoverCard/HoverCardRoot.js +1 -1
- package/dist/HoverCard/HoverCardRoot.js.map +1 -1
- package/dist/Listbox/ListboxFilter.cjs.map +1 -1
- package/dist/Listbox/ListboxFilter.js.map +1 -1
- package/dist/Listbox/ListboxItem.cjs.map +1 -1
- package/dist/Listbox/ListboxItem.js.map +1 -1
- package/dist/Listbox/ListboxRoot.cjs +1 -1
- package/dist/Listbox/ListboxRoot.cjs.map +1 -1
- package/dist/Listbox/ListboxRoot.js +1 -1
- package/dist/Listbox/ListboxRoot.js.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.cjs +3 -3
- package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.js +3 -3
- package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
- package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
- package/dist/Menu/MenuCheckboxItem.js.map +1 -1
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js.map +1 -1
- package/dist/Menu/MenuItemImpl.cjs.map +1 -1
- package/dist/Menu/MenuItemImpl.js.map +1 -1
- package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
- package/dist/Menu/MenuItemIndicator.js.map +1 -1
- package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
- package/dist/Menu/MenuRadioGroup.js.map +1 -1
- package/dist/Menu/MenuRoot.cjs +1 -1
- package/dist/Menu/MenuRoot.cjs.map +1 -1
- package/dist/Menu/MenuRoot.js +1 -1
- package/dist/Menu/MenuRoot.js.map +1 -1
- package/dist/Menu/MenuSub.cjs +1 -1
- package/dist/Menu/MenuSub.cjs.map +1 -1
- package/dist/Menu/MenuSub.js +1 -1
- package/dist/Menu/MenuSub.js.map +1 -1
- package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
- package/dist/Menu/MenuSubTrigger.js.map +1 -1
- package/dist/Menubar/MenubarContent.cjs.map +1 -1
- package/dist/Menubar/MenubarContent.js.map +1 -1
- package/dist/Menubar/MenubarMenu.cjs.map +1 -1
- package/dist/Menubar/MenubarMenu.js.map +1 -1
- package/dist/Menubar/MenubarRoot.cjs.map +1 -1
- package/dist/Menubar/MenubarRoot.js.map +1 -1
- package/dist/Menubar/MenubarSub.cjs +1 -1
- package/dist/Menubar/MenubarSub.cjs.map +1 -1
- package/dist/Menubar/MenubarSub.js +1 -1
- package/dist/Menubar/MenubarSub.js.map +1 -1
- package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
- package/dist/Menubar/MenubarTrigger.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
- package/dist/NumberField/NumberFieldInput.cjs +2 -2
- package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
- package/dist/NumberField/NumberFieldInput.js +2 -2
- package/dist/NumberField/NumberFieldInput.js.map +1 -1
- package/dist/NumberField/NumberFieldRoot.cjs +8 -5
- package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
- package/dist/NumberField/NumberFieldRoot.js +8 -5
- package/dist/NumberField/NumberFieldRoot.js.map +1 -1
- package/dist/Pagination/PaginationFirst.cjs.map +1 -1
- package/dist/Pagination/PaginationFirst.js.map +1 -1
- package/dist/Pagination/PaginationLast.cjs.map +1 -1
- package/dist/Pagination/PaginationLast.js.map +1 -1
- package/dist/Pagination/PaginationList.cjs.map +1 -1
- package/dist/Pagination/PaginationList.js.map +1 -1
- package/dist/Pagination/PaginationListItem.cjs.map +1 -1
- package/dist/Pagination/PaginationListItem.js.map +1 -1
- package/dist/Pagination/PaginationNext.cjs.map +1 -1
- package/dist/Pagination/PaginationNext.js.map +1 -1
- package/dist/Pagination/PaginationPrev.cjs.map +1 -1
- package/dist/Pagination/PaginationPrev.js.map +1 -1
- package/dist/Pagination/PaginationRoot.cjs.map +1 -1
- package/dist/Pagination/PaginationRoot.js.map +1 -1
- package/dist/PinInput/PinInputInput.cjs +1 -1
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +1 -1
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/PinInput/PinInputRoot.cjs.map +1 -1
- package/dist/PinInput/PinInputRoot.js.map +1 -1
- package/dist/Popover/PopoverAnchor.cjs.map +1 -1
- package/dist/Popover/PopoverAnchor.js.map +1 -1
- package/dist/Popover/PopoverContentModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentModal.js.map +1 -1
- package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentNonModal.js.map +1 -1
- package/dist/Popover/PopoverRoot.cjs +1 -1
- package/dist/Popover/PopoverRoot.cjs.map +1 -1
- package/dist/Popover/PopoverRoot.js +1 -1
- package/dist/Popover/PopoverRoot.js.map +1 -1
- package/dist/Popover/PopoverTrigger.cjs.map +1 -1
- package/dist/Popover/PopoverTrigger.js.map +1 -1
- package/dist/Popper/PopperAnchor.cjs.map +1 -1
- package/dist/Popper/PopperAnchor.js.map +1 -1
- package/dist/Popper/PopperArrow.cjs.map +1 -1
- package/dist/Popper/PopperArrow.js.map +1 -1
- package/dist/Popper/PopperContent.cjs.map +1 -1
- package/dist/Popper/PopperContent.js.map +1 -1
- package/dist/Presence/Presence.cjs.map +1 -1
- package/dist/Presence/Presence.js.map +1 -1
- package/dist/Presence/usePresence.cjs.map +1 -1
- package/dist/Presence/usePresence.js.map +1 -1
- package/dist/Primitive/Slot.cjs +1 -9
- package/dist/Primitive/Slot.cjs.map +1 -1
- package/dist/Primitive/Slot.js +1 -9
- package/dist/Primitive/Slot.js.map +1 -1
- package/dist/Progress/ProgressRoot.cjs +3 -2
- package/dist/Progress/ProgressRoot.cjs.map +1 -1
- package/dist/Progress/ProgressRoot.js +3 -2
- package/dist/Progress/ProgressRoot.js.map +1 -1
- package/dist/RadioGroup/Radio.cjs.map +1 -1
- package/dist/RadioGroup/Radio.js.map +1 -1
- package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
- package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
- package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
- package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarCell.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCell.js +2 -2
- package/dist/RangeCalendar/RangeCalendarCell.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +28 -9
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js +28 -9
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +26 -9
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +26 -9
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.cjs +21 -4
- package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.js +21 -4
- package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
- package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.js +1 -1
- package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
- package/dist/Select/BubbleSelect.cjs.map +1 -1
- package/dist/Select/BubbleSelect.js.map +1 -1
- package/dist/Select/SelectContent.cjs.map +1 -1
- package/dist/Select/SelectContent.js.map +1 -1
- package/dist/Select/SelectContentImpl.cjs +1 -1
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +1 -1
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/Select/SelectItem.cjs.map +1 -1
- package/dist/Select/SelectItem.js.map +1 -1
- package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
- package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
- package/dist/Select/SelectItemAlignedPosition.js +1 -1
- package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
- package/dist/Select/SelectItemText.cjs.map +1 -1
- package/dist/Select/SelectItemText.js.map +1 -1
- package/dist/Select/SelectProvider.cjs.map +1 -1
- package/dist/Select/SelectProvider.js.map +1 -1
- package/dist/Select/SelectRoot.cjs +3 -1
- package/dist/Select/SelectRoot.cjs.map +1 -1
- package/dist/Select/SelectRoot.js +3 -1
- package/dist/Select/SelectRoot.js.map +1 -1
- package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
- package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
- package/dist/Select/SelectTrigger.cjs.map +1 -1
- package/dist/Select/SelectTrigger.js.map +1 -1
- package/dist/Select/SelectValue.cjs.map +1 -1
- package/dist/Select/SelectValue.js.map +1 -1
- package/dist/Select/SelectViewport.cjs.map +1 -1
- package/dist/Select/SelectViewport.js.map +1 -1
- package/dist/Slider/SliderHorizontal.cjs +7 -4
- package/dist/Slider/SliderHorizontal.cjs.map +1 -1
- package/dist/Slider/SliderHorizontal.js +7 -4
- package/dist/Slider/SliderHorizontal.js.map +1 -1
- package/dist/Slider/SliderRange.cjs +2 -2
- package/dist/Slider/SliderRange.cjs.map +1 -1
- package/dist/Slider/SliderRange.js +2 -2
- package/dist/Slider/SliderRange.js.map +1 -1
- package/dist/Slider/SliderRoot.cjs.map +1 -1
- package/dist/Slider/SliderRoot.js.map +1 -1
- package/dist/Slider/SliderThumb.cjs.map +1 -1
- package/dist/Slider/SliderThumb.js.map +1 -1
- package/dist/Slider/SliderThumbImpl.cjs +3 -3
- package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
- package/dist/Slider/SliderThumbImpl.js +3 -3
- package/dist/Slider/SliderThumbImpl.js.map +1 -1
- package/dist/Slider/SliderVertical.cjs +7 -4
- package/dist/Slider/SliderVertical.cjs.map +1 -1
- package/dist/Slider/SliderVertical.js +7 -4
- package/dist/Slider/SliderVertical.js.map +1 -1
- package/dist/Slider/utils.cjs +1 -1
- package/dist/Slider/utils.cjs.map +1 -1
- package/dist/Slider/utils.js +1 -1
- package/dist/Slider/utils.js.map +1 -1
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js.map +1 -1
- package/dist/Splitter/SplitterPanel.cjs +16 -10
- package/dist/Splitter/SplitterPanel.cjs.map +1 -1
- package/dist/Splitter/SplitterPanel.js +16 -10
- package/dist/Splitter/SplitterPanel.js.map +1 -1
- package/dist/Stepper/StepperIndicator.cjs.map +1 -1
- package/dist/Stepper/StepperIndicator.js.map +1 -1
- package/dist/Stepper/StepperItem.cjs.map +1 -1
- package/dist/Stepper/StepperItem.js.map +1 -1
- package/dist/Stepper/StepperRoot.cjs +30 -3
- package/dist/Stepper/StepperRoot.cjs.map +1 -1
- package/dist/Stepper/StepperRoot.js +30 -3
- package/dist/Stepper/StepperRoot.js.map +1 -1
- package/dist/Stepper/StepperTrigger.cjs.map +1 -1
- package/dist/Stepper/StepperTrigger.js.map +1 -1
- package/dist/Switch/SwitchRoot.cjs.map +1 -1
- package/dist/Switch/SwitchRoot.js.map +1 -1
- package/dist/Tabs/TabsContent.cjs.map +1 -1
- package/dist/Tabs/TabsContent.js.map +1 -1
- package/dist/Tabs/TabsIndicator.cjs.map +1 -1
- package/dist/Tabs/TabsIndicator.js.map +1 -1
- package/dist/Tabs/TabsList.cjs.map +1 -1
- package/dist/Tabs/TabsList.js.map +1 -1
- package/dist/Tabs/TabsRoot.cjs.map +1 -1
- package/dist/Tabs/TabsRoot.js.map +1 -1
- package/dist/Tabs/TabsTrigger.cjs.map +1 -1
- package/dist/Tabs/TabsTrigger.js.map +1 -1
- package/dist/TagsInput/TagsInputInput.cjs +1 -0
- package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
- package/dist/TagsInput/TagsInputInput.js +1 -0
- package/dist/TagsInput/TagsInputInput.js.map +1 -1
- package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItem.js.map +1 -1
- package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
- package/dist/TagsInput/TagsInputRoot.cjs +1 -1
- package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
- package/dist/TagsInput/TagsInputRoot.js +1 -1
- package/dist/TagsInput/TagsInputRoot.js.map +1 -1
- package/dist/TimeField/TimeFieldInput.cjs +1 -0
- package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
- package/dist/TimeField/TimeFieldInput.js +1 -0
- package/dist/TimeField/TimeFieldInput.js.map +1 -1
- package/dist/TimeField/TimeFieldRoot.cjs +13 -4
- package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
- package/dist/TimeField/TimeFieldRoot.js +13 -4
- package/dist/TimeField/TimeFieldRoot.js.map +1 -1
- package/dist/Toast/ToastAnnounce.cjs.map +1 -1
- package/dist/Toast/ToastAnnounce.js.map +1 -1
- package/dist/Toast/ToastRoot.cjs.map +1 -1
- package/dist/Toast/ToastRoot.js.map +1 -1
- package/dist/Toast/ToastRootImpl.cjs +1 -1
- package/dist/Toast/ToastRootImpl.cjs.map +1 -1
- package/dist/Toast/ToastRootImpl.js +1 -1
- package/dist/Toast/ToastRootImpl.js.map +1 -1
- package/dist/Toast/ToastViewport.cjs +1 -1
- package/dist/Toast/ToastViewport.cjs.map +1 -1
- package/dist/Toast/ToastViewport.js +1 -1
- package/dist/Toast/ToastViewport.js.map +1 -1
- package/dist/Toggle/Toggle.cjs.map +1 -1
- package/dist/Toggle/Toggle.js.map +1 -1
- package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
- package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
- package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
- package/dist/Toolbar/ToolbarRoot.js.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +1 -1
- package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
- package/dist/Tooltip/TooltipRoot.cjs +1 -1
- package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
- package/dist/Tooltip/TooltipRoot.js +1 -1
- package/dist/Tooltip/TooltipRoot.js.map +1 -1
- package/dist/Tooltip/TooltipTrigger.cjs +1 -1
- package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
- package/dist/Tooltip/TooltipTrigger.js +1 -1
- package/dist/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/Tree/TreeItem.cjs +4 -1
- package/dist/Tree/TreeItem.cjs.map +1 -1
- package/dist/Tree/TreeItem.js +4 -1
- package/dist/Tree/TreeItem.js.map +1 -1
- package/dist/Tree/TreeRoot.cjs +29 -3
- package/dist/Tree/TreeRoot.cjs.map +1 -1
- package/dist/Tree/TreeRoot.js +29 -3
- package/dist/Tree/TreeRoot.js.map +1 -1
- package/dist/Tree/TreeVirtualizer.cjs +2 -2
- package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
- package/dist/Tree/TreeVirtualizer.js +2 -2
- package/dist/Tree/TreeVirtualizer.js.map +1 -1
- package/dist/Viewport/Viewport.cjs.map +1 -1
- package/dist/Viewport/Viewport.js.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
- package/dist/component/BaseSeparator.cjs.map +1 -1
- package/dist/component/BaseSeparator.js.map +1 -1
- package/dist/date/calendar.cjs.map +1 -1
- package/dist/date/calendar.js.map +1 -1
- package/dist/date/parser.cjs +22 -7
- package/dist/date/parser.cjs.map +1 -1
- package/dist/date/parser.js +23 -8
- package/dist/date/parser.js.map +1 -1
- package/dist/date/useDateField.cjs +21 -6
- package/dist/date/useDateField.cjs.map +1 -1
- package/dist/date/useDateField.js +21 -6
- package/dist/date/useDateField.js.map +1 -1
- package/dist/date/utils.cjs +31 -2
- package/dist/date/utils.cjs.map +1 -1
- package/dist/date/utils.js +30 -3
- package/dist/date/utils.js.map +1 -1
- package/dist/index.d.ts +492 -351
- package/dist/shared/useBodyScrollLock.cjs +2 -2
- package/dist/shared/useBodyScrollLock.cjs.map +1 -1
- package/dist/shared/useBodyScrollLock.js +2 -2
- package/dist/shared/useBodyScrollLock.js.map +1 -1
- package/dist/shared/useDateFormatter.cjs +12 -10
- package/dist/shared/useDateFormatter.cjs.map +1 -1
- package/dist/shared/useDateFormatter.js +12 -10
- package/dist/shared/useDateFormatter.js.map +1 -1
- package/dist/shared/useDirection.cjs.map +1 -1
- package/dist/shared/useDirection.js.map +1 -1
- package/dist/shared/useForwardProps.cjs +4 -2
- package/dist/shared/useForwardProps.cjs.map +1 -1
- package/dist/shared/useForwardProps.js +5 -3
- package/dist/shared/useForwardProps.js.map +1 -1
- package/dist/shared/useGraceArea.cjs.map +1 -1
- package/dist/shared/useGraceArea.js.map +1 -1
- package/dist/shared/useId.cjs +2 -2
- package/dist/shared/useId.cjs.map +1 -1
- package/dist/shared/useId.js +2 -2
- package/dist/shared/useId.js.map +1 -1
- package/dist/shared/useLocale.cjs.map +1 -1
- package/dist/shared/useLocale.js.map +1 -1
- package/dist/shared/useNonce.cjs.map +1 -1
- package/dist/shared/useNonce.js.map +1 -1
- package/package.json +5 -5
|
@@ -117,7 +117,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
117
117
|
}
|
|
118
118
|
function updateModelValueAt(index, value) {
|
|
119
119
|
const tempModelValue = [...context.currentModelValue.value];
|
|
120
|
-
tempModelValue[index] = value;
|
|
120
|
+
tempModelValue[index] = isNumericMode.value ? +value : value;
|
|
121
121
|
context.modelValue.value = removeTrailingEmptyStrings(tempModelValue);
|
|
122
122
|
}
|
|
123
123
|
watch(currentValue, () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinInputInput.js","sources":["../../src/PinInput/PinInputInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { getActiveElement, useArrowNavigation } from '@/shared'\nimport { injectPinInputRootContext } from './PinInputRoot.vue'\n\nexport interface PinInputInputProps extends PrimitiveProps {\n /** Position of the value this input binds to. */\n index: number\n /** When `true`, prevents the user from interacting with the pin input */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, watch } from 'vue'\n\nconst props = withDefaults(defineProps<PinInputInputProps>(), {\n as: 'input',\n})\n\nconst context = injectPinInputRootContext()\nconst inputElements = computed(() => Array.from(context.inputElements!.value))\nconst currentValue = computed(() => context.currentModelValue.value[props.index])\n\nconst disabled = computed(() => props.disabled || context.disabled.value)\nconst isOtpMode = computed(() => context.otp.value)\nconst isNumericMode = computed(() => context.type.value === 'number')\nconst isPasswordMode = computed(() => context.mask.value)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nfunction handleInput(event: InputEvent) {\n const target = event.target as HTMLInputElement\n\n if ((event.data?.length ?? 0) > 1) {\n handleMultipleCharacter(target.value)\n return\n }\n\n if (isNumericMode.value && !/^\\d*$/.test(target.value)) {\n target.value = target.value.replace(/\\D/g, '')\n return\n }\n\n target.value = target.value.slice(-1)\n updateModelValueAt(props.index, target.value)\n\n const nextEl = inputElements.value[props.index + 1]\n if (nextEl)\n nextEl.focus()\n}\n\nfunction resetPlaceholder() {\n const target = currentElement.value as HTMLInputElement\n nextTick(() => {\n if (target && !target.value)\n target.placeholder = context.placeholder.value\n })\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n useArrowNavigation(event, getActiveElement() as HTMLElement, undefined, {\n itemsArray: inputElements.value,\n focus: true,\n loop: false,\n arrowKeyOptions: 'horizontal',\n dir: context.dir.value,\n })\n}\n\nfunction handleBackspace(event: KeyboardEvent) {\n event.preventDefault()\n const target = event.target as HTMLInputElement\n const value = target.value\n\n if (value) {\n updateModelValueAt(props.index, '')\n }\n else {\n const prevEl = inputElements.value[props.index - 1]\n if (prevEl) {\n prevEl.focus()\n updateModelValueAt(props.index - 1, '')\n }\n }\n}\n\nfunction handleDelete(event: KeyboardEvent) {\n if (event.key === 'Delete') {\n event.preventDefault()\n updateModelValueAt(props.index, '')\n }\n}\n\nfunction handleFocus(event: FocusEvent) {\n const target = event.target as HTMLInputElement\n target.setSelectionRange(1, 1)\n\n if (!target.value)\n target.placeholder = ''\n}\n\nfunction handleBlur(event: FocusEvent) {\n resetPlaceholder()\n}\n\nfunction handlePaste(event: ClipboardEvent) {\n event.preventDefault()\n const clipboardData = event.clipboardData\n if (!clipboardData)\n return\n\n const values = clipboardData.getData('text')\n handleMultipleCharacter(values)\n}\n\nfunction handleMultipleCharacter(values: string) {\n const tempModelValue = [...context.currentModelValue.value]\n const initialIndex = values.length >= inputElements.value.length ? 0 : props.index\n const lastIndex = Math.min(initialIndex + values.length, inputElements.value.length)\n for (let i = initialIndex; i < lastIndex; i++) {\n const input = inputElements.value[i]\n const value = values[i - initialIndex]\n if (isNumericMode.value && !/^\\d*$/.test(value))\n continue\n\n tempModelValue[i] = value\n input.focus()\n }\n context.modelValue.value = tempModelValue\n inputElements.value[lastIndex]?.focus()\n}\n\nfunction removeTrailingEmptyStrings(input: string[]) {\n let i = input.length - 1\n\n while (i >= 0 && input[i] === '') {\n input.pop()\n i--\n }\n\n return input\n}\n\nfunction updateModelValueAt(index: number, value: string) {\n const tempModelValue = [...context.currentModelValue.value]\n tempModelValue[index] = value\n context.modelValue.value = removeTrailingEmptyStrings(tempModelValue)\n}\n\nwatch(currentValue, () => {\n if (!currentValue.value) {\n resetPlaceholder()\n }\n})\n\nonMounted(() => {\n context.onInputElementChange(currentElement.value as HTMLInputElement)\n})\nonUnmounted(() => {\n context.inputElements?.value.delete(currentElement.value as HTMLInputElement)\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n autocapitalize=\"none\"\n :as=\"as\"\n :as-child=\"asChild\"\n :autocomplete=\"isOtpMode ? 'one-time-code' : 'false'\"\n :type=\"isPasswordMode ? 'password' : 'text'\"\n :inputmode=\"isNumericMode ? 'numeric' : 'text'\"\n :pattern=\"isNumericMode ? '[0-9]*' : undefined\"\n :placeholder=\"context.placeholder.value\"\n :value=\"currentValue\"\n :disabled=\"disabled\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-complete=\"context.isCompleted.value ? '' : undefined\"\n :aria-label=\"`pin input ${index + 1} of ${inputElements.length}`\"\n @input=\"handleInput($event as InputEvent)\"\n @keydown.left.right.up.down.home.end=\"handleKeydown\"\n @keydown.backspace=\"handleBackspace\"\n @keydown.delete=\"handleDelete\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @paste=\"handlePaste\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PinInputInput.js","sources":["../../src/PinInput/PinInputInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PinInputValue } from './PinInputRoot.vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { getActiveElement, useArrowNavigation } from '@/shared'\nimport { injectPinInputRootContext } from './PinInputRoot.vue'\n\nexport interface PinInputInputProps extends PrimitiveProps {\n /** Position of the value this input binds to. */\n index: number\n /** When `true`, prevents the user from interacting with the pin input */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, watch } from 'vue'\n\nconst props = withDefaults(defineProps<PinInputInputProps>(), {\n as: 'input',\n})\n\nconst context = injectPinInputRootContext()\nconst inputElements = computed(() => Array.from(context.inputElements!.value))\nconst currentValue = computed(() => context.currentModelValue.value[props.index])\n\nconst disabled = computed(() => props.disabled || context.disabled.value)\nconst isOtpMode = computed(() => context.otp.value)\nconst isNumericMode = computed(() => context.type.value === 'number')\nconst isPasswordMode = computed(() => context.mask.value)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nfunction handleInput(event: InputEvent) {\n const target = event.target as HTMLInputElement\n\n if ((event.data?.length ?? 0) > 1) {\n handleMultipleCharacter(target.value)\n return\n }\n\n if (isNumericMode.value && !/^\\d*$/.test(target.value)) {\n target.value = target.value.replace(/\\D/g, '')\n return\n }\n\n target.value = target.value.slice(-1)\n updateModelValueAt(props.index, target.value)\n\n const nextEl = inputElements.value[props.index + 1]\n if (nextEl)\n nextEl.focus()\n}\n\nfunction resetPlaceholder() {\n const target = currentElement.value as HTMLInputElement\n nextTick(() => {\n if (target && !target.value)\n target.placeholder = context.placeholder.value\n })\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n useArrowNavigation(event, getActiveElement() as HTMLElement, undefined, {\n itemsArray: inputElements.value,\n focus: true,\n loop: false,\n arrowKeyOptions: 'horizontal',\n dir: context.dir.value,\n })\n}\n\nfunction handleBackspace(event: KeyboardEvent) {\n event.preventDefault()\n const target = event.target as HTMLInputElement\n const value = target.value\n\n if (value) {\n updateModelValueAt(props.index, '')\n }\n else {\n const prevEl = inputElements.value[props.index - 1]\n if (prevEl) {\n prevEl.focus()\n updateModelValueAt(props.index - 1, '')\n }\n }\n}\n\nfunction handleDelete(event: KeyboardEvent) {\n if (event.key === 'Delete') {\n event.preventDefault()\n updateModelValueAt(props.index, '')\n }\n}\n\nfunction handleFocus(event: FocusEvent) {\n const target = event.target as HTMLInputElement\n target.setSelectionRange(1, 1)\n\n if (!target.value)\n target.placeholder = ''\n}\n\nfunction handleBlur(event: FocusEvent) {\n resetPlaceholder()\n}\n\nfunction handlePaste(event: ClipboardEvent) {\n event.preventDefault()\n const clipboardData = event.clipboardData\n if (!clipboardData)\n return\n\n const values = clipboardData.getData('text')\n handleMultipleCharacter(values)\n}\n\nfunction handleMultipleCharacter(values: string) {\n const tempModelValue = [...context.currentModelValue.value] as PinInputValue<typeof context.type.value>\n const initialIndex = values.length >= inputElements.value.length ? 0 : props.index\n const lastIndex = Math.min(initialIndex + values.length, inputElements.value.length)\n for (let i = initialIndex; i < lastIndex; i++) {\n const input = inputElements.value[i]\n const value = values[i - initialIndex]\n if (isNumericMode.value && !/^\\d*$/.test(value))\n continue\n\n tempModelValue[i] = value\n input.focus()\n }\n context.modelValue.value = tempModelValue\n inputElements.value[lastIndex]?.focus()\n}\n\nfunction removeTrailingEmptyStrings(input: PinInputValue<typeof context.type.value>) {\n let i = input.length - 1\n\n while (i >= 0 && input[i] === '') {\n input.pop()\n i--\n }\n\n return input\n}\n\nfunction updateModelValueAt(index: number, value: string) {\n const tempModelValue = [...context.currentModelValue.value] as PinInputValue<typeof context.type.value>\n tempModelValue[index] = isNumericMode.value ? +value : value\n context.modelValue.value = removeTrailingEmptyStrings(tempModelValue)\n}\n\nwatch(currentValue, () => {\n if (!currentValue.value) {\n resetPlaceholder()\n }\n})\n\nonMounted(() => {\n context.onInputElementChange(currentElement.value as HTMLInputElement)\n})\nonUnmounted(() => {\n context.inputElements?.value.delete(currentElement.value as HTMLInputElement)\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n autocapitalize=\"none\"\n :as=\"as\"\n :as-child=\"asChild\"\n :autocomplete=\"isOtpMode ? 'one-time-code' : 'false'\"\n :type=\"isPasswordMode ? 'password' : 'text'\"\n :inputmode=\"isNumericMode ? 'numeric' : 'text'\"\n :pattern=\"isNumericMode ? '[0-9]*' : undefined\"\n :placeholder=\"context.placeholder.value\"\n :value=\"currentValue\"\n :disabled=\"disabled\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-complete=\"context.isCompleted.value ? '' : undefined\"\n :aria-label=\"`pin input ${index + 1} of ${inputElements.length}`\"\n @input=\"handleInput($event as InputEvent)\"\n @keydown.left.right.up.down.home.end=\"handleKeydown\"\n @keydown.backspace=\"handleBackspace\"\n @keydown.delete=\"handleDelete\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @paste=\"handlePaste\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinInputRoot.cjs","sources":["../../src/PinInput/PinInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport
|
|
1
|
+
{"version":3,"file":"PinInputRoot.cjs","sources":["../../src/PinInput/PinInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ComputedRef, Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { computed, ref, toRefs, watch } from 'vue'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\nimport VisuallyHiddenInput from '@/VisuallyHidden/VisuallyHiddenInput.vue'\n\nexport type PinInputType = 'text' | 'number'\n\n// Using this type to avoid mixed arrays (string | number)[].\nexport type PinInputValue<Type extends PinInputType = 'text'> = Type extends 'number' ? number[] : string[]\n\nexport type PinInputRootEmits<Type extends PinInputType = 'text'> = {\n 'update:modelValue': [value: PinInputValue<Type>]\n 'complete': [value: PinInputValue<Type>]\n}\n\nexport interface PinInputRootProps<Type extends PinInputType = 'text'> extends PrimitiveProps, FormFieldProps {\n /** The controlled checked state of the pin input. Can be binded as `v-model`. */\n modelValue?: PinInputValue<Type> | null\n /** The default value of the pin inputs when it is initially rendered. Use when you do not need to control its checked state. */\n defaultValue?: PinInputValue<Type>[]\n /** The placeholder character to use for empty pin-inputs. */\n placeholder?: string\n /** When `true`, pin inputs will be treated as password. */\n mask?: boolean\n /** When `true`, mobile devices will autodetect the OTP from messages or clipboard, and enable the autocomplete field. */\n otp?: boolean\n /** Input type for the inputs. */\n type?: Type\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** When `true`, prevents the user from interacting with the pin input */\n disabled?: boolean\n /** Id of the element */\n id?: string\n}\n\nexport interface PinInputRootContext<Type extends PinInputType = 'text'> {\n modelValue: Ref<PinInputValue<Type>>\n currentModelValue: ComputedRef<PinInputValue<Type>>\n mask: Ref<boolean>\n otp: Ref<boolean>\n placeholder: Ref<string>\n type: Ref<PinInputType>\n dir: Ref<Direction>\n disabled: Ref<boolean>\n isCompleted: ComputedRef<boolean>\n inputElements?: Ref<Set<HTMLInputElement>>\n onInputElementChange: (el: HTMLInputElement) => void\n}\n\nexport const [injectPinInputRootContext, providePinInputRootContext]\n = createContext<PinInputRootContext<PinInputType>>('PinInputRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"Type extends PinInputType = 'text'\">\nimport { useVModel } from '@vueuse/core'\nimport { Primitive } from '@/Primitive'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PinInputRootProps<Type>>(), {\n placeholder: '',\n type: 'text' as any,\n})\nconst emits = defineEmits<PinInputRootEmits<Type>>()\n\ndefineSlots<{\n default?: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { mask, otp, placeholder, type, disabled, dir: propDir } = toRefs(props)\nconst { forwardRef } = useForwardExpose()\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? [] as any,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<PinInputValue<Type>>\n\nconst currentModelValue = computed(() => Array.isArray(modelValue.value) ? [...modelValue.value] : [])\n\nconst inputElements = ref<Set<HTMLInputElement>>(new Set())\nfunction onInputElementChange(el: HTMLInputElement) {\n inputElements.value.add(el)\n}\n\nconst isCompleted = computed(() => {\n const modelValues = currentModelValue.value.filter(i => !!i)\n return modelValues.length === inputElements.value.size\n})\n\nwatch(modelValue, () => {\n if (isCompleted.value)\n emits('complete', modelValue.value)\n}, { deep: true })\n\nprovidePinInputRootContext({\n modelValue,\n currentModelValue: currentModelValue as ComputedRef<PinInputValue<Type>>,\n mask,\n otp,\n placeholder,\n type,\n dir,\n disabled,\n isCompleted,\n inputElements,\n onInputElementChange,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n :ref=\"forwardRef\"\n :dir=\"dir\"\n :data-complete=\"isCompleted ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot :model-value=\"modelValue\" />\n\n <VisuallyHiddenInput\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"currentModelValue.join('')\"\n :name=\"name ?? ''\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(inputElements)?.[0]?.focus()\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useForwardExpose","useDirection","useVModel","computed","ref","watch"],"mappings":";;;;;;;;;;AAqDO,MAAM,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,GAC/DA,mCAAiD,cAAc;;;;;;;;;;;;;;;;;;;;;;;AAWnE,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAM,MAAA,EAAE,IAAM,EAAA,GAAA,EAAK,WAAa,EAAA,IAAA,EAAM,UAAU,GAAK,EAAA,OAAA,EAAY,GAAAC,UAAA,CAAO,KAAK,CAAA;AAC7E,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AACxC,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,EAAC;AAAA,MACrC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,iBAAoB,GAAAC,YAAA,CAAS,MAAM,KAAA,CAAM,QAAQ,UAAW,CAAA,KAAK,CAAI,GAAA,CAAC,GAAG,UAAA,CAAW,KAAK,CAAA,GAAI,EAAE,CAAA;AAErG,IAAA,MAAM,aAAgB,GAAAC,OAAA,iBAA+B,IAAA,GAAA,EAAK,CAAA;AAC1D,IAAA,SAAS,qBAAqB,EAAsB,EAAA;AAClD,MAAc,aAAA,CAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AAAA;AAG5B,IAAM,MAAA,WAAA,GAAcD,aAAS,MAAM;AACjC,MAAA,MAAM,cAAc,iBAAkB,CAAA,KAAA,CAAM,OAAO,CAAK,CAAA,KAAA,CAAC,CAAC,CAAC,CAAA;AAC3D,MAAO,OAAA,WAAA,CAAY,MAAW,KAAA,aAAA,CAAc,KAAM,CAAA,IAAA;AAAA,KACnD,CAAA;AAED,IAAAE,SAAA,CAAM,YAAY,MAAM;AACtB,MAAA,IAAI,WAAY,CAAA,KAAA;AACd,QAAM,KAAA,CAAA,UAAA,EAAY,WAAW,KAAK,CAAA;AAAA,KACnC,EAAA,EAAE,IAAM,EAAA,IAAA,EAAM,CAAA;AAEjB,IAA2B,0BAAA,CAAA;AAAA,MACzB,UAAA;AAAA,MACA,iBAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinInputRoot.js","sources":["../../src/PinInput/PinInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport
|
|
1
|
+
{"version":3,"file":"PinInputRoot.js","sources":["../../src/PinInput/PinInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ComputedRef, Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { computed, ref, toRefs, watch } from 'vue'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\nimport VisuallyHiddenInput from '@/VisuallyHidden/VisuallyHiddenInput.vue'\n\nexport type PinInputType = 'text' | 'number'\n\n// Using this type to avoid mixed arrays (string | number)[].\nexport type PinInputValue<Type extends PinInputType = 'text'> = Type extends 'number' ? number[] : string[]\n\nexport type PinInputRootEmits<Type extends PinInputType = 'text'> = {\n 'update:modelValue': [value: PinInputValue<Type>]\n 'complete': [value: PinInputValue<Type>]\n}\n\nexport interface PinInputRootProps<Type extends PinInputType = 'text'> extends PrimitiveProps, FormFieldProps {\n /** The controlled checked state of the pin input. Can be binded as `v-model`. */\n modelValue?: PinInputValue<Type> | null\n /** The default value of the pin inputs when it is initially rendered. Use when you do not need to control its checked state. */\n defaultValue?: PinInputValue<Type>[]\n /** The placeholder character to use for empty pin-inputs. */\n placeholder?: string\n /** When `true`, pin inputs will be treated as password. */\n mask?: boolean\n /** When `true`, mobile devices will autodetect the OTP from messages or clipboard, and enable the autocomplete field. */\n otp?: boolean\n /** Input type for the inputs. */\n type?: Type\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** When `true`, prevents the user from interacting with the pin input */\n disabled?: boolean\n /** Id of the element */\n id?: string\n}\n\nexport interface PinInputRootContext<Type extends PinInputType = 'text'> {\n modelValue: Ref<PinInputValue<Type>>\n currentModelValue: ComputedRef<PinInputValue<Type>>\n mask: Ref<boolean>\n otp: Ref<boolean>\n placeholder: Ref<string>\n type: Ref<PinInputType>\n dir: Ref<Direction>\n disabled: Ref<boolean>\n isCompleted: ComputedRef<boolean>\n inputElements?: Ref<Set<HTMLInputElement>>\n onInputElementChange: (el: HTMLInputElement) => void\n}\n\nexport const [injectPinInputRootContext, providePinInputRootContext]\n = createContext<PinInputRootContext<PinInputType>>('PinInputRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"Type extends PinInputType = 'text'\">\nimport { useVModel } from '@vueuse/core'\nimport { Primitive } from '@/Primitive'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PinInputRootProps<Type>>(), {\n placeholder: '',\n type: 'text' as any,\n})\nconst emits = defineEmits<PinInputRootEmits<Type>>()\n\ndefineSlots<{\n default?: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { mask, otp, placeholder, type, disabled, dir: propDir } = toRefs(props)\nconst { forwardRef } = useForwardExpose()\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? [] as any,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<PinInputValue<Type>>\n\nconst currentModelValue = computed(() => Array.isArray(modelValue.value) ? [...modelValue.value] : [])\n\nconst inputElements = ref<Set<HTMLInputElement>>(new Set())\nfunction onInputElementChange(el: HTMLInputElement) {\n inputElements.value.add(el)\n}\n\nconst isCompleted = computed(() => {\n const modelValues = currentModelValue.value.filter(i => !!i)\n return modelValues.length === inputElements.value.size\n})\n\nwatch(modelValue, () => {\n if (isCompleted.value)\n emits('complete', modelValue.value)\n}, { deep: true })\n\nprovidePinInputRootContext({\n modelValue,\n currentModelValue: currentModelValue as ComputedRef<PinInputValue<Type>>,\n mask,\n otp,\n placeholder,\n type,\n dir,\n disabled,\n isCompleted,\n inputElements,\n onInputElementChange,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n :ref=\"forwardRef\"\n :dir=\"dir\"\n :data-complete=\"isCompleted ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot :model-value=\"modelValue\" />\n\n <VisuallyHiddenInput\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"currentModelValue.join('')\"\n :name=\"name ?? ''\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(inputElements)?.[0]?.focus()\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;AAqDO,MAAM,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,GAC/D,cAAiD,cAAc;;;;;;;;;;;;;;;;;;;;;;;AAWnE,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAM,MAAA,EAAE,IAAM,EAAA,GAAA,EAAK,WAAa,EAAA,IAAA,EAAM,UAAU,GAAK,EAAA,OAAA,EAAY,GAAA,MAAA,CAAO,KAAK,CAAA;AAC7E,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AACxC,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,EAAC;AAAA,MACrC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,iBAAoB,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,QAAQ,UAAW,CAAA,KAAK,CAAI,GAAA,CAAC,GAAG,UAAA,CAAW,KAAK,CAAA,GAAI,EAAE,CAAA;AAErG,IAAA,MAAM,aAAgB,GAAA,GAAA,iBAA+B,IAAA,GAAA,EAAK,CAAA;AAC1D,IAAA,SAAS,qBAAqB,EAAsB,EAAA;AAClD,MAAc,aAAA,CAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AAAA;AAG5B,IAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,MAAM,cAAc,iBAAkB,CAAA,KAAA,CAAM,OAAO,CAAK,CAAA,KAAA,CAAC,CAAC,CAAC,CAAA;AAC3D,MAAO,OAAA,WAAA,CAAY,MAAW,KAAA,aAAA,CAAc,KAAM,CAAA,IAAA;AAAA,KACnD,CAAA;AAED,IAAA,KAAA,CAAM,YAAY,MAAM;AACtB,MAAA,IAAI,WAAY,CAAA,KAAA;AACd,QAAM,KAAA,CAAA,UAAA,EAAY,WAAW,KAAK,CAAA;AAAA,KACnC,EAAA,EAAE,IAAM,EAAA,IAAA,EAAM,CAAA;AAEjB,IAA2B,0BAAA,CAAA;AAAA,MACzB,UAAA;AAAA,MACA,iBAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverAnchor.cjs","sources":["../../src/Popover/PopoverAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PopoverAnchorProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverAnchor.cjs","sources":["../../src/Popover/PopoverAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PopoverAnchorProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { onBeforeMount, onUnmounted } from 'vue'\nimport { PopperAnchor } from '@/Popper'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = defineProps<PopoverAnchorProps>()\n\nuseForwardExpose()\nconst rootContext = injectPopoverRootContext()\n\nonBeforeMount(() => {\n rootContext.hasCustomAnchor.value = true\n})\nonUnmounted(() => {\n rootContext.hasCustomAnchor.value = false\n})\n</script>\n\n<template>\n <PopperAnchor v-bind=\"props\">\n <slot />\n </PopperAnchor>\n</template>\n"],"names":["useForwardExpose","injectPopoverRootContext","onBeforeMount","onUnmounted"],"mappings":";;;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAiBA,wCAAA,EAAA;AACjB,IAAA,MAAM,cAAcC,4CAAyB,EAAA;AAE7C,IAAAC,iBAAA,CAAc,MAAM;AAClB,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,IAAA;AAAA,KACrC,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,KAAA;AAAA,KACrC,CAAA;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverAnchor.js","sources":["../../src/Popover/PopoverAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PopoverAnchorProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverAnchor.js","sources":["../../src/Popover/PopoverAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PopoverAnchorProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { onBeforeMount, onUnmounted } from 'vue'\nimport { PopperAnchor } from '@/Popper'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = defineProps<PopoverAnchorProps>()\n\nuseForwardExpose()\nconst rootContext = injectPopoverRootContext()\n\nonBeforeMount(() => {\n rootContext.hasCustomAnchor.value = true\n})\nonUnmounted(() => {\n rootContext.hasCustomAnchor.value = false\n})\n</script>\n\n<template>\n <PopperAnchor v-bind=\"props\">\n <slot />\n </PopperAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAE7C,IAAA,aAAA,CAAc,MAAM;AAClB,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,IAAA;AAAA,KACrC,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,KAAA;AAAA,KACrC,CAAA;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverContentModal.cjs","sources":["../../src/Popover/PopoverContentModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport { useForwardExpose, useForwardPropsEmits, useHideOthers } from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\nimport
|
|
1
|
+
{"version":3,"file":"PopoverContentModal.cjs","sources":["../../src/Popover/PopoverContentModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport { ref } from 'vue'\nimport { useForwardExpose, useForwardPropsEmits, useHideOthers } from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\nimport PopoverContentImpl from './PopoverContentImpl.vue'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = defineProps<PopoverContentImplProps>()\nconst emits = defineEmits<PopoverContentImplEmits>()\nconst rootContext = injectPopoverRootContext()\nconst isRightClickOutsideRef = ref(false)\n\nuseBodyScrollLock(true)\n\nconst forwarded = useForwardPropsEmits(props, emits)\n\nconst { forwardRef, currentElement } = useForwardExpose()\nuseHideOthers(currentElement)\n</script>\n\n<template>\n <PopoverContentImpl\n v-bind=\"forwarded\"\n :ref=\"forwardRef\"\n :trap-focus=\"rootContext.open.value\"\n disable-outside-pointer-events\n @close-auto-focus.prevent=\"\n (event) => {\n emits('closeAutoFocus', event);\n\n if (!isRightClickOutsideRef) rootContext.triggerElement.value?.focus();\n }\n \"\n @pointer-down-outside=\"\n (event) => {\n emits('pointerDownOutside', event);\n\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick\n = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n isRightClickOutsideRef = isRightClick;\n }\n \"\n @focus-outside.prevent\n >\n <slot />\n </PopoverContentImpl>\n</template>\n"],"names":["injectPopoverRootContext","ref","useBodyScrollLock","useForwardPropsEmits","useForwardExpose","useHideOthers"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAA,MAAM,cAAcA,4CAAyB,EAAA;AAC7C,IAAM,MAAA,sBAAA,GAAyBC,QAAI,KAAK,CAAA;AAExC,IAAAC,0CAAA,CAAkB,IAAI,CAAA;AAEtB,IAAM,MAAA,SAAA,GAAYC,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AACxD,IAAAC,kCAAA,CAAc,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverContentModal.js","sources":["../../src/Popover/PopoverContentModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport { useForwardExpose, useForwardPropsEmits, useHideOthers } from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\nimport
|
|
1
|
+
{"version":3,"file":"PopoverContentModal.js","sources":["../../src/Popover/PopoverContentModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport { ref } from 'vue'\nimport { useForwardExpose, useForwardPropsEmits, useHideOthers } from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\nimport PopoverContentImpl from './PopoverContentImpl.vue'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = defineProps<PopoverContentImplProps>()\nconst emits = defineEmits<PopoverContentImplEmits>()\nconst rootContext = injectPopoverRootContext()\nconst isRightClickOutsideRef = ref(false)\n\nuseBodyScrollLock(true)\n\nconst forwarded = useForwardPropsEmits(props, emits)\n\nconst { forwardRef, currentElement } = useForwardExpose()\nuseHideOthers(currentElement)\n</script>\n\n<template>\n <PopoverContentImpl\n v-bind=\"forwarded\"\n :ref=\"forwardRef\"\n :trap-focus=\"rootContext.open.value\"\n disable-outside-pointer-events\n @close-auto-focus.prevent=\"\n (event) => {\n emits('closeAutoFocus', event);\n\n if (!isRightClickOutsideRef) rootContext.triggerElement.value?.focus();\n }\n \"\n @pointer-down-outside=\"\n (event) => {\n emits('pointerDownOutside', event);\n\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick\n = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n isRightClickOutsideRef = isRightClick;\n }\n \"\n @focus-outside.prevent\n >\n <slot />\n </PopoverContentImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAC7C,IAAM,MAAA,sBAAA,GAAyB,IAAI,KAAK,CAAA;AAExC,IAAA,iBAAA,CAAkB,IAAI,CAAA;AAEtB,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,aAAA,CAAc,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverContentNonModal.cjs","sources":["../../src/Popover/PopoverContentNonModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverContentNonModal.cjs","sources":["../../src/Popover/PopoverContentNonModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport { ref } from 'vue'\nimport { useForwardPropsEmits } from '@/shared'\nimport PopoverContentImpl from './PopoverContentImpl.vue'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = defineProps<PopoverContentImplProps>()\nconst emits = defineEmits<PopoverContentImplEmits>()\nconst rootContext = injectPopoverRootContext()\nconst hasInteractedOutsideRef = ref(false)\nconst hasPointerDownOutsideRef = ref(false)\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n <PopoverContentImpl\n v-bind=\"forwarded\"\n :trap-focus=\"false\"\n :disable-outside-pointer-events=\"false\"\n @close-auto-focus=\"\n (event) => {\n emits('closeAutoFocus', event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef) rootContext.triggerElement.value?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef = false;\n hasPointerDownOutsideRef = false;\n }\n \"\n @interact-outside=\"\n async (event) => {\n emits('interactOutside', event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = rootContext.triggerElement.value?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (\n event.detail.originalEvent.type === 'focusin'\n && hasPointerDownOutsideRef\n ) {\n event.preventDefault();\n }\n }\n \"\n >\n <slot />\n </PopoverContentImpl>\n</template>\n"],"names":["injectPopoverRootContext","ref","useForwardPropsEmits"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAA,MAAM,cAAcA,4CAAyB,EAAA;AAC7C,IAAM,MAAA,uBAAA,GAA0BC,QAAI,KAAK,CAAA;AACzC,IAAM,MAAA,wBAAA,GAA2BA,QAAI,KAAK,CAAA;AAE1C,IAAM,MAAA,SAAA,GAAYC,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverContentNonModal.js","sources":["../../src/Popover/PopoverContentNonModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverContentNonModal.js","sources":["../../src/Popover/PopoverContentNonModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverContentImplEmits, PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport { ref } from 'vue'\nimport { useForwardPropsEmits } from '@/shared'\nimport PopoverContentImpl from './PopoverContentImpl.vue'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = defineProps<PopoverContentImplProps>()\nconst emits = defineEmits<PopoverContentImplEmits>()\nconst rootContext = injectPopoverRootContext()\nconst hasInteractedOutsideRef = ref(false)\nconst hasPointerDownOutsideRef = ref(false)\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n <PopoverContentImpl\n v-bind=\"forwarded\"\n :trap-focus=\"false\"\n :disable-outside-pointer-events=\"false\"\n @close-auto-focus=\"\n (event) => {\n emits('closeAutoFocus', event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef) rootContext.triggerElement.value?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef = false;\n hasPointerDownOutsideRef = false;\n }\n \"\n @interact-outside=\"\n async (event) => {\n emits('interactOutside', event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = rootContext.triggerElement.value?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (\n event.detail.originalEvent.type === 'focusin'\n && hasPointerDownOutsideRef\n ) {\n event.preventDefault();\n }\n }\n \"\n >\n <slot />\n </PopoverContentImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAC7C,IAAM,MAAA,uBAAA,GAA0B,IAAI,KAAK,CAAA;AACzC,IAAM,MAAA,wBAAA,GAA2B,IAAI,KAAK,CAAA;AAE1C,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const vue = require('vue');
|
|
4
|
-
const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
|
|
5
4
|
const core = require('@vueuse/core');
|
|
5
|
+
const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
|
|
6
6
|
const shared_createContext = require('../shared/createContext.cjs');
|
|
7
7
|
|
|
8
8
|
const [injectPopoverRootContext, providePopoverRootContext] = shared_createContext.createContext("PopoverRoot");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverRoot.cjs","sources":["../../src/Popover/PopoverRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext } from '@/shared'\n\nexport interface PopoverRootProps {\n /**\n * The open state of the popover when it is initially rendered. Use when you do not need to control its open state.\n */\n defaultOpen?: boolean\n /**\n * The controlled open state of the popover.\n */\n open?: boolean\n /**\n * The modality of the popover. When set to true, interaction with outside elements will be disabled and only popover content will be visible to screen readers.\n *\n * @defaultValue false\n */\n modal?: boolean\n}\nexport type PopoverRootEmits = {\n /**\n * Event handler called when the open state of the popover changes.\n */\n 'update:open': [value: boolean]\n}\n\nexport interface PopoverRootContext {\n triggerElement: Ref<HTMLElement | undefined>\n triggerId: string\n contentId: string\n open: Ref<boolean>\n modal: Ref<boolean>\n onOpenChange: (value: boolean) => void\n onOpenToggle: () => void\n hasCustomAnchor: Ref<boolean>\n}\n\nexport const [injectPopoverRootContext, providePopoverRootContext]\n = createContext<PopoverRootContext>('PopoverRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverRoot.cjs","sources":["../../src/Popover/PopoverRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext } from '@/shared'\n\nexport interface PopoverRootProps {\n /**\n * The open state of the popover when it is initially rendered. Use when you do not need to control its open state.\n */\n defaultOpen?: boolean\n /**\n * The controlled open state of the popover.\n */\n open?: boolean\n /**\n * The modality of the popover. When set to true, interaction with outside elements will be disabled and only popover content will be visible to screen readers.\n *\n * @defaultValue false\n */\n modal?: boolean\n}\nexport type PopoverRootEmits = {\n /**\n * Event handler called when the open state of the popover changes.\n */\n 'update:open': [value: boolean]\n}\n\nexport interface PopoverRootContext {\n triggerElement: Ref<HTMLElement | undefined>\n triggerId: string\n contentId: string\n open: Ref<boolean>\n modal: Ref<boolean>\n onOpenChange: (value: boolean) => void\n onOpenToggle: () => void\n hasCustomAnchor: Ref<boolean>\n}\n\nexport const [injectPopoverRootContext, providePopoverRootContext]\n = createContext<PopoverRootContext>('PopoverRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<PopoverRootProps>(), {\n defaultOpen: false,\n open: undefined,\n modal: false,\n})\nconst emit = defineEmits<PopoverRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { modal } = toRefs(props)\n\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\nconst hasCustomAnchor = ref(false)\n\nprovidePopoverRootContext({\n contentId: '',\n triggerId: '',\n modal,\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n onOpenToggle: () => {\n open.value = !open.value\n },\n triggerElement,\n hasCustomAnchor,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot :open=\"open\" />\n </PopperRoot>\n</template>\n"],"names":["createContext","toRefs","useVModel","ref"],"mappings":";;;;;;;AAsCO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7DA,mCAAkC,aAAa;;;;;;;;;;AAQnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,EAAE,KAAA,EAAU,GAAAC,UAAA,CAAO,KAAK,CAAA;AAE9B,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,iBAAiBC,OAAiB,EAAA;AACxC,IAAM,MAAA,eAAA,GAAkBA,QAAI,KAAK,CAAA;AAEjC,IAA0B,yBAAA,CAAA;AAAA,MACxB,SAAW,EAAA,EAAA;AAAA,MACX,SAAW,EAAA,EAAA;AAAA,MACX,KAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,OACrB;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, toRefs, ref, createBlock, openBlock, unref, withCtx, renderSlot } from 'vue';
|
|
2
|
-
import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
|
|
3
2
|
import { useVModel } from '@vueuse/core';
|
|
3
|
+
import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
|
|
4
4
|
import { c as createContext } from '../shared/createContext.js';
|
|
5
5
|
|
|
6
6
|
const [injectPopoverRootContext, providePopoverRootContext] = createContext("PopoverRoot");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverRoot.js","sources":["../../src/Popover/PopoverRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext } from '@/shared'\n\nexport interface PopoverRootProps {\n /**\n * The open state of the popover when it is initially rendered. Use when you do not need to control its open state.\n */\n defaultOpen?: boolean\n /**\n * The controlled open state of the popover.\n */\n open?: boolean\n /**\n * The modality of the popover. When set to true, interaction with outside elements will be disabled and only popover content will be visible to screen readers.\n *\n * @defaultValue false\n */\n modal?: boolean\n}\nexport type PopoverRootEmits = {\n /**\n * Event handler called when the open state of the popover changes.\n */\n 'update:open': [value: boolean]\n}\n\nexport interface PopoverRootContext {\n triggerElement: Ref<HTMLElement | undefined>\n triggerId: string\n contentId: string\n open: Ref<boolean>\n modal: Ref<boolean>\n onOpenChange: (value: boolean) => void\n onOpenToggle: () => void\n hasCustomAnchor: Ref<boolean>\n}\n\nexport const [injectPopoverRootContext, providePopoverRootContext]\n = createContext<PopoverRootContext>('PopoverRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverRoot.js","sources":["../../src/Popover/PopoverRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext } from '@/shared'\n\nexport interface PopoverRootProps {\n /**\n * The open state of the popover when it is initially rendered. Use when you do not need to control its open state.\n */\n defaultOpen?: boolean\n /**\n * The controlled open state of the popover.\n */\n open?: boolean\n /**\n * The modality of the popover. When set to true, interaction with outside elements will be disabled and only popover content will be visible to screen readers.\n *\n * @defaultValue false\n */\n modal?: boolean\n}\nexport type PopoverRootEmits = {\n /**\n * Event handler called when the open state of the popover changes.\n */\n 'update:open': [value: boolean]\n}\n\nexport interface PopoverRootContext {\n triggerElement: Ref<HTMLElement | undefined>\n triggerId: string\n contentId: string\n open: Ref<boolean>\n modal: Ref<boolean>\n onOpenChange: (value: boolean) => void\n onOpenToggle: () => void\n hasCustomAnchor: Ref<boolean>\n}\n\nexport const [injectPopoverRootContext, providePopoverRootContext]\n = createContext<PopoverRootContext>('PopoverRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<PopoverRootProps>(), {\n defaultOpen: false,\n open: undefined,\n modal: false,\n})\nconst emit = defineEmits<PopoverRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { modal } = toRefs(props)\n\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\nconst hasCustomAnchor = ref(false)\n\nprovidePopoverRootContext({\n contentId: '',\n triggerId: '',\n modal,\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n onOpenToggle: () => {\n open.value = !open.value\n },\n triggerElement,\n hasCustomAnchor,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot :open=\"open\" />\n </PopperRoot>\n</template>\n"],"names":[],"mappings":";;;;;AAsCO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7D,cAAkC,aAAa;;;;;;;;;;AAQnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,EAAE,KAAA,EAAU,GAAA,MAAA,CAAO,KAAK,CAAA;AAE9B,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AACxC,IAAM,MAAA,eAAA,GAAkB,IAAI,KAAK,CAAA;AAEjC,IAA0B,yBAAA,CAAA;AAAA,MACxB,SAAW,EAAA,EAAA;AAAA,MACX,SAAW,EAAA,EAAA;AAAA,MACX,KAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,OACrB;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverTrigger.cjs","sources":["../../src/Popover/PopoverTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface PopoverTriggerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverTrigger.cjs","sources":["../../src/Popover/PopoverTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface PopoverTriggerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { onMounted } from 'vue'\nimport { PopperAnchor } from '@/Popper'\nimport { Primitive } from '@/Primitive'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = withDefaults(defineProps<PopoverTriggerProps>(), {\n as: 'button',\n})\n\nconst rootContext = injectPopoverRootContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\n\nrootContext.triggerId ||= useId(undefined, 'reka-popover-trigger')\nonMounted(() => {\n rootContext.triggerElement.value = triggerElement.value\n})\n</script>\n\n<template>\n <component\n :is=\"rootContext.hasCustomAnchor.value ? Primitive : PopperAnchor\"\n as-child\n >\n <Primitive\n :id=\"rootContext.triggerId\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n aria-haspopup=\"dialog\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.contentId\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :as=\"as\"\n :as-child=\"props.asChild\"\n @click=\"rootContext.onOpenToggle\"\n >\n <slot />\n </Primitive>\n </component>\n</template>\n"],"names":["injectPopoverRootContext","useForwardExpose","useId","onMounted"],"mappings":";;;;;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,cAAcA,4CAAyB,EAAA;AAE7C,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmBC,wCAAiB,EAAA;AAExE,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,sBAAsB,CAAA;AACjE,IAAAC,aAAA,CAAU,MAAM;AACd,MAAY,WAAA,CAAA,cAAA,CAAe,QAAQ,cAAe,CAAA,KAAA;AAAA,KACnD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverTrigger.js","sources":["../../src/Popover/PopoverTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface PopoverTriggerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PopoverTrigger.js","sources":["../../src/Popover/PopoverTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface PopoverTriggerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { onMounted } from 'vue'\nimport { PopperAnchor } from '@/Popper'\nimport { Primitive } from '@/Primitive'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\n\nconst props = withDefaults(defineProps<PopoverTriggerProps>(), {\n as: 'button',\n})\n\nconst rootContext = injectPopoverRootContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\n\nrootContext.triggerId ||= useId(undefined, 'reka-popover-trigger')\nonMounted(() => {\n rootContext.triggerElement.value = triggerElement.value\n})\n</script>\n\n<template>\n <component\n :is=\"rootContext.hasCustomAnchor.value ? Primitive : PopperAnchor\"\n as-child\n >\n <Primitive\n :id=\"rootContext.triggerId\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n aria-haspopup=\"dialog\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.contentId\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :as=\"as\"\n :as-child=\"props.asChild\"\n @click=\"rootContext.onOpenToggle\"\n >\n <slot />\n </Primitive>\n </component>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAE7C,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmB,gBAAiB,EAAA;AAExE,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,sBAAsB,CAAA;AACjE,IAAA,SAAA,CAAU,MAAM;AACd,MAAY,WAAA,CAAA,cAAA,CAAe,QAAQ,cAAe,CAAA,KAAA;AAAA,KACnD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopperAnchor.cjs","sources":["../../src/Popper/PopperAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"PopperAnchor.cjs","sources":["../../src/Popper/PopperAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ReferenceElement } from '@floating-ui/vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PopperAnchorProps extends PrimitiveProps {\n /**\n * The reference (or anchor) element that is being referred to for positioning.\n *\n * If not provided will use the current component as anchor.\n */\n reference?: ReferenceElement\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { watchPostEffect } from 'vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { injectPopperRootContext } from './PopperRoot.vue'\n\nconst props = defineProps<PopperAnchorProps>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst rootContext = injectPopperRootContext()\n\nwatchPostEffect(() => {\n rootContext.onAnchorChange(props.reference ?? currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useForwardExpose","injectPopperRootContext","watchPostEffect"],"mappings":";;;;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AAExD,IAAA,MAAM,cAAcC,yCAAwB,EAAA;AAE5C,IAAAC,mBAAA,CAAgB,MAAM;AACpB,MAAA,WAAA,CAAY,cAAe,CAAA,KAAA,CAAM,SAAa,IAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KACnE,CAAA;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopperAnchor.js","sources":["../../src/Popper/PopperAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"PopperAnchor.js","sources":["../../src/Popper/PopperAnchor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ReferenceElement } from '@floating-ui/vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PopperAnchorProps extends PrimitiveProps {\n /**\n * The reference (or anchor) element that is being referred to for positioning.\n *\n * If not provided will use the current component as anchor.\n */\n reference?: ReferenceElement\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { watchPostEffect } from 'vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { injectPopperRootContext } from './PopperRoot.vue'\n\nconst props = defineProps<PopperAnchorProps>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst rootContext = injectPopperRootContext()\n\nwatchPostEffect(() => {\n rootContext.onAnchorChange(props.reference ?? currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAA,MAAM,cAAc,uBAAwB,EAAA;AAE5C,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,WAAA,CAAY,cAAe,CAAA,KAAA,CAAM,SAAa,IAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KACnE,CAAA;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopperArrow.cjs","sources":["../../src/Popper/PopperArrow.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"PopperArrow.cjs","sources":["../../src/Popper/PopperArrow.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Side } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { ArrowProps } from '@/shared/component/Arrow.vue'\n\nconst OPPOSITE_SIDE: Record<Side, Side> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n}\n\nexport interface PopperArrowProps extends ArrowProps, PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useForwardExpose } from '@/shared'\nimport Arrow from '@/shared/component/Arrow.vue'\nimport { injectPopperContentContext } from './PopperContent.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nwithDefaults(\n defineProps<PopperArrowProps>(),\n { as: 'svg' },\n)\n\nconst { forwardRef } = useForwardExpose()\nconst contentContext = injectPopperContentContext()\n\nconst baseSide = computed(() => OPPOSITE_SIDE[contentContext.placedSide.value])\n</script>\n\n<template>\n <span\n :ref=\"(el: HTMLElement) => {\n contentContext.onArrowChange(el)\n return undefined\n }\"\n :style=\"{\n position: 'absolute',\n left: contentContext.arrowX?.value ? `${contentContext.arrowX?.value}px` : undefined,\n top: contentContext.arrowY?.value ? `${contentContext.arrowY?.value}px` : undefined,\n [baseSide]: 0,\n transformOrigin: {\n top: '',\n right: '0 0',\n bottom: 'center 0',\n left: '100% 0',\n }[contentContext.placedSide.value],\n transform: {\n top: 'translateY(100%)',\n right: 'translateY(50%) rotate(90deg) translateX(-50%)',\n bottom: `rotate(180deg)`,\n left: 'translateY(50%) rotate(-90deg) translateX(50%)',\n }[contentContext.placedSide.value],\n visibility: contentContext.shouldHideArrow.value ? 'hidden' : undefined,\n }\"\n >\n <Arrow\n v-bind=\"$attrs\"\n :ref=\"forwardRef\"\n :style=\"{\n display: 'block',\n }\"\n :as=\"as\"\n :as-child=\"asChild\"\n :rounded=\"rounded\"\n :width=\"width\"\n :height=\"height\"\n >\n <slot />\n </Arrow>\n </span>\n</template>\n"],"names":["useForwardExpose","injectPopperContentContext","computed"],"mappings":";;;;;;;AAKA,MAAM,aAAoC,GAAA;AAAA,EACxC,GAAK,EAAA,QAAA;AAAA,EACL,KAAO,EAAA,MAAA;AAAA,EACP,MAAQ,EAAA,KAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAA;;;;;;;;;;;;;;AAoBA,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIA,wCAAiB,EAAA;AACxC,IAAA,MAAM,iBAAiBC,+CAA2B,EAAA;AAElD,IAAA,MAAM,WAAWC,YAAS,CAAA,MAAM,cAAc,cAAe,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopperArrow.js","sources":["../../src/Popper/PopperArrow.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"PopperArrow.js","sources":["../../src/Popper/PopperArrow.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Side } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { ArrowProps } from '@/shared/component/Arrow.vue'\n\nconst OPPOSITE_SIDE: Record<Side, Side> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n}\n\nexport interface PopperArrowProps extends ArrowProps, PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useForwardExpose } from '@/shared'\nimport Arrow from '@/shared/component/Arrow.vue'\nimport { injectPopperContentContext } from './PopperContent.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nwithDefaults(\n defineProps<PopperArrowProps>(),\n { as: 'svg' },\n)\n\nconst { forwardRef } = useForwardExpose()\nconst contentContext = injectPopperContentContext()\n\nconst baseSide = computed(() => OPPOSITE_SIDE[contentContext.placedSide.value])\n</script>\n\n<template>\n <span\n :ref=\"(el: HTMLElement) => {\n contentContext.onArrowChange(el)\n return undefined\n }\"\n :style=\"{\n position: 'absolute',\n left: contentContext.arrowX?.value ? `${contentContext.arrowX?.value}px` : undefined,\n top: contentContext.arrowY?.value ? `${contentContext.arrowY?.value}px` : undefined,\n [baseSide]: 0,\n transformOrigin: {\n top: '',\n right: '0 0',\n bottom: 'center 0',\n left: '100% 0',\n }[contentContext.placedSide.value],\n transform: {\n top: 'translateY(100%)',\n right: 'translateY(50%) rotate(90deg) translateX(-50%)',\n bottom: `rotate(180deg)`,\n left: 'translateY(50%) rotate(-90deg) translateX(50%)',\n }[contentContext.placedSide.value],\n visibility: contentContext.shouldHideArrow.value ? 'hidden' : undefined,\n }\"\n >\n <Arrow\n v-bind=\"$attrs\"\n :ref=\"forwardRef\"\n :style=\"{\n display: 'block',\n }\"\n :as=\"as\"\n :as-child=\"asChild\"\n :rounded=\"rounded\"\n :width=\"width\"\n :height=\"height\"\n >\n <slot />\n </Arrow>\n </span>\n</template>\n"],"names":[],"mappings":";;;;;AAKA,MAAM,aAAoC,GAAA;AAAA,EACxC,GAAK,EAAA,QAAA;AAAA,EACL,KAAO,EAAA,MAAA;AAAA,EACP,MAAQ,EAAA,KAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAA;;;;;;;;;;;;;;AAoBA,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AACxC,IAAA,MAAM,iBAAiB,0BAA2B,EAAA;AAElD,IAAA,MAAM,WAAW,QAAS,CAAA,MAAM,cAAc,cAAe,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopperContent.cjs","sources":["../../src/Popper/PopperContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type {\n Middleware,\n Placement,\n ReferenceElement,\n} from '@floating-ui/vue'\nimport type { Ref } from 'vue'\nimport type {\n Align,\n Side,\n} from './utils'\nimport { createContext, useForwardExpose, useSize } from '@/shared'\n\nexport const PopperContentPropsDefaultValue = {\n side: 'bottom' as Side,\n sideOffset: 0,\n align: 'center' as Align,\n alignOffset: 0,\n arrowPadding: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial' as 'partial' | 'always',\n hideWhenDetached: false,\n positionStrategy: 'fixed' as 'absolute' | 'fixed',\n updatePositionStrategy: 'optimized' as 'optimized' | 'always',\n prioritizePosition: false,\n}\n\nexport interface PopperContentProps extends PrimitiveProps {\n /**\n * The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions\n * is enabled.\n *\n * @defaultValue \"top\"\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n *\n * @defaultValue 0\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger.\n * May change when collisions occur.\n *\n * @defaultValue \"center\"\n */\n align?: Align\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n *\n * @defaultValue 0\n */\n alignOffset?: number\n\n /**\n * When `true`, overrides the side and align preferences\n * to prevent collisions with boundary edges.\n *\n * @defaultValue true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default\n * this is the viewport, though you can provide additional\n * element(s) to be included in this check.\n *\n * @defaultValue []\n */\n collisionBoundary?: Element | null | Array<Element | null>\n\n /**\n * The distance in pixels from the boundary edges where collision\n * detection should occur. Accepts a number (same for all sides),\n * or a partial padding object, for example: { top: 20, left: 20 }.\n *\n * @defaultValue 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The padding between the arrow and the edges of the content.\n * If your content has border-radius, this will prevent it from\n * overflowing the corners.\n *\n * @defaultValue 0\n */\n arrowPadding?: number\n\n /**\n * The sticky behavior on the align axis. `partial` will keep the\n * content in the boundary as long as the trigger is at least partially\n * in the boundary whilst \"always\" will keep the content in the boundary\n * regardless.\n *\n * @defaultValue \"partial\"\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n *\n * @defaultValue false\n */\n hideWhenDetached?: boolean\n\n /**\n * The type of CSS position property to use.\n */\n positionStrategy?: 'absolute' | 'fixed'\n\n /**\n * Strategy to update the position of the floating element on every animation frame.\n *\n * @defaultValue 'optimized'\n */\n updatePositionStrategy?: 'optimized' | 'always'\n\n /**\n * Whether to disable the update position for the content when the layout shifted.\n *\n * @defaultValue false\n */\n disableUpdateOnLayoutShift?: boolean\n\n /**\n * Force content to be position within the viewport.\n *\n * Might overlap the reference element, which may not be desired.\n *\n * @defaultValue false\n */\n prioritizePosition?: boolean\n\n /**\n * The custom element or virtual element that will be set as the reference\n * to position the floating element.\n *\n * If provided, it will replace the default anchor element.\n */\n reference?: ReferenceElement\n}\n\nexport interface PopperContentContext {\n placedSide: Ref<Side>\n onArrowChange: (arrow: HTMLElement | undefined) => void\n arrowX?: Ref<number>\n arrowY?: Ref<number>\n shouldHideArrow: Ref<boolean>\n}\n\nexport const [injectPopperContentContext, providePopperContentContext]\n = createContext<PopperContentContext>('PopperContent')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n Primitive,\n} from '@/Primitive'\nimport {\n autoUpdate,\n flip,\n arrow as floatingUIarrow,\n hide,\n limitShift,\n offset,\n shift,\n size,\n useFloating,\n} from '@floating-ui/vue'\nimport { computedEager } from '@vueuse/core'\nimport { computed, ref, watchEffect, watchPostEffect } from 'vue'\nimport { injectPopperRootContext } from './PopperRoot.vue'\nimport {\n getSideAndAlignFromPlacement,\n isNotNull,\n transformOrigin,\n} from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperContentProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<{\n placed: [void]\n}>()\n\nconst rootContext = injectPopperRootContext()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\n\nconst floatingRef = ref<HTMLElement>()\n\nconst arrow = ref<HTMLElement>()\nconst { width: arrowWidth, height: arrowHeight } = useSize(arrow)\n\nconst desiredPlacement = computed(\n () =>\n (props.side\n + (props.align !== 'center' ? `-${props.align}` : '')) as Placement,\n)\n\nconst collisionPadding = computed(() => {\n return typeof props.collisionPadding === 'number'\n ? props.collisionPadding\n : { top: 0, right: 0, bottom: 0, left: 0, ...props.collisionPadding }\n})\n\nconst boundary = computed(() => {\n return Array.isArray(props.collisionBoundary)\n ? props.collisionBoundary\n : [props.collisionBoundary]\n})\n\nconst detectOverflowOptions = computed(() => {\n return {\n padding: collisionPadding.value,\n boundary: boundary.value.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: boundary.value.length > 0,\n }\n})\n\nconst computedMiddleware = computedEager(() => {\n return [\n offset({\n mainAxis: props.sideOffset + arrowHeight.value,\n alignmentAxis: props.alignOffset,\n }),\n props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n props.avoidCollisions\n && shift({\n mainAxis: true,\n crossAxis: !!props.prioritizePosition,\n limiter: props.sticky === 'partial' ? limitShift() : undefined,\n ...detectOverflowOptions.value,\n }),\n !props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n size({\n ...detectOverflowOptions.value,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference\n const contentStyle = elements.floating.style\n contentStyle.setProperty(\n '--reka-popper-available-width',\n `${availableWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-available-height',\n `${availableHeight}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-width',\n `${anchorWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-height',\n `${anchorHeight}px`,\n )\n },\n }),\n arrow.value\n && floatingUIarrow({ element: arrow.value, padding: props.arrowPadding }),\n transformOrigin({\n arrowWidth: arrowWidth.value,\n arrowHeight: arrowHeight.value,\n }),\n props.hideWhenDetached\n && hide({ strategy: 'referenceHidden', ...detectOverflowOptions.value }),\n ] as Middleware[]\n})\n\n// If provided custom reference, it will overwrite the default anchor element\nconst reference = computed(() => props.reference ?? rootContext.anchor.value)\n\nconst { floatingStyles, placement, isPositioned, middlewareData, update } = useFloating(\n reference,\n floatingRef,\n {\n strategy: props.positionStrategy,\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n layoutShift: !props.disableUpdateOnLayoutShift,\n animationFrame: props.updatePositionStrategy === 'always',\n })\n return cleanup\n },\n middleware: computedMiddleware,\n },\n)\n\nconst placedSide = computed(\n () => getSideAndAlignFromPlacement(placement.value)[0],\n)\nconst placedAlign = computed(\n () => getSideAndAlignFromPlacement(placement.value)[1],\n)\n\nwatchPostEffect(() => {\n if (isPositioned.value)\n emits('placed')\n})\n\nconst cannotCenterArrow = computed(\n () => middlewareData.value.arrow?.centerOffset !== 0,\n)\n\nconst contentZIndex = ref('')\nwatchEffect(() => {\n if (contentElement.value)\n contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex\n})\n\nconst arrowX = computed(() => middlewareData.value.arrow?.x ?? 0)\nconst arrowY = computed(() => middlewareData.value.arrow?.y ?? 0)\n\nprovidePopperContentContext({\n placedSide,\n onArrowChange: element => arrow.value = element,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n})\n</script>\n\n<template>\n <div\n ref=\"floatingRef\"\n data-reka-popper-content-wrapper=\"\"\n :style=\"{\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', // keep off the page when measuring\n minWidth: 'max-content',\n zIndex: contentZIndex,\n ['--reka-popper-transform-origin' as any]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y,\n ].join(' '),\n\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...(middlewareData.hide?.referenceHidden && {\n visibility: 'hidden',\n pointerEvents: 'none',\n }),\n }\"\n >\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"$attrs\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :data-side=\"placedSide\"\n :data-align=\"placedAlign\"\n :style=\"{\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? 'none' : undefined,\n }\"\n >\n <slot />\n </Primitive>\n </div>\n</template>\n"],"names":["createContext","injectPopperRootContext","useForwardExpose","ref","useSize","computed","isNotNull","computedEager","offset","flip","shift","limitShift","size","floatingUIarrow","transformOrigin","hide","useFloating","autoUpdate","getSideAndAlignFromPlacement","watchPostEffect","watchEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PopperContent.cjs","sources":["../../src/Popper/PopperContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n Middleware,\n Placement,\n ReferenceElement,\n} from '@floating-ui/vue'\nimport type { Ref } from 'vue'\nimport type {\n Align,\n Side,\n} from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useForwardExpose, useSize } from '@/shared'\n\nexport const PopperContentPropsDefaultValue = {\n side: 'bottom' as Side,\n sideOffset: 0,\n align: 'center' as Align,\n alignOffset: 0,\n arrowPadding: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial' as 'partial' | 'always',\n hideWhenDetached: false,\n positionStrategy: 'fixed' as 'absolute' | 'fixed',\n updatePositionStrategy: 'optimized' as 'optimized' | 'always',\n prioritizePosition: false,\n}\n\nexport interface PopperContentProps extends PrimitiveProps {\n /**\n * The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions\n * is enabled.\n *\n * @defaultValue \"top\"\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n *\n * @defaultValue 0\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger.\n * May change when collisions occur.\n *\n * @defaultValue \"center\"\n */\n align?: Align\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n *\n * @defaultValue 0\n */\n alignOffset?: number\n\n /**\n * When `true`, overrides the side and align preferences\n * to prevent collisions with boundary edges.\n *\n * @defaultValue true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default\n * this is the viewport, though you can provide additional\n * element(s) to be included in this check.\n *\n * @defaultValue []\n */\n collisionBoundary?: Element | null | Array<Element | null>\n\n /**\n * The distance in pixels from the boundary edges where collision\n * detection should occur. Accepts a number (same for all sides),\n * or a partial padding object, for example: { top: 20, left: 20 }.\n *\n * @defaultValue 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The padding between the arrow and the edges of the content.\n * If your content has border-radius, this will prevent it from\n * overflowing the corners.\n *\n * @defaultValue 0\n */\n arrowPadding?: number\n\n /**\n * The sticky behavior on the align axis. `partial` will keep the\n * content in the boundary as long as the trigger is at least partially\n * in the boundary whilst \"always\" will keep the content in the boundary\n * regardless.\n *\n * @defaultValue \"partial\"\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n *\n * @defaultValue false\n */\n hideWhenDetached?: boolean\n\n /**\n * The type of CSS position property to use.\n */\n positionStrategy?: 'absolute' | 'fixed'\n\n /**\n * Strategy to update the position of the floating element on every animation frame.\n *\n * @defaultValue 'optimized'\n */\n updatePositionStrategy?: 'optimized' | 'always'\n\n /**\n * Whether to disable the update position for the content when the layout shifted.\n *\n * @defaultValue false\n */\n disableUpdateOnLayoutShift?: boolean\n\n /**\n * Force content to be position within the viewport.\n *\n * Might overlap the reference element, which may not be desired.\n *\n * @defaultValue false\n */\n prioritizePosition?: boolean\n\n /**\n * The custom element or virtual element that will be set as the reference\n * to position the floating element.\n *\n * If provided, it will replace the default anchor element.\n */\n reference?: ReferenceElement\n}\n\nexport interface PopperContentContext {\n placedSide: Ref<Side>\n onArrowChange: (arrow: HTMLElement | undefined) => void\n arrowX?: Ref<number>\n arrowY?: Ref<number>\n shouldHideArrow: Ref<boolean>\n}\n\nexport const [injectPopperContentContext, providePopperContentContext]\n = createContext<PopperContentContext>('PopperContent')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n flip,\n arrow as floatingUIarrow,\n hide,\n limitShift,\n offset,\n shift,\n size,\n useFloating,\n} from '@floating-ui/vue'\nimport { computedEager } from '@vueuse/core'\nimport { computed, ref, watchEffect, watchPostEffect } from 'vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { injectPopperRootContext } from './PopperRoot.vue'\nimport {\n getSideAndAlignFromPlacement,\n isNotNull,\n transformOrigin,\n} from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperContentProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<{\n placed: [void]\n}>()\n\nconst rootContext = injectPopperRootContext()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\n\nconst floatingRef = ref<HTMLElement>()\n\nconst arrow = ref<HTMLElement>()\nconst { width: arrowWidth, height: arrowHeight } = useSize(arrow)\n\nconst desiredPlacement = computed(\n () =>\n (props.side\n + (props.align !== 'center' ? `-${props.align}` : '')) as Placement,\n)\n\nconst collisionPadding = computed(() => {\n return typeof props.collisionPadding === 'number'\n ? props.collisionPadding\n : { top: 0, right: 0, bottom: 0, left: 0, ...props.collisionPadding }\n})\n\nconst boundary = computed(() => {\n return Array.isArray(props.collisionBoundary)\n ? props.collisionBoundary\n : [props.collisionBoundary]\n})\n\nconst detectOverflowOptions = computed(() => {\n return {\n padding: collisionPadding.value,\n boundary: boundary.value.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: boundary.value.length > 0,\n }\n})\n\nconst computedMiddleware = computedEager(() => {\n return [\n offset({\n mainAxis: props.sideOffset + arrowHeight.value,\n alignmentAxis: props.alignOffset,\n }),\n props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n props.avoidCollisions\n && shift({\n mainAxis: true,\n crossAxis: !!props.prioritizePosition,\n limiter: props.sticky === 'partial' ? limitShift() : undefined,\n ...detectOverflowOptions.value,\n }),\n !props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n size({\n ...detectOverflowOptions.value,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference\n const contentStyle = elements.floating.style\n contentStyle.setProperty(\n '--reka-popper-available-width',\n `${availableWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-available-height',\n `${availableHeight}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-width',\n `${anchorWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-height',\n `${anchorHeight}px`,\n )\n },\n }),\n arrow.value\n && floatingUIarrow({ element: arrow.value, padding: props.arrowPadding }),\n transformOrigin({\n arrowWidth: arrowWidth.value,\n arrowHeight: arrowHeight.value,\n }),\n props.hideWhenDetached\n && hide({ strategy: 'referenceHidden', ...detectOverflowOptions.value }),\n ] as Middleware[]\n})\n\n// If provided custom reference, it will overwrite the default anchor element\nconst reference = computed(() => props.reference ?? rootContext.anchor.value)\n\nconst { floatingStyles, placement, isPositioned, middlewareData, update } = useFloating(\n reference,\n floatingRef,\n {\n strategy: props.positionStrategy,\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n layoutShift: !props.disableUpdateOnLayoutShift,\n animationFrame: props.updatePositionStrategy === 'always',\n })\n return cleanup\n },\n middleware: computedMiddleware,\n },\n)\n\nconst placedSide = computed(\n () => getSideAndAlignFromPlacement(placement.value)[0],\n)\nconst placedAlign = computed(\n () => getSideAndAlignFromPlacement(placement.value)[1],\n)\n\nwatchPostEffect(() => {\n if (isPositioned.value)\n emits('placed')\n})\n\nconst cannotCenterArrow = computed(\n () => middlewareData.value.arrow?.centerOffset !== 0,\n)\n\nconst contentZIndex = ref('')\nwatchEffect(() => {\n if (contentElement.value)\n contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex\n})\n\nconst arrowX = computed(() => middlewareData.value.arrow?.x ?? 0)\nconst arrowY = computed(() => middlewareData.value.arrow?.y ?? 0)\n\nprovidePopperContentContext({\n placedSide,\n onArrowChange: element => arrow.value = element,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n})\n</script>\n\n<template>\n <div\n ref=\"floatingRef\"\n data-reka-popper-content-wrapper=\"\"\n :style=\"{\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', // keep off the page when measuring\n minWidth: 'max-content',\n zIndex: contentZIndex,\n ['--reka-popper-transform-origin' as any]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y,\n ].join(' '),\n\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...(middlewareData.hide?.referenceHidden && {\n visibility: 'hidden',\n pointerEvents: 'none',\n }),\n }\"\n >\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"$attrs\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :data-side=\"placedSide\"\n :data-align=\"placedAlign\"\n :style=\"{\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? 'none' : undefined,\n }\"\n >\n <slot />\n </Primitive>\n </div>\n</template>\n"],"names":["createContext","injectPopperRootContext","useForwardExpose","ref","useSize","computed","isNotNull","computedEager","offset","flip","shift","limitShift","size","floatingUIarrow","transformOrigin","hide","useFloating","autoUpdate","getSideAndAlignFromPlacement","watchPostEffect","watchEffect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopperContent.js","sources":["../../src/Popper/PopperContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type {\n Middleware,\n Placement,\n ReferenceElement,\n} from '@floating-ui/vue'\nimport type { Ref } from 'vue'\nimport type {\n Align,\n Side,\n} from './utils'\nimport { createContext, useForwardExpose, useSize } from '@/shared'\n\nexport const PopperContentPropsDefaultValue = {\n side: 'bottom' as Side,\n sideOffset: 0,\n align: 'center' as Align,\n alignOffset: 0,\n arrowPadding: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial' as 'partial' | 'always',\n hideWhenDetached: false,\n positionStrategy: 'fixed' as 'absolute' | 'fixed',\n updatePositionStrategy: 'optimized' as 'optimized' | 'always',\n prioritizePosition: false,\n}\n\nexport interface PopperContentProps extends PrimitiveProps {\n /**\n * The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions\n * is enabled.\n *\n * @defaultValue \"top\"\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n *\n * @defaultValue 0\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger.\n * May change when collisions occur.\n *\n * @defaultValue \"center\"\n */\n align?: Align\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n *\n * @defaultValue 0\n */\n alignOffset?: number\n\n /**\n * When `true`, overrides the side and align preferences\n * to prevent collisions with boundary edges.\n *\n * @defaultValue true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default\n * this is the viewport, though you can provide additional\n * element(s) to be included in this check.\n *\n * @defaultValue []\n */\n collisionBoundary?: Element | null | Array<Element | null>\n\n /**\n * The distance in pixels from the boundary edges where collision\n * detection should occur. Accepts a number (same for all sides),\n * or a partial padding object, for example: { top: 20, left: 20 }.\n *\n * @defaultValue 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The padding between the arrow and the edges of the content.\n * If your content has border-radius, this will prevent it from\n * overflowing the corners.\n *\n * @defaultValue 0\n */\n arrowPadding?: number\n\n /**\n * The sticky behavior on the align axis. `partial` will keep the\n * content in the boundary as long as the trigger is at least partially\n * in the boundary whilst \"always\" will keep the content in the boundary\n * regardless.\n *\n * @defaultValue \"partial\"\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n *\n * @defaultValue false\n */\n hideWhenDetached?: boolean\n\n /**\n * The type of CSS position property to use.\n */\n positionStrategy?: 'absolute' | 'fixed'\n\n /**\n * Strategy to update the position of the floating element on every animation frame.\n *\n * @defaultValue 'optimized'\n */\n updatePositionStrategy?: 'optimized' | 'always'\n\n /**\n * Whether to disable the update position for the content when the layout shifted.\n *\n * @defaultValue false\n */\n disableUpdateOnLayoutShift?: boolean\n\n /**\n * Force content to be position within the viewport.\n *\n * Might overlap the reference element, which may not be desired.\n *\n * @defaultValue false\n */\n prioritizePosition?: boolean\n\n /**\n * The custom element or virtual element that will be set as the reference\n * to position the floating element.\n *\n * If provided, it will replace the default anchor element.\n */\n reference?: ReferenceElement\n}\n\nexport interface PopperContentContext {\n placedSide: Ref<Side>\n onArrowChange: (arrow: HTMLElement | undefined) => void\n arrowX?: Ref<number>\n arrowY?: Ref<number>\n shouldHideArrow: Ref<boolean>\n}\n\nexport const [injectPopperContentContext, providePopperContentContext]\n = createContext<PopperContentContext>('PopperContent')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n Primitive,\n} from '@/Primitive'\nimport {\n autoUpdate,\n flip,\n arrow as floatingUIarrow,\n hide,\n limitShift,\n offset,\n shift,\n size,\n useFloating,\n} from '@floating-ui/vue'\nimport { computedEager } from '@vueuse/core'\nimport { computed, ref, watchEffect, watchPostEffect } from 'vue'\nimport { injectPopperRootContext } from './PopperRoot.vue'\nimport {\n getSideAndAlignFromPlacement,\n isNotNull,\n transformOrigin,\n} from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperContentProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<{\n placed: [void]\n}>()\n\nconst rootContext = injectPopperRootContext()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\n\nconst floatingRef = ref<HTMLElement>()\n\nconst arrow = ref<HTMLElement>()\nconst { width: arrowWidth, height: arrowHeight } = useSize(arrow)\n\nconst desiredPlacement = computed(\n () =>\n (props.side\n + (props.align !== 'center' ? `-${props.align}` : '')) as Placement,\n)\n\nconst collisionPadding = computed(() => {\n return typeof props.collisionPadding === 'number'\n ? props.collisionPadding\n : { top: 0, right: 0, bottom: 0, left: 0, ...props.collisionPadding }\n})\n\nconst boundary = computed(() => {\n return Array.isArray(props.collisionBoundary)\n ? props.collisionBoundary\n : [props.collisionBoundary]\n})\n\nconst detectOverflowOptions = computed(() => {\n return {\n padding: collisionPadding.value,\n boundary: boundary.value.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: boundary.value.length > 0,\n }\n})\n\nconst computedMiddleware = computedEager(() => {\n return [\n offset({\n mainAxis: props.sideOffset + arrowHeight.value,\n alignmentAxis: props.alignOffset,\n }),\n props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n props.avoidCollisions\n && shift({\n mainAxis: true,\n crossAxis: !!props.prioritizePosition,\n limiter: props.sticky === 'partial' ? limitShift() : undefined,\n ...detectOverflowOptions.value,\n }),\n !props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n size({\n ...detectOverflowOptions.value,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference\n const contentStyle = elements.floating.style\n contentStyle.setProperty(\n '--reka-popper-available-width',\n `${availableWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-available-height',\n `${availableHeight}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-width',\n `${anchorWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-height',\n `${anchorHeight}px`,\n )\n },\n }),\n arrow.value\n && floatingUIarrow({ element: arrow.value, padding: props.arrowPadding }),\n transformOrigin({\n arrowWidth: arrowWidth.value,\n arrowHeight: arrowHeight.value,\n }),\n props.hideWhenDetached\n && hide({ strategy: 'referenceHidden', ...detectOverflowOptions.value }),\n ] as Middleware[]\n})\n\n// If provided custom reference, it will overwrite the default anchor element\nconst reference = computed(() => props.reference ?? rootContext.anchor.value)\n\nconst { floatingStyles, placement, isPositioned, middlewareData, update } = useFloating(\n reference,\n floatingRef,\n {\n strategy: props.positionStrategy,\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n layoutShift: !props.disableUpdateOnLayoutShift,\n animationFrame: props.updatePositionStrategy === 'always',\n })\n return cleanup\n },\n middleware: computedMiddleware,\n },\n)\n\nconst placedSide = computed(\n () => getSideAndAlignFromPlacement(placement.value)[0],\n)\nconst placedAlign = computed(\n () => getSideAndAlignFromPlacement(placement.value)[1],\n)\n\nwatchPostEffect(() => {\n if (isPositioned.value)\n emits('placed')\n})\n\nconst cannotCenterArrow = computed(\n () => middlewareData.value.arrow?.centerOffset !== 0,\n)\n\nconst contentZIndex = ref('')\nwatchEffect(() => {\n if (contentElement.value)\n contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex\n})\n\nconst arrowX = computed(() => middlewareData.value.arrow?.x ?? 0)\nconst arrowY = computed(() => middlewareData.value.arrow?.y ?? 0)\n\nprovidePopperContentContext({\n placedSide,\n onArrowChange: element => arrow.value = element,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n})\n</script>\n\n<template>\n <div\n ref=\"floatingRef\"\n data-reka-popper-content-wrapper=\"\"\n :style=\"{\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', // keep off the page when measuring\n minWidth: 'max-content',\n zIndex: contentZIndex,\n ['--reka-popper-transform-origin' as any]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y,\n ].join(' '),\n\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...(middlewareData.hide?.referenceHidden && {\n visibility: 'hidden',\n pointerEvents: 'none',\n }),\n }\"\n >\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"$attrs\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :data-side=\"placedSide\"\n :data-align=\"placedAlign\"\n :style=\"{\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? 'none' : undefined,\n }\"\n >\n <slot />\n </Primitive>\n </div>\n</template>\n"],"names":["arrow","floatingUIarrow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PopperContent.js","sources":["../../src/Popper/PopperContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n Middleware,\n Placement,\n ReferenceElement,\n} from '@floating-ui/vue'\nimport type { Ref } from 'vue'\nimport type {\n Align,\n Side,\n} from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useForwardExpose, useSize } from '@/shared'\n\nexport const PopperContentPropsDefaultValue = {\n side: 'bottom' as Side,\n sideOffset: 0,\n align: 'center' as Align,\n alignOffset: 0,\n arrowPadding: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial' as 'partial' | 'always',\n hideWhenDetached: false,\n positionStrategy: 'fixed' as 'absolute' | 'fixed',\n updatePositionStrategy: 'optimized' as 'optimized' | 'always',\n prioritizePosition: false,\n}\n\nexport interface PopperContentProps extends PrimitiveProps {\n /**\n * The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions\n * is enabled.\n *\n * @defaultValue \"top\"\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n *\n * @defaultValue 0\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger.\n * May change when collisions occur.\n *\n * @defaultValue \"center\"\n */\n align?: Align\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n *\n * @defaultValue 0\n */\n alignOffset?: number\n\n /**\n * When `true`, overrides the side and align preferences\n * to prevent collisions with boundary edges.\n *\n * @defaultValue true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default\n * this is the viewport, though you can provide additional\n * element(s) to be included in this check.\n *\n * @defaultValue []\n */\n collisionBoundary?: Element | null | Array<Element | null>\n\n /**\n * The distance in pixels from the boundary edges where collision\n * detection should occur. Accepts a number (same for all sides),\n * or a partial padding object, for example: { top: 20, left: 20 }.\n *\n * @defaultValue 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The padding between the arrow and the edges of the content.\n * If your content has border-radius, this will prevent it from\n * overflowing the corners.\n *\n * @defaultValue 0\n */\n arrowPadding?: number\n\n /**\n * The sticky behavior on the align axis. `partial` will keep the\n * content in the boundary as long as the trigger is at least partially\n * in the boundary whilst \"always\" will keep the content in the boundary\n * regardless.\n *\n * @defaultValue \"partial\"\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n *\n * @defaultValue false\n */\n hideWhenDetached?: boolean\n\n /**\n * The type of CSS position property to use.\n */\n positionStrategy?: 'absolute' | 'fixed'\n\n /**\n * Strategy to update the position of the floating element on every animation frame.\n *\n * @defaultValue 'optimized'\n */\n updatePositionStrategy?: 'optimized' | 'always'\n\n /**\n * Whether to disable the update position for the content when the layout shifted.\n *\n * @defaultValue false\n */\n disableUpdateOnLayoutShift?: boolean\n\n /**\n * Force content to be position within the viewport.\n *\n * Might overlap the reference element, which may not be desired.\n *\n * @defaultValue false\n */\n prioritizePosition?: boolean\n\n /**\n * The custom element or virtual element that will be set as the reference\n * to position the floating element.\n *\n * If provided, it will replace the default anchor element.\n */\n reference?: ReferenceElement\n}\n\nexport interface PopperContentContext {\n placedSide: Ref<Side>\n onArrowChange: (arrow: HTMLElement | undefined) => void\n arrowX?: Ref<number>\n arrowY?: Ref<number>\n shouldHideArrow: Ref<boolean>\n}\n\nexport const [injectPopperContentContext, providePopperContentContext]\n = createContext<PopperContentContext>('PopperContent')\n</script>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n flip,\n arrow as floatingUIarrow,\n hide,\n limitShift,\n offset,\n shift,\n size,\n useFloating,\n} from '@floating-ui/vue'\nimport { computedEager } from '@vueuse/core'\nimport { computed, ref, watchEffect, watchPostEffect } from 'vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { injectPopperRootContext } from './PopperRoot.vue'\nimport {\n getSideAndAlignFromPlacement,\n isNotNull,\n transformOrigin,\n} from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperContentProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<{\n placed: [void]\n}>()\n\nconst rootContext = injectPopperRootContext()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\n\nconst floatingRef = ref<HTMLElement>()\n\nconst arrow = ref<HTMLElement>()\nconst { width: arrowWidth, height: arrowHeight } = useSize(arrow)\n\nconst desiredPlacement = computed(\n () =>\n (props.side\n + (props.align !== 'center' ? `-${props.align}` : '')) as Placement,\n)\n\nconst collisionPadding = computed(() => {\n return typeof props.collisionPadding === 'number'\n ? props.collisionPadding\n : { top: 0, right: 0, bottom: 0, left: 0, ...props.collisionPadding }\n})\n\nconst boundary = computed(() => {\n return Array.isArray(props.collisionBoundary)\n ? props.collisionBoundary\n : [props.collisionBoundary]\n})\n\nconst detectOverflowOptions = computed(() => {\n return {\n padding: collisionPadding.value,\n boundary: boundary.value.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: boundary.value.length > 0,\n }\n})\n\nconst computedMiddleware = computedEager(() => {\n return [\n offset({\n mainAxis: props.sideOffset + arrowHeight.value,\n alignmentAxis: props.alignOffset,\n }),\n props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n props.avoidCollisions\n && shift({\n mainAxis: true,\n crossAxis: !!props.prioritizePosition,\n limiter: props.sticky === 'partial' ? limitShift() : undefined,\n ...detectOverflowOptions.value,\n }),\n !props.prioritizePosition\n && props.avoidCollisions\n && flip({\n ...detectOverflowOptions.value,\n }),\n size({\n ...detectOverflowOptions.value,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference\n const contentStyle = elements.floating.style\n contentStyle.setProperty(\n '--reka-popper-available-width',\n `${availableWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-available-height',\n `${availableHeight}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-width',\n `${anchorWidth}px`,\n )\n contentStyle.setProperty(\n '--reka-popper-anchor-height',\n `${anchorHeight}px`,\n )\n },\n }),\n arrow.value\n && floatingUIarrow({ element: arrow.value, padding: props.arrowPadding }),\n transformOrigin({\n arrowWidth: arrowWidth.value,\n arrowHeight: arrowHeight.value,\n }),\n props.hideWhenDetached\n && hide({ strategy: 'referenceHidden', ...detectOverflowOptions.value }),\n ] as Middleware[]\n})\n\n// If provided custom reference, it will overwrite the default anchor element\nconst reference = computed(() => props.reference ?? rootContext.anchor.value)\n\nconst { floatingStyles, placement, isPositioned, middlewareData, update } = useFloating(\n reference,\n floatingRef,\n {\n strategy: props.positionStrategy,\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n layoutShift: !props.disableUpdateOnLayoutShift,\n animationFrame: props.updatePositionStrategy === 'always',\n })\n return cleanup\n },\n middleware: computedMiddleware,\n },\n)\n\nconst placedSide = computed(\n () => getSideAndAlignFromPlacement(placement.value)[0],\n)\nconst placedAlign = computed(\n () => getSideAndAlignFromPlacement(placement.value)[1],\n)\n\nwatchPostEffect(() => {\n if (isPositioned.value)\n emits('placed')\n})\n\nconst cannotCenterArrow = computed(\n () => middlewareData.value.arrow?.centerOffset !== 0,\n)\n\nconst contentZIndex = ref('')\nwatchEffect(() => {\n if (contentElement.value)\n contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex\n})\n\nconst arrowX = computed(() => middlewareData.value.arrow?.x ?? 0)\nconst arrowY = computed(() => middlewareData.value.arrow?.y ?? 0)\n\nprovidePopperContentContext({\n placedSide,\n onArrowChange: element => arrow.value = element,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n})\n</script>\n\n<template>\n <div\n ref=\"floatingRef\"\n data-reka-popper-content-wrapper=\"\"\n :style=\"{\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', // keep off the page when measuring\n minWidth: 'max-content',\n zIndex: contentZIndex,\n ['--reka-popper-transform-origin' as any]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y,\n ].join(' '),\n\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...(middlewareData.hide?.referenceHidden && {\n visibility: 'hidden',\n pointerEvents: 'none',\n }),\n }\"\n >\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"$attrs\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :data-side=\"placedSide\"\n :data-align=\"placedAlign\"\n :style=\"{\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? 'none' : undefined,\n }\"\n >\n <slot />\n </Primitive>\n </div>\n</template>\n"],"names":["arrow","floatingUIarrow"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Presence.cjs","sources":["../../src/Presence/Presence.ts"],"sourcesContent":["import type {\n SlotsType,\n VNode,\n} from 'vue'\nimport {
|
|
1
|
+
{"version":3,"file":"Presence.cjs","sources":["../../src/Presence/Presence.ts"],"sourcesContent":["import type {\n SlotsType,\n VNode,\n} from 'vue'\nimport { unrefElement } from '@vueuse/core'\nimport {\n defineComponent,\n getCurrentInstance,\n h,\n ref,\n toRefs,\n} from 'vue'\nimport { renderSlotFragments } from '@/shared'\nimport { usePresence } from './usePresence'\n\nexport interface PresenceProps {\n /**\n * Conditional to mount or unmount the child element. Similar to `v-if`\n *\n * @required true\n */\n present: boolean\n /**\n * Force the element to render all the time.\n *\n * Useful for programmatically render grandchild component with the exposed `present`\n *\n * @defaultValue false\n */\n forceMount?: boolean\n}\n\nexport default defineComponent({\n name: 'Presence',\n props: {\n present: {\n type: Boolean,\n required: true,\n },\n forceMount: {\n type: Boolean,\n },\n },\n slots: {} as SlotsType<{\n default: (opts: { present: boolean }) => any\n }>,\n setup(props, { slots, expose }) {\n const { present, forceMount } = toRefs(props)\n\n const node = ref<HTMLElement>()\n // Mount composables once to prevent duplicated eventListener\n const { isPresent } = usePresence(present, node)\n expose({ present: isPresent })\n\n let children = slots.default({ present: isPresent.value })\n children = renderSlotFragments(children || [])\n const instance = getCurrentInstance()\n\n if (children && children?.length > 1) {\n const componentName = instance?.parent?.type.name\n ? `<${instance.parent.type.name} />`\n : 'component'\n\n throw new Error(\n [\n `Detected an invalid children for \\`${componentName}\\` for \\`Presence\\` component.`,\n '',\n 'Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.',\n 'You can apply a few solutions:',\n [\n 'Provide a single child element so that `presence` directive attach correctly.',\n 'Ensure the first child is an actual element instead of a raw text node or comment node.',\n ]\n .map(line => ` - ${line}`)\n .join('\\n'),\n ].join('\\n'),\n )\n }\n\n return () => {\n if (forceMount.value || present.value || isPresent.value) {\n return h(slots.default({ present: isPresent.value })[0] as VNode, {\n ref: (v) => {\n const el = unrefElement(v as HTMLElement)\n if (typeof el?.hasAttribute === 'undefined')\n return el\n\n // special case to handle animation for PopperContent\n if (el?.hasAttribute('data-reka-popper-content-wrapper'))\n node.value = el.firstElementChild as HTMLElement\n else\n node.value = el\n\n return el\n },\n })\n }\n else { return null }\n }\n },\n})\n"],"names":["defineComponent","toRefs","ref","usePresence","renderSlotFragments","getCurrentInstance","h","unrefElement"],"mappings":";;;;;;;AAgCA,iBAAeA,mBAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,UAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,OAAA;AAAA,MACN,QAAU,EAAA;AAAA,KACZ;AAAA,IACA,UAAY,EAAA;AAAA,MACV,IAAM,EAAA;AAAA;AACR,GACF;AAAA,EACA,OAAO,EAAC;AAAA,EAGR,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAO,QAAU,EAAA;AAC9B,IAAA,MAAM,EAAE,OAAA,EAAS,UAAW,EAAA,GAAIC,WAAO,KAAK,CAAA;AAE5C,IAAA,MAAM,OAAOC,OAAiB,EAAA;AAE9B,IAAA,MAAM,EAAE,SAAA,EAAc,GAAAC,gCAAA,CAAY,SAAS,IAAI,CAAA;AAC/C,IAAO,MAAA,CAAA,EAAE,OAAS,EAAA,SAAA,EAAW,CAAA;AAE7B,IAAA,IAAI,WAAW,KAAM,CAAA,OAAA,CAAQ,EAAE,OAAS,EAAA,SAAA,CAAU,OAAO,CAAA;AACzD,IAAW,QAAA,GAAAC,8CAAA,CAAoB,QAAY,IAAA,EAAE,CAAA;AAC7C,IAAA,MAAM,WAAWC,sBAAmB,EAAA;AAEpC,IAAI,IAAA,QAAA,IAAY,QAAU,EAAA,MAAA,GAAS,CAAG,EAAA;AACpC,MAAM,MAAA,aAAA,GAAgB,QAAU,EAAA,MAAA,EAAQ,IAAK,CAAA,IAAA,GACzC,IAAI,QAAS,CAAA,MAAA,CAAO,IAAK,CAAA,IAAI,CAC7B,GAAA,CAAA,GAAA,WAAA;AAEJ,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,UACE,sCAAsC,aAAa,CAAA,+BAAA,CAAA;AAAA,UACnD,EAAA;AAAA,UACA,iLAAA;AAAA,UACA,gCAAA;AAAA,UACA;AAAA,YACE,+EAAA;AAAA,YACA;AAAA,WACF,CACG,IAAI,CAAQ,IAAA,KAAA,CAAA,IAAA,EAAO,IAAI,CAAE,CAAA,CAAA,CACzB,KAAK,IAAI;AAAA,SACd,CAAE,KAAK,IAAI;AAAA,OACb;AAAA;AAGF,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,UAAW,CAAA,KAAA,IAAS,OAAQ,CAAA,KAAA,IAAS,UAAU,KAAO,EAAA;AACxD,QAAO,OAAAC,KAAA,CAAE,KAAM,CAAA,OAAA,CAAQ,EAAE,OAAA,EAAS,UAAU,KAAM,EAAC,CAAE,CAAA,CAAC,CAAY,EAAA;AAAA,UAChE,GAAA,EAAK,CAAC,CAAM,KAAA;AACV,YAAM,MAAA,EAAA,GAAKC,kBAAa,CAAgB,CAAA;AACxC,YAAI,IAAA,OAAO,IAAI,YAAiB,KAAA,WAAA;AAC9B,cAAO,OAAA,EAAA;AAGT,YAAI,IAAA,EAAA,EAAI,aAAa,kCAAkC,CAAA;AACrD,cAAA,IAAA,CAAK,QAAQ,EAAG,CAAA,iBAAA;AAAA;AAEhB,cAAA,IAAA,CAAK,KAAQ,GAAA,EAAA;AAEf,YAAO,OAAA,EAAA;AAAA;AACT,SACD,CAAA;AAAA,OAEE,MAAA;AAAE,QAAO,OAAA,IAAA;AAAA;AAAK,KACrB;AAAA;AAEJ,CAAC,CAAA;;;;"}
|