reka-ui 2.2.1 → 2.3.1
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 +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js +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 +1 -1
- package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
- package/dist/Dialog/DialogContentImpl.js +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 +19 -7
- package/dist/DismissableLayer/utils.cjs.map +1 -1
- package/dist/DismissableLayer/utils.js +20 -8
- 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 +3 -3
- package/dist/Editable/EditableRoot.cjs.map +1 -1
- package/dist/Editable/EditableRoot.js +3 -3
- 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 +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.js +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 +1 -1
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js +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 +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.js +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 +14 -6
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +14 -6
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/PinInput/PinInputRoot.cjs +4 -2
- package/dist/PinInput/PinInputRoot.cjs.map +1 -1
- package/dist/PinInput/PinInputRoot.js +4 -2
- 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/PopoverContentImpl.cjs +1 -1
- package/dist/Popover/PopoverContentImpl.js +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 +2 -0
- package/dist/RadioGroup/Radio.cjs.map +1 -1
- package/dist/RadioGroup/Radio.js +2 -0
- 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 +2 -2
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +2 -2
- 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 +31 -4
- package/dist/Stepper/StepperRoot.cjs.map +1 -1
- package/dist/Stepper/StepperRoot.js +31 -4
- 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 +2 -2
- package/dist/Toast/ToastViewport.cjs.map +1 -1
- package/dist/Toast/ToastViewport.js +2 -2
- 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 +2 -2
- package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +2 -2
- 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 +495 -353
- 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/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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.cjs","sources":["../../src/Collection/Collection.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport {
|
|
1
|
+
{"version":3,"file":"Collection.cjs","sources":["../../src/Collection/Collection.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { computed, defineComponent, h, inject, markRaw, provide, ref, watch, watchEffect } from 'vue'\nimport { Slot, usePrimitiveElement } from '@/Primitive'\n\ninterface CollectionContext<ItemData = {}> {\n collectionRef: Ref<HTMLElement | undefined>\n itemMap: Ref<Map<HTMLElement, { ref: HTMLElement, value?: any } & ItemData>>\n}\n\nconst ITEM_DATA_ATTR = 'data-reka-collection-item'\n\nexport function useCollection<ItemData = {}>(options: { key?: string, isProvider?: boolean } = {}) {\n const { key = '', isProvider = false } = options\n const injectionKey = `${key}CollectionProvider`\n let context: CollectionContext<ItemData>\n\n if (isProvider) {\n const itemMap = ref<Map<HTMLElement, { ref: HTMLElement } & ItemData>>(new Map())\n const collectionRef = ref<HTMLElement>()\n\n context = {\n collectionRef,\n itemMap,\n } as CollectionContext<ItemData>\n provide(injectionKey, context)\n }\n else {\n context = inject(injectionKey) as CollectionContext<ItemData>\n }\n\n const getItems = (includeDisabledItem = false) => {\n const collectionNode = context.collectionRef.value\n if (!collectionNode)\n return []\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`))\n const items = Array.from(context.itemMap.value.values())\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref) - orderedNodes.indexOf(b.ref),\n )\n\n if (includeDisabledItem)\n return orderedItems\n else\n return orderedItems.filter(i => i.ref.dataset.disabled !== '')\n }\n\n const CollectionSlot = defineComponent({\n name: 'CollectionSlot',\n setup(_, { slots }) {\n const { primitiveElement, currentElement } = usePrimitiveElement()\n watch(currentElement, () => {\n context.collectionRef.value = currentElement.value\n })\n return () => h(Slot, { ref: primitiveElement }, slots)\n },\n })\n\n const CollectionItem = defineComponent({\n name: 'CollectionItem',\n inheritAttrs: false,\n props: {\n value: {\n // It accepts any value\n validator: () => true,\n },\n },\n setup(props, { slots, attrs }) {\n const { primitiveElement, currentElement } = usePrimitiveElement()\n\n watchEffect((cleanupFn) => {\n if (currentElement.value) {\n const key = markRaw(currentElement.value)\n // @ts-expect-error ignore assignment of unknown to any\n context.itemMap.value.set(key, { ref: currentElement.value!, value: props.value })\n cleanupFn(() => context.itemMap.value.delete(key))\n }\n })\n\n return () => h(Slot, { ...attrs, [ITEM_DATA_ATTR]: '', ref: primitiveElement }, slots)\n },\n })\n\n const reactiveItems = computed(() => Array.from(context.itemMap.value.values()))\n const itemMapSize = computed(() => context.itemMap.value.size)\n\n return { getItems, reactiveItems, itemMapSize, CollectionSlot, CollectionItem }\n}\n"],"names":["ref","provide","inject","defineComponent","usePrimitiveElement","watch","h","Slot","watchEffect","key","markRaw","computed"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.js","sources":["../../src/Collection/Collection.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport {
|
|
1
|
+
{"version":3,"file":"Collection.js","sources":["../../src/Collection/Collection.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { computed, defineComponent, h, inject, markRaw, provide, ref, watch, watchEffect } from 'vue'\nimport { Slot, usePrimitiveElement } from '@/Primitive'\n\ninterface CollectionContext<ItemData = {}> {\n collectionRef: Ref<HTMLElement | undefined>\n itemMap: Ref<Map<HTMLElement, { ref: HTMLElement, value?: any } & ItemData>>\n}\n\nconst ITEM_DATA_ATTR = 'data-reka-collection-item'\n\nexport function useCollection<ItemData = {}>(options: { key?: string, isProvider?: boolean } = {}) {\n const { key = '', isProvider = false } = options\n const injectionKey = `${key}CollectionProvider`\n let context: CollectionContext<ItemData>\n\n if (isProvider) {\n const itemMap = ref<Map<HTMLElement, { ref: HTMLElement } & ItemData>>(new Map())\n const collectionRef = ref<HTMLElement>()\n\n context = {\n collectionRef,\n itemMap,\n } as CollectionContext<ItemData>\n provide(injectionKey, context)\n }\n else {\n context = inject(injectionKey) as CollectionContext<ItemData>\n }\n\n const getItems = (includeDisabledItem = false) => {\n const collectionNode = context.collectionRef.value\n if (!collectionNode)\n return []\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`))\n const items = Array.from(context.itemMap.value.values())\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref) - orderedNodes.indexOf(b.ref),\n )\n\n if (includeDisabledItem)\n return orderedItems\n else\n return orderedItems.filter(i => i.ref.dataset.disabled !== '')\n }\n\n const CollectionSlot = defineComponent({\n name: 'CollectionSlot',\n setup(_, { slots }) {\n const { primitiveElement, currentElement } = usePrimitiveElement()\n watch(currentElement, () => {\n context.collectionRef.value = currentElement.value\n })\n return () => h(Slot, { ref: primitiveElement }, slots)\n },\n })\n\n const CollectionItem = defineComponent({\n name: 'CollectionItem',\n inheritAttrs: false,\n props: {\n value: {\n // It accepts any value\n validator: () => true,\n },\n },\n setup(props, { slots, attrs }) {\n const { primitiveElement, currentElement } = usePrimitiveElement()\n\n watchEffect((cleanupFn) => {\n if (currentElement.value) {\n const key = markRaw(currentElement.value)\n // @ts-expect-error ignore assignment of unknown to any\n context.itemMap.value.set(key, { ref: currentElement.value!, value: props.value })\n cleanupFn(() => context.itemMap.value.delete(key))\n }\n })\n\n return () => h(Slot, { ...attrs, [ITEM_DATA_ATTR]: '', ref: primitiveElement }, slots)\n },\n })\n\n const reactiveItems = computed(() => Array.from(context.itemMap.value.values()))\n const itemMapSize = computed(() => context.itemMap.value.size)\n\n return { getItems, reactiveItems, itemMapSize, CollectionSlot, CollectionItem }\n}\n"],"names":["key"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const vue = require('vue');
|
|
4
|
-
const DismissableLayer_DismissableLayer = require('../DismissableLayer/DismissableLayer.cjs');
|
|
5
4
|
const Popper_PopperContent = require('../Popper/PopperContent.cjs');
|
|
6
5
|
const shared_useBodyScrollLock = require('../shared/useBodyScrollLock.cjs');
|
|
7
6
|
const shared_createContext = require('../shared/createContext.cjs');
|
|
@@ -10,6 +9,7 @@ const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
|
|
|
10
9
|
const shared_useHideOthers = require('../shared/useHideOthers.cjs');
|
|
11
10
|
const shared_useForwardProps = require('../shared/useForwardProps.cjs');
|
|
12
11
|
const Listbox_ListboxContent = require('../Listbox/ListboxContent.cjs');
|
|
12
|
+
const DismissableLayer_DismissableLayer = require('../DismissableLayer/DismissableLayer.cjs');
|
|
13
13
|
const Primitive_Primitive = require('../Primitive/Primitive.cjs');
|
|
14
14
|
|
|
15
15
|
const [injectComboboxContentContext, provideComboboxContentContext] = shared_createContext.createContext("ComboboxContent");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxContentImpl.cjs","sources":["../../src/Combobox/ComboboxContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"ComboboxContentImpl.cjs","sources":["../../src/Combobox/ComboboxContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { DismissableLayerEmits, DismissableLayerProps } from '@/DismissableLayer'\nimport type { PopperContentProps } from '@/Popper'\n\nimport { createContext, useForwardExpose, useForwardProps, useHideOthers } from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\n\nexport type ComboboxContentImplEmits = DismissableLayerEmits\n\nexport interface ComboboxContentImplProps extends PopperContentProps, DismissableLayerProps {\n /**\n * The positioning mode to use, <br>\n * `inline` is the default and you can control the position using CSS. <br>\n * `popper` positions content in the same way as our other primitives, for example `Popover` or `DropdownMenu`.\n */\n position?: 'inline' | 'popper'\n /** The document.body will be lock, and scrolling will be disabled. */\n bodyLock?: boolean\n}\n\nexport const [injectComboboxContentContext, provideComboboxContentContext]\n = createContext<{\n position: Ref<'inline' | 'popper'>\n }>('ComboboxContent')\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, toRefs } from 'vue'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { ListboxContent } from '@/Listbox'\nimport { PopperContent } from '@/Popper'\nimport { Primitive } from '@/Primitive'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = withDefaults(defineProps<ComboboxContentImplProps>(), {\n position: 'inline',\n})\nconst emits = defineEmits<ComboboxContentImplEmits>()\n\nconst { position } = toRefs(props)\nconst rootContext = injectComboboxRootContext()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nuseBodyScrollLock(props.bodyLock)\nuseHideOthers(rootContext.parentElement)\n\nconst pickedProps = computed(() => {\n if (props.position === 'popper')\n return props\n else return {}\n})\n\nconst forwardedProps = useForwardProps(pickedProps.value)\n\nconst popperStyle = {\n // Ensure border-box for floating-ui calculations\n 'boxSizing': 'border-box',\n '--reka-combobox-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-combobox-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-combobox-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-combobox-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-combobox-trigger-height': 'var(--reka-popper-anchor-height)',\n}\n\nprovideComboboxContentContext({ position })\n\n// Handle case where input position within the content\nconst isInputWithinContent = ref(false)\nonMounted(() => {\n if (rootContext.inputElement.value) {\n isInputWithinContent.value = currentElement.value.contains(rootContext.inputElement.value)\n if (isInputWithinContent.value) {\n rootContext.inputElement.value.focus()\n }\n }\n})\n\nonUnmounted(() => {\n if (isInputWithinContent.value) {\n rootContext.triggerElement.value?.focus()\n }\n})\n</script>\n\n<template>\n <ListboxContent as-child>\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"disableOutsidePointerEvents\"\n @dismiss=\"rootContext.onOpenChange(false)\"\n @focus-outside=\"(ev) => {\n // if clicking inside the combobox, prevent dismiss\n if (rootContext.parentElement.value?.contains(ev.target as Node)) ev.preventDefault()\n emits('focusOutside', ev)\n }\"\n @interact-outside=\"emits('interactOutside', $event)\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"(ev) => {\n // if clicking inside the combobox, prevent dismiss\n if (rootContext.parentElement.value?.contains(ev.target as Node)) ev.preventDefault()\n emits('pointerDownOutside', ev)\n }\"\n >\n <component\n :is=\"position === 'popper' ? PopperContent : Primitive\"\n v-bind=\"{ ...$attrs, ...forwardedProps }\"\n :id=\"rootContext.contentId\"\n :ref=\"forwardRef\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :style=\"{\n // flex layout so we can place the scroll buttons properly\n display: 'flex',\n flexDirection: 'column',\n // reset the outline by default as the content MAY get focused\n outline: 'none',\n ...(position === 'popper' ? popperStyle : {}),\n }\"\n >\n <slot />\n </component>\n </DismissableLayer>\n </ListboxContent>\n</template>\n"],"names":["createContext","toRefs","injectComboboxRootContext","useForwardExpose","useBodyScrollLock","useHideOthers","computed","useForwardProps","ref","onMounted","onUnmounted"],"mappings":";;;;;;;;;;;;;;AAqBO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrEA,mCAEC,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWtB,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,QAAA,EAAa,GAAAC,UAAA,CAAO,KAAK,CAAA;AACjC,IAAA,MAAM,cAAcC,+CAA0B,EAAA;AAE9C,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AACxD,IAAAC,0CAAA,CAAkB,MAAM,QAAQ,CAAA;AAChC,IAAAC,kCAAA,CAAc,YAAY,aAAa,CAAA;AAEvC,IAAM,MAAA,WAAA,GAAcC,aAAS,MAAM;AACjC,MAAA,IAAI,MAAM,QAAa,KAAA,QAAA;AACrB,QAAO,OAAA,KAAA;AAAA,kBACG,EAAC;AAAA,KACd,CAAA;AAED,IAAM,MAAA,cAAA,GAAiBC,sCAAgB,CAAA,WAAA,CAAY,KAAK,CAAA;AAExD,IAAA,MAAM,WAAc,GAAA;AAAA;AAAA,MAElB,WAAa,EAAA,YAAA;AAAA,MACb,0CACM,EAAA,qCAAA;AAAA,MACN,yCACM,EAAA,oCAAA;AAAA,MACN,0CACM,EAAA,qCAAA;AAAA,MACN,+BAAiC,EAAA,iCAAA;AAAA,MACjC,gCAAkC,EAAA;AAAA,KACpC;AAEA,IAA8B,6BAAA,CAAA,EAAE,UAAU,CAAA;AAG1C,IAAM,MAAA,oBAAA,GAAuBC,QAAI,KAAK,CAAA;AACtC,IAAAC,aAAA,CAAU,MAAM;AACd,MAAI,IAAA,WAAA,CAAY,aAAa,KAAO,EAAA;AAClC,QAAA,oBAAA,CAAqB,QAAQ,cAAe,CAAA,KAAA,CAAM,QAAS,CAAA,WAAA,CAAY,aAAa,KAAK,CAAA;AACzF,QAAA,IAAI,qBAAqB,KAAO,EAAA;AAC9B,UAAY,WAAA,CAAA,YAAA,CAAa,MAAM,KAAM,EAAA;AAAA;AACvC;AACF,KACD,CAAA;AAED,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,IAAI,qBAAqB,KAAO,EAAA;AAC9B,QAAY,WAAA,CAAA,cAAA,CAAe,OAAO,KAAM,EAAA;AAAA;AAC1C,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defineComponent, toRefs, computed, ref, onMounted, onUnmounted, createBlock, openBlock, unref, withCtx, createVNode, resolveDynamicComponent, mergeProps, renderSlot } from 'vue';
|
|
2
|
-
import { _ as _sfc_main$2 } from '../DismissableLayer/DismissableLayer.js';
|
|
3
2
|
import { _ as _sfc_main$3 } from '../Popper/PopperContent.js';
|
|
4
3
|
import { u as useBodyScrollLock } from '../shared/useBodyScrollLock.js';
|
|
5
4
|
import { c as createContext } from '../shared/createContext.js';
|
|
@@ -8,6 +7,7 @@ import { u as useForwardExpose } from '../shared/useForwardExpose.js';
|
|
|
8
7
|
import { u as useHideOthers } from '../shared/useHideOthers.js';
|
|
9
8
|
import { u as useForwardProps } from '../shared/useForwardProps.js';
|
|
10
9
|
import { _ as _sfc_main$1 } from '../Listbox/ListboxContent.js';
|
|
10
|
+
import { _ as _sfc_main$2 } from '../DismissableLayer/DismissableLayer.js';
|
|
11
11
|
import { P as Primitive } from '../Primitive/Primitive.js';
|
|
12
12
|
|
|
13
13
|
const [injectComboboxContentContext, provideComboboxContentContext] = createContext("ComboboxContent");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxContentImpl.js","sources":["../../src/Combobox/ComboboxContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"ComboboxContentImpl.js","sources":["../../src/Combobox/ComboboxContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { DismissableLayerEmits, DismissableLayerProps } from '@/DismissableLayer'\nimport type { PopperContentProps } from '@/Popper'\n\nimport { createContext, useForwardExpose, useForwardProps, useHideOthers } from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\n\nexport type ComboboxContentImplEmits = DismissableLayerEmits\n\nexport interface ComboboxContentImplProps extends PopperContentProps, DismissableLayerProps {\n /**\n * The positioning mode to use, <br>\n * `inline` is the default and you can control the position using CSS. <br>\n * `popper` positions content in the same way as our other primitives, for example `Popover` or `DropdownMenu`.\n */\n position?: 'inline' | 'popper'\n /** The document.body will be lock, and scrolling will be disabled. */\n bodyLock?: boolean\n}\n\nexport const [injectComboboxContentContext, provideComboboxContentContext]\n = createContext<{\n position: Ref<'inline' | 'popper'>\n }>('ComboboxContent')\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, toRefs } from 'vue'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { ListboxContent } from '@/Listbox'\nimport { PopperContent } from '@/Popper'\nimport { Primitive } from '@/Primitive'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = withDefaults(defineProps<ComboboxContentImplProps>(), {\n position: 'inline',\n})\nconst emits = defineEmits<ComboboxContentImplEmits>()\n\nconst { position } = toRefs(props)\nconst rootContext = injectComboboxRootContext()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nuseBodyScrollLock(props.bodyLock)\nuseHideOthers(rootContext.parentElement)\n\nconst pickedProps = computed(() => {\n if (props.position === 'popper')\n return props\n else return {}\n})\n\nconst forwardedProps = useForwardProps(pickedProps.value)\n\nconst popperStyle = {\n // Ensure border-box for floating-ui calculations\n 'boxSizing': 'border-box',\n '--reka-combobox-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-combobox-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-combobox-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-combobox-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-combobox-trigger-height': 'var(--reka-popper-anchor-height)',\n}\n\nprovideComboboxContentContext({ position })\n\n// Handle case where input position within the content\nconst isInputWithinContent = ref(false)\nonMounted(() => {\n if (rootContext.inputElement.value) {\n isInputWithinContent.value = currentElement.value.contains(rootContext.inputElement.value)\n if (isInputWithinContent.value) {\n rootContext.inputElement.value.focus()\n }\n }\n})\n\nonUnmounted(() => {\n if (isInputWithinContent.value) {\n rootContext.triggerElement.value?.focus()\n }\n})\n</script>\n\n<template>\n <ListboxContent as-child>\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"disableOutsidePointerEvents\"\n @dismiss=\"rootContext.onOpenChange(false)\"\n @focus-outside=\"(ev) => {\n // if clicking inside the combobox, prevent dismiss\n if (rootContext.parentElement.value?.contains(ev.target as Node)) ev.preventDefault()\n emits('focusOutside', ev)\n }\"\n @interact-outside=\"emits('interactOutside', $event)\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"(ev) => {\n // if clicking inside the combobox, prevent dismiss\n if (rootContext.parentElement.value?.contains(ev.target as Node)) ev.preventDefault()\n emits('pointerDownOutside', ev)\n }\"\n >\n <component\n :is=\"position === 'popper' ? PopperContent : Primitive\"\n v-bind=\"{ ...$attrs, ...forwardedProps }\"\n :id=\"rootContext.contentId\"\n :ref=\"forwardRef\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :style=\"{\n // flex layout so we can place the scroll buttons properly\n display: 'flex',\n flexDirection: 'column',\n // reset the outline by default as the content MAY get focused\n outline: 'none',\n ...(position === 'popper' ? popperStyle : {}),\n }\"\n >\n <slot />\n </component>\n </DismissableLayer>\n </ListboxContent>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAqBO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrE,cAEC,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWtB,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,QAAA,EAAa,GAAA,MAAA,CAAO,KAAK,CAAA;AACjC,IAAA,MAAM,cAAc,yBAA0B,EAAA;AAE9C,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,iBAAA,CAAkB,MAAM,QAAQ,CAAA;AAChC,IAAA,aAAA,CAAc,YAAY,aAAa,CAAA;AAEvC,IAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,IAAI,MAAM,QAAa,KAAA,QAAA;AACrB,QAAO,OAAA,KAAA;AAAA,kBACG,EAAC;AAAA,KACd,CAAA;AAED,IAAM,MAAA,cAAA,GAAiB,eAAgB,CAAA,WAAA,CAAY,KAAK,CAAA;AAExD,IAAA,MAAM,WAAc,GAAA;AAAA;AAAA,MAElB,WAAa,EAAA,YAAA;AAAA,MACb,0CACM,EAAA,qCAAA;AAAA,MACN,yCACM,EAAA,oCAAA;AAAA,MACN,0CACM,EAAA,qCAAA;AAAA,MACN,+BAAiC,EAAA,iCAAA;AAAA,MACjC,gCAAkC,EAAA;AAAA,KACpC;AAEA,IAA8B,6BAAA,CAAA,EAAE,UAAU,CAAA;AAG1C,IAAM,MAAA,oBAAA,GAAuB,IAAI,KAAK,CAAA;AACtC,IAAA,SAAA,CAAU,MAAM;AACd,MAAI,IAAA,WAAA,CAAY,aAAa,KAAO,EAAA;AAClC,QAAA,oBAAA,CAAqB,QAAQ,cAAe,CAAA,KAAA,CAAM,QAAS,CAAA,WAAA,CAAY,aAAa,KAAK,CAAA;AACzF,QAAA,IAAI,qBAAqB,KAAO,EAAA;AAC9B,UAAY,WAAA,CAAA,YAAA,CAAa,MAAM,KAAM,EAAA;AAAA;AACvC;AACF,KACD,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,qBAAqB,KAAO,EAAA;AAC9B,QAAY,WAAA,CAAA,cAAA,CAAe,OAAO,KAAM,EAAA;AAAA;AAC1C,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxGroup.cjs","sources":["../../src/Combobox/ComboboxGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxGroupProps } from '@/Listbox'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxGroup.cjs","sources":["../../src/Combobox/ComboboxGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxGroupProps } from '@/Listbox'\nimport { computed, onMounted, onUnmounted } from 'vue'\nimport { createContext, useId } from '@/shared'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nexport interface ComboboxGroupProps extends ListboxGroupProps {}\n\ntype ComboboxGroupContext = {\n id: string\n labelId: string\n}\n\nexport const [injectComboboxGroupContext, provideComboboxGroupContext]\n = createContext<ComboboxGroupContext>('ComboboxGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { ListboxGroup } from '@/Listbox'\n\nconst props = defineProps<ComboboxGroupProps>()\nconst id = useId(undefined, 'reka-combobox-group')\nconst rootContext = injectComboboxRootContext()\n\nconst isRender = computed(() => rootContext.ignoreFilter.value ? true : !rootContext.filterState.search ? true : rootContext.filterState.filtered.groups.has(id))\n\nconst context = provideComboboxGroupContext({\n id,\n labelId: '',\n})\n\nonMounted(() => {\n if (!rootContext.allGroups.value.has(id))\n rootContext.allGroups.value.set(id, new Set())\n})\nonUnmounted(() => {\n rootContext.allGroups.value.delete(id)\n})\n</script>\n\n<template>\n <ListboxGroup\n :id=\"id\"\n :aria-labelledby=\"context.labelId\"\n v-bind=\"props\"\n :hidden=\"isRender ? undefined : true\"\n >\n <slot />\n </ListboxGroup>\n</template>\n"],"names":["createContext","useId","injectComboboxRootContext","computed","onMounted","onUnmounted"],"mappings":";;;;;;;;AAaO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjEA,mCAAoC,eAAe;;;;;;;;AAMvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAM,MAAA,EAAA,GAAKC,kBAAM,CAAA,MAAA,EAAW,qBAAqB,CAAA;AACjD,IAAA,MAAM,cAAcC,+CAA0B,EAAA;AAE9C,IAAA,MAAM,WAAWC,YAAS,CAAA,MAAM,YAAY,YAAa,CAAA,KAAA,GAAQ,OAAO,CAAC,WAAA,CAAY,WAAY,CAAA,MAAA,GAAS,OAAO,WAAY,CAAA,WAAA,CAAY,SAAS,MAAO,CAAA,GAAA,CAAI,EAAE,CAAC,CAAA;AAEhK,IAAA,MAAM,UAAU,2BAA4B,CAAA;AAAA,MAC1C,EAAA;AAAA,MACA,OAAS,EAAA;AAAA,KACV,CAAA;AAED,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,WAAA,CAAY,SAAU,CAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AACrC,QAAA,WAAA,CAAY,UAAU,KAAM,CAAA,GAAA,CAAI,EAAI,kBAAA,IAAI,KAAK,CAAA;AAAA,KAChD,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAY,WAAA,CAAA,SAAA,CAAU,KAAM,CAAA,MAAA,CAAO,EAAE,CAAA;AAAA,KACtC,CAAA;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxGroup.js","sources":["../../src/Combobox/ComboboxGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxGroupProps } from '@/Listbox'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxGroup.js","sources":["../../src/Combobox/ComboboxGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxGroupProps } from '@/Listbox'\nimport { computed, onMounted, onUnmounted } from 'vue'\nimport { createContext, useId } from '@/shared'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nexport interface ComboboxGroupProps extends ListboxGroupProps {}\n\ntype ComboboxGroupContext = {\n id: string\n labelId: string\n}\n\nexport const [injectComboboxGroupContext, provideComboboxGroupContext]\n = createContext<ComboboxGroupContext>('ComboboxGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { ListboxGroup } from '@/Listbox'\n\nconst props = defineProps<ComboboxGroupProps>()\nconst id = useId(undefined, 'reka-combobox-group')\nconst rootContext = injectComboboxRootContext()\n\nconst isRender = computed(() => rootContext.ignoreFilter.value ? true : !rootContext.filterState.search ? true : rootContext.filterState.filtered.groups.has(id))\n\nconst context = provideComboboxGroupContext({\n id,\n labelId: '',\n})\n\nonMounted(() => {\n if (!rootContext.allGroups.value.has(id))\n rootContext.allGroups.value.set(id, new Set())\n})\nonUnmounted(() => {\n rootContext.allGroups.value.delete(id)\n})\n</script>\n\n<template>\n <ListboxGroup\n :id=\"id\"\n :aria-labelledby=\"context.labelId\"\n v-bind=\"props\"\n :hidden=\"isRender ? undefined : true\"\n >\n <slot />\n </ListboxGroup>\n</template>\n"],"names":[],"mappings":";;;;;;AAaO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjE,cAAoC,eAAe;;;;;;;;AAMvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAM,MAAA,EAAA,GAAK,KAAM,CAAA,MAAA,EAAW,qBAAqB,CAAA;AACjD,IAAA,MAAM,cAAc,yBAA0B,EAAA;AAE9C,IAAA,MAAM,WAAW,QAAS,CAAA,MAAM,YAAY,YAAa,CAAA,KAAA,GAAQ,OAAO,CAAC,WAAA,CAAY,WAAY,CAAA,MAAA,GAAS,OAAO,WAAY,CAAA,WAAA,CAAY,SAAS,MAAO,CAAA,GAAA,CAAI,EAAE,CAAC,CAAA;AAEhK,IAAA,MAAM,UAAU,2BAA4B,CAAA;AAAA,MAC1C,EAAA;AAAA,MACA,OAAS,EAAA;AAAA,KACV,CAAA;AAED,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,WAAA,CAAY,SAAU,CAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AACrC,QAAA,WAAA,CAAY,UAAU,KAAM,CAAA,GAAA,CAAI,EAAI,kBAAA,IAAI,KAAK,CAAA;AAAA,KAChD,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAY,WAAA,CAAA,SAAA,CAAU,KAAM,CAAA,MAAA,CAAO,EAAE,CAAA;AAAA,KACtC,CAAA;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxInput.cjs","sources":["../../src/Combobox/ComboboxInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxFilterEmits, ListboxFilterProps } from '@/Listbox'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxInput.cjs","sources":["../../src/Combobox/ComboboxInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxFilterEmits, ListboxFilterProps } from '@/Listbox'\nimport { useVModel } from '@vueuse/core'\nimport { nextTick, onMounted, watch } from 'vue'\nimport { usePrimitiveElement } from '@/Primitive'\n\nexport type ComboboxInputEmits = ListboxFilterEmits\nexport interface ComboboxInputProps extends ListboxFilterProps {\n /** The display value of input for selected item. Does not work with `multiple`. */\n displayValue?: (val: any) => string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ListboxFilter } from '@/Listbox'\nimport { injectListboxRootContext } from '@/Listbox/ListboxRoot.vue'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = withDefaults(defineProps<ComboboxInputProps>(), {\n as: 'input',\n})\nconst emits = defineEmits<ComboboxInputEmits>()\n\nconst rootContext = injectComboboxRootContext()\nconst listboxContext = injectListboxRootContext()\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n passive: (props.modelValue === undefined) as false,\n})\n\nonMounted(() => {\n if (currentElement.value)\n rootContext.onInputElementChange(currentElement.value as HTMLInputElement)\n})\n\nfunction handleKeyDown(ev: KeyboardEvent) {\n if (!rootContext.open.value)\n rootContext.onOpenChange(true)\n}\n\nfunction handleInput(event: InputEvent) {\n const target = event.target as HTMLInputElement\n if (!rootContext.open.value) {\n rootContext.onOpenChange(true)\n nextTick(() => {\n if (target.value) {\n rootContext.filterState.search = target.value\n listboxContext.highlightFirstItem(event)\n }\n })\n }\n else {\n rootContext.filterState.search = target.value\n }\n}\n\nfunction resetSearchTerm() {\n const rootModelValue = rootContext.modelValue.value\n\n if (props.displayValue) {\n modelValue.value = props.displayValue(rootModelValue)\n }\n else if (!rootContext.multiple.value && rootModelValue && !Array.isArray(rootModelValue)) {\n if (typeof rootModelValue !== 'object')\n modelValue.value = rootModelValue.toString()\n else modelValue.value = ''\n }\n else {\n modelValue.value = ''\n }\n\n nextTick(() => {\n // Temporary force reassign\n // eslint-disable-next-line no-self-assign\n modelValue.value = modelValue.value\n })\n}\n\nrootContext.onResetSearchTerm(() => {\n resetSearchTerm()\n})\n\nwatch(rootContext.modelValue, async () => {\n if (!rootContext.isUserInputted.value && rootContext.resetSearchTermOnSelect.value)\n resetSearchTerm()\n}, { immediate: true, deep: true })\n\nwatch(\n () => props.modelValue,\n () => {\n if (props.modelValue !== undefined) {\n rootContext.filterState.search = props.modelValue\n }\n },\n)\n</script>\n\n<template>\n <ListboxFilter\n ref=\"primitiveElement\"\n v-model=\"modelValue\"\n :as=\"as\"\n :as-child=\"asChild\"\n :auto-focus=\"autoFocus\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.contentId\"\n aria-autocomplete=\"list\"\n role=\"combobox\"\n autocomplete=\"false\"\n @input=\"handleInput\"\n @keydown.down.up.prevent=\"handleKeyDown\"\n >\n <slot />\n </ListboxFilter>\n</template>\n"],"names":["injectComboboxRootContext","injectListboxRootContext","usePrimitiveElement","useVModel","onMounted","nextTick","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,cAAcA,+CAA0B,EAAA;AAC9C,IAAA,MAAM,iBAAiBC,4CAAyB,EAAA;AAChD,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAIC,iDAAoB,EAAA;AAEjE,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAY,WAAA,CAAA,oBAAA,CAAqB,eAAe,KAAyB,CAAA;AAAA,KAC5E,CAAA;AAED,IAAA,SAAS,cAAc,EAAmB,EAAA;AACxC,MAAI,IAAA,CAAC,YAAY,IAAK,CAAA,KAAA;AACpB,QAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAAA;AAGjC,IAAA,SAAS,YAAY,KAAmB,EAAA;AACtC,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,MAAI,IAAA,CAAC,WAAY,CAAA,IAAA,CAAK,KAAO,EAAA;AAC3B,QAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAC7B,QAAAC,YAAA,CAAS,MAAM;AACb,UAAA,IAAI,OAAO,KAAO,EAAA;AAChB,YAAY,WAAA,CAAA,WAAA,CAAY,SAAS,MAAO,CAAA,KAAA;AACxC,YAAA,cAAA,CAAe,mBAAmB,KAAK,CAAA;AAAA;AACzC,SACD,CAAA;AAAA,OAEE,MAAA;AACH,QAAY,WAAA,CAAA,WAAA,CAAY,SAAS,MAAO,CAAA,KAAA;AAAA;AAC1C;AAGF,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAM,MAAA,cAAA,GAAiB,YAAY,UAAW,CAAA,KAAA;AAE9C,MAAA,IAAI,MAAM,YAAc,EAAA;AACtB,QAAW,UAAA,CAAA,KAAA,GAAQ,KAAM,CAAA,YAAA,CAAa,cAAc,CAAA;AAAA,OACtD,MAAA,IACS,CAAC,WAAA,CAAY,QAAS,CAAA,KAAA,IAAS,kBAAkB,CAAC,KAAA,CAAM,OAAQ,CAAA,cAAc,CAAG,EAAA;AACxF,QAAA,IAAI,OAAO,cAAmB,KAAA,QAAA;AAC5B,UAAW,UAAA,CAAA,KAAA,GAAQ,eAAe,QAAS,EAAA;AAAA,wBAC7B,KAAQ,GAAA,EAAA;AAAA,OAErB,MAAA;AACH,QAAA,UAAA,CAAW,KAAQ,GAAA,EAAA;AAAA;AAGrB,MAAAA,YAAA,CAAS,MAAM;AAGb,QAAA,UAAA,CAAW,QAAQ,UAAW,CAAA,KAAA;AAAA,OAC/B,CAAA;AAAA;AAGH,IAAA,WAAA,CAAY,kBAAkB,MAAM;AAClC,MAAgB,eAAA,EAAA;AAAA,KACjB,CAAA;AAED,IAAMC,SAAA,CAAA,WAAA,CAAY,YAAY,YAAY;AACxC,MAAA,IAAI,CAAC,WAAA,CAAY,cAAe,CAAA,KAAA,IAAS,YAAY,uBAAwB,CAAA,KAAA;AAC3E,QAAgB,eAAA,EAAA;AAAA,OACjB,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,MAAM,CAAA;AAElC,IAAAA,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,UAAA;AAAA,MACZ,MAAM;AACJ,QAAI,IAAA,KAAA,CAAM,eAAe,MAAW,EAAA;AAClC,UAAY,WAAA,CAAA,WAAA,CAAY,SAAS,KAAM,CAAA,UAAA;AAAA;AACzC;AACF,KACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxInput.js","sources":["../../src/Combobox/ComboboxInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxFilterEmits, ListboxFilterProps } from '@/Listbox'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxInput.js","sources":["../../src/Combobox/ComboboxInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxFilterEmits, ListboxFilterProps } from '@/Listbox'\nimport { useVModel } from '@vueuse/core'\nimport { nextTick, onMounted, watch } from 'vue'\nimport { usePrimitiveElement } from '@/Primitive'\n\nexport type ComboboxInputEmits = ListboxFilterEmits\nexport interface ComboboxInputProps extends ListboxFilterProps {\n /** The display value of input for selected item. Does not work with `multiple`. */\n displayValue?: (val: any) => string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ListboxFilter } from '@/Listbox'\nimport { injectListboxRootContext } from '@/Listbox/ListboxRoot.vue'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = withDefaults(defineProps<ComboboxInputProps>(), {\n as: 'input',\n})\nconst emits = defineEmits<ComboboxInputEmits>()\n\nconst rootContext = injectComboboxRootContext()\nconst listboxContext = injectListboxRootContext()\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n passive: (props.modelValue === undefined) as false,\n})\n\nonMounted(() => {\n if (currentElement.value)\n rootContext.onInputElementChange(currentElement.value as HTMLInputElement)\n})\n\nfunction handleKeyDown(ev: KeyboardEvent) {\n if (!rootContext.open.value)\n rootContext.onOpenChange(true)\n}\n\nfunction handleInput(event: InputEvent) {\n const target = event.target as HTMLInputElement\n if (!rootContext.open.value) {\n rootContext.onOpenChange(true)\n nextTick(() => {\n if (target.value) {\n rootContext.filterState.search = target.value\n listboxContext.highlightFirstItem(event)\n }\n })\n }\n else {\n rootContext.filterState.search = target.value\n }\n}\n\nfunction resetSearchTerm() {\n const rootModelValue = rootContext.modelValue.value\n\n if (props.displayValue) {\n modelValue.value = props.displayValue(rootModelValue)\n }\n else if (!rootContext.multiple.value && rootModelValue && !Array.isArray(rootModelValue)) {\n if (typeof rootModelValue !== 'object')\n modelValue.value = rootModelValue.toString()\n else modelValue.value = ''\n }\n else {\n modelValue.value = ''\n }\n\n nextTick(() => {\n // Temporary force reassign\n // eslint-disable-next-line no-self-assign\n modelValue.value = modelValue.value\n })\n}\n\nrootContext.onResetSearchTerm(() => {\n resetSearchTerm()\n})\n\nwatch(rootContext.modelValue, async () => {\n if (!rootContext.isUserInputted.value && rootContext.resetSearchTermOnSelect.value)\n resetSearchTerm()\n}, { immediate: true, deep: true })\n\nwatch(\n () => props.modelValue,\n () => {\n if (props.modelValue !== undefined) {\n rootContext.filterState.search = props.modelValue\n }\n },\n)\n</script>\n\n<template>\n <ListboxFilter\n ref=\"primitiveElement\"\n v-model=\"modelValue\"\n :as=\"as\"\n :as-child=\"asChild\"\n :auto-focus=\"autoFocus\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.contentId\"\n aria-autocomplete=\"list\"\n role=\"combobox\"\n autocomplete=\"false\"\n @input=\"handleInput\"\n @keydown.down.up.prevent=\"handleKeyDown\"\n >\n <slot />\n </ListboxFilter>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,cAAc,yBAA0B,EAAA;AAC9C,IAAA,MAAM,iBAAiB,wBAAyB,EAAA;AAChD,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAI,mBAAoB,EAAA;AAEjE,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAY,WAAA,CAAA,oBAAA,CAAqB,eAAe,KAAyB,CAAA;AAAA,KAC5E,CAAA;AAED,IAAA,SAAS,cAAc,EAAmB,EAAA;AACxC,MAAI,IAAA,CAAC,YAAY,IAAK,CAAA,KAAA;AACpB,QAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAAA;AAGjC,IAAA,SAAS,YAAY,KAAmB,EAAA;AACtC,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,MAAI,IAAA,CAAC,WAAY,CAAA,IAAA,CAAK,KAAO,EAAA;AAC3B,QAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAC7B,QAAA,QAAA,CAAS,MAAM;AACb,UAAA,IAAI,OAAO,KAAO,EAAA;AAChB,YAAY,WAAA,CAAA,WAAA,CAAY,SAAS,MAAO,CAAA,KAAA;AACxC,YAAA,cAAA,CAAe,mBAAmB,KAAK,CAAA;AAAA;AACzC,SACD,CAAA;AAAA,OAEE,MAAA;AACH,QAAY,WAAA,CAAA,WAAA,CAAY,SAAS,MAAO,CAAA,KAAA;AAAA;AAC1C;AAGF,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAM,MAAA,cAAA,GAAiB,YAAY,UAAW,CAAA,KAAA;AAE9C,MAAA,IAAI,MAAM,YAAc,EAAA;AACtB,QAAW,UAAA,CAAA,KAAA,GAAQ,KAAM,CAAA,YAAA,CAAa,cAAc,CAAA;AAAA,OACtD,MAAA,IACS,CAAC,WAAA,CAAY,QAAS,CAAA,KAAA,IAAS,kBAAkB,CAAC,KAAA,CAAM,OAAQ,CAAA,cAAc,CAAG,EAAA;AACxF,QAAA,IAAI,OAAO,cAAmB,KAAA,QAAA;AAC5B,UAAW,UAAA,CAAA,KAAA,GAAQ,eAAe,QAAS,EAAA;AAAA,wBAC7B,KAAQ,GAAA,EAAA;AAAA,OAErB,MAAA;AACH,QAAA,UAAA,CAAW,KAAQ,GAAA,EAAA;AAAA;AAGrB,MAAA,QAAA,CAAS,MAAM;AAGb,QAAA,UAAA,CAAW,QAAQ,UAAW,CAAA,KAAA;AAAA,OAC/B,CAAA;AAAA;AAGH,IAAA,WAAA,CAAY,kBAAkB,MAAM;AAClC,MAAgB,eAAA,EAAA;AAAA,KACjB,CAAA;AAED,IAAM,KAAA,CAAA,WAAA,CAAY,YAAY,YAAY;AACxC,MAAA,IAAI,CAAC,WAAA,CAAY,cAAe,CAAA,KAAA,IAAS,YAAY,uBAAwB,CAAA,KAAA;AAC3E,QAAgB,eAAA,EAAA;AAAA,OACjB,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,MAAM,CAAA;AAElC,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,UAAA;AAAA,MACZ,MAAM;AACJ,QAAI,IAAA,KAAA,CAAM,eAAe,MAAW,EAAA;AAClC,UAAY,WAAA,CAAA,WAAA,CAAY,SAAS,KAAM,CAAA,UAAA;AAAA;AACzC;AACF,KACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxItem.cjs","sources":["../../src/Combobox/ComboboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxItemEmits, ListboxItemProps } from '@/Listbox'\nimport type { AcceptableValue } from '@/shared/types'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxItem.cjs","sources":["../../src/Combobox/ComboboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxItemEmits, ListboxItemProps } from '@/Listbox'\nimport type { AcceptableValue } from '@/shared/types'\nimport { computed, onMounted, onUnmounted } from 'vue'\nimport { usePrimitiveElement } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { injectComboboxGroupContext } from './ComboboxGroup.vue'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nexport { injectListboxItemContext as injectComboboxItemContext } from '@/Listbox'\n\nexport type ComboboxItemEmits<T = AcceptableValue> = ListboxItemEmits<T>\nexport interface ComboboxItemProps<T = AcceptableValue> extends ListboxItemProps<T> {\n /**\n * A string representation of the item contents.\n *\n * If the children are not plain text, then the `textValue` prop must also be set to a plain text representation, which will be used for autocomplete in the ComboBox.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { ListboxItem } from '@/Listbox'\n\nconst props = defineProps<ComboboxItemProps<T>>()\nconst emits = defineEmits<ComboboxItemEmits<T>>()\n\nconst id = useId(undefined, 'reka-combobox-item')\nconst rootContext = injectComboboxRootContext()\nconst groupContext = injectComboboxGroupContext(null)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nif (props.value === '') {\n throw new Error(\n 'A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.',\n )\n}\n\nconst isRender = computed(() => {\n if (rootContext.isVirtual.value || rootContext.ignoreFilter.value || !rootContext.filterState.search) {\n return true\n }\n else {\n const filteredCurrentItem = rootContext.filterState.filtered.items.get(id)\n // If the filtered items is undefined means not in the all times map yet\n // Do the first render to add into the map\n if (filteredCurrentItem === undefined) {\n return true\n }\n\n // Check with filter\n return filteredCurrentItem > 0\n }\n})\n\nonMounted(() => {\n // textValue to perform filter\n rootContext.allItems.value.set(id, props.textValue || currentElement.value.textContent || currentElement.value.innerText)\n\n const groupId = groupContext?.id\n if (groupId) {\n if (!rootContext.allGroups.value.has(groupId)) {\n rootContext.allGroups.value.set(groupId, new Set([id]))\n }\n else {\n rootContext.allGroups.value.get(groupId)?.add(id)\n }\n }\n})\nonUnmounted(() => {\n rootContext.allItems.value.delete(id)\n})\n</script>\n\n<template>\n <ListboxItem\n v-if=\"isRender\"\n v-bind=\"props\"\n :id=\"id\"\n ref=\"primitiveElement\"\n :disabled=\"rootContext.disabled.value || disabled\"\n @select=\"(event) => {\n emits('select', event as any)\n if (event.defaultPrevented)\n return\n\n if (!rootContext.multiple.value && !disabled && !rootContext.disabled.value) {\n event.preventDefault()\n rootContext.onOpenChange(false)\n rootContext.modelValue.value = props.value\n }\n }\"\n >\n <slot>{{ value }}</slot>\n </ListboxItem>\n</template>\n"],"names":["useId","injectComboboxRootContext","injectComboboxGroupContext","usePrimitiveElement","computed","onMounted","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAM,MAAA,EAAA,GAAKA,kBAAM,CAAA,MAAA,EAAW,oBAAoB,CAAA;AAChD,IAAA,MAAM,cAAcC,+CAA0B,EAAA;AAC9C,IAAM,MAAA,YAAA,GAAeC,kDAA2B,IAAI,CAAA;AAEpD,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAIC,iDAAoB,EAAA;AAEjE,IAAI,IAAA,KAAA,CAAM,UAAU,EAAI,EAAA;AACtB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA;AAGF,IAAM,MAAA,QAAA,GAAWC,aAAS,MAAM;AAC9B,MAAI,IAAA,WAAA,CAAY,UAAU,KAAS,IAAA,WAAA,CAAY,aAAa,KAAS,IAAA,CAAC,WAAY,CAAA,WAAA,CAAY,MAAQ,EAAA;AACpG,QAAO,OAAA,IAAA;AAAA,OAEJ,MAAA;AACH,QAAA,MAAM,sBAAsB,WAAY,CAAA,WAAA,CAAY,QAAS,CAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AAGzE,QAAA,IAAI,wBAAwB,MAAW,EAAA;AACrC,UAAO,OAAA,IAAA;AAAA;AAIT,QAAA,OAAO,mBAAsB,GAAA,CAAA;AAAA;AAC/B,KACD,CAAA;AAED,IAAAC,aAAA,CAAU,MAAM;AAEd,MAAY,WAAA,CAAA,QAAA,CAAS,KAAM,CAAA,GAAA,CAAI,EAAI,EAAA,KAAA,CAAM,SAAa,IAAA,cAAA,CAAe,KAAM,CAAA,WAAA,IAAe,cAAe,CAAA,KAAA,CAAM,SAAS,CAAA;AAExH,MAAA,MAAM,UAAU,YAAc,EAAA,EAAA;AAC9B,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,IAAI,CAAC,WAAY,CAAA,SAAA,CAAU,KAAM,CAAA,GAAA,CAAI,OAAO,CAAG,EAAA;AAC7C,UAAY,WAAA,CAAA,SAAA,CAAU,MAAM,GAAI,CAAA,OAAA,sBAAa,GAAI,CAAA,CAAC,EAAE,CAAC,CAAC,CAAA;AAAA,SAEnD,MAAA;AACH,UAAA,WAAA,CAAY,UAAU,KAAM,CAAA,GAAA,CAAI,OAAO,CAAA,EAAG,IAAI,EAAE,CAAA;AAAA;AAClD;AACF,KACD,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAY,WAAA,CAAA,QAAA,CAAS,KAAM,CAAA,MAAA,CAAO,EAAE,CAAA;AAAA,KACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxItem.js","sources":["../../src/Combobox/ComboboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxItemEmits, ListboxItemProps } from '@/Listbox'\nimport type { AcceptableValue } from '@/shared/types'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxItem.js","sources":["../../src/Combobox/ComboboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxItemEmits, ListboxItemProps } from '@/Listbox'\nimport type { AcceptableValue } from '@/shared/types'\nimport { computed, onMounted, onUnmounted } from 'vue'\nimport { usePrimitiveElement } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { injectComboboxGroupContext } from './ComboboxGroup.vue'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nexport { injectListboxItemContext as injectComboboxItemContext } from '@/Listbox'\n\nexport type ComboboxItemEmits<T = AcceptableValue> = ListboxItemEmits<T>\nexport interface ComboboxItemProps<T = AcceptableValue> extends ListboxItemProps<T> {\n /**\n * A string representation of the item contents.\n *\n * If the children are not plain text, then the `textValue` prop must also be set to a plain text representation, which will be used for autocomplete in the ComboBox.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { ListboxItem } from '@/Listbox'\n\nconst props = defineProps<ComboboxItemProps<T>>()\nconst emits = defineEmits<ComboboxItemEmits<T>>()\n\nconst id = useId(undefined, 'reka-combobox-item')\nconst rootContext = injectComboboxRootContext()\nconst groupContext = injectComboboxGroupContext(null)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nif (props.value === '') {\n throw new Error(\n 'A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.',\n )\n}\n\nconst isRender = computed(() => {\n if (rootContext.isVirtual.value || rootContext.ignoreFilter.value || !rootContext.filterState.search) {\n return true\n }\n else {\n const filteredCurrentItem = rootContext.filterState.filtered.items.get(id)\n // If the filtered items is undefined means not in the all times map yet\n // Do the first render to add into the map\n if (filteredCurrentItem === undefined) {\n return true\n }\n\n // Check with filter\n return filteredCurrentItem > 0\n }\n})\n\nonMounted(() => {\n // textValue to perform filter\n rootContext.allItems.value.set(id, props.textValue || currentElement.value.textContent || currentElement.value.innerText)\n\n const groupId = groupContext?.id\n if (groupId) {\n if (!rootContext.allGroups.value.has(groupId)) {\n rootContext.allGroups.value.set(groupId, new Set([id]))\n }\n else {\n rootContext.allGroups.value.get(groupId)?.add(id)\n }\n }\n})\nonUnmounted(() => {\n rootContext.allItems.value.delete(id)\n})\n</script>\n\n<template>\n <ListboxItem\n v-if=\"isRender\"\n v-bind=\"props\"\n :id=\"id\"\n ref=\"primitiveElement\"\n :disabled=\"rootContext.disabled.value || disabled\"\n @select=\"(event) => {\n emits('select', event as any)\n if (event.defaultPrevented)\n return\n\n if (!rootContext.multiple.value && !disabled && !rootContext.disabled.value) {\n event.preventDefault()\n rootContext.onOpenChange(false)\n rootContext.modelValue.value = props.value\n }\n }\"\n >\n <slot>{{ value }}</slot>\n </ListboxItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAM,MAAA,EAAA,GAAK,KAAM,CAAA,MAAA,EAAW,oBAAoB,CAAA;AAChD,IAAA,MAAM,cAAc,yBAA0B,EAAA;AAC9C,IAAM,MAAA,YAAA,GAAe,2BAA2B,IAAI,CAAA;AAEpD,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAI,mBAAoB,EAAA;AAEjE,IAAI,IAAA,KAAA,CAAM,UAAU,EAAI,EAAA;AACtB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA;AAGF,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAI,IAAA,WAAA,CAAY,UAAU,KAAS,IAAA,WAAA,CAAY,aAAa,KAAS,IAAA,CAAC,WAAY,CAAA,WAAA,CAAY,MAAQ,EAAA;AACpG,QAAO,OAAA,IAAA;AAAA,OAEJ,MAAA;AACH,QAAA,MAAM,sBAAsB,WAAY,CAAA,WAAA,CAAY,QAAS,CAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AAGzE,QAAA,IAAI,wBAAwB,MAAW,EAAA;AACrC,UAAO,OAAA,IAAA;AAAA;AAIT,QAAA,OAAO,mBAAsB,GAAA,CAAA;AAAA;AAC/B,KACD,CAAA;AAED,IAAA,SAAA,CAAU,MAAM;AAEd,MAAY,WAAA,CAAA,QAAA,CAAS,KAAM,CAAA,GAAA,CAAI,EAAI,EAAA,KAAA,CAAM,SAAa,IAAA,cAAA,CAAe,KAAM,CAAA,WAAA,IAAe,cAAe,CAAA,KAAA,CAAM,SAAS,CAAA;AAExH,MAAA,MAAM,UAAU,YAAc,EAAA,EAAA;AAC9B,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,IAAI,CAAC,WAAY,CAAA,SAAA,CAAU,KAAM,CAAA,GAAA,CAAI,OAAO,CAAG,EAAA;AAC7C,UAAY,WAAA,CAAA,SAAA,CAAU,MAAM,GAAI,CAAA,OAAA,sBAAa,GAAI,CAAA,CAAC,EAAE,CAAC,CAAC,CAAA;AAAA,SAEnD,MAAA;AACH,UAAA,WAAA,CAAY,UAAU,KAAM,CAAA,GAAA,CAAI,OAAO,CAAA,EAAG,IAAI,EAAE,CAAA;AAAA;AAClD;AACF,KACD,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAY,WAAA,CAAA,QAAA,CAAS,KAAM,CAAA,MAAA,CAAO,EAAE,CAAA;AAAA,KACrC,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
|
const Primitive_usePrimitiveElement = require('../Primitive/usePrimitiveElement.cjs');
|
|
8
8
|
const shared_useDirection = require('../shared/useDirection.cjs');
|
|
@@ -38,7 +38,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
38
38
|
const { multiple, disabled, ignoreFilter, resetSearchTermOnSelect, dir: propDir } = vue.toRefs(props);
|
|
39
39
|
const dir = shared_useDirection.useDirection(propDir);
|
|
40
40
|
const modelValue = core.useVModel(props, "modelValue", emits, {
|
|
41
|
-
// @ts-expect-error ignore the type error here
|
|
42
41
|
defaultValue: props.defaultValue ?? (multiple.value ? [] : void 0),
|
|
43
42
|
passive: props.modelValue === void 0,
|
|
44
43
|
deep: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxRoot.cjs","sources":["../../src/Combobox/ComboboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxRootProps } from '@/Listbox'\nimport type { AcceptableValue, GenericComponentInstance } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport { usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFilter } from '@/shared'\n\ntype ComboboxRootContext<T> = {\n modelValue: Ref<T | Array<T>>\n multiple: Ref<boolean>\n disabled: Ref<boolean>\n open: Ref<boolean>\n onOpenChange: (value: boolean) => void\n isUserInputted: Ref<boolean>\n isVirtual: Ref<boolean>\n contentId: string\n inputElement: Ref<HTMLInputElement | undefined>\n onInputElementChange: (el: HTMLInputElement) => void\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerElementChange: (el: HTMLElement) => void\n highlightedElement: Ref<HTMLElement | undefined>\n parentElement: Ref<HTMLElement | undefined>\n resetSearchTermOnSelect: Ref<boolean>\n onResetSearchTerm: EventHookOn\n allItems: Ref<Map<string, string>>\n allGroups: Ref<Map<string, Set<string>>>\n filterState: {\n search: string\n filtered: { count: number, items: Map<string, number>, groups: Set<string> }\n }\n ignoreFilter: Ref<boolean>\n}\n\nexport const [injectComboboxRootContext, provideComboboxRootContext]\n = createContext<ComboboxRootContext<AcceptableValue>>('ComboboxRoot')\n\nexport type ComboboxRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler when highlighted element changes. */\n 'highlight': [payload: { ref: HTMLElement, value: T } | undefined]\n /** Event handler called when the open state of the combobox changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface ComboboxRootProps<T = AcceptableValue> extends Omit<ListboxRootProps<T>, 'orientation' | 'selectionBehavior'> {\n /** The controlled open state of the Combobox. Can be binded with with `v-model:open`. */\n open?: boolean\n /** The open state of the combobox when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox input blurred\n * @defaultValue `true`\n */\n resetSearchTermOnBlur?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox value is selected\n * @defaultValue `true`\n */\n resetSearchTermOnSelect?: boolean\n /**\n * When `true`, disable the default filters\n */\n ignoreFilter?: boolean\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type { EventHookOn } from '@vueuse/core'\nimport { ListboxRoot } from '@/Listbox'\nimport { PopperRoot } from '@/Popper'\nimport { createEventHook, useVModel } from '@vueuse/core'\nimport { computed, getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue'\n\nconst props = withDefaults(defineProps<ComboboxRootProps<T>>(), {\n open: undefined,\n resetSearchTermOnBlur: true,\n resetSearchTermOnSelect: true,\n})\nconst emits = defineEmits<ComboboxRootEmits<T>>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n /** Current active value */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { primitiveElement, currentElement: parentElement } = usePrimitiveElement<GenericComponentInstance<typeof ListboxRoot>>()\nconst { multiple, disabled, ignoreFilter, resetSearchTermOnSelect, dir: propDir } = toRefs(props)\n\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n // @ts-expect-error ignore the type error here\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[]>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nasync function onOpenChange(val: boolean) {\n open.value = val\n filterState.search = ''\n\n if (val) {\n // make sure dom is ready then only highlight the selected\n await nextTick()\n primitiveElement.value?.highlightSelected()\n isUserInputted.value = true\n }\n else {\n isUserInputted.value = false\n }\n\n inputElement.value?.focus()\n setTimeout(() => {\n if (!val && props.resetSearchTermOnBlur)\n resetSearchTerm.trigger()\n }, 1)\n}\n\nconst resetSearchTerm = createEventHook()\nconst isUserInputted = ref(false)\nconst isVirtual = ref(false)\nconst inputElement = ref<HTMLInputElement>()\nconst triggerElement = ref<HTMLElement>()\n\nconst highlightedElement = computed(() => primitiveElement.value?.highlightedElement ?? undefined)\n\nconst allItems = ref<Map<string, string>>(new Map())\nconst allGroups = ref<Map<string, Set<string>>>(new Map())\n\nconst { contains } = useFilter({ sensitivity: 'base' })\nconst filterState = reactive({\n search: '',\n filtered: {\n /** The count of all visible items. */\n count: 0,\n /** Map from visible item id to its search score. */\n items: new Map() as Map<string, number>,\n /** Set of groups with at least one visible item. */\n groups: new Set() as Set<string>,\n },\n})\n\nfunction filterItems() {\n if (!filterState.search || props.ignoreFilter || isVirtual.value) {\n filterState.filtered.count = allItems.value.size\n // Do nothing, each item will know to show itself because search is empty\n return\n }\n\n // Reset the groups\n filterState.filtered.groups = new Set()\n let itemCount = 0\n\n // Check which items should be included\n for (const [id, value] of allItems.value) {\n const score = contains(value, filterState.search)\n filterState.filtered.items.set(id, score ? 1 : 0)\n if (score)\n itemCount++\n }\n\n // Check which groups have at least 1 item shown\n for (const [groupId, group] of allGroups.value) {\n for (const itemId of group) {\n if (filterState.filtered.items.get(itemId)! > 0) {\n filterState.filtered.groups.add(groupId)\n break\n }\n }\n }\n\n filterState.filtered.count = itemCount\n}\n\nwatch([() => filterState.search, () => allItems.value.size], () => {\n filterItems()\n}, { immediate: true })\n\nwatch(() => open.value, () => {\n // nextTick to allow multiple items to be mounted first\n nextTick(() => {\n if (open.value)\n filterItems()\n })\n}, { flush: 'post' })\n\nconst inst = getCurrentInstance()\nonMounted(() => {\n if (inst?.exposed) {\n inst.exposed.highlightItem = primitiveElement.value?.highlightItem\n inst.exposed.highlightFirstItem = primitiveElement.value?.highlightFirstItem\n inst.exposed.highlightSelected = primitiveElement.value?.highlightSelected\n }\n})\n\ndefineExpose({\n filtered: computed(() => filterState.filtered),\n highlightedElement,\n highlightItem: primitiveElement.value?.highlightItem,\n highlightFirstItem: primitiveElement.value?.highlightFirstItem,\n highlightSelected: primitiveElement.value?.highlightSelected,\n})\n\nprovideComboboxRootContext({\n modelValue,\n multiple,\n disabled,\n open,\n onOpenChange,\n contentId: '',\n isUserInputted,\n isVirtual,\n inputElement,\n highlightedElement,\n onInputElementChange: val => inputElement.value = val,\n triggerElement,\n onTriggerElementChange: val => triggerElement.value = val,\n parentElement,\n resetSearchTermOnSelect,\n onResetSearchTerm: resetSearchTerm.on,\n allItems,\n allGroups,\n filterState,\n ignoreFilter,\n})\n</script>\n\n<template>\n <PopperRoot>\n <ListboxRoot\n ref=\"primitiveElement\"\n v-bind=\"$attrs\"\n v-model=\"modelValue\"\n :style=\"{\n pointerEvents: open ? 'auto' : undefined,\n }\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n :multiple=\"multiple\"\n :name=\"name\"\n :required=\"required\"\n :disabled=\"disabled\"\n :highlight-on-hover=\"true\"\n :by=\"props.by as any\"\n @highlight=\"emits('highlight', $event as any)\"\n >\n <slot\n :open=\"open\"\n :model-value=\"modelValue\"\n />\n </ListboxRoot>\n </PopperRoot>\n</template>\n"],"names":["createContext","usePrimitiveElement","toRefs","useDirection","useVModel","nextTick","createEventHook","ref","computed","useFilter","reactive","watch","getCurrentInstance","onMounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComboboxRoot.cjs","sources":["../../src/Combobox/ComboboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { ListboxRootProps } from '@/Listbox'\nimport type { AcceptableValue, GenericComponentInstance } from '@/shared/types'\nimport { usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFilter } from '@/shared'\n\ntype ComboboxRootContext<T> = {\n modelValue: Ref<T | Array<T>>\n multiple: Ref<boolean>\n disabled: Ref<boolean>\n open: Ref<boolean>\n onOpenChange: (value: boolean) => void\n isUserInputted: Ref<boolean>\n isVirtual: Ref<boolean>\n contentId: string\n inputElement: Ref<HTMLInputElement | undefined>\n onInputElementChange: (el: HTMLInputElement) => void\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerElementChange: (el: HTMLElement) => void\n highlightedElement: Ref<HTMLElement | undefined>\n parentElement: Ref<HTMLElement | undefined>\n resetSearchTermOnSelect: Ref<boolean>\n onResetSearchTerm: EventHookOn\n allItems: Ref<Map<string, string>>\n allGroups: Ref<Map<string, Set<string>>>\n filterState: {\n search: string\n filtered: { count: number, items: Map<string, number>, groups: Set<string> }\n }\n ignoreFilter: Ref<boolean>\n}\n\nexport const [injectComboboxRootContext, provideComboboxRootContext]\n = createContext<ComboboxRootContext<AcceptableValue>>('ComboboxRoot')\n\nexport type ComboboxRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler when highlighted element changes. */\n 'highlight': [payload: { ref: HTMLElement, value: T } | undefined]\n /** Event handler called when the open state of the combobox changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface ComboboxRootProps<T = AcceptableValue> extends Omit<ListboxRootProps<T>, 'orientation' | 'selectionBehavior'> {\n /** The controlled open state of the Combobox. Can be binded with with `v-model:open`. */\n open?: boolean\n /** The open state of the combobox when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox input blurred\n * @defaultValue `true`\n */\n resetSearchTermOnBlur?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox value is selected\n * @defaultValue `true`\n */\n resetSearchTermOnSelect?: boolean\n /**\n * When `true`, disable the default filters\n */\n ignoreFilter?: boolean\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type { EventHookOn } from '@vueuse/core'\nimport { createEventHook, useVModel } from '@vueuse/core'\nimport { computed, getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue'\nimport { ListboxRoot } from '@/Listbox'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<ComboboxRootProps<T>>(), {\n open: undefined,\n resetSearchTermOnBlur: true,\n resetSearchTermOnSelect: true,\n})\nconst emits = defineEmits<ComboboxRootEmits<T>>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n /** Current active value */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { primitiveElement, currentElement: parentElement } = usePrimitiveElement<GenericComponentInstance<typeof ListboxRoot>>()\nconst { multiple, disabled, ignoreFilter, resetSearchTermOnSelect, dir: propDir } = toRefs(props)\n\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props as ComboboxRootProps<T>, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[]>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nasync function onOpenChange(val: boolean) {\n open.value = val\n filterState.search = ''\n\n if (val) {\n // make sure dom is ready then only highlight the selected\n await nextTick()\n primitiveElement.value?.highlightSelected()\n isUserInputted.value = true\n }\n else {\n isUserInputted.value = false\n }\n\n inputElement.value?.focus()\n setTimeout(() => {\n if (!val && props.resetSearchTermOnBlur)\n resetSearchTerm.trigger()\n }, 1)\n}\n\nconst resetSearchTerm = createEventHook()\nconst isUserInputted = ref(false)\nconst isVirtual = ref(false)\nconst inputElement = ref<HTMLInputElement>()\nconst triggerElement = ref<HTMLElement>()\n\nconst highlightedElement = computed(() => primitiveElement.value?.highlightedElement ?? undefined)\n\nconst allItems = ref<Map<string, string>>(new Map())\nconst allGroups = ref<Map<string, Set<string>>>(new Map())\n\nconst { contains } = useFilter({ sensitivity: 'base' })\nconst filterState = reactive({\n search: '',\n filtered: {\n /** The count of all visible items. */\n count: 0,\n /** Map from visible item id to its search score. */\n items: new Map() as Map<string, number>,\n /** Set of groups with at least one visible item. */\n groups: new Set() as Set<string>,\n },\n})\n\nfunction filterItems() {\n if (!filterState.search || props.ignoreFilter || isVirtual.value) {\n filterState.filtered.count = allItems.value.size\n // Do nothing, each item will know to show itself because search is empty\n return\n }\n\n // Reset the groups\n filterState.filtered.groups = new Set()\n let itemCount = 0\n\n // Check which items should be included\n for (const [id, value] of allItems.value) {\n const score = contains(value, filterState.search)\n filterState.filtered.items.set(id, score ? 1 : 0)\n if (score)\n itemCount++\n }\n\n // Check which groups have at least 1 item shown\n for (const [groupId, group] of allGroups.value) {\n for (const itemId of group) {\n if (filterState.filtered.items.get(itemId)! > 0) {\n filterState.filtered.groups.add(groupId)\n break\n }\n }\n }\n\n filterState.filtered.count = itemCount\n}\n\nwatch([() => filterState.search, () => allItems.value.size], () => {\n filterItems()\n}, { immediate: true })\n\nwatch(() => open.value, () => {\n // nextTick to allow multiple items to be mounted first\n nextTick(() => {\n if (open.value)\n filterItems()\n })\n}, { flush: 'post' })\n\nconst inst = getCurrentInstance()\nonMounted(() => {\n if (inst?.exposed) {\n inst.exposed.highlightItem = primitiveElement.value?.highlightItem\n inst.exposed.highlightFirstItem = primitiveElement.value?.highlightFirstItem\n inst.exposed.highlightSelected = primitiveElement.value?.highlightSelected\n }\n})\n\ndefineExpose({\n filtered: computed(() => filterState.filtered),\n highlightedElement,\n highlightItem: primitiveElement.value?.highlightItem,\n highlightFirstItem: primitiveElement.value?.highlightFirstItem,\n highlightSelected: primitiveElement.value?.highlightSelected,\n})\n\nprovideComboboxRootContext({\n modelValue,\n multiple,\n disabled,\n open,\n onOpenChange,\n contentId: '',\n isUserInputted,\n isVirtual,\n inputElement,\n highlightedElement,\n onInputElementChange: val => inputElement.value = val,\n triggerElement,\n onTriggerElementChange: val => triggerElement.value = val,\n parentElement,\n resetSearchTermOnSelect,\n onResetSearchTerm: resetSearchTerm.on,\n allItems,\n allGroups,\n filterState,\n ignoreFilter,\n})\n</script>\n\n<template>\n <PopperRoot>\n <ListboxRoot\n ref=\"primitiveElement\"\n v-bind=\"$attrs\"\n v-model=\"modelValue\"\n :style=\"{\n pointerEvents: open ? 'auto' : undefined,\n }\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n :multiple=\"multiple\"\n :name=\"name\"\n :required=\"required\"\n :disabled=\"disabled\"\n :highlight-on-hover=\"true\"\n :by=\"props.by as any\"\n @highlight=\"emits('highlight', $event as any)\"\n >\n <slot\n :open=\"open\"\n :model-value=\"modelValue\"\n />\n </ListboxRoot>\n </PopperRoot>\n</template>\n"],"names":["createContext","usePrimitiveElement","toRefs","useDirection","useVModel","nextTick","createEventHook","ref","computed","useFilter","reactive","watch","getCurrentInstance","onMounted"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, toRefs, ref, computed, reactive, watch, nextTick, getCurrentInstance, onMounted, createBlock, openBlock, unref, withCtx, createVNode, mergeProps, isRef, renderSlot } from 'vue';
|
|
2
|
-
import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
|
|
3
2
|
import { useVModel, createEventHook } 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
|
import { u as usePrimitiveElement } from '../Primitive/usePrimitiveElement.js';
|
|
6
6
|
import { u as useDirection } from '../shared/useDirection.js';
|
|
@@ -36,7 +36,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
36
36
|
const { multiple, disabled, ignoreFilter, resetSearchTermOnSelect, dir: propDir } = toRefs(props);
|
|
37
37
|
const dir = useDirection(propDir);
|
|
38
38
|
const modelValue = useVModel(props, "modelValue", emits, {
|
|
39
|
-
// @ts-expect-error ignore the type error here
|
|
40
39
|
defaultValue: props.defaultValue ?? (multiple.value ? [] : void 0),
|
|
41
40
|
passive: props.modelValue === void 0,
|
|
42
41
|
deep: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxRoot.js","sources":["../../src/Combobox/ComboboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ListboxRootProps } from '@/Listbox'\nimport type { AcceptableValue, GenericComponentInstance } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport { usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFilter } from '@/shared'\n\ntype ComboboxRootContext<T> = {\n modelValue: Ref<T | Array<T>>\n multiple: Ref<boolean>\n disabled: Ref<boolean>\n open: Ref<boolean>\n onOpenChange: (value: boolean) => void\n isUserInputted: Ref<boolean>\n isVirtual: Ref<boolean>\n contentId: string\n inputElement: Ref<HTMLInputElement | undefined>\n onInputElementChange: (el: HTMLInputElement) => void\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerElementChange: (el: HTMLElement) => void\n highlightedElement: Ref<HTMLElement | undefined>\n parentElement: Ref<HTMLElement | undefined>\n resetSearchTermOnSelect: Ref<boolean>\n onResetSearchTerm: EventHookOn\n allItems: Ref<Map<string, string>>\n allGroups: Ref<Map<string, Set<string>>>\n filterState: {\n search: string\n filtered: { count: number, items: Map<string, number>, groups: Set<string> }\n }\n ignoreFilter: Ref<boolean>\n}\n\nexport const [injectComboboxRootContext, provideComboboxRootContext]\n = createContext<ComboboxRootContext<AcceptableValue>>('ComboboxRoot')\n\nexport type ComboboxRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler when highlighted element changes. */\n 'highlight': [payload: { ref: HTMLElement, value: T } | undefined]\n /** Event handler called when the open state of the combobox changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface ComboboxRootProps<T = AcceptableValue> extends Omit<ListboxRootProps<T>, 'orientation' | 'selectionBehavior'> {\n /** The controlled open state of the Combobox. Can be binded with with `v-model:open`. */\n open?: boolean\n /** The open state of the combobox when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox input blurred\n * @defaultValue `true`\n */\n resetSearchTermOnBlur?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox value is selected\n * @defaultValue `true`\n */\n resetSearchTermOnSelect?: boolean\n /**\n * When `true`, disable the default filters\n */\n ignoreFilter?: boolean\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type { EventHookOn } from '@vueuse/core'\nimport { ListboxRoot } from '@/Listbox'\nimport { PopperRoot } from '@/Popper'\nimport { createEventHook, useVModel } from '@vueuse/core'\nimport { computed, getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue'\n\nconst props = withDefaults(defineProps<ComboboxRootProps<T>>(), {\n open: undefined,\n resetSearchTermOnBlur: true,\n resetSearchTermOnSelect: true,\n})\nconst emits = defineEmits<ComboboxRootEmits<T>>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n /** Current active value */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { primitiveElement, currentElement: parentElement } = usePrimitiveElement<GenericComponentInstance<typeof ListboxRoot>>()\nconst { multiple, disabled, ignoreFilter, resetSearchTermOnSelect, dir: propDir } = toRefs(props)\n\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n // @ts-expect-error ignore the type error here\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[]>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nasync function onOpenChange(val: boolean) {\n open.value = val\n filterState.search = ''\n\n if (val) {\n // make sure dom is ready then only highlight the selected\n await nextTick()\n primitiveElement.value?.highlightSelected()\n isUserInputted.value = true\n }\n else {\n isUserInputted.value = false\n }\n\n inputElement.value?.focus()\n setTimeout(() => {\n if (!val && props.resetSearchTermOnBlur)\n resetSearchTerm.trigger()\n }, 1)\n}\n\nconst resetSearchTerm = createEventHook()\nconst isUserInputted = ref(false)\nconst isVirtual = ref(false)\nconst inputElement = ref<HTMLInputElement>()\nconst triggerElement = ref<HTMLElement>()\n\nconst highlightedElement = computed(() => primitiveElement.value?.highlightedElement ?? undefined)\n\nconst allItems = ref<Map<string, string>>(new Map())\nconst allGroups = ref<Map<string, Set<string>>>(new Map())\n\nconst { contains } = useFilter({ sensitivity: 'base' })\nconst filterState = reactive({\n search: '',\n filtered: {\n /** The count of all visible items. */\n count: 0,\n /** Map from visible item id to its search score. */\n items: new Map() as Map<string, number>,\n /** Set of groups with at least one visible item. */\n groups: new Set() as Set<string>,\n },\n})\n\nfunction filterItems() {\n if (!filterState.search || props.ignoreFilter || isVirtual.value) {\n filterState.filtered.count = allItems.value.size\n // Do nothing, each item will know to show itself because search is empty\n return\n }\n\n // Reset the groups\n filterState.filtered.groups = new Set()\n let itemCount = 0\n\n // Check which items should be included\n for (const [id, value] of allItems.value) {\n const score = contains(value, filterState.search)\n filterState.filtered.items.set(id, score ? 1 : 0)\n if (score)\n itemCount++\n }\n\n // Check which groups have at least 1 item shown\n for (const [groupId, group] of allGroups.value) {\n for (const itemId of group) {\n if (filterState.filtered.items.get(itemId)! > 0) {\n filterState.filtered.groups.add(groupId)\n break\n }\n }\n }\n\n filterState.filtered.count = itemCount\n}\n\nwatch([() => filterState.search, () => allItems.value.size], () => {\n filterItems()\n}, { immediate: true })\n\nwatch(() => open.value, () => {\n // nextTick to allow multiple items to be mounted first\n nextTick(() => {\n if (open.value)\n filterItems()\n })\n}, { flush: 'post' })\n\nconst inst = getCurrentInstance()\nonMounted(() => {\n if (inst?.exposed) {\n inst.exposed.highlightItem = primitiveElement.value?.highlightItem\n inst.exposed.highlightFirstItem = primitiveElement.value?.highlightFirstItem\n inst.exposed.highlightSelected = primitiveElement.value?.highlightSelected\n }\n})\n\ndefineExpose({\n filtered: computed(() => filterState.filtered),\n highlightedElement,\n highlightItem: primitiveElement.value?.highlightItem,\n highlightFirstItem: primitiveElement.value?.highlightFirstItem,\n highlightSelected: primitiveElement.value?.highlightSelected,\n})\n\nprovideComboboxRootContext({\n modelValue,\n multiple,\n disabled,\n open,\n onOpenChange,\n contentId: '',\n isUserInputted,\n isVirtual,\n inputElement,\n highlightedElement,\n onInputElementChange: val => inputElement.value = val,\n triggerElement,\n onTriggerElementChange: val => triggerElement.value = val,\n parentElement,\n resetSearchTermOnSelect,\n onResetSearchTerm: resetSearchTerm.on,\n allItems,\n allGroups,\n filterState,\n ignoreFilter,\n})\n</script>\n\n<template>\n <PopperRoot>\n <ListboxRoot\n ref=\"primitiveElement\"\n v-bind=\"$attrs\"\n v-model=\"modelValue\"\n :style=\"{\n pointerEvents: open ? 'auto' : undefined,\n }\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n :multiple=\"multiple\"\n :name=\"name\"\n :required=\"required\"\n :disabled=\"disabled\"\n :highlight-on-hover=\"true\"\n :by=\"props.by as any\"\n @highlight=\"emits('highlight', $event as any)\"\n >\n <slot\n :open=\"open\"\n :model-value=\"modelValue\"\n />\n </ListboxRoot>\n </PopperRoot>\n</template>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComboboxRoot.js","sources":["../../src/Combobox/ComboboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { ListboxRootProps } from '@/Listbox'\nimport type { AcceptableValue, GenericComponentInstance } from '@/shared/types'\nimport { usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFilter } from '@/shared'\n\ntype ComboboxRootContext<T> = {\n modelValue: Ref<T | Array<T>>\n multiple: Ref<boolean>\n disabled: Ref<boolean>\n open: Ref<boolean>\n onOpenChange: (value: boolean) => void\n isUserInputted: Ref<boolean>\n isVirtual: Ref<boolean>\n contentId: string\n inputElement: Ref<HTMLInputElement | undefined>\n onInputElementChange: (el: HTMLInputElement) => void\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerElementChange: (el: HTMLElement) => void\n highlightedElement: Ref<HTMLElement | undefined>\n parentElement: Ref<HTMLElement | undefined>\n resetSearchTermOnSelect: Ref<boolean>\n onResetSearchTerm: EventHookOn\n allItems: Ref<Map<string, string>>\n allGroups: Ref<Map<string, Set<string>>>\n filterState: {\n search: string\n filtered: { count: number, items: Map<string, number>, groups: Set<string> }\n }\n ignoreFilter: Ref<boolean>\n}\n\nexport const [injectComboboxRootContext, provideComboboxRootContext]\n = createContext<ComboboxRootContext<AcceptableValue>>('ComboboxRoot')\n\nexport type ComboboxRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler when highlighted element changes. */\n 'highlight': [payload: { ref: HTMLElement, value: T } | undefined]\n /** Event handler called when the open state of the combobox changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface ComboboxRootProps<T = AcceptableValue> extends Omit<ListboxRootProps<T>, 'orientation' | 'selectionBehavior'> {\n /** The controlled open state of the Combobox. Can be binded with with `v-model:open`. */\n open?: boolean\n /** The open state of the combobox when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox input blurred\n * @defaultValue `true`\n */\n resetSearchTermOnBlur?: boolean\n /**\n * Whether to reset the searchTerm when the Combobox value is selected\n * @defaultValue `true`\n */\n resetSearchTermOnSelect?: boolean\n /**\n * When `true`, disable the default filters\n */\n ignoreFilter?: boolean\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type { EventHookOn } from '@vueuse/core'\nimport { createEventHook, useVModel } from '@vueuse/core'\nimport { computed, getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue'\nimport { ListboxRoot } from '@/Listbox'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<ComboboxRootProps<T>>(), {\n open: undefined,\n resetSearchTermOnBlur: true,\n resetSearchTermOnSelect: true,\n})\nconst emits = defineEmits<ComboboxRootEmits<T>>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n /** Current active value */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { primitiveElement, currentElement: parentElement } = usePrimitiveElement<GenericComponentInstance<typeof ListboxRoot>>()\nconst { multiple, disabled, ignoreFilter, resetSearchTermOnSelect, dir: propDir } = toRefs(props)\n\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props as ComboboxRootProps<T>, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[]>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nasync function onOpenChange(val: boolean) {\n open.value = val\n filterState.search = ''\n\n if (val) {\n // make sure dom is ready then only highlight the selected\n await nextTick()\n primitiveElement.value?.highlightSelected()\n isUserInputted.value = true\n }\n else {\n isUserInputted.value = false\n }\n\n inputElement.value?.focus()\n setTimeout(() => {\n if (!val && props.resetSearchTermOnBlur)\n resetSearchTerm.trigger()\n }, 1)\n}\n\nconst resetSearchTerm = createEventHook()\nconst isUserInputted = ref(false)\nconst isVirtual = ref(false)\nconst inputElement = ref<HTMLInputElement>()\nconst triggerElement = ref<HTMLElement>()\n\nconst highlightedElement = computed(() => primitiveElement.value?.highlightedElement ?? undefined)\n\nconst allItems = ref<Map<string, string>>(new Map())\nconst allGroups = ref<Map<string, Set<string>>>(new Map())\n\nconst { contains } = useFilter({ sensitivity: 'base' })\nconst filterState = reactive({\n search: '',\n filtered: {\n /** The count of all visible items. */\n count: 0,\n /** Map from visible item id to its search score. */\n items: new Map() as Map<string, number>,\n /** Set of groups with at least one visible item. */\n groups: new Set() as Set<string>,\n },\n})\n\nfunction filterItems() {\n if (!filterState.search || props.ignoreFilter || isVirtual.value) {\n filterState.filtered.count = allItems.value.size\n // Do nothing, each item will know to show itself because search is empty\n return\n }\n\n // Reset the groups\n filterState.filtered.groups = new Set()\n let itemCount = 0\n\n // Check which items should be included\n for (const [id, value] of allItems.value) {\n const score = contains(value, filterState.search)\n filterState.filtered.items.set(id, score ? 1 : 0)\n if (score)\n itemCount++\n }\n\n // Check which groups have at least 1 item shown\n for (const [groupId, group] of allGroups.value) {\n for (const itemId of group) {\n if (filterState.filtered.items.get(itemId)! > 0) {\n filterState.filtered.groups.add(groupId)\n break\n }\n }\n }\n\n filterState.filtered.count = itemCount\n}\n\nwatch([() => filterState.search, () => allItems.value.size], () => {\n filterItems()\n}, { immediate: true })\n\nwatch(() => open.value, () => {\n // nextTick to allow multiple items to be mounted first\n nextTick(() => {\n if (open.value)\n filterItems()\n })\n}, { flush: 'post' })\n\nconst inst = getCurrentInstance()\nonMounted(() => {\n if (inst?.exposed) {\n inst.exposed.highlightItem = primitiveElement.value?.highlightItem\n inst.exposed.highlightFirstItem = primitiveElement.value?.highlightFirstItem\n inst.exposed.highlightSelected = primitiveElement.value?.highlightSelected\n }\n})\n\ndefineExpose({\n filtered: computed(() => filterState.filtered),\n highlightedElement,\n highlightItem: primitiveElement.value?.highlightItem,\n highlightFirstItem: primitiveElement.value?.highlightFirstItem,\n highlightSelected: primitiveElement.value?.highlightSelected,\n})\n\nprovideComboboxRootContext({\n modelValue,\n multiple,\n disabled,\n open,\n onOpenChange,\n contentId: '',\n isUserInputted,\n isVirtual,\n inputElement,\n highlightedElement,\n onInputElementChange: val => inputElement.value = val,\n triggerElement,\n onTriggerElementChange: val => triggerElement.value = val,\n parentElement,\n resetSearchTermOnSelect,\n onResetSearchTerm: resetSearchTerm.on,\n allItems,\n allGroups,\n filterState,\n ignoreFilter,\n})\n</script>\n\n<template>\n <PopperRoot>\n <ListboxRoot\n ref=\"primitiveElement\"\n v-bind=\"$attrs\"\n v-model=\"modelValue\"\n :style=\"{\n pointerEvents: open ? 'auto' : undefined,\n }\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n :multiple=\"multiple\"\n :name=\"name\"\n :required=\"required\"\n :disabled=\"disabled\"\n :highlight-on-hover=\"true\"\n :by=\"props.by as any\"\n @highlight=\"emits('highlight', $event as any)\"\n >\n <slot\n :open=\"open\"\n :model-value=\"modelValue\"\n />\n </ListboxRoot>\n </PopperRoot>\n</template>\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxTrigger.cjs","sources":["../../src/Combobox/ComboboxTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface ComboboxTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxTrigger.cjs","sources":["../../src/Combobox/ComboboxTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface ComboboxTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = withDefaults(defineProps<ComboboxTriggerProps>(), {\n as: 'button',\n})\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectComboboxRootContext()\nconst disabled = computed(() => props.disabled || rootContext.disabled.value || false)\n\nonMounted(() => {\n if (currentElement.value)\n rootContext.onTriggerElementChange(currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n tabindex=\"-1\"\n aria-label=\"Show popup\"\n aria-haspopup=\"listbox\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.contentId\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :disabled=\"disabled\"\n :data-disabled=\"disabled ? '' : undefined\"\n :aria-disabled=\"disabled ?? undefined\"\n @click=\"rootContext.onOpenChange(!rootContext.open.value)\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useForwardExpose","injectComboboxRootContext","computed","onMounted"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAA,MAAM,cAAcC,+CAA0B,EAAA;AAC9C,IAAM,MAAA,QAAA,GAAWC,aAAS,MAAM,KAAA,CAAM,YAAY,WAAY,CAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAErF,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAY,WAAA,CAAA,sBAAA,CAAuB,eAAe,KAAK,CAAA;AAAA,KAC1D,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxTrigger.js","sources":["../../src/Combobox/ComboboxTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface ComboboxTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxTrigger.js","sources":["../../src/Combobox/ComboboxTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface ComboboxTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = withDefaults(defineProps<ComboboxTriggerProps>(), {\n as: 'button',\n})\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectComboboxRootContext()\nconst disabled = computed(() => props.disabled || rootContext.disabled.value || false)\n\nonMounted(() => {\n if (currentElement.value)\n rootContext.onTriggerElementChange(currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n tabindex=\"-1\"\n aria-label=\"Show popup\"\n aria-haspopup=\"listbox\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.contentId\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :disabled=\"disabled\"\n :data-disabled=\"disabled ? '' : undefined\"\n :aria-disabled=\"disabled ?? undefined\"\n @click=\"rootContext.onOpenChange(!rootContext.open.value)\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,MAAM,cAAc,yBAA0B,EAAA;AAC9C,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM,KAAA,CAAM,YAAY,WAAY,CAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAErF,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAY,WAAA,CAAA,sBAAA,CAAuB,eAAe,KAAK,CAAA;AAAA,KAC1D,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxViewport.cjs","sources":["../../src/Combobox/ComboboxViewport.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxViewport.cjs","sources":["../../src/Combobox/ComboboxViewport.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { toRefs } from 'vue'\nimport { useForwardExpose } from '@/shared'\nimport { useNonce } from '@/shared/useNonce'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nexport interface ComboboxViewportProps extends PrimitiveProps {\n /**\n * Will add `nonce` attribute to the style tag which can be used by Content Security Policy. <br> If omitted, inherits globally from `ConfigProvider`.\n */\n nonce?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<ComboboxViewportProps>()\nconst { forwardRef } = useForwardExpose()\n\nconst { nonce: propNonce } = toRefs(props)\nconst nonce = useNonce(propNonce)\n\nconst rootContext = injectComboboxRootContext()\n</script>\n\n<template>\n <Primitive\n v-bind=\"{ ...$attrs, ...props }\"\n :ref=\"forwardRef\"\n data-reka-combobox-viewport\n role=\"presentation\"\n :style=\"{\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: 'relative',\n flex: rootContext.isVirtual.value ? undefined : 1,\n overflow: 'auto',\n }\"\n >\n <slot />\n </Primitive>\n <Primitive\n as=\"style\"\n :nonce=\"nonce\"\n >\n /* Hide scrollbars cross-browser and enable momentum scroll for touch\n devices */ [data-reka-combobox-viewport] { scrollbar-width:none; -ms-overflow-style: none;\n -webkit-overflow-scrolling: touch; }\n [data-reka-combobox-viewport]::-webkit-scrollbar { display: none; }\n </Primitive>\n</template>\n"],"names":["useForwardExpose","toRefs","useNonce","injectComboboxRootContext"],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIA,wCAAiB,EAAA;AAExC,IAAA,MAAM,EAAE,KAAA,EAAO,SAAU,EAAA,GAAIC,WAAO,KAAK,CAAA;AACzC,IAAM,MAAA,KAAA,GAAQC,yBAAS,SAAS,CAAA;AAEhC,IAAA,MAAM,cAAcC,+CAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxViewport.js","sources":["../../src/Combobox/ComboboxViewport.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport {
|
|
1
|
+
{"version":3,"file":"ComboboxViewport.js","sources":["../../src/Combobox/ComboboxViewport.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { toRefs } from 'vue'\nimport { useForwardExpose } from '@/shared'\nimport { useNonce } from '@/shared/useNonce'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nexport interface ComboboxViewportProps extends PrimitiveProps {\n /**\n * Will add `nonce` attribute to the style tag which can be used by Content Security Policy. <br> If omitted, inherits globally from `ConfigProvider`.\n */\n nonce?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<ComboboxViewportProps>()\nconst { forwardRef } = useForwardExpose()\n\nconst { nonce: propNonce } = toRefs(props)\nconst nonce = useNonce(propNonce)\n\nconst rootContext = injectComboboxRootContext()\n</script>\n\n<template>\n <Primitive\n v-bind=\"{ ...$attrs, ...props }\"\n :ref=\"forwardRef\"\n data-reka-combobox-viewport\n role=\"presentation\"\n :style=\"{\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: 'relative',\n flex: rootContext.isVirtual.value ? undefined : 1,\n overflow: 'auto',\n }\"\n >\n <slot />\n </Primitive>\n <Primitive\n as=\"style\"\n :nonce=\"nonce\"\n >\n /* Hide scrollbars cross-browser and enable momentum scroll for touch\n devices */ [data-reka-combobox-viewport] { scrollbar-width:none; -ms-overflow-style: none;\n -webkit-overflow-scrolling: touch; }\n [data-reka-combobox-viewport]::-webkit-scrollbar { display: none; }\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AAExC,IAAA,MAAM,EAAE,KAAA,EAAO,SAAU,EAAA,GAAI,OAAO,KAAK,CAAA;AACzC,IAAM,MAAA,KAAA,GAAQ,SAAS,SAAS,CAAA;AAEhC,IAAA,MAAM,cAAc,yBAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxVirtualizer.cjs","sources":["../../src/Combobox/ComboboxVirtualizer.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface ComboboxVirtualizerProps<T extends AcceptableValue = AcceptableValue> extends ListboxVirtualizerProps<T> {}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type {
|
|
1
|
+
{"version":3,"file":"ComboboxVirtualizer.cjs","sources":["../../src/Combobox/ComboboxVirtualizer.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface ComboboxVirtualizerProps<T extends AcceptableValue = AcceptableValue> extends ListboxVirtualizerProps<T> {}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type { VirtualItem, Virtualizer } from '@tanstack/vue-virtual'\nimport type { ListboxVirtualizerProps } from '@/Listbox/ListboxVirtualizer.vue'\nimport type { AcceptableValue } from '@/shared/types'\nimport ListboxVirtualizer from '@/Listbox/ListboxVirtualizer.vue'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = defineProps<ComboboxVirtualizerProps<T>>()\n\ndefineSlots<{\n default?: (props: {\n option: T\n virtualizer: Virtualizer<HTMLElement, Element>\n virtualItem: VirtualItem\n }) => any\n}>()\n\nconst rootContext = injectComboboxRootContext()\n// set virtual true when this component mounted\nrootContext.isVirtual.value = true\n</script>\n\n<template>\n <ListboxVirtualizer\n v-slot=\"slotProps\"\n v-bind=\"props\"\n >\n <slot v-bind=\"slotProps\" />\n </ListboxVirtualizer>\n</template>\n"],"names":["injectComboboxRootContext"],"mappings":";;;;;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAUd,IAAA,MAAM,cAAcA,+CAA0B,EAAA;AAE9C,IAAA,WAAA,CAAY,UAAU,KAAQ,GAAA,IAAA;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxVirtualizer.js","sources":["../../src/Combobox/ComboboxVirtualizer.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface ComboboxVirtualizerProps<T extends AcceptableValue = AcceptableValue> extends ListboxVirtualizerProps<T> {}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type {
|
|
1
|
+
{"version":3,"file":"ComboboxVirtualizer.js","sources":["../../src/Combobox/ComboboxVirtualizer.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface ComboboxVirtualizerProps<T extends AcceptableValue = AcceptableValue> extends ListboxVirtualizerProps<T> {}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type { VirtualItem, Virtualizer } from '@tanstack/vue-virtual'\nimport type { ListboxVirtualizerProps } from '@/Listbox/ListboxVirtualizer.vue'\nimport type { AcceptableValue } from '@/shared/types'\nimport ListboxVirtualizer from '@/Listbox/ListboxVirtualizer.vue'\nimport { injectComboboxRootContext } from './ComboboxRoot.vue'\n\nconst props = defineProps<ComboboxVirtualizerProps<T>>()\n\ndefineSlots<{\n default?: (props: {\n option: T\n virtualizer: Virtualizer<HTMLElement, Element>\n virtualItem: VirtualItem\n }) => any\n}>()\n\nconst rootContext = injectComboboxRootContext()\n// set virtual true when this component mounted\nrootContext.isVirtual.value = true\n</script>\n\n<template>\n <ListboxVirtualizer\n v-slot=\"slotProps\"\n v-bind=\"props\"\n >\n <slot v-bind=\"slotProps\" />\n </ListboxVirtualizer>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAUd,IAAA,MAAM,cAAc,yBAA0B,EAAA;AAE9C,IAAA,WAAA,CAAY,UAAU,KAAQ,GAAA,IAAA;;;;;;;;;;;;;;"}
|