reka-ui 2.8.2 → 2.9.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/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/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/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.map +1 -1
- 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/MenuItemImpl.cjs +8 -3
- package/dist/Menu/MenuItemImpl.cjs.map +1 -1
- package/dist/Menu/MenuItemImpl.js +9 -4
- package/dist/Menu/MenuItemImpl.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/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 +136 -26
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js +136 -26
- 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/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/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 +0 -1
- package/dist/date/useDateField.cjs.map +1 -1
- package/dist/date/useDateField.js +0 -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 +216 -46
- package/dist/index.d.cts +3 -8834
- package/dist/index.d.ts +3 -8834
- package/dist/index.js +116 -47
- 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 +11061 -0
- package/dist/index3.d.cts.map +1 -0
- package/dist/index3.d.ts +11061 -0
- package/dist/index3.d.ts.map +1 -0
- package/dist/internal.cjs +81 -0
- package/dist/internal.d.cts +22 -0
- package/dist/internal.d.cts.map +1 -0
- package/dist/internal.d.ts +22 -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/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/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/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 +6 -2
- 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/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/DateField/DateFieldRoot.vue +1 -1
- package/src/DateRangeField/DateRangeFieldRoot.vue +11 -4
- package/src/DismissableLayer/utils.ts +1 -2
- package/src/DropdownMenu/DropdownMenuFilter.vue +119 -0
- package/src/DropdownMenu/index.ts +5 -0
- package/src/Menu/MenuContentImpl.vue +68 -2
- package/src/Menu/MenuItemImpl.vue +11 -6
- 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 +32 -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 +32 -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/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 +218 -49
- package/src/Splitter/SplitterPanel.vue +11 -6
- 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/ToastAnnounce.vue +4 -1
- 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 +32 -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 +32 -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 +37 -39
- package/src/shared/macro.ts +11 -0
- package/src/shared/useArrowNavigation.ts +8 -2
- package/src/shared/useForwardExpose.ts +20 -5
- package/src/shared/useId.ts +6 -7
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts.map +0 -1
|
@@ -80,7 +80,7 @@ export interface RangeCalendarRootProps extends PrimitiveProps {
|
|
|
80
80
|
defaultPlaceholder?: DateValue
|
|
81
81
|
/** The default value for the calendar */
|
|
82
82
|
defaultValue?: DateRange
|
|
83
|
-
/** The controlled
|
|
83
|
+
/** The controlled selected date range of the calendar. Can be bound as `v-model`. */
|
|
84
84
|
modelValue?: DateRange | null
|
|
85
85
|
/** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */
|
|
86
86
|
placeholder?: DateValue
|
|
@@ -379,7 +379,7 @@ watch([startValue, endValue], ([_startValue, _endValue]) => {
|
|
|
379
379
|
})
|
|
380
380
|
|
|
381
381
|
const kbd = useKbd()
|
|
382
|
-
useEventListener('keydown', (ev) => {
|
|
382
|
+
useEventListener(parentElement, 'keydown', (ev) => {
|
|
383
383
|
if (ev.key === kbd.ESCAPE && isEditing.value) {
|
|
384
384
|
// Abort start and end selection
|
|
385
385
|
startValue.value = validModelValue.value.start?.copy()
|
|
@@ -124,15 +124,12 @@ export function useRangeCalendarState(props: UseRangeCalendarProps) {
|
|
|
124
124
|
if (props.maximumDays?.value && !props.end.value) {
|
|
125
125
|
const maximumDays = props.maximumDays.value
|
|
126
126
|
const anchor = props.start.value
|
|
127
|
+
const focused = props.focusedValue.value
|
|
127
128
|
|
|
128
|
-
if (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
const minStart = anchor.subtract({ days: maximumDays - 1 })
|
|
134
|
-
return { start: minStart, end: anchor }
|
|
135
|
-
}
|
|
129
|
+
if (!isBefore(focused, anchor))
|
|
130
|
+
return { start: anchor, end: anchor.add({ days: maximumDays - 1 }) }
|
|
131
|
+
|
|
132
|
+
return { start: anchor.subtract({ days: maximumDays - 1 }), end: anchor }
|
|
136
133
|
}
|
|
137
134
|
|
|
138
135
|
const isValid = areAllDaysBetweenValid(start, end, props.allowNonContiguousRanges.value ? () => false : props.isDateUnavailable, rangeIsDateDisabled, props.isDateHighlightable)
|
|
@@ -79,6 +79,7 @@ import { Primitive } from '@/Primitive'
|
|
|
79
79
|
import { assert } from './utils/assert'
|
|
80
80
|
import { calculateDeltaPercentage, calculateUnsafeDefaultLayout } from './utils/calculate'
|
|
81
81
|
import { callPanelCallbacks } from './utils/callPanelCallbacks'
|
|
82
|
+
import { fuzzyCompareNumbers } from './utils/compare'
|
|
82
83
|
import debounce from './utils/debounce'
|
|
83
84
|
import { getResizeHandleElement } from './utils/dom'
|
|
84
85
|
import { getResizeEventCursorPosition, isKeyDown, isMouseEvent, isTouchEvent } from './utils/events'
|
|
@@ -92,6 +93,7 @@ import {
|
|
|
92
93
|
reportConstraintsViolation,
|
|
93
94
|
} from './utils/registry'
|
|
94
95
|
import { computePanelFlexBoxStyle } from './utils/style'
|
|
96
|
+
import { convertPanelConstraintsToPercent, hasPixelSizedPanel, recalculateLayoutForPixelPanels } from './utils/units'
|
|
95
97
|
import { validatePanelGroupLayout } from './utils/validation'
|
|
96
98
|
|
|
97
99
|
const props = withDefaults(defineProps<SplitterGroupProps>(), {
|
|
@@ -118,6 +120,7 @@ const dir = useDirection()
|
|
|
118
120
|
const { forwardRef, currentElement: panelGroupElementRef } = useForwardExpose()
|
|
119
121
|
|
|
120
122
|
const dragState = ref<DragState | null>(null)
|
|
123
|
+
const groupSizeInPixels = ref<number | null>(null)
|
|
121
124
|
const layout = ref<number[]>([])
|
|
122
125
|
const panelIdToLastNotifiedSizeMapRef = ref<Record<string, number>>({})
|
|
123
126
|
const panelSizeBeforeCollapseRef = ref<Map<string, number>>(new Map())
|
|
@@ -149,6 +152,45 @@ const eagerValuesRef = ref<{
|
|
|
149
152
|
panelDataArrayChanged: false,
|
|
150
153
|
})
|
|
151
154
|
|
|
155
|
+
function getGroupSizeInPixels(): number | null {
|
|
156
|
+
if (groupSizeInPixels.value != null)
|
|
157
|
+
return groupSizeInPixels.value
|
|
158
|
+
|
|
159
|
+
const element = panelGroupElementRef.value
|
|
160
|
+
if (element && element instanceof HTMLElement) {
|
|
161
|
+
const rect = element.getBoundingClientRect()
|
|
162
|
+
const size = direction.value === 'horizontal' ? rect.width : rect.height
|
|
163
|
+
|
|
164
|
+
if (!Number.isNaN(size)) {
|
|
165
|
+
groupSizeInPixels.value = size
|
|
166
|
+
return size
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return null
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function getPanelConstraintsInPercent(groupSizeOverride?: number | null) {
|
|
174
|
+
const groupSize = groupSizeOverride ?? getGroupSizeInPixels()
|
|
175
|
+
|
|
176
|
+
return convertPanelConstraintsToPercent({
|
|
177
|
+
panelDataArray: eagerValuesRef.value.panelDataArray,
|
|
178
|
+
groupSizeInPixels: groupSize,
|
|
179
|
+
})
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function getPanelDataWithPercentConstraints(groupSizeOverride?: number | null) {
|
|
183
|
+
const percentConstraints = getPanelConstraintsInPercent(groupSizeOverride)
|
|
184
|
+
|
|
185
|
+
if (!percentConstraints)
|
|
186
|
+
return null
|
|
187
|
+
|
|
188
|
+
return eagerValuesRef.value.panelDataArray.map((panelData, index) => ({
|
|
189
|
+
...panelData,
|
|
190
|
+
constraints: percentConstraints[index],
|
|
191
|
+
}))
|
|
192
|
+
}
|
|
193
|
+
|
|
152
194
|
const setLayout = (val: number[]) => layout.value = val
|
|
153
195
|
|
|
154
196
|
useWindowSplitterPanelGroupBehavior({
|
|
@@ -158,6 +200,33 @@ useWindowSplitterPanelGroupBehavior({
|
|
|
158
200
|
panelDataArray: eagerValuesRef.value.panelDataArray,
|
|
159
201
|
setLayout,
|
|
160
202
|
panelGroupElement: panelGroupElementRef,
|
|
203
|
+
getPanelDataWithPercentConstraints,
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
watchEffect((onCleanup) => {
|
|
207
|
+
const element = panelGroupElementRef.value
|
|
208
|
+
if (!element)
|
|
209
|
+
return
|
|
210
|
+
|
|
211
|
+
if (typeof ResizeObserver !== 'function')
|
|
212
|
+
return
|
|
213
|
+
|
|
214
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
215
|
+
const entry = entries[0]
|
|
216
|
+
if (!entry)
|
|
217
|
+
return
|
|
218
|
+
|
|
219
|
+
const { height, width } = entry.contentRect
|
|
220
|
+
const nextSize = direction.value === 'horizontal' ? width : height
|
|
221
|
+
|
|
222
|
+
if (!Number.isNaN(nextSize))
|
|
223
|
+
groupSizeInPixels.value = nextSize
|
|
224
|
+
})
|
|
225
|
+
|
|
226
|
+
if (element instanceof HTMLElement)
|
|
227
|
+
resizeObserver.observe(element)
|
|
228
|
+
|
|
229
|
+
onCleanup(() => resizeObserver.disconnect())
|
|
161
230
|
})
|
|
162
231
|
|
|
163
232
|
watchEffect(() => {
|
|
@@ -254,18 +323,24 @@ watch(() => eagerValuesRef.value.panelDataArrayChanged, () => {
|
|
|
254
323
|
}
|
|
255
324
|
|
|
256
325
|
if (unsafeLayout === null) {
|
|
326
|
+
const panelDataArrayWithPercentConstraints = getPanelDataWithPercentConstraints()
|
|
327
|
+
if (!panelDataArrayWithPercentConstraints)
|
|
328
|
+
return
|
|
329
|
+
|
|
257
330
|
unsafeLayout = calculateUnsafeDefaultLayout({
|
|
258
|
-
panelDataArray,
|
|
331
|
+
panelDataArray: panelDataArrayWithPercentConstraints,
|
|
259
332
|
})
|
|
260
333
|
}
|
|
261
334
|
|
|
335
|
+
const panelConstraints = getPanelConstraintsInPercent()
|
|
336
|
+
if (!panelConstraints)
|
|
337
|
+
return
|
|
338
|
+
|
|
262
339
|
// Validate even saved layouts in case something has changed since last render
|
|
263
340
|
// e.g. for pixel groups, this could be the size of the window
|
|
264
341
|
const nextLayout = validatePanelGroupLayout({
|
|
265
342
|
layout: unsafeLayout,
|
|
266
|
-
panelConstraints
|
|
267
|
-
panelData => panelData.constraints,
|
|
268
|
-
),
|
|
343
|
+
panelConstraints,
|
|
269
344
|
})
|
|
270
345
|
|
|
271
346
|
if (!areEqual(prevLayout, nextLayout)) {
|
|
@@ -283,6 +358,49 @@ watch(() => eagerValuesRef.value.panelDataArrayChanged, () => {
|
|
|
283
358
|
}
|
|
284
359
|
})
|
|
285
360
|
|
|
361
|
+
watch(groupSizeInPixels, (nextSize, prevSize) => {
|
|
362
|
+
if (prevSize == null || nextSize == null)
|
|
363
|
+
return
|
|
364
|
+
|
|
365
|
+
const { layout: prevLayout, panelDataArray } = eagerValuesRef.value
|
|
366
|
+
if (prevLayout.length === 0)
|
|
367
|
+
return
|
|
368
|
+
if (!hasPixelSizedPanel(panelDataArray))
|
|
369
|
+
return
|
|
370
|
+
|
|
371
|
+
const recalculatedLayout = recalculateLayoutForPixelPanels({
|
|
372
|
+
layout: prevLayout,
|
|
373
|
+
panelDataArray,
|
|
374
|
+
prevGroupSize: prevSize,
|
|
375
|
+
nextGroupSize: nextSize,
|
|
376
|
+
})
|
|
377
|
+
|
|
378
|
+
if (!recalculatedLayout)
|
|
379
|
+
return
|
|
380
|
+
|
|
381
|
+
const panelConstraints = getPanelConstraintsInPercent(nextSize)
|
|
382
|
+
if (!panelConstraints)
|
|
383
|
+
return
|
|
384
|
+
|
|
385
|
+
const nextLayout = validatePanelGroupLayout({
|
|
386
|
+
layout: recalculatedLayout,
|
|
387
|
+
panelConstraints,
|
|
388
|
+
})
|
|
389
|
+
|
|
390
|
+
if (!compareLayouts(prevLayout, nextLayout)) {
|
|
391
|
+
setLayout(nextLayout)
|
|
392
|
+
|
|
393
|
+
eagerValuesRef.value.layout = nextLayout
|
|
394
|
+
emits('layout', nextLayout)
|
|
395
|
+
|
|
396
|
+
callPanelCallbacks(
|
|
397
|
+
panelDataArray,
|
|
398
|
+
nextLayout,
|
|
399
|
+
panelIdToLastNotifiedSizeMapRef.value,
|
|
400
|
+
)
|
|
401
|
+
}
|
|
402
|
+
})
|
|
403
|
+
|
|
286
404
|
function registerResizeHandle(dragHandleId: string) {
|
|
287
405
|
return function resizeHandler(event: ResizeEvent) {
|
|
288
406
|
event.preventDefault()
|
|
@@ -317,7 +435,9 @@ function registerResizeHandle(dragHandleId: string) {
|
|
|
317
435
|
if (dir.value === 'rtl' && isHorizontal)
|
|
318
436
|
delta = -delta
|
|
319
437
|
|
|
320
|
-
const panelConstraints =
|
|
438
|
+
const panelConstraints = getPanelConstraintsInPercent()
|
|
439
|
+
if (!panelConstraints)
|
|
440
|
+
return
|
|
321
441
|
|
|
322
442
|
const nextLayout = adjustLayoutByDelta({
|
|
323
443
|
delta,
|
|
@@ -378,20 +498,35 @@ function registerResizeHandle(dragHandleId: string) {
|
|
|
378
498
|
function resizePanel(panelData: PanelData, unsafePanelSize: number) {
|
|
379
499
|
const { layout: prevLayout, panelDataArray } = eagerValuesRef.value
|
|
380
500
|
|
|
381
|
-
const panelConstraintsArray =
|
|
501
|
+
const panelConstraintsArray = getPanelConstraintsInPercent()
|
|
502
|
+
if (!panelConstraintsArray)
|
|
503
|
+
return
|
|
504
|
+
|
|
505
|
+
const panelIndex = findPanelDataIndex(panelDataArray, panelData)
|
|
506
|
+
const panelUnit = panelData.constraints.sizeUnit ?? '%'
|
|
507
|
+
|
|
508
|
+
// Convert px to percent if needed for internal calculation
|
|
509
|
+
let sizeInPercent = unsafePanelSize
|
|
510
|
+
if (panelUnit === 'px') {
|
|
511
|
+
const groupSize = getGroupSizeInPixels()
|
|
512
|
+
if (groupSize != null) {
|
|
513
|
+
sizeInPercent = (unsafePanelSize / groupSize) * 100
|
|
514
|
+
}
|
|
515
|
+
}
|
|
382
516
|
|
|
383
517
|
const { panelSize, pivotIndices } = panelDataHelper(
|
|
384
518
|
panelDataArray,
|
|
385
519
|
panelData,
|
|
386
520
|
prevLayout,
|
|
521
|
+
panelConstraintsArray,
|
|
387
522
|
)
|
|
388
523
|
|
|
389
524
|
assert(panelSize != null)
|
|
390
525
|
|
|
391
|
-
const isLastPanel =
|
|
526
|
+
const isLastPanel = panelIndex === panelDataArray.length - 1
|
|
392
527
|
const delta = isLastPanel
|
|
393
|
-
? panelSize -
|
|
394
|
-
:
|
|
528
|
+
? panelSize - sizeInPercent
|
|
529
|
+
: sizeInPercent - panelSize
|
|
395
530
|
|
|
396
531
|
const nextLayout = adjustLayoutByDelta({
|
|
397
532
|
delta,
|
|
@@ -420,39 +555,29 @@ function reevaluatePanelConstraints(panelData: PanelData, prevConstraints: Panel
|
|
|
420
555
|
const index = findPanelDataIndex(panelDataArray, panelData)
|
|
421
556
|
panelDataArray[index] = panelData
|
|
422
557
|
eagerValuesRef.value.panelDataArrayChanged = true
|
|
423
|
-
const {
|
|
424
|
-
collapsedSize: prevCollapsedSize = 0,
|
|
425
|
-
collapsible: prevCollapsible,
|
|
426
|
-
} = prevConstraints
|
|
427
558
|
|
|
428
|
-
const
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
maxSize: nextMaxSize = 100,
|
|
432
|
-
minSize: nextMinSize = 0,
|
|
433
|
-
} = panelData.constraints
|
|
559
|
+
const panelConstraintsArray = getPanelConstraintsInPercent()
|
|
560
|
+
if (!panelConstraintsArray)
|
|
561
|
+
return
|
|
434
562
|
|
|
563
|
+
const nextConstraints = panelConstraintsArray[index]
|
|
435
564
|
const { panelSize: prevPanelSize } = panelDataHelper(
|
|
436
565
|
panelDataArray,
|
|
437
566
|
panelData,
|
|
438
567
|
layout,
|
|
568
|
+
panelConstraintsArray,
|
|
439
569
|
)
|
|
440
|
-
|
|
441
|
-
|
|
570
|
+
|
|
571
|
+
if (prevPanelSize === null)
|
|
442
572
|
return
|
|
443
|
-
}
|
|
444
573
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
) {
|
|
450
|
-
if (
|
|
574
|
+
const nextCollapsedSize = nextConstraints?.collapsedSize ?? 0
|
|
575
|
+
const nextMaxSize = nextConstraints?.maxSize ?? 100
|
|
576
|
+
const nextMinSize = nextConstraints?.minSize ?? 0
|
|
577
|
+
|
|
578
|
+
if (nextConstraints?.collapsible && isPanelCollapsed(panelData)) {
|
|
579
|
+
if (prevPanelSize !== nextCollapsedSize)
|
|
451
580
|
resizePanel(panelData, nextCollapsedSize)
|
|
452
|
-
}
|
|
453
|
-
else {
|
|
454
|
-
// Stay collapsed
|
|
455
|
-
}
|
|
456
581
|
}
|
|
457
582
|
else if (prevPanelSize < nextMinSize) {
|
|
458
583
|
resizePanel(panelData, nextMinSize)
|
|
@@ -511,15 +636,15 @@ function collapsePanel(panelData: PanelData) {
|
|
|
511
636
|
const { layout: prevLayout, panelDataArray } = eagerValuesRef.value
|
|
512
637
|
|
|
513
638
|
if (panelData.constraints.collapsible) {
|
|
514
|
-
const panelConstraintsArray =
|
|
515
|
-
|
|
516
|
-
|
|
639
|
+
const panelConstraintsArray = getPanelConstraintsInPercent()
|
|
640
|
+
if (!panelConstraintsArray)
|
|
641
|
+
return
|
|
517
642
|
|
|
518
643
|
const {
|
|
519
644
|
collapsedSize = 0,
|
|
520
645
|
panelSize,
|
|
521
646
|
pivotIndices,
|
|
522
|
-
} = panelDataHelper(panelDataArray, panelData, prevLayout)
|
|
647
|
+
} = panelDataHelper(panelDataArray, panelData, prevLayout, panelConstraintsArray)
|
|
523
648
|
|
|
524
649
|
assert(
|
|
525
650
|
panelSize != null,
|
|
@@ -529,7 +654,13 @@ function collapsePanel(panelData: PanelData) {
|
|
|
529
654
|
if (panelSize !== collapsedSize) {
|
|
530
655
|
// Store size before collapse;
|
|
531
656
|
// This is the size that gets restored if the expand() API is used.
|
|
532
|
-
|
|
657
|
+
const sizeUnit = panelData.constraints.sizeUnit ?? '%'
|
|
658
|
+
const groupSize = groupSizeInPixels.value ?? getGroupSizeInPixels()
|
|
659
|
+
const sizeBeforeCollapse = sizeUnit === 'px' && groupSize
|
|
660
|
+
? (panelSize / 100) * groupSize
|
|
661
|
+
: panelSize
|
|
662
|
+
|
|
663
|
+
panelSizeBeforeCollapseRef.value.set(panelData.id, sizeBeforeCollapse)
|
|
533
664
|
|
|
534
665
|
const isLastPanel
|
|
535
666
|
= findPanelDataIndex(panelDataArray, panelData)
|
|
@@ -567,26 +698,35 @@ function expandPanel(panelData: PanelData) {
|
|
|
567
698
|
const { layout: prevLayout, panelDataArray } = eagerValuesRef.value
|
|
568
699
|
|
|
569
700
|
if (panelData.constraints.collapsible) {
|
|
570
|
-
const panelConstraintsArray =
|
|
571
|
-
|
|
572
|
-
|
|
701
|
+
const panelConstraintsArray = getPanelConstraintsInPercent()
|
|
702
|
+
if (!panelConstraintsArray)
|
|
703
|
+
return
|
|
573
704
|
|
|
574
705
|
const {
|
|
575
706
|
collapsedSize = 0,
|
|
576
|
-
panelSize,
|
|
707
|
+
panelSize = 0,
|
|
577
708
|
minSize = 0,
|
|
578
709
|
pivotIndices,
|
|
579
|
-
} = panelDataHelper(panelDataArray, panelData, prevLayout)
|
|
710
|
+
} = panelDataHelper(panelDataArray, panelData, prevLayout, panelConstraintsArray)
|
|
580
711
|
|
|
581
|
-
if (panelSize
|
|
712
|
+
if (fuzzyCompareNumbers(panelSize, collapsedSize) <= 0) {
|
|
582
713
|
// Restore this panel to the size it was before it was collapsed, if possible.
|
|
583
714
|
const prevPanelSize = panelSizeBeforeCollapseRef.value.get(
|
|
584
715
|
panelData.id,
|
|
585
716
|
)
|
|
717
|
+
const sizeUnit = panelData.constraints.sizeUnit ?? '%'
|
|
718
|
+
const groupSize = groupSizeInPixels.value ?? getGroupSizeInPixels()
|
|
719
|
+
|
|
720
|
+
const restoredSize
|
|
721
|
+
= sizeUnit === 'px' && groupSize
|
|
722
|
+
? prevPanelSize != null
|
|
723
|
+
? (prevPanelSize / groupSize) * 100
|
|
724
|
+
: null
|
|
725
|
+
: prevPanelSize
|
|
586
726
|
|
|
587
727
|
const baseSize
|
|
588
|
-
=
|
|
589
|
-
?
|
|
728
|
+
= restoredSize != null && restoredSize >= minSize
|
|
729
|
+
? restoredSize
|
|
590
730
|
: minSize
|
|
591
731
|
|
|
592
732
|
const isLastPanel
|
|
@@ -629,24 +769,42 @@ function getPanelSize(panelData: PanelData) {
|
|
|
629
769
|
`Panel size not found for panel "${panelData.id}"`,
|
|
630
770
|
)
|
|
631
771
|
|
|
772
|
+
// If the panel uses px units, convert from percent back to px
|
|
773
|
+
const panelUnit = panelData.constraints.sizeUnit ?? '%'
|
|
774
|
+
if (panelUnit === 'px') {
|
|
775
|
+
const groupSize = getGroupSizeInPixels()
|
|
776
|
+
if (groupSize != null) {
|
|
777
|
+
return (panelSize / 100) * groupSize
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
|
|
632
781
|
return panelSize
|
|
633
782
|
}
|
|
634
783
|
|
|
635
784
|
function isPanelCollapsed(panelData: PanelData) {
|
|
636
785
|
const { layout, panelDataArray } = eagerValuesRef.value
|
|
637
786
|
|
|
787
|
+
const panelConstraintsArray = getPanelConstraintsInPercent()
|
|
788
|
+
|
|
638
789
|
const {
|
|
639
790
|
collapsedSize = 0,
|
|
640
791
|
collapsible,
|
|
641
792
|
panelSize,
|
|
642
|
-
} = panelDataHelper(
|
|
793
|
+
} = panelDataHelper(
|
|
794
|
+
panelDataArray,
|
|
795
|
+
panelData,
|
|
796
|
+
layout,
|
|
797
|
+
panelConstraintsArray ?? undefined,
|
|
798
|
+
)
|
|
643
799
|
|
|
644
800
|
if (!collapsible)
|
|
645
801
|
return false
|
|
646
802
|
|
|
647
803
|
// panelSize is undefined during ssr due to vue ssr reactivity limitation.
|
|
648
804
|
if (panelSize === undefined) {
|
|
649
|
-
|
|
805
|
+
const panelIndex = findPanelDataIndex(panelDataArray, panelData)
|
|
806
|
+
const constraints = panelConstraintsArray?.[panelIndex] ?? panelData.constraints
|
|
807
|
+
return constraints.defaultSize === constraints.collapsedSize
|
|
650
808
|
}
|
|
651
809
|
else {
|
|
652
810
|
return panelSize === collapsedSize
|
|
@@ -656,11 +814,18 @@ function isPanelCollapsed(panelData: PanelData) {
|
|
|
656
814
|
function isPanelExpanded(panelData: PanelData) {
|
|
657
815
|
const { layout, panelDataArray } = eagerValuesRef.value
|
|
658
816
|
|
|
817
|
+
const panelConstraintsArray = getPanelConstraintsInPercent()
|
|
818
|
+
|
|
659
819
|
const {
|
|
660
820
|
collapsedSize = 0,
|
|
661
821
|
collapsible,
|
|
662
822
|
panelSize,
|
|
663
|
-
} = panelDataHelper(
|
|
823
|
+
} = panelDataHelper(
|
|
824
|
+
panelDataArray,
|
|
825
|
+
panelData,
|
|
826
|
+
layout,
|
|
827
|
+
panelConstraintsArray ?? undefined,
|
|
828
|
+
)
|
|
664
829
|
|
|
665
830
|
assert(
|
|
666
831
|
panelSize != null,
|
|
@@ -702,6 +867,7 @@ function panelDataHelper(
|
|
|
702
867
|
panelDataArray: PanelData[],
|
|
703
868
|
panelData: PanelData,
|
|
704
869
|
layout: number[],
|
|
870
|
+
panelConstraints?: PanelConstraints[] | null,
|
|
705
871
|
) {
|
|
706
872
|
const panelIndex = findPanelDataIndex(panelDataArray, panelData)
|
|
707
873
|
|
|
@@ -710,10 +876,13 @@ function panelDataHelper(
|
|
|
710
876
|
? [panelIndex - 1, panelIndex]
|
|
711
877
|
: [panelIndex, panelIndex + 1]
|
|
712
878
|
|
|
879
|
+
const constraints = panelConstraints ?? getPanelConstraintsInPercent()
|
|
880
|
+
const panelConstraintsFromGroup = constraints?.[panelIndex]
|
|
881
|
+
|
|
713
882
|
const panelSize = layout[panelIndex]
|
|
714
883
|
|
|
715
884
|
return {
|
|
716
|
-
...panelData.constraints,
|
|
885
|
+
...(panelConstraintsFromGroup ?? panelData.constraints),
|
|
717
886
|
panelSize,
|
|
718
887
|
pivotIndices,
|
|
719
888
|
}
|
|
@@ -4,20 +4,22 @@ import { useId } from '@/shared'
|
|
|
4
4
|
import { PRECISION } from './utils/constants'
|
|
5
5
|
|
|
6
6
|
export interface SplitterPanelProps extends PrimitiveProps {
|
|
7
|
-
/** The size of panel when it is collapsed
|
|
7
|
+
/** The size of panel when it is collapsed; interpreted using `sizeUnit`. */
|
|
8
8
|
collapsedSize?: number
|
|
9
9
|
/** Should panel collapse when resized beyond its `minSize`. When `true`, it will be collapsed to `collapsedSize`. */
|
|
10
10
|
collapsible?: boolean
|
|
11
|
-
/** Initial size of panel (
|
|
11
|
+
/** Initial size of panel, interpreted using `sizeUnit` (percent by default). */
|
|
12
12
|
defaultSize?: number
|
|
13
13
|
/** Panel id (unique within group); falls back to `useId` when not provided */
|
|
14
14
|
id?: string
|
|
15
|
-
/** The maximum allowable size of panel
|
|
15
|
+
/** The maximum allowable size of panel, interpreted using `sizeUnit`; defaults to `100` (percent). */
|
|
16
16
|
maxSize?: number
|
|
17
|
-
/** The minimum allowable size of panel
|
|
17
|
+
/** The minimum allowable size of panel, interpreted using `sizeUnit`; defaults to `10` (percent). */
|
|
18
18
|
minSize?: number
|
|
19
19
|
/** The order of panel within group; required for groups with conditionally rendered panels */
|
|
20
20
|
order?: number
|
|
21
|
+
/** Unit used for sizing values; `%` by default, or `px` for fixed sizing. */
|
|
22
|
+
sizeUnit?: '%' | 'px'
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
export type SplitterPanelEmits = {
|
|
@@ -49,6 +51,7 @@ export type PanelConstraints = {
|
|
|
49
51
|
/** Panel id (unique within group); falls back to useId when not provided */
|
|
50
52
|
maxSize?: number | undefined
|
|
51
53
|
minSize?: number | undefined
|
|
54
|
+
sizeUnit?: '%' | 'px' | undefined
|
|
52
55
|
}
|
|
53
56
|
|
|
54
57
|
export type PanelData = {
|
|
@@ -107,6 +110,7 @@ const panelDataRef = computed(() => ({
|
|
|
107
110
|
/** Panel id (unique within group); falls back to useId when not provided */
|
|
108
111
|
maxSize: props.maxSize,
|
|
109
112
|
minSize: props.minSize,
|
|
113
|
+
sizeUnit: props.sizeUnit ?? '%',
|
|
110
114
|
},
|
|
111
115
|
id: panelId,
|
|
112
116
|
idIsFromProps: props.id !== undefined,
|
|
@@ -121,6 +125,7 @@ watch(() => panelDataRef.value.constraints, (constraints, prevConstraints) => {
|
|
|
121
125
|
|| prevConstraints.collapsible !== constraints.collapsible
|
|
122
126
|
|| prevConstraints.maxSize !== constraints.maxSize
|
|
123
127
|
|| prevConstraints.minSize !== constraints.minSize
|
|
128
|
+
|| prevConstraints.sizeUnit !== constraints.sizeUnit
|
|
124
129
|
) {
|
|
125
130
|
reevaluatePanelConstraints(panelDataRef.value, prevConstraints)
|
|
126
131
|
}
|
|
@@ -157,11 +162,11 @@ defineExpose({
|
|
|
157
162
|
collapse,
|
|
158
163
|
/** If panel is currently collapsed, expand it to its most recent size. */
|
|
159
164
|
expand,
|
|
160
|
-
/** Gets the current size of the panel
|
|
165
|
+
/** Gets the current size of the panel (in the panel's sizeUnit: percentage for '%', pixels for 'px'). */
|
|
161
166
|
getSize() {
|
|
162
167
|
return getPanelSize(panelDataRef.value)
|
|
163
168
|
},
|
|
164
|
-
/** Resize panel to the specified
|
|
169
|
+
/** Resize panel to the specified size (in the panel's sizeUnit: percentage for '%', pixels for 'px'). */
|
|
165
170
|
resize,
|
|
166
171
|
/** Returns `true` if the panel is currently collapsed */
|
|
167
172
|
isCollapsed,
|
|
@@ -17,6 +17,7 @@ export function useWindowSplitterPanelGroupBehavior({
|
|
|
17
17
|
panelDataArray,
|
|
18
18
|
panelGroupElement,
|
|
19
19
|
setLayout,
|
|
20
|
+
getPanelDataWithPercentConstraints,
|
|
20
21
|
}: {
|
|
21
22
|
eagerValuesRef: Ref<{
|
|
22
23
|
panelDataArray: PanelData[]
|
|
@@ -26,21 +27,26 @@ export function useWindowSplitterPanelGroupBehavior({
|
|
|
26
27
|
panelDataArray: PanelData[]
|
|
27
28
|
panelGroupElement: Ref<ParentNode | null>
|
|
28
29
|
setLayout: (sizes: number[]) => void
|
|
30
|
+
getPanelDataWithPercentConstraints: (groupSizeOverride?: number | null) => PanelData[] | null
|
|
29
31
|
}): void {
|
|
30
32
|
watchEffect((onCleanup) => {
|
|
31
33
|
const _panelGroupElement = panelGroupElement.value
|
|
32
34
|
if (!_panelGroupElement)
|
|
33
35
|
return
|
|
34
36
|
|
|
37
|
+
const panelDataArrayWithPercentConstraints = getPanelDataWithPercentConstraints()
|
|
38
|
+
if (!panelDataArrayWithPercentConstraints)
|
|
39
|
+
return
|
|
40
|
+
|
|
35
41
|
const resizeHandleElements = getResizeHandleElementsForGroup(
|
|
36
42
|
groupId,
|
|
37
43
|
_panelGroupElement,
|
|
38
44
|
)
|
|
39
45
|
|
|
40
|
-
for (let index = 0; index <
|
|
46
|
+
for (let index = 0; index < panelDataArrayWithPercentConstraints.length - 1; index++) {
|
|
41
47
|
const { valueMax, valueMin, valueNow } = calculateAriaValues({
|
|
42
48
|
layout: layout.value,
|
|
43
|
-
panelsArray:
|
|
49
|
+
panelsArray: panelDataArrayWithPercentConstraints,
|
|
44
50
|
pivotIndices: [index, index + 1],
|
|
45
51
|
})
|
|
46
52
|
|
|
@@ -50,7 +56,7 @@ export function useWindowSplitterPanelGroupBehavior({
|
|
|
50
56
|
console.warn(`WARNING: Missing resize handle for PanelGroup "${groupId}"`)
|
|
51
57
|
}
|
|
52
58
|
else {
|
|
53
|
-
const panelData =
|
|
59
|
+
const panelData = panelDataArrayWithPercentConstraints[index]
|
|
54
60
|
assert(panelData)
|
|
55
61
|
|
|
56
62
|
resizeHandleElement.setAttribute('aria-controls', panelData.id)
|
|
@@ -87,6 +93,10 @@ export function useWindowSplitterPanelGroupBehavior({
|
|
|
87
93
|
const eagerValues = eagerValuesRef.value
|
|
88
94
|
assert(eagerValues)
|
|
89
95
|
|
|
96
|
+
const panelDataArrayWithPercentConstraints = getPanelDataWithPercentConstraints()
|
|
97
|
+
if (!panelDataArrayWithPercentConstraints)
|
|
98
|
+
return
|
|
99
|
+
|
|
90
100
|
const { panelDataArray } = eagerValues
|
|
91
101
|
const groupElement = getPanelGroupElement(groupId, _panelGroupElement)
|
|
92
102
|
assert(groupElement != null, `No group found for id "${groupId}"`)
|
|
@@ -115,11 +125,11 @@ export function useWindowSplitterPanelGroupBehavior({
|
|
|
115
125
|
case 'Enter': {
|
|
116
126
|
event.preventDefault()
|
|
117
127
|
|
|
118
|
-
const index =
|
|
128
|
+
const index = panelDataArrayWithPercentConstraints.findIndex(
|
|
119
129
|
panelData => panelData.id === idBefore,
|
|
120
130
|
)
|
|
121
131
|
if (index >= 0) {
|
|
122
|
-
const panelData =
|
|
132
|
+
const panelData = panelDataArrayWithPercentConstraints[index]
|
|
123
133
|
assert(panelData)
|
|
124
134
|
|
|
125
135
|
const size = layout.value[index]
|
|
@@ -136,7 +146,7 @@ export function useWindowSplitterPanelGroupBehavior({
|
|
|
136
146
|
? minSize - collapsedSize
|
|
137
147
|
: collapsedSize - size,
|
|
138
148
|
layout: layout.value,
|
|
139
|
-
panelConstraints:
|
|
149
|
+
panelConstraints: panelDataArrayWithPercentConstraints.map(
|
|
140
150
|
panelData => panelData.constraints,
|
|
141
151
|
),
|
|
142
152
|
pivotIndices: determinePivotIndices(
|
|
@@ -33,6 +33,9 @@ export type PanelConfigurationState = {
|
|
|
33
33
|
[panelId: string]: number
|
|
34
34
|
}
|
|
35
35
|
layout: number[]
|
|
36
|
+
sizeUnits?: {
|
|
37
|
+
[panelIndex: number]: 'px' | '%'
|
|
38
|
+
}
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
export type SerializedPanelGroupState = {
|
|
@@ -102,9 +105,20 @@ export function savePanelGroupState(
|
|
|
102
105
|
const panelGroupKey = getPanelGroupKey(autoSaveId)
|
|
103
106
|
const panelKey = getPanelKey(panels)
|
|
104
107
|
const state = loadSerializedPanelGroupState(autoSaveId, storage) ?? {}
|
|
108
|
+
|
|
109
|
+
// Store the size units for each panel so we can restore them correctly
|
|
110
|
+
const sizeUnits: { [panelIndex: number]: 'px' | '%' } = {}
|
|
111
|
+
panels.forEach((panel, index) => {
|
|
112
|
+
const unit = panel.constraints.sizeUnit ?? '%'
|
|
113
|
+
if (unit === 'px') {
|
|
114
|
+
sizeUnits[index] = 'px'
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
|
|
105
118
|
state[panelKey] = {
|
|
106
119
|
expandToSizes: Object.fromEntries(panelSizesBeforeCollapse.entries()),
|
|
107
120
|
layout: sizes,
|
|
121
|
+
...(Object.keys(sizeUnits).length > 0 && { sizeUnits }),
|
|
108
122
|
}
|
|
109
123
|
|
|
110
124
|
try {
|