@proyecto-viviana/solidaria 0.2.8 → 0.4.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/README.md +31 -236
- package/dist/_chunk/actiongroup.js +207 -0
- package/dist/_chunk/actiongroup.js.map +1 -0
- package/dist/_chunk/actiongroup.jsx +207 -0
- package/dist/_chunk/actiongroup.jsx.map +1 -0
- package/dist/_chunk/ariaHideOutside.js +122 -0
- package/dist/_chunk/ariaHideOutside.js.map +1 -0
- package/dist/_chunk/ariaHideOutside.jsx +122 -0
- package/dist/_chunk/ariaHideOutside.jsx.map +1 -0
- package/dist/_chunk/autocomplete.js +196 -0
- package/dist/_chunk/autocomplete.js.map +1 -0
- package/dist/_chunk/autocomplete.jsx +196 -0
- package/dist/_chunk/autocomplete.jsx.map +1 -0
- package/dist/_chunk/breadcrumbs.js +119 -0
- package/dist/_chunk/breadcrumbs.js.map +1 -0
- package/dist/_chunk/breadcrumbs.jsx +119 -0
- package/dist/_chunk/breadcrumbs.jsx.map +1 -0
- package/dist/_chunk/button.js +276 -0
- package/dist/_chunk/button.js.map +1 -0
- package/dist/_chunk/button.jsx +276 -0
- package/dist/_chunk/button.jsx.map +1 -0
- package/dist/_chunk/calendar.js +1036 -0
- package/dist/_chunk/calendar.js.map +1 -0
- package/dist/_chunk/calendar.jsx +1036 -0
- package/dist/_chunk/calendar.jsx.map +1 -0
- package/dist/_chunk/checkbox.js +234 -0
- package/dist/_chunk/checkbox.js.map +1 -0
- package/dist/_chunk/checkbox.jsx +234 -0
- package/dist/_chunk/checkbox.jsx.map +1 -0
- package/dist/_chunk/color.js +1174 -0
- package/dist/_chunk/color.js.map +1 -0
- package/dist/_chunk/color.jsx +1174 -0
- package/dist/_chunk/color.jsx.map +1 -0
- package/dist/_chunk/combobox.js +436 -0
- package/dist/_chunk/combobox.js.map +1 -0
- package/dist/_chunk/combobox.jsx +436 -0
- package/dist/_chunk/combobox.jsx.map +1 -0
- package/dist/_chunk/createCollator.js +229 -0
- package/dist/_chunk/createCollator.js.map +1 -0
- package/dist/_chunk/createCollator.jsx +223 -0
- package/dist/_chunk/createCollator.jsx.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.js +133 -0
- package/dist/_chunk/createCollectionRowInteraction.js.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx +133 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -0
- package/dist/_chunk/createField.js +54 -0
- package/dist/_chunk/createField.js.map +1 -0
- package/dist/_chunk/createField.jsx +54 -0
- package/dist/_chunk/createField.jsx.map +1 -0
- package/dist/_chunk/createFocus.js +101 -0
- package/dist/_chunk/createFocus.js.map +1 -0
- package/dist/_chunk/createFocus.jsx +101 -0
- package/dist/_chunk/createFocus.jsx.map +1 -0
- package/dist/_chunk/createFocusRing.js +54 -0
- package/dist/_chunk/createFocusRing.js.map +1 -0
- package/dist/_chunk/createFocusRing.jsx +54 -0
- package/dist/_chunk/createFocusRing.jsx.map +1 -0
- package/dist/_chunk/createFocusWithin.js +121 -0
- package/dist/_chunk/createFocusWithin.js.map +1 -0
- package/dist/_chunk/createFocusWithin.jsx +121 -0
- package/dist/_chunk/createFocusWithin.jsx.map +1 -0
- package/dist/_chunk/createFocusable.js +131 -0
- package/dist/_chunk/createFocusable.js.map +1 -0
- package/dist/_chunk/createFocusable.jsx +131 -0
- package/dist/_chunk/createFocusable.jsx.map +1 -0
- package/dist/_chunk/createFormValidation.js +135 -0
- package/dist/_chunk/createFormValidation.js.map +1 -0
- package/dist/_chunk/createFormValidation.jsx +135 -0
- package/dist/_chunk/createFormValidation.jsx.map +1 -0
- package/dist/_chunk/createHover.js +130 -0
- package/dist/_chunk/createHover.js.map +1 -0
- package/dist/_chunk/createHover.jsx +130 -0
- package/dist/_chunk/createHover.jsx.map +1 -0
- package/dist/_chunk/createInteractionModality.js +269 -0
- package/dist/_chunk/createInteractionModality.js.map +1 -0
- package/dist/_chunk/createInteractionModality.jsx +269 -0
- package/dist/_chunk/createInteractionModality.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +46 -0
- package/dist/_chunk/createLabel.js.map +1 -0
- package/dist/_chunk/createLabel.jsx +46 -0
- package/dist/_chunk/createLabel.jsx.map +1 -0
- package/dist/_chunk/createLabels.js +31 -0
- package/dist/_chunk/createLabels.js.map +1 -0
- package/dist/_chunk/createLabels.jsx +31 -0
- package/dist/_chunk/createLabels.jsx.map +1 -0
- package/dist/_chunk/createLandmark.js +198 -0
- package/dist/_chunk/createLandmark.js.map +1 -0
- package/dist/_chunk/createLandmark.jsx +198 -0
- package/dist/_chunk/createLandmark.jsx.map +1 -0
- package/dist/_chunk/createLongPress.js +91 -0
- package/dist/_chunk/createLongPress.js.map +1 -0
- package/dist/_chunk/createLongPress.jsx +91 -0
- package/dist/_chunk/createLongPress.jsx.map +1 -0
- package/dist/_chunk/createOverlay.js +327 -0
- package/dist/_chunk/createOverlay.js.map +1 -0
- package/dist/_chunk/createOverlay.jsx +327 -0
- package/dist/_chunk/createOverlay.jsx.map +1 -0
- package/dist/_chunk/createPress.js +526 -0
- package/dist/_chunk/createPress.js.map +1 -0
- package/dist/_chunk/createPress.jsx +526 -0
- package/dist/_chunk/createPress.jsx.map +1 -0
- package/dist/_chunk/createProgressBar.js +81 -0
- package/dist/_chunk/createProgressBar.js.map +1 -0
- package/dist/_chunk/createProgressBar.jsx +81 -0
- package/dist/_chunk/createProgressBar.jsx.map +1 -0
- package/dist/_chunk/createSelectableItem.js +298 -0
- package/dist/_chunk/createSelectableItem.js.map +1 -0
- package/dist/_chunk/createSelectableItem.jsx +298 -0
- package/dist/_chunk/createSelectableItem.jsx.map +1 -0
- package/dist/_chunk/createToggle.js +158 -0
- package/dist/_chunk/createToggle.js.map +1 -0
- package/dist/_chunk/createToggle.jsx +158 -0
- package/dist/_chunk/createToggle.jsx.map +1 -0
- package/dist/_chunk/createTypeSelect.js +125 -0
- package/dist/_chunk/createTypeSelect.js.map +1 -0
- package/dist/_chunk/createTypeSelect.jsx +125 -0
- package/dist/_chunk/createTypeSelect.jsx.map +1 -0
- package/dist/_chunk/datepicker.js +1393 -0
- package/dist/_chunk/datepicker.js.map +1 -0
- package/dist/_chunk/datepicker.jsx +1393 -0
- package/dist/_chunk/datepicker.jsx.map +1 -0
- package/dist/_chunk/dialog.js +62 -0
- package/dist/_chunk/dialog.js.map +1 -0
- package/dist/_chunk/dialog.jsx +62 -0
- package/dist/_chunk/dialog.jsx.map +1 -0
- package/dist/_chunk/disclosure.js +185 -0
- package/dist/_chunk/disclosure.js.map +1 -0
- package/dist/_chunk/disclosure.jsx +185 -0
- package/dist/_chunk/disclosure.jsx.map +1 -0
- package/dist/_chunk/dnd.js +1304 -0
- package/dist/_chunk/dnd.js.map +1 -0
- package/dist/_chunk/dnd.jsx +1304 -0
- package/dist/_chunk/dnd.jsx.map +1 -0
- package/dist/_chunk/env.js +105 -0
- package/dist/_chunk/env.js.map +1 -0
- package/dist/_chunk/env.jsx +105 -0
- package/dist/_chunk/env.jsx.map +1 -0
- package/dist/_chunk/filterDOMProps.js +82 -0
- package/dist/_chunk/filterDOMProps.js.map +1 -0
- package/dist/_chunk/filterDOMProps.jsx +82 -0
- package/dist/_chunk/filterDOMProps.jsx.map +1 -0
- package/dist/_chunk/focus.js +399 -0
- package/dist/_chunk/focus.js.map +1 -0
- package/dist/_chunk/focus.jsx +399 -0
- package/dist/_chunk/focus.jsx.map +1 -0
- package/dist/_chunk/focus2.js +895 -0
- package/dist/_chunk/focus2.js.map +1 -0
- package/dist/_chunk/focus2.jsx +870 -0
- package/dist/_chunk/focus2.jsx.map +1 -0
- package/dist/_chunk/form.js +39 -0
- package/dist/_chunk/form.js.map +1 -0
- package/dist/_chunk/form.jsx +39 -0
- package/dist/_chunk/form.jsx.map +1 -0
- package/dist/_chunk/grid.js +623 -0
- package/dist/_chunk/grid.js.map +1 -0
- package/dist/_chunk/grid.jsx +623 -0
- package/dist/_chunk/grid.jsx.map +1 -0
- package/dist/_chunk/gridlist.js +364 -0
- package/dist/_chunk/gridlist.js.map +1 -0
- package/dist/_chunk/gridlist.jsx +364 -0
- package/dist/_chunk/gridlist.jsx.map +1 -0
- package/dist/_chunk/i18n.js +254 -0
- package/dist/_chunk/i18n.js.map +1 -0
- package/dist/_chunk/i18n.jsx +254 -0
- package/dist/_chunk/i18n.jsx.map +1 -0
- package/dist/_chunk/interactions.js +241 -0
- package/dist/_chunk/interactions.js.map +1 -0
- package/dist/_chunk/interactions.jsx +237 -0
- package/dist/_chunk/interactions.jsx.map +1 -0
- package/dist/_chunk/link.js +96 -0
- package/dist/_chunk/link.js.map +1 -0
- package/dist/_chunk/link.jsx +96 -0
- package/dist/_chunk/link.jsx.map +1 -0
- package/dist/_chunk/listbox.js +324 -0
- package/dist/_chunk/listbox.js.map +1 -0
- package/dist/_chunk/listbox.jsx +324 -0
- package/dist/_chunk/listbox.jsx.map +1 -0
- package/dist/_chunk/live-announcer.js +207 -0
- package/dist/_chunk/live-announcer.js.map +1 -0
- package/dist/_chunk/live-announcer.jsx +207 -0
- package/dist/_chunk/live-announcer.jsx.map +1 -0
- package/dist/_chunk/menu.js +518 -0
- package/dist/_chunk/menu.js.map +1 -0
- package/dist/_chunk/menu.jsx +518 -0
- package/dist/_chunk/menu.jsx.map +1 -0
- package/dist/_chunk/meter.js +33 -0
- package/dist/_chunk/meter.js.map +1 -0
- package/dist/_chunk/meter.jsx +33 -0
- package/dist/_chunk/meter.jsx.map +1 -0
- package/dist/_chunk/numberfield.js +258 -0
- package/dist/_chunk/numberfield.js.map +1 -0
- package/dist/_chunk/numberfield.jsx +258 -0
- package/dist/_chunk/numberfield.jsx.map +1 -0
- package/dist/_chunk/overlays.js +186 -0
- package/dist/_chunk/overlays.js.map +1 -0
- package/dist/_chunk/overlays.jsx +162 -0
- package/dist/_chunk/overlays.jsx.map +1 -0
- package/dist/_chunk/popover.js +574 -0
- package/dist/_chunk/popover.js.map +1 -0
- package/dist/_chunk/popover.jsx +574 -0
- package/dist/_chunk/popover.jsx.map +1 -0
- package/dist/_chunk/radio.js +319 -0
- package/dist/_chunk/radio.js.map +1 -0
- package/dist/_chunk/radio.jsx +319 -0
- package/dist/_chunk/radio.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +209 -0
- package/dist/_chunk/searchfield.js.map +1 -0
- package/dist/_chunk/searchfield.jsx +209 -0
- package/dist/_chunk/searchfield.jsx.map +1 -0
- package/dist/_chunk/select.js +403 -0
- package/dist/_chunk/select.js.map +1 -0
- package/dist/_chunk/select.jsx +394 -0
- package/dist/_chunk/select.jsx.map +1 -0
- package/dist/_chunk/selection.js +679 -0
- package/dist/_chunk/selection.js.map +1 -0
- package/dist/_chunk/selection.jsx +679 -0
- package/dist/_chunk/selection.jsx.map +1 -0
- package/dist/_chunk/separator.js +29 -0
- package/dist/_chunk/separator.js.map +1 -0
- package/dist/_chunk/separator.jsx +29 -0
- package/dist/_chunk/separator.jsx.map +1 -0
- package/dist/_chunk/slider.js +255 -0
- package/dist/_chunk/slider.js.map +1 -0
- package/dist/_chunk/slider.jsx +255 -0
- package/dist/_chunk/slider.jsx.map +1 -0
- package/dist/_chunk/steplist.js +66 -0
- package/dist/_chunk/steplist.js.map +1 -0
- package/dist/_chunk/steplist.jsx +66 -0
- package/dist/_chunk/steplist.jsx.map +1 -0
- package/dist/_chunk/switch.js +34 -0
- package/dist/_chunk/switch.js.map +1 -0
- package/dist/_chunk/switch.jsx +34 -0
- package/dist/_chunk/switch.jsx.map +1 -0
- package/dist/_chunk/table.js +1051 -0
- package/dist/_chunk/table.js.map +1 -0
- package/dist/_chunk/table.jsx +1051 -0
- package/dist/_chunk/table.jsx.map +1 -0
- package/dist/_chunk/tabs.js +260 -0
- package/dist/_chunk/tabs.js.map +1 -0
- package/dist/_chunk/tabs.jsx +260 -0
- package/dist/_chunk/tabs.jsx.map +1 -0
- package/dist/_chunk/tag.js +286 -0
- package/dist/_chunk/tag.js.map +1 -0
- package/dist/_chunk/tag.jsx +286 -0
- package/dist/_chunk/tag.jsx.map +1 -0
- package/dist/_chunk/textfield.js +109 -0
- package/dist/_chunk/textfield.js.map +1 -0
- package/dist/_chunk/textfield.jsx +109 -0
- package/dist/_chunk/textfield.jsx.map +1 -0
- package/dist/_chunk/toast.js +250 -0
- package/dist/_chunk/toast.js.map +1 -0
- package/dist/_chunk/toast.jsx +250 -0
- package/dist/_chunk/toast.jsx.map +1 -0
- package/dist/_chunk/toolbar.js +258 -0
- package/dist/_chunk/toolbar.js.map +1 -0
- package/dist/_chunk/toolbar.jsx +258 -0
- package/dist/_chunk/toolbar.jsx.map +1 -0
- package/dist/_chunk/tooltip.js +185 -0
- package/dist/_chunk/tooltip.js.map +1 -0
- package/dist/_chunk/tooltip.jsx +185 -0
- package/dist/_chunk/tooltip.jsx.map +1 -0
- package/dist/_chunk/tree.js +424 -0
- package/dist/_chunk/tree.js.map +1 -0
- package/dist/_chunk/tree.jsx +424 -0
- package/dist/_chunk/tree.jsx.map +1 -0
- package/dist/_chunk/utils.js +665 -0
- package/dist/_chunk/utils.js.map +1 -0
- package/dist/_chunk/utils.jsx +665 -0
- package/dist/_chunk/utils.jsx.map +1 -0
- package/dist/_chunk/visually-hidden.js +92 -0
- package/dist/_chunk/visually-hidden.js.map +1 -0
- package/dist/_chunk/visually-hidden.jsx +92 -0
- package/dist/_chunk/visually-hidden.jsx.map +1 -0
- package/dist/actiongroup/createActionGroup.d.ts +5 -5
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.d.ts +1 -1
- package/dist/actiongroup/index.js +2 -0
- package/dist/actiongroup/index.jsx +2 -0
- package/dist/autocomplete/createAutocomplete.d.ts +12 -10
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/autocomplete/index.js +2 -0
- package/dist/autocomplete/index.jsx +2 -0
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/index.jsx +2 -0
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +7 -7
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/index.d.ts +6 -6
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/index.js +2 -0
- package/dist/button/index.jsx +2 -0
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +6 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createCalendarMonthPicker.d.ts +41 -0
- package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -0
- package/dist/calendar/createCalendarYearPicker.d.ts +49 -0
- package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -0
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +7 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +2 -0
- package/dist/calendar/index.jsx +2 -0
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +16 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +10 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox/index.jsx +2 -0
- package/dist/collections/index.d.ts +3 -3
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +160 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/index.jsx +160 -0
- package/dist/collections/index.jsx.map +1 -0
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/index.js +2 -0
- package/dist/color/index.jsx +2 -0
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +10 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/index.js +2 -0
- package/dist/combobox/index.jsx +2 -0
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +51 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +8 -6
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +10 -2
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +2 -2
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +7 -6
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/datepicker/index.js +2 -0
- package/dist/datepicker/index.jsx +2 -0
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +2 -0
- package/dist/dialog/index.jsx +2 -0
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/disclosure/index.js +2 -0
- package/dist/disclosure/index.jsx +2 -0
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +2 -2
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +26 -6
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +2 -0
- package/dist/dnd/index.jsx +2 -0
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +2 -2
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/focus/index.js +2 -0
- package/dist/focus/index.jsx +2 -0
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/form/index.js +3 -0
- package/dist/form/index.jsx +3 -0
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/index.js +2 -0
- package/dist/grid/index.jsx +2 -0
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +12 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSection.d.ts +15 -0
- package/dist/gridlist/createGridListSection.d.ts.map +1 -0
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +5 -4
- package/dist/gridlist/index.d.ts.map +1 -1
- package/dist/gridlist/index.js +2 -0
- package/dist/gridlist/index.jsx +2 -0
- package/dist/gridlist/types.d.ts +61 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/index.jsx +3 -0
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +56 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -17119
- package/dist/index.jsx +71 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +13 -2
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -4
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createKeyboard.d.ts.map +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +10 -0
- package/dist/interactions/index.jsx +10 -0
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/label/index.js +4 -0
- package/dist/label/index.jsx +4 -0
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/landmark/index.js +2 -0
- package/dist/landmark/index.jsx +2 -0
- package/dist/link/createLink.d.ts +14 -8
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/link/index.js +2 -0
- package/dist/link/index.jsx +2 -0
- package/dist/listbox/createListBox.d.ts +48 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +27 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/listbox/index.js +2 -0
- package/dist/listbox/index.jsx +2 -0
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/live-announcer/index.js +2 -0
- package/dist/live-announcer/index.jsx +2 -0
- package/dist/menu/createMenu.d.ts +14 -11
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +25 -5
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +2 -0
- package/dist/menu/index.jsx +2 -0
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/meter/index.js +2 -0
- package/dist/meter/index.jsx +2 -0
- package/dist/numberfield/createNumberField.d.ts +9 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/numberfield/index.js +2 -0
- package/dist/numberfield/index.jsx +2 -0
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +4 -0
- package/dist/overlays/index.jsx +4 -0
- package/dist/popover/calculatePosition.d.ts +6 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +11 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/popover/index.js +2 -0
- package/dist/popover/index.jsx +2 -0
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.jsx +2 -0
- package/dist/radio/createRadio.d.ts +9 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +10 -10
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/radio/index.js +2 -0
- package/dist/radio/index.jsx +2 -0
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/searchfield/index.js +2 -0
- package/dist/searchfield/index.jsx +2 -0
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +2 -0
- package/dist/select/index.jsx +2 -0
- package/dist/selection/DOMLayoutDelegate.d.ts +58 -0
- package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -0
- package/dist/selection/ListKeyboardDelegate.d.ts +95 -0
- package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -0
- package/dist/selection/constants.d.ts +15 -0
- package/dist/selection/constants.d.ts.map +1 -0
- package/dist/selection/createCollectionRowInteraction.d.ts +13 -0
- package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts +31 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -0
- package/dist/selection/createSelectableCollection.d.ts +69 -0
- package/dist/selection/createSelectableCollection.d.ts.map +1 -0
- package/dist/selection/createSelectableItem.d.ts +154 -0
- package/dist/selection/createSelectableItem.d.ts.map +1 -0
- package/dist/selection/createSelectableList.d.ts +43 -0
- package/dist/selection/createSelectableList.d.ts.map +1 -0
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/createTypeSelect.d.ts.map +1 -1
- package/dist/selection/index.d.ts +10 -1
- package/dist/selection/index.d.ts.map +1 -1
- package/dist/selection/index.js +4 -0
- package/dist/selection/index.jsx +4 -0
- package/dist/selection/selectItem.d.ts +29 -0
- package/dist/selection/selectItem.d.ts.map +1 -0
- package/dist/selection/utils.d.ts +40 -0
- package/dist/selection/utils.d.ts.map +1 -0
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/separator/index.js +2 -0
- package/dist/separator/index.jsx +2 -0
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/slider/index.js +2 -0
- package/dist/slider/index.jsx +2 -0
- package/dist/ssr/index.d.ts +18 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +299 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/index.jsx +292 -0
- package/dist/ssr/index.jsx.map +1 -0
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/steplist/index.js +2 -0
- package/dist/steplist/index.jsx +2 -0
- package/dist/switch/createSwitch.d.ts +10 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.jsx +2 -0
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +4 -4
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +2 -0
- package/dist/table/index.jsx +2 -0
- package/dist/table/types.d.ts +41 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +32 -28
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.jsx +2 -0
- package/dist/tag/createTag.d.ts +4 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/tag/index.js +2 -0
- package/dist/tag/index.jsx +2 -0
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/textfield/index.js +2 -0
- package/dist/textfield/index.jsx +2 -0
- package/dist/toast/createToast.d.ts +2 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +2 -0
- package/dist/toast/index.jsx +2 -0
- package/dist/toggle/createToggle.d.ts +13 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +3 -0
- package/dist/toggle/index.jsx +3 -0
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/toolbar/index.js +2 -0
- package/dist/toolbar/index.jsx +2 -0
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tooltip/index.js +2 -0
- package/dist/tooltip/index.jsx +2 -0
- package/dist/tree/createTree.d.ts +8 -4
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/index.js +2 -0
- package/dist/tree/index.jsx +2 -0
- package/dist/tree/types.d.ts +20 -6
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/animation.d.ts +60 -0
- package/dist/utils/animation.d.ts.map +1 -0
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +48 -2
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +15 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.jsx +5 -0
- package/dist/utils/keyboard.d.ts +17 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/utils/scrollIntoView.d.ts +30 -0
- package/dist/utils/scrollIntoView.d.ts.map +1 -0
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/dist/visually-hidden/index.js +2 -0
- package/dist/visually-hidden/index.jsx +2 -0
- package/package.json +334 -33
- package/src/actiongroup/createActionGroup.ts +101 -91
- package/src/actiongroup/index.ts +1 -1
- package/src/autocomplete/createAutocomplete.ts +177 -148
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +25 -32
- package/src/button/index.ts +6 -9
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +64 -29
- package/src/calendar/createCalendarCell.ts +115 -46
- package/src/calendar/createCalendarGrid.ts +97 -41
- package/src/calendar/createCalendarMonthPicker.ts +105 -0
- package/src/calendar/createCalendarYearPicker.ts +144 -0
- package/src/calendar/createRangeCalendar.ts +68 -31
- package/src/calendar/createRangeCalendarCell.ts +92 -31
- package/src/calendar/index.ts +21 -8
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +231 -0
- package/src/checkbox/createCheckbox.ts +23 -21
- package/src/checkbox/createCheckboxGroup.ts +68 -44
- package/src/checkbox/createCheckboxGroupItem.ts +26 -41
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +33 -29
- package/src/color/createColorArea.ts +232 -154
- package/src/color/createColorField.ts +107 -58
- package/src/color/createColorSlider.ts +231 -73
- package/src/color/createColorSwatch.ts +38 -13
- package/src/color/createColorWheel.ts +208 -83
- package/src/color/index.ts +6 -6
- package/src/color/types.ts +98 -16
- package/src/combobox/createComboBox.ts +157 -100
- package/src/combobox/index.ts +1 -1
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +260 -67
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +105 -57
- package/src/datepicker/createDateSegment.ts +188 -96
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +67 -85
- package/src/datepicker/index.ts +13 -14
- package/src/dialog/createDialog.ts +45 -38
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +4 -4
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -21
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +19 -25
- package/src/dnd/createDraggableCollection.ts +4 -4
- package/src/dnd/createDraggableItem.ts +20 -19
- package/src/dnd/createDrop.ts +42 -51
- package/src/dnd/createDroppableCollection.ts +293 -173
- package/src/dnd/createDroppableItem.ts +34 -34
- package/src/dnd/index.ts +23 -12
- package/src/dnd/types.ts +4 -7
- package/src/dnd/utils.ts +58 -47
- package/src/focus/FocusScope.tsx +301 -176
- package/src/focus/createAutoFocus.ts +4 -20
- package/src/focus/createFocusRestore.ts +15 -28
- package/src/focus/createVirtualFocus.ts +20 -36
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +23 -39
- package/src/form/index.ts +2 -5
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +36 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +172 -64
- package/src/gridlist/createGridListItem.ts +98 -121
- package/src/gridlist/createGridListSection.ts +54 -0
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +7 -4
- package/src/gridlist/types.ts +58 -7
- package/src/i18n/createCollator.ts +5 -18
- package/src/i18n/createDateFormatter.ts +5 -13
- package/src/i18n/createFilter.ts +11 -24
- package/src/i18n/createNumberFormatter.ts +4 -6
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +8 -11
- package/src/i18n/locale.tsx +15 -40
- package/src/i18n/utils.ts +35 -39
- package/src/index.ts +111 -172
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +18 -4
- package/src/interactions/createFocus.ts +12 -8
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +20 -13
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +96 -94
- package/src/interactions/createKeyboard.ts +12 -2
- package/src/interactions/createLongPress.ts +23 -23
- package/src/interactions/createMove.ts +72 -62
- package/src/interactions/createPress.ts +192 -92
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +30 -51
- package/src/landmark/index.ts +1 -1
- package/src/link/createLink.ts +83 -56
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +198 -66
- package/src/listbox/createOption.ts +112 -71
- package/src/listbox/index.ts +2 -6
- package/src/live-announcer/announce.ts +44 -71
- package/src/live-announcer/index.ts +1 -1
- package/src/menu/createMenu.ts +171 -65
- package/src/menu/createMenuItem.ts +315 -51
- package/src/menu/createMenuTrigger.ts +15 -15
- package/src/menu/index.ts +3 -12
- package/src/meter/createMeter.ts +7 -15
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +205 -80
- package/src/numberfield/index.ts +1 -1
- package/src/overlays/ariaHideOutside.ts +14 -10
- package/src/overlays/createInteractOutside.ts +21 -18
- package/src/overlays/createModal.tsx +17 -17
- package/src/overlays/createOverlay.ts +38 -8
- package/src/overlays/createOverlayTrigger.ts +16 -16
- package/src/overlays/createPreventScroll.ts +46 -24
- package/src/overlays/index.ts +6 -17
- package/src/popover/calculatePosition.ts +134 -124
- package/src/popover/createOverlayPosition.ts +55 -40
- package/src/popover/createPopover.ts +42 -17
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +31 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +114 -75
- package/src/radio/createRadioGroup.ts +83 -77
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +57 -29
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +57 -44
- package/src/select/createSelect.ts +146 -73
- package/src/select/index.ts +2 -7
- package/src/selection/DOMLayoutDelegate.ts +102 -0
- package/src/selection/ListKeyboardDelegate.ts +398 -0
- package/src/selection/constants.ts +16 -0
- package/src/selection/createCollectionRowInteraction.ts +209 -0
- package/src/selection/createScrollIntoViewOnFocus.ts +65 -0
- package/src/selection/createSelectableCollection.ts +645 -0
- package/src/selection/createSelectableItem.ts +498 -0
- package/src/selection/createSelectableList.ts +93 -0
- package/src/selection/createTypeSelect.ts +120 -59
- package/src/selection/index.ts +32 -1
- package/src/selection/selectItem.ts +80 -0
- package/src/selection/utils.ts +82 -0
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +128 -112
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +38 -46
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +19 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +192 -95
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +206 -91
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +14 -14
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +43 -7
- package/src/tabs/createTabs.ts +123 -111
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +57 -50
- package/src/tag/createTagGroup.ts +47 -41
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +29 -26
- package/src/toast/createToastRegion.ts +169 -26
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +115 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +214 -230
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +11 -24
- package/src/tooltip/createTooltipTrigger.ts +61 -49
- package/src/tooltip/index.ts +2 -2
- package/src/tree/createTree.ts +128 -72
- package/src/tree/createTreeItem.ts +120 -135
- package/src/tree/createTreeSelectionCheckbox.ts +11 -8
- package/src/tree/index.ts +4 -4
- package/src/tree/types.ts +20 -6
- package/src/utils/animation.ts +151 -0
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +265 -68
- package/src/utils/env.ts +9 -11
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +20 -22
- package/src/utils/keyboard.ts +25 -0
- package/src/utils/mergeProps.ts +49 -15
- package/src/utils/platform.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/scrollIntoView.ts +181 -0
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +16 -28
- package/src/visually-hidden/index.ts +1 -1
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.ssr.js +0 -17082
- package/dist/index.ssr.js.map +0 -1
- package/src/i18n/NumberFormatter.ts +0 -266
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
//#region src/utils/dom.ts
|
|
2
|
+
/**
|
|
3
|
+
* DOM utilities for cross-browser compatibility.
|
|
4
|
+
* Based on @react-aria/utils DOM utilities.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Gets the owner document of an element, or the global document.
|
|
8
|
+
*/
|
|
9
|
+
function getOwnerDocument(el) {
|
|
10
|
+
return el?.ownerDocument ?? document;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Gets the owner window of an element, or the global window.
|
|
14
|
+
*/
|
|
15
|
+
function getOwnerWindow(el) {
|
|
16
|
+
return getOwnerDocument(el).defaultView ?? window;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Cross-browser implementation of Node.contains that works with ShadowDOM.
|
|
20
|
+
* In Safari, Node.contains doesn't properly detect elements inside shadow roots.
|
|
21
|
+
*/
|
|
22
|
+
function nodeContains(parent, child) {
|
|
23
|
+
if (!parent || !child) return false;
|
|
24
|
+
if (parent.contains(child)) return true;
|
|
25
|
+
let node = child;
|
|
26
|
+
while (node) {
|
|
27
|
+
if (node === parent) return true;
|
|
28
|
+
if (node.host) node = node.host;
|
|
29
|
+
else node = node.parentNode;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Gets the event target, handling composed path for shadow DOM.
|
|
35
|
+
*/
|
|
36
|
+
function getEventTarget(event) {
|
|
37
|
+
if (typeof event.composedPath === "function") {
|
|
38
|
+
const path = event.composedPath();
|
|
39
|
+
if (path.length > 0) return path[0];
|
|
40
|
+
}
|
|
41
|
+
return event.target;
|
|
42
|
+
}
|
|
43
|
+
const supportsCheckVisibility = typeof Element !== "undefined" && "checkVisibility" in Element.prototype;
|
|
44
|
+
function isHTMLOrSVGElement(element) {
|
|
45
|
+
const windowObject = getOwnerWindow(element);
|
|
46
|
+
return element instanceof windowObject.HTMLElement || element instanceof windowObject.SVGElement || typeof HTMLElement !== "undefined" && element instanceof HTMLElement || typeof SVGElement !== "undefined" && element instanceof SVGElement;
|
|
47
|
+
}
|
|
48
|
+
function isStyleVisible(element) {
|
|
49
|
+
if (!isHTMLOrSVGElement(element)) return false;
|
|
50
|
+
const { display, visibility } = element.style;
|
|
51
|
+
let isVisible = display !== "none" && visibility !== "hidden" && visibility !== "collapse";
|
|
52
|
+
if (isVisible) {
|
|
53
|
+
const { getComputedStyle } = getOwnerWindow(element);
|
|
54
|
+
const { display: computedDisplay, visibility: computedVisibility } = getComputedStyle(element);
|
|
55
|
+
isVisible = computedDisplay !== "none" && computedVisibility !== "hidden" && computedVisibility !== "collapse";
|
|
56
|
+
}
|
|
57
|
+
return isVisible;
|
|
58
|
+
}
|
|
59
|
+
function isAttributeVisible(element, childElement) {
|
|
60
|
+
return !element.hasAttribute("hidden") && !element.hasAttribute("data-react-aria-prevent-focus") && (element.nodeName === "DETAILS" && childElement && childElement.nodeName !== "SUMMARY" ? element.hasAttribute("open") : true);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Whether an element is visible, and so eligible for focus. Adapted from
|
|
64
|
+
* @react-aria/utils, which adapts testing-library/jest-dom and
|
|
65
|
+
* vue-test-utils-next (MIT): uses `checkVisibility` when supported, otherwise
|
|
66
|
+
* walks computed style and visibility-affecting attributes up the ancestor chain.
|
|
67
|
+
*/
|
|
68
|
+
function isElementVisible(element, childElement) {
|
|
69
|
+
if (supportsCheckVisibility) return element.checkVisibility({ visibilityProperty: true }) && !element.closest("[data-react-aria-prevent-focus]");
|
|
70
|
+
return element.nodeName !== "#comment" && isStyleVisible(element) && isAttributeVisible(element, childElement) && (!element.parentElement || isElementVisible(element.parentElement, element));
|
|
71
|
+
}
|
|
72
|
+
const focusableElements = [
|
|
73
|
+
"input:not([disabled]):not([type=hidden])",
|
|
74
|
+
"select:not([disabled])",
|
|
75
|
+
"textarea:not([disabled])",
|
|
76
|
+
"button:not([disabled])",
|
|
77
|
+
"a[href]",
|
|
78
|
+
"area[href]",
|
|
79
|
+
"summary",
|
|
80
|
+
"iframe",
|
|
81
|
+
"object",
|
|
82
|
+
"embed",
|
|
83
|
+
"audio[controls]",
|
|
84
|
+
"video[controls]",
|
|
85
|
+
"[contenteditable]:not([contenteditable^=\"false\"])",
|
|
86
|
+
"permission"
|
|
87
|
+
];
|
|
88
|
+
const FOCUSABLE_ELEMENT_SELECTOR = focusableElements.join(":not([hidden]),") + ",[tabindex]:not([disabled]):not([hidden])";
|
|
89
|
+
focusableElements.push("[tabindex]:not([tabindex=\"-1\"]):not([disabled])");
|
|
90
|
+
const TABBABLE_ELEMENT_SELECTOR = focusableElements.join(":not([hidden]):not([tabindex=\"-1\"]),");
|
|
91
|
+
/**
|
|
92
|
+
* Checks if an element is a valid focusable element: it matches the focusable
|
|
93
|
+
* selector, is not inside an `inert` subtree, and is visible. A negative tabindex
|
|
94
|
+
* is programmatically focusable (matched here) but not tabbable. `skipVisibilityCheck`
|
|
95
|
+
* lets callers (e.g. the press-path `preventFocus` ancestor walk) skip the
|
|
96
|
+
* `isElementVisible` step, which also avoids touching layout on detached documents.
|
|
97
|
+
*/
|
|
98
|
+
function isFocusable(element, options) {
|
|
99
|
+
return element.matches(FOCUSABLE_ELEMENT_SELECTOR) && !isInert(element) && (options?.skipVisibilityCheck || isElementVisible(element));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Checks if an element is tabbable (reachable via the Tab key): focusable,
|
|
103
|
+
* visible, not inert, and not `tabindex="-1"`.
|
|
104
|
+
*/
|
|
105
|
+
function isTabbable(element) {
|
|
106
|
+
return element.matches(TABBABLE_ELEMENT_SELECTOR) && isElementVisible(element) && !isInert(element);
|
|
107
|
+
}
|
|
108
|
+
function isInert(element) {
|
|
109
|
+
let node = element;
|
|
110
|
+
while (node != null) {
|
|
111
|
+
if ((node instanceof getOwnerWindow(node).HTMLElement || typeof HTMLElement !== "undefined" && node instanceof HTMLElement) && node.inert) return true;
|
|
112
|
+
node = node.parentElement;
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Checks if a keyboard event should trigger the default action (like clicking).
|
|
118
|
+
*/
|
|
119
|
+
function isValidKeyboardEvent(event, currentTarget) {
|
|
120
|
+
const { key, code } = event;
|
|
121
|
+
const element = currentTarget;
|
|
122
|
+
const tagName = element.tagName.toLowerCase();
|
|
123
|
+
const role = element.getAttribute("role");
|
|
124
|
+
if (!(key === "Enter" || key === " " || key === "Spacebar" || code === "Space")) return false;
|
|
125
|
+
if (tagName === "textarea") return false;
|
|
126
|
+
if (element.isContentEditable) return false;
|
|
127
|
+
if ((role === "link" || !role && isHTMLAnchorLink(element)) && key !== "Enter") return false;
|
|
128
|
+
if (tagName === "input") return isValidInputKey(element, key);
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Checks if a key is valid for a specific input type.
|
|
133
|
+
*/
|
|
134
|
+
function isValidInputKey(target, key) {
|
|
135
|
+
const type = target.type.toLowerCase();
|
|
136
|
+
if (type === "checkbox" || type === "radio") return key === " " || key === "Spacebar";
|
|
137
|
+
if ([
|
|
138
|
+
"text",
|
|
139
|
+
"search",
|
|
140
|
+
"url",
|
|
141
|
+
"tel",
|
|
142
|
+
"email",
|
|
143
|
+
"password",
|
|
144
|
+
"date",
|
|
145
|
+
"month",
|
|
146
|
+
"week",
|
|
147
|
+
"time",
|
|
148
|
+
"datetime-local",
|
|
149
|
+
"number"
|
|
150
|
+
].includes(type)) return false;
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Checks if an element is an HTML anchor link (has href attribute).
|
|
155
|
+
*/
|
|
156
|
+
function isHTMLAnchorLink(target) {
|
|
157
|
+
return target.tagName === "A" && target.hasAttribute("href");
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Whether to prevent default on keyboard events for this element.
|
|
161
|
+
*/
|
|
162
|
+
function shouldPreventDefaultKeyboard(target, key) {
|
|
163
|
+
if (target instanceof HTMLInputElement) return !isValidInputKey(target, key);
|
|
164
|
+
return shouldPreventDefaultUp(target);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Whether to prevent default on pointer up for this element.
|
|
168
|
+
*/
|
|
169
|
+
function shouldPreventDefaultUp(target) {
|
|
170
|
+
const tagName = target.tagName.toLowerCase();
|
|
171
|
+
if (tagName === "input" || tagName === "textarea" || tagName === "select") return false;
|
|
172
|
+
if (tagName === "a" || target.getAttribute("role") === "link") return false;
|
|
173
|
+
if (tagName === "button") {
|
|
174
|
+
const type = target.type;
|
|
175
|
+
if (type === "submit" || type === "reset") return false;
|
|
176
|
+
}
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Opens a link, supporting both same-window and new-window navigation.
|
|
181
|
+
* Used for keyboard activation of links with Space key (which doesn't natively open links).
|
|
182
|
+
*/
|
|
183
|
+
function openLink(target, event, allowOpener = false) {
|
|
184
|
+
const { href, target: linkTarget, rel } = target;
|
|
185
|
+
openLink.isOpening = true;
|
|
186
|
+
const keyEvent = event;
|
|
187
|
+
if (linkTarget === "_blank" || keyEvent?.metaKey || keyEvent?.ctrlKey || keyEvent?.shiftKey || keyEvent?.altKey) {
|
|
188
|
+
const features = !allowOpener && rel?.includes("noopener") ? "noopener" : void 0;
|
|
189
|
+
window.open(href, linkTarget || "_blank", features);
|
|
190
|
+
} else window.location.href = href;
|
|
191
|
+
openLink.isOpening = false;
|
|
192
|
+
}
|
|
193
|
+
openLink.isOpening = false;
|
|
194
|
+
/**
|
|
195
|
+
* Checks if an element is scrollable based on its overflow style.
|
|
196
|
+
* @param node - The element to check
|
|
197
|
+
* @param checkForOverflow - If true, also check if the element actually overflows
|
|
198
|
+
*/
|
|
199
|
+
function isScrollable(node, checkForOverflow) {
|
|
200
|
+
if (!node) return false;
|
|
201
|
+
const style = window.getComputedStyle(node);
|
|
202
|
+
const scrollable = /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);
|
|
203
|
+
if (scrollable && checkForOverflow) return node.scrollHeight !== node.clientHeight || node.scrollWidth !== node.clientWidth;
|
|
204
|
+
return scrollable;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Gets the nearest scrollable parent element.
|
|
208
|
+
* @param node - The starting element
|
|
209
|
+
* @param checkForOverflow - If true, only return parents that actually overflow
|
|
210
|
+
*/
|
|
211
|
+
function getScrollParent(node, checkForOverflow) {
|
|
212
|
+
let scrollableNode = node;
|
|
213
|
+
if (isScrollable(scrollableNode, checkForOverflow)) scrollableNode = scrollableNode.parentElement;
|
|
214
|
+
while (scrollableNode && !isScrollable(scrollableNode, checkForOverflow)) scrollableNode = scrollableNode.parentElement;
|
|
215
|
+
return scrollableNode || document.scrollingElement || document.documentElement;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Gets every scrollable ancestor of an element, from the nearest up to (and
|
|
219
|
+
* including) the document scrolling element.
|
|
220
|
+
* @param node - The starting element
|
|
221
|
+
* @param checkForOverflow - If true, only include parents that actually overflow
|
|
222
|
+
*/
|
|
223
|
+
function getScrollParents(node, checkForOverflow) {
|
|
224
|
+
const parentElements = [];
|
|
225
|
+
const root = document.scrollingElement || document.documentElement;
|
|
226
|
+
let current = node;
|
|
227
|
+
while (current) {
|
|
228
|
+
if (isScrollable(current, checkForOverflow)) parentElements.push(current);
|
|
229
|
+
if (current === root) break;
|
|
230
|
+
current = current.parentElement;
|
|
231
|
+
}
|
|
232
|
+
return parentElements;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Checks if an element will open a virtual keyboard when focused.
|
|
236
|
+
* Used for iOS Safari scroll handling.
|
|
237
|
+
*/
|
|
238
|
+
function willOpenKeyboard(target) {
|
|
239
|
+
if (!target) return false;
|
|
240
|
+
const tagName = target.tagName.toLowerCase();
|
|
241
|
+
if (tagName === "input") {
|
|
242
|
+
const type = target.type.toLowerCase();
|
|
243
|
+
return [
|
|
244
|
+
"text",
|
|
245
|
+
"search",
|
|
246
|
+
"url",
|
|
247
|
+
"tel",
|
|
248
|
+
"email",
|
|
249
|
+
"password",
|
|
250
|
+
"date",
|
|
251
|
+
"month",
|
|
252
|
+
"week",
|
|
253
|
+
"time",
|
|
254
|
+
"datetime-local",
|
|
255
|
+
"number"
|
|
256
|
+
].includes(type);
|
|
257
|
+
}
|
|
258
|
+
if (tagName === "textarea") return true;
|
|
259
|
+
if (target.hasAttribute("contenteditable") && target.getAttribute("contenteditable") !== "false") return true;
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Returns the deepest active element, descending through open shadow roots.
|
|
264
|
+
* Mirrors @react-aria/utils' `getActiveElement`.
|
|
265
|
+
*/
|
|
266
|
+
function getActiveElement(doc = document) {
|
|
267
|
+
let activeElement = doc.activeElement;
|
|
268
|
+
while (activeElement?.shadowRoot?.activeElement) activeElement = activeElement.shadowRoot.activeElement;
|
|
269
|
+
return activeElement;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Whether the (deepest) active element is `element` or is contained within it.
|
|
273
|
+
* Mirrors @react-aria/utils' `isFocusWithin`.
|
|
274
|
+
*/
|
|
275
|
+
function isFocusWithin(element) {
|
|
276
|
+
const activeElement = getActiveElement(getOwnerDocument(element));
|
|
277
|
+
return !!activeElement && nodeContains(element, activeElement);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Creates a `TreeWalker` that visits the focusable (or, when `tabbable`, the
|
|
281
|
+
* tabbable) descendants of `root`, skipping invisible and inert elements.
|
|
282
|
+
* Mirrors @react-aria/focus's `getFocusableTreeWalker`, minus the focus-scope
|
|
283
|
+
* containment filter (we don't model nested scopes here). Used to treat a
|
|
284
|
+
* selectable collection as a single tab stop.
|
|
285
|
+
*/
|
|
286
|
+
function getFocusableTreeWalker(root, opts) {
|
|
287
|
+
const accept = (node) => opts?.tabbable ? isTabbable(node) : isFocusable(node);
|
|
288
|
+
const walker = getOwnerDocument(root).createTreeWalker(root, NodeFilter.SHOW_ELEMENT, { acceptNode(node) {
|
|
289
|
+
if (opts?.from?.contains(node)) return NodeFilter.FILTER_REJECT;
|
|
290
|
+
if (accept(node)) return NodeFilter.FILTER_ACCEPT;
|
|
291
|
+
return NodeFilter.FILTER_SKIP;
|
|
292
|
+
} });
|
|
293
|
+
if (opts?.from) walker.currentNode = opts.from;
|
|
294
|
+
return walker;
|
|
295
|
+
}
|
|
296
|
+
//#endregion
|
|
297
|
+
//#region src/utils/focus.ts
|
|
298
|
+
/**
|
|
299
|
+
* Focus management utilities.
|
|
300
|
+
* Based on @react-aria/utils focus utilities.
|
|
301
|
+
*/
|
|
302
|
+
/**
|
|
303
|
+
* Focuses an element without scrolling the page.
|
|
304
|
+
* Uses preventScroll option with fallback for older browsers.
|
|
305
|
+
*/
|
|
306
|
+
function focusWithoutScrolling(element) {
|
|
307
|
+
if (!element) return;
|
|
308
|
+
try {
|
|
309
|
+
element.focus({ preventScroll: true });
|
|
310
|
+
} catch {
|
|
311
|
+
const scrollPositions = getScrollableAncestors(element).map((el) => ({
|
|
312
|
+
element: el,
|
|
313
|
+
scrollTop: el.scrollTop,
|
|
314
|
+
scrollLeft: el.scrollLeft
|
|
315
|
+
}));
|
|
316
|
+
element.focus();
|
|
317
|
+
for (const { element: el, scrollTop, scrollLeft } of scrollPositions) {
|
|
318
|
+
el.scrollTop = scrollTop;
|
|
319
|
+
el.scrollLeft = scrollLeft;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Gets all scrollable ancestors of an element.
|
|
325
|
+
*/
|
|
326
|
+
function getScrollableAncestors(element) {
|
|
327
|
+
const ancestors = [];
|
|
328
|
+
let parent = element.parentElement;
|
|
329
|
+
while (parent) {
|
|
330
|
+
const style = getComputedStyle(parent);
|
|
331
|
+
const overflowY = style.overflowY;
|
|
332
|
+
const overflowX = style.overflowX;
|
|
333
|
+
if (overflowY === "auto" || overflowY === "scroll" || overflowX === "auto" || overflowX === "scroll") ancestors.push(parent);
|
|
334
|
+
parent = parent.parentElement;
|
|
335
|
+
}
|
|
336
|
+
const doc = getOwnerDocument(element);
|
|
337
|
+
ancestors.push(doc.documentElement);
|
|
338
|
+
return ancestors;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Prevents focus from moving to a new element temporarily.
|
|
342
|
+
* Used when clicking on a button that shouldn't steal focus.
|
|
343
|
+
*/
|
|
344
|
+
function preventFocus(target) {
|
|
345
|
+
while (target && !isFocusable(target)) target = target.parentElement;
|
|
346
|
+
const ownerWindow = getOwnerWindow(target);
|
|
347
|
+
const activeElement = ownerWindow.document.activeElement;
|
|
348
|
+
if (!activeElement || activeElement === target) return;
|
|
349
|
+
let isRefocusing = false;
|
|
350
|
+
const onBlur = (event) => {
|
|
351
|
+
if (getEventTarget(event) === activeElement || isRefocusing) event.stopImmediatePropagation();
|
|
352
|
+
};
|
|
353
|
+
const onFocusOut = (event) => {
|
|
354
|
+
if (getEventTarget(event) === activeElement || isRefocusing) {
|
|
355
|
+
event.stopImmediatePropagation();
|
|
356
|
+
if (!target && !isRefocusing) {
|
|
357
|
+
isRefocusing = true;
|
|
358
|
+
focusWithoutScrolling(activeElement);
|
|
359
|
+
cleanup();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
const onFocus = (event) => {
|
|
364
|
+
if (getEventTarget(event) === target || isRefocusing) event.stopImmediatePropagation();
|
|
365
|
+
};
|
|
366
|
+
const onFocusIn = (event) => {
|
|
367
|
+
if (getEventTarget(event) === target || isRefocusing) {
|
|
368
|
+
event.stopImmediatePropagation();
|
|
369
|
+
if (!isRefocusing) {
|
|
370
|
+
isRefocusing = true;
|
|
371
|
+
focusWithoutScrolling(activeElement);
|
|
372
|
+
cleanup();
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
ownerWindow.addEventListener("blur", onBlur, true);
|
|
377
|
+
ownerWindow.addEventListener("focusout", onFocusOut, true);
|
|
378
|
+
ownerWindow.addEventListener("focusin", onFocusIn, true);
|
|
379
|
+
ownerWindow.addEventListener("focus", onFocus, true);
|
|
380
|
+
const raf = ownerWindow.requestAnimationFrame(cleanup);
|
|
381
|
+
function cleanup() {
|
|
382
|
+
ownerWindow.cancelAnimationFrame(raf);
|
|
383
|
+
ownerWindow.removeEventListener("blur", onBlur, true);
|
|
384
|
+
ownerWindow.removeEventListener("focusout", onFocusOut, true);
|
|
385
|
+
ownerWindow.removeEventListener("focusin", onFocusIn, true);
|
|
386
|
+
ownerWindow.removeEventListener("focus", onFocus, true);
|
|
387
|
+
isRefocusing = false;
|
|
388
|
+
}
|
|
389
|
+
return cleanup;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Safely focuses an element, alias for focusWithoutScrolling.
|
|
393
|
+
* This matches the react-aria focusSafely function name.
|
|
394
|
+
*/
|
|
395
|
+
const focusSafely = focusWithoutScrolling;
|
|
396
|
+
//#endregion
|
|
397
|
+
export { willOpenKeyboard as C, shouldPreventDefaultUp as S, isValidInputKey as _, getEventTarget as a, openLink as b, getOwnerWindow as c, isElementVisible as d, isFocusWithin as f, isTabbable as g, isScrollable as h, getActiveElement as i, getScrollParent as l, isHTMLAnchorLink as m, focusWithoutScrolling as n, getFocusableTreeWalker as o, isFocusable as p, preventFocus as r, getOwnerDocument as s, focusSafely as t, getScrollParents as u, isValidKeyboardEvent as v, shouldPreventDefaultKeyboard as x, nodeContains as y };
|
|
398
|
+
|
|
399
|
+
//# sourceMappingURL=focus.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus.jsx","names":[],"sources":["../../src/utils/dom.ts","../../src/utils/focus.ts"],"sourcesContent":["/**\n * DOM utilities for cross-browser compatibility.\n * Based on @react-aria/utils DOM utilities.\n */\n\n/**\n * Gets the owner document of an element, or the global document.\n */\nexport function getOwnerDocument(el: Element | null | undefined): Document {\n return el?.ownerDocument ?? document;\n}\n\n/**\n * Gets the owner window of an element, or the global window.\n */\nexport function getOwnerWindow(el: Element | null | undefined): Window & typeof globalThis {\n return getOwnerDocument(el).defaultView ?? window;\n}\n\n/**\n * Cross-browser implementation of Node.contains that works with ShadowDOM.\n * In Safari, Node.contains doesn't properly detect elements inside shadow roots.\n */\nexport function nodeContains(parent: Node | null, child: Node | null): boolean {\n if (!parent || !child) {\n return false;\n }\n\n // Standard contains check\n if (parent.contains(child)) {\n return true;\n }\n\n // Check if child is in a shadow root\n let node: Node | null = child;\n while (node) {\n if (node === parent) {\n return true;\n }\n\n // Check shadow root host\n if ((node as ShadowRoot).host) {\n node = (node as ShadowRoot).host;\n } else {\n node = node.parentNode;\n }\n }\n\n return false;\n}\n\n/**\n * Gets the event target, handling composed path for shadow DOM.\n */\nexport function getEventTarget<T extends EventTarget>(event: Event): T | null {\n // Use composedPath to get the real target when using Shadow DOM\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n if (path.length > 0) {\n return path[0] as T;\n }\n }\n return event.target as T | null;\n}\n\n// Ports @react-aria/utils `isElementVisible`/`isFocusable`/`isTabbable` (v3.34.1,\n// the version paired with our pinned RAC 1.19.0) so focusability matches upstream:\n// a candidate must match the focusable selector AND not be inside an `inert`\n// subtree AND be visible (unless `skipVisibilityCheck`). The previous `isFocusable`\n// was a simplified tagName/tabindex check with no visibility or `inert` filtering.\n// Owner-window lookups go through `getOwnerWindow`, which falls back to the global\n// window, so these stay robust on detached documents (`defaultView === null`).\n\nconst supportsCheckVisibility =\n typeof Element !== \"undefined\" && \"checkVisibility\" in Element.prototype;\n\n// Solid clones templates with the document that is global at creation time, so a\n// node portaled into another document (e.g. an iframe) keeps its original realm's\n// prototype even though `getOwnerWindow` now resolves to the other document's\n// window. Upstream React creates portal nodes with the container's `ownerDocument`,\n// so its single `instanceof getOwnerWindow(element)` check suffices; we also accept\n// the global realm's constructors so cross-document focus scopes still recognize\n// real elements. In the common same-realm case this is identical to upstream.\nfunction isHTMLOrSVGElement(element: Element): element is HTMLElement | SVGElement {\n const windowObject = getOwnerWindow(element);\n return (\n element instanceof windowObject.HTMLElement ||\n element instanceof windowObject.SVGElement ||\n (typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement) ||\n (typeof SVGElement !== \"undefined\" && element instanceof SVGElement)\n );\n}\n\nfunction isStyleVisible(element: Element): boolean {\n if (!isHTMLOrSVGElement(element)) {\n return false;\n }\n\n const { display, visibility } = element.style;\n\n let isVisible = display !== \"none\" && visibility !== \"hidden\" && visibility !== \"collapse\";\n\n if (isVisible) {\n const { getComputedStyle } = getOwnerWindow(element);\n const { display: computedDisplay, visibility: computedVisibility } = getComputedStyle(element);\n\n isVisible =\n computedDisplay !== \"none\" &&\n computedVisibility !== \"hidden\" &&\n computedVisibility !== \"collapse\";\n }\n\n return isVisible;\n}\n\nfunction isAttributeVisible(element: Element, childElement?: Element): boolean {\n return (\n !element.hasAttribute(\"hidden\") &&\n // Ignore HiddenSelect when tree walking.\n !element.hasAttribute(\"data-react-aria-prevent-focus\") &&\n (element.nodeName === \"DETAILS\" && childElement && childElement.nodeName !== \"SUMMARY\"\n ? element.hasAttribute(\"open\")\n : true)\n );\n}\n\n/**\n * Whether an element is visible, and so eligible for focus. Adapted from\n * @react-aria/utils, which adapts testing-library/jest-dom and\n * vue-test-utils-next (MIT): uses `checkVisibility` when supported, otherwise\n * walks computed style and visibility-affecting attributes up the ancestor chain.\n */\nexport function isElementVisible(element: Element, childElement?: Element): boolean {\n if (supportsCheckVisibility) {\n return (\n element.checkVisibility({ visibilityProperty: true }) &&\n !element.closest(\"[data-react-aria-prevent-focus]\")\n );\n }\n\n return (\n element.nodeName !== \"#comment\" &&\n isStyleVisible(element) &&\n isAttributeVisible(element, childElement) &&\n (!element.parentElement || isElementVisible(element.parentElement, element))\n );\n}\n\nconst focusableElements = [\n \"input:not([disabled]):not([type=hidden])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"button:not([disabled])\",\n \"a[href]\",\n \"area[href]\",\n \"summary\",\n \"iframe\",\n \"object\",\n \"embed\",\n \"audio[controls]\",\n \"video[controls]\",\n '[contenteditable]:not([contenteditable^=\"false\"])',\n \"permission\",\n];\n\nconst FOCUSABLE_ELEMENT_SELECTOR =\n focusableElements.join(\":not([hidden]),\") + \",[tabindex]:not([disabled]):not([hidden])\";\n\nfocusableElements.push('[tabindex]:not([tabindex=\"-1\"]):not([disabled])');\nconst TABBABLE_ELEMENT_SELECTOR = focusableElements.join(':not([hidden]):not([tabindex=\"-1\"]),');\n\n/**\n * Checks if an element is a valid focusable element: it matches the focusable\n * selector, is not inside an `inert` subtree, and is visible. A negative tabindex\n * is programmatically focusable (matched here) but not tabbable. `skipVisibilityCheck`\n * lets callers (e.g. the press-path `preventFocus` ancestor walk) skip the\n * `isElementVisible` step, which also avoids touching layout on detached documents.\n */\nexport function isFocusable(\n element: Element,\n options?: { skipVisibilityCheck?: boolean },\n): boolean {\n return (\n element.matches(FOCUSABLE_ELEMENT_SELECTOR) &&\n !isInert(element) &&\n (options?.skipVisibilityCheck || isElementVisible(element))\n );\n}\n\n/**\n * Checks if an element is tabbable (reachable via the Tab key): focusable,\n * visible, not inert, and not `tabindex=\"-1\"`.\n */\nexport function isTabbable(element: Element): boolean {\n return (\n element.matches(TABBABLE_ELEMENT_SELECTOR) && isElementVisible(element) && !isInert(element)\n );\n}\n\nfunction isInert(element: Element): boolean {\n let node: Element | null = element;\n while (node != null) {\n // Realm-tolerant HTMLElement check (see isHTMLOrSVGElement): Solid-portaled\n // nodes keep their creating realm's prototype, so also accept the global one.\n const isHTMLElement =\n node instanceof getOwnerWindow(node).HTMLElement ||\n (typeof HTMLElement !== \"undefined\" && node instanceof HTMLElement);\n if (isHTMLElement && (node as HTMLElement).inert) {\n return true;\n }\n\n node = node.parentElement;\n }\n\n return false;\n}\n\n/**\n * Checks if a keyboard event should trigger the default action (like clicking).\n */\nexport function isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Element): boolean {\n const { key, code } = event;\n const element = currentTarget as HTMLElement;\n const tagName = element.tagName.toLowerCase();\n const role = element.getAttribute(\"role\");\n\n // Only accept Enter and Space\n const isActivationKey = key === \"Enter\" || key === \" \" || key === \"Spacebar\" || code === \"Space\";\n if (!isActivationKey) {\n return false;\n }\n\n // Text inputs should handle their own keyboard events\n if (tagName === \"textarea\") {\n return false;\n }\n\n // Content editable elements should handle their own keyboard events\n if (element.isContentEditable) {\n return false;\n }\n\n // Links should only respond to Enter, not Space\n const isLink = role === \"link\" || (!role && isHTMLAnchorLink(element));\n if (isLink && key !== \"Enter\") {\n return false;\n }\n\n // Input elements have specific key handling\n if (tagName === \"input\") {\n return isValidInputKey(element as HTMLInputElement, key);\n }\n\n return true;\n}\n\n/**\n * Checks if a key is valid for a specific input type.\n */\nexport function isValidInputKey(target: HTMLInputElement, key: string): boolean {\n const type = target.type.toLowerCase();\n\n // Checkbox and radio only respond to Space\n if (type === \"checkbox\" || type === \"radio\") {\n return key === \" \" || key === \"Spacebar\";\n }\n\n // Text-like inputs handle their own keyboard events\n const textInputTypes = [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n \"date\",\n \"month\",\n \"week\",\n \"time\",\n \"datetime-local\",\n \"number\",\n ];\n if (textInputTypes.includes(type)) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Checks if an element is an HTML anchor link (has href attribute).\n */\nexport function isHTMLAnchorLink(target: Element): boolean {\n return target.tagName === \"A\" && target.hasAttribute(\"href\");\n}\n\n/**\n * Whether to prevent default on keyboard events for this element.\n */\nexport function shouldPreventDefaultKeyboard(target: Element, key: string): boolean {\n if (target instanceof HTMLInputElement) {\n return !isValidInputKey(target, key);\n }\n\n return shouldPreventDefaultUp(target);\n}\n\n/**\n * Whether to prevent default on pointer up for this element.\n */\nexport function shouldPreventDefaultUp(target: Element): boolean {\n const tagName = target.tagName.toLowerCase();\n\n // Never prevent default on form elements\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n return false;\n }\n\n // Don't prevent default on links\n if (tagName === \"a\" || target.getAttribute(\"role\") === \"link\") {\n return false;\n }\n\n // Buttons with submit/reset type should not prevent default\n if (tagName === \"button\") {\n const type = (target as HTMLButtonElement).type;\n if (type === \"submit\" || type === \"reset\") {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Opens a link, supporting both same-window and new-window navigation.\n * Used for keyboard activation of links with Space key (which doesn't natively open links).\n */\nexport function openLink(target: HTMLAnchorElement, event: Event, allowOpener = false): void {\n const { href, target: linkTarget, rel } = target;\n (openLink as { isOpening?: boolean }).isOpening = true;\n\n // Handle modifier keys for open-in-new-tab behavior\n const keyEvent = event as KeyboardEvent;\n const shouldOpenInNewTab =\n linkTarget === \"_blank\" ||\n keyEvent?.metaKey ||\n keyEvent?.ctrlKey ||\n keyEvent?.shiftKey ||\n keyEvent?.altKey;\n\n if (shouldOpenInNewTab) {\n const features = !allowOpener && rel?.includes(\"noopener\") ? \"noopener\" : undefined;\n window.open(href, linkTarget || \"_blank\", features);\n } else {\n window.location.href = href;\n }\n\n (openLink as { isOpening?: boolean }).isOpening = false;\n}\n\n(openLink as { isOpening?: boolean }).isOpening = false;\n\n/**\n * Checks if an element is scrollable based on its overflow style.\n * @param node - The element to check\n * @param checkForOverflow - If true, also check if the element actually overflows\n */\nexport function isScrollable(node: Element | null, checkForOverflow?: boolean): boolean {\n if (!node) {\n return false;\n }\n\n const style = window.getComputedStyle(node);\n const scrollable = /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n\n if (scrollable && checkForOverflow) {\n return node.scrollHeight !== node.clientHeight || node.scrollWidth !== node.clientWidth;\n }\n\n return scrollable;\n}\n\n/**\n * Gets the nearest scrollable parent element.\n * @param node - The starting element\n * @param checkForOverflow - If true, only return parents that actually overflow\n */\nexport function getScrollParent(node: Element, checkForOverflow?: boolean): Element {\n let scrollableNode: Element | null = node;\n\n if (isScrollable(scrollableNode, checkForOverflow)) {\n scrollableNode = scrollableNode.parentElement;\n }\n\n while (scrollableNode && !isScrollable(scrollableNode, checkForOverflow)) {\n scrollableNode = scrollableNode.parentElement;\n }\n\n return scrollableNode || document.scrollingElement || document.documentElement;\n}\n\n/**\n * Gets every scrollable ancestor of an element, from the nearest up to (and\n * including) the document scrolling element.\n * @param node - The starting element\n * @param checkForOverflow - If true, only include parents that actually overflow\n */\nexport function getScrollParents(node: Element, checkForOverflow?: boolean): Element[] {\n const parentElements: Element[] = [];\n const root = document.scrollingElement || document.documentElement;\n let current: Element | null = node;\n\n while (current) {\n if (isScrollable(current, checkForOverflow)) {\n parentElements.push(current);\n }\n if (current === root) {\n break;\n }\n current = current.parentElement;\n }\n\n return parentElements;\n}\n\n/**\n * Checks if an element will open a virtual keyboard when focused.\n * Used for iOS Safari scroll handling.\n */\nexport function willOpenKeyboard(target: Element | null): boolean {\n if (!target) {\n return false;\n }\n\n const tagName = target.tagName.toLowerCase();\n\n // Inputs that open keyboard (not all input types do)\n if (tagName === \"input\") {\n const type = (target as HTMLInputElement).type.toLowerCase();\n // These input types open the keyboard\n const keyboardTypes = [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n \"date\",\n \"month\",\n \"week\",\n \"time\",\n \"datetime-local\",\n \"number\",\n ];\n return keyboardTypes.includes(type);\n }\n\n // Textareas always open keyboard\n if (tagName === \"textarea\") {\n return true;\n }\n\n // Contenteditable elements open keyboard\n if (\n target.hasAttribute(\"contenteditable\") &&\n target.getAttribute(\"contenteditable\") !== \"false\"\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Returns the deepest active element, descending through open shadow roots.\n * Mirrors @react-aria/utils' `getActiveElement`.\n */\nexport function getActiveElement(doc: Document = document): Element | null {\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot?.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\n/**\n * Whether the (deepest) active element is `element` or is contained within it.\n * Mirrors @react-aria/utils' `isFocusWithin`.\n */\nexport function isFocusWithin(element: Element): boolean {\n const activeElement = getActiveElement(getOwnerDocument(element));\n return !!activeElement && nodeContains(element, activeElement);\n}\n\n/**\n * Creates a `TreeWalker` that visits the focusable (or, when `tabbable`, the\n * tabbable) descendants of `root`, skipping invisible and inert elements.\n * Mirrors @react-aria/focus's `getFocusableTreeWalker`, minus the focus-scope\n * containment filter (we don't model nested scopes here). Used to treat a\n * selectable collection as a single tab stop.\n */\nexport function getFocusableTreeWalker(\n root: Element,\n opts?: { tabbable?: boolean; from?: Node },\n): TreeWalker {\n const accept = (node: Element) => (opts?.tabbable ? isTabbable(node) : isFocusable(node));\n const walker = getOwnerDocument(root).createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node) {\n // Skip nodes inside the optional starting node.\n if (opts?.from?.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n if (accept(node as Element)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n if (opts?.from) {\n walker.currentNode = opts.from;\n }\n return walker;\n}\n","/**\n * Focus management utilities.\n * Based on @react-aria/utils focus utilities.\n */\n\nimport { getEventTarget, getOwnerDocument, getOwnerWindow, isFocusable } from \"./dom\";\n\n/**\n * Focuses an element without scrolling the page.\n * Uses preventScroll option with fallback for older browsers.\n */\nexport function focusWithoutScrolling(element: HTMLElement | null): void {\n if (!element) return;\n\n try {\n element.focus({ preventScroll: true });\n } catch {\n // Fallback for browsers that don't support preventScroll\n const scrollableElements = getScrollableAncestors(element);\n const scrollPositions = scrollableElements.map((el) => ({\n element: el,\n scrollTop: el.scrollTop,\n scrollLeft: el.scrollLeft,\n }));\n\n element.focus();\n\n for (const { element: el, scrollTop, scrollLeft } of scrollPositions) {\n el.scrollTop = scrollTop;\n el.scrollLeft = scrollLeft;\n }\n }\n}\n\n/**\n * Gets all scrollable ancestors of an element.\n */\nfunction getScrollableAncestors(element: Element): Element[] {\n const ancestors: Element[] = [];\n let parent = element.parentElement;\n\n while (parent) {\n const style = getComputedStyle(parent);\n const overflowY = style.overflowY;\n const overflowX = style.overflowX;\n\n if (\n overflowY === \"auto\" ||\n overflowY === \"scroll\" ||\n overflowX === \"auto\" ||\n overflowX === \"scroll\"\n ) {\n ancestors.push(parent);\n }\n\n parent = parent.parentElement;\n }\n\n // Also include the document scrolling element\n const doc = getOwnerDocument(element);\n ancestors.push(doc.documentElement);\n\n return ancestors;\n}\n\n/**\n * Prevents focus from moving to a new element temporarily.\n * Used when clicking on a button that shouldn't steal focus.\n */\nexport function preventFocus(target: Element | null): (() => void) | undefined {\n while (target && !isFocusable(target)) {\n target = target.parentElement;\n }\n\n const ownerWindow = getOwnerWindow(target);\n const activeElement = ownerWindow.document.activeElement as HTMLElement | null;\n\n if (!activeElement || activeElement === target) {\n return undefined;\n }\n\n let isRefocusing = false;\n\n const onBlur = (event: FocusEvent) => {\n if (getEventTarget(event) === activeElement || isRefocusing) {\n event.stopImmediatePropagation();\n }\n };\n\n const onFocusOut = (event: FocusEvent) => {\n if (getEventTarget(event) === activeElement || isRefocusing) {\n event.stopImmediatePropagation();\n\n if (!target && !isRefocusing) {\n isRefocusing = true;\n focusWithoutScrolling(activeElement);\n cleanup();\n }\n }\n };\n\n const onFocus = (event: FocusEvent) => {\n if (getEventTarget(event) === target || isRefocusing) {\n event.stopImmediatePropagation();\n }\n };\n\n const onFocusIn = (event: FocusEvent) => {\n if (getEventTarget(event) === target || isRefocusing) {\n event.stopImmediatePropagation();\n\n if (!isRefocusing) {\n isRefocusing = true;\n focusWithoutScrolling(activeElement);\n cleanup();\n }\n }\n };\n\n ownerWindow.addEventListener(\"blur\", onBlur, true);\n ownerWindow.addEventListener(\"focusout\", onFocusOut, true);\n ownerWindow.addEventListener(\"focusin\", onFocusIn, true);\n ownerWindow.addEventListener(\"focus\", onFocus, true);\n\n const raf = ownerWindow.requestAnimationFrame(cleanup);\n\n function cleanup() {\n ownerWindow.cancelAnimationFrame(raf);\n ownerWindow.removeEventListener(\"blur\", onBlur, true);\n ownerWindow.removeEventListener(\"focusout\", onFocusOut, true);\n ownerWindow.removeEventListener(\"focusin\", onFocusIn, true);\n ownerWindow.removeEventListener(\"focus\", onFocus, true);\n isRefocusing = false;\n }\n\n return cleanup;\n}\n\n/**\n * Safely focuses an element, alias for focusWithoutScrolling.\n * This matches the react-aria focusSafely function name.\n */\nexport const focusSafely = focusWithoutScrolling;\n"],"mappings":"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"}
|