@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
package/src/focus/FocusScope.tsx
CHANGED
|
@@ -13,64 +13,56 @@ import {
|
|
|
13
13
|
type ParentComponent,
|
|
14
14
|
createSignal,
|
|
15
15
|
onMount,
|
|
16
|
-
} from
|
|
17
|
-
import { isServer } from
|
|
18
|
-
import { getOwnerDocument, isFocusable } from
|
|
19
|
-
import { focusSafely } from
|
|
20
|
-
|
|
21
|
-
// ============================================
|
|
22
|
-
// TYPES
|
|
23
|
-
// ============================================
|
|
16
|
+
} from "solid-js";
|
|
17
|
+
import { isServer } from "solid-js/web";
|
|
18
|
+
import { getOwnerDocument, isFocusable, isTabbable } from "../utils";
|
|
19
|
+
import { focusSafely } from "../utils/focus";
|
|
24
20
|
|
|
25
21
|
export interface FocusScopeProps {
|
|
26
22
|
/** The contents of the focus scope. */
|
|
27
|
-
children: JSX.Element
|
|
23
|
+
children: JSX.Element;
|
|
28
24
|
/**
|
|
29
25
|
* Whether to contain focus inside the scope, so users cannot
|
|
30
26
|
* move focus outside, for example in a modal dialog.
|
|
31
27
|
*/
|
|
32
|
-
contain?: boolean
|
|
28
|
+
contain?: boolean;
|
|
33
29
|
/**
|
|
34
30
|
* Whether to restore focus back to the element that was focused
|
|
35
31
|
* when the focus scope mounted, after the focus scope unmounts.
|
|
36
32
|
*/
|
|
37
|
-
restoreFocus?: boolean
|
|
33
|
+
restoreFocus?: boolean;
|
|
38
34
|
/** Whether to auto focus the first focusable element in the focus scope on mount. */
|
|
39
|
-
autoFocus?: boolean
|
|
35
|
+
autoFocus?: boolean;
|
|
40
36
|
}
|
|
41
37
|
|
|
42
38
|
export interface FocusManagerOptions {
|
|
43
39
|
/** The element to start searching from. The currently focused element by default. */
|
|
44
|
-
from?: Element
|
|
40
|
+
from?: Element;
|
|
45
41
|
/** Whether to only include tabbable elements, or all focusable elements. */
|
|
46
|
-
tabbable?: boolean
|
|
42
|
+
tabbable?: boolean;
|
|
47
43
|
/** Whether focus should wrap around when it reaches the end of the scope. */
|
|
48
|
-
wrap?: boolean
|
|
44
|
+
wrap?: boolean;
|
|
49
45
|
/** A callback that determines whether the given element is focused. */
|
|
50
|
-
accept?: (node: Element) => boolean
|
|
46
|
+
accept?: (node: Element) => boolean;
|
|
51
47
|
}
|
|
52
48
|
|
|
53
49
|
export interface FocusManager {
|
|
54
50
|
/** Moves focus to the next focusable or tabbable element in the focus scope. */
|
|
55
|
-
focusNext(opts?: FocusManagerOptions): HTMLElement | null
|
|
51
|
+
focusNext(opts?: FocusManagerOptions): HTMLElement | null;
|
|
56
52
|
/** Moves focus to the previous focusable or tabbable element in the focus scope. */
|
|
57
|
-
focusPrevious(opts?: FocusManagerOptions): HTMLElement | null
|
|
53
|
+
focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;
|
|
58
54
|
/** Moves focus to the first focusable or tabbable element in the focus scope. */
|
|
59
|
-
focusFirst(opts?: FocusManagerOptions): HTMLElement | null
|
|
55
|
+
focusFirst(opts?: FocusManagerOptions): HTMLElement | null;
|
|
60
56
|
/** Moves focus to the last focusable or tabbable element in the focus scope. */
|
|
61
|
-
focusLast(opts?: FocusManagerOptions): HTMLElement | null
|
|
57
|
+
focusLast(opts?: FocusManagerOptions): HTMLElement | null;
|
|
62
58
|
}
|
|
63
59
|
|
|
64
|
-
// ============================================
|
|
65
|
-
// CONTEXT
|
|
66
|
-
// ============================================
|
|
67
|
-
|
|
68
60
|
interface FocusScopeContextValue {
|
|
69
|
-
focusManager: FocusManager
|
|
70
|
-
scopeRef: Accessor<Element[]
|
|
61
|
+
focusManager: FocusManager;
|
|
62
|
+
scopeRef: Accessor<Element[]>;
|
|
71
63
|
}
|
|
72
64
|
|
|
73
|
-
const FocusScopeContext = createContext<FocusScopeContextValue | null>(null)
|
|
65
|
+
const FocusScopeContext = createContext<FocusScopeContextValue | null>(null);
|
|
74
66
|
|
|
75
67
|
/**
|
|
76
68
|
* Returns a FocusManager interface for the parent FocusScope.
|
|
@@ -78,78 +70,146 @@ const FocusScopeContext = createContext<FocusScopeContextValue | null>(null)
|
|
|
78
70
|
* a FocusScope, e.g. in response to user events like keyboard navigation.
|
|
79
71
|
*/
|
|
80
72
|
export function useFocusManager(): FocusManager | undefined {
|
|
81
|
-
return useContext(FocusScopeContext)?.focusManager
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// ============================================
|
|
85
|
-
// UTILITIES
|
|
86
|
-
// ============================================
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Checks if an element is tabbable (focusable via Tab key).
|
|
90
|
-
*/
|
|
91
|
-
function isTabbable(element: Element): boolean {
|
|
92
|
-
if (!isFocusable(element)) {
|
|
93
|
-
return false
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Check tabIndex
|
|
97
|
-
const tabIndex = element.getAttribute('tabindex')
|
|
98
|
-
if (tabIndex != null) {
|
|
99
|
-
return parseInt(tabIndex, 10) >= 0
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return true
|
|
73
|
+
return useContext(FocusScopeContext)?.focusManager;
|
|
103
74
|
}
|
|
104
75
|
|
|
105
76
|
/**
|
|
106
77
|
* Gets all focusable elements within a scope.
|
|
107
78
|
*/
|
|
108
79
|
function getFocusableElements(scope: Element[], tabbable = false): HTMLElement[] {
|
|
109
|
-
const elements: HTMLElement[] = []
|
|
110
|
-
const filter = tabbable ? isTabbable : isFocusable
|
|
80
|
+
const elements: HTMLElement[] = [];
|
|
81
|
+
const filter = tabbable ? isTabbable : isFocusable;
|
|
111
82
|
|
|
112
83
|
for (const scopeElement of scope) {
|
|
113
84
|
// Check the element itself
|
|
114
85
|
if (filter(scopeElement)) {
|
|
115
|
-
elements.push(scopeElement as HTMLElement)
|
|
86
|
+
elements.push(scopeElement as HTMLElement);
|
|
116
87
|
}
|
|
117
88
|
|
|
118
89
|
// Check all descendants
|
|
119
|
-
const descendants = scopeElement.querySelectorAll(
|
|
90
|
+
const descendants = scopeElement.querySelectorAll("*");
|
|
120
91
|
for (let i = 0; i < descendants.length; i++) {
|
|
121
|
-
const el = descendants[i]
|
|
92
|
+
const el = descendants[i];
|
|
122
93
|
if (filter(el)) {
|
|
123
|
-
elements.push(el as HTMLElement)
|
|
94
|
+
elements.push(el as HTMLElement);
|
|
124
95
|
}
|
|
125
96
|
}
|
|
126
97
|
}
|
|
127
98
|
|
|
128
|
-
return elements
|
|
99
|
+
return elements;
|
|
129
100
|
}
|
|
130
101
|
|
|
131
102
|
/**
|
|
132
103
|
* Checks if an element is within a scope.
|
|
133
104
|
*/
|
|
134
105
|
function isElementInScope(element: Element | null, scope: Element[]): boolean {
|
|
135
|
-
if (!element) return false
|
|
136
|
-
return scope.some(node => node.contains(element))
|
|
106
|
+
if (!element) return false;
|
|
107
|
+
return scope.some((node) => node.contains(element));
|
|
137
108
|
}
|
|
138
109
|
|
|
139
110
|
/**
|
|
140
111
|
* Gets the active element, accounting for shadow DOM.
|
|
141
112
|
*/
|
|
142
113
|
function getActiveElement(doc: Document): Element | null {
|
|
143
|
-
let activeElement = doc.activeElement
|
|
114
|
+
let activeElement = doc.activeElement;
|
|
144
115
|
while (activeElement?.shadowRoot?.activeElement) {
|
|
145
|
-
activeElement = activeElement.shadowRoot.activeElement
|
|
116
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
117
|
+
}
|
|
118
|
+
return activeElement;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* A scope is identified by its (stable) scope-elements accessor; `null` is the
|
|
123
|
+
* tree root. Mirrors @react-aria/focus's `ScopeRef`.
|
|
124
|
+
*/
|
|
125
|
+
type ScopeRef = Accessor<Element[]> | null;
|
|
126
|
+
|
|
127
|
+
interface FocusScopeTreeNode {
|
|
128
|
+
scopeRef: ScopeRef;
|
|
129
|
+
parent: FocusScopeTreeNode | null;
|
|
130
|
+
children: Set<FocusScopeTreeNode>;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* A registry of the live FocusScopes and their parent/child relationships,
|
|
135
|
+
* mirroring @react-aria/focus's `focusScopeTree`. The DOM tree alone can't
|
|
136
|
+
* express scope nesting because a child scope (e.g. a menu opened from inside a
|
|
137
|
+
* modal popover) is rendered in a portal, outside its parent scope's subtree.
|
|
138
|
+
* The tree records that nesting so containment can recognize a portaled
|
|
139
|
+
* descendant scope as "inside".
|
|
140
|
+
*/
|
|
141
|
+
class FocusScopeTree {
|
|
142
|
+
root: FocusScopeTreeNode;
|
|
143
|
+
private fastMap = new Map<ScopeRef, FocusScopeTreeNode>();
|
|
144
|
+
|
|
145
|
+
constructor() {
|
|
146
|
+
this.root = { scopeRef: null, parent: null, children: new Set() };
|
|
147
|
+
this.fastMap.set(null, this.root);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
getTreeNode(scopeRef: ScopeRef): FocusScopeTreeNode | undefined {
|
|
151
|
+
return this.fastMap.get(scopeRef);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
addTreeNode(scopeRef: ScopeRef, parent: ScopeRef): void {
|
|
155
|
+
const parentNode = this.fastMap.get(parent) ?? this.root;
|
|
156
|
+
const node: FocusScopeTreeNode = { scopeRef, parent: parentNode, children: new Set() };
|
|
157
|
+
parentNode.children.add(node);
|
|
158
|
+
this.fastMap.set(scopeRef, node);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
removeTreeNode(scopeRef: ScopeRef): void {
|
|
162
|
+
// never remove the root
|
|
163
|
+
if (scopeRef === null) return;
|
|
164
|
+
const node = this.fastMap.get(scopeRef);
|
|
165
|
+
if (!node) return;
|
|
166
|
+
const parentNode = node.parent;
|
|
167
|
+
if (parentNode) {
|
|
168
|
+
parentNode.children.delete(node);
|
|
169
|
+
// Re-parent any children so a mid-tree unmount doesn't orphan descendants.
|
|
170
|
+
for (const child of node.children) {
|
|
171
|
+
child.parent = parentNode;
|
|
172
|
+
parentNode.children.add(child);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
this.fastMap.delete(scopeRef);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Pre-order depth-first; skips the null-scoped root, like upstream.
|
|
179
|
+
*traverse(node: FocusScopeTreeNode = this.root): Generator<FocusScopeTreeNode> {
|
|
180
|
+
if (node.scopeRef != null) {
|
|
181
|
+
yield node;
|
|
182
|
+
}
|
|
183
|
+
for (const child of node.children) {
|
|
184
|
+
yield* this.traverse(child);
|
|
185
|
+
}
|
|
146
186
|
}
|
|
147
|
-
return activeElement
|
|
148
187
|
}
|
|
149
188
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
189
|
+
const focusScopeTree = new FocusScopeTree();
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Whether the element is inside `scope` or any of its descendant scopes.
|
|
193
|
+
*
|
|
194
|
+
* `isElementInScope`'s `node.contains` already covers descendant scopes that
|
|
195
|
+
* are DOM children, but not those rendered in a portal. Walking the scope
|
|
196
|
+
* subtree closes that gap so focus moving into a portaled child scope still
|
|
197
|
+
* counts as "inside". Mirrors @react-aria/focus's `isElementInChildScope`.
|
|
198
|
+
*/
|
|
199
|
+
function isElementInChildScope(element: Element, scope: ScopeRef = null): boolean {
|
|
200
|
+
// Always allow focus to move into a top-layer element (e.g. toasts).
|
|
201
|
+
if (element instanceof Element && element.closest("[data-react-aria-top-layer]")) {
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
for (const node of focusScopeTree.traverse(focusScopeTree.getTreeNode(scope))) {
|
|
206
|
+
if (node.scopeRef && isElementInScope(element, node.scopeRef())) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
153
213
|
|
|
154
214
|
/**
|
|
155
215
|
* A FocusScope manages focus for its descendants. It supports containing focus inside
|
|
@@ -160,135 +220,157 @@ function getActiveElement(doc: Document): Element | null {
|
|
|
160
220
|
*/
|
|
161
221
|
export const FocusScope: ParentComponent<FocusScopeProps> = (props) => {
|
|
162
222
|
if (isServer) {
|
|
163
|
-
return <>{props.children}
|
|
223
|
+
return <>{props.children}</>;
|
|
164
224
|
}
|
|
165
225
|
|
|
166
|
-
let startRef: HTMLSpanElement | undefined
|
|
167
|
-
let endRef: HTMLSpanElement | undefined
|
|
168
|
-
const [scopeElements, setScopeElements] = createSignal<Element[]>([])
|
|
226
|
+
let startRef: HTMLSpanElement | undefined;
|
|
227
|
+
let endRef: HTMLSpanElement | undefined;
|
|
228
|
+
const [scopeElements, setScopeElements] = createSignal<Element[]>([]);
|
|
229
|
+
|
|
230
|
+
// The nearest enclosing FocusScope (through context, which Solid propagates
|
|
231
|
+
// across portals) is this scope's parent in the focus-scope tree. Read it
|
|
232
|
+
// before we shadow the context with our own provider below.
|
|
233
|
+
const parentScopeRef = useContext(FocusScopeContext)?.scopeRef ?? null;
|
|
169
234
|
|
|
170
235
|
// Store the element that was focused when the scope mounted
|
|
171
|
-
let nodeToRestore: Element | null = null
|
|
236
|
+
let nodeToRestore: Element | null = null;
|
|
237
|
+
|
|
238
|
+
const getRestorableElement = (element: Element | null, doc: Document): Element | null => {
|
|
239
|
+
if (!element || element === doc.body || element === doc.documentElement) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
return element;
|
|
243
|
+
};
|
|
172
244
|
|
|
173
245
|
// Create focus manager
|
|
174
246
|
const focusManager: FocusManager = {
|
|
175
247
|
focusNext(opts = {}) {
|
|
176
|
-
const scope = scopeElements()
|
|
177
|
-
if (scope.length === 0) return null
|
|
248
|
+
const scope = scopeElements();
|
|
249
|
+
if (scope.length === 0) return null;
|
|
178
250
|
|
|
179
|
-
const { from, tabbable = true, wrap = false, accept } = opts
|
|
180
|
-
const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
|
|
181
|
-
const doc = getOwnerDocument(scope[0])
|
|
182
|
-
const current = from || getActiveElement(doc)
|
|
251
|
+
const { from, tabbable = true, wrap = false, accept } = opts;
|
|
252
|
+
const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
|
|
253
|
+
const doc = getOwnerDocument(scope[0]);
|
|
254
|
+
const current = from || getActiveElement(doc);
|
|
183
255
|
|
|
184
|
-
if (!current || elements.length === 0) return null
|
|
256
|
+
if (!current || elements.length === 0) return null;
|
|
185
257
|
|
|
186
|
-
const currentIndex = elements.indexOf(current as HTMLElement)
|
|
187
|
-
let nextIndex = currentIndex + 1
|
|
258
|
+
const currentIndex = elements.indexOf(current as HTMLElement);
|
|
259
|
+
let nextIndex = currentIndex + 1;
|
|
188
260
|
|
|
189
261
|
if (nextIndex >= elements.length) {
|
|
190
262
|
if (wrap) {
|
|
191
|
-
nextIndex = 0
|
|
263
|
+
nextIndex = 0;
|
|
192
264
|
} else {
|
|
193
|
-
return null
|
|
265
|
+
return null;
|
|
194
266
|
}
|
|
195
267
|
}
|
|
196
268
|
|
|
197
|
-
const nextElement = elements[nextIndex]
|
|
269
|
+
const nextElement = elements[nextIndex];
|
|
198
270
|
if (nextElement) {
|
|
199
|
-
focusSafely(nextElement)
|
|
200
|
-
return nextElement
|
|
271
|
+
focusSafely(nextElement);
|
|
272
|
+
return nextElement;
|
|
201
273
|
}
|
|
202
274
|
|
|
203
|
-
return null
|
|
275
|
+
return null;
|
|
204
276
|
},
|
|
205
277
|
|
|
206
278
|
focusPrevious(opts = {}) {
|
|
207
|
-
const scope = scopeElements()
|
|
208
|
-
if (scope.length === 0) return null
|
|
279
|
+
const scope = scopeElements();
|
|
280
|
+
if (scope.length === 0) return null;
|
|
209
281
|
|
|
210
|
-
const { from, tabbable = true, wrap = false, accept } = opts
|
|
211
|
-
const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
|
|
212
|
-
const doc = getOwnerDocument(scope[0])
|
|
213
|
-
const current = from || getActiveElement(doc)
|
|
282
|
+
const { from, tabbable = true, wrap = false, accept } = opts;
|
|
283
|
+
const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
|
|
284
|
+
const doc = getOwnerDocument(scope[0]);
|
|
285
|
+
const current = from || getActiveElement(doc);
|
|
214
286
|
|
|
215
|
-
if (!current || elements.length === 0) return null
|
|
287
|
+
if (!current || elements.length === 0) return null;
|
|
216
288
|
|
|
217
|
-
const currentIndex = elements.indexOf(current as HTMLElement)
|
|
218
|
-
let prevIndex = currentIndex - 1
|
|
289
|
+
const currentIndex = elements.indexOf(current as HTMLElement);
|
|
290
|
+
let prevIndex = currentIndex - 1;
|
|
219
291
|
|
|
220
292
|
if (prevIndex < 0) {
|
|
221
293
|
if (wrap) {
|
|
222
|
-
prevIndex = elements.length - 1
|
|
294
|
+
prevIndex = elements.length - 1;
|
|
223
295
|
} else {
|
|
224
|
-
return null
|
|
296
|
+
return null;
|
|
225
297
|
}
|
|
226
298
|
}
|
|
227
299
|
|
|
228
|
-
const prevElement = elements[prevIndex]
|
|
300
|
+
const prevElement = elements[prevIndex];
|
|
229
301
|
if (prevElement) {
|
|
230
|
-
focusSafely(prevElement)
|
|
231
|
-
return prevElement
|
|
302
|
+
focusSafely(prevElement);
|
|
303
|
+
return prevElement;
|
|
232
304
|
}
|
|
233
305
|
|
|
234
|
-
return null
|
|
306
|
+
return null;
|
|
235
307
|
},
|
|
236
308
|
|
|
237
309
|
focusFirst(opts = {}) {
|
|
238
|
-
const scope = scopeElements()
|
|
239
|
-
if (scope.length === 0) return null
|
|
310
|
+
const scope = scopeElements();
|
|
311
|
+
if (scope.length === 0) return null;
|
|
240
312
|
|
|
241
|
-
const { tabbable = true, accept } = opts
|
|
242
|
-
const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
|
|
313
|
+
const { tabbable = true, accept } = opts;
|
|
314
|
+
const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
|
|
243
315
|
|
|
244
316
|
if (elements.length > 0) {
|
|
245
|
-
focusSafely(elements[0])
|
|
246
|
-
return elements[0]
|
|
317
|
+
focusSafely(elements[0]);
|
|
318
|
+
return elements[0];
|
|
247
319
|
}
|
|
248
320
|
|
|
249
|
-
return null
|
|
321
|
+
return null;
|
|
250
322
|
},
|
|
251
323
|
|
|
252
324
|
focusLast(opts = {}) {
|
|
253
|
-
const scope = scopeElements()
|
|
254
|
-
if (scope.length === 0) return null
|
|
325
|
+
const scope = scopeElements();
|
|
326
|
+
if (scope.length === 0) return null;
|
|
255
327
|
|
|
256
|
-
const { tabbable = true, accept } = opts
|
|
257
|
-
const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
|
|
328
|
+
const { tabbable = true, accept } = opts;
|
|
329
|
+
const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
|
|
258
330
|
|
|
259
331
|
if (elements.length > 0) {
|
|
260
|
-
const lastElement = elements[elements.length - 1]
|
|
261
|
-
focusSafely(lastElement)
|
|
262
|
-
return lastElement
|
|
332
|
+
const lastElement = elements[elements.length - 1];
|
|
333
|
+
focusSafely(lastElement);
|
|
334
|
+
return lastElement;
|
|
263
335
|
}
|
|
264
336
|
|
|
265
|
-
return null
|
|
337
|
+
return null;
|
|
266
338
|
},
|
|
267
|
-
}
|
|
339
|
+
};
|
|
268
340
|
|
|
269
341
|
// Collect scope elements after render
|
|
270
342
|
onMount(() => {
|
|
271
|
-
if (!startRef || !endRef) return
|
|
343
|
+
if (!startRef || !endRef) return;
|
|
272
344
|
|
|
273
|
-
const nodes: Element[] = []
|
|
274
|
-
let node = startRef.nextSibling
|
|
345
|
+
const nodes: Element[] = [];
|
|
346
|
+
let node = startRef.nextSibling;
|
|
275
347
|
while (node && node !== endRef) {
|
|
276
348
|
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
277
|
-
nodes.push(node as Element)
|
|
349
|
+
nodes.push(node as Element);
|
|
278
350
|
}
|
|
279
|
-
node = node.nextSibling
|
|
351
|
+
node = node.nextSibling;
|
|
280
352
|
}
|
|
281
|
-
setScopeElements(nodes)
|
|
282
|
-
})
|
|
353
|
+
setScopeElements(nodes);
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
// Register this scope in the focus-scope tree so containment can recognize a
|
|
357
|
+
// portaled descendant scope as "inside" it. The scope-elements accessor is a
|
|
358
|
+
// stable identity, so it works as the tree key even before it's populated.
|
|
359
|
+
onMount(() => {
|
|
360
|
+
focusScopeTree.addTreeNode(scopeElements, parentScopeRef);
|
|
361
|
+
});
|
|
362
|
+
onCleanup(() => {
|
|
363
|
+
focusScopeTree.removeTreeNode(scopeElements);
|
|
364
|
+
});
|
|
283
365
|
|
|
284
366
|
// Save the currently focused element for restoration (must happen before autoFocus/contain effects run).
|
|
285
367
|
onMount(() => {
|
|
286
|
-
if (!props.restoreFocus) return
|
|
368
|
+
if (!props.restoreFocus) return;
|
|
287
369
|
|
|
288
370
|
// Focus can be in the main document, or inside this iframe's document.
|
|
289
|
-
const scopeDoc = startRef ? getOwnerDocument(startRef) : document
|
|
290
|
-
const scopeActive = getActiveElement(scopeDoc)
|
|
291
|
-
const topActive = getActiveElement(document)
|
|
371
|
+
const scopeDoc = startRef ? getOwnerDocument(startRef) : document;
|
|
372
|
+
const scopeActive = getActiveElement(scopeDoc);
|
|
373
|
+
const topActive = getActiveElement(document);
|
|
292
374
|
|
|
293
375
|
// If the scope is in an iframe and that iframe is currently focused, prefer the iframe document's active element.
|
|
294
376
|
if (
|
|
@@ -298,103 +380,146 @@ export const FocusScope: ParentComponent<FocusScopeProps> = (props) => {
|
|
|
298
380
|
scopeActive &&
|
|
299
381
|
scopeActive !== scopeDoc.body
|
|
300
382
|
) {
|
|
301
|
-
nodeToRestore = scopeActive
|
|
302
|
-
return
|
|
383
|
+
nodeToRestore = getRestorableElement(scopeActive, scopeDoc);
|
|
384
|
+
return;
|
|
303
385
|
}
|
|
304
386
|
|
|
305
|
-
nodeToRestore = topActive
|
|
306
|
-
})
|
|
387
|
+
nodeToRestore = getRestorableElement(topActive, document);
|
|
388
|
+
});
|
|
307
389
|
|
|
308
390
|
// Auto-focus first element
|
|
309
391
|
createEffect(() => {
|
|
310
|
-
if (!props.autoFocus) return
|
|
392
|
+
if (!props.autoFocus) return;
|
|
311
393
|
|
|
312
|
-
const scope = scopeElements()
|
|
313
|
-
if (scope.length === 0) return
|
|
394
|
+
const scope = scopeElements();
|
|
395
|
+
if (scope.length === 0) return;
|
|
314
396
|
|
|
315
|
-
const doc = getOwnerDocument(scope[0])
|
|
316
|
-
const activeElement = getActiveElement(doc)
|
|
397
|
+
const doc = getOwnerDocument(scope[0]);
|
|
398
|
+
const activeElement = getActiveElement(doc);
|
|
317
399
|
|
|
318
400
|
// Only auto-focus if focus is not already inside the scope
|
|
319
401
|
if (!isElementInScope(activeElement, scope)) {
|
|
320
|
-
focusManager.focusFirst()
|
|
402
|
+
focusManager.focusFirst();
|
|
321
403
|
}
|
|
322
|
-
})
|
|
404
|
+
});
|
|
323
405
|
|
|
324
406
|
// Focus containment
|
|
325
407
|
createEffect(() => {
|
|
326
|
-
if (!props.contain) return
|
|
408
|
+
if (!props.contain) return;
|
|
327
409
|
|
|
328
|
-
const scope = scopeElements()
|
|
329
|
-
if (scope.length === 0) return
|
|
410
|
+
const scope = scopeElements();
|
|
411
|
+
if (scope.length === 0) return;
|
|
330
412
|
|
|
331
|
-
const doc = getOwnerDocument(scope[0])
|
|
332
|
-
let focusedNode: Element | null = null
|
|
413
|
+
const doc = getOwnerDocument(scope[0]);
|
|
414
|
+
let focusedNode: Element | null = null;
|
|
333
415
|
|
|
334
416
|
const onKeyDown = (e: KeyboardEvent) => {
|
|
335
|
-
if (e.key !==
|
|
336
|
-
return
|
|
417
|
+
if (e.key !== "Tab" || e.altKey || e.ctrlKey || e.metaKey) {
|
|
418
|
+
return;
|
|
337
419
|
}
|
|
338
420
|
|
|
339
|
-
const scope = scopeElements()
|
|
340
|
-
const activeElement = getActiveElement(doc)
|
|
421
|
+
const scope = scopeElements();
|
|
422
|
+
const activeElement = getActiveElement(doc);
|
|
341
423
|
if (!isElementInScope(activeElement, scope)) {
|
|
342
|
-
return
|
|
424
|
+
return;
|
|
343
425
|
}
|
|
344
426
|
|
|
345
|
-
const elements = getFocusableElements(scope, true)
|
|
346
|
-
if (elements.length === 0) return
|
|
427
|
+
const elements = getFocusableElements(scope, true);
|
|
428
|
+
if (elements.length === 0) return;
|
|
347
429
|
|
|
348
|
-
const firstElement = elements[0]
|
|
349
|
-
const lastElement = elements[elements.length - 1]
|
|
430
|
+
const firstElement = elements[0];
|
|
431
|
+
const lastElement = elements[elements.length - 1];
|
|
350
432
|
|
|
351
433
|
if (e.shiftKey && activeElement === firstElement) {
|
|
352
|
-
e.preventDefault()
|
|
353
|
-
focusSafely(lastElement)
|
|
434
|
+
e.preventDefault();
|
|
435
|
+
focusSafely(lastElement);
|
|
354
436
|
} else if (!e.shiftKey && activeElement === lastElement) {
|
|
355
|
-
e.preventDefault()
|
|
356
|
-
focusSafely(firstElement)
|
|
437
|
+
e.preventDefault();
|
|
438
|
+
focusSafely(firstElement);
|
|
357
439
|
}
|
|
358
|
-
}
|
|
440
|
+
};
|
|
359
441
|
|
|
360
442
|
const onFocusIn = (e: FocusEvent) => {
|
|
361
|
-
const scope = scopeElements()
|
|
362
|
-
const target = e.target as Element
|
|
443
|
+
const scope = scopeElements();
|
|
444
|
+
const target = e.target as Element;
|
|
363
445
|
|
|
364
446
|
if (isElementInScope(target, scope)) {
|
|
365
|
-
focusedNode = target
|
|
447
|
+
focusedNode = target;
|
|
448
|
+
} else if (isElementInChildScope(target, scopeElements)) {
|
|
449
|
+
// Focus moved into a descendant scope — e.g. a menu opened from inside
|
|
450
|
+
// this modal popover, rendered in a portal outside this scope's DOM
|
|
451
|
+
// subtree. Track it but don't pull focus back, which would tear the
|
|
452
|
+
// nested overlay down.
|
|
453
|
+
focusedNode = target;
|
|
366
454
|
} else if (focusedNode) {
|
|
367
455
|
// Focus escaped the scope, bring it back
|
|
368
|
-
focusSafely(focusedNode as HTMLElement)
|
|
456
|
+
focusSafely(focusedNode as HTMLElement);
|
|
369
457
|
} else {
|
|
370
458
|
// No previous focus, focus first element
|
|
371
|
-
focusManager.focusFirst()
|
|
459
|
+
focusManager.focusFirst();
|
|
372
460
|
}
|
|
373
|
-
}
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
let restoreRaf: number | null = null;
|
|
464
|
+
|
|
465
|
+
const onFocusOut = (e: FocusEvent) => {
|
|
466
|
+
const target = e.target as Element;
|
|
467
|
+
if (!isElementInScope(target, scopeElements())) return;
|
|
468
|
+
|
|
469
|
+
// Focus left an element inside the scope. Wait a frame (like upstream's
|
|
470
|
+
// onBlur) so a synchronous refocus elsewhere can settle; if focus ended
|
|
471
|
+
// up outside every scope (e.g. blur() to body), pull it back.
|
|
472
|
+
const win = doc.defaultView ?? window;
|
|
473
|
+
if (restoreRaf != null) win.cancelAnimationFrame(restoreRaf);
|
|
474
|
+
restoreRaf = win.requestAnimationFrame(() => {
|
|
475
|
+
restoreRaf = null;
|
|
476
|
+
const scope = scopeElements();
|
|
477
|
+
const activeElement = getActiveElement(doc);
|
|
478
|
+
if (
|
|
479
|
+
activeElement &&
|
|
480
|
+
(isElementInScope(activeElement, scope) ||
|
|
481
|
+
isElementInChildScope(activeElement, scopeElements))
|
|
482
|
+
) {
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
374
485
|
|
|
375
|
-
|
|
376
|
-
|
|
486
|
+
if (doc.body.contains(target)) {
|
|
487
|
+
focusedNode = target;
|
|
488
|
+
focusSafely(target as HTMLElement);
|
|
489
|
+
} else {
|
|
490
|
+
focusManager.focusFirst();
|
|
491
|
+
}
|
|
492
|
+
});
|
|
493
|
+
};
|
|
494
|
+
|
|
495
|
+
doc.addEventListener("keydown", onKeyDown, true);
|
|
496
|
+
doc.addEventListener("focusin", onFocusIn, true);
|
|
497
|
+
doc.addEventListener("focusout", onFocusOut, true);
|
|
377
498
|
|
|
378
499
|
onCleanup(() => {
|
|
379
|
-
doc.removeEventListener(
|
|
380
|
-
doc.removeEventListener(
|
|
381
|
-
|
|
382
|
-
|
|
500
|
+
doc.removeEventListener("keydown", onKeyDown, true);
|
|
501
|
+
doc.removeEventListener("focusin", onFocusIn, true);
|
|
502
|
+
doc.removeEventListener("focusout", onFocusOut, true);
|
|
503
|
+
if (restoreRaf != null) {
|
|
504
|
+
(doc.defaultView ?? window).cancelAnimationFrame(restoreRaf);
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
});
|
|
383
508
|
|
|
384
509
|
// Restore focus on unmount
|
|
385
510
|
onCleanup(() => {
|
|
386
511
|
if (props.restoreFocus && nodeToRestore && (nodeToRestore as HTMLElement).focus) {
|
|
387
|
-
const doc = getOwnerDocument(nodeToRestore as Element)
|
|
388
|
-
const win = doc.defaultView ?? window
|
|
512
|
+
const doc = getOwnerDocument(nodeToRestore as Element);
|
|
513
|
+
const win = doc.defaultView ?? window;
|
|
389
514
|
|
|
390
515
|
// Use requestAnimationFrame to ensure the element is still in the DOM
|
|
391
516
|
win.requestAnimationFrame(() => {
|
|
392
517
|
if (nodeToRestore && doc.body.contains(nodeToRestore as Node)) {
|
|
393
|
-
|
|
518
|
+
(nodeToRestore as HTMLElement).focus();
|
|
394
519
|
}
|
|
395
|
-
})
|
|
520
|
+
});
|
|
396
521
|
}
|
|
397
|
-
})
|
|
522
|
+
});
|
|
398
523
|
|
|
399
524
|
return (
|
|
400
525
|
<FocusScopeContext.Provider value={{ focusManager, scopeRef: scopeElements }}>
|
|
@@ -402,7 +527,7 @@ export const FocusScope: ParentComponent<FocusScopeProps> = (props) => {
|
|
|
402
527
|
{props.children}
|
|
403
528
|
<span data-focus-scope-end hidden ref={endRef} />
|
|
404
529
|
</FocusScopeContext.Provider>
|
|
405
|
-
)
|
|
406
|
-
}
|
|
530
|
+
);
|
|
531
|
+
};
|
|
407
532
|
|
|
408
|
-
export default FocusScope
|
|
533
|
+
export default FocusScope;
|