reka-ui 2.8.2 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Autocomplete/AutocompleteInput.cjs +128 -0
- package/dist/Autocomplete/AutocompleteInput.cjs.map +1 -0
- package/dist/Autocomplete/AutocompleteInput.js +122 -0
- package/dist/Autocomplete/AutocompleteInput.js.map +1 -0
- package/dist/Autocomplete/AutocompleteRoot.cjs +258 -0
- package/dist/Autocomplete/AutocompleteRoot.cjs.map +1 -0
- package/dist/Autocomplete/AutocompleteRoot.js +246 -0
- package/dist/Autocomplete/AutocompleteRoot.js.map +1 -0
- package/dist/Calendar/CalendarCellTrigger.cjs +8 -5
- package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.js +9 -6
- package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
- package/dist/Calendar/CalendarGrid.cjs +3 -3
- package/dist/Calendar/CalendarGrid.cjs.map +1 -1
- package/dist/Calendar/CalendarGrid.js +4 -4
- package/dist/Calendar/CalendarGrid.js.map +1 -1
- package/dist/Calendar/CalendarNext.cjs +7 -3
- package/dist/Calendar/CalendarNext.cjs.map +1 -1
- package/dist/Calendar/CalendarNext.js +7 -3
- package/dist/Calendar/CalendarNext.js.map +1 -1
- package/dist/Calendar/CalendarPrev.cjs +7 -3
- package/dist/Calendar/CalendarPrev.cjs.map +1 -1
- package/dist/Calendar/CalendarPrev.js +7 -3
- package/dist/Calendar/CalendarPrev.js.map +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.cjs +1 -1
- package/dist/Checkbox/CheckboxGroupRoot.js +1 -1
- package/dist/Checkbox/CheckboxRoot.cjs +21 -10
- package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
- package/dist/Checkbox/CheckboxRoot.js +21 -10
- package/dist/Checkbox/CheckboxRoot.js.map +1 -1
- package/dist/ColorArea/ColorAreaArea.cjs +143 -0
- package/dist/ColorArea/ColorAreaArea.cjs.map +1 -0
- package/dist/ColorArea/ColorAreaArea.js +137 -0
- package/dist/ColorArea/ColorAreaArea.js.map +1 -0
- package/dist/ColorArea/ColorAreaRoot.cjs +240 -0
- package/dist/ColorArea/ColorAreaRoot.cjs.map +1 -0
- package/dist/ColorArea/ColorAreaRoot.js +228 -0
- package/dist/ColorArea/ColorAreaRoot.js.map +1 -0
- package/dist/ColorArea/ColorAreaThumb.cjs +91 -0
- package/dist/ColorArea/ColorAreaThumb.cjs.map +1 -0
- package/dist/ColorArea/ColorAreaThumb.js +85 -0
- package/dist/ColorArea/ColorAreaThumb.js.map +1 -0
- package/dist/ColorArea/utils.cjs +32 -0
- package/dist/ColorArea/utils.cjs.map +1 -0
- package/dist/ColorArea/utils.js +21 -0
- package/dist/ColorArea/utils.js.map +1 -0
- package/dist/ColorField/ColorFieldInput.cjs +140 -0
- package/dist/ColorField/ColorFieldInput.cjs.map +1 -0
- package/dist/ColorField/ColorFieldInput.js +134 -0
- package/dist/ColorField/ColorFieldInput.js.map +1 -0
- package/dist/ColorField/ColorFieldRoot.cjs +281 -0
- package/dist/ColorField/ColorFieldRoot.cjs.map +1 -0
- package/dist/ColorField/ColorFieldRoot.js +269 -0
- package/dist/ColorField/ColorFieldRoot.js.map +1 -0
- package/dist/ColorSlider/ColorSliderRoot.cjs +230 -0
- package/dist/ColorSlider/ColorSliderRoot.cjs.map +1 -0
- package/dist/ColorSlider/ColorSliderRoot.js +218 -0
- package/dist/ColorSlider/ColorSliderRoot.js.map +1 -0
- package/dist/ColorSlider/ColorSliderThumb.cjs +66 -0
- package/dist/ColorSlider/ColorSliderThumb.cjs.map +1 -0
- package/dist/ColorSlider/ColorSliderThumb.js +60 -0
- package/dist/ColorSlider/ColorSliderThumb.js.map +1 -0
- package/dist/ColorSlider/ColorSliderTrack.cjs +55 -0
- package/dist/ColorSlider/ColorSliderTrack.cjs.map +1 -0
- package/dist/ColorSlider/ColorSliderTrack.js +49 -0
- package/dist/ColorSlider/ColorSliderTrack.js.map +1 -0
- package/dist/ColorSwatch/ColorSwatch.cjs +106 -0
- package/dist/ColorSwatch/ColorSwatch.cjs.map +1 -0
- package/dist/ColorSwatch/ColorSwatch.js +100 -0
- package/dist/ColorSwatch/ColorSwatch.js.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItem.cjs +78 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItem.cjs.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItem.js +66 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItem.js.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.cjs +40 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.cjs.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.js +34 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.js.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.cjs +43 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.cjs.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.js +37 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.js.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.cjs +110 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.cjs.map +1 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.js +104 -0
- package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.js.map +1 -0
- package/dist/Combobox/ComboboxContent.cjs +4 -0
- package/dist/Combobox/ComboboxContent.cjs.map +1 -1
- package/dist/Combobox/ComboboxContent.js +4 -0
- package/dist/Combobox/ComboboxContent.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs +9 -2
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js +9 -2
- package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
- package/dist/Combobox/ComboboxInput.cjs +10 -1
- package/dist/Combobox/ComboboxInput.cjs.map +1 -1
- package/dist/Combobox/ComboboxInput.js +10 -1
- package/dist/Combobox/ComboboxInput.js.map +1 -1
- package/dist/Combobox/ComboboxRoot.cjs +7 -1
- package/dist/Combobox/ComboboxRoot.js +2 -2
- package/dist/DateField/DateFieldRoot.cjs +1 -1
- package/dist/DateField/DateFieldRoot.js +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.cjs +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.js +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
- package/dist/DismissableLayer/utils.cjs +1 -0
- package/dist/DismissableLayer/utils.cjs.map +1 -1
- package/dist/DismissableLayer/utils.js +1 -0
- package/dist/DismissableLayer/utils.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuFilter.cjs +134 -0
- package/dist/DropdownMenu/DropdownMenuFilter.cjs.map +1 -0
- package/dist/DropdownMenu/DropdownMenuFilter.js +128 -0
- package/dist/DropdownMenu/DropdownMenuFilter.js.map +1 -0
- package/dist/Listbox/ListboxRoot.cjs +1 -1
- package/dist/Listbox/ListboxRoot.js +1 -1
- package/dist/Listbox/ListboxVirtualizer.cjs +1 -1
- package/dist/Listbox/ListboxVirtualizer.js +1 -1
- package/dist/Menu/MenuContentImpl.cjs +44 -4
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js +44 -4
- package/dist/Menu/MenuContentImpl.js.map +1 -1
- package/dist/Menu/MenuGroup.cjs +13 -2
- package/dist/Menu/MenuGroup.cjs.map +1 -1
- package/dist/Menu/MenuGroup.js +8 -3
- package/dist/Menu/MenuGroup.js.map +1 -1
- package/dist/Menu/MenuItemImpl.cjs +11 -5
- package/dist/Menu/MenuItemImpl.cjs.map +1 -1
- package/dist/Menu/MenuItemImpl.js +12 -6
- package/dist/Menu/MenuItemImpl.js.map +1 -1
- package/dist/Menu/MenuLabel.cjs +4 -2
- package/dist/Menu/MenuLabel.cjs.map +1 -1
- package/dist/Menu/MenuLabel.js +5 -3
- package/dist/Menu/MenuLabel.js.map +1 -1
- package/dist/Menu/MenuSubContent.cjs +8 -2
- package/dist/Menu/MenuSubContent.cjs.map +1 -1
- package/dist/Menu/MenuSubContent.js +9 -3
- package/dist/Menu/MenuSubContent.js.map +1 -1
- package/dist/Menu/MenuSubTrigger.cjs +7 -0
- package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
- package/dist/Menu/MenuSubTrigger.js +8 -1
- package/dist/Menu/MenuSubTrigger.js.map +1 -1
- package/dist/MonthPicker/MonthPickerCell.cjs +59 -0
- package/dist/MonthPicker/MonthPickerCell.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerCell.js +53 -0
- package/dist/MonthPicker/MonthPickerCell.js.map +1 -0
- package/dist/MonthPicker/MonthPickerCellTrigger.cjs +197 -0
- package/dist/MonthPicker/MonthPickerCellTrigger.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerCellTrigger.js +191 -0
- package/dist/MonthPicker/MonthPickerCellTrigger.js.map +1 -0
- package/dist/MonthPicker/MonthPickerGrid.cjs +59 -0
- package/dist/MonthPicker/MonthPickerGrid.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerGrid.js +53 -0
- package/dist/MonthPicker/MonthPickerGrid.js.map +1 -0
- package/dist/MonthPicker/MonthPickerGridBody.cjs +41 -0
- package/dist/MonthPicker/MonthPickerGridBody.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerGridBody.js +35 -0
- package/dist/MonthPicker/MonthPickerGridBody.js.map +1 -0
- package/dist/MonthPicker/MonthPickerGridRow.cjs +41 -0
- package/dist/MonthPicker/MonthPickerGridRow.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerGridRow.js +35 -0
- package/dist/MonthPicker/MonthPickerGridRow.js.map +1 -0
- package/dist/MonthPicker/MonthPickerHeader.cjs +41 -0
- package/dist/MonthPicker/MonthPickerHeader.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerHeader.js +35 -0
- package/dist/MonthPicker/MonthPickerHeader.js.map +1 -0
- package/dist/MonthPicker/MonthPickerHeading.cjs +48 -0
- package/dist/MonthPicker/MonthPickerHeading.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerHeading.js +42 -0
- package/dist/MonthPicker/MonthPickerHeading.js.map +1 -0
- package/dist/MonthPicker/MonthPickerNext.cjs +68 -0
- package/dist/MonthPicker/MonthPickerNext.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerNext.js +62 -0
- package/dist/MonthPicker/MonthPickerNext.js.map +1 -0
- package/dist/MonthPicker/MonthPickerPrev.cjs +68 -0
- package/dist/MonthPicker/MonthPickerPrev.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerPrev.js +62 -0
- package/dist/MonthPicker/MonthPickerPrev.js.map +1 -0
- package/dist/MonthPicker/MonthPickerRoot.cjs +281 -0
- package/dist/MonthPicker/MonthPickerRoot.cjs.map +1 -0
- package/dist/MonthPicker/MonthPickerRoot.js +269 -0
- package/dist/MonthPicker/MonthPickerRoot.js.map +1 -0
- package/dist/MonthPicker/useMonthPicker.cjs +148 -0
- package/dist/MonthPicker/useMonthPicker.cjs.map +1 -0
- package/dist/MonthPicker/useMonthPicker.js +136 -0
- package/dist/MonthPicker/useMonthPicker.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerCell.cjs +59 -0
- package/dist/MonthRangePicker/MonthRangePickerCell.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerCell.js +53 -0
- package/dist/MonthRangePicker/MonthRangePickerCell.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerCellTrigger.cjs +258 -0
- package/dist/MonthRangePicker/MonthRangePickerCellTrigger.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerCellTrigger.js +252 -0
- package/dist/MonthRangePicker/MonthRangePickerCellTrigger.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerGrid.cjs +59 -0
- package/dist/MonthRangePicker/MonthRangePickerGrid.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerGrid.js +53 -0
- package/dist/MonthRangePicker/MonthRangePickerGrid.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerGridBody.cjs +41 -0
- package/dist/MonthRangePicker/MonthRangePickerGridBody.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerGridBody.js +35 -0
- package/dist/MonthRangePicker/MonthRangePickerGridBody.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerGridRow.cjs +41 -0
- package/dist/MonthRangePicker/MonthRangePickerGridRow.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerGridRow.js +35 -0
- package/dist/MonthRangePicker/MonthRangePickerGridRow.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerHeader.cjs +41 -0
- package/dist/MonthRangePicker/MonthRangePickerHeader.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerHeader.js +35 -0
- package/dist/MonthRangePicker/MonthRangePickerHeader.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerHeading.cjs +48 -0
- package/dist/MonthRangePicker/MonthRangePickerHeading.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerHeading.js +42 -0
- package/dist/MonthRangePicker/MonthRangePickerHeading.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerNext.cjs +68 -0
- package/dist/MonthRangePicker/MonthRangePickerNext.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerNext.js +62 -0
- package/dist/MonthRangePicker/MonthRangePickerNext.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerPrev.cjs +68 -0
- package/dist/MonthRangePicker/MonthRangePickerPrev.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerPrev.js +62 -0
- package/dist/MonthRangePicker/MonthRangePickerPrev.js.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerRoot.cjs +347 -0
- package/dist/MonthRangePicker/MonthRangePickerRoot.cjs.map +1 -0
- package/dist/MonthRangePicker/MonthRangePickerRoot.js +335 -0
- package/dist/MonthRangePicker/MonthRangePickerRoot.js.map +1 -0
- package/dist/MonthRangePicker/useRangeMonthPicker.cjs +128 -0
- package/dist/MonthRangePicker/useRangeMonthPicker.cjs.map +1 -0
- package/dist/MonthRangePicker/useRangeMonthPicker.js +122 -0
- package/dist/MonthRangePicker/useRangeMonthPicker.js.map +1 -0
- package/dist/NavigationMenu/NavigationMenuItem.js +3 -3
- package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
- package/dist/NumberField/NumberFieldRoot.cjs +3 -2
- package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
- package/dist/NumberField/NumberFieldRoot.js +3 -2
- package/dist/NumberField/NumberFieldRoot.js.map +1 -1
- package/dist/Progress/ProgressRoot.cjs.map +1 -1
- package/dist/Progress/ProgressRoot.js.map +1 -1
- package/dist/RadioGroup/RadioGroupRoot.cjs +1 -1
- package/dist/RadioGroup/RadioGroupRoot.js +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs +3 -3
- package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js +4 -4
- package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.cjs +9 -5
- package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.js +9 -5
- package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.cjs +9 -5
- package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.js +9 -5
- package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.cjs +9 -13
- package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.js +9 -13
- package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
- package/dist/Splitter/SplitterGroup.cjs +156 -36
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js +156 -36
- package/dist/Splitter/SplitterGroup.js.map +1 -1
- package/dist/Splitter/SplitterPanel.cjs +7 -2
- package/dist/Splitter/SplitterPanel.cjs.map +1 -1
- package/dist/Splitter/SplitterPanel.js +7 -2
- package/dist/Splitter/SplitterPanel.js.map +1 -1
- package/dist/Switch/SwitchRoot.cjs +23 -9
- package/dist/Switch/SwitchRoot.cjs.map +1 -1
- package/dist/Switch/SwitchRoot.js +23 -9
- package/dist/Switch/SwitchRoot.js.map +1 -1
- package/dist/Switch/SwitchThumb.cjs +1 -1
- package/dist/Switch/SwitchThumb.cjs.map +1 -1
- package/dist/Switch/SwitchThumb.js +1 -1
- package/dist/Switch/SwitchThumb.js.map +1 -1
- package/dist/TimeField/TimeFieldRoot.cjs +1 -1
- package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
- package/dist/TimeField/TimeFieldRoot.js +1 -1
- package/dist/TimeField/TimeFieldRoot.js.map +1 -1
- package/dist/TimeRangeField/TimeRangeFieldInput.cjs +102 -0
- package/dist/TimeRangeField/TimeRangeFieldInput.cjs.map +1 -0
- package/dist/TimeRangeField/TimeRangeFieldInput.js +96 -0
- package/dist/TimeRangeField/TimeRangeFieldInput.js.map +1 -0
- package/dist/TimeRangeField/TimeRangeFieldRoot.cjs +402 -0
- package/dist/TimeRangeField/TimeRangeFieldRoot.cjs.map +1 -0
- package/dist/TimeRangeField/TimeRangeFieldRoot.js +390 -0
- package/dist/TimeRangeField/TimeRangeFieldRoot.js.map +1 -0
- package/dist/Toast/FocusProxy.cjs +0 -1
- package/dist/Toast/FocusProxy.cjs.map +1 -1
- package/dist/Toast/FocusProxy.js +0 -1
- package/dist/Toast/FocusProxy.js.map +1 -1
- package/dist/Toast/ToastAnnounce.cjs +4 -1
- package/dist/Toast/ToastAnnounce.cjs.map +1 -1
- package/dist/Toast/ToastAnnounce.js +4 -1
- package/dist/Toast/ToastAnnounce.js.map +1 -1
- package/dist/Toast/ToastRootImpl.cjs +1 -5
- package/dist/Toast/ToastRootImpl.cjs.map +1 -1
- package/dist/Toast/ToastRootImpl.js +1 -5
- package/dist/Toast/ToastRootImpl.js.map +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.cjs +1 -1
- package/dist/ToggleGroup/ToggleGroupRoot.js +1 -1
- package/dist/Tooltip/TooltipContent.cjs +1 -2
- package/dist/Tooltip/TooltipContent.cjs.map +1 -1
- package/dist/Tooltip/TooltipContent.js +1 -2
- package/dist/Tooltip/TooltipContent.js.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.cjs +25 -18
- package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
- package/dist/Tooltip/TooltipContentImpl.js +25 -18
- package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
- package/dist/Tooltip/TooltipProvider.cjs +7 -2
- package/dist/Tooltip/TooltipProvider.cjs.map +1 -1
- package/dist/Tooltip/TooltipProvider.js +7 -2
- package/dist/Tooltip/TooltipProvider.js.map +1 -1
- package/dist/YearPicker/YearPickerCell.cjs +59 -0
- package/dist/YearPicker/YearPickerCell.cjs.map +1 -0
- package/dist/YearPicker/YearPickerCell.js +53 -0
- package/dist/YearPicker/YearPickerCell.js.map +1 -0
- package/dist/YearPicker/YearPickerCellTrigger.cjs +197 -0
- package/dist/YearPicker/YearPickerCellTrigger.cjs.map +1 -0
- package/dist/YearPicker/YearPickerCellTrigger.js +191 -0
- package/dist/YearPicker/YearPickerCellTrigger.js.map +1 -0
- package/dist/YearPicker/YearPickerGrid.cjs +59 -0
- package/dist/YearPicker/YearPickerGrid.cjs.map +1 -0
- package/dist/YearPicker/YearPickerGrid.js +53 -0
- package/dist/YearPicker/YearPickerGrid.js.map +1 -0
- package/dist/YearPicker/YearPickerGridBody.cjs +41 -0
- package/dist/YearPicker/YearPickerGridBody.cjs.map +1 -0
- package/dist/YearPicker/YearPickerGridBody.js +35 -0
- package/dist/YearPicker/YearPickerGridBody.js.map +1 -0
- package/dist/YearPicker/YearPickerGridRow.cjs +41 -0
- package/dist/YearPicker/YearPickerGridRow.cjs.map +1 -0
- package/dist/YearPicker/YearPickerGridRow.js +35 -0
- package/dist/YearPicker/YearPickerGridRow.js.map +1 -0
- package/dist/YearPicker/YearPickerHeader.cjs +41 -0
- package/dist/YearPicker/YearPickerHeader.cjs.map +1 -0
- package/dist/YearPicker/YearPickerHeader.js +35 -0
- package/dist/YearPicker/YearPickerHeader.js.map +1 -0
- package/dist/YearPicker/YearPickerHeading.cjs +48 -0
- package/dist/YearPicker/YearPickerHeading.cjs.map +1 -0
- package/dist/YearPicker/YearPickerHeading.js +42 -0
- package/dist/YearPicker/YearPickerHeading.js.map +1 -0
- package/dist/YearPicker/YearPickerNext.cjs +68 -0
- package/dist/YearPicker/YearPickerNext.cjs.map +1 -0
- package/dist/YearPicker/YearPickerNext.js +62 -0
- package/dist/YearPicker/YearPickerNext.js.map +1 -0
- package/dist/YearPicker/YearPickerPrev.cjs +68 -0
- package/dist/YearPicker/YearPickerPrev.cjs.map +1 -0
- package/dist/YearPicker/YearPickerPrev.js +62 -0
- package/dist/YearPicker/YearPickerPrev.js.map +1 -0
- package/dist/YearPicker/YearPickerRoot.cjs +287 -0
- package/dist/YearPicker/YearPickerRoot.cjs.map +1 -0
- package/dist/YearPicker/YearPickerRoot.js +275 -0
- package/dist/YearPicker/YearPickerRoot.js.map +1 -0
- package/dist/YearPicker/useYearPicker.cjs +180 -0
- package/dist/YearPicker/useYearPicker.cjs.map +1 -0
- package/dist/YearPicker/useYearPicker.js +168 -0
- package/dist/YearPicker/useYearPicker.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerCell.cjs +59 -0
- package/dist/YearRangePicker/YearRangePickerCell.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerCell.js +53 -0
- package/dist/YearRangePicker/YearRangePickerCell.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerCellTrigger.cjs +256 -0
- package/dist/YearRangePicker/YearRangePickerCellTrigger.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerCellTrigger.js +250 -0
- package/dist/YearRangePicker/YearRangePickerCellTrigger.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerGrid.cjs +59 -0
- package/dist/YearRangePicker/YearRangePickerGrid.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerGrid.js +53 -0
- package/dist/YearRangePicker/YearRangePickerGrid.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerGridBody.cjs +41 -0
- package/dist/YearRangePicker/YearRangePickerGridBody.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerGridBody.js +35 -0
- package/dist/YearRangePicker/YearRangePickerGridBody.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerGridRow.cjs +41 -0
- package/dist/YearRangePicker/YearRangePickerGridRow.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerGridRow.js +35 -0
- package/dist/YearRangePicker/YearRangePickerGridRow.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerHeader.cjs +41 -0
- package/dist/YearRangePicker/YearRangePickerHeader.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerHeader.js +35 -0
- package/dist/YearRangePicker/YearRangePickerHeader.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerHeading.cjs +48 -0
- package/dist/YearRangePicker/YearRangePickerHeading.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerHeading.js +42 -0
- package/dist/YearRangePicker/YearRangePickerHeading.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerNext.cjs +68 -0
- package/dist/YearRangePicker/YearRangePickerNext.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerNext.js +62 -0
- package/dist/YearRangePicker/YearRangePickerNext.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerPrev.cjs +68 -0
- package/dist/YearRangePicker/YearRangePickerPrev.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerPrev.js +62 -0
- package/dist/YearRangePicker/YearRangePickerPrev.js.map +1 -0
- package/dist/YearRangePicker/YearRangePickerRoot.cjs +350 -0
- package/dist/YearRangePicker/YearRangePickerRoot.cjs.map +1 -0
- package/dist/YearRangePicker/YearRangePickerRoot.js +338 -0
- package/dist/YearRangePicker/YearRangePickerRoot.js.map +1 -0
- package/dist/YearRangePicker/useRangeYearPicker.cjs +128 -0
- package/dist/YearRangePicker/useRangeYearPicker.cjs.map +1 -0
- package/dist/YearRangePicker/useRangeYearPicker.js +122 -0
- package/dist/YearRangePicker/useRangeYearPicker.js.map +1 -0
- package/dist/color/channel.cjs +378 -0
- package/dist/color/channel.cjs.map +1 -0
- package/dist/color/channel.js +349 -0
- package/dist/color/channel.js.map +1 -0
- package/dist/color/convert.cjs +285 -0
- package/dist/color/convert.cjs.map +1 -0
- package/dist/color/convert.js +237 -0
- package/dist/color/convert.js.map +1 -0
- package/dist/color/gradient.cjs +377 -0
- package/dist/color/gradient.cjs.map +1 -0
- package/dist/color/gradient.js +354 -0
- package/dist/color/gradient.js.map +1 -0
- package/dist/color/parse.cjs +113 -0
- package/dist/color/parse.cjs.map +1 -0
- package/dist/color/parse.js +95 -0
- package/dist/color/parse.js.map +1 -0
- package/dist/color/utils.cjs +112 -0
- package/dist/color/utils.cjs.map +1 -0
- package/dist/color/utils.js +100 -0
- package/dist/color/utils.js.map +1 -0
- package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs +11 -7
- package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs.map +1 -1
- package/dist/composables/useWindowSplitterPanelGroupBehavior.js +11 -7
- package/dist/composables/useWindowSplitterPanelGroupBehavior.js.map +1 -1
- package/dist/constant/components.cjs +87 -1
- package/dist/constant/components.cjs.map +1 -1
- package/dist/constant/components.js +87 -1
- package/dist/constant/components.js.map +1 -1
- package/dist/constant.d.cts +12 -1
- package/dist/constant.d.cts.map +1 -1
- package/dist/constant.d.ts +12 -1
- package/dist/constant.d.ts.map +1 -1
- package/dist/date/calendar.cjs +41 -0
- package/dist/date/calendar.cjs.map +1 -1
- package/dist/date/calendar.js +30 -1
- package/dist/date/calendar.js.map +1 -1
- package/dist/date/comparators.cjs +129 -0
- package/dist/date/comparators.cjs.map +1 -1
- package/dist/date/comparators.js +76 -1
- package/dist/date/comparators.js.map +1 -1
- package/dist/date/useDateField.cjs +1 -1
- package/dist/date/useDateField.cjs.map +1 -1
- package/dist/date/useDateField.js +1 -1
- package/dist/date/useDateField.js.map +1 -1
- package/dist/date.cjs +11 -0
- package/dist/date.d.cts +2 -2
- package/dist/date.d.ts +2 -2
- package/dist/date.js +3 -3
- package/dist/index.cjs +217 -47
- package/dist/index.d.cts +3 -8834
- package/dist/index.d.ts +3 -8834
- package/dist/index.js +117 -48
- package/dist/index2.d.cts +58 -2
- package/dist/index2.d.cts.map +1 -1
- package/dist/index2.d.ts +58 -2
- package/dist/index2.d.ts.map +1 -1
- package/dist/index3.d.cts +11062 -0
- package/dist/index3.d.cts.map +1 -0
- package/dist/index3.d.ts +11062 -0
- package/dist/index3.d.ts.map +1 -0
- package/dist/internal.cjs +81 -0
- package/dist/internal.d.cts +20 -0
- package/dist/internal.d.cts.map +1 -0
- package/dist/internal.d.ts +20 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +64 -0
- package/dist/internal2.cjs +0 -0
- package/dist/internal2.js +0 -0
- package/dist/namespaced/index.cjs +33 -1
- package/dist/namespaced/index.d.cts +32 -4
- package/dist/namespaced/index.d.mts +32 -4
- package/dist/namespaced/index.mjs +32 -4
- package/dist/shared/useArrowNavigation.cjs +4 -2
- package/dist/shared/useArrowNavigation.cjs.map +1 -1
- package/dist/shared/useArrowNavigation.js +4 -2
- package/dist/shared/useArrowNavigation.js.map +1 -1
- package/dist/shared/useBodyScrollLock.cjs +1 -0
- package/dist/shared/useBodyScrollLock.cjs.map +1 -1
- package/dist/shared/useBodyScrollLock.js +1 -0
- package/dist/shared/useBodyScrollLock.js.map +1 -1
- package/dist/shared/useForwardExpose.cjs +6 -2
- package/dist/shared/useForwardExpose.cjs.map +1 -1
- package/dist/shared/useForwardExpose.js +7 -3
- package/dist/shared/useForwardExpose.js.map +1 -1
- package/dist/shared/useHideOthers.cjs +1 -1
- package/dist/shared/useHideOthers.cjs.map +1 -1
- package/dist/shared/useHideOthers.js +1 -1
- package/dist/shared/useHideOthers.js.map +1 -1
- package/dist/shared/useId.cjs +7 -4
- package/dist/shared/useId.cjs.map +1 -1
- package/dist/shared/useId.js +7 -4
- package/dist/shared/useId.js.map +1 -1
- package/dist/utils/callPanelCallbacks.cjs +10 -7
- package/dist/utils/callPanelCallbacks.cjs.map +1 -1
- package/dist/utils/callPanelCallbacks.js +10 -7
- package/dist/utils/callPanelCallbacks.js.map +1 -1
- package/dist/utils/storage.cjs +7 -1
- package/dist/utils/storage.cjs.map +1 -1
- package/dist/utils/storage.js +7 -1
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/units.cjs +101 -0
- package/dist/utils/units.cjs.map +1 -0
- package/dist/utils/units.js +83 -0
- package/dist/utils/units.js.map +1 -0
- package/package.json +7 -3
- package/src/Autocomplete/AutocompleteInput.vue +112 -0
- package/src/Autocomplete/AutocompleteRoot.vue +272 -0
- package/src/Autocomplete/index.ts +72 -0
- package/src/Calendar/CalendarCellTrigger.vue +2 -1
- package/src/Calendar/CalendarGrid.vue +6 -1
- package/src/Calendar/CalendarNext.vue +8 -2
- package/src/Calendar/CalendarPrev.vue +8 -2
- package/src/Calendar/CalendarRoot.vue +1 -1
- package/src/Checkbox/CheckboxRoot.vue +32 -13
- package/src/ColorArea/ColorAreaArea.vue +145 -0
- package/src/ColorArea/ColorAreaRoot.vue +255 -0
- package/src/ColorArea/ColorAreaThumb.vue +75 -0
- package/src/ColorArea/index.ts +14 -0
- package/src/ColorArea/utils.ts +24 -0
- package/src/ColorField/ColorFieldInput.vue +133 -0
- package/src/ColorField/ColorFieldRoot.vue +326 -0
- package/src/ColorField/index.ts +10 -0
- package/src/ColorSlider/ColorSliderRoot.vue +224 -0
- package/src/ColorSlider/ColorSliderThumb.vue +54 -0
- package/src/ColorSlider/ColorSliderTrack.vue +36 -0
- package/src/ColorSlider/index.ts +14 -0
- package/src/ColorSlider/utils.ts +39 -0
- package/src/ColorSwatch/ColorSwatch.vue +97 -0
- package/src/ColorSwatch/index.ts +4 -0
- package/src/ColorSwatchPicker/ColorSwatchPickerItem.vue +60 -0
- package/src/ColorSwatchPicker/ColorSwatchPickerItemIndicator.vue +17 -0
- package/src/ColorSwatchPicker/ColorSwatchPickerItemSwatch.vue +21 -0
- package/src/ColorSwatchPicker/ColorSwatchPickerRoot.vue +50 -0
- package/src/ColorSwatchPicker/index.ts +17 -0
- package/src/Combobox/ComboboxContentImpl.vue +13 -1
- package/src/Combobox/ComboboxInput.vue +19 -0
- package/src/DateField/DateFieldRoot.vue +1 -1
- package/src/DateRangeField/DateRangeFieldRoot.vue +11 -4
- package/src/DismissableLayer/utils.ts +5 -3
- package/src/DropdownMenu/DropdownMenuFilter.vue +119 -0
- package/src/DropdownMenu/index.ts +5 -0
- package/src/Menu/MenuContentImpl.vue +68 -2
- package/src/Menu/MenuGroup.vue +12 -0
- package/src/Menu/MenuItemImpl.vue +15 -10
- package/src/Menu/MenuLabel.vue +7 -1
- package/src/Menu/MenuSubContent.vue +14 -3
- package/src/Menu/MenuSubTrigger.vue +13 -1
- package/src/MonthPicker/MonthPickerCell.vue +30 -0
- package/src/MonthPicker/MonthPickerCellTrigger.vue +214 -0
- package/src/MonthPicker/MonthPickerGrid.vue +37 -0
- package/src/MonthPicker/MonthPickerGridBody.vue +17 -0
- package/src/MonthPicker/MonthPickerGridRow.vue +20 -0
- package/src/MonthPicker/MonthPickerHeader.vue +17 -0
- package/src/MonthPicker/MonthPickerHeading.vue +35 -0
- package/src/MonthPicker/MonthPickerNext.vue +52 -0
- package/src/MonthPicker/MonthPickerPrev.vue +52 -0
- package/src/MonthPicker/MonthPickerRoot.vue +311 -0
- package/src/MonthPicker/index.ts +42 -0
- package/src/MonthPicker/useMonthPicker.ts +193 -0
- package/src/MonthRangePicker/MonthRangePickerCell.vue +30 -0
- package/src/MonthRangePicker/MonthRangePickerCellTrigger.vue +309 -0
- package/src/MonthRangePicker/MonthRangePickerGrid.vue +37 -0
- package/src/MonthRangePicker/MonthRangePickerGridBody.vue +17 -0
- package/src/MonthRangePicker/MonthRangePickerGridRow.vue +20 -0
- package/src/MonthRangePicker/MonthRangePickerHeader.vue +17 -0
- package/src/MonthRangePicker/MonthRangePickerHeading.vue +35 -0
- package/src/MonthRangePicker/MonthRangePickerNext.vue +52 -0
- package/src/MonthRangePicker/MonthRangePickerPrev.vue +52 -0
- package/src/MonthRangePicker/MonthRangePickerRoot.vue +391 -0
- package/src/MonthRangePicker/index.ts +42 -0
- package/src/MonthRangePicker/useRangeMonthPicker.ts +165 -0
- package/src/NumberField/NumberFieldRoot.vue +2 -1
- package/src/Progress/ProgressRoot.vue +3 -1
- package/src/RangeCalendar/RangeCalendarGrid.vue +6 -1
- package/src/RangeCalendar/RangeCalendarNext.vue +10 -4
- package/src/RangeCalendar/RangeCalendarPrev.vue +10 -4
- package/src/RangeCalendar/RangeCalendarRoot.vue +2 -2
- package/src/RangeCalendar/useRangeCalendar.ts +5 -8
- package/src/Splitter/SplitterGroup.vue +243 -54
- package/src/Splitter/SplitterPanel.vue +11 -6
- package/src/Splitter/utils/callPanelCallbacks.ts +16 -8
- package/src/Splitter/utils/composables/useWindowSplitterPanelGroupBehavior.ts +16 -6
- package/src/Splitter/utils/storage.ts +14 -0
- package/src/Splitter/utils/units.ts +161 -0
- package/src/Splitter/utils/validation.ts +3 -2
- package/src/Switch/SwitchRoot.vue +36 -19
- package/src/Switch/SwitchThumb.vue +1 -1
- package/src/TimeField/TimeFieldRoot.vue +0 -3
- package/src/TimeRangeField/TimeRangeFieldInput.vue +74 -0
- package/src/TimeRangeField/TimeRangeFieldRoot.vue +473 -0
- package/src/TimeRangeField/index.ts +2 -0
- package/src/Toast/FocusProxy.vue +0 -1
- package/src/Toast/ToastAnnounce.vue +4 -1
- package/src/Toast/ToastRootImpl.vue +0 -4
- package/src/Tooltip/TooltipContent.vue +1 -3
- package/src/Tooltip/TooltipContentImpl.vue +18 -10
- package/src/Tooltip/TooltipProvider.vue +8 -1
- package/src/YearPicker/YearPickerCell.vue +30 -0
- package/src/YearPicker/YearPickerCellTrigger.vue +218 -0
- package/src/YearPicker/YearPickerGrid.vue +37 -0
- package/src/YearPicker/YearPickerGridBody.vue +17 -0
- package/src/YearPicker/YearPickerGridRow.vue +20 -0
- package/src/YearPicker/YearPickerHeader.vue +17 -0
- package/src/YearPicker/YearPickerHeading.vue +35 -0
- package/src/YearPicker/YearPickerNext.vue +52 -0
- package/src/YearPicker/YearPickerPrev.vue +52 -0
- package/src/YearPicker/YearPickerRoot.vue +314 -0
- package/src/YearPicker/index.ts +42 -0
- package/src/YearPicker/useYearPicker.ts +202 -0
- package/src/YearRangePicker/YearRangePickerCell.vue +30 -0
- package/src/YearRangePicker/YearRangePickerCellTrigger.vue +311 -0
- package/src/YearRangePicker/YearRangePickerGrid.vue +37 -0
- package/src/YearRangePicker/YearRangePickerGridBody.vue +17 -0
- package/src/YearRangePicker/YearRangePickerGridRow.vue +20 -0
- package/src/YearRangePicker/YearRangePickerHeader.vue +17 -0
- package/src/YearRangePicker/YearRangePickerHeading.vue +35 -0
- package/src/YearRangePicker/YearRangePickerNext.vue +52 -0
- package/src/YearRangePicker/YearRangePickerPrev.vue +52 -0
- package/src/YearRangePicker/YearRangePickerRoot.vue +391 -0
- package/src/YearRangePicker/index.ts +42 -0
- package/src/YearRangePicker/useRangeYearPicker.ts +165 -0
- package/src/date/calendar.ts +29 -0
- package/src/date/comparators.ts +97 -0
- package/src/index.ts +41 -0
- package/src/internal.ts +7 -0
- package/src/shared/color/channel.ts +424 -0
- package/src/shared/color/convert.ts +293 -0
- package/src/shared/color/gradient.ts +347 -0
- package/src/shared/color/index.ts +35 -0
- package/src/shared/color/parse.ts +140 -0
- package/src/shared/color/types.ts +40 -0
- package/src/shared/color/utils.ts +143 -0
- package/src/shared/date/types.ts +6 -0
- package/src/shared/date/useDateField.ts +39 -40
- package/src/shared/macro.ts +11 -0
- package/src/shared/useArrowNavigation.ts +8 -2
- package/src/shared/useBodyScrollLock.ts +2 -0
- package/src/shared/useForwardExpose.ts +20 -5
- package/src/shared/useHideOthers.ts +2 -1
- package/src/shared/useId.ts +6 -7
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts.map +0 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ListboxFilterEmits, ListboxFilterProps } from '@/Listbox'
|
|
3
|
+
|
|
4
|
+
export type AutocompleteInputEmits = ListboxFilterEmits
|
|
5
|
+
export interface AutocompleteInputProps extends ListboxFilterProps {}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script setup lang="ts">
|
|
9
|
+
import { useVModel } from '@vueuse/core'
|
|
10
|
+
import { nextTick, onMounted, watch } from 'vue'
|
|
11
|
+
import { injectComboboxRootContext } from '@/Combobox/ComboboxRoot.vue'
|
|
12
|
+
import { ListboxFilter } from '@/Listbox'
|
|
13
|
+
import { injectListboxRootContext } from '@/Listbox/ListboxRoot.vue'
|
|
14
|
+
import { usePrimitiveElement } from '@/Primitive'
|
|
15
|
+
import { injectAutocompleteRootContext } from './AutocompleteRoot.vue'
|
|
16
|
+
|
|
17
|
+
const props = withDefaults(defineProps<AutocompleteInputProps>(), {
|
|
18
|
+
as: 'input',
|
|
19
|
+
})
|
|
20
|
+
const emits = defineEmits<AutocompleteInputEmits>()
|
|
21
|
+
|
|
22
|
+
const rootContext = injectComboboxRootContext()
|
|
23
|
+
const autocompleteContext = injectAutocompleteRootContext()
|
|
24
|
+
const listboxContext = injectListboxRootContext()
|
|
25
|
+
const { primitiveElement, currentElement } = usePrimitiveElement()
|
|
26
|
+
|
|
27
|
+
const modelValue = useVModel(props, 'modelValue', emits, {
|
|
28
|
+
passive: (props.modelValue === undefined) as false,
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
if (autocompleteContext.modelValue.value) {
|
|
32
|
+
modelValue.value = autocompleteContext.modelValue.value
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
onMounted(() => {
|
|
36
|
+
if (currentElement.value)
|
|
37
|
+
rootContext.onInputElementChange(currentElement.value as HTMLInputElement)
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
function handleKeyDown(ev: KeyboardEvent) {
|
|
41
|
+
if (!rootContext.open.value)
|
|
42
|
+
rootContext.onOpenChange(true)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function handleInput(event: InputEvent) {
|
|
46
|
+
const target = event.target as HTMLInputElement
|
|
47
|
+
if (!rootContext.open.value) {
|
|
48
|
+
rootContext.onOpenChange(true)
|
|
49
|
+
nextTick(() => {
|
|
50
|
+
if (target.value) {
|
|
51
|
+
rootContext.filterSearch.value = target.value
|
|
52
|
+
listboxContext.highlightFirstItem()
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
rootContext.filterSearch.value = target.value
|
|
58
|
+
}
|
|
59
|
+
// Autocomplete-specific: update root's modelValue with the typed text
|
|
60
|
+
autocompleteContext.modelValue.value = target.value
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function handleFocus() {
|
|
64
|
+
if (rootContext.openOnFocus.value && !rootContext.open.value)
|
|
65
|
+
rootContext.onOpenChange(true)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function handleClick() {
|
|
69
|
+
if (rootContext.openOnClick.value && !rootContext.open.value)
|
|
70
|
+
rootContext.onOpenChange(true)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// When root's modelValue changes externally (e.g. item click, programmatic), sync the input display
|
|
74
|
+
watch(autocompleteContext.modelValue, (newVal) => {
|
|
75
|
+
const text = newVal ?? ''
|
|
76
|
+
if (modelValue.value !== text)
|
|
77
|
+
modelValue.value = text
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
// Restore input text when root triggers resetSearchTerm (e.g. on blur with resetSearchTermOnBlur)
|
|
81
|
+
rootContext.onResetSearchTerm(() => {
|
|
82
|
+
modelValue.value = autocompleteContext.modelValue.value ?? ''
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
watch(rootContext.filterState, (_newValue, oldValue) => {
|
|
86
|
+
if (!rootContext.isVirtual.value && (oldValue.count === 0)) {
|
|
87
|
+
listboxContext.highlightFirstItem()
|
|
88
|
+
}
|
|
89
|
+
})
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
<template>
|
|
93
|
+
<ListboxFilter
|
|
94
|
+
ref="primitiveElement"
|
|
95
|
+
v-model="modelValue"
|
|
96
|
+
:as="as"
|
|
97
|
+
:as-child="asChild"
|
|
98
|
+
:auto-focus="autoFocus"
|
|
99
|
+
:disabled="disabled"
|
|
100
|
+
:aria-expanded="rootContext.open.value"
|
|
101
|
+
:aria-controls="rootContext.contentId"
|
|
102
|
+
aria-autocomplete="list"
|
|
103
|
+
role="combobox"
|
|
104
|
+
autocomplete="off"
|
|
105
|
+
@click="handleClick"
|
|
106
|
+
@input="handleInput"
|
|
107
|
+
@keydown.down.up.prevent="handleKeyDown"
|
|
108
|
+
@focus="handleFocus"
|
|
109
|
+
>
|
|
110
|
+
<slot />
|
|
111
|
+
</ListboxFilter>
|
|
112
|
+
</template>
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Ref } from 'vue'
|
|
3
|
+
import type { PrimitiveProps } from '@/Primitive'
|
|
4
|
+
import type { Direction, GenericComponentInstance } from '@/shared/types'
|
|
5
|
+
import { provideComboboxRootContext } from '@/Combobox/ComboboxRoot.vue'
|
|
6
|
+
import { usePrimitiveElement } from '@/Primitive'
|
|
7
|
+
import { createContext, useDirection, useFilter } from '@/shared'
|
|
8
|
+
|
|
9
|
+
export interface AutocompleteRootProps extends PrimitiveProps {
|
|
10
|
+
/** The controlled value of the Autocomplete (the input text). Can be bound with `v-model`. */
|
|
11
|
+
modelValue?: string
|
|
12
|
+
/** The value of the autocomplete when initially rendered. Use when you do not need to control the state. */
|
|
13
|
+
defaultValue?: string
|
|
14
|
+
/** The controlled open state of the Autocomplete. Can be bound with `v-model:open`. */
|
|
15
|
+
open?: boolean
|
|
16
|
+
/** The open state of the autocomplete when it is initially rendered. Use when you do not need to control its open state. */
|
|
17
|
+
defaultOpen?: boolean
|
|
18
|
+
/** When `true`, prevents the user from interacting with autocomplete */
|
|
19
|
+
disabled?: boolean
|
|
20
|
+
/** The reading direction of the autocomplete when applicable. */
|
|
21
|
+
dir?: Direction
|
|
22
|
+
/** The name of the field. Submitted with its owning form as part of a name/value pair. */
|
|
23
|
+
name?: string
|
|
24
|
+
/** When `true`, indicates that the user must set the value before the owning form can be submitted. */
|
|
25
|
+
required?: boolean
|
|
26
|
+
/**
|
|
27
|
+
* Whether to reset the searchTerm when the Autocomplete input blurred
|
|
28
|
+
* @defaultValue `false`
|
|
29
|
+
*/
|
|
30
|
+
resetSearchTermOnBlur?: boolean
|
|
31
|
+
/**
|
|
32
|
+
* Whether to open the autocomplete when the input is focused
|
|
33
|
+
* @defaultValue `false`
|
|
34
|
+
*/
|
|
35
|
+
openOnFocus?: boolean
|
|
36
|
+
/**
|
|
37
|
+
* Whether to open the autocomplete when the input is clicked
|
|
38
|
+
* @defaultValue `false`
|
|
39
|
+
*/
|
|
40
|
+
openOnClick?: boolean
|
|
41
|
+
/**
|
|
42
|
+
* When `true`, disable the default filters
|
|
43
|
+
*/
|
|
44
|
+
ignoreFilter?: boolean
|
|
45
|
+
/** When `true`, hover over item will trigger highlight */
|
|
46
|
+
highlightOnHover?: boolean
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type AutocompleteRootEmits = {
|
|
50
|
+
/** Event handler called when the value changes. */
|
|
51
|
+
'update:modelValue': [value: string]
|
|
52
|
+
/** Event handler when highlighted element changes. */
|
|
53
|
+
'highlight': [payload: { ref: HTMLElement, value: string } | undefined]
|
|
54
|
+
/** Event handler called when the open state of the autocomplete changes. */
|
|
55
|
+
'update:open': [value: boolean]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export type AutocompleteRootContext = {
|
|
59
|
+
modelValue: Ref<string>
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export const [injectAutocompleteRootContext, provideAutocompleteRootContext]
|
|
63
|
+
= createContext<AutocompleteRootContext>('AutocompleteRoot')
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<script setup lang="ts">
|
|
67
|
+
import { createEventHook, useVModel } from '@vueuse/core'
|
|
68
|
+
import { computed, getCurrentInstance, nextTick, onMounted, ref, toRefs } from 'vue'
|
|
69
|
+
import { ListboxRoot } from '@/Listbox'
|
|
70
|
+
import { PopperRoot } from '@/Popper'
|
|
71
|
+
|
|
72
|
+
const props = withDefaults(defineProps<AutocompleteRootProps>(), {
|
|
73
|
+
open: undefined,
|
|
74
|
+
resetSearchTermOnBlur: false,
|
|
75
|
+
openOnFocus: false,
|
|
76
|
+
openOnClick: false,
|
|
77
|
+
highlightOnHover: true,
|
|
78
|
+
})
|
|
79
|
+
const emits = defineEmits<AutocompleteRootEmits>()
|
|
80
|
+
|
|
81
|
+
defineSlots<{
|
|
82
|
+
default?: (props: {
|
|
83
|
+
/** Current open state */
|
|
84
|
+
open: typeof open.value
|
|
85
|
+
/** Current active value */
|
|
86
|
+
modelValue: typeof modelValue.value
|
|
87
|
+
}) => any
|
|
88
|
+
}>()
|
|
89
|
+
|
|
90
|
+
const { primitiveElement, currentElement: parentElement } = usePrimitiveElement<GenericComponentInstance<typeof ListboxRoot>>()
|
|
91
|
+
const { disabled, ignoreFilter, openOnFocus, openOnClick, dir: propDir, highlightOnHover } = toRefs(props)
|
|
92
|
+
|
|
93
|
+
const dir = useDirection(propDir)
|
|
94
|
+
|
|
95
|
+
const modelValue = useVModel(props, 'modelValue', emits, {
|
|
96
|
+
defaultValue: props.defaultValue ?? '',
|
|
97
|
+
passive: (props.modelValue === undefined) as false,
|
|
98
|
+
}) as Ref<string>
|
|
99
|
+
|
|
100
|
+
const open = useVModel(props, 'open', emits, {
|
|
101
|
+
defaultValue: props.defaultOpen,
|
|
102
|
+
passive: (props.open === undefined) as false,
|
|
103
|
+
}) as Ref<boolean>
|
|
104
|
+
|
|
105
|
+
// Writable computed that converts any value to string for the ComboboxRootContext.
|
|
106
|
+
// This handles the case when ComboboxItem sets modelValue to a non-string value,
|
|
107
|
+
// or when ComboboxCancel resets modelValue to null.
|
|
108
|
+
const contextModelValue = computed({
|
|
109
|
+
get: () => modelValue.value,
|
|
110
|
+
set: (val: any) => {
|
|
111
|
+
if (val === null || val === undefined) {
|
|
112
|
+
modelValue.value = ''
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
modelValue.value = String(val)
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
async function onOpenChange(val: boolean) {
|
|
121
|
+
open.value = val
|
|
122
|
+
|
|
123
|
+
if (val) {
|
|
124
|
+
// When opening, set filter to current text so items are filtered by what's in the input
|
|
125
|
+
filterSearch.value = modelValue.value || ''
|
|
126
|
+
|
|
127
|
+
await nextTick()
|
|
128
|
+
primitiveElement.value?.highlightSelected()
|
|
129
|
+
isUserInputted.value = true
|
|
130
|
+
inputElement.value?.focus()
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
isUserInputted.value = false
|
|
134
|
+
filterSearch.value = ''
|
|
135
|
+
setTimeout(() => {
|
|
136
|
+
if (!val && props.resetSearchTermOnBlur)
|
|
137
|
+
resetSearchTerm.trigger()
|
|
138
|
+
}, 1)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const resetSearchTerm = createEventHook()
|
|
143
|
+
const isUserInputted = ref(false)
|
|
144
|
+
const isVirtual = ref(false)
|
|
145
|
+
const inputElement = ref<HTMLInputElement>()
|
|
146
|
+
const triggerElement = ref<HTMLElement>()
|
|
147
|
+
|
|
148
|
+
const highlightedElement = computed(() => primitiveElement.value?.highlightedElement ?? undefined)
|
|
149
|
+
|
|
150
|
+
const allItems = ref<Map<string, string>>(new Map())
|
|
151
|
+
const allGroups = ref<Map<string, Set<string>>>(new Map())
|
|
152
|
+
|
|
153
|
+
const { contains } = useFilter({ sensitivity: 'base' })
|
|
154
|
+
|
|
155
|
+
const filterSearch = ref('')
|
|
156
|
+
|
|
157
|
+
const filterState = computed<{
|
|
158
|
+
count: number
|
|
159
|
+
items: Map<string, number>
|
|
160
|
+
groups: Set<string>
|
|
161
|
+
}>((oldValue) => {
|
|
162
|
+
if (!filterSearch.value || props.ignoreFilter || isVirtual.value) {
|
|
163
|
+
return {
|
|
164
|
+
count: allItems.value.size,
|
|
165
|
+
items: oldValue?.items ?? new Map(),
|
|
166
|
+
groups: oldValue?.groups ?? new Set(allGroups.value.keys()),
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
let itemCount = 0
|
|
171
|
+
const filteredItems = new Map<string, number>()
|
|
172
|
+
const filteredGroups = new Set<string>()
|
|
173
|
+
|
|
174
|
+
for (const [id, value] of allItems.value) {
|
|
175
|
+
const score = contains(value, filterSearch.value)
|
|
176
|
+
filteredItems.set(id, score ? 1 : 0)
|
|
177
|
+
if (score)
|
|
178
|
+
itemCount++
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
for (const [groupId, group] of allGroups.value) {
|
|
182
|
+
for (const itemId of group) {
|
|
183
|
+
if (filteredItems.get(itemId)! > 0) {
|
|
184
|
+
filteredGroups.add(groupId)
|
|
185
|
+
break
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return {
|
|
191
|
+
count: itemCount,
|
|
192
|
+
items: filteredItems,
|
|
193
|
+
groups: filteredGroups,
|
|
194
|
+
}
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
const inst = getCurrentInstance()
|
|
198
|
+
onMounted(() => {
|
|
199
|
+
if (inst?.exposed) {
|
|
200
|
+
inst.exposed.highlightItem = primitiveElement.value?.highlightItem
|
|
201
|
+
inst.exposed.highlightFirstItem = primitiveElement.value?.highlightFirstItem
|
|
202
|
+
inst.exposed.highlightSelected = primitiveElement.value?.highlightSelected
|
|
203
|
+
}
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
defineExpose({
|
|
207
|
+
filtered: filterState,
|
|
208
|
+
highlightedElement,
|
|
209
|
+
highlightItem: primitiveElement.value?.highlightItem,
|
|
210
|
+
highlightFirstItem: primitiveElement.value?.highlightFirstItem,
|
|
211
|
+
highlightSelected: primitiveElement.value?.highlightSelected,
|
|
212
|
+
})
|
|
213
|
+
|
|
214
|
+
// Provide the Combobox context so all Combobox sub-components work inside Autocomplete
|
|
215
|
+
provideComboboxRootContext({
|
|
216
|
+
modelValue: contextModelValue as any,
|
|
217
|
+
multiple: ref(false),
|
|
218
|
+
disabled,
|
|
219
|
+
open,
|
|
220
|
+
onOpenChange,
|
|
221
|
+
contentId: '',
|
|
222
|
+
isUserInputted,
|
|
223
|
+
isVirtual,
|
|
224
|
+
inputElement,
|
|
225
|
+
highlightedElement,
|
|
226
|
+
onInputElementChange: val => inputElement.value = val,
|
|
227
|
+
triggerElement,
|
|
228
|
+
onTriggerElementChange: val => triggerElement.value = val,
|
|
229
|
+
parentElement,
|
|
230
|
+
resetSearchTermOnSelect: ref(false),
|
|
231
|
+
onResetSearchTerm: resetSearchTerm.on,
|
|
232
|
+
allItems,
|
|
233
|
+
allGroups,
|
|
234
|
+
filterSearch,
|
|
235
|
+
filterState,
|
|
236
|
+
ignoreFilter,
|
|
237
|
+
openOnFocus,
|
|
238
|
+
openOnClick,
|
|
239
|
+
resetModelValueOnClear: ref(true),
|
|
240
|
+
})
|
|
241
|
+
|
|
242
|
+
// Provide autocomplete-specific context
|
|
243
|
+
provideAutocompleteRootContext({
|
|
244
|
+
modelValue,
|
|
245
|
+
})
|
|
246
|
+
</script>
|
|
247
|
+
|
|
248
|
+
<template>
|
|
249
|
+
<PopperRoot>
|
|
250
|
+
<ListboxRoot
|
|
251
|
+
ref="primitiveElement"
|
|
252
|
+
v-bind="$attrs"
|
|
253
|
+
v-model="(contextModelValue as any)"
|
|
254
|
+
:style="{
|
|
255
|
+
pointerEvents: open ? 'auto' : undefined,
|
|
256
|
+
}"
|
|
257
|
+
:as="as"
|
|
258
|
+
:as-child="asChild"
|
|
259
|
+
:dir="dir"
|
|
260
|
+
:name="name"
|
|
261
|
+
:required="required"
|
|
262
|
+
:disabled="disabled"
|
|
263
|
+
:highlight-on-hover="highlightOnHover"
|
|
264
|
+
@highlight="emits('highlight', $event as any)"
|
|
265
|
+
>
|
|
266
|
+
<slot
|
|
267
|
+
:open="open"
|
|
268
|
+
:model-value="modelValue"
|
|
269
|
+
/>
|
|
270
|
+
</ListboxRoot>
|
|
271
|
+
</PopperRoot>
|
|
272
|
+
</template>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export {
|
|
2
|
+
default as AutocompleteInput,
|
|
3
|
+
type AutocompleteInputEmits,
|
|
4
|
+
type AutocompleteInputProps,
|
|
5
|
+
} from './AutocompleteInput.vue'
|
|
6
|
+
export {
|
|
7
|
+
default as AutocompleteRoot,
|
|
8
|
+
type AutocompleteRootEmits,
|
|
9
|
+
type AutocompleteRootProps,
|
|
10
|
+
injectAutocompleteRootContext,
|
|
11
|
+
} from './AutocompleteRoot.vue'
|
|
12
|
+
|
|
13
|
+
// Re-export Combobox sub-components as Autocomplete equivalents.
|
|
14
|
+
// These components inject ComboboxRootContext which AutocompleteRoot provides.
|
|
15
|
+
export {
|
|
16
|
+
ComboboxAnchor as AutocompleteAnchor,
|
|
17
|
+
type ComboboxAnchorProps as AutocompleteAnchorProps,
|
|
18
|
+
} from '@/Combobox'
|
|
19
|
+
export {
|
|
20
|
+
ComboboxArrow as AutocompleteArrow,
|
|
21
|
+
type ComboboxArrowProps as AutocompleteArrowProps,
|
|
22
|
+
} from '@/Combobox'
|
|
23
|
+
export {
|
|
24
|
+
ComboboxCancel as AutocompleteCancel,
|
|
25
|
+
type ComboboxCancelProps as AutocompleteCancelProps,
|
|
26
|
+
} from '@/Combobox'
|
|
27
|
+
export {
|
|
28
|
+
ComboboxContent as AutocompleteContent,
|
|
29
|
+
type ComboboxContentEmits as AutocompleteContentEmits,
|
|
30
|
+
type ComboboxContentProps as AutocompleteContentProps,
|
|
31
|
+
} from '@/Combobox'
|
|
32
|
+
export {
|
|
33
|
+
ComboboxEmpty as AutocompleteEmpty,
|
|
34
|
+
type ComboboxEmptyProps as AutocompleteEmptyProps,
|
|
35
|
+
} from '@/Combobox'
|
|
36
|
+
export {
|
|
37
|
+
ComboboxGroup as AutocompleteGroup,
|
|
38
|
+
type ComboboxGroupProps as AutocompleteGroupProps,
|
|
39
|
+
} from '@/Combobox'
|
|
40
|
+
export {
|
|
41
|
+
ComboboxItem as AutocompleteItem,
|
|
42
|
+
type ComboboxItemEmits as AutocompleteItemEmits,
|
|
43
|
+
type ComboboxItemProps as AutocompleteItemProps,
|
|
44
|
+
} from '@/Combobox'
|
|
45
|
+
export {
|
|
46
|
+
ComboboxItemIndicator as AutocompleteItemIndicator,
|
|
47
|
+
type ComboboxItemIndicatorProps as AutocompleteItemIndicatorProps,
|
|
48
|
+
} from '@/Combobox'
|
|
49
|
+
export {
|
|
50
|
+
ComboboxLabel as AutocompleteLabel,
|
|
51
|
+
type ComboboxLabelProps as AutocompleteLabelProps,
|
|
52
|
+
} from '@/Combobox'
|
|
53
|
+
export {
|
|
54
|
+
ComboboxPortal as AutocompletePortal,
|
|
55
|
+
type ComboboxPortalProps as AutocompletePortalProps,
|
|
56
|
+
} from '@/Combobox'
|
|
57
|
+
export {
|
|
58
|
+
ComboboxSeparator as AutocompleteSeparator,
|
|
59
|
+
type ComboboxSeparatorProps as AutocompleteSeparatorProps,
|
|
60
|
+
} from '@/Combobox'
|
|
61
|
+
export {
|
|
62
|
+
ComboboxTrigger as AutocompleteTrigger,
|
|
63
|
+
type ComboboxTriggerProps as AutocompleteTriggerProps,
|
|
64
|
+
} from '@/Combobox'
|
|
65
|
+
export {
|
|
66
|
+
ComboboxViewport as AutocompleteViewport,
|
|
67
|
+
type ComboboxViewportProps as AutocompleteViewportProps,
|
|
68
|
+
} from '@/Combobox'
|
|
69
|
+
export {
|
|
70
|
+
ComboboxVirtualizer as AutocompleteVirtualizer,
|
|
71
|
+
type ComboboxVirtualizerProps as AutocompleteVirtualizerProps,
|
|
72
|
+
} from '@/Combobox'
|
|
@@ -171,7 +171,8 @@ function handleArrowKey(e: KeyboardEvent) {
|
|
|
171
171
|
<template>
|
|
172
172
|
<Primitive
|
|
173
173
|
ref="primitiveElement"
|
|
174
|
-
|
|
174
|
+
:as="props.as"
|
|
175
|
+
:as-child="props.asChild"
|
|
175
176
|
role="button"
|
|
176
177
|
:aria-label="labelText"
|
|
177
178
|
data-reka-calendar-cell-trigger
|
|
@@ -17,10 +17,15 @@ const readonly = computed(() => rootContext.readonly.value ? true : undefined)
|
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<template>
|
|
20
|
+
<!--
|
|
21
|
+
role="application" is intentional: it ensures screen readers like NVDA pass
|
|
22
|
+
keyboard events (arrow keys) to the web app instead of intercepting them
|
|
23
|
+
for virtual cursor navigation. This is the same pattern used by React Aria.
|
|
24
|
+
-->
|
|
20
25
|
<Primitive
|
|
21
26
|
v-bind="props"
|
|
22
27
|
tabindex="-1"
|
|
23
|
-
role="
|
|
28
|
+
role="application"
|
|
24
29
|
:aria-readonly="readonly"
|
|
25
30
|
:aria-disabled="disabled"
|
|
26
31
|
:data-readonly="readonly && ''"
|
|
@@ -26,6 +26,12 @@ defineSlots<CalendarNextSlot>()
|
|
|
26
26
|
const disabled = computed(() => rootContext.disabled.value || rootContext.isNextButtonDisabled(props.nextPage))
|
|
27
27
|
|
|
28
28
|
const rootContext = injectCalendarRootContext()
|
|
29
|
+
|
|
30
|
+
function handleClick() {
|
|
31
|
+
if (disabled.value)
|
|
32
|
+
return
|
|
33
|
+
rootContext.nextPage(props.nextPage)
|
|
34
|
+
}
|
|
29
35
|
</script>
|
|
30
36
|
|
|
31
37
|
<template>
|
|
@@ -33,11 +39,11 @@ const rootContext = injectCalendarRootContext()
|
|
|
33
39
|
:as="props.as"
|
|
34
40
|
:as-child="props.asChild"
|
|
35
41
|
aria-label="Next page"
|
|
36
|
-
:type="as === 'button' ? 'button' : undefined"
|
|
42
|
+
:type="props.as === 'button' ? 'button' : undefined"
|
|
37
43
|
:aria-disabled="disabled || undefined"
|
|
38
44
|
:data-disabled="disabled || undefined"
|
|
39
45
|
:disabled="disabled"
|
|
40
|
-
@click="
|
|
46
|
+
@click="handleClick"
|
|
41
47
|
>
|
|
42
48
|
<slot :disabled>
|
|
43
49
|
Next page
|
|
@@ -26,6 +26,12 @@ defineSlots<CalendarPrevSlot>()
|
|
|
26
26
|
const disabled = computed(() => rootContext.disabled.value || rootContext.isPrevButtonDisabled(props.prevPage))
|
|
27
27
|
|
|
28
28
|
const rootContext = injectCalendarRootContext()
|
|
29
|
+
|
|
30
|
+
function handleClick() {
|
|
31
|
+
if (disabled.value)
|
|
32
|
+
return
|
|
33
|
+
rootContext.prevPage(props.prevPage)
|
|
34
|
+
}
|
|
29
35
|
</script>
|
|
30
36
|
|
|
31
37
|
<template>
|
|
@@ -33,11 +39,11 @@ const rootContext = injectCalendarRootContext()
|
|
|
33
39
|
aria-label="Previous page"
|
|
34
40
|
:as="props.as"
|
|
35
41
|
:as-child="props.asChild"
|
|
36
|
-
:type="as === 'button' ? 'button' : undefined"
|
|
42
|
+
:type="props.as === 'button' ? 'button' : undefined"
|
|
37
43
|
:aria-disabled="disabled || undefined"
|
|
38
44
|
:data-disabled="disabled || undefined"
|
|
39
45
|
:disabled="disabled"
|
|
40
|
-
@click="
|
|
46
|
+
@click="handleClick"
|
|
41
47
|
>
|
|
42
48
|
<slot :disabled>
|
|
43
49
|
Prev page
|
|
@@ -97,7 +97,7 @@ export interface CalendarRootProps extends PrimitiveProps {
|
|
|
97
97
|
nextPage?: (placeholder: DateValue) => DateValue
|
|
98
98
|
/** A function that returns the previous page of the calendar. It receives the current placeholder as an argument inside the component. */
|
|
99
99
|
prevPage?: (placeholder: DateValue) => DateValue
|
|
100
|
-
/** The controlled
|
|
100
|
+
/** The controlled selected date value of the calendar. Can be bound as `v-model`. */
|
|
101
101
|
modelValue?: DateValue | DateValue[] | undefined
|
|
102
102
|
/** Whether multiple dates can be selected */
|
|
103
103
|
multiple?: boolean
|
|
@@ -7,11 +7,11 @@ import { useVModel } from '@vueuse/core'
|
|
|
7
7
|
import { createContext, isNullish, isValueEqualOrExist, useFormControl, useForwardExpose } from '@/shared'
|
|
8
8
|
import { injectCheckboxGroupRootContext } from './CheckboxGroupRoot.vue'
|
|
9
9
|
|
|
10
|
-
export interface CheckboxRootProps extends PrimitiveProps, FormFieldProps {
|
|
10
|
+
export interface CheckboxRootProps<T = boolean> extends PrimitiveProps, FormFieldProps {
|
|
11
11
|
/** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */
|
|
12
|
-
defaultValue?:
|
|
12
|
+
defaultValue?: T | 'indeterminate'
|
|
13
13
|
/** The controlled value of the checkbox. Can be binded with v-model. */
|
|
14
|
-
modelValue?:
|
|
14
|
+
modelValue?: T | 'indeterminate' | null
|
|
15
15
|
/** When `true`, prevents the user from interacting with the checkbox */
|
|
16
16
|
disabled?: boolean
|
|
17
17
|
/**
|
|
@@ -21,11 +21,19 @@ export interface CheckboxRootProps extends PrimitiveProps, FormFieldProps {
|
|
|
21
21
|
value?: AcceptableValue
|
|
22
22
|
/** Id of the element */
|
|
23
23
|
id?: string
|
|
24
|
+
/**
|
|
25
|
+
* The value used when the checkbox is checked. Defaults to `true`.
|
|
26
|
+
*/
|
|
27
|
+
trueValue?: T
|
|
28
|
+
/**
|
|
29
|
+
* The value used when the checkbox is unchecked. Defaults to `false`.
|
|
30
|
+
*/
|
|
31
|
+
falseValue?: T
|
|
24
32
|
}
|
|
25
33
|
|
|
26
|
-
export type CheckboxRootEmits = {
|
|
34
|
+
export type CheckboxRootEmits<T = boolean> = {
|
|
27
35
|
/** Event handler called when the value of the checkbox changes. */
|
|
28
|
-
'update:modelValue': [value:
|
|
36
|
+
'update:modelValue': [value: T | 'indeterminate']
|
|
29
37
|
}
|
|
30
38
|
|
|
31
39
|
interface CheckboxRootContext {
|
|
@@ -37,7 +45,7 @@ export const [injectCheckboxRootContext, provideCheckboxRootContext]
|
|
|
37
45
|
= createContext<CheckboxRootContext>('CheckboxRoot')
|
|
38
46
|
</script>
|
|
39
47
|
|
|
40
|
-
<script setup lang="ts">
|
|
48
|
+
<script setup lang="ts" generic="T = boolean">
|
|
41
49
|
import { isEqual } from 'ohash'
|
|
42
50
|
import { computed } from 'vue'
|
|
43
51
|
import { Primitive } from '@/Primitive'
|
|
@@ -49,12 +57,14 @@ defineOptions({
|
|
|
49
57
|
inheritAttrs: false,
|
|
50
58
|
})
|
|
51
59
|
|
|
52
|
-
const props = withDefaults(defineProps<CheckboxRootProps
|
|
60
|
+
const props = withDefaults(defineProps<CheckboxRootProps<T>>(), {
|
|
53
61
|
modelValue: undefined,
|
|
54
62
|
value: 'on',
|
|
55
63
|
as: 'button',
|
|
64
|
+
trueValue: (() => true) as unknown as undefined,
|
|
65
|
+
falseValue: (() => false) as unknown as undefined,
|
|
56
66
|
})
|
|
57
|
-
const emits = defineEmits<CheckboxRootEmits
|
|
67
|
+
const emits = defineEmits<CheckboxRootEmits<T>>()
|
|
58
68
|
|
|
59
69
|
defineSlots<{
|
|
60
70
|
default?: (props: {
|
|
@@ -69,19 +79,23 @@ const { forwardRef, currentElement } = useForwardExpose()
|
|
|
69
79
|
|
|
70
80
|
const checkboxGroupContext = injectCheckboxGroupRootContext(null)
|
|
71
81
|
|
|
72
|
-
const modelValue = useVModel(props, 'modelValue', emits, {
|
|
73
|
-
defaultValue: props.defaultValue,
|
|
82
|
+
const modelValue = useVModel(props as any, 'modelValue', emits as any, {
|
|
83
|
+
defaultValue: props.defaultValue ?? props.falseValue,
|
|
74
84
|
passive: (props.modelValue === undefined) as false,
|
|
75
|
-
}) as Ref<
|
|
85
|
+
}) as Ref<T | 'indeterminate'>
|
|
76
86
|
|
|
77
87
|
const disabled = computed(() => checkboxGroupContext?.disabled.value || props.disabled)
|
|
78
88
|
|
|
89
|
+
const isChecked = computed(() => isEqual(modelValue.value, props.trueValue))
|
|
90
|
+
|
|
79
91
|
const checkboxState = computed<CheckedState>(() => {
|
|
80
92
|
if (!isNullish(checkboxGroupContext?.modelValue.value)) {
|
|
81
93
|
return isValueEqualOrExist(checkboxGroupContext.modelValue.value, props.value)
|
|
82
94
|
}
|
|
83
95
|
else {
|
|
84
|
-
|
|
96
|
+
if (modelValue.value === 'indeterminate')
|
|
97
|
+
return 'indeterminate'
|
|
98
|
+
return isChecked.value
|
|
85
99
|
}
|
|
86
100
|
})
|
|
87
101
|
|
|
@@ -98,7 +112,12 @@ function handleClick() {
|
|
|
98
112
|
checkboxGroupContext.modelValue.value = modelValueArray
|
|
99
113
|
}
|
|
100
114
|
else {
|
|
101
|
-
|
|
115
|
+
if (modelValue.value === 'indeterminate') {
|
|
116
|
+
modelValue.value = props.trueValue as T
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
modelValue.value = isChecked.value ? props.falseValue as T : props.trueValue as T
|
|
120
|
+
}
|
|
102
121
|
}
|
|
103
122
|
}
|
|
104
123
|
|