@proyecto-viviana/solidaria 0.4.2 → 0.6.0-rc.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/LICENSE-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/dist/_chunk/DragManager.js +71 -25
- package/dist/_chunk/DragManager.js.map +1 -1
- package/dist/_chunk/DragManager.jsx +71 -25
- package/dist/_chunk/DragManager.jsx.map +1 -1
- package/dist/_chunk/FocusScope.js +281 -66
- package/dist/_chunk/FocusScope.js.map +1 -1
- package/dist/_chunk/FocusScope.jsx +274 -55
- package/dist/_chunk/FocusScope.jsx.map +1 -1
- package/dist/_chunk/actiongroup.js +43 -19
- package/dist/_chunk/actiongroup.js.map +1 -1
- package/dist/_chunk/actiongroup.jsx +43 -19
- package/dist/_chunk/actiongroup.jsx.map +1 -1
- package/dist/_chunk/announce.js +19 -6
- package/dist/_chunk/announce.js.map +1 -1
- package/dist/_chunk/announce.jsx +19 -6
- package/dist/_chunk/announce.jsx.map +1 -1
- package/dist/_chunk/ariaHideOutside.js +212 -10
- package/dist/_chunk/ariaHideOutside.js.map +1 -1
- package/dist/_chunk/ariaHideOutside.jsx +212 -10
- package/dist/_chunk/ariaHideOutside.jsx.map +1 -1
- package/dist/_chunk/autocomplete.js +26 -7
- package/dist/_chunk/autocomplete.js.map +1 -1
- package/dist/_chunk/autocomplete.jsx +26 -7
- package/dist/_chunk/autocomplete.jsx.map +1 -1
- package/dist/_chunk/breadcrumbs.js +17 -2
- package/dist/_chunk/breadcrumbs.js.map +1 -1
- package/dist/_chunk/breadcrumbs.jsx +17 -2
- package/dist/_chunk/breadcrumbs.jsx.map +1 -1
- package/dist/_chunk/button.js +53 -20
- package/dist/_chunk/button.js.map +1 -1
- package/dist/_chunk/button.jsx +53 -20
- package/dist/_chunk/button.jsx.map +1 -1
- package/dist/_chunk/calendar.js +341 -56
- package/dist/_chunk/calendar.js.map +1 -1
- package/dist/_chunk/calendar.jsx +341 -56
- package/dist/_chunk/calendar.jsx.map +1 -1
- package/dist/_chunk/checkbox.js +69 -26
- package/dist/_chunk/checkbox.js.map +1 -1
- package/dist/_chunk/checkbox.jsx +69 -26
- package/dist/_chunk/checkbox.jsx.map +1 -1
- package/dist/_chunk/color.js +307 -48
- package/dist/_chunk/color.js.map +1 -1
- package/dist/_chunk/color.jsx +307 -48
- package/dist/_chunk/color.jsx.map +1 -1
- package/dist/_chunk/combobox.js +193 -103
- package/dist/_chunk/combobox.js.map +1 -1
- package/dist/_chunk/combobox.jsx +193 -103
- package/dist/_chunk/combobox.jsx.map +1 -1
- package/dist/_chunk/constants.js +12 -0
- package/dist/_chunk/constants.js.map +1 -1
- package/dist/_chunk/constants.jsx +12 -0
- package/dist/_chunk/constants.jsx.map +1 -1
- package/dist/_chunk/createCollator.js +12 -0
- package/dist/_chunk/createCollator.js.map +1 -1
- package/dist/_chunk/createCollator.jsx +12 -0
- package/dist/_chunk/createCollator.jsx.map +1 -1
- package/dist/_chunk/createCollectionRowInteraction.js +50 -13
- package/dist/_chunk/createCollectionRowInteraction.js.map +1 -1
- package/dist/_chunk/createCollectionRowInteraction.jsx +50 -13
- package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -1
- package/dist/_chunk/createField.js +35 -25
- package/dist/_chunk/createField.js.map +1 -1
- package/dist/_chunk/createField.jsx +35 -25
- package/dist/_chunk/createField.jsx.map +1 -1
- package/dist/_chunk/createFocus.js +18 -5
- package/dist/_chunk/createFocus.js.map +1 -1
- package/dist/_chunk/createFocus.jsx +18 -5
- package/dist/_chunk/createFocus.jsx.map +1 -1
- package/dist/_chunk/createFocusRing.js +16 -7
- package/dist/_chunk/createFocusRing.js.map +1 -1
- package/dist/_chunk/createFocusRing.jsx +16 -7
- package/dist/_chunk/createFocusRing.jsx.map +1 -1
- package/dist/_chunk/createFocusWithin.js +16 -4
- package/dist/_chunk/createFocusWithin.js.map +1 -1
- package/dist/_chunk/createFocusWithin.jsx +16 -4
- package/dist/_chunk/createFocusWithin.jsx.map +1 -1
- package/dist/_chunk/createFocusable.js +39 -53
- package/dist/_chunk/createFocusable.js.map +1 -1
- package/dist/_chunk/createFocusable.jsx +39 -53
- package/dist/_chunk/createFocusable.jsx.map +1 -1
- package/dist/_chunk/createFormReset.js +24 -12
- package/dist/_chunk/createFormReset.js.map +1 -1
- package/dist/_chunk/createFormReset.jsx +24 -12
- package/dist/_chunk/createFormReset.jsx.map +1 -1
- package/dist/_chunk/createFormValidation.js +41 -17
- package/dist/_chunk/createFormValidation.js.map +1 -1
- package/dist/_chunk/createFormValidation.jsx +41 -17
- package/dist/_chunk/createFormValidation.jsx.map +1 -1
- package/dist/_chunk/createHover.js +56 -42
- package/dist/_chunk/createHover.js.map +1 -1
- package/dist/_chunk/createHover.jsx +56 -42
- package/dist/_chunk/createHover.jsx.map +1 -1
- package/dist/_chunk/createKeyboard.js +205 -0
- package/dist/_chunk/createKeyboard.js.map +1 -0
- package/dist/_chunk/createKeyboard.jsx +205 -0
- package/dist/_chunk/createKeyboard.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +17 -4
- package/dist/_chunk/createLabel.js.map +1 -1
- package/dist/_chunk/createLabel.jsx +17 -4
- package/dist/_chunk/createLabel.jsx.map +1 -1
- package/dist/_chunk/createLabels.js +14 -2
- package/dist/_chunk/createLabels.js.map +1 -1
- package/dist/_chunk/createLabels.jsx +14 -2
- package/dist/_chunk/createLabels.jsx.map +1 -1
- package/dist/_chunk/createLandmark.js +19 -3
- package/dist/_chunk/createLandmark.js.map +1 -1
- package/dist/_chunk/createLandmark.jsx +19 -3
- package/dist/_chunk/createLandmark.jsx.map +1 -1
- package/dist/_chunk/createLongPress.js +105 -0
- package/dist/_chunk/createLongPress.js.map +1 -0
- package/dist/_chunk/createLongPress.jsx +105 -0
- package/dist/_chunk/createLongPress.jsx.map +1 -0
- package/dist/_chunk/createOverlay.js +220 -111
- package/dist/_chunk/createOverlay.js.map +1 -1
- package/dist/_chunk/createOverlay.jsx +220 -111
- package/dist/_chunk/createOverlay.jsx.map +1 -1
- package/dist/_chunk/createOverlayTrigger.js +58 -0
- package/dist/_chunk/createOverlayTrigger.js.map +1 -0
- package/dist/_chunk/createOverlayTrigger.jsx +58 -0
- package/dist/_chunk/createOverlayTrigger.jsx.map +1 -0
- package/dist/_chunk/createPress.js +38 -28
- package/dist/_chunk/createPress.js.map +1 -1
- package/dist/_chunk/createPress.jsx +38 -28
- package/dist/_chunk/createPress.jsx.map +1 -1
- package/dist/_chunk/createProgressBar.js +17 -4
- package/dist/_chunk/createProgressBar.js.map +1 -1
- package/dist/_chunk/createProgressBar.jsx +17 -4
- package/dist/_chunk/createProgressBar.jsx.map +1 -1
- package/dist/_chunk/createSelectableItem.js +58 -20
- package/dist/_chunk/createSelectableItem.js.map +1 -1
- package/dist/_chunk/createSelectableItem.jsx +58 -20
- package/dist/_chunk/createSelectableItem.jsx.map +1 -1
- package/dist/_chunk/createSelectableList.js +776 -0
- package/dist/_chunk/createSelectableList.js.map +1 -0
- package/dist/_chunk/createSelectableList.jsx +776 -0
- package/dist/_chunk/createSelectableList.jsx.map +1 -0
- package/dist/_chunk/createStringFormatter.js +350 -5
- package/dist/_chunk/createStringFormatter.js.map +1 -1
- package/dist/_chunk/createStringFormatter.jsx +350 -5
- package/dist/_chunk/createStringFormatter.jsx.map +1 -1
- package/dist/_chunk/createToggle.js +68 -19
- package/dist/_chunk/createToggle.js.map +1 -1
- package/dist/_chunk/createToggle.jsx +68 -19
- package/dist/_chunk/createToggle.jsx.map +1 -1
- package/dist/_chunk/createTypeSelect.js +15 -3
- package/dist/_chunk/createTypeSelect.js.map +1 -1
- package/dist/_chunk/createTypeSelect.jsx +15 -3
- package/dist/_chunk/createTypeSelect.jsx.map +1 -1
- package/dist/_chunk/{visually-hidden.js → createVisuallyHidden.js} +16 -4
- package/dist/_chunk/createVisuallyHidden.js.map +1 -0
- package/dist/_chunk/{visually-hidden.jsx → createVisuallyHidden.jsx} +16 -4
- package/dist/_chunk/createVisuallyHidden.jsx.map +1 -0
- package/dist/_chunk/datepicker.js +687 -602
- package/dist/_chunk/datepicker.js.map +1 -1
- package/dist/_chunk/datepicker.jsx +687 -602
- package/dist/_chunk/datepicker.jsx.map +1 -1
- package/dist/_chunk/dialog.js +49 -19
- package/dist/_chunk/dialog.js.map +1 -1
- package/dist/_chunk/dialog.jsx +49 -19
- package/dist/_chunk/dialog.jsx.map +1 -1
- package/dist/_chunk/disclosure.js +48 -28
- package/dist/_chunk/disclosure.js.map +1 -1
- package/dist/_chunk/disclosure.jsx +48 -28
- package/dist/_chunk/disclosure.jsx.map +1 -1
- package/dist/_chunk/dnd.js +1340 -1172
- package/dist/_chunk/dnd.js.map +1 -1
- package/dist/_chunk/dnd.jsx +1340 -1172
- package/dist/_chunk/dnd.jsx.map +1 -1
- package/dist/_chunk/dom.js +1200 -0
- package/dist/_chunk/dom.js.map +1 -0
- package/dist/_chunk/dom.jsx +1200 -0
- package/dist/_chunk/dom.jsx.map +1 -0
- package/dist/_chunk/env.js +1 -57
- package/dist/_chunk/env.js.map +1 -1
- package/dist/_chunk/env.jsx +1 -57
- package/dist/_chunk/env.jsx.map +1 -1
- package/dist/_chunk/filterDOMProps.js +32 -7
- package/dist/_chunk/filterDOMProps.js.map +1 -1
- package/dist/_chunk/filterDOMProps.jsx +32 -7
- package/dist/_chunk/filterDOMProps.jsx.map +1 -1
- package/dist/_chunk/focus.js +570 -338
- package/dist/_chunk/focus.js.map +1 -1
- package/dist/_chunk/focus.jsx +570 -338
- package/dist/_chunk/focus.jsx.map +1 -1
- package/dist/_chunk/grid.js +62 -8
- package/dist/_chunk/grid.js.map +1 -1
- package/dist/_chunk/grid.jsx +62 -8
- package/dist/_chunk/grid.jsx.map +1 -1
- package/dist/_chunk/gridlist.js +192 -53
- package/dist/_chunk/gridlist.js.map +1 -1
- package/dist/_chunk/gridlist.jsx +192 -53
- package/dist/_chunk/gridlist.jsx.map +1 -1
- package/dist/_chunk/i18n.js +68 -1
- package/dist/_chunk/i18n.js.map +1 -1
- package/dist/_chunk/i18n.jsx +68 -1
- package/dist/_chunk/i18n.jsx.map +1 -1
- package/dist/_chunk/interactions.js +38 -102
- package/dist/_chunk/interactions.js.map +1 -1
- package/dist/_chunk/interactions.jsx +38 -100
- package/dist/_chunk/interactions.jsx.map +1 -1
- package/dist/_chunk/intl.js +280 -0
- package/dist/_chunk/intl.js.map +1 -0
- package/dist/_chunk/intl.jsx +280 -0
- package/dist/_chunk/intl.jsx.map +1 -0
- package/dist/_chunk/link.js +15 -4
- package/dist/_chunk/link.js.map +1 -1
- package/dist/_chunk/link.jsx +15 -4
- package/dist/_chunk/link.jsx.map +1 -1
- package/dist/_chunk/listbox.js +99 -175
- package/dist/_chunk/listbox.js.map +1 -1
- package/dist/_chunk/listbox.jsx +99 -175
- package/dist/_chunk/listbox.jsx.map +1 -1
- package/dist/_chunk/locale.js +58 -12
- package/dist/_chunk/locale.js.map +1 -1
- package/dist/_chunk/locale.jsx +57 -11
- package/dist/_chunk/locale.jsx.map +1 -1
- package/dist/_chunk/menu.js +298 -57
- package/dist/_chunk/menu.js.map +1 -1
- package/dist/_chunk/menu.jsx +298 -57
- package/dist/_chunk/menu.jsx.map +1 -1
- package/dist/_chunk/mergeProps.js +216 -0
- package/dist/_chunk/mergeProps.js.map +1 -0
- package/dist/_chunk/mergeProps.jsx +216 -0
- package/dist/_chunk/mergeProps.jsx.map +1 -0
- package/dist/_chunk/meter.js +16 -4
- package/dist/_chunk/meter.js.map +1 -1
- package/dist/_chunk/meter.jsx +16 -4
- package/dist/_chunk/meter.jsx.map +1 -1
- package/dist/_chunk/numberfield.js +167 -22
- package/dist/_chunk/numberfield.js.map +1 -1
- package/dist/_chunk/numberfield.jsx +167 -22
- package/dist/_chunk/numberfield.jsx.map +1 -1
- package/dist/_chunk/overlays.js +87 -74
- package/dist/_chunk/overlays.js.map +1 -1
- package/dist/_chunk/overlays.jsx +71 -57
- package/dist/_chunk/overlays.jsx.map +1 -1
- package/dist/_chunk/owner.js +23 -0
- package/dist/_chunk/owner.js.map +1 -0
- package/dist/_chunk/owner.jsx +23 -0
- package/dist/_chunk/owner.jsx.map +1 -0
- package/dist/_chunk/popover.js +180 -42
- package/dist/_chunk/popover.js.map +1 -1
- package/dist/_chunk/popover.jsx +180 -42
- package/dist/_chunk/popover.jsx.map +1 -1
- package/dist/_chunk/radio.js +92 -32
- package/dist/_chunk/radio.js.map +1 -1
- package/dist/_chunk/radio.jsx +92 -32
- package/dist/_chunk/radio.jsx.map +1 -1
- package/dist/_chunk/reactivity.js.map +1 -1
- package/dist/_chunk/reactivity.jsx.map +1 -1
- package/dist/_chunk/refs.js +41 -0
- package/dist/_chunk/refs.js.map +1 -0
- package/dist/_chunk/refs.jsx +41 -0
- package/dist/_chunk/refs.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +69 -3
- package/dist/_chunk/searchfield.js.map +1 -1
- package/dist/_chunk/searchfield.jsx +69 -3
- package/dist/_chunk/searchfield.jsx.map +1 -1
- package/dist/_chunk/select.js +226 -80
- package/dist/_chunk/select.js.map +1 -1
- package/dist/_chunk/select.jsx +162 -70
- package/dist/_chunk/select.jsx.map +1 -1
- package/dist/_chunk/selection.js +20 -638
- package/dist/_chunk/selection.js.map +1 -1
- package/dist/_chunk/selection.jsx +20 -638
- package/dist/_chunk/selection.jsx.map +1 -1
- package/dist/_chunk/separator.js +12 -0
- package/dist/_chunk/separator.js.map +1 -1
- package/dist/_chunk/separator.jsx +12 -0
- package/dist/_chunk/separator.jsx.map +1 -1
- package/dist/_chunk/slider.js +25 -16
- package/dist/_chunk/slider.js.map +1 -1
- package/dist/_chunk/slider.jsx +25 -16
- package/dist/_chunk/slider.jsx.map +1 -1
- package/dist/_chunk/spinbutton.js +52 -42
- package/dist/_chunk/spinbutton.js.map +1 -1
- package/dist/_chunk/spinbutton.jsx +52 -42
- package/dist/_chunk/spinbutton.jsx.map +1 -1
- package/dist/_chunk/steplist.js +14 -1
- package/dist/_chunk/steplist.js.map +1 -1
- package/dist/_chunk/steplist.jsx +14 -1
- package/dist/_chunk/steplist.jsx.map +1 -1
- package/dist/_chunk/switch.js +21 -3
- package/dist/_chunk/switch.js.map +1 -1
- package/dist/_chunk/switch.jsx +21 -3
- package/dist/_chunk/switch.jsx.map +1 -1
- package/dist/_chunk/table.js +666 -88
- package/dist/_chunk/table.js.map +1 -1
- package/dist/_chunk/table.jsx +666 -88
- package/dist/_chunk/table.jsx.map +1 -1
- package/dist/_chunk/tabs.js +115 -17
- package/dist/_chunk/tabs.js.map +1 -1
- package/dist/_chunk/tabs.jsx +115 -17
- package/dist/_chunk/tabs.jsx.map +1 -1
- package/dist/_chunk/tag.js +240 -39
- package/dist/_chunk/tag.js.map +1 -1
- package/dist/_chunk/tag.jsx +240 -39
- package/dist/_chunk/tag.jsx.map +1 -1
- package/dist/_chunk/textfield.js +83 -12
- package/dist/_chunk/textfield.js.map +1 -1
- package/dist/_chunk/textfield.jsx +83 -12
- package/dist/_chunk/textfield.jsx.map +1 -1
- package/dist/_chunk/toast.js +61 -28
- package/dist/_chunk/toast.js.map +1 -1
- package/dist/_chunk/toast.jsx +61 -28
- package/dist/_chunk/toast.jsx.map +1 -1
- package/dist/_chunk/tokenfield.js +567 -0
- package/dist/_chunk/tokenfield.js.map +1 -0
- package/dist/_chunk/tokenfield.jsx +567 -0
- package/dist/_chunk/tokenfield.jsx.map +1 -0
- package/dist/_chunk/toolbar.js +25 -8
- package/dist/_chunk/toolbar.js.map +1 -1
- package/dist/_chunk/toolbar.jsx +25 -8
- package/dist/_chunk/toolbar.jsx.map +1 -1
- package/dist/_chunk/tooltip.js +379 -6
- package/dist/_chunk/tooltip.js.map +1 -1
- package/dist/_chunk/tooltip.jsx +379 -6
- package/dist/_chunk/tooltip.jsx.map +1 -1
- package/dist/_chunk/tree.js +280 -69
- package/dist/_chunk/tree.js.map +1 -1
- package/dist/_chunk/tree.jsx +280 -69
- package/dist/_chunk/tree.jsx.map +1 -1
- package/dist/_chunk/utils.js +192 -150
- package/dist/_chunk/utils.js.map +1 -1
- package/dist/_chunk/utils.jsx +192 -150
- package/dist/_chunk/utils.jsx.map +1 -1
- package/dist/_chunk/virtualFocus.js +54 -0
- package/dist/_chunk/virtualFocus.js.map +1 -0
- package/dist/_chunk/virtualFocus.jsx +54 -0
- package/dist/_chunk/virtualFocus.jsx.map +1 -0
- package/dist/_chunk/virtualizer.js +202 -0
- package/dist/_chunk/virtualizer.js.map +1 -0
- package/dist/_chunk/virtualizer.jsx +202 -0
- package/dist/_chunk/virtualizer.jsx.map +1 -0
- package/dist/actiongroup/createActionGroup.d.ts +2 -1
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +1 -9
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/intl/index.d.ts +13 -0
- package/dist/autocomplete/intl/index.d.ts.map +1 -0
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +3 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/intl/index.d.ts +13 -0
- package/dist/breadcrumbs/intl/index.d.ts.map +1 -0
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts.map +1 -1
- package/dist/button/createToggleButtonGroup.d.ts +1 -1
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/types.d.ts +14 -0
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +1 -7
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +0 -6
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +1 -7
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createCalendarMonthPicker.d.ts +0 -8
- package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -1
- package/dist/calendar/createCalendarYearPicker.d.ts +0 -8
- package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +13 -7
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +2 -6
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts.map +1 -1
- package/dist/calendar/utils.d.ts.map +1 -1
- package/dist/checkbox/createCheckbox.d.ts +2 -1
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +1 -9
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +0 -8
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/collections/index.d.ts +1 -1
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +18 -2
- package/dist/collections/index.js.map +1 -1
- package/dist/collections/index.jsx +18 -2
- package/dist/collections/index.jsx.map +1 -1
- package/dist/color/createColorArea.d.ts +2 -7
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +2 -7
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +1 -6
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +1 -6
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +1 -6
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/intl/index.d.ts.map +1 -1
- package/dist/color/types.d.ts +47 -1
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +17 -8
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/intl/generated-locales.d.ts +3 -0
- package/dist/combobox/intl/generated-locales.d.ts.map +1 -1
- package/dist/combobox/intl/index.d.ts +3 -2
- package/dist/combobox/intl/index.d.ts.map +1 -1
- package/dist/datepicker/createDateField.d.ts +0 -10
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +0 -16
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
- package/dist/datepicker/createDateRangePicker.d.ts +0 -21
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +0 -9
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createDisplayNames.d.ts +1 -9
- package/dist/datepicker/createDisplayNames.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/intl.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +2 -4
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +14 -0
- package/dist/dialog/types.d.ts.map +1 -1
- package/dist/disclosure/createDisclosure.d.ts +1 -8
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +3 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/dnd/DragManager.d.ts +1 -16
- package/dist/dnd/DragManager.d.ts.map +1 -1
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +1 -7
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +1 -7
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +2 -7
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +1 -7
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDropIndicator.d.ts +27 -0
- package/dist/dnd/createDropIndicator.d.ts.map +1 -0
- package/dist/dnd/createDroppableCollection.d.ts +6 -8
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +12 -10
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +3 -1
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +2 -2
- package/dist/dnd/index.jsx +2 -2
- package/dist/dnd/intl/index.d.ts +6 -4
- package/dist/dnd/intl/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +20 -1
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +4 -0
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +9 -5
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts +3 -0
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts +3 -0
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createHasTabbableChild.d.ts +13 -0
- package/dist/focus/createHasTabbableChild.d.ts.map +1 -0
- package/dist/focus/createVirtualFocus.d.ts +4 -1
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.js +3 -2
- package/dist/focus/index.jsx +3 -2
- package/dist/focus/virtualFocus.d.ts +1 -1
- package/dist/form/createFormReset.d.ts +1 -7
- package/dist/form/createFormReset.d.ts.map +1 -1
- package/dist/form/createFormValidation.d.ts +1 -9
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts.map +1 -1
- package/dist/grid/createGrid.d.ts +1 -5
- package/dist/grid/createGrid.d.ts.map +1 -1
- package/dist/grid/createGridCell.d.ts +1 -5
- package/dist/grid/createGridCell.d.ts.map +1 -1
- package/dist/grid/createGridRow.d.ts +1 -5
- package/dist/grid/createGridRow.d.ts.map +1 -1
- package/dist/grid/index.d.ts +2 -2
- package/dist/grid/intl/index.d.ts +18 -0
- package/dist/grid/intl/index.d.ts.map +1 -0
- package/dist/grid/types.d.ts +25 -2
- package/dist/grid/types.d.ts.map +1 -1
- package/dist/gridlist/createGridList.d.ts +3 -5
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +1 -5
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSection.d.ts +0 -4
- package/dist/gridlist/createGridListSection.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +1 -5
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/intl/index.d.ts +14 -0
- package/dist/gridlist/intl/index.d.ts.map +1 -0
- package/dist/gridlist/types.d.ts +56 -2
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/compileIcu.d.ts +24 -0
- package/dist/i18n/compileIcu.d.ts.map +1 -0
- package/dist/i18n/createCollator.d.ts +0 -7
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts +0 -7
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts +0 -7
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createListFormatter.d.ts +9 -0
- package/dist/i18n/createListFormatter.d.ts.map +1 -0
- package/dist/i18n/createNumberFormatter.d.ts +0 -7
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +14 -4
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.jsx +2 -2
- package/dist/i18n/locale.d.ts +2 -8
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts +0 -7
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -21
- package/dist/index.jsx +27 -21
- package/dist/interactions/FocusableProvider.d.ts +3 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -1
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createContextMenu.d.ts +24 -0
- package/dist/interactions/createContextMenu.d.ts.map +1 -0
- package/dist/interactions/createFocus.d.ts +3 -2
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +2 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -6
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +2 -6
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +3 -10
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +12 -10
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +12 -3
- package/dist/interactions/createKeyboard.d.ts.map +1 -1
- package/dist/interactions/createKeyboardShortcutHandler.d.ts +24 -0
- package/dist/interactions/createKeyboardShortcutHandler.d.ts.map +1 -0
- package/dist/interactions/createLongPress.d.ts +4 -7
- package/dist/interactions/createLongPress.d.ts.map +1 -1
- package/dist/interactions/createMove.d.ts +1 -6
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +2 -7
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +1 -1
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +5 -3
- package/dist/interactions/index.jsx +5 -3
- package/dist/label/createField.d.ts +7 -1
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +1 -1
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +0 -7
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/landmark/createLandmark.d.ts +4 -1
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/link/createLink.d.ts +1 -1
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/listbox/createListBox.d.ts +8 -7
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +7 -1
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -13
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/menu/createMenu.d.ts +3 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +2 -1
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +24 -20
- package/dist/menu/createMenuTrigger.d.ts.map +1 -1
- package/dist/menu/index.d.ts +1 -1
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/intl/index.d.ts +4 -0
- package/dist/menu/intl/index.d.ts.map +1 -0
- package/dist/meter/createMeter.d.ts +2 -1
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/numberfield/createNumberField.d.ts +29 -6
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/overlays/ariaHideOutside.d.ts +0 -4
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createInteractOutside.d.ts +2 -5
- package/dist/overlays/createInteractOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -6
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -5
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +2 -6
- package/dist/overlays/createOverlayTrigger.d.ts.map +1 -1
- package/dist/overlays/createPreventScroll.d.ts +0 -4
- package/dist/overlays/createPreventScroll.d.ts.map +1 -1
- package/dist/overlays/index.d.ts +1 -0
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +3 -2
- package/dist/overlays/index.jsx +3 -2
- package/dist/overlays/intl/index.d.ts +13 -0
- package/dist/overlays/intl/index.d.ts.map +1 -0
- package/dist/popover/calculatePosition.d.ts +1 -1
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +1 -7
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +6 -7
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/progress/createProgressBar.d.ts +2 -10
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/radio/createRadio.d.ts +8 -1
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +1 -9
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +1 -1
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/intl/index.d.ts +13 -0
- package/dist/searchfield/intl/index.d.ts.map +1 -0
- package/dist/select/createHiddenSelect.d.ts +3 -10
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +10 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -1
- package/dist/selection/ListKeyboardDelegate.d.ts +2 -1
- package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -1
- package/dist/selection/constants.d.ts.map +1 -1
- package/dist/selection/createCollectionRowInteraction.d.ts +12 -1
- package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -1
- package/dist/selection/createScrollIntoViewOnFocus.d.ts +0 -11
- package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -1
- package/dist/selection/createSelectableCollection.d.ts +1 -23
- package/dist/selection/createSelectableCollection.d.ts.map +1 -1
- package/dist/selection/createSelectableItem.d.ts +2 -29
- package/dist/selection/createSelectableItem.d.ts.map +1 -1
- package/dist/selection/createSelectableList.d.ts +4 -17
- package/dist/selection/createSelectableList.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -8
- package/dist/selection/createTypeSelect.d.ts.map +1 -1
- package/dist/selection/index.js +3 -2
- package/dist/selection/index.jsx +3 -2
- package/dist/selection/selectItem.d.ts.map +1 -1
- package/dist/selection/utils.d.ts +1 -1
- package/dist/selection/utils.d.ts.map +1 -1
- package/dist/separator/createSeparator.d.ts +3 -1
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/slider/createSlider.d.ts +1 -6
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/spinbutton/createSpinButton.d.ts +0 -9
- package/dist/spinbutton/createSpinButton.d.ts.map +1 -1
- package/dist/spinbutton/index.d.ts +2 -2
- package/dist/spinbutton/index.d.ts.map +1 -1
- package/dist/spinbutton/intl.d.ts.map +1 -1
- package/dist/ssr/index.d.ts +3 -9
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +47 -26
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/index.jsx +47 -26
- package/dist/ssr/index.jsx.map +1 -1
- package/dist/steplist/createStepList.d.ts +1 -1
- package/dist/steplist/createStepList.d.ts.map +1 -1
- package/dist/switch/createSwitch.d.ts +2 -1
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/table/createTable.d.ts +1 -5
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +1 -5
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +1 -5
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +2 -8
- package/dist/table/createTableColumnResize.d.ts.map +1 -1
- package/dist/table/createTableHeaderRow.d.ts +1 -5
- package/dist/table/createTableHeaderRow.d.ts.map +1 -1
- package/dist/table/createTableRow.d.ts +1 -5
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +1 -5
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +1 -5
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +1 -5
- package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
- package/dist/table/index.d.ts +2 -2
- package/dist/table/intl/index.d.ts +23 -0
- package/dist/table/intl/index.d.ts.map +1 -0
- package/dist/table/types.d.ts +44 -2
- package/dist/table/types.d.ts.map +1 -1
- package/dist/table/utils.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +5 -9
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tag/createTag.d.ts +4 -8
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +0 -9
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/intl/index.d.ts +14 -0
- package/dist/tag/intl/index.d.ts.map +1 -0
- package/dist/textfield/createTextField.d.ts +6 -8
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +1 -8
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +7 -18
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/intl/index.d.ts +14 -0
- package/dist/toast/intl/index.d.ts.map +1 -0
- package/dist/toggle/createToggle.d.ts +8 -1
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/tokenfield/createToken.d.ts +15 -0
- package/dist/tokenfield/createToken.d.ts.map +1 -0
- package/dist/tokenfield/createTokenField.d.ts +52 -0
- package/dist/tokenfield/createTokenField.d.ts.map +1 -0
- package/dist/tokenfield/index.d.ts +3 -0
- package/dist/tokenfield/index.d.ts.map +1 -0
- package/dist/tokenfield/index.js +2 -0
- package/dist/tokenfield/index.jsx +2 -0
- package/dist/toolbar/createToolbar.d.ts +1 -1
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/tooltip/createPreviewTrigger.d.ts +23 -0
- package/dist/tooltip/createPreviewTrigger.d.ts.map +1 -0
- package/dist/tooltip/createSafeArea.d.ts +20 -0
- package/dist/tooltip/createSafeArea.d.ts.map +1 -0
- package/dist/tooltip/createTooltip.d.ts +1 -1
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +1 -9
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -0
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +2 -2
- package/dist/tooltip/index.jsx +2 -2
- package/dist/tooltip/intl/index.d.ts +4 -0
- package/dist/tooltip/intl/index.d.ts.map +1 -0
- package/dist/tree/createTree.d.ts +1 -5
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +1 -5
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +1 -5
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/intl/index.d.ts +14 -0
- package/dist/tree/intl/index.d.ts.map +1 -0
- package/dist/tree/types.d.ts +35 -2
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/ShadowTreeWalker.d.ts +30 -0
- package/dist/utils/ShadowTreeWalker.d.ts.map +1 -0
- package/dist/utils/animation.d.ts +1 -29
- package/dist/utils/animation.d.ts.map +1 -1
- package/dist/utils/capture.d.ts +14 -0
- package/dist/utils/capture.d.ts.map +1 -0
- package/dist/utils/createDescription.d.ts +1 -25
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +45 -11
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/domAttrs.d.ts +16 -0
- package/dist/utils/domAttrs.d.ts.map +1 -0
- package/dist/utils/env.d.ts +2 -0
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/events.d.ts +0 -4
- package/dist/utils/events.d.ts.map +1 -1
- package/dist/utils/filterDOMProps.d.ts +0 -6
- package/dist/utils/filterDOMProps.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +19 -6
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/getMetaValue.d.ts +13 -0
- package/dist/utils/getMetaValue.d.ts.map +1 -0
- package/dist/utils/getNonce.d.ts +9 -0
- package/dist/utils/getNonce.d.ts.map +1 -0
- package/dist/utils/globalListeners.d.ts +0 -6
- package/dist/utils/globalListeners.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +7 -4
- package/dist/utils/index.jsx +7 -4
- package/dist/utils/keyboard.d.ts +0 -4
- package/dist/utils/keyboard.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts +5 -2
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/owner.d.ts +14 -0
- package/dist/utils/owner.d.ts.map +1 -0
- package/dist/utils/platform.d.ts +0 -4
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +2 -0
- package/dist/utils/reactivity.d.ts.map +1 -1
- package/dist/utils/refs.d.ts +20 -0
- package/dist/utils/refs.d.ts.map +1 -0
- package/dist/utils/runAfterTransition.d.ts +2 -0
- package/dist/utils/runAfterTransition.d.ts.map +1 -0
- package/dist/utils/scrollIntoView.d.ts +0 -4
- package/dist/utils/scrollIntoView.d.ts.map +1 -1
- package/dist/utils/splitProps.d.ts +17 -0
- package/dist/utils/splitProps.d.ts.map +1 -0
- package/dist/utils/textSelection.d.ts +0 -8
- package/dist/utils/textSelection.d.ts.map +1 -1
- package/dist/virtualizer/ScrollView.d.ts +38 -0
- package/dist/virtualizer/ScrollView.d.ts.map +1 -0
- package/dist/virtualizer/index.d.ts +3 -0
- package/dist/virtualizer/index.d.ts.map +1 -0
- package/dist/virtualizer/index.js +2 -0
- package/dist/virtualizer/index.jsx +2 -0
- package/dist/virtualizer/utils.d.ts +10 -0
- package/dist/virtualizer/utils.d.ts.map +1 -0
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -9
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.js +1 -1
- package/dist/visually-hidden/index.jsx +1 -1
- package/package.json +30 -11
- package/src/actiongroup/createActionGroup.ts +49 -27
- package/src/autocomplete/createAutocomplete.ts +32 -5
- package/src/autocomplete/intl/ar-AE.json +3 -0
- package/src/autocomplete/intl/bg-BG.json +3 -0
- package/src/autocomplete/intl/cs-CZ.json +3 -0
- package/src/autocomplete/intl/da-DK.json +3 -0
- package/src/autocomplete/intl/de-DE.json +3 -0
- package/src/autocomplete/intl/el-GR.json +3 -0
- package/src/autocomplete/intl/en-US.json +3 -0
- package/src/autocomplete/intl/es-ES.json +3 -0
- package/src/autocomplete/intl/et-EE.json +3 -0
- package/src/autocomplete/intl/fi-FI.json +3 -0
- package/src/autocomplete/intl/fr-FR.json +3 -0
- package/src/autocomplete/intl/he-IL.json +3 -0
- package/src/autocomplete/intl/hr-HR.json +3 -0
- package/src/autocomplete/intl/hu-HU.json +3 -0
- package/src/autocomplete/intl/index.ts +122 -0
- package/src/autocomplete/intl/it-IT.json +3 -0
- package/src/autocomplete/intl/ja-JP.json +3 -0
- package/src/autocomplete/intl/ko-KR.json +3 -0
- package/src/autocomplete/intl/lt-LT.json +3 -0
- package/src/autocomplete/intl/lv-LV.json +3 -0
- package/src/autocomplete/intl/nb-NO.json +3 -0
- package/src/autocomplete/intl/nl-NL.json +3 -0
- package/src/autocomplete/intl/pl-PL.json +3 -0
- package/src/autocomplete/intl/pt-BR.json +3 -0
- package/src/autocomplete/intl/pt-PT.json +3 -0
- package/src/autocomplete/intl/ro-RO.json +3 -0
- package/src/autocomplete/intl/ru-RU.json +3 -0
- package/src/autocomplete/intl/sk-SK.json +3 -0
- package/src/autocomplete/intl/sl-SI.json +3 -0
- package/src/autocomplete/intl/sr-SP.json +3 -0
- package/src/autocomplete/intl/sv-SE.json +3 -0
- package/src/autocomplete/intl/tr-TR.json +3 -0
- package/src/autocomplete/intl/uk-UA.json +3 -0
- package/src/autocomplete/intl/zh-CN.json +3 -0
- package/src/autocomplete/intl/zh-TW.json +3 -0
- package/src/breadcrumbs/createBreadcrumbs.ts +18 -1
- package/src/breadcrumbs/intl/ar-AE.json +3 -0
- package/src/breadcrumbs/intl/bg-BG.json +3 -0
- package/src/breadcrumbs/intl/cs-CZ.json +3 -0
- package/src/breadcrumbs/intl/da-DK.json +3 -0
- package/src/breadcrumbs/intl/de-DE.json +3 -0
- package/src/breadcrumbs/intl/el-GR.json +3 -0
- package/src/breadcrumbs/intl/en-US.json +3 -0
- package/src/breadcrumbs/intl/es-ES.json +3 -0
- package/src/breadcrumbs/intl/et-EE.json +3 -0
- package/src/breadcrumbs/intl/fi-FI.json +3 -0
- package/src/breadcrumbs/intl/fr-FR.json +3 -0
- package/src/breadcrumbs/intl/he-IL.json +3 -0
- package/src/breadcrumbs/intl/hr-HR.json +3 -0
- package/src/breadcrumbs/intl/hu-HU.json +3 -0
- package/src/breadcrumbs/intl/index.ts +122 -0
- package/src/breadcrumbs/intl/it-IT.json +3 -0
- package/src/breadcrumbs/intl/ja-JP.json +3 -0
- package/src/breadcrumbs/intl/ko-KR.json +3 -0
- package/src/breadcrumbs/intl/lt-LT.json +3 -0
- package/src/breadcrumbs/intl/lv-LV.json +3 -0
- package/src/breadcrumbs/intl/nb-NO.json +3 -0
- package/src/breadcrumbs/intl/nl-NL.json +3 -0
- package/src/breadcrumbs/intl/pl-PL.json +3 -0
- package/src/breadcrumbs/intl/pt-BR.json +3 -0
- package/src/breadcrumbs/intl/pt-PT.json +3 -0
- package/src/breadcrumbs/intl/ro-RO.json +3 -0
- package/src/breadcrumbs/intl/ru-RU.json +3 -0
- package/src/breadcrumbs/intl/sk-SK.json +3 -0
- package/src/breadcrumbs/intl/sl-SI.json +3 -0
- package/src/breadcrumbs/intl/sr-SP.json +3 -0
- package/src/breadcrumbs/intl/sv-SE.json +3 -0
- package/src/breadcrumbs/intl/tr-TR.json +3 -0
- package/src/breadcrumbs/intl/uk-UA.json +3 -0
- package/src/breadcrumbs/intl/zh-CN.json +3 -0
- package/src/breadcrumbs/intl/zh-TW.json +3 -0
- package/src/button/createButton.ts +15 -1
- package/src/button/createToggleButton.ts +18 -5
- package/src/button/createToggleButtonGroup.ts +23 -8
- package/src/button/types.ts +16 -0
- package/src/calendar/createCalendar.ts +22 -3
- package/src/calendar/createCalendarCell.ts +104 -15
- package/src/calendar/createCalendarGrid.ts +37 -13
- package/src/calendar/createCalendarMonthPicker.ts +14 -0
- package/src/calendar/createCalendarYearPicker.ts +14 -0
- package/src/calendar/createRangeCalendar.ts +124 -1
- package/src/calendar/createRangeCalendarCell.ts +179 -40
- package/src/calendar/intl/index.ts +37 -0
- package/src/calendar/utils.ts +14 -0
- package/src/checkbox/createCheckbox.ts +32 -17
- package/src/checkbox/createCheckboxGroup.ts +31 -13
- package/src/checkbox/createCheckboxGroupItem.ts +15 -1
- package/src/collections/index.ts +21 -3
- package/src/color/createColorArea.ts +226 -29
- package/src/color/createColorField.ts +98 -22
- package/src/color/createColorSlider.ts +24 -3
- package/src/color/createColorSwatch.ts +18 -1
- package/src/color/createColorWheel.ts +27 -5
- package/src/color/intl/index.ts +35 -0
- package/src/color/types.ts +47 -1
- package/src/combobox/createComboBox.ts +303 -152
- package/src/combobox/intl/generated-locales.ts +38 -1
- package/src/combobox/intl/index.ts +38 -2
- package/src/datepicker/createDateField.ts +38 -22
- package/src/datepicker/createDatePicker.ts +14 -0
- package/src/datepicker/createDatePickerGroup.ts +24 -12
- package/src/datepicker/createDateRangePicker.ts +14 -0
- package/src/datepicker/createDateSegment.ts +110 -46
- package/src/datepicker/createDisplayNames.ts +16 -1
- package/src/datepicker/createTimeField.ts +15 -5
- package/src/datepicker/intl.ts +623 -544
- package/src/dialog/createDialog.ts +57 -30
- package/src/dialog/types.ts +14 -0
- package/src/disclosure/createDisclosure.ts +28 -6
- package/src/disclosure/createDisclosureGroup.ts +3 -4
- package/src/dnd/DragManager.ts +60 -9
- package/src/dnd/DropTargetKeyboardNavigation.ts +8 -6
- package/src/dnd/createDrag.ts +18 -1
- package/src/dnd/createDraggableCollection.ts +96 -32
- package/src/dnd/createDraggableItem.ts +73 -31
- package/src/dnd/createDrop.ts +18 -1
- package/src/dnd/createDropIndicator.ts +92 -0
- package/src/dnd/createDroppableCollection.ts +113 -48
- package/src/dnd/createDroppableItem.ts +161 -13
- package/src/dnd/index.ts +3 -0
- package/src/dnd/intl/index.ts +77 -66
- package/src/dnd/types.ts +20 -1
- package/src/dnd/utils.ts +19 -0
- package/src/focus/FocusScope.tsx +542 -157
- package/src/focus/createAutoFocus.ts +94 -68
- package/src/focus/createFocusRestore.ts +16 -12
- package/src/focus/createHasTabbableChild.ts +78 -0
- package/src/focus/createVirtualFocus.ts +21 -5
- package/src/focus/virtualFocus.ts +1 -1
- package/src/form/createFormReset.ts +40 -17
- package/src/form/createFormValidation.ts +128 -86
- package/src/grid/GridKeyboardDelegate.ts +14 -0
- package/src/grid/createGrid.ts +17 -2
- package/src/grid/createGridCell.ts +17 -2
- package/src/grid/createGridRow.ts +17 -2
- package/src/grid/index.ts +2 -2
- package/src/grid/intl/ar-AE.json +8 -0
- package/src/grid/intl/bg-BG.json +8 -0
- package/src/grid/intl/cs-CZ.json +8 -0
- package/src/grid/intl/da-DK.json +8 -0
- package/src/grid/intl/de-DE.json +8 -0
- package/src/grid/intl/el-GR.json +8 -0
- package/src/grid/intl/en-US.json +8 -0
- package/src/grid/intl/es-ES.json +8 -0
- package/src/grid/intl/et-EE.json +8 -0
- package/src/grid/intl/fi-FI.json +8 -0
- package/src/grid/intl/fr-FR.json +8 -0
- package/src/grid/intl/he-IL.json +8 -0
- package/src/grid/intl/hr-HR.json +8 -0
- package/src/grid/intl/hu-HU.json +8 -0
- package/src/grid/intl/index.ts +127 -0
- package/src/grid/intl/it-IT.json +8 -0
- package/src/grid/intl/ja-JP.json +8 -0
- package/src/grid/intl/ko-KR.json +8 -0
- package/src/grid/intl/lt-LT.json +8 -0
- package/src/grid/intl/lv-LV.json +8 -0
- package/src/grid/intl/nb-NO.json +8 -0
- package/src/grid/intl/nl-NL.json +8 -0
- package/src/grid/intl/pl-PL.json +8 -0
- package/src/grid/intl/pt-BR.json +8 -0
- package/src/grid/intl/pt-PT.json +8 -0
- package/src/grid/intl/ro-RO.json +8 -0
- package/src/grid/intl/ru-RU.json +8 -0
- package/src/grid/intl/sk-SK.json +8 -0
- package/src/grid/intl/sl-SI.json +8 -0
- package/src/grid/intl/sr-SP.json +8 -0
- package/src/grid/intl/sv-SE.json +8 -0
- package/src/grid/intl/tr-TR.json +8 -0
- package/src/grid/intl/uk-UA.json +8 -0
- package/src/grid/intl/zh-CN.json +8 -0
- package/src/grid/intl/zh-TW.json +8 -0
- package/src/grid/types.ts +25 -2
- package/src/gridlist/createGridList.ts +172 -42
- package/src/gridlist/createGridListItem.ts +51 -13
- package/src/gridlist/createGridListSection.ts +14 -0
- package/src/gridlist/createGridListSelectionCheckbox.ts +31 -4
- package/src/gridlist/intl/ar-AE.json +4 -0
- package/src/gridlist/intl/bg-BG.json +4 -0
- package/src/gridlist/intl/cs-CZ.json +4 -0
- package/src/gridlist/intl/da-DK.json +4 -0
- package/src/gridlist/intl/de-DE.json +4 -0
- package/src/gridlist/intl/el-GR.json +4 -0
- package/src/gridlist/intl/en-US.json +4 -0
- package/src/gridlist/intl/es-ES.json +4 -0
- package/src/gridlist/intl/et-EE.json +4 -0
- package/src/gridlist/intl/fi-FI.json +4 -0
- package/src/gridlist/intl/fr-FR.json +4 -0
- package/src/gridlist/intl/he-IL.json +4 -0
- package/src/gridlist/intl/hr-HR.json +4 -0
- package/src/gridlist/intl/hu-HU.json +4 -0
- package/src/gridlist/intl/index.ts +123 -0
- package/src/gridlist/intl/it-IT.json +4 -0
- package/src/gridlist/intl/ja-JP.json +4 -0
- package/src/gridlist/intl/ko-KR.json +4 -0
- package/src/gridlist/intl/lt-LT.json +4 -0
- package/src/gridlist/intl/lv-LV.json +4 -0
- package/src/gridlist/intl/nb-NO.json +4 -0
- package/src/gridlist/intl/nl-NL.json +4 -0
- package/src/gridlist/intl/pl-PL.json +4 -0
- package/src/gridlist/intl/pt-BR.json +4 -0
- package/src/gridlist/intl/pt-PT.json +4 -0
- package/src/gridlist/intl/ro-RO.json +4 -0
- package/src/gridlist/intl/ru-RU.json +4 -0
- package/src/gridlist/intl/sk-SK.json +4 -0
- package/src/gridlist/intl/sl-SI.json +4 -0
- package/src/gridlist/intl/sr-SP.json +4 -0
- package/src/gridlist/intl/sv-SE.json +4 -0
- package/src/gridlist/intl/tr-TR.json +4 -0
- package/src/gridlist/intl/uk-UA.json +4 -0
- package/src/gridlist/intl/zh-CN.json +4 -0
- package/src/gridlist/intl/zh-TW.json +4 -0
- package/src/gridlist/types.ts +54 -2
- package/src/i18n/compileIcu.ts +440 -0
- package/src/i18n/createCollator.ts +14 -0
- package/src/i18n/createDateFormatter.ts +14 -0
- package/src/i18n/createFilter.ts +14 -0
- package/src/i18n/createListFormatter.ts +38 -0
- package/src/i18n/createNumberFormatter.ts +14 -0
- package/src/i18n/createStringFormatter.ts +64 -8
- package/src/i18n/index.ts +3 -0
- package/src/i18n/locale.tsx +60 -19
- package/src/i18n/utils.ts +14 -0
- package/src/index.ts +49 -1
- package/src/interactions/FocusableProvider.tsx +28 -11
- package/src/interactions/PressEvent.ts +16 -1
- package/src/interactions/createContextMenu.ts +108 -0
- package/src/interactions/createFocus.ts +26 -6
- package/src/interactions/createFocusRing.ts +28 -13
- package/src/interactions/createFocusWithin.ts +23 -3
- package/src/interactions/createFocusable.ts +45 -28
- package/src/interactions/createHover.ts +102 -81
- package/src/interactions/createInteractionModality.ts +135 -45
- package/src/interactions/createKeyboard.ts +85 -9
- package/src/interactions/createKeyboardShortcutHandler.ts +157 -0
- package/src/interactions/createLongPress.ts +31 -9
- package/src/interactions/createMove.ts +24 -3
- package/src/interactions/createPress.ts +85 -41
- package/src/interactions/index.ts +1 -0
- package/src/label/createField.ts +58 -63
- package/src/label/createLabel.ts +21 -4
- package/src/label/createLabels.ts +25 -1
- package/src/landmark/createLandmark.ts +27 -4
- package/src/link/createLink.ts +20 -12
- package/src/listbox/createListBox.ts +86 -310
- package/src/listbox/createOption.ts +50 -14
- package/src/live-announcer/announce.ts +21 -6
- package/src/menu/createMenu.ts +92 -5
- package/src/menu/createMenuItem.ts +40 -23
- package/src/menu/createMenuTrigger.ts +179 -51
- package/src/menu/index.ts +2 -0
- package/src/menu/intl/index.ts +130 -0
- package/src/meter/createMeter.ts +20 -5
- package/src/numberfield/createNumberField.ts +254 -14
- package/src/overlays/ariaHideOutside.ts +76 -11
- package/src/overlays/createInteractOutside.ts +74 -47
- package/src/overlays/createModal.tsx +42 -27
- package/src/overlays/createOverlay.ts +107 -66
- package/src/overlays/createOverlayTrigger.ts +21 -6
- package/src/overlays/createPreventScroll.ts +92 -62
- package/src/overlays/index.ts +2 -0
- package/src/overlays/intl/ar-AE.json +3 -0
- package/src/overlays/intl/bg-BG.json +3 -0
- package/src/overlays/intl/cs-CZ.json +3 -0
- package/src/overlays/intl/da-DK.json +3 -0
- package/src/overlays/intl/de-DE.json +3 -0
- package/src/overlays/intl/el-GR.json +3 -0
- package/src/overlays/intl/en-US.json +3 -0
- package/src/overlays/intl/es-ES.json +3 -0
- package/src/overlays/intl/et-EE.json +3 -0
- package/src/overlays/intl/fi-FI.json +3 -0
- package/src/overlays/intl/fr-FR.json +3 -0
- package/src/overlays/intl/he-IL.json +3 -0
- package/src/overlays/intl/hr-HR.json +3 -0
- package/src/overlays/intl/hu-HU.json +3 -0
- package/src/overlays/intl/index.ts +122 -0
- package/src/overlays/intl/it-IT.json +3 -0
- package/src/overlays/intl/ja-JP.json +3 -0
- package/src/overlays/intl/ko-KR.json +3 -0
- package/src/overlays/intl/lt-LT.json +3 -0
- package/src/overlays/intl/lv-LV.json +3 -0
- package/src/overlays/intl/nb-NO.json +3 -0
- package/src/overlays/intl/nl-NL.json +3 -0
- package/src/overlays/intl/pl-PL.json +3 -0
- package/src/overlays/intl/pt-BR.json +3 -0
- package/src/overlays/intl/pt-PT.json +3 -0
- package/src/overlays/intl/ro-RO.json +3 -0
- package/src/overlays/intl/ru-RU.json +3 -0
- package/src/overlays/intl/sk-SK.json +3 -0
- package/src/overlays/intl/sl-SI.json +3 -0
- package/src/overlays/intl/sr-SP.json +3 -0
- package/src/overlays/intl/sv-SE.json +3 -0
- package/src/overlays/intl/tr-TR.json +3 -0
- package/src/overlays/intl/uk-UA.json +3 -0
- package/src/overlays/intl/zh-CN.json +3 -0
- package/src/overlays/intl/zh-TW.json +3 -0
- package/src/popover/calculatePosition.ts +21 -3
- package/src/popover/createOverlayPosition.ts +149 -41
- package/src/popover/createPopover.ts +88 -23
- package/src/progress/createProgressBar.ts +19 -4
- package/src/radio/createRadio.ts +80 -25
- package/src/radio/createRadioGroup.ts +47 -13
- package/src/searchfield/createSearchField.ts +31 -2
- package/src/searchfield/intl/ar-AE.json +3 -0
- package/src/searchfield/intl/bg-BG.json +3 -0
- package/src/searchfield/intl/cs-CZ.json +3 -0
- package/src/searchfield/intl/da-DK.json +3 -0
- package/src/searchfield/intl/de-DE.json +3 -0
- package/src/searchfield/intl/el-GR.json +3 -0
- package/src/searchfield/intl/en-US.json +3 -0
- package/src/searchfield/intl/es-ES.json +3 -0
- package/src/searchfield/intl/et-EE.json +3 -0
- package/src/searchfield/intl/fi-FI.json +3 -0
- package/src/searchfield/intl/fr-FR.json +3 -0
- package/src/searchfield/intl/he-IL.json +3 -0
- package/src/searchfield/intl/hr-HR.json +3 -0
- package/src/searchfield/intl/hu-HU.json +3 -0
- package/src/searchfield/intl/index.ts +122 -0
- package/src/searchfield/intl/it-IT.json +3 -0
- package/src/searchfield/intl/ja-JP.json +3 -0
- package/src/searchfield/intl/ko-KR.json +3 -0
- package/src/searchfield/intl/lt-LT.json +3 -0
- package/src/searchfield/intl/lv-LV.json +3 -0
- package/src/searchfield/intl/nb-NO.json +3 -0
- package/src/searchfield/intl/nl-NL.json +3 -0
- package/src/searchfield/intl/pl-PL.json +3 -0
- package/src/searchfield/intl/pt-BR.json +3 -0
- package/src/searchfield/intl/pt-PT.json +3 -0
- package/src/searchfield/intl/ro-RO.json +3 -0
- package/src/searchfield/intl/ru-RU.json +3 -0
- package/src/searchfield/intl/sk-SK.json +3 -0
- package/src/searchfield/intl/sl-SI.json +3 -0
- package/src/searchfield/intl/sr-SP.json +3 -0
- package/src/searchfield/intl/sv-SE.json +3 -0
- package/src/searchfield/intl/tr-TR.json +3 -0
- package/src/searchfield/intl/uk-UA.json +3 -0
- package/src/searchfield/intl/zh-CN.json +3 -0
- package/src/searchfield/intl/zh-TW.json +3 -0
- package/src/select/createHiddenSelect.tsx +166 -69
- package/src/select/createSelect.ts +80 -34
- package/src/selection/DOMLayoutDelegate.ts +14 -0
- package/src/selection/ListKeyboardDelegate.ts +16 -1
- package/src/selection/constants.ts +14 -0
- package/src/selection/createCollectionRowInteraction.ts +75 -6
- package/src/selection/createScrollIntoViewOnFocus.ts +23 -8
- package/src/selection/createSelectableCollection.ts +352 -226
- package/src/selection/createSelectableItem.ts +51 -12
- package/src/selection/createSelectableList.ts +21 -1
- package/src/selection/createTypeSelect.ts +21 -5
- package/src/selection/selectItem.ts +14 -0
- package/src/selection/utils.ts +15 -1
- package/src/separator/createSeparator.ts +17 -1
- package/src/slider/createSlider.ts +24 -18
- package/src/spinbutton/createSpinButton.ts +16 -2
- package/src/spinbutton/index.ts +2 -10
- package/src/spinbutton/intl.ts +70 -34
- package/src/ssr/index.tsx +79 -48
- package/src/steplist/createStepList.ts +17 -2
- package/src/switch/createSwitch.ts +25 -4
- package/src/table/createTable.ts +104 -52
- package/src/table/createTableCell.ts +17 -2
- package/src/table/createTableColumnHeader.ts +21 -3
- package/src/table/createTableColumnResize.ts +19 -3
- package/src/table/createTableHeaderRow.ts +17 -2
- package/src/table/createTableRow.ts +29 -22
- package/src/table/createTableRowGroup.ts +18 -3
- package/src/table/createTableSelectAllCheckbox.ts +30 -14
- package/src/table/createTableSelectionCheckbox.ts +21 -3
- package/src/table/index.ts +2 -2
- package/src/table/intl/ar-AE.json +13 -0
- package/src/table/intl/bg-BG.json +13 -0
- package/src/table/intl/cs-CZ.json +13 -0
- package/src/table/intl/da-DK.json +13 -0
- package/src/table/intl/de-DE.json +13 -0
- package/src/table/intl/el-GR.json +13 -0
- package/src/table/intl/en-US.json +13 -0
- package/src/table/intl/es-ES.json +13 -0
- package/src/table/intl/et-EE.json +13 -0
- package/src/table/intl/fi-FI.json +13 -0
- package/src/table/intl/fr-FR.json +13 -0
- package/src/table/intl/he-IL.json +13 -0
- package/src/table/intl/hr-HR.json +13 -0
- package/src/table/intl/hu-HU.json +13 -0
- package/src/table/intl/index.ts +132 -0
- package/src/table/intl/it-IT.json +13 -0
- package/src/table/intl/ja-JP.json +13 -0
- package/src/table/intl/ko-KR.json +13 -0
- package/src/table/intl/lt-LT.json +13 -0
- package/src/table/intl/lv-LV.json +13 -0
- package/src/table/intl/nb-NO.json +13 -0
- package/src/table/intl/nl-NL.json +13 -0
- package/src/table/intl/pl-PL.json +13 -0
- package/src/table/intl/pt-BR.json +13 -0
- package/src/table/intl/pt-PT.json +13 -0
- package/src/table/intl/ro-RO.json +13 -0
- package/src/table/intl/ru-RU.json +13 -0
- package/src/table/intl/sk-SK.json +13 -0
- package/src/table/intl/sl-SI.json +13 -0
- package/src/table/intl/sr-SP.json +13 -0
- package/src/table/intl/sv-SE.json +13 -0
- package/src/table/intl/tr-TR.json +13 -0
- package/src/table/intl/uk-UA.json +13 -0
- package/src/table/intl/zh-CN.json +13 -0
- package/src/table/intl/zh-TW.json +13 -0
- package/src/table/types.ts +44 -2
- package/src/table/utils.ts +15 -6
- package/src/tabs/createTabs.ts +104 -37
- package/src/tag/createTag.ts +118 -37
- package/src/tag/createTagGroup.ts +20 -12
- package/src/tag/intl/ar-AE.json +4 -0
- package/src/tag/intl/bg-BG.json +4 -0
- package/src/tag/intl/cs-CZ.json +4 -0
- package/src/tag/intl/da-DK.json +4 -0
- package/src/tag/intl/de-DE.json +4 -0
- package/src/tag/intl/el-GR.json +4 -0
- package/src/tag/intl/en-US.json +4 -0
- package/src/tag/intl/es-ES.json +4 -0
- package/src/tag/intl/et-EE.json +4 -0
- package/src/tag/intl/fi-FI.json +4 -0
- package/src/tag/intl/fr-FR.json +4 -0
- package/src/tag/intl/he-IL.json +4 -0
- package/src/tag/intl/hr-HR.json +4 -0
- package/src/tag/intl/hu-HU.json +4 -0
- package/src/tag/intl/index.ts +123 -0
- package/src/tag/intl/it-IT.json +4 -0
- package/src/tag/intl/ja-JP.json +4 -0
- package/src/tag/intl/ko-KR.json +4 -0
- package/src/tag/intl/lt-LT.json +4 -0
- package/src/tag/intl/lv-LV.json +4 -0
- package/src/tag/intl/nb-NO.json +4 -0
- package/src/tag/intl/nl-NL.json +4 -0
- package/src/tag/intl/pl-PL.json +4 -0
- package/src/tag/intl/pt-BR.json +4 -0
- package/src/tag/intl/pt-PT.json +4 -0
- package/src/tag/intl/ro-RO.json +4 -0
- package/src/tag/intl/ru-RU.json +4 -0
- package/src/tag/intl/sk-SK.json +4 -0
- package/src/tag/intl/sl-SI.json +4 -0
- package/src/tag/intl/sr-SP.json +4 -0
- package/src/tag/intl/sv-SE.json +4 -0
- package/src/tag/intl/tr-TR.json +4 -0
- package/src/tag/intl/uk-UA.json +4 -0
- package/src/tag/intl/zh-CN.json +4 -0
- package/src/tag/intl/zh-TW.json +4 -0
- package/src/textfield/createTextField.ts +104 -14
- package/src/toast/createToast.ts +39 -6
- package/src/toast/createToastRegion.ts +28 -15
- package/src/toast/intl/ar-AE.json +4 -0
- package/src/toast/intl/bg-BG.json +4 -0
- package/src/toast/intl/cs-CZ.json +4 -0
- package/src/toast/intl/da-DK.json +4 -0
- package/src/toast/intl/de-DE.json +4 -0
- package/src/toast/intl/el-GR.json +4 -0
- package/src/toast/intl/en-US.json +4 -0
- package/src/toast/intl/es-ES.json +4 -0
- package/src/toast/intl/et-EE.json +4 -0
- package/src/toast/intl/fi-FI.json +4 -0
- package/src/toast/intl/fr-FR.json +4 -0
- package/src/toast/intl/he-IL.json +4 -0
- package/src/toast/intl/hr-HR.json +4 -0
- package/src/toast/intl/hu-HU.json +4 -0
- package/src/toast/intl/index.ts +123 -0
- package/src/toast/intl/it-IT.json +4 -0
- package/src/toast/intl/ja-JP.json +4 -0
- package/src/toast/intl/ko-KR.json +4 -0
- package/src/toast/intl/lt-LT.json +4 -0
- package/src/toast/intl/lv-LV.json +4 -0
- package/src/toast/intl/nb-NO.json +4 -0
- package/src/toast/intl/nl-NL.json +4 -0
- package/src/toast/intl/pl-PL.json +4 -0
- package/src/toast/intl/pt-BR.json +4 -0
- package/src/toast/intl/pt-PT.json +4 -0
- package/src/toast/intl/ro-RO.json +4 -0
- package/src/toast/intl/ru-RU.json +4 -0
- package/src/toast/intl/sk-SK.json +4 -0
- package/src/toast/intl/sl-SI.json +4 -0
- package/src/toast/intl/sr-SP.json +4 -0
- package/src/toast/intl/sv-SE.json +4 -0
- package/src/toast/intl/tr-TR.json +4 -0
- package/src/toast/intl/uk-UA.json +4 -0
- package/src/toast/intl/zh-CN.json +4 -0
- package/src/toast/intl/zh-TW.json +4 -0
- package/src/toggle/createToggle.ts +96 -15
- package/src/tokenfield/createToken.ts +82 -0
- package/src/tokenfield/createTokenField.ts +859 -0
- package/src/tokenfield/index.ts +10 -0
- package/src/toolbar/createToolbar.ts +26 -5
- package/src/tooltip/createPreviewTrigger.ts +301 -0
- package/src/tooltip/createSafeArea.ts +165 -0
- package/src/tooltip/createTooltip.ts +15 -1
- package/src/tooltip/createTooltipTrigger.ts +24 -3
- package/src/tooltip/index.ts +7 -0
- package/src/tooltip/intl/index.ts +76 -0
- package/src/tree/createTree.ts +66 -50
- package/src/tree/createTreeItem.ts +85 -21
- package/src/tree/createTreeSelectionCheckbox.ts +29 -28
- package/src/tree/intl/ar-AE.json +4 -0
- package/src/tree/intl/bg-BG.json +4 -0
- package/src/tree/intl/cs-CZ.json +4 -0
- package/src/tree/intl/da-DK.json +4 -0
- package/src/tree/intl/de-DE.json +4 -0
- package/src/tree/intl/el-GR.json +4 -0
- package/src/tree/intl/en-US.json +4 -0
- package/src/tree/intl/es-ES.json +4 -0
- package/src/tree/intl/et-EE.json +4 -0
- package/src/tree/intl/fi-FI.json +4 -0
- package/src/tree/intl/fr-FR.json +4 -0
- package/src/tree/intl/he-IL.json +4 -0
- package/src/tree/intl/hr-HR.json +4 -0
- package/src/tree/intl/hu-HU.json +4 -0
- package/src/tree/intl/index.ts +123 -0
- package/src/tree/intl/it-IT.json +4 -0
- package/src/tree/intl/ja-JP.json +4 -0
- package/src/tree/intl/ko-KR.json +4 -0
- package/src/tree/intl/lt-LT.json +4 -0
- package/src/tree/intl/lv-LV.json +4 -0
- package/src/tree/intl/nb-NO.json +4 -0
- package/src/tree/intl/nl-NL.json +4 -0
- package/src/tree/intl/pl-PL.json +4 -0
- package/src/tree/intl/pt-BR.json +4 -0
- package/src/tree/intl/pt-PT.json +4 -0
- package/src/tree/intl/ro-RO.json +4 -0
- package/src/tree/intl/ru-RU.json +4 -0
- package/src/tree/intl/sk-SK.json +4 -0
- package/src/tree/intl/sl-SI.json +4 -0
- package/src/tree/intl/sr-SP.json +4 -0
- package/src/tree/intl/sv-SE.json +4 -0
- package/src/tree/intl/tr-TR.json +4 -0
- package/src/tree/intl/uk-UA.json +4 -0
- package/src/tree/intl/zh-CN.json +4 -0
- package/src/tree/intl/zh-TW.json +4 -0
- package/src/tree/types.ts +35 -2
- package/src/utils/ShadowTreeWalker.ts +249 -0
- package/src/utils/animation.ts +106 -85
- package/src/utils/capture.ts +51 -0
- package/src/utils/createDescription.ts +31 -8
- package/src/utils/dom.ts +314 -33
- package/src/utils/domAttrs.ts +84 -0
- package/src/utils/env.ts +2 -0
- package/src/utils/events.ts +39 -3
- package/src/utils/filterDOMProps.ts +34 -2
- package/src/utils/focus.ts +186 -32
- package/src/utils/geometry.ts +15 -1
- package/src/utils/getMetaValue.ts +57 -0
- package/src/utils/getNonce.ts +40 -0
- package/src/utils/globalListeners.ts +16 -3
- package/src/utils/index.ts +14 -0
- package/src/utils/keyboard.ts +15 -1
- package/src/utils/mergeProps.ts +149 -16
- package/src/utils/owner.ts +26 -0
- package/src/utils/platform.ts +15 -1
- package/src/utils/reactivity.ts +2 -0
- package/src/utils/refs.ts +53 -0
- package/src/utils/runAfterTransition.ts +117 -0
- package/src/utils/scrollIntoView.ts +14 -0
- package/src/utils/splitProps.ts +70 -0
- package/src/utils/textSelection.ts +15 -1
- package/src/virtualizer/ScrollView.ts +210 -0
- package/src/virtualizer/index.ts +2 -0
- package/src/virtualizer/utils.ts +100 -0
- package/src/visually-hidden/createVisuallyHidden.ts +20 -4
- package/dist/_chunk/createInteractionModality.js +0 -268
- package/dist/_chunk/createInteractionModality.js.map +0 -1
- package/dist/_chunk/createInteractionModality.jsx +0 -268
- package/dist/_chunk/createInteractionModality.jsx.map +0 -1
- package/dist/_chunk/focus2.js +0 -631
- package/dist/_chunk/focus2.js.map +0 -1
- package/dist/_chunk/focus2.jsx +0 -631
- package/dist/_chunk/focus2.jsx.map +0 -1
- package/dist/_chunk/visually-hidden.js.map +0 -1
- package/dist/_chunk/visually-hidden.jsx.map +0 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +0 -71
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +0 -1
- package/dist/radio/createRadioGroupState.d.ts +0 -77
- package/dist/radio/createRadioGroupState.d.ts.map +0 -1
- package/dist/toggle/createToggleState.d.ts +0 -34
- package/dist/toggle/createToggleState.d.ts.map +0 -1
- package/src/checkbox/createCheckboxGroupState.ts +0 -174
- package/src/radio/createRadioGroupState.ts +0 -177
- package/src/toggle/createToggleState.ts +0 -86
package/dist/_chunk/toolbar.js
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/toolbar/useToolbar.ts
|
|
13
|
+
import { t as onOwnedCleanup } from "./owner.js";
|
|
1
14
|
import { t as access } from "./reactivity.js";
|
|
2
|
-
import {
|
|
15
|
+
import { a as getOwnerDocument, f as isFocusable, h as isTabbable, w as focusSafely } from "./dom.js";
|
|
3
16
|
import { i as useLocale } from "./locale.js";
|
|
4
|
-
import { createSignal,
|
|
17
|
+
import { createSignal, onSettled } from "solid-js";
|
|
5
18
|
//#region src/toolbar/createToolbar.ts
|
|
6
19
|
/**
|
|
7
20
|
* createToolbar - Accessibility hook for toolbar elements
|
|
@@ -37,8 +50,10 @@ function createFocusManager(ref) {
|
|
|
37
50
|
if (accept) elements = elements.filter(accept);
|
|
38
51
|
if (!current || elements.length === 0) return null;
|
|
39
52
|
let nextIndex = elements.indexOf(current) + 1;
|
|
40
|
-
if (nextIndex >= elements.length)
|
|
41
|
-
|
|
53
|
+
if (nextIndex >= elements.length) {
|
|
54
|
+
if (wrap) nextIndex = 0;
|
|
55
|
+
else return null;
|
|
56
|
+
}
|
|
42
57
|
const nextElement = elements[nextIndex];
|
|
43
58
|
if (nextElement) {
|
|
44
59
|
focusSafely(nextElement);
|
|
@@ -56,8 +71,10 @@ function createFocusManager(ref) {
|
|
|
56
71
|
if (accept) elements = elements.filter(accept);
|
|
57
72
|
if (!current || elements.length === 0) return null;
|
|
58
73
|
let prevIndex = elements.indexOf(current) - 1;
|
|
59
|
-
if (prevIndex < 0)
|
|
60
|
-
|
|
74
|
+
if (prevIndex < 0) {
|
|
75
|
+
if (wrap) prevIndex = elements.length - 1;
|
|
76
|
+
else return null;
|
|
77
|
+
}
|
|
61
78
|
const prevElement = elements[prevIndex];
|
|
62
79
|
if (prevElement) {
|
|
63
80
|
focusSafely(prevElement);
|
|
@@ -118,7 +135,7 @@ function createToolbar(props = {}) {
|
|
|
118
135
|
const ariaLabel = () => access(props["aria-label"]);
|
|
119
136
|
const ariaLabelledby = () => access(props["aria-labelledby"]);
|
|
120
137
|
const focusManager = createFocusManager(() => toolbarRef);
|
|
121
|
-
|
|
138
|
+
onSettled(() => {
|
|
122
139
|
if (toolbarRef) {
|
|
123
140
|
const parentToolbar = toolbarRef.parentElement?.closest("[role=\"toolbar\"]");
|
|
124
141
|
setIsInToolbar(!!parentToolbar);
|
|
@@ -195,7 +212,7 @@ function createToolbar(props = {}) {
|
|
|
195
212
|
el.addEventListener("keydown", onKeyDown, true);
|
|
196
213
|
el.addEventListener("focus", onFocus, true);
|
|
197
214
|
el.addEventListener("blur", onBlur, true);
|
|
198
|
-
|
|
215
|
+
onOwnedCleanup(() => {
|
|
199
216
|
el.removeEventListener("keydown", onKeyDown, true);
|
|
200
217
|
el.removeEventListener("focus", onFocus, true);
|
|
201
218
|
el.removeEventListener("blur", onBlur, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.js","names":[],"sources":["../../src/toolbar/createToolbar.ts"],"sourcesContent":["/**\n * createToolbar - Accessibility hook for toolbar elements\n *\n * Provides keyboard navigation between toolbar items using arrow keys.\n * Based on @react-aria/toolbar useToolbar.\n */\n\nimport { createSignal, onMount, onCleanup, type Accessor } from \"solid-js\";\nimport { type MaybeAccessor, access } from \"../utils\";\nimport { useLocale } from \"../i18n\";\nimport { getOwnerDocument, isFocusable, isTabbable } from \"../utils\";\nimport { focusSafely } from \"../utils/focus\";\n\nexport type Orientation = \"horizontal\" | \"vertical\";\n\nexport interface AriaToolbarProps {\n /** The orientation of the toolbar. @default 'horizontal' */\n orientation?: MaybeAccessor<Orientation>;\n /** An accessibility label for the toolbar. */\n \"aria-label\"?: MaybeAccessor<string>;\n /** Identifies the element (or elements) that labels the toolbar. */\n \"aria-labelledby\"?: MaybeAccessor<string>;\n}\n\nexport interface ToolbarAria {\n /** Props for the toolbar container element. */\n toolbarProps: {\n role: \"toolbar\" | \"group\";\n \"aria-orientation\"?: Orientation;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n tabIndex?: number;\n ref: (el: HTMLElement) => void;\n };\n /** The orientation of the toolbar. */\n orientation: Accessor<Orientation>;\n}\n\ninterface FocusManagerOptions {\n from?: Element;\n tabbable?: boolean;\n wrap?: boolean;\n accept?: (node: Element) => boolean;\n}\n\ninterface FocusManager {\n focusNext(opts?: FocusManagerOptions): HTMLElement | null;\n focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;\n focusFirst(opts?: FocusManagerOptions): HTMLElement | null;\n focusLast(opts?: FocusManagerOptions): HTMLElement | null;\n}\n\nfunction getFocusableElements(root: Element, tabbable = false): HTMLElement[] {\n const elements: HTMLElement[] = [];\n const filter = tabbable ? isTabbable : isFocusable;\n\n // Check the root element itself\n if (filter(root)) {\n elements.push(root as HTMLElement);\n }\n\n // Check all descendants\n const descendants = root.querySelectorAll(\"*\");\n for (let i = 0; i < descendants.length; i++) {\n const el = descendants[i];\n if (filter(el)) {\n elements.push(el as HTMLElement);\n }\n }\n\n return elements;\n}\n\nfunction getActiveElement(doc: Document): Element | null {\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot?.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\nfunction createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManager {\n return {\n focusNext(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let nextIndex = currentIndex + 1;\n\n if (nextIndex >= elements.length) {\n if (wrap) {\n nextIndex = 0;\n } else {\n return null;\n }\n }\n\n const nextElement = elements[nextIndex];\n if (nextElement) {\n focusSafely(nextElement);\n return nextElement;\n }\n\n return null;\n },\n\n focusPrevious(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let prevIndex = currentIndex - 1;\n\n if (prevIndex < 0) {\n if (wrap) {\n prevIndex = elements.length - 1;\n } else {\n return null;\n }\n }\n\n const prevElement = elements[prevIndex];\n if (prevElement) {\n focusSafely(prevElement);\n return prevElement;\n }\n\n return null;\n },\n\n focusFirst(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n focusSafely(elements[0]);\n return elements[0];\n }\n\n return null;\n },\n\n focusLast(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n const lastElement = elements[elements.length - 1];\n focusSafely(lastElement);\n return lastElement;\n }\n\n return null;\n },\n };\n}\n\n/**\n * Provides the behavior and accessibility implementation for a toolbar.\n * A toolbar is a container for a set of interactive controls with arrow key navigation.\n *\n * @example\n * ```tsx\n * let ref;\n * const { toolbarProps } = createToolbar({ orientation: 'horizontal' });\n * return (\n * <div {...toolbarProps}>\n * <Button>Cut</Button>\n * <Button>Copy</Button>\n * <Button>Paste</Button>\n * </div>\n * );\n * ```\n */\nexport function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {\n let toolbarRef: HTMLElement | undefined;\n const [isInToolbar, setIsInToolbar] = createSignal(false);\n let lastFocusedElement: Element | null = null;\n\n const locale = useLocale();\n const orientation = () => access(props.orientation) ?? \"horizontal\";\n const ariaLabel = () => access(props[\"aria-label\"]);\n const ariaLabelledby = () => access(props[\"aria-labelledby\"]);\n\n const focusManager = createFocusManager(() => toolbarRef);\n\n // Check if this toolbar is nested inside another toolbar\n onMount(() => {\n if (toolbarRef) {\n const parentToolbar = toolbarRef.parentElement?.closest('[role=\"toolbar\"]');\n setIsInToolbar(!!parentToolbar);\n }\n });\n\n // Keyboard event handler\n const onKeyDown = (e: KeyboardEvent) => {\n const root = toolbarRef;\n if (!root) return;\n\n // Don't handle if nested toolbar (parent handles navigation)\n if (isInToolbar()) return;\n\n const target = e.target;\n if (!(target instanceof Element) || !root.contains(target)) {\n return;\n }\n\n const doc = getOwnerDocument(root);\n\n const dir = locale().direction;\n const isRTL = dir === \"rtl\";\n const isHorizontal = orientation() === \"horizontal\";\n\n let handled = false;\n\n switch (e.key) {\n case \"ArrowRight\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusPrevious({ tabbable: true });\n } else {\n focusManager.focusNext({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowLeft\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusNext({ tabbable: true });\n } else {\n focusManager.focusPrevious({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowDown\":\n if (!isHorizontal) {\n focusManager.focusNext({ tabbable: true });\n handled = true;\n }\n break;\n case \"ArrowUp\":\n if (!isHorizontal) {\n focusManager.focusPrevious({ tabbable: true });\n handled = true;\n }\n break;\n case \"Tab\":\n // Move focus to the first/last child so the browser's own Tab handling\n // then carries focus OUT of the whole toolbar. Faithful to upstream\n // useToolbar: there is no roving tabindex — every item stays tabbable,\n // so a bare Tab would otherwise step to the next item instead of leaving.\n lastFocusedElement = getActiveElement(doc);\n if (e.shiftKey) {\n focusManager.focusFirst({ tabbable: true });\n } else {\n focusManager.focusLast({ tabbable: true });\n }\n return;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // Record the last focused child when focus moves out of the toolbar.\n const onBlur = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n if (!(relatedTarget && root.contains(relatedTarget)) && !lastFocusedElement) {\n lastFocusedElement = e.target as Element;\n }\n };\n\n // Restore focus to the last focused child when focus returns into the toolbar.\n // If that element was removed, focus() is a no-op and the browser lands on the\n // first/last child per direction — matching upstream useToolbar.\n const onFocus = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n const target = e.target;\n if (\n lastFocusedElement &&\n !(relatedTarget && root.contains(relatedTarget)) &&\n target instanceof Node &&\n root.contains(target)\n ) {\n focusSafely(lastFocusedElement as HTMLElement);\n lastFocusedElement = null;\n }\n };\n\n // Set up capture event listeners\n const setRef = (el: HTMLElement) => {\n toolbarRef = el;\n\n // Use capture phase so container handlers run before the focused child's.\n el.addEventListener(\"keydown\", onKeyDown, true);\n el.addEventListener(\"focus\", onFocus, true);\n el.addEventListener(\"blur\", onBlur, true);\n\n onCleanup(() => {\n el.removeEventListener(\"keydown\", onKeyDown, true);\n el.removeEventListener(\"focus\", onFocus, true);\n el.removeEventListener(\"blur\", onBlur, true);\n });\n };\n\n return {\n toolbarProps: {\n get role() {\n return isInToolbar() ? \"group\" : \"toolbar\";\n },\n get \"aria-orientation\"() {\n // Upstream useToolbar emits aria-orientation unconditionally, on the\n // nested role=\"group\" too — not only on the root role=\"toolbar\".\n return orientation();\n },\n get \"aria-label\"() {\n return ariaLabel();\n },\n get \"aria-labelledby\"() {\n // Mirror useToolbar: `aria-label == null ? aria-labelledby : undefined`.\n // An explicit empty-string aria-label still suppresses labelledby.\n return ariaLabel() == null ? ariaLabelledby() : undefined;\n },\n ref: setRef,\n },\n orientation,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolbar.js","names":[],"sources":["../../src/toolbar/createToolbar.ts"],"sourcesContent":["/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/toolbar/useToolbar.ts\n\n/**\n * createToolbar - Accessibility hook for toolbar elements\n *\n * Provides keyboard navigation between toolbar items using arrow keys.\n * Based on @react-aria/toolbar useToolbar.\n */\n\nimport {\n type MaybeAccessor,\n access,\n onOwnedCleanup,\n getOwnerDocument,\n isFocusable,\n isTabbable,\n} from \"../utils\";\nimport { createSignal, onSettled } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { useLocale } from \"../i18n\";\nimport { focusSafely } from \"../utils/focus\";\n\nexport type Orientation = \"horizontal\" | \"vertical\";\n\nexport interface AriaToolbarProps {\n /** The orientation of the toolbar. @default 'horizontal' */\n orientation?: MaybeAccessor<Orientation>;\n /** An accessibility label for the toolbar. */\n \"aria-label\"?: MaybeAccessor<string>;\n /** Identifies the element (or elements) that labels the toolbar. */\n \"aria-labelledby\"?: MaybeAccessor<string>;\n}\n\nexport interface ToolbarAria {\n /** Props for the toolbar container element. */\n toolbarProps: {\n role: \"toolbar\" | \"group\";\n \"aria-orientation\"?: Orientation;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n tabIndex?: number;\n ref: (el: HTMLElement) => void;\n };\n /** The orientation of the toolbar. */\n orientation: Accessor<Orientation>;\n}\n\ninterface FocusManagerOptions {\n from?: Element;\n tabbable?: boolean;\n wrap?: boolean;\n accept?: (node: Element) => boolean;\n}\n\ninterface FocusManager {\n focusNext(opts?: FocusManagerOptions): HTMLElement | null;\n focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;\n focusFirst(opts?: FocusManagerOptions): HTMLElement | null;\n focusLast(opts?: FocusManagerOptions): HTMLElement | null;\n}\n\nfunction getFocusableElements(root: Element, tabbable = false): HTMLElement[] {\n const elements: HTMLElement[] = [];\n const filter = tabbable ? isTabbable : isFocusable;\n\n // Check the root element itself\n if (filter(root)) {\n elements.push(root as HTMLElement);\n }\n\n // Check all descendants\n const descendants = root.querySelectorAll(\"*\");\n for (let i = 0; i < descendants.length; i++) {\n const el = descendants[i];\n if (filter(el)) {\n elements.push(el as HTMLElement);\n }\n }\n\n return elements;\n}\n\nfunction getActiveElement(doc: Document): Element | null {\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot?.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\nfunction createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManager {\n return {\n focusNext(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let nextIndex = currentIndex + 1;\n\n if (nextIndex >= elements.length) {\n if (wrap) {\n nextIndex = 0;\n } else {\n return null;\n }\n }\n\n const nextElement = elements[nextIndex];\n if (nextElement) {\n focusSafely(nextElement);\n return nextElement;\n }\n\n return null;\n },\n\n focusPrevious(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let prevIndex = currentIndex - 1;\n\n if (prevIndex < 0) {\n if (wrap) {\n prevIndex = elements.length - 1;\n } else {\n return null;\n }\n }\n\n const prevElement = elements[prevIndex];\n if (prevElement) {\n focusSafely(prevElement);\n return prevElement;\n }\n\n return null;\n },\n\n focusFirst(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n focusSafely(elements[0]);\n return elements[0];\n }\n\n return null;\n },\n\n focusLast(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n const lastElement = elements[elements.length - 1];\n focusSafely(lastElement);\n return lastElement;\n }\n\n return null;\n },\n };\n}\n\n/**\n * Provides the behavior and accessibility implementation for a toolbar.\n * A toolbar is a container for a set of interactive controls with arrow key navigation.\n *\n * @example\n * ```tsx\n * let ref;\n * const { toolbarProps } = createToolbar({ orientation: 'horizontal' });\n * return (\n * <div {...toolbarProps}>\n * <Button>Cut</Button>\n * <Button>Copy</Button>\n * <Button>Paste</Button>\n * </div>\n * );\n * ```\n */\nexport function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {\n let toolbarRef: HTMLElement | undefined;\n const [isInToolbar, setIsInToolbar] = createSignal(false);\n let lastFocusedElement: Element | null = null;\n\n const locale = useLocale();\n const orientation = () => access(props.orientation) ?? \"horizontal\";\n const ariaLabel = () => access(props[\"aria-label\"]);\n const ariaLabelledby = () => access(props[\"aria-labelledby\"]);\n\n const focusManager = createFocusManager(() => toolbarRef);\n\n // Check if this toolbar is nested inside another toolbar\n onSettled(() => {\n if (toolbarRef) {\n const parentToolbar = toolbarRef.parentElement?.closest('[role=\"toolbar\"]');\n setIsInToolbar(!!parentToolbar);\n }\n });\n\n // Keyboard event handler\n const onKeyDown = (e: KeyboardEvent) => {\n const root = toolbarRef;\n if (!root) return;\n\n // Don't handle if nested toolbar (parent handles navigation)\n if (isInToolbar()) return;\n\n const target = e.target;\n if (!(target instanceof Element) || !root.contains(target)) {\n return;\n }\n\n const doc = getOwnerDocument(root);\n\n const dir = locale().direction;\n const isRTL = dir === \"rtl\";\n const isHorizontal = orientation() === \"horizontal\";\n\n let handled = false;\n\n switch (e.key) {\n case \"ArrowRight\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusPrevious({ tabbable: true });\n } else {\n focusManager.focusNext({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowLeft\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusNext({ tabbable: true });\n } else {\n focusManager.focusPrevious({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowDown\":\n if (!isHorizontal) {\n focusManager.focusNext({ tabbable: true });\n handled = true;\n }\n break;\n case \"ArrowUp\":\n if (!isHorizontal) {\n focusManager.focusPrevious({ tabbable: true });\n handled = true;\n }\n break;\n case \"Tab\":\n // Move focus to the first/last child so the browser's own Tab handling\n // then carries focus OUT of the whole toolbar. Faithful to upstream\n // useToolbar: there is no roving tabindex — every item stays tabbable,\n // so a bare Tab would otherwise step to the next item instead of leaving.\n lastFocusedElement = getActiveElement(doc);\n if (e.shiftKey) {\n focusManager.focusFirst({ tabbable: true });\n } else {\n focusManager.focusLast({ tabbable: true });\n }\n return;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // Record the last focused child when focus moves out of the toolbar.\n const onBlur = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n if (!(relatedTarget && root.contains(relatedTarget)) && !lastFocusedElement) {\n lastFocusedElement = e.target as Element;\n }\n };\n\n // Restore focus to the last focused child when focus returns into the toolbar.\n // If that element was removed, focus() is a no-op and the browser lands on the\n // first/last child per direction — matching upstream useToolbar.\n const onFocus = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n const target = e.target;\n if (\n lastFocusedElement &&\n !(relatedTarget && root.contains(relatedTarget)) &&\n target instanceof Node &&\n root.contains(target)\n ) {\n focusSafely(lastFocusedElement as HTMLElement);\n lastFocusedElement = null;\n }\n };\n\n // Set up capture event listeners\n const setRef = (el: HTMLElement) => {\n toolbarRef = el;\n\n // Use capture phase so container handlers run before the focused child's.\n el.addEventListener(\"keydown\", onKeyDown, true);\n el.addEventListener(\"focus\", onFocus, true);\n el.addEventListener(\"blur\", onBlur, true);\n\n onOwnedCleanup(() => {\n el.removeEventListener(\"keydown\", onKeyDown, true);\n el.removeEventListener(\"focus\", onFocus, true);\n el.removeEventListener(\"blur\", onBlur, true);\n });\n };\n\n return {\n toolbarProps: {\n get role() {\n return isInToolbar() ? \"group\" : \"toolbar\";\n },\n get \"aria-orientation\"() {\n // Upstream useToolbar emits aria-orientation unconditionally, on the\n // nested role=\"group\" too — not only on the root role=\"toolbar\".\n return orientation();\n },\n get \"aria-label\"() {\n return ariaLabel();\n },\n get \"aria-labelledby\"() {\n // Mirror useToolbar: `aria-label == null ? aria-labelledby : undefined`.\n // An explicit empty-string aria-label still suppresses labelledby.\n return ariaLabel() == null ? ariaLabelledby() : undefined;\n },\n ref: setRef,\n },\n orientation,\n };\n}\n"],"mappings":"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"}
|
package/dist/_chunk/toolbar.jsx
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/toolbar/useToolbar.ts
|
|
13
|
+
import { t as onOwnedCleanup } from "./owner.jsx";
|
|
1
14
|
import { t as access } from "./reactivity.jsx";
|
|
2
|
-
import {
|
|
15
|
+
import { a as getOwnerDocument, f as isFocusable, h as isTabbable, w as focusSafely } from "./dom.jsx";
|
|
3
16
|
import { i as useLocale } from "./locale.jsx";
|
|
4
|
-
import { createSignal,
|
|
17
|
+
import { createSignal, onSettled } from "solid-js";
|
|
5
18
|
//#region src/toolbar/createToolbar.ts
|
|
6
19
|
/**
|
|
7
20
|
* createToolbar - Accessibility hook for toolbar elements
|
|
@@ -37,8 +50,10 @@ function createFocusManager(ref) {
|
|
|
37
50
|
if (accept) elements = elements.filter(accept);
|
|
38
51
|
if (!current || elements.length === 0) return null;
|
|
39
52
|
let nextIndex = elements.indexOf(current) + 1;
|
|
40
|
-
if (nextIndex >= elements.length)
|
|
41
|
-
|
|
53
|
+
if (nextIndex >= elements.length) {
|
|
54
|
+
if (wrap) nextIndex = 0;
|
|
55
|
+
else return null;
|
|
56
|
+
}
|
|
42
57
|
const nextElement = elements[nextIndex];
|
|
43
58
|
if (nextElement) {
|
|
44
59
|
focusSafely(nextElement);
|
|
@@ -56,8 +71,10 @@ function createFocusManager(ref) {
|
|
|
56
71
|
if (accept) elements = elements.filter(accept);
|
|
57
72
|
if (!current || elements.length === 0) return null;
|
|
58
73
|
let prevIndex = elements.indexOf(current) - 1;
|
|
59
|
-
if (prevIndex < 0)
|
|
60
|
-
|
|
74
|
+
if (prevIndex < 0) {
|
|
75
|
+
if (wrap) prevIndex = elements.length - 1;
|
|
76
|
+
else return null;
|
|
77
|
+
}
|
|
61
78
|
const prevElement = elements[prevIndex];
|
|
62
79
|
if (prevElement) {
|
|
63
80
|
focusSafely(prevElement);
|
|
@@ -118,7 +135,7 @@ function createToolbar(props = {}) {
|
|
|
118
135
|
const ariaLabel = () => access(props["aria-label"]);
|
|
119
136
|
const ariaLabelledby = () => access(props["aria-labelledby"]);
|
|
120
137
|
const focusManager = createFocusManager(() => toolbarRef);
|
|
121
|
-
|
|
138
|
+
onSettled(() => {
|
|
122
139
|
if (toolbarRef) {
|
|
123
140
|
const parentToolbar = toolbarRef.parentElement?.closest("[role=\"toolbar\"]");
|
|
124
141
|
setIsInToolbar(!!parentToolbar);
|
|
@@ -195,7 +212,7 @@ function createToolbar(props = {}) {
|
|
|
195
212
|
el.addEventListener("keydown", onKeyDown, true);
|
|
196
213
|
el.addEventListener("focus", onFocus, true);
|
|
197
214
|
el.addEventListener("blur", onBlur, true);
|
|
198
|
-
|
|
215
|
+
onOwnedCleanup(() => {
|
|
199
216
|
el.removeEventListener("keydown", onKeyDown, true);
|
|
200
217
|
el.removeEventListener("focus", onFocus, true);
|
|
201
218
|
el.removeEventListener("blur", onBlur, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.jsx","names":[],"sources":["../../src/toolbar/createToolbar.ts"],"sourcesContent":["/**\n * createToolbar - Accessibility hook for toolbar elements\n *\n * Provides keyboard navigation between toolbar items using arrow keys.\n * Based on @react-aria/toolbar useToolbar.\n */\n\nimport { createSignal, onMount, onCleanup, type Accessor } from \"solid-js\";\nimport { type MaybeAccessor, access } from \"../utils\";\nimport { useLocale } from \"../i18n\";\nimport { getOwnerDocument, isFocusable, isTabbable } from \"../utils\";\nimport { focusSafely } from \"../utils/focus\";\n\nexport type Orientation = \"horizontal\" | \"vertical\";\n\nexport interface AriaToolbarProps {\n /** The orientation of the toolbar. @default 'horizontal' */\n orientation?: MaybeAccessor<Orientation>;\n /** An accessibility label for the toolbar. */\n \"aria-label\"?: MaybeAccessor<string>;\n /** Identifies the element (or elements) that labels the toolbar. */\n \"aria-labelledby\"?: MaybeAccessor<string>;\n}\n\nexport interface ToolbarAria {\n /** Props for the toolbar container element. */\n toolbarProps: {\n role: \"toolbar\" | \"group\";\n \"aria-orientation\"?: Orientation;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n tabIndex?: number;\n ref: (el: HTMLElement) => void;\n };\n /** The orientation of the toolbar. */\n orientation: Accessor<Orientation>;\n}\n\ninterface FocusManagerOptions {\n from?: Element;\n tabbable?: boolean;\n wrap?: boolean;\n accept?: (node: Element) => boolean;\n}\n\ninterface FocusManager {\n focusNext(opts?: FocusManagerOptions): HTMLElement | null;\n focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;\n focusFirst(opts?: FocusManagerOptions): HTMLElement | null;\n focusLast(opts?: FocusManagerOptions): HTMLElement | null;\n}\n\nfunction getFocusableElements(root: Element, tabbable = false): HTMLElement[] {\n const elements: HTMLElement[] = [];\n const filter = tabbable ? isTabbable : isFocusable;\n\n // Check the root element itself\n if (filter(root)) {\n elements.push(root as HTMLElement);\n }\n\n // Check all descendants\n const descendants = root.querySelectorAll(\"*\");\n for (let i = 0; i < descendants.length; i++) {\n const el = descendants[i];\n if (filter(el)) {\n elements.push(el as HTMLElement);\n }\n }\n\n return elements;\n}\n\nfunction getActiveElement(doc: Document): Element | null {\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot?.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\nfunction createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManager {\n return {\n focusNext(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let nextIndex = currentIndex + 1;\n\n if (nextIndex >= elements.length) {\n if (wrap) {\n nextIndex = 0;\n } else {\n return null;\n }\n }\n\n const nextElement = elements[nextIndex];\n if (nextElement) {\n focusSafely(nextElement);\n return nextElement;\n }\n\n return null;\n },\n\n focusPrevious(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let prevIndex = currentIndex - 1;\n\n if (prevIndex < 0) {\n if (wrap) {\n prevIndex = elements.length - 1;\n } else {\n return null;\n }\n }\n\n const prevElement = elements[prevIndex];\n if (prevElement) {\n focusSafely(prevElement);\n return prevElement;\n }\n\n return null;\n },\n\n focusFirst(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n focusSafely(elements[0]);\n return elements[0];\n }\n\n return null;\n },\n\n focusLast(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n const lastElement = elements[elements.length - 1];\n focusSafely(lastElement);\n return lastElement;\n }\n\n return null;\n },\n };\n}\n\n/**\n * Provides the behavior and accessibility implementation for a toolbar.\n * A toolbar is a container for a set of interactive controls with arrow key navigation.\n *\n * @example\n * ```tsx\n * let ref;\n * const { toolbarProps } = createToolbar({ orientation: 'horizontal' });\n * return (\n * <div {...toolbarProps}>\n * <Button>Cut</Button>\n * <Button>Copy</Button>\n * <Button>Paste</Button>\n * </div>\n * );\n * ```\n */\nexport function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {\n let toolbarRef: HTMLElement | undefined;\n const [isInToolbar, setIsInToolbar] = createSignal(false);\n let lastFocusedElement: Element | null = null;\n\n const locale = useLocale();\n const orientation = () => access(props.orientation) ?? \"horizontal\";\n const ariaLabel = () => access(props[\"aria-label\"]);\n const ariaLabelledby = () => access(props[\"aria-labelledby\"]);\n\n const focusManager = createFocusManager(() => toolbarRef);\n\n // Check if this toolbar is nested inside another toolbar\n onMount(() => {\n if (toolbarRef) {\n const parentToolbar = toolbarRef.parentElement?.closest('[role=\"toolbar\"]');\n setIsInToolbar(!!parentToolbar);\n }\n });\n\n // Keyboard event handler\n const onKeyDown = (e: KeyboardEvent) => {\n const root = toolbarRef;\n if (!root) return;\n\n // Don't handle if nested toolbar (parent handles navigation)\n if (isInToolbar()) return;\n\n const target = e.target;\n if (!(target instanceof Element) || !root.contains(target)) {\n return;\n }\n\n const doc = getOwnerDocument(root);\n\n const dir = locale().direction;\n const isRTL = dir === \"rtl\";\n const isHorizontal = orientation() === \"horizontal\";\n\n let handled = false;\n\n switch (e.key) {\n case \"ArrowRight\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusPrevious({ tabbable: true });\n } else {\n focusManager.focusNext({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowLeft\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusNext({ tabbable: true });\n } else {\n focusManager.focusPrevious({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowDown\":\n if (!isHorizontal) {\n focusManager.focusNext({ tabbable: true });\n handled = true;\n }\n break;\n case \"ArrowUp\":\n if (!isHorizontal) {\n focusManager.focusPrevious({ tabbable: true });\n handled = true;\n }\n break;\n case \"Tab\":\n // Move focus to the first/last child so the browser's own Tab handling\n // then carries focus OUT of the whole toolbar. Faithful to upstream\n // useToolbar: there is no roving tabindex — every item stays tabbable,\n // so a bare Tab would otherwise step to the next item instead of leaving.\n lastFocusedElement = getActiveElement(doc);\n if (e.shiftKey) {\n focusManager.focusFirst({ tabbable: true });\n } else {\n focusManager.focusLast({ tabbable: true });\n }\n return;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // Record the last focused child when focus moves out of the toolbar.\n const onBlur = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n if (!(relatedTarget && root.contains(relatedTarget)) && !lastFocusedElement) {\n lastFocusedElement = e.target as Element;\n }\n };\n\n // Restore focus to the last focused child when focus returns into the toolbar.\n // If that element was removed, focus() is a no-op and the browser lands on the\n // first/last child per direction — matching upstream useToolbar.\n const onFocus = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n const target = e.target;\n if (\n lastFocusedElement &&\n !(relatedTarget && root.contains(relatedTarget)) &&\n target instanceof Node &&\n root.contains(target)\n ) {\n focusSafely(lastFocusedElement as HTMLElement);\n lastFocusedElement = null;\n }\n };\n\n // Set up capture event listeners\n const setRef = (el: HTMLElement) => {\n toolbarRef = el;\n\n // Use capture phase so container handlers run before the focused child's.\n el.addEventListener(\"keydown\", onKeyDown, true);\n el.addEventListener(\"focus\", onFocus, true);\n el.addEventListener(\"blur\", onBlur, true);\n\n onCleanup(() => {\n el.removeEventListener(\"keydown\", onKeyDown, true);\n el.removeEventListener(\"focus\", onFocus, true);\n el.removeEventListener(\"blur\", onBlur, true);\n });\n };\n\n return {\n toolbarProps: {\n get role() {\n return isInToolbar() ? \"group\" : \"toolbar\";\n },\n get \"aria-orientation\"() {\n // Upstream useToolbar emits aria-orientation unconditionally, on the\n // nested role=\"group\" too — not only on the root role=\"toolbar\".\n return orientation();\n },\n get \"aria-label\"() {\n return ariaLabel();\n },\n get \"aria-labelledby\"() {\n // Mirror useToolbar: `aria-label == null ? aria-labelledby : undefined`.\n // An explicit empty-string aria-label still suppresses labelledby.\n return ariaLabel() == null ? ariaLabelledby() : undefined;\n },\n ref: setRef,\n },\n orientation,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolbar.jsx","names":[],"sources":["../../src/toolbar/createToolbar.ts"],"sourcesContent":["/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/toolbar/useToolbar.ts\n\n/**\n * createToolbar - Accessibility hook for toolbar elements\n *\n * Provides keyboard navigation between toolbar items using arrow keys.\n * Based on @react-aria/toolbar useToolbar.\n */\n\nimport {\n type MaybeAccessor,\n access,\n onOwnedCleanup,\n getOwnerDocument,\n isFocusable,\n isTabbable,\n} from \"../utils\";\nimport { createSignal, onSettled } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { useLocale } from \"../i18n\";\nimport { focusSafely } from \"../utils/focus\";\n\nexport type Orientation = \"horizontal\" | \"vertical\";\n\nexport interface AriaToolbarProps {\n /** The orientation of the toolbar. @default 'horizontal' */\n orientation?: MaybeAccessor<Orientation>;\n /** An accessibility label for the toolbar. */\n \"aria-label\"?: MaybeAccessor<string>;\n /** Identifies the element (or elements) that labels the toolbar. */\n \"aria-labelledby\"?: MaybeAccessor<string>;\n}\n\nexport interface ToolbarAria {\n /** Props for the toolbar container element. */\n toolbarProps: {\n role: \"toolbar\" | \"group\";\n \"aria-orientation\"?: Orientation;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n tabIndex?: number;\n ref: (el: HTMLElement) => void;\n };\n /** The orientation of the toolbar. */\n orientation: Accessor<Orientation>;\n}\n\ninterface FocusManagerOptions {\n from?: Element;\n tabbable?: boolean;\n wrap?: boolean;\n accept?: (node: Element) => boolean;\n}\n\ninterface FocusManager {\n focusNext(opts?: FocusManagerOptions): HTMLElement | null;\n focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;\n focusFirst(opts?: FocusManagerOptions): HTMLElement | null;\n focusLast(opts?: FocusManagerOptions): HTMLElement | null;\n}\n\nfunction getFocusableElements(root: Element, tabbable = false): HTMLElement[] {\n const elements: HTMLElement[] = [];\n const filter = tabbable ? isTabbable : isFocusable;\n\n // Check the root element itself\n if (filter(root)) {\n elements.push(root as HTMLElement);\n }\n\n // Check all descendants\n const descendants = root.querySelectorAll(\"*\");\n for (let i = 0; i < descendants.length; i++) {\n const el = descendants[i];\n if (filter(el)) {\n elements.push(el as HTMLElement);\n }\n }\n\n return elements;\n}\n\nfunction getActiveElement(doc: Document): Element | null {\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot?.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\nfunction createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManager {\n return {\n focusNext(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let nextIndex = currentIndex + 1;\n\n if (nextIndex >= elements.length) {\n if (wrap) {\n nextIndex = 0;\n } else {\n return null;\n }\n }\n\n const nextElement = elements[nextIndex];\n if (nextElement) {\n focusSafely(nextElement);\n return nextElement;\n }\n\n return null;\n },\n\n focusPrevious(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { from, tabbable = true, wrap = false, accept } = opts;\n const doc = getOwnerDocument(root);\n const current = from || getActiveElement(doc);\n\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (!current || elements.length === 0) return null;\n\n const currentIndex = elements.indexOf(current as HTMLElement);\n let prevIndex = currentIndex - 1;\n\n if (prevIndex < 0) {\n if (wrap) {\n prevIndex = elements.length - 1;\n } else {\n return null;\n }\n }\n\n const prevElement = elements[prevIndex];\n if (prevElement) {\n focusSafely(prevElement);\n return prevElement;\n }\n\n return null;\n },\n\n focusFirst(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n focusSafely(elements[0]);\n return elements[0];\n }\n\n return null;\n },\n\n focusLast(opts: FocusManagerOptions = {}) {\n const root = ref();\n if (!root) return null;\n\n const { tabbable = true, accept } = opts;\n let elements = getFocusableElements(root, tabbable);\n if (accept) {\n elements = elements.filter(accept);\n }\n\n if (elements.length > 0) {\n const lastElement = elements[elements.length - 1];\n focusSafely(lastElement);\n return lastElement;\n }\n\n return null;\n },\n };\n}\n\n/**\n * Provides the behavior and accessibility implementation for a toolbar.\n * A toolbar is a container for a set of interactive controls with arrow key navigation.\n *\n * @example\n * ```tsx\n * let ref;\n * const { toolbarProps } = createToolbar({ orientation: 'horizontal' });\n * return (\n * <div {...toolbarProps}>\n * <Button>Cut</Button>\n * <Button>Copy</Button>\n * <Button>Paste</Button>\n * </div>\n * );\n * ```\n */\nexport function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {\n let toolbarRef: HTMLElement | undefined;\n const [isInToolbar, setIsInToolbar] = createSignal(false);\n let lastFocusedElement: Element | null = null;\n\n const locale = useLocale();\n const orientation = () => access(props.orientation) ?? \"horizontal\";\n const ariaLabel = () => access(props[\"aria-label\"]);\n const ariaLabelledby = () => access(props[\"aria-labelledby\"]);\n\n const focusManager = createFocusManager(() => toolbarRef);\n\n // Check if this toolbar is nested inside another toolbar\n onSettled(() => {\n if (toolbarRef) {\n const parentToolbar = toolbarRef.parentElement?.closest('[role=\"toolbar\"]');\n setIsInToolbar(!!parentToolbar);\n }\n });\n\n // Keyboard event handler\n const onKeyDown = (e: KeyboardEvent) => {\n const root = toolbarRef;\n if (!root) return;\n\n // Don't handle if nested toolbar (parent handles navigation)\n if (isInToolbar()) return;\n\n const target = e.target;\n if (!(target instanceof Element) || !root.contains(target)) {\n return;\n }\n\n const doc = getOwnerDocument(root);\n\n const dir = locale().direction;\n const isRTL = dir === \"rtl\";\n const isHorizontal = orientation() === \"horizontal\";\n\n let handled = false;\n\n switch (e.key) {\n case \"ArrowRight\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusPrevious({ tabbable: true });\n } else {\n focusManager.focusNext({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowLeft\":\n if (isHorizontal) {\n if (isRTL) {\n focusManager.focusNext({ tabbable: true });\n } else {\n focusManager.focusPrevious({ tabbable: true });\n }\n handled = true;\n }\n break;\n case \"ArrowDown\":\n if (!isHorizontal) {\n focusManager.focusNext({ tabbable: true });\n handled = true;\n }\n break;\n case \"ArrowUp\":\n if (!isHorizontal) {\n focusManager.focusPrevious({ tabbable: true });\n handled = true;\n }\n break;\n case \"Tab\":\n // Move focus to the first/last child so the browser's own Tab handling\n // then carries focus OUT of the whole toolbar. Faithful to upstream\n // useToolbar: there is no roving tabindex — every item stays tabbable,\n // so a bare Tab would otherwise step to the next item instead of leaving.\n lastFocusedElement = getActiveElement(doc);\n if (e.shiftKey) {\n focusManager.focusFirst({ tabbable: true });\n } else {\n focusManager.focusLast({ tabbable: true });\n }\n return;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n // Record the last focused child when focus moves out of the toolbar.\n const onBlur = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n if (!(relatedTarget && root.contains(relatedTarget)) && !lastFocusedElement) {\n lastFocusedElement = e.target as Element;\n }\n };\n\n // Restore focus to the last focused child when focus returns into the toolbar.\n // If that element was removed, focus() is a no-op and the browser lands on the\n // first/last child per direction — matching upstream useToolbar.\n const onFocus = (e: FocusEvent) => {\n const root = toolbarRef;\n if (!root) return;\n if (isInToolbar()) return;\n\n const relatedTarget = e.relatedTarget as Node | null;\n const target = e.target;\n if (\n lastFocusedElement &&\n !(relatedTarget && root.contains(relatedTarget)) &&\n target instanceof Node &&\n root.contains(target)\n ) {\n focusSafely(lastFocusedElement as HTMLElement);\n lastFocusedElement = null;\n }\n };\n\n // Set up capture event listeners\n const setRef = (el: HTMLElement) => {\n toolbarRef = el;\n\n // Use capture phase so container handlers run before the focused child's.\n el.addEventListener(\"keydown\", onKeyDown, true);\n el.addEventListener(\"focus\", onFocus, true);\n el.addEventListener(\"blur\", onBlur, true);\n\n onOwnedCleanup(() => {\n el.removeEventListener(\"keydown\", onKeyDown, true);\n el.removeEventListener(\"focus\", onFocus, true);\n el.removeEventListener(\"blur\", onBlur, true);\n });\n };\n\n return {\n toolbarProps: {\n get role() {\n return isInToolbar() ? \"group\" : \"toolbar\";\n },\n get \"aria-orientation\"() {\n // Upstream useToolbar emits aria-orientation unconditionally, on the\n // nested role=\"group\" too — not only on the root role=\"toolbar\".\n return orientation();\n },\n get \"aria-label\"() {\n return ariaLabel();\n },\n get \"aria-labelledby\"() {\n // Mirror useToolbar: `aria-label == null ? aria-labelledby : undefined`.\n // An explicit empty-string aria-label still suppresses labelledby.\n return ariaLabel() == null ? ariaLabelledby() : undefined;\n },\n ref: setRef,\n },\n orientation,\n };\n}\n"],"mappings":"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"}
|