@vunset/vue 0.0.0-stage → 1.0.0-rc.2
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/LICENSE +21 -0
- package/README.md +85 -2
- package/dist/chart.d.ts +11 -0
- package/dist/chart.js +11 -0
- package/dist/components/accordion/AccordionHeader.js +5 -0
- package/dist/components/accordion/AccordionHeader.vue.d.ts +23 -0
- package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/accordion/AccordionItem.js +5 -0
- package/dist/components/accordion/AccordionItem.vue.d.ts +28 -0
- package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/accordion/AccordionRoot.js +5 -0
- package/dist/components/accordion/AccordionRoot.vue.d.ts +48 -0
- package/dist/components/accordion/AccordionRoot.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/components/accordion/use-accordion.d.ts +43 -0
- package/dist/components/accordion/use-accordion.js +126 -0
- package/dist/components/alert/AlertDescription.js +5 -0
- package/dist/components/alert/AlertDescription.vue.d.ts +19 -0
- package/dist/components/alert/AlertDescription.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/alert/AlertRoot.js +5 -0
- package/dist/components/alert/AlertRoot.vue.d.ts +24 -0
- package/dist/components/alert/AlertRoot.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/alert/AlertTitle.js +5 -0
- package/dist/components/alert/AlertTitle.vue.d.ts +19 -0
- package/dist/components/alert/AlertTitle.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/appear/Appear.js +5 -0
- package/dist/components/appear/Appear.vue.d.ts +46 -0
- package/dist/components/appear/Appear.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/components/async-state/AsyncState.js +5 -0
- package/dist/components/async-state/AsyncState.vue.d.ts +60 -0
- package/dist/components/async-state/AsyncState.vue_vue_type_script_setup_true_lang.js +88 -0
- package/dist/components/badge/Badge.js +5 -0
- package/dist/components/badge/Badge.vue.d.ts +19 -0
- package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js +23 -0
- package/dist/components/button/Button.js +5 -0
- package/dist/components/button/Button.vue.d.ts +28 -0
- package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/components/button/use-button.d.ts +20 -0
- package/dist/components/button/use-button.js +47 -0
- package/dist/components/calendar/CalendarDay.js +5 -0
- package/dist/components/calendar/CalendarDay.vue.d.ts +33 -0
- package/dist/components/calendar/CalendarDay.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/calendar/CalendarGrid.js +5 -0
- package/dist/components/calendar/CalendarGrid.vue.d.ts +33 -0
- package/dist/components/calendar/CalendarGrid.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/calendar/CalendarMonth.js +5 -0
- package/dist/components/calendar/CalendarMonth.vue.d.ts +28 -0
- package/dist/components/calendar/CalendarMonth.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/components/calendar/CalendarNext.js +5 -0
- package/dist/components/calendar/CalendarNext.vue.d.ts +23 -0
- package/dist/components/calendar/CalendarNext.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/calendar/CalendarPreset.js +5 -0
- package/dist/components/calendar/CalendarPreset.vue.d.ts +39 -0
- package/dist/components/calendar/CalendarPreset.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/calendar/CalendarPresets.js +5 -0
- package/dist/components/calendar/CalendarPresets.vue.d.ts +26 -0
- package/dist/components/calendar/CalendarPresets.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/calendar/CalendarPrev.js +5 -0
- package/dist/components/calendar/CalendarPrev.vue.d.ts +23 -0
- package/dist/components/calendar/CalendarPrev.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/calendar/CalendarRoot.js +5 -0
- package/dist/components/calendar/CalendarRoot.vue.d.ts +94 -0
- package/dist/components/calendar/CalendarRoot.vue_vue_type_script_setup_true_lang.js +115 -0
- package/dist/components/calendar/CalendarRow.js +5 -0
- package/dist/components/calendar/CalendarRow.vue.d.ts +25 -0
- package/dist/components/calendar/CalendarRow.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/calendar/CalendarViewTrigger.js +5 -0
- package/dist/components/calendar/CalendarViewTrigger.vue.d.ts +25 -0
- package/dist/components/calendar/CalendarViewTrigger.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/calendar/CalendarWeek.js +5 -0
- package/dist/components/calendar/CalendarWeek.vue.d.ts +29 -0
- package/dist/components/calendar/CalendarWeek.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/calendar/CalendarWeekDay.js +5 -0
- package/dist/components/calendar/CalendarWeekDay.vue.d.ts +44 -0
- package/dist/components/calendar/CalendarWeekDay.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/calendar/CalendarYear.js +5 -0
- package/dist/components/calendar/CalendarYear.vue.d.ts +27 -0
- package/dist/components/calendar/CalendarYear.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/calendar/use-calendar.d.ts +267 -0
- package/dist/components/calendar/use-calendar.js +657 -0
- package/dist/components/chart/ChartArea.js +5 -0
- package/dist/components/chart/ChartArea.vue.d.ts +23 -0
- package/dist/components/chart/ChartArea.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/chart/ChartAxis.js +5 -0
- package/dist/components/chart/ChartAxis.vue.d.ts +18 -0
- package/dist/components/chart/ChartAxis.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/chart/ChartBar.js +5 -0
- package/dist/components/chart/ChartBar.vue.d.ts +25 -0
- package/dist/components/chart/ChartBar.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/chart/ChartCrosshair.js +5 -0
- package/dist/components/chart/ChartCrosshair.vue.d.ts +3 -0
- package/dist/components/chart/ChartCrosshair.vue_vue_type_script_setup_true_lang.js +15 -0
- package/dist/components/chart/ChartDonut.js +5 -0
- package/dist/components/chart/ChartDonut.vue.d.ts +66 -0
- package/dist/components/chart/ChartDonut.vue_vue_type_script_setup_true_lang.js +156 -0
- package/dist/components/chart/ChartFrame.js +5 -0
- package/dist/components/chart/ChartFrame.vue.d.ts +66 -0
- package/dist/components/chart/ChartFrame.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/components/chart/ChartGrid.js +5 -0
- package/dist/components/chart/ChartGrid.vue.d.ts +11 -0
- package/dist/components/chart/ChartGrid.vue_vue_type_script_setup_true_lang.js +20 -0
- package/dist/components/chart/ChartLegend.js +5 -0
- package/dist/components/chart/ChartLegend.vue.d.ts +46 -0
- package/dist/components/chart/ChartLegend.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/components/chart/ChartLine.js +5 -0
- package/dist/components/chart/ChartLine.vue.d.ts +23 -0
- package/dist/components/chart/ChartLine.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/chart/ChartRoot.js +5 -0
- package/dist/components/chart/ChartRoot.vue.d.ts +115 -0
- package/dist/components/chart/ChartRoot.vue_vue_type_script_setup_true_lang.js +394 -0
- package/dist/components/chart/ChartTooltip.js +5 -0
- package/dist/components/chart/ChartTooltip.vue.d.ts +14 -0
- package/dist/components/chart/ChartTooltip.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/chart/chart-curve.d.ts +9 -0
- package/dist/components/chart/chart-curve.js +57 -0
- package/dist/components/chart/chart-scales.d.ts +34 -0
- package/dist/components/chart/chart-scales.js +41 -0
- package/dist/components/chart/use-chart-series.d.ts +49 -0
- package/dist/components/chart/use-chart-series.js +53 -0
- package/dist/components/checkbox/CheckboxGroup.js +5 -0
- package/dist/components/checkbox/CheckboxGroup.vue.d.ts +128 -0
- package/dist/components/checkbox/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +141 -0
- package/dist/components/checkbox/CheckboxIndicator.js +5 -0
- package/dist/components/checkbox/CheckboxIndicator.vue.d.ts +29 -0
- package/dist/components/checkbox/CheckboxIndicator.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/checkbox/CheckboxRoot.js +5 -0
- package/dist/components/checkbox/CheckboxRoot.vue.d.ts +93 -0
- package/dist/components/checkbox/CheckboxRoot.vue_vue_type_script_setup_true_lang.js +158 -0
- package/dist/components/collapsible/CollapsiblePanel.js +5 -0
- package/dist/components/collapsible/CollapsiblePanel.vue.d.ts +26 -0
- package/dist/components/collapsible/CollapsiblePanel.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/collapsible/CollapsibleRoot.js +5 -0
- package/dist/components/collapsible/CollapsibleRoot.vue.d.ts +41 -0
- package/dist/components/collapsible/CollapsibleRoot.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/components/collapsible/CollapsibleTrigger.js +5 -0
- package/dist/components/collapsible/CollapsibleTrigger.vue.d.ts +23 -0
- package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/combobox/ComboboxChip.js +5 -0
- package/dist/components/combobox/ComboboxChip.vue.d.ts +29 -0
- package/dist/components/combobox/ComboboxChip.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/combobox/ComboboxChipRemove.js +5 -0
- package/dist/components/combobox/ComboboxChipRemove.vue.d.ts +23 -0
- package/dist/components/combobox/ComboboxChipRemove.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/combobox/ComboboxChips.js +5 -0
- package/dist/components/combobox/ComboboxChips.vue.d.ts +35 -0
- package/dist/components/combobox/ComboboxChips.vue_vue_type_script_setup_true_lang.js +39 -0
- package/dist/components/combobox/ComboboxInput.js +5 -0
- package/dist/components/combobox/ComboboxInput.vue.d.ts +9 -0
- package/dist/components/combobox/ComboboxInput.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/combobox/ComboboxRoot.js +5 -0
- package/dist/components/combobox/ComboboxRoot.vue.d.ts +115 -0
- package/dist/components/combobox/ComboboxRoot.vue_vue_type_script_setup_true_lang.js +133 -0
- package/dist/components/combobox/ComboboxTrigger.js +5 -0
- package/dist/components/combobox/ComboboxTrigger.vue.d.ts +35 -0
- package/dist/components/combobox/ComboboxTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/context-menu/ContextMenuRoot.js +5 -0
- package/dist/components/context-menu/ContextMenuRoot.vue.d.ts +57 -0
- package/dist/components/context-menu/ContextMenuRoot.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/context-menu/ContextMenuTrigger.js +5 -0
- package/dist/components/context-menu/ContextMenuTrigger.vue.d.ts +26 -0
- package/dist/components/context-menu/ContextMenuTrigger.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/components/copy/Copy.js +5 -0
- package/dist/components/copy/Copy.vue.d.ts +57 -0
- package/dist/components/copy/Copy.vue_vue_type_script_setup_true_lang.js +120 -0
- package/dist/components/data-table/DataTable.js +5 -0
- package/dist/components/data-table/DataTable.vue.d.ts +194 -0
- package/dist/components/data-table/DataTable.vue_vue_type_script_setup_true_lang.js +683 -0
- package/dist/components/datepicker/DatepickerClear.js +5 -0
- package/dist/components/datepicker/DatepickerClear.vue.d.ts +34 -0
- package/dist/components/datepicker/DatepickerClear.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/datepicker/DatepickerRoot.js +5 -0
- package/dist/components/datepicker/DatepickerRoot.vue.d.ts +191 -0
- package/dist/components/datepicker/DatepickerRoot.vue_vue_type_script_setup_true_lang.js +258 -0
- package/dist/components/datepicker/DatepickerTrigger.js +5 -0
- package/dist/components/datepicker/DatepickerTrigger.vue.d.ts +34 -0
- package/dist/components/datepicker/DatepickerTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/datepicker/DatepickerValue.js +5 -0
- package/dist/components/datepicker/DatepickerValue.vue.d.ts +29 -0
- package/dist/components/datepicker/DatepickerValue.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/components/deferred/Deferred.js +5 -0
- package/dist/components/deferred/Deferred.vue.d.ts +23 -0
- package/dist/components/deferred/Deferred.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/components/dialog/DialogBackdrop.js +5 -0
- package/dist/components/dialog/DialogBackdrop.vue.d.ts +25 -0
- package/dist/components/dialog/DialogBackdrop.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/dialog/DialogClose.js +5 -0
- package/dist/components/dialog/DialogClose.vue.d.ts +26 -0
- package/dist/components/dialog/DialogClose.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/dialog/DialogDescription.js +5 -0
- package/dist/components/dialog/DialogDescription.vue.d.ts +23 -0
- package/dist/components/dialog/DialogDescription.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/dialog/DialogRoot.js +5 -0
- package/dist/components/dialog/DialogRoot.vue.d.ts +46 -0
- package/dist/components/dialog/DialogRoot.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/components/dialog/DialogTitle.js +5 -0
- package/dist/components/dialog/DialogTitle.vue.d.ts +23 -0
- package/dist/components/dialog/DialogTitle.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/dialog/DialogTrigger.js +5 -0
- package/dist/components/dialog/DialogTrigger.vue.d.ts +25 -0
- package/dist/components/dialog/DialogTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/drag/DragHandle.js +5 -0
- package/dist/components/drag/DragHandle.vue.d.ts +19 -0
- package/dist/components/drag/DragHandle.vue_vue_type_script_setup_true_lang.js +26 -0
- package/dist/components/drag/DragItem.js +5 -0
- package/dist/components/drag/DragItem.vue.d.ts +23 -0
- package/dist/components/drag/DragItem.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/drag/DragRoot.js +5 -0
- package/dist/components/drag/DragRoot.vue.d.ts +90 -0
- package/dist/components/drag/DragRoot.vue_vue_type_script_setup_true_lang.js +329 -0
- package/dist/components/drawer/DrawerHandle.js +5 -0
- package/dist/components/drawer/DrawerHandle.vue.d.ts +23 -0
- package/dist/components/drawer/DrawerHandle.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/drawer/DrawerRoot.js +5 -0
- package/dist/components/drawer/DrawerRoot.vue.d.ts +55 -0
- package/dist/components/drawer/DrawerRoot.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/drawer/use-drawer.d.ts +50 -0
- package/dist/components/drawer/use-drawer.js +170 -0
- package/dist/components/field/FieldDescription.js +5 -0
- package/dist/components/field/FieldDescription.vue.d.ts +28 -0
- package/dist/components/field/FieldDescription.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/field/FieldError.js +5 -0
- package/dist/components/field/FieldError.vue.d.ts +30 -0
- package/dist/components/field/FieldError.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/field/FieldGroup.js +5 -0
- package/dist/components/field/FieldGroup.vue.d.ts +28 -0
- package/dist/components/field/FieldGroup.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/field/FieldLabel.js +5 -0
- package/dist/components/field/FieldLabel.vue.d.ts +28 -0
- package/dist/components/field/FieldLabel.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/field/FieldRoot.js +5 -0
- package/dist/components/field/FieldRoot.vue.d.ts +47 -0
- package/dist/components/field/FieldRoot.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/floating/FloatingClose.js +5 -0
- package/dist/components/floating/FloatingClose.vue.d.ts +23 -0
- package/dist/components/floating/FloatingClose.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/floating/FloatingHeader.js +5 -0
- package/dist/components/floating/FloatingHeader.vue.d.ts +23 -0
- package/dist/components/floating/FloatingHeader.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/floating/FloatingResizer.js +5 -0
- package/dist/components/floating/FloatingResizer.vue.d.ts +25 -0
- package/dist/components/floating/FloatingResizer.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/floating/FloatingRoot.js +5 -0
- package/dist/components/floating/FloatingRoot.vue.d.ts +152 -0
- package/dist/components/floating/FloatingRoot.vue_vue_type_script_setup_true_lang.js +440 -0
- package/dist/components/floating/FloatingTitle.js +5 -0
- package/dist/components/floating/FloatingTitle.vue.d.ts +23 -0
- package/dist/components/floating/FloatingTitle.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/group/Group.js +5 -0
- package/dist/components/group/Group.vue.d.ts +60 -0
- package/dist/components/group/Group.vue_vue_type_script_setup_true_lang.js +186 -0
- package/dist/components/icon/Icon.js +5 -0
- package/dist/components/icon/Icon.vue.d.ts +11 -0
- package/dist/components/icon/Icon.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/components/input/Input.js +5 -0
- package/dist/components/input/Input.vue.d.ts +53 -0
- package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/components/listbox/ListboxClear.js +5 -0
- package/dist/components/listbox/ListboxClear.vue.d.ts +35 -0
- package/dist/components/listbox/ListboxClear.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/listbox/ListboxEmpty.js +5 -0
- package/dist/components/listbox/ListboxEmpty.vue.d.ts +35 -0
- package/dist/components/listbox/ListboxEmpty.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/listbox/ListboxIndicator.js +5 -0
- package/dist/components/listbox/ListboxIndicator.vue.d.ts +35 -0
- package/dist/components/listbox/ListboxIndicator.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/listbox/ListboxItem.js +5 -0
- package/dist/components/listbox/ListboxItem.vue.d.ts +22 -0
- package/dist/components/listbox/ListboxItem.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/listbox/ListboxList.js +5 -0
- package/dist/components/listbox/ListboxList.vue.d.ts +37 -0
- package/dist/components/listbox/ListboxList.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/components/listbox/ListboxPresets.js +5 -0
- package/dist/components/listbox/ListboxPresets.vue.d.ts +59 -0
- package/dist/components/listbox/ListboxPresets.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/listbox/ListboxScrollIndicator.js +5 -0
- package/dist/components/listbox/ListboxScrollIndicator.vue.d.ts +38 -0
- package/dist/components/listbox/ListboxScrollIndicator.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/menu/MenuArrow.js +5 -0
- package/dist/components/menu/MenuArrow.vue.d.ts +23 -0
- package/dist/components/menu/MenuArrow.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/menu/MenuCheckboxItem.js +5 -0
- package/dist/components/menu/MenuCheckboxItem.vue.d.ts +49 -0
- package/dist/components/menu/MenuCheckboxItem.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/menu/MenuGroup.js +5 -0
- package/dist/components/menu/MenuGroup.vue.d.ts +19 -0
- package/dist/components/menu/MenuGroup.vue_vue_type_script_setup_true_lang.js +40 -0
- package/dist/components/menu/MenuGroupLabel.js +5 -0
- package/dist/components/menu/MenuGroupLabel.vue.d.ts +19 -0
- package/dist/components/menu/MenuGroupLabel.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/menu/MenuItem.js +5 -0
- package/dist/components/menu/MenuItem.vue.d.ts +29 -0
- package/dist/components/menu/MenuItem.vue_vue_type_script_setup_true_lang.js +41 -0
- package/dist/components/menu/MenuItemIndicator.js +5 -0
- package/dist/components/menu/MenuItemIndicator.vue.d.ts +28 -0
- package/dist/components/menu/MenuItemIndicator.vue_vue_type_script_setup_true_lang.js +40 -0
- package/dist/components/menu/MenuRadioGroup.js +5 -0
- package/dist/components/menu/MenuRadioGroup.vue.d.ts +42 -0
- package/dist/components/menu/MenuRadioGroup.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/menu/MenuRadioItem.js +5 -0
- package/dist/components/menu/MenuRadioItem.vue.d.ts +35 -0
- package/dist/components/menu/MenuRadioItem.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/menu/MenuRoot.js +5 -0
- package/dist/components/menu/MenuRoot.vue.d.ts +69 -0
- package/dist/components/menu/MenuRoot.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/components/menu/MenuTrigger.js +5 -0
- package/dist/components/menu/MenuTrigger.vue.d.ts +25 -0
- package/dist/components/menu/MenuTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/menu/MenubarLink.js +5 -0
- package/dist/components/menu/MenubarLink.vue.d.ts +22 -0
- package/dist/components/menu/MenubarLink.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/menu/MenubarRoot.js +5 -0
- package/dist/components/menu/MenubarRoot.vue.d.ts +28 -0
- package/dist/components/menu/MenubarRoot.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/components/meter/MeterIndicator.js +5 -0
- package/dist/components/meter/MeterIndicator.vue.d.ts +22 -0
- package/dist/components/meter/MeterIndicator.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/meter/MeterLabel.js +5 -0
- package/dist/components/meter/MeterLabel.vue.d.ts +22 -0
- package/dist/components/meter/MeterLabel.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/meter/MeterRoot.js +5 -0
- package/dist/components/meter/MeterRoot.vue.d.ts +33 -0
- package/dist/components/meter/MeterRoot.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/meter/MeterTrack.js +5 -0
- package/dist/components/meter/MeterTrack.vue.d.ts +22 -0
- package/dist/components/meter/MeterTrack.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/meter/MeterValue.js +5 -0
- package/dist/components/meter/MeterValue.vue.d.ts +23 -0
- package/dist/components/meter/MeterValue.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/pagination/PaginationEllipsis.js +5 -0
- package/dist/components/pagination/PaginationEllipsis.vue.d.ts +23 -0
- package/dist/components/pagination/PaginationEllipsis.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/pagination/PaginationItem.js +5 -0
- package/dist/components/pagination/PaginationItem.vue.d.ts +48 -0
- package/dist/components/pagination/PaginationItem.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/pagination/PaginationNext.js +5 -0
- package/dist/components/pagination/PaginationNext.vue.d.ts +21 -0
- package/dist/components/pagination/PaginationNext.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/pagination/PaginationPrev.js +5 -0
- package/dist/components/pagination/PaginationPrev.vue.d.ts +21 -0
- package/dist/components/pagination/PaginationPrev.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/pagination/PaginationRoot.js +5 -0
- package/dist/components/pagination/PaginationRoot.vue.d.ts +146 -0
- package/dist/components/pagination/PaginationRoot.vue_vue_type_script_setup_true_lang.js +253 -0
- package/dist/components/popover/PopoverArrow.js +5 -0
- package/dist/components/popover/PopoverArrow.vue.d.ts +23 -0
- package/dist/components/popover/PopoverArrow.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/popover/PopoverClose.js +5 -0
- package/dist/components/popover/PopoverClose.vue.d.ts +23 -0
- package/dist/components/popover/PopoverClose.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/popover/PopoverDescription.js +5 -0
- package/dist/components/popover/PopoverDescription.vue.d.ts +23 -0
- package/dist/components/popover/PopoverDescription.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/popover/PopoverRoot.js +5 -0
- package/dist/components/popover/PopoverRoot.vue.d.ts +75 -0
- package/dist/components/popover/PopoverRoot.vue_vue_type_script_setup_true_lang.js +85 -0
- package/dist/components/popover/PopoverTitle.js +5 -0
- package/dist/components/popover/PopoverTitle.vue.d.ts +23 -0
- package/dist/components/popover/PopoverTitle.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/popover/PopoverTrigger.js +5 -0
- package/dist/components/popover/PopoverTrigger.vue.d.ts +24 -0
- package/dist/components/popover/PopoverTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/popover/use-popover.d.ts +60 -0
- package/dist/components/popover/use-popover.js +160 -0
- package/dist/components/progress/ProgressIndicator.js +5 -0
- package/dist/components/progress/ProgressIndicator.vue.d.ts +22 -0
- package/dist/components/progress/ProgressIndicator.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/progress/ProgressLabel.js +5 -0
- package/dist/components/progress/ProgressLabel.vue.d.ts +22 -0
- package/dist/components/progress/ProgressLabel.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/progress/ProgressRoot.js +5 -0
- package/dist/components/progress/ProgressRoot.vue.d.ts +33 -0
- package/dist/components/progress/ProgressRoot.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/progress/ProgressTrack.js +5 -0
- package/dist/components/progress/ProgressTrack.vue.d.ts +22 -0
- package/dist/components/progress/ProgressTrack.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/progress/ProgressValue.js +5 -0
- package/dist/components/progress/ProgressValue.vue.d.ts +23 -0
- package/dist/components/progress/ProgressValue.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/radio/RadioGroup.js +5 -0
- package/dist/components/radio/RadioGroup.vue.d.ts +53 -0
- package/dist/components/radio/RadioGroup.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/components/radio/RadioIndicator.js +5 -0
- package/dist/components/radio/RadioIndicator.vue.d.ts +28 -0
- package/dist/components/radio/RadioIndicator.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/radio/RadioRoot.js +5 -0
- package/dist/components/radio/RadioRoot.vue.d.ts +33 -0
- package/dist/components/radio/RadioRoot.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/radio/use-radio-group.d.ts +87 -0
- package/dist/components/radio/use-radio-group.js +175 -0
- package/dist/components/range/RangeControl.js +5 -0
- package/dist/components/range/RangeControl.vue.d.ts +30 -0
- package/dist/components/range/RangeControl.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/range/RangeIndicator.js +5 -0
- package/dist/components/range/RangeIndicator.vue.d.ts +30 -0
- package/dist/components/range/RangeIndicator.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/range/RangeLabel.js +5 -0
- package/dist/components/range/RangeLabel.vue.d.ts +30 -0
- package/dist/components/range/RangeLabel.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/range/RangeRoot.js +5 -0
- package/dist/components/range/RangeRoot.vue.d.ts +85 -0
- package/dist/components/range/RangeRoot.vue_vue_type_script_setup_true_lang.js +80 -0
- package/dist/components/range/RangeThumb.js +5 -0
- package/dist/components/range/RangeThumb.vue.d.ts +42 -0
- package/dist/components/range/RangeThumb.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/range/RangeTrack.js +5 -0
- package/dist/components/range/RangeTrack.vue.d.ts +30 -0
- package/dist/components/range/RangeTrack.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/range/RangeValue.js +5 -0
- package/dist/components/range/RangeValue.vue.d.ts +25 -0
- package/dist/components/range/RangeValue.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/range/range-math.d.ts +31 -0
- package/dist/components/range/range-math.js +82 -0
- package/dist/components/range/use-range.d.ts +189 -0
- package/dist/components/range/use-range.js +542 -0
- package/dist/components/scroll-area/ScrollArea.js +5 -0
- package/dist/components/scroll-area/ScrollArea.vue.d.ts +94 -0
- package/dist/components/scroll-area/ScrollArea.vue_vue_type_script_setup_true_lang.js +178 -0
- package/dist/components/select/SelectRoot.js +5 -0
- package/dist/components/select/SelectRoot.vue.d.ts +116 -0
- package/dist/components/select/SelectRoot.vue_vue_type_script_setup_true_lang.js +133 -0
- package/dist/components/select/SelectSearch.js +5 -0
- package/dist/components/select/SelectSearch.vue.d.ts +9 -0
- package/dist/components/select/SelectSearch.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/select/SelectTrigger.js +5 -0
- package/dist/components/select/SelectTrigger.vue.d.ts +35 -0
- package/dist/components/select/SelectTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/select/SelectValue.js +5 -0
- package/dist/components/select/SelectValue.vue.d.ts +52 -0
- package/dist/components/select/SelectValue.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/components/surface/Addon.js +5 -0
- package/dist/components/surface/Addon.vue.d.ts +21 -0
- package/dist/components/surface/Addon.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/surface/Popup.js +5 -0
- package/dist/components/surface/Popup.vue.d.ts +19 -0
- package/dist/components/surface/Popup.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/surface/Portal.js +5 -0
- package/dist/components/surface/Portal.vue.d.ts +22 -0
- package/dist/components/surface/Portal.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/surface/Positioner.js +5 -0
- package/dist/components/surface/Positioner.vue.d.ts +19 -0
- package/dist/components/surface/Positioner.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/surface/Separator.js +5 -0
- package/dist/components/surface/Separator.vue.d.ts +11 -0
- package/dist/components/surface/Separator.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/switch/SwitchRoot.js +5 -0
- package/dist/components/switch/SwitchRoot.vue.d.ts +93 -0
- package/dist/components/switch/SwitchRoot.vue_vue_type_script_setup_true_lang.js +131 -0
- package/dist/components/switch/SwitchThumb.js +5 -0
- package/dist/components/switch/SwitchThumb.vue.d.ts +25 -0
- package/dist/components/switch/SwitchThumb.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/table/TableBody.js +5 -0
- package/dist/components/table/TableBody.vue.d.ts +13 -0
- package/dist/components/table/TableBody.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/components/table/TableCaption.js +5 -0
- package/dist/components/table/TableCaption.vue.d.ts +13 -0
- package/dist/components/table/TableCaption.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/components/table/TableCell.js +5 -0
- package/dist/components/table/TableCell.vue.d.ts +21 -0
- package/dist/components/table/TableCell.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/table/TableFooter.js +5 -0
- package/dist/components/table/TableFooter.vue.d.ts +13 -0
- package/dist/components/table/TableFooter.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/table/TableHeadCell.js +5 -0
- package/dist/components/table/TableHeadCell.vue.d.ts +25 -0
- package/dist/components/table/TableHeadCell.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/components/table/TableHeader.js +5 -0
- package/dist/components/table/TableHeader.vue.d.ts +13 -0
- package/dist/components/table/TableHeader.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/table/TableRoot.js +5 -0
- package/dist/components/table/TableRoot.vue.d.ts +48 -0
- package/dist/components/table/TableRoot.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/table/TableRow.js +5 -0
- package/dist/components/table/TableRow.vue.d.ts +21 -0
- package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/tabs/TabsIndicator.js +5 -0
- package/dist/components/tabs/TabsIndicator.vue.d.ts +23 -0
- package/dist/components/tabs/TabsIndicator.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/tabs/TabsList.js +5 -0
- package/dist/components/tabs/TabsList.vue.d.ts +22 -0
- package/dist/components/tabs/TabsList.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/tabs/TabsPanel.js +5 -0
- package/dist/components/tabs/TabsPanel.vue.d.ts +30 -0
- package/dist/components/tabs/TabsPanel.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/tabs/TabsRoot.js +5 -0
- package/dist/components/tabs/TabsRoot.vue.d.ts +44 -0
- package/dist/components/tabs/TabsRoot.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/tabs/TabsTab.js +5 -0
- package/dist/components/tabs/TabsTab.vue.d.ts +31 -0
- package/dist/components/tabs/TabsTab.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/tabs/use-tabs.d.ts +107 -0
- package/dist/components/tabs/use-tabs.js +305 -0
- package/dist/components/textarea/Textarea.js +5 -0
- package/dist/components/textarea/Textarea.vue.d.ts +48 -0
- package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +102 -0
- package/dist/components/timepicker/TimepickerClear.js +5 -0
- package/dist/components/timepicker/TimepickerClear.vue.d.ts +27 -0
- package/dist/components/timepicker/TimepickerClear.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/timepicker/TimepickerColumn.js +5 -0
- package/dist/components/timepicker/TimepickerColumn.vue.d.ts +35 -0
- package/dist/components/timepicker/TimepickerColumn.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/components/timepicker/TimepickerInput.js +5 -0
- package/dist/components/timepicker/TimepickerInput.vue.d.ts +20 -0
- package/dist/components/timepicker/TimepickerInput.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/timepicker/TimepickerRoot.js +5 -0
- package/dist/components/timepicker/TimepickerRoot.vue.d.ts +82 -0
- package/dist/components/timepicker/TimepickerRoot.vue_vue_type_script_setup_true_lang.js +109 -0
- package/dist/components/timepicker/TimepickerSegment.js +5 -0
- package/dist/components/timepicker/TimepickerSegment.vue.d.ts +33 -0
- package/dist/components/timepicker/TimepickerSegment.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/timepicker/TimepickerTrigger.js +5 -0
- package/dist/components/timepicker/TimepickerTrigger.vue.d.ts +27 -0
- package/dist/components/timepicker/TimepickerTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/timepicker/use-timepicker.d.ts +111 -0
- package/dist/components/timepicker/use-timepicker.js +545 -0
- package/dist/components/toast/ToastAction.js +5 -0
- package/dist/components/toast/ToastAction.vue.d.ts +20 -0
- package/dist/components/toast/ToastAction.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/toast/ToastClose.js +5 -0
- package/dist/components/toast/ToastClose.vue.d.ts +20 -0
- package/dist/components/toast/ToastClose.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/toast/ToastDescription.js +5 -0
- package/dist/components/toast/ToastDescription.vue.d.ts +20 -0
- package/dist/components/toast/ToastDescription.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/toast/ToastProgress.js +5 -0
- package/dist/components/toast/ToastProgress.vue.d.ts +30 -0
- package/dist/components/toast/ToastProgress.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/toast/ToastRoot.js +5 -0
- package/dist/components/toast/ToastRoot.vue.d.ts +21 -0
- package/dist/components/toast/ToastRoot.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/toast/ToastTitle.js +5 -0
- package/dist/components/toast/ToastTitle.vue.d.ts +20 -0
- package/dist/components/toast/ToastTitle.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/toast/ToastViewport.js +5 -0
- package/dist/components/toast/ToastViewport.vue.d.ts +47 -0
- package/dist/components/toast/ToastViewport.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/components/toggle/Toggle.js +5 -0
- package/dist/components/toggle/Toggle.vue.d.ts +41 -0
- package/dist/components/toggle/Toggle.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/toggle/ToggleGroup.js +5 -0
- package/dist/components/toggle/ToggleGroup.vue.d.ts +64 -0
- package/dist/components/toggle/ToggleGroup.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/components/toggle/use-toggle.d.ts +122 -0
- package/dist/components/toggle/use-toggle.js +218 -0
- package/dist/components/tooltip/TooltipArrow.js +5 -0
- package/dist/components/tooltip/TooltipArrow.vue.d.ts +23 -0
- package/dist/components/tooltip/TooltipArrow.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/tooltip/TooltipGroup.js +5 -0
- package/dist/components/tooltip/TooltipGroup.vue.d.ts +21 -0
- package/dist/components/tooltip/TooltipGroup.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/tooltip/TooltipRoot.js +5 -0
- package/dist/components/tooltip/TooltipRoot.vue.d.ts +60 -0
- package/dist/components/tooltip/TooltipRoot.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/components/tooltip/TooltipTrigger.js +5 -0
- package/dist/components/tooltip/TooltipTrigger.vue.d.ts +24 -0
- package/dist/components/tooltip/TooltipTrigger.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/tooltip/tooltip-group.d.ts +41 -0
- package/dist/components/tooltip/tooltip-group.js +51 -0
- package/dist/components/tooltip/use-tooltip.d.ts +60 -0
- package/dist/components/tooltip/use-tooltip.js +169 -0
- package/dist/composables/use-click-outside.d.ts +16 -0
- package/dist/composables/use-click-outside.js +34 -0
- package/dist/composables/use-clipboard.d.ts +17 -0
- package/dist/composables/use-clipboard.js +45 -0
- package/dist/composables/use-download.d.ts +7 -0
- package/dist/composables/use-download.js +27 -0
- package/dist/composables/use-local-storage.d.ts +11 -0
- package/dist/composables/use-local-storage.js +34 -0
- package/dist/composables/use-theme.d.ts +44 -0
- package/dist/composables/use-theme.js +95 -0
- package/dist/composables/use-toast.d.ts +127 -0
- package/dist/composables/use-toast.js +330 -0
- package/dist/composables/use-validate.d.ts +21 -0
- package/dist/composables/use-validate.js +31 -0
- package/dist/composables/use-virtual-list.d.ts +34 -0
- package/dist/composables/use-virtual-list.js +144 -0
- package/dist/data-table.d.ts +1 -0
- package/dist/data-table.js +3 -0
- package/dist/index.d.ts +234 -0
- package/dist/index.js +191 -0
- package/dist/shared/align-item-with-trigger.d.ts +84 -0
- package/dist/shared/align-item-with-trigger.js +109 -0
- package/dist/shared/animations.d.ts +6 -0
- package/dist/shared/animations.js +35 -0
- package/dist/shared/context.d.ts +7 -0
- package/dist/shared/context.js +25 -0
- package/dist/shared/data-attrs.d.ts +11 -0
- package/dist/shared/data-attrs.js +14 -0
- package/dist/shared/dismiss-stack.d.ts +14 -0
- package/dist/shared/dismiss-stack.js +52 -0
- package/dist/shared/dispatch-click-with-modifiers.d.ts +9 -0
- package/dist/shared/dispatch-click-with-modifiers.js +22 -0
- package/dist/shared/element-of.d.ts +7 -0
- package/dist/shared/element-of.js +14 -0
- package/dist/shared/focus.d.ts +6 -0
- package/dist/shared/focus.js +35 -0
- package/dist/shared/icons.d.ts +38 -0
- package/dist/shared/icons.js +86 -0
- package/dist/shared/input-filter.d.ts +40 -0
- package/dist/shared/input-filter.js +66 -0
- package/dist/shared/input-modality.d.ts +3 -0
- package/dist/shared/input-modality.js +26 -0
- package/dist/shared/labeling.d.ts +12 -0
- package/dist/shared/labeling.js +29 -0
- package/dist/shared/link.d.ts +12 -0
- package/dist/shared/link.js +19 -0
- package/dist/shared/merge-props.d.ts +18 -0
- package/dist/shared/merge-props.js +67 -0
- package/dist/shared/model-modifiers.d.ts +11 -0
- package/dist/shared/model-modifiers.js +9 -0
- package/dist/shared/part.d.ts +16 -0
- package/dist/shared/part.js +42 -0
- package/dist/shared/popup-state-attrs.d.ts +46 -0
- package/dist/shared/popup-state-attrs.js +23 -0
- package/dist/shared/recycle.d.ts +4 -0
- package/dist/shared/recycle.js +14 -0
- package/dist/shared/route-query.d.ts +23 -0
- package/dist/shared/route-query.js +20 -0
- package/dist/shared/surface.d.ts +27 -0
- package/dist/shared/surface.js +5 -0
- package/dist/shared/swipe-dismiss.d.ts +25 -0
- package/dist/shared/swipe-dismiss.js +37 -0
- package/dist/shared/toast-store.d.ts +98 -0
- package/dist/shared/toast-store.js +220 -0
- package/dist/shared/use-collapsible.d.ts +42 -0
- package/dist/shared/use-collapsible.js +104 -0
- package/dist/shared/use-controlled.d.ts +24 -0
- package/dist/shared/use-controlled.js +39 -0
- package/dist/shared/use-dialog.d.ts +58 -0
- package/dist/shared/use-dialog.js +175 -0
- package/dist/shared/use-dismiss.d.ts +17 -0
- package/dist/shared/use-dismiss.js +24 -0
- package/dist/shared/use-exit-animation.d.ts +12 -0
- package/dist/shared/use-exit-animation.js +15 -0
- package/dist/shared/use-field.d.ts +119 -0
- package/dist/shared/use-field.js +218 -0
- package/dist/shared/use-focus-trap.d.ts +19 -0
- package/dist/shared/use-focus-trap.js +62 -0
- package/dist/shared/use-gauge.d.ts +69 -0
- package/dist/shared/use-gauge.js +99 -0
- package/dist/shared/use-inert-background.d.ts +3 -0
- package/dist/shared/use-inert-background.js +37 -0
- package/dist/shared/use-input.d.ts +64 -0
- package/dist/shared/use-input.js +143 -0
- package/dist/shared/use-listbox.d.ts +276 -0
- package/dist/shared/use-listbox.js +1076 -0
- package/dist/shared/use-menu.d.ts +106 -0
- package/dist/shared/use-menu.js +329 -0
- package/dist/shared/use-menubar.d.ts +39 -0
- package/dist/shared/use-menubar.js +94 -0
- package/dist/shared/use-part-props.d.ts +8 -0
- package/dist/shared/use-part-props.js +15 -0
- package/dist/shared/use-positioning.d.ts +48 -0
- package/dist/shared/use-positioning.js +106 -0
- package/dist/shared/use-roving-focus.d.ts +43 -0
- package/dist/shared/use-roving-focus.js +106 -0
- package/dist/shared/use-roving-items.d.ts +47 -0
- package/dist/shared/use-roving-items.js +64 -0
- package/dist/shared/use-scroll-lock.d.ts +3 -0
- package/dist/shared/use-scroll-lock.js +71 -0
- package/dist/shared/use-toggle-indicator.d.ts +25 -0
- package/dist/shared/use-toggle-indicator.js +37 -0
- package/dist/shared/use-toggle-input.d.ts +68 -0
- package/dist/shared/use-toggle-input.js +106 -0
- package/dist/shared/use-transition-status.d.ts +27 -0
- package/dist/shared/use-transition-status.js +70 -0
- package/dist/shared/use-typeahead.d.ts +19 -0
- package/dist/shared/use-typeahead.js +45 -0
- package/dist/shared/visually-hidden.d.ts +6 -0
- package/dist/shared/visually-hidden.js +18 -0
- package/package.json +66 -4
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { computed, ref, shallowRef, toValue } from "vue";
|
|
2
|
+
import { arrow, autoUpdate, flip, hide, limitShift, offset, shift, size, useFloating } from "@floating-ui/vue";
|
|
3
|
+
//#region src/shared/use-positioning.ts
|
|
4
|
+
function usePositioning(options = {}) {
|
|
5
|
+
const anchorRef = ref(null);
|
|
6
|
+
const virtualAnchor = shallowRef(null);
|
|
7
|
+
const reference = computed(() => virtualAnchor.value ?? anchorRef.value);
|
|
8
|
+
const popupRef = ref(null);
|
|
9
|
+
const arrowRef = ref(null);
|
|
10
|
+
const side = () => toValue(options.side) ?? "bottom";
|
|
11
|
+
const align = () => toValue(options.align) ?? "center";
|
|
12
|
+
const padding = () => toValue(options.collisionPadding) ?? 8;
|
|
13
|
+
const placement = computed(() => {
|
|
14
|
+
const a = align();
|
|
15
|
+
return a === "center" ? side() : `${side()}-${a}`;
|
|
16
|
+
});
|
|
17
|
+
const middleware = computed(() => {
|
|
18
|
+
const list = [offset({
|
|
19
|
+
mainAxis: toValue(options.sideOffset) ?? 0,
|
|
20
|
+
crossAxis: toValue(options.alignOffset) ?? 0
|
|
21
|
+
})];
|
|
22
|
+
if (!toValue(options.sticky)) {
|
|
23
|
+
const fallbackSides = toValue(options.fallbackSides);
|
|
24
|
+
const a = align();
|
|
25
|
+
list.push(flip({
|
|
26
|
+
padding: padding(),
|
|
27
|
+
...fallbackSides ? { fallbackPlacements: fallbackSides.map((side) => a === "center" ? side : `${side}-${a}`) } : { fallbackAxisSideDirection: toValue(options.fallbackAxis) ?? true ? "end" : "none" }
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
list.push(shift({
|
|
31
|
+
padding: padding(),
|
|
32
|
+
limiter: limitShift()
|
|
33
|
+
}));
|
|
34
|
+
list.push(size({
|
|
35
|
+
padding: padding(),
|
|
36
|
+
apply({ availableWidth, availableHeight, elements, rects }) {
|
|
37
|
+
elements.floating.style.setProperty("--available-width", `${Math.round(availableWidth)}px`);
|
|
38
|
+
elements.floating.style.setProperty("--available-height", `${Math.round(availableHeight)}px`);
|
|
39
|
+
elements.floating.style.setProperty("--anchor-width", `${Math.round(rects.reference.width)}px`);
|
|
40
|
+
elements.floating.style.setProperty("--anchor-height", `${Math.round(rects.reference.height)}px`);
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
if (arrowRef.value) list.push(arrow({
|
|
44
|
+
element: arrowRef.value,
|
|
45
|
+
padding: toValue(options.arrowPadding) ?? 4
|
|
46
|
+
}));
|
|
47
|
+
list.push(hide());
|
|
48
|
+
return list;
|
|
49
|
+
});
|
|
50
|
+
const { floatingStyles, middlewareData, placement: finalPlacement, isPositioned } = useFloating(reference, popupRef, {
|
|
51
|
+
placement,
|
|
52
|
+
middleware,
|
|
53
|
+
strategy: computed(() => toValue(options.positionMethod) ?? "absolute"),
|
|
54
|
+
whileElementsMounted: autoUpdate,
|
|
55
|
+
open: computed(() => toValue(options.enabled) ?? true)
|
|
56
|
+
});
|
|
57
|
+
const renderedSide = computed(() => finalPlacement.value.split("-")[0]);
|
|
58
|
+
const renderedAlign = computed(() => finalPlacement.value.split("-")[1] ?? "center");
|
|
59
|
+
const hidden = computed(() => middlewareData.value.hide?.referenceHidden ?? false);
|
|
60
|
+
return {
|
|
61
|
+
anchorRef,
|
|
62
|
+
setVirtualAnchor(anchor) {
|
|
63
|
+
virtualAnchor.value = anchor;
|
|
64
|
+
},
|
|
65
|
+
popupRef,
|
|
66
|
+
arrowRef,
|
|
67
|
+
positionerProps: computed(() => ({
|
|
68
|
+
"data-part": "positioner",
|
|
69
|
+
style: {
|
|
70
|
+
...floatingStyles.value,
|
|
71
|
+
zIndex: "var(--positioner-z-index, 50)",
|
|
72
|
+
visibility: !isPositioned.value || hidden.value ? "hidden" : void 0
|
|
73
|
+
},
|
|
74
|
+
"data-side": renderedSide.value,
|
|
75
|
+
"data-align": renderedAlign.value,
|
|
76
|
+
ref: (el) => {
|
|
77
|
+
popupRef.value = el ?? null;
|
|
78
|
+
}
|
|
79
|
+
})),
|
|
80
|
+
arrowProps: computed(() => {
|
|
81
|
+
const data = middlewareData.value.arrow;
|
|
82
|
+
const side = renderedSide.value;
|
|
83
|
+
return {
|
|
84
|
+
"data-part": "arrow",
|
|
85
|
+
"data-side": side,
|
|
86
|
+
style: {
|
|
87
|
+
position: "absolute",
|
|
88
|
+
left: data?.x != null ? `${data.x}px` : "",
|
|
89
|
+
top: data?.y != null ? `${data.y}px` : "",
|
|
90
|
+
right: "",
|
|
91
|
+
bottom: "",
|
|
92
|
+
[side]: "100%"
|
|
93
|
+
},
|
|
94
|
+
ref: (el) => {
|
|
95
|
+
arrowRef.value = el ?? null;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}),
|
|
99
|
+
renderedSide,
|
|
100
|
+
renderedAlign,
|
|
101
|
+
hidden,
|
|
102
|
+
isPositioned
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { usePositioning };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type MaybeRefOrGetter, type Ref } from 'vue';
|
|
2
|
+
export type Orientation = 'horizontal' | 'vertical';
|
|
3
|
+
export interface UseRovingFocusOptions {
|
|
4
|
+
/** The element containing the items. */
|
|
5
|
+
container: Ref<HTMLElement | null>;
|
|
6
|
+
/** Selector matching the navigable items. */
|
|
7
|
+
itemSelector?: MaybeRefOrGetter<string>;
|
|
8
|
+
/** Which arrow keys move between items. */
|
|
9
|
+
orientation?: MaybeRefOrGetter<Orientation>;
|
|
10
|
+
/** Wrap around at the ends. */
|
|
11
|
+
loop?: MaybeRefOrGetter<boolean>;
|
|
12
|
+
/** Called when navigation runs past the start or end without looping. */
|
|
13
|
+
onEscapeBoundary?: (direction: 'start' | 'end') => void;
|
|
14
|
+
/**
|
|
15
|
+
* Track the active item without moving DOM focus, for
|
|
16
|
+
* `aria-activedescendant`.
|
|
17
|
+
*
|
|
18
|
+
* A listbox with a search box needs this: focus has to stay in the text input
|
|
19
|
+
* so typing keeps working, while the highlight travels down the options.
|
|
20
|
+
*/
|
|
21
|
+
virtual?: MaybeRefOrGetter<boolean>;
|
|
22
|
+
/** Called with the element that became active, in virtual mode. */
|
|
23
|
+
onActiveChange?: (item: HTMLElement | null) => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Arrow-key navigation over a set of items.
|
|
27
|
+
*
|
|
28
|
+
* Items are discovered by querying the DOM at interaction time rather than by
|
|
29
|
+
* registering themselves. That keeps them in document order for free, which
|
|
30
|
+
* registration-based approaches get wrong as soon as items are reordered,
|
|
31
|
+
* conditionally rendered or wrapped in a `v-for` that changes.
|
|
32
|
+
*
|
|
33
|
+
* Disabled items are skipped, matching how a native menu behaves.
|
|
34
|
+
*/
|
|
35
|
+
export declare function useRovingFocus(options: UseRovingFocusOptions): {
|
|
36
|
+
items: () => HTMLElement[];
|
|
37
|
+
focusAt: (index: number) => void;
|
|
38
|
+
move: (delta: number) => void;
|
|
39
|
+
onKeydown: (event: KeyboardEvent) => boolean;
|
|
40
|
+
currentIndex: () => number;
|
|
41
|
+
setActive: (item: HTMLElement | null, scroll?: boolean) => void;
|
|
42
|
+
activeItem: Ref<HTMLElement | null, HTMLElement | null>;
|
|
43
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { scrollIntoViewWithin } from "./focus.js";
|
|
2
|
+
import { ref, toValue } from "vue";
|
|
3
|
+
//#region src/shared/use-roving-focus.ts
|
|
4
|
+
/**
|
|
5
|
+
* Arrow-key navigation over a set of items.
|
|
6
|
+
*
|
|
7
|
+
* Items are discovered by querying the DOM at interaction time rather than by
|
|
8
|
+
* registering themselves. That keeps them in document order for free, which
|
|
9
|
+
* registration-based approaches get wrong as soon as items are reordered,
|
|
10
|
+
* conditionally rendered or wrapped in a `v-for` that changes.
|
|
11
|
+
*
|
|
12
|
+
* Disabled items are skipped, matching how a native menu behaves.
|
|
13
|
+
*/
|
|
14
|
+
function useRovingFocus(options) {
|
|
15
|
+
const selector = () => toValue(options.itemSelector) ?? "[role=\"menuitem\"]";
|
|
16
|
+
const orientation = () => toValue(options.orientation) ?? "vertical";
|
|
17
|
+
const loop = () => toValue(options.loop) ?? true;
|
|
18
|
+
const virtual = () => toValue(options.virtual) ?? false;
|
|
19
|
+
/** The active item in virtual mode. Unused when real focus does the job. */
|
|
20
|
+
const activeItem = ref(null);
|
|
21
|
+
function items() {
|
|
22
|
+
const container = options.container.value;
|
|
23
|
+
if (!container) return [];
|
|
24
|
+
return Array.from(container.querySelectorAll(selector())).filter((el) => el.getAttribute("aria-disabled") !== "true" && !el.hasAttribute("disabled"));
|
|
25
|
+
}
|
|
26
|
+
function focusAt(index) {
|
|
27
|
+
const list = items();
|
|
28
|
+
if (list.length === 0) return;
|
|
29
|
+
let next = index;
|
|
30
|
+
if (next < 0) {
|
|
31
|
+
if (!loop()) {
|
|
32
|
+
options.onEscapeBoundary?.("start");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
next = list.length - 1;
|
|
36
|
+
} else if (next >= list.length) {
|
|
37
|
+
if (!loop()) {
|
|
38
|
+
options.onEscapeBoundary?.("end");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
next = 0;
|
|
42
|
+
}
|
|
43
|
+
setActive(list[next] ?? null);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Makes `item` the active one, by focus or by reference depending on the mode.
|
|
47
|
+
*
|
|
48
|
+
* The virtual branch scrolls it into view itself: focusing an element does
|
|
49
|
+
* that for free, so nothing else in the library has had to.
|
|
50
|
+
*
|
|
51
|
+
* `scroll` exists for the pointer. Revealing an item the user is already
|
|
52
|
+
* pointing at is at best redundant and at worst a loop: the scroll moves the
|
|
53
|
+
* list under a stationary cursor, which puts a different half-clipped item
|
|
54
|
+
* under it, which scrolls again. Only the keyboard, which can move the
|
|
55
|
+
* highlight somewhere off screen, actually needs the reveal.
|
|
56
|
+
*/
|
|
57
|
+
function setActive(item, scroll = true) {
|
|
58
|
+
if (virtual()) {
|
|
59
|
+
activeItem.value = item;
|
|
60
|
+
options.onActiveChange?.(item);
|
|
61
|
+
} else item?.focus({ preventScroll: true });
|
|
62
|
+
if (item && scroll) scrollIntoViewWithin(item, options.container.value);
|
|
63
|
+
}
|
|
64
|
+
function currentIndex() {
|
|
65
|
+
const current = virtual() ? activeItem.value : document.activeElement;
|
|
66
|
+
return current ? items().indexOf(current) : -1;
|
|
67
|
+
}
|
|
68
|
+
function move(delta) {
|
|
69
|
+
focusAt(currentIndex() + delta);
|
|
70
|
+
}
|
|
71
|
+
function onKeydown(event) {
|
|
72
|
+
const vertical = orientation() === "vertical";
|
|
73
|
+
const nextKey = vertical ? "ArrowDown" : "ArrowRight";
|
|
74
|
+
const prevKey = vertical ? "ArrowUp" : "ArrowLeft";
|
|
75
|
+
switch (event.key) {
|
|
76
|
+
case nextKey:
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
move(1);
|
|
79
|
+
return true;
|
|
80
|
+
case prevKey:
|
|
81
|
+
event.preventDefault();
|
|
82
|
+
move(-1);
|
|
83
|
+
return true;
|
|
84
|
+
case "Home":
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
focusAt(0);
|
|
87
|
+
return true;
|
|
88
|
+
case "End":
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
focusAt(items().length - 1);
|
|
91
|
+
return true;
|
|
92
|
+
default: return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
items,
|
|
97
|
+
focusAt,
|
|
98
|
+
move,
|
|
99
|
+
onKeydown,
|
|
100
|
+
currentIndex,
|
|
101
|
+
setActive,
|
|
102
|
+
activeItem
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { useRovingFocus };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type ComputedRef, type Ref } from 'vue';
|
|
2
|
+
/** One navigable item's entry in the set its container keeps. */
|
|
3
|
+
export interface RovingItem<Value> {
|
|
4
|
+
value: Value;
|
|
5
|
+
/** Stable for the item's lifetime; what a re-registration is matched on. */
|
|
6
|
+
id: string;
|
|
7
|
+
disabled: boolean;
|
|
8
|
+
element: HTMLElement | null;
|
|
9
|
+
}
|
|
10
|
+
export interface UseRovingItemsOptions<Value> {
|
|
11
|
+
/**
|
|
12
|
+
* Which item should hold the tab stop before focus has moved into the set —
|
|
13
|
+
* usually the selected one. A set with no selection leaves it undefined and
|
|
14
|
+
* the first enabled item takes it.
|
|
15
|
+
*/
|
|
16
|
+
preferred?: () => Value | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface UseRovingItemsReturn<Value> {
|
|
19
|
+
/** Registration order. Shallow, so elements come back unproxied. */
|
|
20
|
+
items: Ref<RovingItem<Value>[]>;
|
|
21
|
+
/** The same items in document order. */
|
|
22
|
+
ordered: ComputedRef<RovingItem<Value>[]>;
|
|
23
|
+
register: (item: RovingItem<Value>) => void;
|
|
24
|
+
unregister: (id: string) => void;
|
|
25
|
+
find: (value: Value) => RovingItem<Value> | undefined;
|
|
26
|
+
/** The item focus last landed on, which is not always the preferred one. */
|
|
27
|
+
highlighted: Ref<Value | undefined>;
|
|
28
|
+
highlight: (value: Value | undefined) => void;
|
|
29
|
+
/** The single item the Tab key reaches. */
|
|
30
|
+
tabbableValue: ComputedRef<Value | undefined>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The set of items behind a roving tab stop: who is in it, in what order, and
|
|
34
|
+
* which one the Tab key reaches.
|
|
35
|
+
*
|
|
36
|
+
* The companion to {@link useRovingFocus}, which moves focus *between* items by
|
|
37
|
+
* querying the DOM at interaction time. That covers the keys, but not the
|
|
38
|
+
* `tabindex` each item has to render with — a value known before any key is
|
|
39
|
+
* pressed, and reactive — so anything with a roving tab stop keeps this
|
|
40
|
+
* alongside it.
|
|
41
|
+
*
|
|
42
|
+
* The tab stop follows focus rather than selection, so leaving a set and
|
|
43
|
+
* returning to it lands on the item last looked at. It falls back to the first
|
|
44
|
+
* enabled item when the preferred one is disabled or absent, because otherwise
|
|
45
|
+
* every item renders `-1` and the whole set drops out of the tab order.
|
|
46
|
+
*/
|
|
47
|
+
export declare function useRovingItems<Value>(options?: UseRovingItemsOptions<Value>): UseRovingItemsReturn<Value>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { computed, ref, shallowRef } from "vue";
|
|
2
|
+
//#region src/shared/use-roving-items.ts
|
|
3
|
+
/**
|
|
4
|
+
* The set of items behind a roving tab stop: who is in it, in what order, and
|
|
5
|
+
* which one the Tab key reaches.
|
|
6
|
+
*
|
|
7
|
+
* The companion to {@link useRovingFocus}, which moves focus *between* items by
|
|
8
|
+
* querying the DOM at interaction time. That covers the keys, but not the
|
|
9
|
+
* `tabindex` each item has to render with — a value known before any key is
|
|
10
|
+
* pressed, and reactive — so anything with a roving tab stop keeps this
|
|
11
|
+
* alongside it.
|
|
12
|
+
*
|
|
13
|
+
* The tab stop follows focus rather than selection, so leaving a set and
|
|
14
|
+
* returning to it lands on the item last looked at. It falls back to the first
|
|
15
|
+
* enabled item when the preferred one is disabled or absent, because otherwise
|
|
16
|
+
* every item renders `-1` and the whole set drops out of the tab order.
|
|
17
|
+
*/
|
|
18
|
+
function useRovingItems(options = {}) {
|
|
19
|
+
/**
|
|
20
|
+
* Shallow on purpose: a deep ref would hand back proxied DOM elements, and an
|
|
21
|
+
* element compared against `document.activeElement` — or measured — has to be
|
|
22
|
+
* the element itself. Every change replaces the array instead.
|
|
23
|
+
*/
|
|
24
|
+
const items = shallowRef([]);
|
|
25
|
+
/** Registration order is mount order; items are read in document order. */
|
|
26
|
+
const ordered = computed(() => [...items.value].sort((a, b) => {
|
|
27
|
+
if (!a.element || !b.element || a.element === b.element) return 0;
|
|
28
|
+
return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
|
|
29
|
+
}));
|
|
30
|
+
function register(item) {
|
|
31
|
+
const index = items.value.findIndex((entry) => entry.id === item.id);
|
|
32
|
+
const next = [...items.value];
|
|
33
|
+
if (index === -1) next.push(item);
|
|
34
|
+
else next[index] = item;
|
|
35
|
+
items.value = next;
|
|
36
|
+
}
|
|
37
|
+
function unregister(id) {
|
|
38
|
+
items.value = items.value.filter((entry) => entry.id !== id);
|
|
39
|
+
}
|
|
40
|
+
function find(value) {
|
|
41
|
+
return ordered.value.find((entry) => entry.value === value);
|
|
42
|
+
}
|
|
43
|
+
const highlighted = ref(void 0);
|
|
44
|
+
function highlight(value) {
|
|
45
|
+
highlighted.value = value;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
items,
|
|
49
|
+
ordered,
|
|
50
|
+
register,
|
|
51
|
+
unregister,
|
|
52
|
+
find,
|
|
53
|
+
highlighted,
|
|
54
|
+
highlight,
|
|
55
|
+
tabbableValue: computed(() => {
|
|
56
|
+
const list = ordered.value;
|
|
57
|
+
const preferred = highlighted.value ?? options.preferred?.();
|
|
58
|
+
if (preferred !== void 0 && list.some((item) => item.value === preferred && !item.disabled)) return preferred;
|
|
59
|
+
return list.find((item) => !item.disabled)?.value;
|
|
60
|
+
})
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { useRovingItems };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { onScopeDispose, toValue, watch } from "vue";
|
|
2
|
+
//#region src/shared/use-scroll-lock.ts
|
|
3
|
+
/**
|
|
4
|
+
* Locks are counted rather than boolean. A dialog opening a second dialog must
|
|
5
|
+
* not have the inner one's close restore scrolling while the outer is still up.
|
|
6
|
+
*/
|
|
7
|
+
var lockCount = 0;
|
|
8
|
+
var restore = null;
|
|
9
|
+
function isIos() {
|
|
10
|
+
if (typeof navigator === "undefined") return false;
|
|
11
|
+
return /iP(hone|ad|od)/.test(navigator.platform) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
12
|
+
}
|
|
13
|
+
function applyLock() {
|
|
14
|
+
const { body, documentElement } = document;
|
|
15
|
+
const previousOverflow = body.style.overflow;
|
|
16
|
+
const previousRootOverflow = documentElement.style.overflow;
|
|
17
|
+
const previousPaddingRight = body.style.paddingRight;
|
|
18
|
+
const previousPosition = body.style.position;
|
|
19
|
+
const previousTop = body.style.top;
|
|
20
|
+
const previousWidth = body.style.width;
|
|
21
|
+
const scrollbarWidth = window.innerWidth - documentElement.clientWidth;
|
|
22
|
+
if (scrollbarWidth > 0) {
|
|
23
|
+
const currentPadding = Number.parseFloat(getComputedStyle(body).paddingRight) || 0;
|
|
24
|
+
body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;
|
|
25
|
+
}
|
|
26
|
+
body.style.overflow = "clip";
|
|
27
|
+
documentElement.style.overflow = "clip";
|
|
28
|
+
const scrollY = window.scrollY;
|
|
29
|
+
if (isIos()) {
|
|
30
|
+
body.style.position = "fixed";
|
|
31
|
+
body.style.top = `${-scrollY}px`;
|
|
32
|
+
body.style.width = "100%";
|
|
33
|
+
}
|
|
34
|
+
return () => {
|
|
35
|
+
body.style.overflow = previousOverflow;
|
|
36
|
+
documentElement.style.overflow = previousRootOverflow;
|
|
37
|
+
body.style.paddingRight = previousPaddingRight;
|
|
38
|
+
if (isIos()) {
|
|
39
|
+
body.style.position = previousPosition;
|
|
40
|
+
body.style.top = previousTop;
|
|
41
|
+
body.style.width = previousWidth;
|
|
42
|
+
window.scrollTo(0, scrollY);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Prevents the page behind a modal surface from scrolling. */
|
|
47
|
+
function useScrollLock(enabled) {
|
|
48
|
+
let held = false;
|
|
49
|
+
function release() {
|
|
50
|
+
if (!held) return;
|
|
51
|
+
held = false;
|
|
52
|
+
lockCount -= 1;
|
|
53
|
+
if (lockCount === 0) {
|
|
54
|
+
restore?.();
|
|
55
|
+
restore = null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function acquire() {
|
|
59
|
+
if (held || typeof document === "undefined") return;
|
|
60
|
+
held = true;
|
|
61
|
+
lockCount += 1;
|
|
62
|
+
if (lockCount === 1) restore = applyLock();
|
|
63
|
+
}
|
|
64
|
+
watch(() => toValue(enabled), (on) => on ? acquire() : release(), {
|
|
65
|
+
immediate: true,
|
|
66
|
+
flush: "post"
|
|
67
|
+
});
|
|
68
|
+
onScopeDispose(release);
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { useScrollLock };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ComputedRef, type Ref } from 'vue';
|
|
2
|
+
import { type TransitionStatus } from './use-transition-status';
|
|
3
|
+
/** What a checkbox or radio root hands its indicator. */
|
|
4
|
+
export interface ToggleIndicatorContext<State extends object = object> {
|
|
5
|
+
state: ComputedRef<State>;
|
|
6
|
+
/** The root's own `data-*` hooks, repeated on the indicator. */
|
|
7
|
+
hooks: ComputedRef<Record<string, string>>;
|
|
8
|
+
/** Whether the indicator should be showing. */
|
|
9
|
+
present: () => boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const provideToggleIndicator: (value: ToggleIndicatorContext<object>) => ToggleIndicatorContext<object>, useToggleIndicatorContext: () => ToggleIndicatorContext<object>;
|
|
12
|
+
export interface UseToggleIndicatorReturn<State extends object> {
|
|
13
|
+
/** Whether the indicator is in the DOM. Outlives `present` for an exit animation. */
|
|
14
|
+
mounted: Ref<boolean>;
|
|
15
|
+
state: ComputedRef<State & {
|
|
16
|
+
/**
|
|
17
|
+
* Where the indicator is in its enter or exit animation.
|
|
18
|
+
* @attribute `data-enter-from` as it enters, `data-leave-to` as it leaves
|
|
19
|
+
*/
|
|
20
|
+
transitionStatus: TransitionStatus;
|
|
21
|
+
}>;
|
|
22
|
+
indicatorProps: ComputedRef<Record<string, unknown>>;
|
|
23
|
+
}
|
|
24
|
+
/** Mounts the indicator while its root is checked, and holds it through the exit animation. */
|
|
25
|
+
export declare function useToggleIndicator<State extends object>(): UseToggleIndicatorReturn<State>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { dataAttrs } from "./data-attrs.js";
|
|
2
|
+
import { createContext } from "./context.js";
|
|
3
|
+
import { popupStateAttrs } from "./popup-state-attrs.js";
|
|
4
|
+
import { useTransitionStatus } from "./use-transition-status.js";
|
|
5
|
+
import { useExitAnimation } from "./use-exit-animation.js";
|
|
6
|
+
import { computed, ref } from "vue";
|
|
7
|
+
//#region src/shared/use-toggle-indicator.ts
|
|
8
|
+
var { provideContext: provideToggleIndicator, useContext: useToggleIndicatorContext } = createContext("ToggleIndicator");
|
|
9
|
+
/** Mounts the indicator while its root is checked, and holds it through the exit animation. */
|
|
10
|
+
function useToggleIndicator() {
|
|
11
|
+
const context = useToggleIndicatorContext();
|
|
12
|
+
const element = ref(null);
|
|
13
|
+
const { mounted, transitionStatus, setMounted } = useTransitionStatus(context.present);
|
|
14
|
+
useExitAnimation({
|
|
15
|
+
open: context.present,
|
|
16
|
+
mounted,
|
|
17
|
+
setMounted,
|
|
18
|
+
element
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
mounted,
|
|
22
|
+
state: computed(() => ({
|
|
23
|
+
...context.state.value,
|
|
24
|
+
transitionStatus: transitionStatus.value
|
|
25
|
+
})),
|
|
26
|
+
indicatorProps: computed(() => ({
|
|
27
|
+
"data-part": "indicator",
|
|
28
|
+
...context.hooks.value,
|
|
29
|
+
...dataAttrs({ transitionStatus: transitionStatus.value }, popupStateAttrs),
|
|
30
|
+
ref: (el) => {
|
|
31
|
+
element.value = el ?? null;
|
|
32
|
+
}
|
|
33
|
+
}))
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { provideToggleIndicator, useToggleIndicator, useToggleIndicatorContext };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type ComputedRef, type Ref } from 'vue';
|
|
2
|
+
/** What the visible element announces itself as. */
|
|
3
|
+
export type ToggleRole = 'switch' | 'checkbox' | 'radio';
|
|
4
|
+
export interface UseToggleInputOptions {
|
|
5
|
+
role: ToggleRole;
|
|
6
|
+
/**
|
|
7
|
+
* The hidden input's own type. A `radio` groups natively by `name`, which is
|
|
8
|
+
* what makes arrow keys and form submission behave without any help.
|
|
9
|
+
*/
|
|
10
|
+
inputType?: 'checkbox' | 'radio';
|
|
11
|
+
/** Whether the control is on. Read, never written — the caller owns it. */
|
|
12
|
+
checked: () => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Neither on nor off. Checkboxes only: it is a presentation state, so a press
|
|
15
|
+
* resolves it to checked rather than cycling back through it.
|
|
16
|
+
*/
|
|
17
|
+
indeterminate?: () => boolean;
|
|
18
|
+
disabled?: () => boolean;
|
|
19
|
+
readOnly?: () => boolean;
|
|
20
|
+
required?: () => boolean;
|
|
21
|
+
id?: () => string | undefined;
|
|
22
|
+
name?: () => string | undefined;
|
|
23
|
+
/** Submitted when checked. */
|
|
24
|
+
value?: () => string | undefined;
|
|
25
|
+
form?: () => string | undefined;
|
|
26
|
+
/** The ids of the text describing the control, a field's description and error. */
|
|
27
|
+
describedBy?: () => string | undefined;
|
|
28
|
+
/** Whether the visible element is a real `<button>`, which keys itself. */
|
|
29
|
+
native?: () => boolean;
|
|
30
|
+
/** Tab position. A roving group hands out `0` to one member and `-1` to the rest. */
|
|
31
|
+
tabindex?: () => number | undefined;
|
|
32
|
+
/** The `data-*` hooks to put on every part. */
|
|
33
|
+
hooks: () => Record<string, string>;
|
|
34
|
+
/** Called when the control is activated, with the state it is moving to. */
|
|
35
|
+
onToggle: (next: boolean, event: Event) => void;
|
|
36
|
+
onFocus?: (event: FocusEvent) => void;
|
|
37
|
+
onBlur?: (event: FocusEvent) => void;
|
|
38
|
+
}
|
|
39
|
+
export interface UseToggleInputReturn {
|
|
40
|
+
/** The visible element. */
|
|
41
|
+
rootEl: Ref<HTMLElement | null>;
|
|
42
|
+
/** The hidden input behind it. */
|
|
43
|
+
inputEl: Ref<HTMLInputElement | null>;
|
|
44
|
+
rootProps: ComputedRef<Record<string, unknown>>;
|
|
45
|
+
inputProps: ComputedRef<Record<string, unknown>>;
|
|
46
|
+
/** Whether to render the input: only a `name` or a wrapping `<label>` has a use for it. */
|
|
47
|
+
rendersInput: ComputedRef<boolean>;
|
|
48
|
+
/** Activates the control as a press would, respecting disabled and readOnly. */
|
|
49
|
+
activate: (event?: Event) => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The wiring shared by every control that is a hidden native input with
|
|
53
|
+
* something styled in front of it — switch, checkbox, radio.
|
|
54
|
+
*
|
|
55
|
+
* The input is what makes the control submit with a form, respond to a
|
|
56
|
+
* wrapping `<label>` and — for radios — group by `name` so the browser enforces
|
|
57
|
+
* exclusivity. Presses on the visible element are forwarded to it, so a change
|
|
58
|
+
* originates natively. Without a name or a label it has no use, and a root may
|
|
59
|
+
* leave it out (`rendersInput`): a page of unnamed row checkboxes then carries
|
|
60
|
+
* no inputs at all, and the press toggles directly.
|
|
61
|
+
*
|
|
62
|
+
* Deliberately owns no state of its own: `checked` is read through a getter and
|
|
63
|
+
* changes are reported through `onToggle`. A switch and a checkbox own their
|
|
64
|
+
* boolean; a radio owns nothing, because the group it belongs to holds the one
|
|
65
|
+
* value shared between its members. One engine serves all three only because it
|
|
66
|
+
* stays out of that question.
|
|
67
|
+
*/
|
|
68
|
+
export declare function useToggleInput(options: UseToggleInputOptions): UseToggleInputReturn;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { visuallyHidden } from "./visually-hidden.js";
|
|
2
|
+
import { computed, onMounted, ref } from "vue";
|
|
3
|
+
//#region src/shared/use-toggle-input.ts
|
|
4
|
+
/**
|
|
5
|
+
* The wiring shared by every control that is a hidden native input with
|
|
6
|
+
* something styled in front of it — switch, checkbox, radio.
|
|
7
|
+
*
|
|
8
|
+
* The input is what makes the control submit with a form, respond to a
|
|
9
|
+
* wrapping `<label>` and — for radios — group by `name` so the browser enforces
|
|
10
|
+
* exclusivity. Presses on the visible element are forwarded to it, so a change
|
|
11
|
+
* originates natively. Without a name or a label it has no use, and a root may
|
|
12
|
+
* leave it out (`rendersInput`): a page of unnamed row checkboxes then carries
|
|
13
|
+
* no inputs at all, and the press toggles directly.
|
|
14
|
+
*
|
|
15
|
+
* Deliberately owns no state of its own: `checked` is read through a getter and
|
|
16
|
+
* changes are reported through `onToggle`. A switch and a checkbox own their
|
|
17
|
+
* boolean; a radio owns nothing, because the group it belongs to holds the one
|
|
18
|
+
* value shared between its members. One engine serves all three only because it
|
|
19
|
+
* stays out of that question.
|
|
20
|
+
*/
|
|
21
|
+
function useToggleInput(options) {
|
|
22
|
+
const rootEl = ref(null);
|
|
23
|
+
const inputEl = ref(null);
|
|
24
|
+
const disabled = () => options.disabled?.() ?? false;
|
|
25
|
+
const readOnly = () => options.readOnly?.() ?? false;
|
|
26
|
+
const required = () => options.required?.() ?? false;
|
|
27
|
+
const native = () => options.native?.() ?? false;
|
|
28
|
+
const indeterminate = () => options.indeterminate?.() ?? false;
|
|
29
|
+
const name = () => options.name?.();
|
|
30
|
+
const inLabel = ref(false);
|
|
31
|
+
onMounted(() => {
|
|
32
|
+
inLabel.value = rootEl.value?.closest("label") != null;
|
|
33
|
+
});
|
|
34
|
+
const rendersInput = computed(() => Boolean(name()) || inLabel.value);
|
|
35
|
+
/** Every press ends here: the input, when there is one, toggles itself, so the change is a native one. */
|
|
36
|
+
function activate(event) {
|
|
37
|
+
if (disabled() || readOnly()) return;
|
|
38
|
+
if (inputEl.value) inputEl.value.click();
|
|
39
|
+
else options.onToggle(!options.checked(), event ?? new Event("change"));
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
rootEl,
|
|
43
|
+
inputEl,
|
|
44
|
+
rootProps: computed(() => ({
|
|
45
|
+
...options.hooks(),
|
|
46
|
+
id: options.id?.(),
|
|
47
|
+
role: options.role,
|
|
48
|
+
"aria-checked": indeterminate() ? "mixed" : options.checked(),
|
|
49
|
+
"aria-readonly": readOnly() || void 0,
|
|
50
|
+
"aria-required": required() || void 0,
|
|
51
|
+
"aria-disabled": disabled() || void 0,
|
|
52
|
+
"aria-describedby": options.describedBy?.(),
|
|
53
|
+
type: native() ? "button" : void 0,
|
|
54
|
+
disabled: native() && disabled() || void 0,
|
|
55
|
+
tabindex: options.tabindex ? options.tabindex() : native() || disabled() ? void 0 : 0,
|
|
56
|
+
ref: (el) => {
|
|
57
|
+
rootEl.value = el ?? null;
|
|
58
|
+
},
|
|
59
|
+
onFocus: options.onFocus,
|
|
60
|
+
onBlur: options.onBlur,
|
|
61
|
+
onClick(event) {
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
activate(event);
|
|
64
|
+
},
|
|
65
|
+
onKeydown(event) {
|
|
66
|
+
if (native() || disabled() || event.target !== event.currentTarget) return;
|
|
67
|
+
if (event.key === " ") event.preventDefault();
|
|
68
|
+
else if (event.key === "Enter" && !event.defaultPrevented) {
|
|
69
|
+
event.preventDefault();
|
|
70
|
+
event.currentTarget.click();
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
onKeyup(event) {
|
|
74
|
+
if (native() || disabled() || event.defaultPrevented) return;
|
|
75
|
+
if (event.key === " " && event.target === event.currentTarget) event.currentTarget.click();
|
|
76
|
+
}
|
|
77
|
+
})),
|
|
78
|
+
inputProps: computed(() => ({
|
|
79
|
+
type: options.inputType ?? "checkbox",
|
|
80
|
+
name: name(),
|
|
81
|
+
value: options.value?.(),
|
|
82
|
+
form: options.form?.(),
|
|
83
|
+
disabled: disabled(),
|
|
84
|
+
checked: options.checked(),
|
|
85
|
+
indeterminate: indeterminate(),
|
|
86
|
+
style: visuallyHidden,
|
|
87
|
+
tabindex: -1,
|
|
88
|
+
"aria-hidden": true,
|
|
89
|
+
ref: (el) => {
|
|
90
|
+
inputEl.value = el ?? null;
|
|
91
|
+
},
|
|
92
|
+
onClick(event) {
|
|
93
|
+
event.stopPropagation();
|
|
94
|
+
if (readOnly()) event.preventDefault();
|
|
95
|
+
},
|
|
96
|
+
onChange(event) {
|
|
97
|
+
options.onToggle(event.target.checked, event);
|
|
98
|
+
},
|
|
99
|
+
onFocus: () => rootEl.value?.focus()
|
|
100
|
+
})),
|
|
101
|
+
rendersInput,
|
|
102
|
+
activate
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { useToggleInput };
|