reka-ui 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Accordion/AccordionItem.cjs.map +1 -1
- package/dist/Accordion/AccordionItem.js.map +1 -1
- package/dist/Accordion/AccordionRoot.cjs.map +1 -1
- package/dist/Accordion/AccordionRoot.js.map +1 -1
- package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
- package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
- package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
- package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
- package/dist/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/Avatar/AvatarFallback.cjs +11 -14
- package/dist/Avatar/AvatarFallback.cjs.map +1 -1
- package/dist/Avatar/AvatarFallback.js +12 -15
- package/dist/Avatar/AvatarFallback.js.map +1 -1
- package/dist/Avatar/AvatarImage.cjs +3 -2
- package/dist/Avatar/AvatarImage.cjs.map +1 -1
- package/dist/Avatar/AvatarImage.js +3 -2
- package/dist/Avatar/AvatarImage.js.map +1 -1
- package/dist/Avatar/AvatarRoot.cjs +1 -1
- package/dist/Avatar/AvatarRoot.cjs.map +1 -1
- package/dist/Avatar/AvatarRoot.js +1 -1
- package/dist/Avatar/AvatarRoot.js.map +1 -1
- package/dist/Avatar/utils.cjs +43 -16
- package/dist/Avatar/utils.cjs.map +1 -1
- package/dist/Avatar/utils.js +44 -17
- package/dist/Avatar/utils.js.map +1 -1
- package/dist/Calendar/CalendarCell.cjs +2 -2
- package/dist/Calendar/CalendarCell.cjs.map +1 -1
- package/dist/Calendar/CalendarCell.js +2 -2
- package/dist/Calendar/CalendarCell.js.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.cjs +5 -1
- package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.js +5 -1
- package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
- package/dist/Calendar/CalendarGrid.cjs.map +1 -1
- package/dist/Calendar/CalendarGrid.js.map +1 -1
- package/dist/Calendar/CalendarHeading.cjs.map +1 -1
- package/dist/Calendar/CalendarHeading.js.map +1 -1
- package/dist/Calendar/CalendarNext.cjs.map +1 -1
- package/dist/Calendar/CalendarNext.js.map +1 -1
- package/dist/Calendar/CalendarPrev.cjs.map +1 -1
- package/dist/Calendar/CalendarPrev.js.map +1 -1
- package/dist/Calendar/CalendarRoot.cjs +7 -4
- package/dist/Calendar/CalendarRoot.cjs.map +1 -1
- package/dist/Calendar/CalendarRoot.js +7 -4
- package/dist/Calendar/CalendarRoot.js.map +1 -1
- package/dist/Calendar/useCalendar.cjs +2 -2
- package/dist/Calendar/useCalendar.cjs.map +1 -1
- package/dist/Calendar/useCalendar.js +2 -2
- package/dist/Calendar/useCalendar.js.map +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
- package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxRoot.js.map +1 -1
- package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
- package/dist/Collapsible/CollapsibleContent.js.map +1 -1
- package/dist/Collapsible/CollapsibleRoot.cjs +2 -0
- package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
- package/dist/Collapsible/CollapsibleRoot.js +2 -0
- package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
- package/dist/Collection/Collection.cjs.map +1 -1
- package/dist/Collection/Collection.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
- package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
- package/dist/Combobox/ComboboxGroup.js.map +1 -1
- package/dist/Combobox/ComboboxInput.cjs.map +1 -1
- package/dist/Combobox/ComboboxInput.js.map +1 -1
- package/dist/Combobox/ComboboxItem.cjs.map +1 -1
- package/dist/Combobox/ComboboxItem.js.map +1 -1
- package/dist/Combobox/ComboboxRoot.cjs +1 -2
- package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
- package/dist/Combobox/ComboboxRoot.js +1 -2
- package/dist/Combobox/ComboboxRoot.js.map +1 -1
- package/dist/Combobox/ComboboxTrigger.cjs.map +1 -1
- package/dist/Combobox/ComboboxTrigger.js.map +1 -1
- package/dist/Combobox/ComboboxViewport.cjs.map +1 -1
- package/dist/Combobox/ComboboxViewport.js.map +1 -1
- package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
- package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
- package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
- package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
- package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
- package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuSub.js +1 -1
- package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
- package/dist/DateField/DateFieldInput.cjs +1 -0
- package/dist/DateField/DateFieldInput.cjs.map +1 -1
- package/dist/DateField/DateFieldInput.js +1 -0
- package/dist/DateField/DateFieldInput.js.map +1 -1
- package/dist/DateField/DateFieldRoot.cjs +7 -1
- package/dist/DateField/DateFieldRoot.cjs.map +1 -1
- package/dist/DateField/DateFieldRoot.js +7 -1
- package/dist/DateField/DateFieldRoot.js.map +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
- package/dist/DatePicker/DatePickerContent.cjs +8 -3
- package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
- package/dist/DatePicker/DatePickerContent.js +9 -4
- package/dist/DatePicker/DatePickerContent.js.map +1 -1
- package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
- package/dist/DatePicker/DatePickerHeading.js.map +1 -1
- package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
- package/dist/DatePicker/DatePickerNext.js.map +1 -1
- package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
- package/dist/DatePicker/DatePickerPrev.js.map +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +1 -0
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +1 -0
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DateRangeField/DateRangeFieldInput.cjs +1 -0
- package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldInput.js +1 -0
- package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.cjs +13 -9
- package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.js +13 -9
- package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.cjs +2 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.js +2 -1
- package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -3
- package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.js +9 -4
- package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.cjs +6 -2
- package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js +6 -2
- package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
- package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
- package/dist/Dialog/DialogContentImpl.js.map +1 -1
- package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
- package/dist/Dialog/DialogContentNonModal.js.map +1 -1
- package/dist/Dialog/DialogRoot.cjs +4 -1
- package/dist/Dialog/DialogRoot.cjs.map +1 -1
- package/dist/Dialog/DialogRoot.js +4 -1
- package/dist/Dialog/DialogRoot.js.map +1 -1
- package/dist/Dialog/DialogTrigger.cjs.map +1 -1
- package/dist/Dialog/DialogTrigger.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayerBranch.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayerBranch.js.map +1 -1
- package/dist/DismissableLayer/utils.cjs +7 -3
- package/dist/DismissableLayer/utils.cjs.map +1 -1
- package/dist/DismissableLayer/utils.js +8 -4
- package/dist/DismissableLayer/utils.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
- package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
- package/dist/Editable/EditableInput.cjs.map +1 -1
- package/dist/Editable/EditableInput.js.map +1 -1
- package/dist/Editable/EditableRoot.cjs +1 -1
- package/dist/Editable/EditableRoot.cjs.map +1 -1
- package/dist/Editable/EditableRoot.js +1 -1
- package/dist/Editable/EditableRoot.js.map +1 -1
- package/dist/FocusScope/FocusScope.cjs.map +1 -1
- package/dist/FocusScope/FocusScope.js.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs +1 -1
- package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
- package/dist/HoverCard/HoverCardRoot.js +1 -1
- package/dist/HoverCard/HoverCardRoot.js.map +1 -1
- package/dist/Listbox/ListboxFilter.cjs.map +1 -1
- package/dist/Listbox/ListboxFilter.js.map +1 -1
- package/dist/Listbox/ListboxItem.cjs.map +1 -1
- package/dist/Listbox/ListboxItem.js.map +1 -1
- package/dist/Listbox/ListboxRoot.cjs +1 -1
- package/dist/Listbox/ListboxRoot.cjs.map +1 -1
- package/dist/Listbox/ListboxRoot.js +1 -1
- package/dist/Listbox/ListboxRoot.js.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.cjs +3 -3
- package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
- package/dist/Listbox/ListboxVirtualizer.js +3 -3
- package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
- package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
- package/dist/Menu/MenuCheckboxItem.js.map +1 -1
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js.map +1 -1
- package/dist/Menu/MenuItemImpl.cjs.map +1 -1
- package/dist/Menu/MenuItemImpl.js.map +1 -1
- package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
- package/dist/Menu/MenuItemIndicator.js.map +1 -1
- package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
- package/dist/Menu/MenuRadioGroup.js.map +1 -1
- package/dist/Menu/MenuRoot.cjs +1 -1
- package/dist/Menu/MenuRoot.cjs.map +1 -1
- package/dist/Menu/MenuRoot.js +1 -1
- package/dist/Menu/MenuRoot.js.map +1 -1
- package/dist/Menu/MenuSub.cjs +1 -1
- package/dist/Menu/MenuSub.cjs.map +1 -1
- package/dist/Menu/MenuSub.js +1 -1
- package/dist/Menu/MenuSub.js.map +1 -1
- package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
- package/dist/Menu/MenuSubTrigger.js.map +1 -1
- package/dist/Menubar/MenubarContent.cjs.map +1 -1
- package/dist/Menubar/MenubarContent.js.map +1 -1
- package/dist/Menubar/MenubarMenu.cjs.map +1 -1
- package/dist/Menubar/MenubarMenu.js.map +1 -1
- package/dist/Menubar/MenubarRoot.cjs.map +1 -1
- package/dist/Menubar/MenubarRoot.js.map +1 -1
- package/dist/Menubar/MenubarSub.cjs +1 -1
- package/dist/Menubar/MenubarSub.cjs.map +1 -1
- package/dist/Menubar/MenubarSub.js +1 -1
- package/dist/Menubar/MenubarSub.js.map +1 -1
- package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
- package/dist/Menubar/MenubarTrigger.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
- package/dist/NumberField/NumberFieldInput.cjs +2 -2
- package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
- package/dist/NumberField/NumberFieldInput.js +2 -2
- package/dist/NumberField/NumberFieldInput.js.map +1 -1
- package/dist/NumberField/NumberFieldRoot.cjs +8 -5
- package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
- package/dist/NumberField/NumberFieldRoot.js +8 -5
- package/dist/NumberField/NumberFieldRoot.js.map +1 -1
- package/dist/Pagination/PaginationFirst.cjs.map +1 -1
- package/dist/Pagination/PaginationFirst.js.map +1 -1
- package/dist/Pagination/PaginationLast.cjs.map +1 -1
- package/dist/Pagination/PaginationLast.js.map +1 -1
- package/dist/Pagination/PaginationList.cjs.map +1 -1
- package/dist/Pagination/PaginationList.js.map +1 -1
- package/dist/Pagination/PaginationListItem.cjs.map +1 -1
- package/dist/Pagination/PaginationListItem.js.map +1 -1
- package/dist/Pagination/PaginationNext.cjs.map +1 -1
- package/dist/Pagination/PaginationNext.js.map +1 -1
- package/dist/Pagination/PaginationPrev.cjs.map +1 -1
- package/dist/Pagination/PaginationPrev.js.map +1 -1
- package/dist/Pagination/PaginationRoot.cjs.map +1 -1
- package/dist/Pagination/PaginationRoot.js.map +1 -1
- package/dist/PinInput/PinInputInput.cjs +1 -1
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +1 -1
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/PinInput/PinInputRoot.cjs.map +1 -1
- package/dist/PinInput/PinInputRoot.js.map +1 -1
- package/dist/Popover/PopoverAnchor.cjs.map +1 -1
- package/dist/Popover/PopoverAnchor.js.map +1 -1
- package/dist/Popover/PopoverContentModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentModal.js.map +1 -1
- package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentNonModal.js.map +1 -1
- package/dist/Popover/PopoverRoot.cjs +1 -1
- package/dist/Popover/PopoverRoot.cjs.map +1 -1
- package/dist/Popover/PopoverRoot.js +1 -1
- package/dist/Popover/PopoverRoot.js.map +1 -1
- package/dist/Popover/PopoverTrigger.cjs.map +1 -1
- package/dist/Popover/PopoverTrigger.js.map +1 -1
- package/dist/Popper/PopperAnchor.cjs.map +1 -1
- package/dist/Popper/PopperAnchor.js.map +1 -1
- package/dist/Popper/PopperArrow.cjs.map +1 -1
- package/dist/Popper/PopperArrow.js.map +1 -1
- package/dist/Popper/PopperContent.cjs.map +1 -1
- package/dist/Popper/PopperContent.js.map +1 -1
- package/dist/Presence/Presence.cjs.map +1 -1
- package/dist/Presence/Presence.js.map +1 -1
- package/dist/Presence/usePresence.cjs.map +1 -1
- package/dist/Presence/usePresence.js.map +1 -1
- package/dist/Primitive/Slot.cjs +1 -9
- package/dist/Primitive/Slot.cjs.map +1 -1
- package/dist/Primitive/Slot.js +1 -9
- package/dist/Primitive/Slot.js.map +1 -1
- package/dist/Progress/ProgressRoot.cjs +3 -2
- package/dist/Progress/ProgressRoot.cjs.map +1 -1
- package/dist/Progress/ProgressRoot.js +3 -2
- package/dist/Progress/ProgressRoot.js.map +1 -1
- package/dist/RadioGroup/Radio.cjs.map +1 -1
- package/dist/RadioGroup/Radio.js.map +1 -1
- package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
- package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
- package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
- package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarCell.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCell.js +2 -2
- package/dist/RangeCalendar/RangeCalendarCell.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +28 -9
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js +28 -9
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarHeading.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +26 -9
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +26 -9
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.cjs +21 -4
- package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.js +21 -4
- package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
- package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusGroup.js +1 -1
- package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
- package/dist/Select/BubbleSelect.cjs.map +1 -1
- package/dist/Select/BubbleSelect.js.map +1 -1
- package/dist/Select/SelectContent.cjs.map +1 -1
- package/dist/Select/SelectContent.js.map +1 -1
- package/dist/Select/SelectContentImpl.cjs +1 -1
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +1 -1
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/Select/SelectItem.cjs.map +1 -1
- package/dist/Select/SelectItem.js.map +1 -1
- package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
- package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
- package/dist/Select/SelectItemAlignedPosition.js +1 -1
- package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
- package/dist/Select/SelectItemText.cjs.map +1 -1
- package/dist/Select/SelectItemText.js.map +1 -1
- package/dist/Select/SelectProvider.cjs.map +1 -1
- package/dist/Select/SelectProvider.js.map +1 -1
- package/dist/Select/SelectRoot.cjs +3 -1
- package/dist/Select/SelectRoot.cjs.map +1 -1
- package/dist/Select/SelectRoot.js +3 -1
- package/dist/Select/SelectRoot.js.map +1 -1
- package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
- package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
- package/dist/Select/SelectTrigger.cjs.map +1 -1
- package/dist/Select/SelectTrigger.js.map +1 -1
- package/dist/Select/SelectValue.cjs.map +1 -1
- package/dist/Select/SelectValue.js.map +1 -1
- package/dist/Select/SelectViewport.cjs.map +1 -1
- package/dist/Select/SelectViewport.js.map +1 -1
- package/dist/Slider/SliderHorizontal.cjs +7 -4
- package/dist/Slider/SliderHorizontal.cjs.map +1 -1
- package/dist/Slider/SliderHorizontal.js +7 -4
- package/dist/Slider/SliderHorizontal.js.map +1 -1
- package/dist/Slider/SliderRange.cjs +2 -2
- package/dist/Slider/SliderRange.cjs.map +1 -1
- package/dist/Slider/SliderRange.js +2 -2
- package/dist/Slider/SliderRange.js.map +1 -1
- package/dist/Slider/SliderRoot.cjs.map +1 -1
- package/dist/Slider/SliderRoot.js.map +1 -1
- package/dist/Slider/SliderThumb.cjs.map +1 -1
- package/dist/Slider/SliderThumb.js.map +1 -1
- package/dist/Slider/SliderThumbImpl.cjs +3 -3
- package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
- package/dist/Slider/SliderThumbImpl.js +3 -3
- package/dist/Slider/SliderThumbImpl.js.map +1 -1
- package/dist/Slider/SliderVertical.cjs +7 -4
- package/dist/Slider/SliderVertical.cjs.map +1 -1
- package/dist/Slider/SliderVertical.js +7 -4
- package/dist/Slider/SliderVertical.js.map +1 -1
- package/dist/Slider/utils.cjs +1 -1
- package/dist/Slider/utils.cjs.map +1 -1
- package/dist/Slider/utils.js +1 -1
- package/dist/Slider/utils.js.map +1 -1
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js.map +1 -1
- package/dist/Splitter/SplitterPanel.cjs +16 -10
- package/dist/Splitter/SplitterPanel.cjs.map +1 -1
- package/dist/Splitter/SplitterPanel.js +16 -10
- package/dist/Splitter/SplitterPanel.js.map +1 -1
- package/dist/Stepper/StepperIndicator.cjs.map +1 -1
- package/dist/Stepper/StepperIndicator.js.map +1 -1
- package/dist/Stepper/StepperItem.cjs.map +1 -1
- package/dist/Stepper/StepperItem.js.map +1 -1
- package/dist/Stepper/StepperRoot.cjs +30 -3
- package/dist/Stepper/StepperRoot.cjs.map +1 -1
- package/dist/Stepper/StepperRoot.js +30 -3
- package/dist/Stepper/StepperRoot.js.map +1 -1
- package/dist/Stepper/StepperTrigger.cjs.map +1 -1
- package/dist/Stepper/StepperTrigger.js.map +1 -1
- package/dist/Switch/SwitchRoot.cjs.map +1 -1
- package/dist/Switch/SwitchRoot.js.map +1 -1
- package/dist/Tabs/TabsContent.cjs.map +1 -1
- package/dist/Tabs/TabsContent.js.map +1 -1
- package/dist/Tabs/TabsIndicator.cjs.map +1 -1
- package/dist/Tabs/TabsIndicator.js.map +1 -1
- package/dist/Tabs/TabsList.cjs.map +1 -1
- package/dist/Tabs/TabsList.js.map +1 -1
- package/dist/Tabs/TabsRoot.cjs.map +1 -1
- package/dist/Tabs/TabsRoot.js.map +1 -1
- package/dist/Tabs/TabsTrigger.cjs.map +1 -1
- package/dist/Tabs/TabsTrigger.js.map +1 -1
- package/dist/TagsInput/TagsInputInput.cjs +1 -0
- package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
- package/dist/TagsInput/TagsInputInput.js +1 -0
- package/dist/TagsInput/TagsInputInput.js.map +1 -1
- package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItem.js.map +1 -1
- package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
- package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
- package/dist/TagsInput/TagsInputRoot.cjs +1 -1
- package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
- package/dist/TagsInput/TagsInputRoot.js +1 -1
- package/dist/TagsInput/TagsInputRoot.js.map +1 -1
- package/dist/TimeField/TimeFieldInput.cjs +1 -0
- package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
- package/dist/TimeField/TimeFieldInput.js +1 -0
- package/dist/TimeField/TimeFieldInput.js.map +1 -1
- package/dist/TimeField/TimeFieldRoot.cjs +13 -4
- package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
- package/dist/TimeField/TimeFieldRoot.js +13 -4
- package/dist/TimeField/TimeFieldRoot.js.map +1 -1
- package/dist/Toast/ToastAnnounce.cjs.map +1 -1
- package/dist/Toast/ToastAnnounce.js.map +1 -1
- package/dist/Toast/ToastRoot.cjs.map +1 -1
- package/dist/Toast/ToastRoot.js.map +1 -1
- package/dist/Toast/ToastRootImpl.cjs +1 -1
- package/dist/Toast/ToastRootImpl.cjs.map +1 -1
- package/dist/Toast/ToastRootImpl.js +1 -1
- package/dist/Toast/ToastRootImpl.js.map +1 -1
- package/dist/Toast/ToastViewport.cjs +1 -1
- package/dist/Toast/ToastViewport.cjs.map +1 -1
- package/dist/Toast/ToastViewport.js +1 -1
- package/dist/Toast/ToastViewport.js.map +1 -1
- package/dist/Toggle/Toggle.cjs.map +1 -1
- package/dist/Toggle/Toggle.js.map +1 -1
- package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
- package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
- package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
- package/dist/Toolbar/ToolbarRoot.js.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +1 -1
- package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
- package/dist/Tooltip/TooltipRoot.cjs +1 -1
- package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
- package/dist/Tooltip/TooltipRoot.js +1 -1
- package/dist/Tooltip/TooltipRoot.js.map +1 -1
- package/dist/Tooltip/TooltipTrigger.cjs +1 -1
- package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
- package/dist/Tooltip/TooltipTrigger.js +1 -1
- package/dist/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/Tree/TreeItem.cjs +4 -1
- package/dist/Tree/TreeItem.cjs.map +1 -1
- package/dist/Tree/TreeItem.js +4 -1
- package/dist/Tree/TreeItem.js.map +1 -1
- package/dist/Tree/TreeRoot.cjs +29 -3
- package/dist/Tree/TreeRoot.cjs.map +1 -1
- package/dist/Tree/TreeRoot.js +29 -3
- package/dist/Tree/TreeRoot.js.map +1 -1
- package/dist/Tree/TreeVirtualizer.cjs +2 -2
- package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
- package/dist/Tree/TreeVirtualizer.js +2 -2
- package/dist/Tree/TreeVirtualizer.js.map +1 -1
- package/dist/Viewport/Viewport.cjs.map +1 -1
- package/dist/Viewport/Viewport.js.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
- package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
- package/dist/component/BaseSeparator.cjs.map +1 -1
- package/dist/component/BaseSeparator.js.map +1 -1
- package/dist/date/calendar.cjs.map +1 -1
- package/dist/date/calendar.js.map +1 -1
- package/dist/date/parser.cjs +22 -7
- package/dist/date/parser.cjs.map +1 -1
- package/dist/date/parser.js +23 -8
- package/dist/date/parser.js.map +1 -1
- package/dist/date/useDateField.cjs +21 -6
- package/dist/date/useDateField.cjs.map +1 -1
- package/dist/date/useDateField.js +21 -6
- package/dist/date/useDateField.js.map +1 -1
- package/dist/date/utils.cjs +31 -2
- package/dist/date/utils.cjs.map +1 -1
- package/dist/date/utils.js +30 -3
- package/dist/date/utils.js.map +1 -1
- package/dist/index.d.ts +492 -351
- package/dist/shared/useBodyScrollLock.cjs +2 -2
- package/dist/shared/useBodyScrollLock.cjs.map +1 -1
- package/dist/shared/useBodyScrollLock.js +2 -2
- package/dist/shared/useBodyScrollLock.js.map +1 -1
- package/dist/shared/useDateFormatter.cjs +12 -10
- package/dist/shared/useDateFormatter.cjs.map +1 -1
- package/dist/shared/useDateFormatter.js +12 -10
- package/dist/shared/useDateFormatter.js.map +1 -1
- package/dist/shared/useDirection.cjs.map +1 -1
- package/dist/shared/useDirection.js.map +1 -1
- package/dist/shared/useForwardProps.cjs +4 -2
- package/dist/shared/useForwardProps.cjs.map +1 -1
- package/dist/shared/useForwardProps.js +5 -3
- package/dist/shared/useForwardProps.js.map +1 -1
- package/dist/shared/useGraceArea.cjs.map +1 -1
- package/dist/shared/useGraceArea.js.map +1 -1
- package/dist/shared/useId.cjs +2 -2
- package/dist/shared/useId.cjs.map +1 -1
- package/dist/shared/useId.js +2 -2
- package/dist/shared/useId.js.map +1 -1
- package/dist/shared/useLocale.cjs.map +1 -1
- package/dist/shared/useLocale.js.map +1 -1
- package/dist/shared/useNonce.cjs.map +1 -1
- package/dist/shared/useNonce.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberFieldInput.cjs","sources":["../../src/NumberField/NumberFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport {
|
|
1
|
+
{"version":3,"file":"NumberFieldInput.cjs","sources":["../../src/NumberField/NumberFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { onMounted, ref, watch } from 'vue'\nimport { getActiveElement } from '@/shared'\nimport { injectNumberFieldRootContext } from './NumberFieldRoot.vue'\n\nexport interface NumberFieldInputProps extends PrimitiveProps {\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\n\nconst props = withDefaults(defineProps<NumberFieldInputProps>(), {\n as: 'input',\n})\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nconst rootContext = injectNumberFieldRootContext()\n\nfunction handleWheelEvent(event: WheelEvent) {\n if (rootContext.disableWheelChange.value)\n return\n\n // only handle when in focus\n if (event.target !== getActiveElement())\n return\n\n // if on a trackpad, users can scroll in both X and Y at once, check the magnitude of the change\n // if it's mostly in the X direction, then just return, the user probably doesn't mean to inc/dec\n // this isn't perfect, events come in fast with small deltas and a part of the scroll may give a false indication\n // especially if the user is scrolling near 45deg\n if (Math.abs(event.deltaY) <= Math.abs(event.deltaX))\n return\n\n event.preventDefault()\n if (event.deltaY > 0)\n rootContext.invertWheelChange.value ? rootContext.handleDecrease() : rootContext.handleIncrease()\n else if (event.deltaY < 0)\n rootContext.invertWheelChange.value ? rootContext.handleIncrease() : rootContext.handleDecrease()\n}\n\nonMounted(() => {\n rootContext.onInputElement(currentElement.value as HTMLInputElement)\n})\n\nconst inputValue = ref(rootContext.textValue.value)\nwatch(() => rootContext.textValue.value, () => {\n inputValue.value = rootContext.textValue.value\n}, { immediate: true, deep: true })\n\nfunction handleChange() {\n requestAnimationFrame(() => {\n inputValue.value = rootContext.textValue.value\n })\n}\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n :id=\"rootContext.id.value\"\n ref=\"primitiveElement\"\n :value=\"inputValue\"\n role=\"spinbutton\"\n type=\"text\"\n tabindex=\"0\"\n :inputmode=\"rootContext.inputMode.value\"\n :disabled=\"rootContext.disabled.value ? '' : undefined\"\n :data-disabled=\"rootContext.disabled.value ? '' : undefined\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n aria-roledescription=\"Number field\"\n :aria-valuenow=\"rootContext.modelValue.value\"\n :aria-valuemin=\"rootContext.min.value\"\n :aria-valuemax=\"rootContext.max.value\"\n @keydown.up.prevent=\"rootContext.handleIncrease()\"\n @keydown.down.prevent=\"rootContext.handleDecrease()\"\n @keydown.page-up.prevent=\"rootContext.handleIncrease(10)\"\n @keydown.page-down.prevent=\"rootContext.handleDecrease(10)\"\n @keydown.home.prevent=\"rootContext.handleMinMaxValue('min')\"\n @keydown.end.prevent=\"rootContext.handleMinMaxValue('max')\"\n @wheel=\"handleWheelEvent\"\n @beforeinput=\"(event: InputEvent) => {\n const target = event.target as HTMLInputElement\n let nextValue\n = target.value.slice(0, target.selectionStart ?? undefined)\n + (event.data ?? '')\n + target.value.slice(target.selectionEnd ?? undefined);\n\n // validate\n if (!rootContext.validate(nextValue))\n event.preventDefault()\n }\"\n @input=\"(event: InputEvent) => {\n const target = event.target as HTMLInputElement\n inputValue = target.value\n }\"\n @change=\"handleChange\"\n @keydown.enter=\"rootContext.applyInputValue($event.target?.value)\"\n @blur=\"rootContext.applyInputValue($event.target?.value)\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["usePrimitiveElement","injectNumberFieldRootContext","getActiveElement","onMounted","ref","watch"],"mappings":";;;;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAIA,iDAAoB,EAAA;AACjE,IAAA,MAAM,cAAcC,wDAA6B,EAAA;AAEjD,IAAA,SAAS,iBAAiB,KAAmB,EAAA;AAC3C,MAAA,IAAI,YAAY,kBAAmB,CAAA,KAAA;AACjC,QAAA;AAGF,MAAI,IAAA,KAAA,CAAM,WAAWC,wCAAiB,EAAA;AACpC,QAAA;AAMF,MAAI,IAAA,IAAA,CAAK,IAAI,KAAM,CAAA,MAAM,KAAK,IAAK,CAAA,GAAA,CAAI,MAAM,MAAM,CAAA;AACjD,QAAA;AAEF,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,IAAI,MAAM,MAAS,GAAA,CAAA;AACjB,QAAA,WAAA,CAAY,kBAAkB,KAAQ,GAAA,WAAA,CAAY,cAAe,EAAA,GAAI,YAAY,cAAe,EAAA;AAAA,WAAA,IACzF,MAAM,MAAS,GAAA,CAAA;AACtB,QAAA,WAAA,CAAY,kBAAkB,KAAQ,GAAA,WAAA,CAAY,cAAe,EAAA,GAAI,YAAY,cAAe,EAAA;AAAA;AAGpG,IAAAC,aAAA,CAAU,MAAM;AACd,MAAY,WAAA,CAAA,cAAA,CAAe,eAAe,KAAyB,CAAA;AAAA,KACpE,CAAA;AAED,IAAA,MAAM,UAAa,GAAAC,OAAA,CAAI,WAAY,CAAA,SAAA,CAAU,KAAK,CAAA;AAClD,IAAAC,SAAA,CAAM,MAAM,WAAA,CAAY,SAAU,CAAA,KAAA,EAAO,MAAM;AAC7C,MAAW,UAAA,CAAA,KAAA,GAAQ,YAAY,SAAU,CAAA,KAAA;AAAA,OACxC,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,MAAM,CAAA;AAElC,IAAA,SAAS,YAAe,GAAA;AACtB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAW,UAAA,CAAA,KAAA,GAAQ,YAAY,SAAU,CAAA,KAAA;AAAA,OAC1C,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -23,9 +23,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
23
23
|
return;
|
|
24
24
|
event.preventDefault();
|
|
25
25
|
if (event.deltaY > 0)
|
|
26
|
-
rootContext.handleIncrease();
|
|
26
|
+
rootContext.invertWheelChange.value ? rootContext.handleDecrease() : rootContext.handleIncrease();
|
|
27
27
|
else if (event.deltaY < 0)
|
|
28
|
-
rootContext.handleDecrease();
|
|
28
|
+
rootContext.invertWheelChange.value ? rootContext.handleIncrease() : rootContext.handleDecrease();
|
|
29
29
|
}
|
|
30
30
|
onMounted(() => {
|
|
31
31
|
rootContext.onInputElement(currentElement.value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberFieldInput.js","sources":["../../src/NumberField/NumberFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport {
|
|
1
|
+
{"version":3,"file":"NumberFieldInput.js","sources":["../../src/NumberField/NumberFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { onMounted, ref, watch } from 'vue'\nimport { getActiveElement } from '@/shared'\nimport { injectNumberFieldRootContext } from './NumberFieldRoot.vue'\n\nexport interface NumberFieldInputProps extends PrimitiveProps {\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\n\nconst props = withDefaults(defineProps<NumberFieldInputProps>(), {\n as: 'input',\n})\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nconst rootContext = injectNumberFieldRootContext()\n\nfunction handleWheelEvent(event: WheelEvent) {\n if (rootContext.disableWheelChange.value)\n return\n\n // only handle when in focus\n if (event.target !== getActiveElement())\n return\n\n // if on a trackpad, users can scroll in both X and Y at once, check the magnitude of the change\n // if it's mostly in the X direction, then just return, the user probably doesn't mean to inc/dec\n // this isn't perfect, events come in fast with small deltas and a part of the scroll may give a false indication\n // especially if the user is scrolling near 45deg\n if (Math.abs(event.deltaY) <= Math.abs(event.deltaX))\n return\n\n event.preventDefault()\n if (event.deltaY > 0)\n rootContext.invertWheelChange.value ? rootContext.handleDecrease() : rootContext.handleIncrease()\n else if (event.deltaY < 0)\n rootContext.invertWheelChange.value ? rootContext.handleIncrease() : rootContext.handleDecrease()\n}\n\nonMounted(() => {\n rootContext.onInputElement(currentElement.value as HTMLInputElement)\n})\n\nconst inputValue = ref(rootContext.textValue.value)\nwatch(() => rootContext.textValue.value, () => {\n inputValue.value = rootContext.textValue.value\n}, { immediate: true, deep: true })\n\nfunction handleChange() {\n requestAnimationFrame(() => {\n inputValue.value = rootContext.textValue.value\n })\n}\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n :id=\"rootContext.id.value\"\n ref=\"primitiveElement\"\n :value=\"inputValue\"\n role=\"spinbutton\"\n type=\"text\"\n tabindex=\"0\"\n :inputmode=\"rootContext.inputMode.value\"\n :disabled=\"rootContext.disabled.value ? '' : undefined\"\n :data-disabled=\"rootContext.disabled.value ? '' : undefined\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n aria-roledescription=\"Number field\"\n :aria-valuenow=\"rootContext.modelValue.value\"\n :aria-valuemin=\"rootContext.min.value\"\n :aria-valuemax=\"rootContext.max.value\"\n @keydown.up.prevent=\"rootContext.handleIncrease()\"\n @keydown.down.prevent=\"rootContext.handleDecrease()\"\n @keydown.page-up.prevent=\"rootContext.handleIncrease(10)\"\n @keydown.page-down.prevent=\"rootContext.handleDecrease(10)\"\n @keydown.home.prevent=\"rootContext.handleMinMaxValue('min')\"\n @keydown.end.prevent=\"rootContext.handleMinMaxValue('max')\"\n @wheel=\"handleWheelEvent\"\n @beforeinput=\"(event: InputEvent) => {\n const target = event.target as HTMLInputElement\n let nextValue\n = target.value.slice(0, target.selectionStart ?? undefined)\n + (event.data ?? '')\n + target.value.slice(target.selectionEnd ?? undefined);\n\n // validate\n if (!rootContext.validate(nextValue))\n event.preventDefault()\n }\"\n @input=\"(event: InputEvent) => {\n const target = event.target as HTMLInputElement\n inputValue = target.value\n }\"\n @change=\"handleChange\"\n @keydown.enter=\"rootContext.applyInputValue($event.target?.value)\"\n @blur=\"rootContext.applyInputValue($event.target?.value)\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAI,mBAAoB,EAAA;AACjE,IAAA,MAAM,cAAc,4BAA6B,EAAA;AAEjD,IAAA,SAAS,iBAAiB,KAAmB,EAAA;AAC3C,MAAA,IAAI,YAAY,kBAAmB,CAAA,KAAA;AACjC,QAAA;AAGF,MAAI,IAAA,KAAA,CAAM,WAAW,gBAAiB,EAAA;AACpC,QAAA;AAMF,MAAI,IAAA,IAAA,CAAK,IAAI,KAAM,CAAA,MAAM,KAAK,IAAK,CAAA,GAAA,CAAI,MAAM,MAAM,CAAA;AACjD,QAAA;AAEF,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,IAAI,MAAM,MAAS,GAAA,CAAA;AACjB,QAAA,WAAA,CAAY,kBAAkB,KAAQ,GAAA,WAAA,CAAY,cAAe,EAAA,GAAI,YAAY,cAAe,EAAA;AAAA,WAAA,IACzF,MAAM,MAAS,GAAA,CAAA;AACtB,QAAA,WAAA,CAAY,kBAAkB,KAAQ,GAAA,WAAA,CAAY,cAAe,EAAA,GAAI,YAAY,cAAe,EAAA;AAAA;AAGpG,IAAA,SAAA,CAAU,MAAM;AACd,MAAY,WAAA,CAAA,cAAA,CAAe,eAAe,KAAyB,CAAA;AAAA,KACpE,CAAA;AAED,IAAA,MAAM,UAAa,GAAA,GAAA,CAAI,WAAY,CAAA,SAAA,CAAU,KAAK,CAAA;AAClD,IAAA,KAAA,CAAM,MAAM,WAAA,CAAY,SAAU,CAAA,KAAA,EAAO,MAAM;AAC7C,MAAW,UAAA,CAAA,KAAA,GAAQ,YAAY,SAAU,CAAA,KAAA;AAAA,OACxC,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,MAAM,CAAA;AAElC,IAAA,SAAS,YAAe,GAAA;AACtB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAW,UAAA,CAAA,KAAA,GAAQ,YAAY,SAAU,CAAA,KAAA;AAAA,OAC1C,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -10,6 +10,7 @@ const shared_useFormControl = require('../shared/useFormControl.cjs');
|
|
|
10
10
|
const shared_clamp = require('../shared/clamp.cjs');
|
|
11
11
|
const Primitive_Primitive = require('../Primitive/Primitive.cjs');
|
|
12
12
|
const VisuallyHidden_VisuallyHiddenInput = require('../VisuallyHidden/VisuallyHiddenInput.cjs');
|
|
13
|
+
const shared_nullish = require('../shared/nullish.cjs');
|
|
13
14
|
|
|
14
15
|
const [injectNumberFieldRootContext, provideNumberFieldRootContext] = shared_createContext.createContext("NumberFieldRoot");
|
|
15
16
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
@@ -28,6 +29,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
28
29
|
locale: {},
|
|
29
30
|
disabled: { type: Boolean },
|
|
30
31
|
disableWheelChange: { type: Boolean },
|
|
32
|
+
invertWheelChange: { type: Boolean },
|
|
31
33
|
id: {},
|
|
32
34
|
asChild: { type: Boolean },
|
|
33
35
|
as: { default: "div" },
|
|
@@ -38,7 +40,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
38
40
|
setup(__props, { emit: __emit }) {
|
|
39
41
|
const props = __props;
|
|
40
42
|
const emits = __emit;
|
|
41
|
-
const { disabled, disableWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = vue.toRefs(props);
|
|
43
|
+
const { disabled, disableWheelChange, invertWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = vue.toRefs(props);
|
|
42
44
|
const modelValue = core.useVModel(props, "modelValue", emits, {
|
|
43
45
|
defaultValue: props.defaultValue,
|
|
44
46
|
passive: props.modelValue === void 0
|
|
@@ -48,10 +50,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
48
50
|
const isFormControl = shared_useFormControl.useFormControl(currentElement);
|
|
49
51
|
const inputEl = vue.ref();
|
|
50
52
|
const isDecreaseDisabled = vue.computed(
|
|
51
|
-
() => clampInputValue(modelValue.value) === min.value ||
|
|
53
|
+
() => !shared_nullish.isNullish(modelValue.value) && (clampInputValue(modelValue.value) === min.value || min.value && !isNaN(modelValue.value) ? NumberField_utils.handleDecimalOperation("-", modelValue.value, step.value) < min.value : false)
|
|
52
54
|
);
|
|
53
55
|
const isIncreaseDisabled = vue.computed(
|
|
54
|
-
() => clampInputValue(modelValue.value) === max.value ||
|
|
56
|
+
() => !shared_nullish.isNullish(modelValue.value) && (clampInputValue(modelValue.value) === max.value || max.value && !isNaN(modelValue.value) ? NumberField_utils.handleDecimalOperation("+", modelValue.value, step.value) > max.value : false)
|
|
55
57
|
);
|
|
56
58
|
function handleChangingValue(type, multiplier = 1) {
|
|
57
59
|
inputEl.value?.focus();
|
|
@@ -86,7 +88,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
86
88
|
return hasDecimals ? "decimal" : "numeric";
|
|
87
89
|
});
|
|
88
90
|
const textValueFormatter = NumberField_utils.useNumberFormatter(locale, formatOptions);
|
|
89
|
-
const textValue = vue.computed(() => isNaN(modelValue.value) ? "" : textValueFormatter.format(modelValue.value));
|
|
91
|
+
const textValue = vue.computed(() => shared_nullish.isNullish(modelValue.value) || isNaN(modelValue.value) ? "" : textValueFormatter.format(modelValue.value));
|
|
90
92
|
function validate(val) {
|
|
91
93
|
return numberParser.isValidPartialNumber(val, min.value, max.value);
|
|
92
94
|
}
|
|
@@ -105,7 +107,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
105
107
|
}
|
|
106
108
|
function applyInputValue(val) {
|
|
107
109
|
const parsedValue = numberParser.parse(val);
|
|
108
|
-
modelValue.value = clampInputValue(parsedValue);
|
|
110
|
+
modelValue.value = isNaN(parsedValue) ? void 0 : clampInputValue(parsedValue);
|
|
109
111
|
if (!val.length)
|
|
110
112
|
return setInputValue(val);
|
|
111
113
|
if (isNaN(parsedValue))
|
|
@@ -125,6 +127,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
125
127
|
applyInputValue,
|
|
126
128
|
disabled,
|
|
127
129
|
disableWheelChange,
|
|
130
|
+
invertWheelChange,
|
|
128
131
|
max,
|
|
129
132
|
min,
|
|
130
133
|
isDecreaseDisabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberFieldRoot.cjs","sources":["../../src/NumberField/NumberFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { FormFieldProps } from '@/shared/types'\nimport type { HTMLAttributes, Ref } from 'vue'\nimport { clamp, createContext, snapValueToStep, useFormControl, useLocale } from '@/shared'\nimport { useVModel } from '@vueuse/core'\nimport { computed, ref, toRefs } from 'vue'\n\nexport interface NumberFieldRootProps extends PrimitiveProps, FormFieldProps {\n defaultValue?: number\n modelValue?: number | null\n /** The smallest value allowed for the input. */\n min?: number\n /** The largest value allowed for the input. */\n max?: number\n /** The amount that the input value changes with each increment or decrement \"tick\". */\n step?: number\n /** When `false`, prevents the value from snapping to the nearest increment of the step value */\n stepSnapping?: boolean\n /** Formatting options for the value displayed in the number field. This also affects what characters are allowed to be typed by the user. */\n formatOptions?: Intl.NumberFormatOptions\n /** The locale to use for formatting dates */\n locale?: string\n /** When `true`, prevents the user from interacting with the Number Field. */\n disabled?: boolean\n /** When `true`, prevents the value from changing on wheel scroll. */\n disableWheelChange?: boolean\n /** Id of the element */\n id?: string\n}\n\nexport type NumberFieldRootEmits = {\n 'update:modelValue': [val: number]\n}\n\ninterface NumberFieldRootContext {\n modelValue: Ref<number>\n handleIncrease: (multiplier?: number) => void\n handleDecrease: (multiplier?: number) => void\n handleMinMaxValue: (type: 'min' | 'max') => void\n inputEl: Ref<HTMLInputElement | undefined>\n onInputElement: (el: HTMLInputElement) => void\n inputMode: Ref<HTMLAttributes['inputmode']>\n textValue: Ref<string>\n validate: (val: string) => boolean\n applyInputValue: (val: string) => void\n disabled: Ref<boolean>\n disableWheelChange: Ref<boolean>\n max: Ref<number | undefined>\n min: Ref<number | undefined>\n isDecreaseDisabled: Ref<boolean>\n isIncreaseDisabled: Ref<boolean>\n id: Ref<string | undefined>\n}\n\nexport const [injectNumberFieldRootContext, provideNumberFieldRootContext] = createContext<NumberFieldRootContext>('NumberFieldRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { handleDecimalOperation, useNumberFormatter, useNumberParser } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<NumberFieldRootProps>(), {\n as: 'div',\n defaultValue: undefined,\n step: 1,\n stepSnapping: true,\n})\nconst emits = defineEmits<NumberFieldRootEmits>()\nconst { disabled, disableWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<number>\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst locale = useLocale(propLocale)\nconst isFormControl = useFormControl(currentElement)\nconst inputEl = ref<HTMLInputElement>()\n\nconst isDecreaseDisabled = computed(() => (\n clampInputValue(modelValue.value) === min.value\n || (min.value && !isNaN(modelValue.value) ? (handleDecimalOperation('-', modelValue.value, step.value) < min.value) : false)),\n)\nconst isIncreaseDisabled = computed(() => (\n clampInputValue(modelValue.value) === max.value\n || (max.value && !isNaN(modelValue.value) ? (handleDecimalOperation('+', modelValue.value, step.value) > max.value) : false)),\n)\n\nfunction handleChangingValue(type: 'increase' | 'decrease', multiplier = 1) {\n inputEl.value?.focus()\n const currentInputValue = numberParser.parse(inputEl.value?.value ?? '')\n if (props.disabled)\n return\n if (isNaN(currentInputValue)) {\n modelValue.value = min.value ?? 0\n }\n else {\n if (type === 'increase')\n modelValue.value = clampInputValue(currentInputValue + ((step.value ?? 1) * multiplier))\n else\n modelValue.value = clampInputValue(currentInputValue - ((step.value ?? 1) * multiplier))\n }\n}\n\nfunction handleIncrease(multiplier = 1) {\n handleChangingValue('increase', multiplier)\n}\nfunction handleDecrease(multiplier = 1) {\n handleChangingValue('decrease', multiplier)\n}\n\nfunction handleMinMaxValue(type: 'min' | 'max') {\n if (type === 'min' && min.value !== undefined)\n modelValue.value = clampInputValue(min.value)\n else if (type === 'max' && max.value !== undefined)\n modelValue.value = clampInputValue(max.value)\n}\n\n// Formatter\nconst numberFormatter = useNumberFormatter(locale, formatOptions)\nconst numberParser = useNumberParser(locale, formatOptions)\n\nconst inputMode = computed<HTMLAttributes['inputmode']>(() => {\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n const hasDecimals = numberFormatter.resolvedOptions().maximumFractionDigits! > 0\n\n return hasDecimals ? 'decimal' : 'numeric'\n})\n// Replace negative textValue formatted using currencySign: 'accounting'\n// with a textValue that can be announced using a minus sign.\nconst textValueFormatter = useNumberFormatter(locale, formatOptions)\nconst textValue = computed(() => isNaN(modelValue.value) ? '' : textValueFormatter.format(modelValue.value))\n\nfunction validate(val: string) {\n return numberParser.isValidPartialNumber(val, min.value, max.value)\n}\n\nfunction setInputValue(val: string) {\n if (inputEl.value)\n inputEl.value.value = val\n}\n\nfunction clampInputValue(val: number) {\n // Clamp to min and max, round to the nearest step, and round to specified number of digits\n let clampedValue: number\n if (step.value === undefined || isNaN(step.value) || !stepSnapping.value)\n clampedValue = clamp(val, min.value, max.value)\n else\n clampedValue = snapValueToStep(val, min.value, max.value, step.value)\n\n clampedValue = numberParser.parse(numberFormatter.format(clampedValue))\n return clampedValue\n}\n\nfunction applyInputValue(val: string) {\n const parsedValue = numberParser.parse(val)\n\n modelValue.value = clampInputValue(parsedValue)\n // Set to empty state if input value is empty\n if (!val.length)\n return setInputValue(val)\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue))\n return setInputValue(textValue.value)\n\n return setInputValue(textValue.value)\n}\n\nprovideNumberFieldRootContext({\n modelValue,\n handleDecrease,\n handleIncrease,\n handleMinMaxValue,\n inputMode,\n inputEl,\n onInputElement: el => inputEl.value = el,\n textValue,\n validate,\n applyInputValue,\n disabled,\n disableWheelChange,\n max,\n min,\n isDecreaseDisabled,\n isIncreaseDisabled,\n id,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot\n :model-value=\"modelValue\"\n :text-value=\"textValue\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n type=\"text\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useVModel","usePrimitiveElement","useLocale","useFormControl","ref","computed","handleDecimalOperation","useNumberFormatter","useNumberParser","clamp","snapValueToStep"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NumberFieldRoot.cjs","sources":["../../src/NumberField/NumberFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { HTMLAttributes, Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { FormFieldProps } from '@/shared/types'\nimport { useVModel } from '@vueuse/core'\nimport { computed, ref, toRefs } from 'vue'\nimport { clamp, createContext, isNullish, snapValueToStep, useFormControl, useLocale } from '@/shared'\n\nexport interface NumberFieldRootProps extends PrimitiveProps, FormFieldProps {\n defaultValue?: number\n modelValue?: number | null\n /** The smallest value allowed for the input. */\n min?: number\n /** The largest value allowed for the input. */\n max?: number\n /** The amount that the input value changes with each increment or decrement \"tick\". */\n step?: number\n /** When `false`, prevents the value from snapping to the nearest increment of the step value */\n stepSnapping?: boolean\n /** Formatting options for the value displayed in the number field. This also affects what characters are allowed to be typed by the user. */\n formatOptions?: Intl.NumberFormatOptions\n /** The locale to use for formatting dates */\n locale?: string\n /** When `true`, prevents the user from interacting with the Number Field. */\n disabled?: boolean\n /** When `true`, prevents the value from changing on wheel scroll. */\n disableWheelChange?: boolean\n /** When `true`, inverts the direction of the wheel change. */\n invertWheelChange?: boolean\n /** Id of the element */\n id?: string\n}\n\nexport type NumberFieldRootEmits = {\n 'update:modelValue': [val: number]\n}\n\ninterface NumberFieldRootContext {\n modelValue: Ref<number | undefined>\n handleIncrease: (multiplier?: number) => void\n handleDecrease: (multiplier?: number) => void\n handleMinMaxValue: (type: 'min' | 'max') => void\n inputEl: Ref<HTMLInputElement | undefined>\n onInputElement: (el: HTMLInputElement) => void\n inputMode: Ref<HTMLAttributes['inputmode']>\n textValue: Ref<string>\n validate: (val: string) => boolean\n applyInputValue: (val: string) => void\n disabled: Ref<boolean>\n disableWheelChange: Ref<boolean>\n invertWheelChange: Ref<boolean>\n max: Ref<number | undefined>\n min: Ref<number | undefined>\n isDecreaseDisabled: Ref<boolean>\n isIncreaseDisabled: Ref<boolean>\n id: Ref<string | undefined>\n}\n\nexport const [injectNumberFieldRootContext, provideNumberFieldRootContext] = createContext<NumberFieldRootContext>('NumberFieldRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { handleDecimalOperation, useNumberFormatter, useNumberParser } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<NumberFieldRootProps>(), {\n as: 'div',\n defaultValue: undefined,\n step: 1,\n stepSnapping: true,\n})\nconst emits = defineEmits<NumberFieldRootEmits>()\nconst { disabled, disableWheelChange, invertWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<number | undefined>\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst locale = useLocale(propLocale)\nconst isFormControl = useFormControl(currentElement)\nconst inputEl = ref<HTMLInputElement>()\n\nconst isDecreaseDisabled = computed(() => (\n !isNullish(modelValue.value) && (\n clampInputValue(modelValue.value) === min.value\n || (min.value && !isNaN(modelValue.value)\n )\n ? (handleDecimalOperation('-', modelValue.value, step.value) < min.value)\n : false)),\n)\nconst isIncreaseDisabled = computed(() => (\n !isNullish(modelValue.value) && (\n clampInputValue(modelValue.value) === max.value\n || (max.value && !isNaN(modelValue.value)\n )\n ? (handleDecimalOperation('+', modelValue.value, step.value) > max.value)\n : false)),\n)\n\nfunction handleChangingValue(type: 'increase' | 'decrease', multiplier = 1) {\n inputEl.value?.focus()\n const currentInputValue = numberParser.parse(inputEl.value?.value ?? '')\n if (props.disabled)\n return\n if (isNaN(currentInputValue)) {\n modelValue.value = min.value ?? 0\n }\n else {\n if (type === 'increase')\n modelValue.value = clampInputValue(currentInputValue + ((step.value ?? 1) * multiplier))\n else\n modelValue.value = clampInputValue(currentInputValue - ((step.value ?? 1) * multiplier))\n }\n}\n\nfunction handleIncrease(multiplier = 1) {\n handleChangingValue('increase', multiplier)\n}\nfunction handleDecrease(multiplier = 1) {\n handleChangingValue('decrease', multiplier)\n}\n\nfunction handleMinMaxValue(type: 'min' | 'max') {\n if (type === 'min' && min.value !== undefined)\n modelValue.value = clampInputValue(min.value)\n else if (type === 'max' && max.value !== undefined)\n modelValue.value = clampInputValue(max.value)\n}\n\n// Formatter\nconst numberFormatter = useNumberFormatter(locale, formatOptions)\nconst numberParser = useNumberParser(locale, formatOptions)\n\nconst inputMode = computed<HTMLAttributes['inputmode']>(() => {\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n const hasDecimals = numberFormatter.resolvedOptions().maximumFractionDigits! > 0\n\n return hasDecimals ? 'decimal' : 'numeric'\n})\n// Replace negative textValue formatted using currencySign: 'accounting'\n// with a textValue that can be announced using a minus sign.\nconst textValueFormatter = useNumberFormatter(locale, formatOptions)\nconst textValue = computed(() => isNullish(modelValue.value) || isNaN(modelValue.value) ? '' : textValueFormatter.format(modelValue.value))\n\nfunction validate(val: string) {\n return numberParser.isValidPartialNumber(val, min.value, max.value)\n}\n\nfunction setInputValue(val: string) {\n if (inputEl.value)\n inputEl.value.value = val\n}\n\nfunction clampInputValue(val: number) {\n // Clamp to min and max, round to the nearest step, and round to specified number of digits\n let clampedValue: number\n if (step.value === undefined || isNaN(step.value) || !stepSnapping.value)\n clampedValue = clamp(val, min.value, max.value)\n else\n clampedValue = snapValueToStep(val, min.value, max.value, step.value)\n\n clampedValue = numberParser.parse(numberFormatter.format(clampedValue))\n return clampedValue\n}\n\nfunction applyInputValue(val: string) {\n const parsedValue = numberParser.parse(val)\n modelValue.value = isNaN(parsedValue) ? undefined : clampInputValue(parsedValue)\n // Set to empty state if input value is empty\n if (!val.length)\n return setInputValue(val)\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue))\n return setInputValue(textValue.value)\n\n return setInputValue(textValue.value)\n}\n\nprovideNumberFieldRootContext({\n modelValue,\n handleDecrease,\n handleIncrease,\n handleMinMaxValue,\n inputMode,\n inputEl,\n onInputElement: el => inputEl.value = el,\n textValue,\n validate,\n applyInputValue,\n disabled,\n disableWheelChange,\n invertWheelChange,\n max,\n min,\n isDecreaseDisabled,\n isIncreaseDisabled,\n id,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot\n :model-value=\"modelValue\"\n :text-value=\"textValue\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n type=\"text\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useVModel","usePrimitiveElement","useLocale","useFormControl","ref","computed","isNullish","handleDecimalOperation","useNumberFormatter","useNumberParser","clamp","snapValueToStep"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { u as useFormControl } from '../shared/useFormControl.js';
|
|
|
8
8
|
import { c as clamp, s as snapValueToStep } from '../shared/clamp.js';
|
|
9
9
|
import { P as Primitive } from '../Primitive/Primitive.js';
|
|
10
10
|
import { _ as _sfc_main$1 } from '../VisuallyHidden/VisuallyHiddenInput.js';
|
|
11
|
+
import { i as isNullish } from '../shared/nullish.js';
|
|
11
12
|
|
|
12
13
|
const [injectNumberFieldRootContext, provideNumberFieldRootContext] = createContext("NumberFieldRoot");
|
|
13
14
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -26,6 +27,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
26
27
|
locale: {},
|
|
27
28
|
disabled: { type: Boolean },
|
|
28
29
|
disableWheelChange: { type: Boolean },
|
|
30
|
+
invertWheelChange: { type: Boolean },
|
|
29
31
|
id: {},
|
|
30
32
|
asChild: { type: Boolean },
|
|
31
33
|
as: { default: "div" },
|
|
@@ -36,7 +38,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
36
38
|
setup(__props, { emit: __emit }) {
|
|
37
39
|
const props = __props;
|
|
38
40
|
const emits = __emit;
|
|
39
|
-
const { disabled, disableWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = toRefs(props);
|
|
41
|
+
const { disabled, disableWheelChange, invertWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = toRefs(props);
|
|
40
42
|
const modelValue = useVModel(props, "modelValue", emits, {
|
|
41
43
|
defaultValue: props.defaultValue,
|
|
42
44
|
passive: props.modelValue === void 0
|
|
@@ -46,10 +48,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
46
48
|
const isFormControl = useFormControl(currentElement);
|
|
47
49
|
const inputEl = ref();
|
|
48
50
|
const isDecreaseDisabled = computed(
|
|
49
|
-
() => clampInputValue(modelValue.value) === min.value ||
|
|
51
|
+
() => !isNullish(modelValue.value) && (clampInputValue(modelValue.value) === min.value || min.value && !isNaN(modelValue.value) ? handleDecimalOperation("-", modelValue.value, step.value) < min.value : false)
|
|
50
52
|
);
|
|
51
53
|
const isIncreaseDisabled = computed(
|
|
52
|
-
() => clampInputValue(modelValue.value) === max.value ||
|
|
54
|
+
() => !isNullish(modelValue.value) && (clampInputValue(modelValue.value) === max.value || max.value && !isNaN(modelValue.value) ? handleDecimalOperation("+", modelValue.value, step.value) > max.value : false)
|
|
53
55
|
);
|
|
54
56
|
function handleChangingValue(type, multiplier = 1) {
|
|
55
57
|
inputEl.value?.focus();
|
|
@@ -84,7 +86,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
84
86
|
return hasDecimals ? "decimal" : "numeric";
|
|
85
87
|
});
|
|
86
88
|
const textValueFormatter = useNumberFormatter(locale, formatOptions);
|
|
87
|
-
const textValue = computed(() => isNaN(modelValue.value) ? "" : textValueFormatter.format(modelValue.value));
|
|
89
|
+
const textValue = computed(() => isNullish(modelValue.value) || isNaN(modelValue.value) ? "" : textValueFormatter.format(modelValue.value));
|
|
88
90
|
function validate(val) {
|
|
89
91
|
return numberParser.isValidPartialNumber(val, min.value, max.value);
|
|
90
92
|
}
|
|
@@ -103,7 +105,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
103
105
|
}
|
|
104
106
|
function applyInputValue(val) {
|
|
105
107
|
const parsedValue = numberParser.parse(val);
|
|
106
|
-
modelValue.value = clampInputValue(parsedValue);
|
|
108
|
+
modelValue.value = isNaN(parsedValue) ? void 0 : clampInputValue(parsedValue);
|
|
107
109
|
if (!val.length)
|
|
108
110
|
return setInputValue(val);
|
|
109
111
|
if (isNaN(parsedValue))
|
|
@@ -123,6 +125,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
123
125
|
applyInputValue,
|
|
124
126
|
disabled,
|
|
125
127
|
disableWheelChange,
|
|
128
|
+
invertWheelChange,
|
|
126
129
|
max,
|
|
127
130
|
min,
|
|
128
131
|
isDecreaseDisabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberFieldRoot.js","sources":["../../src/NumberField/NumberFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { FormFieldProps } from '@/shared/types'\nimport type { HTMLAttributes, Ref } from 'vue'\nimport { clamp, createContext, snapValueToStep, useFormControl, useLocale } from '@/shared'\nimport { useVModel } from '@vueuse/core'\nimport { computed, ref, toRefs } from 'vue'\n\nexport interface NumberFieldRootProps extends PrimitiveProps, FormFieldProps {\n defaultValue?: number\n modelValue?: number | null\n /** The smallest value allowed for the input. */\n min?: number\n /** The largest value allowed for the input. */\n max?: number\n /** The amount that the input value changes with each increment or decrement \"tick\". */\n step?: number\n /** When `false`, prevents the value from snapping to the nearest increment of the step value */\n stepSnapping?: boolean\n /** Formatting options for the value displayed in the number field. This also affects what characters are allowed to be typed by the user. */\n formatOptions?: Intl.NumberFormatOptions\n /** The locale to use for formatting dates */\n locale?: string\n /** When `true`, prevents the user from interacting with the Number Field. */\n disabled?: boolean\n /** When `true`, prevents the value from changing on wheel scroll. */\n disableWheelChange?: boolean\n /** Id of the element */\n id?: string\n}\n\nexport type NumberFieldRootEmits = {\n 'update:modelValue': [val: number]\n}\n\ninterface NumberFieldRootContext {\n modelValue: Ref<number>\n handleIncrease: (multiplier?: number) => void\n handleDecrease: (multiplier?: number) => void\n handleMinMaxValue: (type: 'min' | 'max') => void\n inputEl: Ref<HTMLInputElement | undefined>\n onInputElement: (el: HTMLInputElement) => void\n inputMode: Ref<HTMLAttributes['inputmode']>\n textValue: Ref<string>\n validate: (val: string) => boolean\n applyInputValue: (val: string) => void\n disabled: Ref<boolean>\n disableWheelChange: Ref<boolean>\n max: Ref<number | undefined>\n min: Ref<number | undefined>\n isDecreaseDisabled: Ref<boolean>\n isIncreaseDisabled: Ref<boolean>\n id: Ref<string | undefined>\n}\n\nexport const [injectNumberFieldRootContext, provideNumberFieldRootContext] = createContext<NumberFieldRootContext>('NumberFieldRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { handleDecimalOperation, useNumberFormatter, useNumberParser } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<NumberFieldRootProps>(), {\n as: 'div',\n defaultValue: undefined,\n step: 1,\n stepSnapping: true,\n})\nconst emits = defineEmits<NumberFieldRootEmits>()\nconst { disabled, disableWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<number>\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst locale = useLocale(propLocale)\nconst isFormControl = useFormControl(currentElement)\nconst inputEl = ref<HTMLInputElement>()\n\nconst isDecreaseDisabled = computed(() => (\n clampInputValue(modelValue.value) === min.value\n || (min.value && !isNaN(modelValue.value) ? (handleDecimalOperation('-', modelValue.value, step.value) < min.value) : false)),\n)\nconst isIncreaseDisabled = computed(() => (\n clampInputValue(modelValue.value) === max.value\n || (max.value && !isNaN(modelValue.value) ? (handleDecimalOperation('+', modelValue.value, step.value) > max.value) : false)),\n)\n\nfunction handleChangingValue(type: 'increase' | 'decrease', multiplier = 1) {\n inputEl.value?.focus()\n const currentInputValue = numberParser.parse(inputEl.value?.value ?? '')\n if (props.disabled)\n return\n if (isNaN(currentInputValue)) {\n modelValue.value = min.value ?? 0\n }\n else {\n if (type === 'increase')\n modelValue.value = clampInputValue(currentInputValue + ((step.value ?? 1) * multiplier))\n else\n modelValue.value = clampInputValue(currentInputValue - ((step.value ?? 1) * multiplier))\n }\n}\n\nfunction handleIncrease(multiplier = 1) {\n handleChangingValue('increase', multiplier)\n}\nfunction handleDecrease(multiplier = 1) {\n handleChangingValue('decrease', multiplier)\n}\n\nfunction handleMinMaxValue(type: 'min' | 'max') {\n if (type === 'min' && min.value !== undefined)\n modelValue.value = clampInputValue(min.value)\n else if (type === 'max' && max.value !== undefined)\n modelValue.value = clampInputValue(max.value)\n}\n\n// Formatter\nconst numberFormatter = useNumberFormatter(locale, formatOptions)\nconst numberParser = useNumberParser(locale, formatOptions)\n\nconst inputMode = computed<HTMLAttributes['inputmode']>(() => {\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n const hasDecimals = numberFormatter.resolvedOptions().maximumFractionDigits! > 0\n\n return hasDecimals ? 'decimal' : 'numeric'\n})\n// Replace negative textValue formatted using currencySign: 'accounting'\n// with a textValue that can be announced using a minus sign.\nconst textValueFormatter = useNumberFormatter(locale, formatOptions)\nconst textValue = computed(() => isNaN(modelValue.value) ? '' : textValueFormatter.format(modelValue.value))\n\nfunction validate(val: string) {\n return numberParser.isValidPartialNumber(val, min.value, max.value)\n}\n\nfunction setInputValue(val: string) {\n if (inputEl.value)\n inputEl.value.value = val\n}\n\nfunction clampInputValue(val: number) {\n // Clamp to min and max, round to the nearest step, and round to specified number of digits\n let clampedValue: number\n if (step.value === undefined || isNaN(step.value) || !stepSnapping.value)\n clampedValue = clamp(val, min.value, max.value)\n else\n clampedValue = snapValueToStep(val, min.value, max.value, step.value)\n\n clampedValue = numberParser.parse(numberFormatter.format(clampedValue))\n return clampedValue\n}\n\nfunction applyInputValue(val: string) {\n const parsedValue = numberParser.parse(val)\n\n modelValue.value = clampInputValue(parsedValue)\n // Set to empty state if input value is empty\n if (!val.length)\n return setInputValue(val)\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue))\n return setInputValue(textValue.value)\n\n return setInputValue(textValue.value)\n}\n\nprovideNumberFieldRootContext({\n modelValue,\n handleDecrease,\n handleIncrease,\n handleMinMaxValue,\n inputMode,\n inputEl,\n onInputElement: el => inputEl.value = el,\n textValue,\n validate,\n applyInputValue,\n disabled,\n disableWheelChange,\n max,\n min,\n isDecreaseDisabled,\n isIncreaseDisabled,\n id,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot\n :model-value=\"modelValue\"\n :text-value=\"textValue\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n type=\"text\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NumberFieldRoot.js","sources":["../../src/NumberField/NumberFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { HTMLAttributes, Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { FormFieldProps } from '@/shared/types'\nimport { useVModel } from '@vueuse/core'\nimport { computed, ref, toRefs } from 'vue'\nimport { clamp, createContext, isNullish, snapValueToStep, useFormControl, useLocale } from '@/shared'\n\nexport interface NumberFieldRootProps extends PrimitiveProps, FormFieldProps {\n defaultValue?: number\n modelValue?: number | null\n /** The smallest value allowed for the input. */\n min?: number\n /** The largest value allowed for the input. */\n max?: number\n /** The amount that the input value changes with each increment or decrement \"tick\". */\n step?: number\n /** When `false`, prevents the value from snapping to the nearest increment of the step value */\n stepSnapping?: boolean\n /** Formatting options for the value displayed in the number field. This also affects what characters are allowed to be typed by the user. */\n formatOptions?: Intl.NumberFormatOptions\n /** The locale to use for formatting dates */\n locale?: string\n /** When `true`, prevents the user from interacting with the Number Field. */\n disabled?: boolean\n /** When `true`, prevents the value from changing on wheel scroll. */\n disableWheelChange?: boolean\n /** When `true`, inverts the direction of the wheel change. */\n invertWheelChange?: boolean\n /** Id of the element */\n id?: string\n}\n\nexport type NumberFieldRootEmits = {\n 'update:modelValue': [val: number]\n}\n\ninterface NumberFieldRootContext {\n modelValue: Ref<number | undefined>\n handleIncrease: (multiplier?: number) => void\n handleDecrease: (multiplier?: number) => void\n handleMinMaxValue: (type: 'min' | 'max') => void\n inputEl: Ref<HTMLInputElement | undefined>\n onInputElement: (el: HTMLInputElement) => void\n inputMode: Ref<HTMLAttributes['inputmode']>\n textValue: Ref<string>\n validate: (val: string) => boolean\n applyInputValue: (val: string) => void\n disabled: Ref<boolean>\n disableWheelChange: Ref<boolean>\n invertWheelChange: Ref<boolean>\n max: Ref<number | undefined>\n min: Ref<number | undefined>\n isDecreaseDisabled: Ref<boolean>\n isIncreaseDisabled: Ref<boolean>\n id: Ref<string | undefined>\n}\n\nexport const [injectNumberFieldRootContext, provideNumberFieldRootContext] = createContext<NumberFieldRootContext>('NumberFieldRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { handleDecimalOperation, useNumberFormatter, useNumberParser } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<NumberFieldRootProps>(), {\n as: 'div',\n defaultValue: undefined,\n step: 1,\n stepSnapping: true,\n})\nconst emits = defineEmits<NumberFieldRootEmits>()\nconst { disabled, disableWheelChange, invertWheelChange, min, max, step, stepSnapping, formatOptions, id, locale: propLocale } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<number | undefined>\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst locale = useLocale(propLocale)\nconst isFormControl = useFormControl(currentElement)\nconst inputEl = ref<HTMLInputElement>()\n\nconst isDecreaseDisabled = computed(() => (\n !isNullish(modelValue.value) && (\n clampInputValue(modelValue.value) === min.value\n || (min.value && !isNaN(modelValue.value)\n )\n ? (handleDecimalOperation('-', modelValue.value, step.value) < min.value)\n : false)),\n)\nconst isIncreaseDisabled = computed(() => (\n !isNullish(modelValue.value) && (\n clampInputValue(modelValue.value) === max.value\n || (max.value && !isNaN(modelValue.value)\n )\n ? (handleDecimalOperation('+', modelValue.value, step.value) > max.value)\n : false)),\n)\n\nfunction handleChangingValue(type: 'increase' | 'decrease', multiplier = 1) {\n inputEl.value?.focus()\n const currentInputValue = numberParser.parse(inputEl.value?.value ?? '')\n if (props.disabled)\n return\n if (isNaN(currentInputValue)) {\n modelValue.value = min.value ?? 0\n }\n else {\n if (type === 'increase')\n modelValue.value = clampInputValue(currentInputValue + ((step.value ?? 1) * multiplier))\n else\n modelValue.value = clampInputValue(currentInputValue - ((step.value ?? 1) * multiplier))\n }\n}\n\nfunction handleIncrease(multiplier = 1) {\n handleChangingValue('increase', multiplier)\n}\nfunction handleDecrease(multiplier = 1) {\n handleChangingValue('decrease', multiplier)\n}\n\nfunction handleMinMaxValue(type: 'min' | 'max') {\n if (type === 'min' && min.value !== undefined)\n modelValue.value = clampInputValue(min.value)\n else if (type === 'max' && max.value !== undefined)\n modelValue.value = clampInputValue(max.value)\n}\n\n// Formatter\nconst numberFormatter = useNumberFormatter(locale, formatOptions)\nconst numberParser = useNumberParser(locale, formatOptions)\n\nconst inputMode = computed<HTMLAttributes['inputmode']>(() => {\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n const hasDecimals = numberFormatter.resolvedOptions().maximumFractionDigits! > 0\n\n return hasDecimals ? 'decimal' : 'numeric'\n})\n// Replace negative textValue formatted using currencySign: 'accounting'\n// with a textValue that can be announced using a minus sign.\nconst textValueFormatter = useNumberFormatter(locale, formatOptions)\nconst textValue = computed(() => isNullish(modelValue.value) || isNaN(modelValue.value) ? '' : textValueFormatter.format(modelValue.value))\n\nfunction validate(val: string) {\n return numberParser.isValidPartialNumber(val, min.value, max.value)\n}\n\nfunction setInputValue(val: string) {\n if (inputEl.value)\n inputEl.value.value = val\n}\n\nfunction clampInputValue(val: number) {\n // Clamp to min and max, round to the nearest step, and round to specified number of digits\n let clampedValue: number\n if (step.value === undefined || isNaN(step.value) || !stepSnapping.value)\n clampedValue = clamp(val, min.value, max.value)\n else\n clampedValue = snapValueToStep(val, min.value, max.value, step.value)\n\n clampedValue = numberParser.parse(numberFormatter.format(clampedValue))\n return clampedValue\n}\n\nfunction applyInputValue(val: string) {\n const parsedValue = numberParser.parse(val)\n modelValue.value = isNaN(parsedValue) ? undefined : clampInputValue(parsedValue)\n // Set to empty state if input value is empty\n if (!val.length)\n return setInputValue(val)\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue))\n return setInputValue(textValue.value)\n\n return setInputValue(textValue.value)\n}\n\nprovideNumberFieldRootContext({\n modelValue,\n handleDecrease,\n handleIncrease,\n handleMinMaxValue,\n inputMode,\n inputEl,\n onInputElement: el => inputEl.value = el,\n textValue,\n validate,\n applyInputValue,\n disabled,\n disableWheelChange,\n invertWheelChange,\n max,\n min,\n isDecreaseDisabled,\n isIncreaseDisabled,\n id,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot\n :model-value=\"modelValue\"\n :text-value=\"textValue\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n type=\"text\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationFirst.cjs","sources":["../../src/Pagination/PaginationFirst.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationFirstProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationFirst.cjs","sources":["../../src/Pagination/PaginationFirst.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationFirstProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationFirstProps>(), { as: 'button' })\n\nconst rootContext = injectPaginationRootContext()\nuseForwardExpose()\n\nconst disabled = computed((): boolean => rootContext.page.value === 1 || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"First Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(1)\"\n >\n <slot>First page</slot>\n </Primitive>\n</template>\n"],"names":["injectPaginationRootContext","useForwardExpose","computed"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAcA,qDAA4B,EAAA;AAChD,IAAiBC,wCAAA,EAAA;AAEjB,IAAM,MAAA,QAAA,GAAWC,aAAS,MAAe,WAAA,CAAY,KAAK,KAAU,KAAA,CAAA,IAAK,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationFirst.js","sources":["../../src/Pagination/PaginationFirst.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationFirstProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationFirst.js","sources":["../../src/Pagination/PaginationFirst.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationFirstProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationFirstProps>(), { as: 'button' })\n\nconst rootContext = injectPaginationRootContext()\nuseForwardExpose()\n\nconst disabled = computed((): boolean => rootContext.page.value === 1 || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"First Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(1)\"\n >\n <slot>First page</slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAChD,IAAiB,gBAAA,EAAA;AAEjB,IAAM,MAAA,QAAA,GAAW,SAAS,MAAe,WAAA,CAAY,KAAK,KAAU,KAAA,CAAA,IAAK,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationLast.cjs","sources":["../../src/Pagination/PaginationLast.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationLastProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationLast.cjs","sources":["../../src/Pagination/PaginationLast.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationLastProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationLastProps>(), { as: 'button' })\n\nconst rootContext = injectPaginationRootContext()\nuseForwardExpose()\n\nconst disabled = computed((): boolean => rootContext.page.value === rootContext.pageCount.value || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"Last Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(rootContext.pageCount.value)\"\n >\n <slot>Last page</slot>\n </Primitive>\n</template>\n"],"names":["injectPaginationRootContext","useForwardExpose","computed"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAcA,qDAA4B,EAAA;AAChD,IAAiBC,wCAAA,EAAA;AAEjB,IAAM,MAAA,QAAA,GAAWC,YAAS,CAAA,MAAe,WAAY,CAAA,IAAA,CAAK,KAAU,KAAA,WAAA,CAAY,SAAU,CAAA,KAAA,IAAS,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationLast.js","sources":["../../src/Pagination/PaginationLast.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationLastProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationLast.js","sources":["../../src/Pagination/PaginationLast.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationLastProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationLastProps>(), { as: 'button' })\n\nconst rootContext = injectPaginationRootContext()\nuseForwardExpose()\n\nconst disabled = computed((): boolean => rootContext.page.value === rootContext.pageCount.value || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"Last Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(rootContext.pageCount.value)\"\n >\n <slot>Last page</slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAChD,IAAiB,gBAAA,EAAA;AAEjB,IAAM,MAAA,QAAA,GAAW,QAAS,CAAA,MAAe,WAAY,CAAA,IAAA,CAAK,KAAU,KAAA,WAAA,CAAY,SAAU,CAAA,KAAA,IAAS,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationList.cjs","sources":["../../src/Pagination/PaginationList.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListProps extends PrimitiveProps { }\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationList.cjs","sources":["../../src/Pagination/PaginationList.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListProps extends PrimitiveProps { }\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\nimport { getRange, transform } from './utils'\n\nconst props = defineProps<PaginationListProps>()\n\ndefineSlots<{\n default?: (props: {\n /** Pages item */\n items: typeof transformedRange.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst rootContext = injectPaginationRootContext()\n\nconst transformedRange = computed(() => {\n return transform(\n getRange(\n rootContext.page.value,\n rootContext.pageCount.value,\n rootContext.siblingCount.value,\n rootContext.showEdges.value,\n ),\n )\n})\n</script>\n\n<template>\n <Primitive v-bind=\"props\">\n <slot :items=\"transformedRange\" />\n </Primitive>\n</template>\n"],"names":["useForwardExpose","injectPaginationRootContext","computed","transform","getRange"],"mappings":";;;;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AASd,IAAiBA,wCAAA,EAAA;AACjB,IAAA,MAAM,cAAcC,qDAA4B,EAAA;AAEhD,IAAM,MAAA,gBAAA,GAAmBC,aAAS,MAAM;AACtC,MAAO,OAAAC,0BAAA;AAAA,QACLC,yBAAA;AAAA,UACE,YAAY,IAAK,CAAA,KAAA;AAAA,UACjB,YAAY,SAAU,CAAA,KAAA;AAAA,UACtB,YAAY,YAAa,CAAA,KAAA;AAAA,UACzB,YAAY,SAAU,CAAA;AAAA;AACxB,OACF;AAAA,KACD,CAAA;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationList.js","sources":["../../src/Pagination/PaginationList.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListProps extends PrimitiveProps { }\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationList.js","sources":["../../src/Pagination/PaginationList.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListProps extends PrimitiveProps { }\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\nimport { getRange, transform } from './utils'\n\nconst props = defineProps<PaginationListProps>()\n\ndefineSlots<{\n default?: (props: {\n /** Pages item */\n items: typeof transformedRange.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst rootContext = injectPaginationRootContext()\n\nconst transformedRange = computed(() => {\n return transform(\n getRange(\n rootContext.page.value,\n rootContext.pageCount.value,\n rootContext.siblingCount.value,\n rootContext.showEdges.value,\n ),\n )\n})\n</script>\n\n<template>\n <Primitive v-bind=\"props\">\n <slot :items=\"transformedRange\" />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AASd,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAEhD,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAO,OAAA,SAAA;AAAA,QACL,QAAA;AAAA,UACE,YAAY,IAAK,CAAA,KAAA;AAAA,UACjB,YAAY,SAAU,CAAA,KAAA;AAAA,UACtB,YAAY,YAAa,CAAA,KAAA;AAAA,UACzB,YAAY,SAAU,CAAA;AAAA;AACxB,OACF;AAAA,KACD,CAAA;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationListItem.cjs","sources":["../../src/Pagination/PaginationListItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListItemProps extends PrimitiveProps {\n /** Value for the page */\n value: number\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationListItem.cjs","sources":["../../src/Pagination/PaginationListItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListItemProps extends PrimitiveProps {\n /** Value for the page */\n value: number\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationListItemProps>(), { as: 'button' })\nuseForwardExpose()\n\nconst rootContext = injectPaginationRootContext()\nconst isSelected = computed(() => rootContext.page.value === props.value)\n\nconst disabled = computed((): boolean => rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n data-type=\"page\"\n :aria-label=\"`Page ${value}`\"\n :aria-current=\"isSelected ? 'page' : undefined\"\n :data-selected=\"isSelected ? 'true' : undefined\"\n :disabled\n :type=\"as === 'button' ? 'button' : undefined\"\n @click=\"!disabled && rootContext.onPageChange(value)\"\n >\n <slot>{{ value }}</slot>\n </Primitive>\n</template>\n"],"names":["useForwardExpose","injectPaginationRootContext","computed"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAiBA,wCAAA,EAAA;AAEjB,IAAA,MAAM,cAAcC,qDAA4B,EAAA;AAChD,IAAA,MAAM,aAAaC,YAAS,CAAA,MAAM,YAAY,IAAK,CAAA,KAAA,KAAU,MAAM,KAAK,CAAA;AAExE,IAAA,MAAM,QAAW,GAAAA,YAAA,CAAS,MAAe,WAAA,CAAY,SAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationListItem.js","sources":["../../src/Pagination/PaginationListItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListItemProps extends PrimitiveProps {\n /** Value for the page */\n value: number\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationListItem.js","sources":["../../src/Pagination/PaginationListItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationListItemProps extends PrimitiveProps {\n /** Value for the page */\n value: number\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationListItemProps>(), { as: 'button' })\nuseForwardExpose()\n\nconst rootContext = injectPaginationRootContext()\nconst isSelected = computed(() => rootContext.page.value === props.value)\n\nconst disabled = computed((): boolean => rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n data-type=\"page\"\n :aria-label=\"`Page ${value}`\"\n :aria-current=\"isSelected ? 'page' : undefined\"\n :data-selected=\"isSelected ? 'true' : undefined\"\n :disabled\n :type=\"as === 'button' ? 'button' : undefined\"\n @click=\"!disabled && rootContext.onPageChange(value)\"\n >\n <slot>{{ value }}</slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAiB,gBAAA,EAAA;AAEjB,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAChD,IAAA,MAAM,aAAa,QAAS,CAAA,MAAM,YAAY,IAAK,CAAA,KAAA,KAAU,MAAM,KAAK,CAAA;AAExE,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAe,WAAA,CAAY,SAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationNext.cjs","sources":["../../src/Pagination/PaginationNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationNextProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationNext.cjs","sources":["../../src/Pagination/PaginationNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationNextProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationNextProps>(), { as: 'button' })\n\nuseForwardExpose()\nconst rootContext = injectPaginationRootContext()\n\nconst disabled = computed((): boolean => rootContext.page.value === rootContext.pageCount.value || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"Next Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(rootContext.page.value + 1)\"\n >\n <slot>Next page</slot>\n </Primitive>\n</template>\n"],"names":["useForwardExpose","injectPaginationRootContext","computed"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAiBA,wCAAA,EAAA;AACjB,IAAA,MAAM,cAAcC,qDAA4B,EAAA;AAEhD,IAAM,MAAA,QAAA,GAAWC,YAAS,CAAA,MAAe,WAAY,CAAA,IAAA,CAAK,KAAU,KAAA,WAAA,CAAY,SAAU,CAAA,KAAA,IAAS,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationNext.js","sources":["../../src/Pagination/PaginationNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationNextProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationNext.js","sources":["../../src/Pagination/PaginationNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationNextProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationNextProps>(), { as: 'button' })\n\nuseForwardExpose()\nconst rootContext = injectPaginationRootContext()\n\nconst disabled = computed((): boolean => rootContext.page.value === rootContext.pageCount.value || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"Next Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(rootContext.page.value + 1)\"\n >\n <slot>Next page</slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAEhD,IAAM,MAAA,QAAA,GAAW,QAAS,CAAA,MAAe,WAAY,CAAA,IAAA,CAAK,KAAU,KAAA,WAAA,CAAY,SAAU,CAAA,KAAA,IAAS,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationPrev.cjs","sources":["../../src/Pagination/PaginationPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationPrevProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationPrev.cjs","sources":["../../src/Pagination/PaginationPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationPrevProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationPrevProps>(), { as: 'button' })\n\nuseForwardExpose()\nconst rootContext = injectPaginationRootContext()\n\nconst disabled = computed((): boolean => rootContext.page.value === 1 || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"Previous Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(rootContext.page.value - 1)\"\n >\n <slot>Prev page</slot>\n </Primitive>\n</template>\n"],"names":["useForwardExpose","injectPaginationRootContext","computed"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAiBA,wCAAA,EAAA;AACjB,IAAA,MAAM,cAAcC,qDAA4B,EAAA;AAEhD,IAAM,MAAA,QAAA,GAAWC,aAAS,MAAe,WAAA,CAAY,KAAK,KAAU,KAAA,CAAA,IAAK,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationPrev.js","sources":["../../src/Pagination/PaginationPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationPrevProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport {
|
|
1
|
+
{"version":3,"file":"PaginationPrev.js","sources":["../../src/Pagination/PaginationPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface PaginationPrevProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPaginationRootContext } from './PaginationRoot.vue'\n\nconst props = withDefaults(defineProps<PaginationPrevProps>(), { as: 'button' })\n\nuseForwardExpose()\nconst rootContext = injectPaginationRootContext()\n\nconst disabled = computed((): boolean => rootContext.page.value === 1 || rootContext.disabled.value)\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n aria-label=\"Previous Page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :disabled\n @click=\"!disabled && rootContext.onPageChange(rootContext.page.value - 1)\"\n >\n <slot>Prev page</slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAEhD,IAAM,MAAA,QAAA,GAAW,SAAS,MAAe,WAAA,CAAY,KAAK,KAAU,KAAA,CAAA,IAAK,WAAY,CAAA,QAAA,CAAS,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationRoot.cjs","sources":["../../src/Pagination/PaginationRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"PaginationRoot.cjs","sources":["../../src/Pagination/PaginationRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useForwardExpose } from '@/shared'\n\ntype PaginationRootContext = {\n page: Ref<number>\n onPageChange: (value: number) => void\n pageCount: Ref<number>\n siblingCount: Ref<number>\n disabled: Ref<boolean>\n showEdges: Ref<boolean>\n}\n\nexport interface PaginationRootProps extends PrimitiveProps {\n /** The controlled value of the current page. Can be binded as `v-model:page`. */\n page?: number\n /**\n * The value of the page that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\n defaultPage?: number\n /** Number of items per page */\n itemsPerPage: number\n /** Number of items in your list */\n total?: number\n /** Number of sibling should be shown around the current page */\n siblingCount?: number\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n /** When `true`, always show first page, last page, and ellipsis */\n showEdges?: boolean\n}\n\nexport type PaginationRootEmits = {\n /** Event handler called when the page value changes */\n 'update:page': [value: number]\n}\n\nexport const [injectPaginationRootContext, providePaginationRootContext]\n = createContext<PaginationRootContext>('PaginationRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { computed, toRefs } from 'vue'\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<PaginationRootProps>(), {\n as: 'nav',\n total: 0,\n siblingCount: 2,\n defaultPage: 1,\n showEdges: false,\n})\nconst emits = defineEmits<PaginationRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current page state */\n page: typeof page.value\n /** Number of pages */\n pageCount: typeof pageCount.value\n }) => any\n}>()\n\nconst { siblingCount, disabled, showEdges } = toRefs(props)\n\nuseForwardExpose()\nconst page = useVModel(props, 'page', emits, {\n defaultValue: props.defaultPage,\n passive: (props.page === undefined) as false,\n}) as Ref<number>\n\nconst pageCount = computed(() => Math.max(1, Math.ceil(props.total / (props.itemsPerPage || 1))))\n\nprovidePaginationRootContext({\n page,\n onPageChange(value) {\n page.value = value\n },\n pageCount,\n siblingCount,\n disabled,\n showEdges,\n})\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n >\n <slot\n :page=\"page\"\n :page-count=\"pageCount\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useForwardExpose","useVModel","computed"],"mappings":";;;;;;;;AAwCO,MAAM,CAAC,2BAAA,EAA6B,4BAA4B,CAAA,GACnEA,mCAAqC,gBAAgB;;;;;;;;;;;;;;;;AAQzD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAOd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAWd,IAAA,MAAM,EAAE,YAAc,EAAA,QAAA,EAAU,SAAU,EAAA,GAAIC,WAAO,KAAK,CAAA;AAE1D,IAAiBC,wCAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA;AAAA,MAC3C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,SAAY,GAAAC,YAAA,CAAS,MAAM,IAAA,CAAK,IAAI,CAAG,EAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,KAAS,IAAA,KAAA,CAAM,YAAgB,IAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAEhG,IAA6B,4BAAA,CAAA;AAAA,MAC3B,IAAA;AAAA,MACA,aAAa,KAAO,EAAA;AAClB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationRoot.js","sources":["../../src/Pagination/PaginationRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {
|
|
1
|
+
{"version":3,"file":"PaginationRoot.js","sources":["../../src/Pagination/PaginationRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useForwardExpose } from '@/shared'\n\ntype PaginationRootContext = {\n page: Ref<number>\n onPageChange: (value: number) => void\n pageCount: Ref<number>\n siblingCount: Ref<number>\n disabled: Ref<boolean>\n showEdges: Ref<boolean>\n}\n\nexport interface PaginationRootProps extends PrimitiveProps {\n /** The controlled value of the current page. Can be binded as `v-model:page`. */\n page?: number\n /**\n * The value of the page that should be active when initially rendered.\n *\n * Use when you do not need to control the value state.\n */\n defaultPage?: number\n /** Number of items per page */\n itemsPerPage: number\n /** Number of items in your list */\n total?: number\n /** Number of sibling should be shown around the current page */\n siblingCount?: number\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n /** When `true`, always show first page, last page, and ellipsis */\n showEdges?: boolean\n}\n\nexport type PaginationRootEmits = {\n /** Event handler called when the page value changes */\n 'update:page': [value: number]\n}\n\nexport const [injectPaginationRootContext, providePaginationRootContext]\n = createContext<PaginationRootContext>('PaginationRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { computed, toRefs } from 'vue'\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<PaginationRootProps>(), {\n as: 'nav',\n total: 0,\n siblingCount: 2,\n defaultPage: 1,\n showEdges: false,\n})\nconst emits = defineEmits<PaginationRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current page state */\n page: typeof page.value\n /** Number of pages */\n pageCount: typeof pageCount.value\n }) => any\n}>()\n\nconst { siblingCount, disabled, showEdges } = toRefs(props)\n\nuseForwardExpose()\nconst page = useVModel(props, 'page', emits, {\n defaultValue: props.defaultPage,\n passive: (props.page === undefined) as false,\n}) as Ref<number>\n\nconst pageCount = computed(() => Math.max(1, Math.ceil(props.total / (props.itemsPerPage || 1))))\n\nprovidePaginationRootContext({\n page,\n onPageChange(value) {\n page.value = value\n },\n pageCount,\n siblingCount,\n disabled,\n showEdges,\n})\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n >\n <slot\n :page=\"page\"\n :page-count=\"pageCount\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;AAwCO,MAAM,CAAC,2BAAA,EAA6B,4BAA4B,CAAA,GACnE,cAAqC,gBAAgB;;;;;;;;;;;;;;;;AAQzD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAOd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAWd,IAAA,MAAM,EAAE,YAAc,EAAA,QAAA,EAAU,SAAU,EAAA,GAAI,OAAO,KAAK,CAAA;AAE1D,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA;AAAA,MAC3C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,SAAY,GAAA,QAAA,CAAS,MAAM,IAAA,CAAK,IAAI,CAAG,EAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,KAAS,IAAA,KAAA,CAAM,YAAgB,IAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAEhG,IAA6B,4BAAA,CAAA;AAAA,MAC3B,IAAA;AAAA,MACA,aAAa,KAAO,EAAA;AAClB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -119,7 +119,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
119
119
|
}
|
|
120
120
|
function updateModelValueAt(index, value) {
|
|
121
121
|
const tempModelValue = [...context.currentModelValue.value];
|
|
122
|
-
tempModelValue[index] = value;
|
|
122
|
+
tempModelValue[index] = isNumericMode.value ? +value : value;
|
|
123
123
|
context.modelValue.value = removeTrailingEmptyStrings(tempModelValue);
|
|
124
124
|
}
|
|
125
125
|
vue.watch(currentValue, () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinInputInput.cjs","sources":["../../src/PinInput/PinInputInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { getActiveElement, useArrowNavigation } from '@/shared'\nimport { injectPinInputRootContext } from './PinInputRoot.vue'\n\nexport interface PinInputInputProps extends PrimitiveProps {\n /** Position of the value this input binds to. */\n index: number\n /** When `true`, prevents the user from interacting with the pin input */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, watch } from 'vue'\n\nconst props = withDefaults(defineProps<PinInputInputProps>(), {\n as: 'input',\n})\n\nconst context = injectPinInputRootContext()\nconst inputElements = computed(() => Array.from(context.inputElements!.value))\nconst currentValue = computed(() => context.currentModelValue.value[props.index])\n\nconst disabled = computed(() => props.disabled || context.disabled.value)\nconst isOtpMode = computed(() => context.otp.value)\nconst isNumericMode = computed(() => context.type.value === 'number')\nconst isPasswordMode = computed(() => context.mask.value)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nfunction handleInput(event: InputEvent) {\n const target = event.target as HTMLInputElement\n\n if ((event.data?.length ?? 0) > 1) {\n handleMultipleCharacter(target.value)\n return\n }\n\n if (isNumericMode.value && !/^\\d*$/.test(target.value)) {\n target.value = target.value.replace(/\\D/g, '')\n return\n }\n\n target.value = target.value.slice(-1)\n updateModelValueAt(props.index, target.value)\n\n const nextEl = inputElements.value[props.index + 1]\n if (nextEl)\n nextEl.focus()\n}\n\nfunction resetPlaceholder() {\n const target = currentElement.value as HTMLInputElement\n nextTick(() => {\n if (target && !target.value)\n target.placeholder = context.placeholder.value\n })\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n useArrowNavigation(event, getActiveElement() as HTMLElement, undefined, {\n itemsArray: inputElements.value,\n focus: true,\n loop: false,\n arrowKeyOptions: 'horizontal',\n dir: context.dir.value,\n })\n}\n\nfunction handleBackspace(event: KeyboardEvent) {\n event.preventDefault()\n const target = event.target as HTMLInputElement\n const value = target.value\n\n if (value) {\n updateModelValueAt(props.index, '')\n }\n else {\n const prevEl = inputElements.value[props.index - 1]\n if (prevEl) {\n prevEl.focus()\n updateModelValueAt(props.index - 1, '')\n }\n }\n}\n\nfunction handleDelete(event: KeyboardEvent) {\n if (event.key === 'Delete') {\n event.preventDefault()\n updateModelValueAt(props.index, '')\n }\n}\n\nfunction handleFocus(event: FocusEvent) {\n const target = event.target as HTMLInputElement\n target.setSelectionRange(1, 1)\n\n if (!target.value)\n target.placeholder = ''\n}\n\nfunction handleBlur(event: FocusEvent) {\n resetPlaceholder()\n}\n\nfunction handlePaste(event: ClipboardEvent) {\n event.preventDefault()\n const clipboardData = event.clipboardData\n if (!clipboardData)\n return\n\n const values = clipboardData.getData('text')\n handleMultipleCharacter(values)\n}\n\nfunction handleMultipleCharacter(values: string) {\n const tempModelValue = [...context.currentModelValue.value]\n const initialIndex = values.length >= inputElements.value.length ? 0 : props.index\n const lastIndex = Math.min(initialIndex + values.length, inputElements.value.length)\n for (let i = initialIndex; i < lastIndex; i++) {\n const input = inputElements.value[i]\n const value = values[i - initialIndex]\n if (isNumericMode.value && !/^\\d*$/.test(value))\n continue\n\n tempModelValue[i] = value\n input.focus()\n }\n context.modelValue.value = tempModelValue\n inputElements.value[lastIndex]?.focus()\n}\n\nfunction removeTrailingEmptyStrings(input: string[]) {\n let i = input.length - 1\n\n while (i >= 0 && input[i] === '') {\n input.pop()\n i--\n }\n\n return input\n}\n\nfunction updateModelValueAt(index: number, value: string) {\n const tempModelValue = [...context.currentModelValue.value]\n tempModelValue[index] = value\n context.modelValue.value = removeTrailingEmptyStrings(tempModelValue)\n}\n\nwatch(currentValue, () => {\n if (!currentValue.value) {\n resetPlaceholder()\n }\n})\n\nonMounted(() => {\n context.onInputElementChange(currentElement.value as HTMLInputElement)\n})\nonUnmounted(() => {\n context.inputElements?.value.delete(currentElement.value as HTMLInputElement)\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n autocapitalize=\"none\"\n :as=\"as\"\n :as-child=\"asChild\"\n :autocomplete=\"isOtpMode ? 'one-time-code' : 'false'\"\n :type=\"isPasswordMode ? 'password' : 'text'\"\n :inputmode=\"isNumericMode ? 'numeric' : 'text'\"\n :pattern=\"isNumericMode ? '[0-9]*' : undefined\"\n :placeholder=\"context.placeholder.value\"\n :value=\"currentValue\"\n :disabled=\"disabled\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-complete=\"context.isCompleted.value ? '' : undefined\"\n :aria-label=\"`pin input ${index + 1} of ${inputElements.length}`\"\n @input=\"handleInput($event as InputEvent)\"\n @keydown.left.right.up.down.home.end=\"handleKeydown\"\n @keydown.backspace=\"handleBackspace\"\n @keydown.delete=\"handleDelete\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @paste=\"handlePaste\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["injectPinInputRootContext","computed","usePrimitiveElement","nextTick","useArrowNavigation","getActiveElement","watch","onMounted","onUnmounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PinInputInput.cjs","sources":["../../src/PinInput/PinInputInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PinInputValue } from './PinInputRoot.vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { getActiveElement, useArrowNavigation } from '@/shared'\nimport { injectPinInputRootContext } from './PinInputRoot.vue'\n\nexport interface PinInputInputProps extends PrimitiveProps {\n /** Position of the value this input binds to. */\n index: number\n /** When `true`, prevents the user from interacting with the pin input */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, watch } from 'vue'\n\nconst props = withDefaults(defineProps<PinInputInputProps>(), {\n as: 'input',\n})\n\nconst context = injectPinInputRootContext()\nconst inputElements = computed(() => Array.from(context.inputElements!.value))\nconst currentValue = computed(() => context.currentModelValue.value[props.index])\n\nconst disabled = computed(() => props.disabled || context.disabled.value)\nconst isOtpMode = computed(() => context.otp.value)\nconst isNumericMode = computed(() => context.type.value === 'number')\nconst isPasswordMode = computed(() => context.mask.value)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nfunction handleInput(event: InputEvent) {\n const target = event.target as HTMLInputElement\n\n if ((event.data?.length ?? 0) > 1) {\n handleMultipleCharacter(target.value)\n return\n }\n\n if (isNumericMode.value && !/^\\d*$/.test(target.value)) {\n target.value = target.value.replace(/\\D/g, '')\n return\n }\n\n target.value = target.value.slice(-1)\n updateModelValueAt(props.index, target.value)\n\n const nextEl = inputElements.value[props.index + 1]\n if (nextEl)\n nextEl.focus()\n}\n\nfunction resetPlaceholder() {\n const target = currentElement.value as HTMLInputElement\n nextTick(() => {\n if (target && !target.value)\n target.placeholder = context.placeholder.value\n })\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n useArrowNavigation(event, getActiveElement() as HTMLElement, undefined, {\n itemsArray: inputElements.value,\n focus: true,\n loop: false,\n arrowKeyOptions: 'horizontal',\n dir: context.dir.value,\n })\n}\n\nfunction handleBackspace(event: KeyboardEvent) {\n event.preventDefault()\n const target = event.target as HTMLInputElement\n const value = target.value\n\n if (value) {\n updateModelValueAt(props.index, '')\n }\n else {\n const prevEl = inputElements.value[props.index - 1]\n if (prevEl) {\n prevEl.focus()\n updateModelValueAt(props.index - 1, '')\n }\n }\n}\n\nfunction handleDelete(event: KeyboardEvent) {\n if (event.key === 'Delete') {\n event.preventDefault()\n updateModelValueAt(props.index, '')\n }\n}\n\nfunction handleFocus(event: FocusEvent) {\n const target = event.target as HTMLInputElement\n target.setSelectionRange(1, 1)\n\n if (!target.value)\n target.placeholder = ''\n}\n\nfunction handleBlur(event: FocusEvent) {\n resetPlaceholder()\n}\n\nfunction handlePaste(event: ClipboardEvent) {\n event.preventDefault()\n const clipboardData = event.clipboardData\n if (!clipboardData)\n return\n\n const values = clipboardData.getData('text')\n handleMultipleCharacter(values)\n}\n\nfunction handleMultipleCharacter(values: string) {\n const tempModelValue = [...context.currentModelValue.value] as PinInputValue<typeof context.type.value>\n const initialIndex = values.length >= inputElements.value.length ? 0 : props.index\n const lastIndex = Math.min(initialIndex + values.length, inputElements.value.length)\n for (let i = initialIndex; i < lastIndex; i++) {\n const input = inputElements.value[i]\n const value = values[i - initialIndex]\n if (isNumericMode.value && !/^\\d*$/.test(value))\n continue\n\n tempModelValue[i] = value\n input.focus()\n }\n context.modelValue.value = tempModelValue\n inputElements.value[lastIndex]?.focus()\n}\n\nfunction removeTrailingEmptyStrings(input: PinInputValue<typeof context.type.value>) {\n let i = input.length - 1\n\n while (i >= 0 && input[i] === '') {\n input.pop()\n i--\n }\n\n return input\n}\n\nfunction updateModelValueAt(index: number, value: string) {\n const tempModelValue = [...context.currentModelValue.value] as PinInputValue<typeof context.type.value>\n tempModelValue[index] = isNumericMode.value ? +value : value\n context.modelValue.value = removeTrailingEmptyStrings(tempModelValue)\n}\n\nwatch(currentValue, () => {\n if (!currentValue.value) {\n resetPlaceholder()\n }\n})\n\nonMounted(() => {\n context.onInputElementChange(currentElement.value as HTMLInputElement)\n})\nonUnmounted(() => {\n context.inputElements?.value.delete(currentElement.value as HTMLInputElement)\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n autocapitalize=\"none\"\n :as=\"as\"\n :as-child=\"asChild\"\n :autocomplete=\"isOtpMode ? 'one-time-code' : 'false'\"\n :type=\"isPasswordMode ? 'password' : 'text'\"\n :inputmode=\"isNumericMode ? 'numeric' : 'text'\"\n :pattern=\"isNumericMode ? '[0-9]*' : undefined\"\n :placeholder=\"context.placeholder.value\"\n :value=\"currentValue\"\n :disabled=\"disabled\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-complete=\"context.isCompleted.value ? '' : undefined\"\n :aria-label=\"`pin input ${index + 1} of ${inputElements.length}`\"\n @input=\"handleInput($event as InputEvent)\"\n @keydown.left.right.up.down.home.end=\"handleKeydown\"\n @keydown.backspace=\"handleBackspace\"\n @keydown.delete=\"handleDelete\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @paste=\"handlePaste\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["injectPinInputRootContext","computed","usePrimitiveElement","nextTick","useArrowNavigation","getActiveElement","watch","onMounted","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,UAAUA,+CAA0B,EAAA;AAC1C,IAAM,MAAA,aAAA,GAAgBC,aAAS,MAAM,KAAA,CAAM,KAAK,OAAQ,CAAA,aAAA,CAAe,KAAK,CAAC,CAAA;AAC7E,IAAM,MAAA,YAAA,GAAeA,aAAS,MAAM,OAAA,CAAQ,kBAAkB,KAAM,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAEhF,IAAA,MAAM,WAAWA,YAAS,CAAA,MAAM,MAAM,QAAY,IAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACxE,IAAA,MAAM,SAAY,GAAAA,YAAA,CAAS,MAAM,OAAA,CAAQ,IAAI,KAAK,CAAA;AAClD,IAAA,MAAM,gBAAgBA,YAAS,CAAA,MAAM,OAAQ,CAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACpE,IAAA,MAAM,cAAiB,GAAAA,YAAA,CAAS,MAAM,OAAA,CAAQ,KAAK,KAAK,CAAA;AAExD,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAIC,iDAAoB,EAAA;AACjE,IAAA,SAAS,YAAY,KAAmB,EAAA;AACtC,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AAErB,MAAA,IAAA,CAAK,KAAM,CAAA,IAAA,EAAM,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACjC,QAAA,uBAAA,CAAwB,OAAO,KAAK,CAAA;AACpC,QAAA;AAAA;AAGF,MAAA,IAAI,cAAc,KAAS,IAAA,CAAC,QAAQ,IAAK,CAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACtD,QAAA,MAAA,CAAO,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7C,QAAA;AAAA;AAGF,MAAA,MAAA,CAAO,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,KAAA,CAAM,EAAE,CAAA;AACpC,MAAmB,kBAAA,CAAA,KAAA,CAAM,KAAO,EAAA,MAAA,CAAO,KAAK,CAAA;AAE5C,MAAA,MAAM,MAAS,GAAA,aAAA,CAAc,KAAM,CAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAClD,MAAI,IAAA,MAAA;AACF,QAAA,MAAA,CAAO,KAAM,EAAA;AAAA;AAGjB,IAAA,SAAS,gBAAmB,GAAA;AAC1B,MAAA,MAAM,SAAS,cAAe,CAAA,KAAA;AAC9B,MAAAC,YAAA,CAAS,MAAM;AACb,QAAI,IAAA,MAAA,IAAU,CAAC,MAAO,CAAA,KAAA;AACpB,UAAO,MAAA,CAAA,WAAA,GAAc,QAAQ,WAAY,CAAA,KAAA;AAAA,OAC5C,CAAA;AAAA;AAGH,IAAA,SAAS,cAAc,KAAsB,EAAA;AAC3C,MAAmBC,4CAAA,CAAA,KAAA,EAAOC,wCAAiB,EAAA,EAAkB,MAAW,EAAA;AAAA,QACtE,YAAY,aAAc,CAAA,KAAA;AAAA,QAC1B,KAAO,EAAA,IAAA;AAAA,QACP,IAAM,EAAA,KAAA;AAAA,QACN,eAAiB,EAAA,YAAA;AAAA,QACjB,GAAA,EAAK,QAAQ,GAAI,CAAA;AAAA,OAClB,CAAA;AAAA;AAGH,IAAA,SAAS,gBAAgB,KAAsB,EAAA;AAC7C,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,MAAA,MAAM,QAAQ,MAAO,CAAA,KAAA;AAErB,MAAA,IAAI,KAAO,EAAA;AACT,QAAmB,kBAAA,CAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAAA,OAE/B,MAAA;AACH,QAAA,MAAM,MAAS,GAAA,aAAA,CAAc,KAAM,CAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAClD,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,MAAA,CAAO,KAAM,EAAA;AACb,UAAmB,kBAAA,CAAA,KAAA,CAAM,KAAQ,GAAA,CAAA,EAAG,EAAE,CAAA;AAAA;AACxC;AACF;AAGF,IAAA,SAAS,aAAa,KAAsB,EAAA;AAC1C,MAAI,IAAA,KAAA,CAAM,QAAQ,QAAU,EAAA;AAC1B,QAAA,KAAA,CAAM,cAAe,EAAA;AACrB,QAAmB,kBAAA,CAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAAA;AACpC;AAGF,IAAA,SAAS,YAAY,KAAmB,EAAA;AACtC,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,MAAO,MAAA,CAAA,iBAAA,CAAkB,GAAG,CAAC,CAAA;AAE7B,MAAA,IAAI,CAAC,MAAO,CAAA,KAAA;AACV,QAAA,MAAA,CAAO,WAAc,GAAA,EAAA;AAAA;AAGzB,IAAA,SAAS,WAAW,KAAmB,EAAA;AACrC,MAAiB,gBAAA,EAAA;AAAA;AAGnB,IAAA,SAAS,YAAY,KAAuB,EAAA;AAC1C,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,MAAM,gBAAgB,KAAM,CAAA,aAAA;AAC5B,MAAA,IAAI,CAAC,aAAA;AACH,QAAA;AAEF,MAAM,MAAA,MAAA,GAAS,aAAc,CAAA,OAAA,CAAQ,MAAM,CAAA;AAC3C,MAAA,uBAAA,CAAwB,MAAM,CAAA;AAAA;AAGhC,IAAA,SAAS,wBAAwB,MAAgB,EAAA;AAC/C,MAAA,MAAM,cAAiB,GAAA,CAAC,GAAG,OAAA,CAAQ,kBAAkB,KAAK,CAAA;AAC1D,MAAA,MAAM,eAAe,MAAO,CAAA,MAAA,IAAU,cAAc,KAAM,CAAA,MAAA,GAAS,IAAI,KAAM,CAAA,KAAA;AAC7E,MAAM,MAAA,SAAA,GAAY,KAAK,GAAI,CAAA,YAAA,GAAe,OAAO,MAAQ,EAAA,aAAA,CAAc,MAAM,MAAM,CAAA;AACnF,MAAA,KAAA,IAAS,CAAI,GAAA,YAAA,EAAc,CAAI,GAAA,SAAA,EAAW,CAAK,EAAA,EAAA;AAC7C,QAAM,MAAA,KAAA,GAAQ,aAAc,CAAA,KAAA,CAAM,CAAC,CAAA;AACnC,QAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,CAAA,GAAI,YAAY,CAAA;AACrC,QAAA,IAAI,aAAc,CAAA,KAAA,IAAS,CAAC,OAAA,CAAQ,KAAK,KAAK,CAAA;AAC5C,UAAA;AAEF,QAAA,cAAA,CAAe,CAAC,CAAI,GAAA,KAAA;AACpB,QAAA,KAAA,CAAM,KAAM,EAAA;AAAA;AAEd,MAAA,OAAA,CAAQ,WAAW,KAAQ,GAAA,cAAA;AAC3B,MAAc,aAAA,CAAA,KAAA,CAAM,SAAS,CAAA,EAAG,KAAM,EAAA;AAAA;AAGxC,IAAA,SAAS,2BAA2B,KAAiD,EAAA;AACnF,MAAI,IAAA,CAAA,GAAI,MAAM,MAAS,GAAA,CAAA;AAEvB,MAAA,OAAO,CAAK,IAAA,CAAA,IAAK,KAAM,CAAA,CAAC,MAAM,EAAI,EAAA;AAChC,QAAA,KAAA,CAAM,GAAI,EAAA;AACV,QAAA,CAAA,EAAA;AAAA;AAGF,MAAO,OAAA,KAAA;AAAA;AAGT,IAAS,SAAA,kBAAA,CAAmB,OAAe,KAAe,EAAA;AACxD,MAAA,MAAM,cAAiB,GAAA,CAAC,GAAG,OAAA,CAAQ,kBAAkB,KAAK,CAAA;AAC1D,MAAA,cAAA,CAAe,KAAK,CAAA,GAAI,aAAc,CAAA,KAAA,GAAQ,CAAC,KAAQ,GAAA,KAAA;AACvD,MAAQ,OAAA,CAAA,UAAA,CAAW,KAAQ,GAAA,0BAAA,CAA2B,cAAc,CAAA;AAAA;AAGtE,IAAAC,SAAA,CAAM,cAAc,MAAM;AACxB,MAAI,IAAA,CAAC,aAAa,KAAO,EAAA;AACvB,QAAiB,gBAAA,EAAA;AAAA;AACnB,KACD,CAAA;AAED,IAAAC,aAAA,CAAU,MAAM;AACd,MAAQ,OAAA,CAAA,oBAAA,CAAqB,eAAe,KAAyB,CAAA;AAAA,KACtE,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,OAAA,CAAQ,aAAe,EAAA,KAAA,CAAM,MAAO,CAAA,cAAA,CAAe,KAAyB,CAAA;AAAA,KAC7E,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|