@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
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 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/i18n/useCollator.ts
|
|
1
13
|
import { a as createCacheKey, i as useLocale } from "./locale.jsx";
|
|
2
14
|
import { createMemo } from "solid-js";
|
|
3
15
|
//#region src/i18n/createCollator.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCollator.jsx","names":[],"sources":["../../src/i18n/createCollator.ts"],"sourcesContent":["/**\n * createCollator hook for solidaria\n *\n * Provides localized string comparison/collation with caching.\n *\n * Port of @react-aria/i18n useCollator.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { useLocale } from \"./locale\";\nimport { createCacheKey } from \"./utils\";\n\nconst collatorCache = new Map<string, Intl.Collator>();\n\n/**\n * Gets or creates a cached collator.\n */\nfunction getCachedCollator(locale: string, options?: Intl.CollatorOptions): Intl.Collator {\n const cacheKey = createCacheKey(locale, options as Record<string, unknown>);\n\n if (collatorCache.has(cacheKey)) {\n return collatorCache.get(cacheKey)!;\n }\n\n const collator = new Intl.Collator(locale, options);\n collatorCache.set(cacheKey, collator);\n return collator;\n}\n\n/**\n * Provides localized string collation for the current locale.\n * Useful for sorting strings according to locale-specific rules.\n *\n * @example\n * ```tsx\n * function SortedList(props: { items: string[] }) {\n * const collator = createCollator();\n *\n * const sortedItems = () =>\n * [...props.items].sort((a, b) => collator().compare(a, b));\n *\n * return (\n * <ul>\n * <For each={sortedItems()}>\n * {(item) => <li>{item}</li>}\n * </For>\n * </ul>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Case-insensitive sorting\n * const collator = createCollator({ sensitivity: 'base' });\n *\n * // Numeric sorting\n * const numericCollator = createCollator({ numeric: true });\n * // ['a1', 'a10', 'a2'].sort(numericCollator().compare) -> ['a1', 'a2', 'a10']\n * ```\n */\nexport function createCollator(options?: Intl.CollatorOptions): () => Intl.Collator {\n const locale = useLocale();\n\n return createMemo(() => getCachedCollator(locale().locale, options));\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createCollator.jsx","names":[],"sources":["../../src/i18n/createCollator.ts"],"sourcesContent":["/*\n * Copyright 2020 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/i18n/useCollator.ts\n\n/**\n * createCollator hook for solidaria\n *\n * Provides localized string comparison/collation with caching.\n *\n * Port of @react-aria/i18n useCollator.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { useLocale } from \"./locale\";\nimport { createCacheKey } from \"./utils\";\n\nconst collatorCache = new Map<string, Intl.Collator>();\n\n/**\n * Gets or creates a cached collator.\n */\nfunction getCachedCollator(locale: string, options?: Intl.CollatorOptions): Intl.Collator {\n const cacheKey = createCacheKey(locale, options as Record<string, unknown>);\n\n if (collatorCache.has(cacheKey)) {\n return collatorCache.get(cacheKey)!;\n }\n\n const collator = new Intl.Collator(locale, options);\n collatorCache.set(cacheKey, collator);\n return collator;\n}\n\n/**\n * Provides localized string collation for the current locale.\n * Useful for sorting strings according to locale-specific rules.\n *\n * @example\n * ```tsx\n * function SortedList(props: { items: string[] }) {\n * const collator = createCollator();\n *\n * const sortedItems = () =>\n * [...props.items].sort((a, b) => collator().compare(a, b));\n *\n * return (\n * <ul>\n * <For each={sortedItems()}>\n * {(item) => <li>{item}</li>}\n * </For>\n * </ul>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Case-insensitive sorting\n * const collator = createCollator({ sensitivity: 'base' });\n *\n * // Numeric sorting\n * const numericCollator = createCollator({ numeric: true });\n * // ['a1', 'a10', 'a2'].sort(numericCollator().compare) -> ['a1', 'a2', 'a10']\n * ```\n */\nexport function createCollator(options?: Intl.CollatorOptions): () => Intl.Collator {\n const locale = useLocale();\n\n return createMemo(() => getCachedCollator(locale().locale, options));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,gCAAgB,IAAI,IAA2B;;;;AAKrD,SAAS,kBAAkB,QAAgB,SAA+C;CACxF,MAAM,WAAW,eAAe,QAAQ,OAAkC;CAE1E,IAAI,cAAc,IAAI,QAAQ,GAC5B,OAAO,cAAc,IAAI,QAAQ;CAGnC,MAAM,WAAW,IAAI,KAAK,SAAS,QAAQ,OAAO;CAClD,cAAc,IAAI,UAAU,QAAQ;CACpC,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,SAAgB,eAAe,SAAqD;CAClF,MAAM,SAAS,UAAU;CAEzB,OAAO,iBAAiB,kBAAkB,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC;AACrE"}
|
|
@@ -1,6 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 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/gridlist/useGridListItem.ts
|
|
13
|
+
import { _ as scrollIntoViewport } from "./utils.js";
|
|
14
|
+
import { c as getScrollParent, f as isFocusable, i as getFocusableTreeWalker, n as getActiveElement, r as getEventTarget, v as nodeContains, w as focusSafely } from "./dom.js";
|
|
3
15
|
//#region src/selection/createCollectionRowInteraction.ts
|
|
16
|
+
/**
|
|
17
|
+
* Nested ActionMenu / checkbox widgets in an arrow-nav row are focusable but
|
|
18
|
+
* `tabIndex=-1`, so `isTabbable` misses them. Walk to the nearest focusable
|
|
19
|
+
* ancestor inside the row (the event target is often an SVG inside the trigger).
|
|
20
|
+
*/
|
|
21
|
+
function isNestedFocusableChild(row, target) {
|
|
22
|
+
let el = target;
|
|
23
|
+
while (el && el !== row) {
|
|
24
|
+
if (isFocusable(el)) return true;
|
|
25
|
+
el = el.parentElement;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
4
29
|
function lastFocusable(walker) {
|
|
5
30
|
let last = null;
|
|
6
31
|
let next;
|
|
@@ -36,6 +61,7 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
36
61
|
const baseOnKeyDown = rowProps.onKeyDown;
|
|
37
62
|
const baseOnPointerDown = rowProps.onPointerDown;
|
|
38
63
|
const baseOnMouseDown = rowProps.onMouseDown;
|
|
64
|
+
const baseOnClick = rowProps.onClick;
|
|
39
65
|
const onKeyDownCapture = (event) => {
|
|
40
66
|
const row = options.ref();
|
|
41
67
|
const activeElement = getActiveElement(row?.ownerDocument);
|
|
@@ -43,6 +69,11 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
43
69
|
baseOnKeyDownCapture?.(event);
|
|
44
70
|
return;
|
|
45
71
|
}
|
|
72
|
+
if (options.onBeforeArrowNavigation?.(event)) return;
|
|
73
|
+
if (options.layout?.() === "grid" && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
|
|
74
|
+
baseOnKeyDownCapture?.(event);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
46
77
|
const direction = options.direction?.() ?? "ltr";
|
|
47
78
|
const walker = getFocusableTreeWalker(row);
|
|
48
79
|
walker.currentNode = activeElement;
|
|
@@ -74,13 +105,11 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
74
105
|
break;
|
|
75
106
|
}
|
|
76
107
|
case "ArrowUp":
|
|
77
|
-
case "ArrowDown":
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
108
|
+
case "ArrowDown": if (!event.altKey) {
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
event.stopPropagation();
|
|
111
|
+
redispatchCollectionArrowKey(row, event);
|
|
112
|
+
}
|
|
84
113
|
}
|
|
85
114
|
if (!event.cancelBubble) baseOnKeyDownCapture?.(event);
|
|
86
115
|
};
|
|
@@ -104,7 +133,7 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
104
133
|
const onPointerDown = (event) => {
|
|
105
134
|
const row = options.ref();
|
|
106
135
|
const target = getEventTarget(event);
|
|
107
|
-
if (row && target && target !== row &&
|
|
136
|
+
if (row && target && target !== row && isNestedFocusableChild(row, target)) {
|
|
108
137
|
event.stopPropagation();
|
|
109
138
|
return;
|
|
110
139
|
}
|
|
@@ -113,18 +142,26 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
113
142
|
const onMouseDown = (event) => {
|
|
114
143
|
const row = options.ref();
|
|
115
144
|
const target = getEventTarget(event);
|
|
116
|
-
if (row && target && target !== row &&
|
|
145
|
+
if (row && target && target !== row && isNestedFocusableChild(row, target)) {
|
|
117
146
|
event.stopPropagation();
|
|
118
147
|
return;
|
|
119
148
|
}
|
|
120
149
|
baseOnMouseDown?.(event);
|
|
121
150
|
};
|
|
151
|
+
const onClick = (event) => {
|
|
152
|
+
const row = options.ref();
|
|
153
|
+
const target = getEventTarget(event);
|
|
154
|
+
if (row && target && target !== row && isNestedFocusableChild(row, target)) return;
|
|
155
|
+
baseOnClick?.(event);
|
|
156
|
+
};
|
|
157
|
+
const captureHandler = options.keyboardNavigationBehavior() === "arrow" ? onKeyDownCapture : baseOnKeyDownCapture;
|
|
122
158
|
return {
|
|
123
159
|
...rowProps,
|
|
124
|
-
onKeyDownCapture:
|
|
160
|
+
onKeyDownCapture: captureHandler,
|
|
125
161
|
onKeyDown,
|
|
126
162
|
onPointerDown,
|
|
127
|
-
onMouseDown
|
|
163
|
+
onMouseDown,
|
|
164
|
+
onClick
|
|
128
165
|
};
|
|
129
166
|
}
|
|
130
167
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCollectionRowInteraction.js","names":[],"sources":["../../src/selection/createCollectionRowInteraction.ts"],"sourcesContent":["import type { Accessor, JSX } from \"solid-js\";\nimport {\n getActiveElement,\n getEventTarget,\n getFocusableTreeWalker,\n getScrollParent,\n isTabbable,\n nodeContains,\n} from \"../utils/dom\";\nimport { focusSafely } from \"../utils/focus\";\nimport { scrollIntoViewport } from \"../utils/scrollIntoView\";\n\ntype KeyboardNavigationBehavior = \"arrow\" | \"tab\";\n\ninterface CollectionRowInteractionOptions {\n ref: Accessor<HTMLElement | null>;\n keyboardNavigationBehavior: Accessor<KeyboardNavigationBehavior>;\n direction?: Accessor<\"ltr\" | \"rtl\">;\n}\n\ntype CollectionRowInteractionProps<T extends HTMLElement> = JSX.HTMLAttributes<T> & {\n onKeyDownCapture?: JSX.EventHandler<T, KeyboardEvent>;\n};\n\nfunction lastFocusable(walker: TreeWalker): HTMLElement | null {\n let last: Node | null = null;\n let next: Node | null;\n while ((next = walker.nextNode())) {\n last = next;\n }\n return last instanceof HTMLElement ? last : null;\n}\n\nfunction scrollFocusedElementIntoView(row: HTMLElement, element: HTMLElement): void {\n focusSafely(element);\n scrollIntoViewport(element, { containingElement: getScrollParent(row) });\n}\n\nfunction redispatchCollectionArrowKey(row: HTMLElement, event: KeyboardEvent): void {\n row.parentElement?.dispatchEvent(\n new KeyboardEvent(event.type, {\n altKey: event.altKey,\n bubbles: true,\n cancelable: event.cancelable,\n code: event.code,\n composed: event.composed,\n ctrlKey: event.ctrlKey,\n key: event.key,\n location: event.location,\n metaKey: event.metaKey,\n repeat: event.repeat,\n shiftKey: event.shiftKey,\n }),\n );\n}\n\nfunction shouldIgnoreRowEvent(event: Event, row: HTMLElement): boolean {\n const target = getEventTarget<Element>(event);\n const currentTarget = event.currentTarget as Element | null;\n return (\n !target || !currentTarget || !nodeContains(currentTarget, target) || !nodeContains(row, target)\n );\n}\n\nexport function mergeCollectionRowInteractionProps<T extends HTMLElement>(\n rowProps: CollectionRowInteractionProps<T>,\n options: CollectionRowInteractionOptions,\n): CollectionRowInteractionProps<T> {\n const baseOnKeyDownCapture = rowProps.onKeyDownCapture as\n | ((event: KeyboardEvent) => void)\n | undefined;\n const baseOnKeyDown = rowProps.onKeyDown as ((event: KeyboardEvent) => void) | undefined;\n const baseOnPointerDown = rowProps.onPointerDown as ((event: PointerEvent) => void) | undefined;\n const baseOnMouseDown = rowProps.onMouseDown as ((event: MouseEvent) => void) | undefined;\n\n const onKeyDownCapture = (event: KeyboardEvent) => {\n const row = options.ref();\n const activeElement = getActiveElement(row?.ownerDocument);\n if (\n options.keyboardNavigationBehavior() !== \"arrow\" ||\n !row ||\n !activeElement ||\n shouldIgnoreRowEvent(event, row)\n ) {\n baseOnKeyDownCapture?.(event);\n return;\n }\n\n const direction = options.direction?.() ?? \"ltr\";\n const walker = getFocusableTreeWalker(row);\n walker.currentNode = activeElement;\n\n switch (event.key) {\n case \"ArrowLeft\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.nextNode() as HTMLElement | null)\n : (walker.previousNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"rtl\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowRight\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.previousNode() as HTMLElement | null)\n : (walker.nextNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"ltr\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowUp\":\n case \"ArrowDown\": {\n if (!event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n redispatchCollectionArrowKey(row, event);\n }\n break;\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDownCapture?.(event);\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n const activeElement = getActiveElement(row?.ownerDocument);\n\n if (row && target && activeElement && !shouldIgnoreRowEvent(event, row)) {\n if (options.keyboardNavigationBehavior() === \"tab\" && target !== row && event.key !== \"Tab\") {\n event.stopPropagation();\n return;\n }\n\n if (options.keyboardNavigationBehavior() === \"tab\" && event.key === \"Tab\") {\n const walker = getFocusableTreeWalker(row, { tabbable: true });\n walker.currentNode = activeElement;\n const next = event.shiftKey ? walker.previousNode() : walker.nextNode();\n\n if (next) {\n event.stopPropagation();\n }\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDown?.(event);\n }\n };\n\n const onPointerDown = (event: PointerEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isTabbable(target)) {\n event.stopPropagation();\n return;\n }\n baseOnPointerDown?.(event);\n };\n\n const onMouseDown = (event: MouseEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isTabbable(target)) {\n event.stopPropagation();\n return;\n }\n baseOnMouseDown?.(event);\n };\n\n return {\n ...rowProps,\n onKeyDownCapture:\n options.keyboardNavigationBehavior() === \"arrow\" ? onKeyDownCapture : baseOnKeyDownCapture,\n onKeyDown,\n onPointerDown,\n onMouseDown,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createCollectionRowInteraction.js","names":[],"sources":["../../src/selection/createCollectionRowInteraction.ts"],"sourcesContent":["/*\n * Copyright 2022 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/gridlist/useGridListItem.ts\n\nimport type { Accessor } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n getActiveElement,\n getEventTarget,\n getFocusableTreeWalker,\n getScrollParent,\n isFocusable,\n nodeContains,\n} from \"../utils/dom\";\nimport { focusSafely } from \"../utils/focus\";\nimport { scrollIntoViewport } from \"../utils/scrollIntoView\";\n\ntype KeyboardNavigationBehavior = \"arrow\" | \"tab\";\n\ninterface CollectionRowInteractionOptions {\n ref: Accessor<HTMLElement | null>;\n keyboardNavigationBehavior: Accessor<KeyboardNavigationBehavior>;\n direction?: Accessor<\"ltr\" | \"rtl\">;\n /**\n * `\"grid\"` skips intra-row Left/Right so the collection can move between\n * columns (S2 CardView `layout=\"grid\"`).\n */\n layout?: Accessor<\"stack\" | \"grid\">;\n /**\n * Tree expansion/collapse runs in capture before intra-row arrow walking,\n * matching RAC `handleTreeExpansionKeys`. Return true if the key was handled.\n */\n onBeforeArrowNavigation?: (event: KeyboardEvent) => boolean;\n}\n\ntype CollectionRowInteractionProps<T extends HTMLElement> = JSX.HTMLAttributes<T> & {\n onKeyDownCapture?: JSX.EventHandler<T, KeyboardEvent>;\n};\n\n/**\n * Nested ActionMenu / checkbox widgets in an arrow-nav row are focusable but\n * `tabIndex=-1`, so `isTabbable` misses them. Walk to the nearest focusable\n * ancestor inside the row (the event target is often an SVG inside the trigger).\n */\nfunction isNestedFocusableChild(row: Element, target: Element): boolean {\n let el: Element | null = target;\n while (el && el !== row) {\n if (isFocusable(el)) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n}\n\nfunction lastFocusable(walker: TreeWalker): HTMLElement | null {\n let last: Node | null = null;\n let next: Node | null;\n while ((next = walker.nextNode())) {\n last = next;\n }\n return last instanceof HTMLElement ? last : null;\n}\n\nfunction scrollFocusedElementIntoView(row: HTMLElement, element: HTMLElement): void {\n focusSafely(element);\n scrollIntoViewport(element, { containingElement: getScrollParent(row) });\n}\n\nfunction redispatchCollectionArrowKey(row: HTMLElement, event: KeyboardEvent): void {\n row.parentElement?.dispatchEvent(\n new KeyboardEvent(event.type, {\n altKey: event.altKey,\n bubbles: true,\n cancelable: event.cancelable,\n code: event.code,\n composed: event.composed,\n ctrlKey: event.ctrlKey,\n key: event.key,\n location: event.location,\n metaKey: event.metaKey,\n repeat: event.repeat,\n shiftKey: event.shiftKey,\n }),\n );\n}\n\nfunction shouldIgnoreRowEvent(event: Event, row: HTMLElement): boolean {\n const target = getEventTarget<Element>(event);\n const currentTarget = event.currentTarget as Element | null;\n return (\n !target || !currentTarget || !nodeContains(currentTarget, target) || !nodeContains(row, target)\n );\n}\n\nexport function mergeCollectionRowInteractionProps<T extends HTMLElement>(\n rowProps: CollectionRowInteractionProps<T>,\n options: CollectionRowInteractionOptions,\n): CollectionRowInteractionProps<T> {\n const baseOnKeyDownCapture = rowProps.onKeyDownCapture as\n | ((event: KeyboardEvent) => void)\n | undefined;\n const baseOnKeyDown = rowProps.onKeyDown as ((event: KeyboardEvent) => void) | undefined;\n const baseOnPointerDown = rowProps.onPointerDown as ((event: PointerEvent) => void) | undefined;\n const baseOnMouseDown = rowProps.onMouseDown as ((event: MouseEvent) => void) | undefined;\n const baseOnClick = rowProps.onClick as ((event: MouseEvent) => void) | undefined;\n\n const onKeyDownCapture = (event: KeyboardEvent) => {\n const row = options.ref();\n const activeElement = getActiveElement(row?.ownerDocument);\n if (\n options.keyboardNavigationBehavior() !== \"arrow\" ||\n !row ||\n !activeElement ||\n shouldIgnoreRowEvent(event, row)\n ) {\n baseOnKeyDownCapture?.(event);\n return;\n }\n\n if (options.onBeforeArrowNavigation?.(event)) {\n return;\n }\n\n if (\n options.layout?.() === \"grid\" &&\n (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\")\n ) {\n baseOnKeyDownCapture?.(event);\n return;\n }\n\n const direction = options.direction?.() ?? \"ltr\";\n const walker = getFocusableTreeWalker(row);\n walker.currentNode = activeElement;\n\n switch (event.key) {\n case \"ArrowLeft\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.nextNode() as HTMLElement | null)\n : (walker.previousNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"rtl\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowRight\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.previousNode() as HTMLElement | null)\n : (walker.nextNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"ltr\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowUp\":\n case \"ArrowDown\": {\n if (!event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n redispatchCollectionArrowKey(row, event);\n }\n break;\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDownCapture?.(event);\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n const activeElement = getActiveElement(row?.ownerDocument);\n\n if (row && target && activeElement && !shouldIgnoreRowEvent(event, row)) {\n if (options.keyboardNavigationBehavior() === \"tab\" && target !== row && event.key !== \"Tab\") {\n event.stopPropagation();\n return;\n }\n\n if (options.keyboardNavigationBehavior() === \"tab\" && event.key === \"Tab\") {\n const walker = getFocusableTreeWalker(row, { tabbable: true });\n walker.currentNode = activeElement;\n const next = event.shiftKey ? walker.previousNode() : walker.nextNode();\n\n if (next) {\n event.stopPropagation();\n }\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDown?.(event);\n }\n };\n\n const onPointerDown = (event: PointerEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isNestedFocusableChild(row, target)) {\n event.stopPropagation();\n return;\n }\n baseOnPointerDown?.(event);\n };\n\n const onMouseDown = (event: MouseEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isNestedFocusableChild(row, target)) {\n event.stopPropagation();\n return;\n }\n baseOnMouseDown?.(event);\n };\n\n const onClick = (event: MouseEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isNestedFocusableChild(row, target)) {\n return;\n }\n baseOnClick?.(event);\n };\n\n const captureHandler =\n options.keyboardNavigationBehavior() === \"arrow\" ? onKeyDownCapture : baseOnKeyDownCapture;\n\n return {\n ...rowProps,\n // Solid 2 has no capture JSX. The live binding is `bindCapture` in\n // createGridListItem / createTreeItem. Keep the RAC name so unit tests\n // can still invoke the handler off rowProps.\n onKeyDownCapture: captureHandler,\n onKeyDown,\n onPointerDown,\n onMouseDown,\n onClick,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsDA,SAAS,uBAAuB,KAAc,QAA0B;CACtE,IAAI,KAAqB;CACzB,OAAO,MAAM,OAAO,KAAK;EACvB,IAAI,YAAY,EAAE,GAChB,OAAO;EAET,KAAK,GAAG;CACV;CACA,OAAO;AACT;AAEA,SAAS,cAAc,QAAwC;CAC7D,IAAI,OAAoB;CACxB,IAAI;CACJ,OAAQ,OAAO,OAAO,SAAS,GAC7B,OAAO;CAET,OAAO,gBAAgB,cAAc,OAAO;AAC9C;AAEA,SAAS,6BAA6B,KAAkB,SAA4B;CAClF,YAAY,OAAO;CACnB,mBAAmB,SAAS,EAAE,mBAAmB,gBAAgB,GAAG,EAAE,CAAC;AACzE;AAEA,SAAS,6BAA6B,KAAkB,OAA4B;CAClF,IAAI,eAAe,cACjB,IAAI,cAAc,MAAM,MAAM;EAC5B,QAAQ,MAAM;EACd,SAAS;EACT,YAAY,MAAM;EAClB,MAAM,MAAM;EACZ,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,KAAK,MAAM;EACX,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,UAAU,MAAM;CAClB,CAAC,CACH;AACF;AAEA,SAAS,qBAAqB,OAAc,KAA2B;CACrE,MAAM,SAAS,eAAwB,KAAK;CAC5C,MAAM,gBAAgB,MAAM;CAC5B,OACE,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,eAAe,MAAM,KAAK,CAAC,aAAa,KAAK,MAAM;AAElG;AAEA,SAAgB,mCACd,UACA,SACkC;CAClC,MAAM,uBAAuB,SAAS;CAGtC,MAAM,gBAAgB,SAAS;CAC/B,MAAM,oBAAoB,SAAS;CACnC,MAAM,kBAAkB,SAAS;CACjC,MAAM,cAAc,SAAS;CAE7B,MAAM,oBAAoB,UAAyB;EACjD,MAAM,MAAM,QAAQ,IAAI;EACxB,MAAM,gBAAgB,iBAAiB,KAAK,aAAa;EACzD,IACE,QAAQ,2BAA2B,MAAM,WACzC,CAAC,OACD,CAAC,iBACD,qBAAqB,OAAO,GAAG,GAC/B;GACA,uBAAuB,KAAK;GAC5B;EACF;EAEA,IAAI,QAAQ,0BAA0B,KAAK,GACzC;EAGF,IACE,QAAQ,SAAS,MAAM,WACtB,MAAM,QAAQ,eAAe,MAAM,QAAQ,eAC5C;GACA,uBAAuB,KAAK;GAC5B;EACF;EAEA,MAAM,YAAY,QAAQ,YAAY,KAAK;EAC3C,MAAM,SAAS,uBAAuB,GAAG;EACzC,OAAO,cAAc;EAErB,QAAQ,MAAM,KAAd;GACE,KAAK,aAAa;IAChB,MAAM,YACJ,cAAc,QACT,OAAO,SAAS,IAChB,OAAO,aAAa;IAE3B,MAAM,eAAe;IACrB,MAAM,gBAAgB;IAEtB,IAAI,WACF,6BAA6B,KAAK,SAAS;SACtC,IAAI,cAAc,OACvB,6BAA6B,KAAK,GAAG;SAChC;KACL,OAAO,cAAc;KACrB,MAAM,cAAc,cAAc,MAAM;KACxC,IAAI,aACF,6BAA6B,KAAK,WAAW;IAEjD;IACA;GACF;GACA,KAAK,cAAc;IACjB,MAAM,YACJ,cAAc,QACT,OAAO,aAAa,IACpB,OAAO,SAAS;IAEvB,MAAM,eAAe;IACrB,MAAM,gBAAgB;IAEtB,IAAI,WACF,6BAA6B,KAAK,SAAS;SACtC,IAAI,cAAc,OACvB,6BAA6B,KAAK,GAAG;SAChC;KACL,OAAO,cAAc;KACrB,MAAM,cAAc,cAAc,MAAM;KACxC,IAAI,aACF,6BAA6B,KAAK,WAAW;IAEjD;IACA;GACF;GACA,KAAK;GACL,KAAK,aACH,IAAI,CAAC,MAAM,QAAQ;IACjB,MAAM,eAAe;IACrB,MAAM,gBAAgB;IACtB,6BAA6B,KAAK,KAAK;GACzC;EAGJ;EAEA,IAAI,CAAC,MAAM,cACT,uBAAuB,KAAK;CAEhC;CAEA,MAAM,aAAa,UAAyB;EAC1C,MAAM,MAAM,QAAQ,IAAI;EACxB,MAAM,SAAS,eAAwB,KAAK;EAC5C,MAAM,gBAAgB,iBAAiB,KAAK,aAAa;EAEzD,IAAI,OAAO,UAAU,iBAAiB,CAAC,qBAAqB,OAAO,GAAG,GAAG;GACvE,IAAI,QAAQ,2BAA2B,MAAM,SAAS,WAAW,OAAO,MAAM,QAAQ,OAAO;IAC3F,MAAM,gBAAgB;IACtB;GACF;GAEA,IAAI,QAAQ,2BAA2B,MAAM,SAAS,MAAM,QAAQ,OAAO;IACzE,MAAM,SAAS,uBAAuB,KAAK,EAAE,UAAU,KAAK,CAAC;IAC7D,OAAO,cAAc;IAGrB,IAFa,MAAM,WAAW,OAAO,aAAa,IAAI,OAAO,SAAS,GAGpE,MAAM,gBAAgB;GAE1B;EACF;EAEA,IAAI,CAAC,MAAM,cACT,gBAAgB,KAAK;CAEzB;CAEA,MAAM,iBAAiB,UAAwB;EAC7C,MAAM,MAAM,QAAQ,IAAI;EACxB,MAAM,SAAS,eAAwB,KAAK;EAC5C,IAAI,OAAO,UAAU,WAAW,OAAO,uBAAuB,KAAK,MAAM,GAAG;GAC1E,MAAM,gBAAgB;GACtB;EACF;EACA,oBAAoB,KAAK;CAC3B;CAEA,MAAM,eAAe,UAAsB;EACzC,MAAM,MAAM,QAAQ,IAAI;EACxB,MAAM,SAAS,eAAwB,KAAK;EAC5C,IAAI,OAAO,UAAU,WAAW,OAAO,uBAAuB,KAAK,MAAM,GAAG;GAC1E,MAAM,gBAAgB;GACtB;EACF;EACA,kBAAkB,KAAK;CACzB;CAEA,MAAM,WAAW,UAAsB;EACrC,MAAM,MAAM,QAAQ,IAAI;EACxB,MAAM,SAAS,eAAwB,KAAK;EAC5C,IAAI,OAAO,UAAU,WAAW,OAAO,uBAAuB,KAAK,MAAM,GACvE;EAEF,cAAc,KAAK;CACrB;CAEA,MAAM,iBACJ,QAAQ,2BAA2B,MAAM,UAAU,mBAAmB;CAExE,OAAO;EACL,GAAG;EAIH,kBAAkB;EAClB;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -1,6 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 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/gridlist/useGridListItem.ts
|
|
13
|
+
import { _ as scrollIntoViewport } from "./utils.jsx";
|
|
14
|
+
import { c as getScrollParent, f as isFocusable, i as getFocusableTreeWalker, n as getActiveElement, r as getEventTarget, v as nodeContains, w as focusSafely } from "./dom.jsx";
|
|
3
15
|
//#region src/selection/createCollectionRowInteraction.ts
|
|
16
|
+
/**
|
|
17
|
+
* Nested ActionMenu / checkbox widgets in an arrow-nav row are focusable but
|
|
18
|
+
* `tabIndex=-1`, so `isTabbable` misses them. Walk to the nearest focusable
|
|
19
|
+
* ancestor inside the row (the event target is often an SVG inside the trigger).
|
|
20
|
+
*/
|
|
21
|
+
function isNestedFocusableChild(row, target) {
|
|
22
|
+
let el = target;
|
|
23
|
+
while (el && el !== row) {
|
|
24
|
+
if (isFocusable(el)) return true;
|
|
25
|
+
el = el.parentElement;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
4
29
|
function lastFocusable(walker) {
|
|
5
30
|
let last = null;
|
|
6
31
|
let next;
|
|
@@ -36,6 +61,7 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
36
61
|
const baseOnKeyDown = rowProps.onKeyDown;
|
|
37
62
|
const baseOnPointerDown = rowProps.onPointerDown;
|
|
38
63
|
const baseOnMouseDown = rowProps.onMouseDown;
|
|
64
|
+
const baseOnClick = rowProps.onClick;
|
|
39
65
|
const onKeyDownCapture = (event) => {
|
|
40
66
|
const row = options.ref();
|
|
41
67
|
const activeElement = getActiveElement(row?.ownerDocument);
|
|
@@ -43,6 +69,11 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
43
69
|
baseOnKeyDownCapture?.(event);
|
|
44
70
|
return;
|
|
45
71
|
}
|
|
72
|
+
if (options.onBeforeArrowNavigation?.(event)) return;
|
|
73
|
+
if (options.layout?.() === "grid" && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
|
|
74
|
+
baseOnKeyDownCapture?.(event);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
46
77
|
const direction = options.direction?.() ?? "ltr";
|
|
47
78
|
const walker = getFocusableTreeWalker(row);
|
|
48
79
|
walker.currentNode = activeElement;
|
|
@@ -74,13 +105,11 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
74
105
|
break;
|
|
75
106
|
}
|
|
76
107
|
case "ArrowUp":
|
|
77
|
-
case "ArrowDown":
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
108
|
+
case "ArrowDown": if (!event.altKey) {
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
event.stopPropagation();
|
|
111
|
+
redispatchCollectionArrowKey(row, event);
|
|
112
|
+
}
|
|
84
113
|
}
|
|
85
114
|
if (!event.cancelBubble) baseOnKeyDownCapture?.(event);
|
|
86
115
|
};
|
|
@@ -104,7 +133,7 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
104
133
|
const onPointerDown = (event) => {
|
|
105
134
|
const row = options.ref();
|
|
106
135
|
const target = getEventTarget(event);
|
|
107
|
-
if (row && target && target !== row &&
|
|
136
|
+
if (row && target && target !== row && isNestedFocusableChild(row, target)) {
|
|
108
137
|
event.stopPropagation();
|
|
109
138
|
return;
|
|
110
139
|
}
|
|
@@ -113,18 +142,26 @@ function mergeCollectionRowInteractionProps(rowProps, options) {
|
|
|
113
142
|
const onMouseDown = (event) => {
|
|
114
143
|
const row = options.ref();
|
|
115
144
|
const target = getEventTarget(event);
|
|
116
|
-
if (row && target && target !== row &&
|
|
145
|
+
if (row && target && target !== row && isNestedFocusableChild(row, target)) {
|
|
117
146
|
event.stopPropagation();
|
|
118
147
|
return;
|
|
119
148
|
}
|
|
120
149
|
baseOnMouseDown?.(event);
|
|
121
150
|
};
|
|
151
|
+
const onClick = (event) => {
|
|
152
|
+
const row = options.ref();
|
|
153
|
+
const target = getEventTarget(event);
|
|
154
|
+
if (row && target && target !== row && isNestedFocusableChild(row, target)) return;
|
|
155
|
+
baseOnClick?.(event);
|
|
156
|
+
};
|
|
157
|
+
const captureHandler = options.keyboardNavigationBehavior() === "arrow" ? onKeyDownCapture : baseOnKeyDownCapture;
|
|
122
158
|
return {
|
|
123
159
|
...rowProps,
|
|
124
|
-
onKeyDownCapture:
|
|
160
|
+
onKeyDownCapture: captureHandler,
|
|
125
161
|
onKeyDown,
|
|
126
162
|
onPointerDown,
|
|
127
|
-
onMouseDown
|
|
163
|
+
onMouseDown,
|
|
164
|
+
onClick
|
|
128
165
|
};
|
|
129
166
|
}
|
|
130
167
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCollectionRowInteraction.jsx","names":[],"sources":["../../src/selection/createCollectionRowInteraction.ts"],"sourcesContent":["import type { Accessor, JSX } from \"solid-js\";\nimport {\n getActiveElement,\n getEventTarget,\n getFocusableTreeWalker,\n getScrollParent,\n isTabbable,\n nodeContains,\n} from \"../utils/dom\";\nimport { focusSafely } from \"../utils/focus\";\nimport { scrollIntoViewport } from \"../utils/scrollIntoView\";\n\ntype KeyboardNavigationBehavior = \"arrow\" | \"tab\";\n\ninterface CollectionRowInteractionOptions {\n ref: Accessor<HTMLElement | null>;\n keyboardNavigationBehavior: Accessor<KeyboardNavigationBehavior>;\n direction?: Accessor<\"ltr\" | \"rtl\">;\n}\n\ntype CollectionRowInteractionProps<T extends HTMLElement> = JSX.HTMLAttributes<T> & {\n onKeyDownCapture?: JSX.EventHandler<T, KeyboardEvent>;\n};\n\nfunction lastFocusable(walker: TreeWalker): HTMLElement | null {\n let last: Node | null = null;\n let next: Node | null;\n while ((next = walker.nextNode())) {\n last = next;\n }\n return last instanceof HTMLElement ? last : null;\n}\n\nfunction scrollFocusedElementIntoView(row: HTMLElement, element: HTMLElement): void {\n focusSafely(element);\n scrollIntoViewport(element, { containingElement: getScrollParent(row) });\n}\n\nfunction redispatchCollectionArrowKey(row: HTMLElement, event: KeyboardEvent): void {\n row.parentElement?.dispatchEvent(\n new KeyboardEvent(event.type, {\n altKey: event.altKey,\n bubbles: true,\n cancelable: event.cancelable,\n code: event.code,\n composed: event.composed,\n ctrlKey: event.ctrlKey,\n key: event.key,\n location: event.location,\n metaKey: event.metaKey,\n repeat: event.repeat,\n shiftKey: event.shiftKey,\n }),\n );\n}\n\nfunction shouldIgnoreRowEvent(event: Event, row: HTMLElement): boolean {\n const target = getEventTarget<Element>(event);\n const currentTarget = event.currentTarget as Element | null;\n return (\n !target || !currentTarget || !nodeContains(currentTarget, target) || !nodeContains(row, target)\n );\n}\n\nexport function mergeCollectionRowInteractionProps<T extends HTMLElement>(\n rowProps: CollectionRowInteractionProps<T>,\n options: CollectionRowInteractionOptions,\n): CollectionRowInteractionProps<T> {\n const baseOnKeyDownCapture = rowProps.onKeyDownCapture as\n | ((event: KeyboardEvent) => void)\n | undefined;\n const baseOnKeyDown = rowProps.onKeyDown as ((event: KeyboardEvent) => void) | undefined;\n const baseOnPointerDown = rowProps.onPointerDown as ((event: PointerEvent) => void) | undefined;\n const baseOnMouseDown = rowProps.onMouseDown as ((event: MouseEvent) => void) | undefined;\n\n const onKeyDownCapture = (event: KeyboardEvent) => {\n const row = options.ref();\n const activeElement = getActiveElement(row?.ownerDocument);\n if (\n options.keyboardNavigationBehavior() !== \"arrow\" ||\n !row ||\n !activeElement ||\n shouldIgnoreRowEvent(event, row)\n ) {\n baseOnKeyDownCapture?.(event);\n return;\n }\n\n const direction = options.direction?.() ?? \"ltr\";\n const walker = getFocusableTreeWalker(row);\n walker.currentNode = activeElement;\n\n switch (event.key) {\n case \"ArrowLeft\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.nextNode() as HTMLElement | null)\n : (walker.previousNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"rtl\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowRight\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.previousNode() as HTMLElement | null)\n : (walker.nextNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"ltr\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowUp\":\n case \"ArrowDown\": {\n if (!event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n redispatchCollectionArrowKey(row, event);\n }\n break;\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDownCapture?.(event);\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n const activeElement = getActiveElement(row?.ownerDocument);\n\n if (row && target && activeElement && !shouldIgnoreRowEvent(event, row)) {\n if (options.keyboardNavigationBehavior() === \"tab\" && target !== row && event.key !== \"Tab\") {\n event.stopPropagation();\n return;\n }\n\n if (options.keyboardNavigationBehavior() === \"tab\" && event.key === \"Tab\") {\n const walker = getFocusableTreeWalker(row, { tabbable: true });\n walker.currentNode = activeElement;\n const next = event.shiftKey ? walker.previousNode() : walker.nextNode();\n\n if (next) {\n event.stopPropagation();\n }\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDown?.(event);\n }\n };\n\n const onPointerDown = (event: PointerEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isTabbable(target)) {\n event.stopPropagation();\n return;\n }\n baseOnPointerDown?.(event);\n };\n\n const onMouseDown = (event: MouseEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isTabbable(target)) {\n event.stopPropagation();\n return;\n }\n baseOnMouseDown?.(event);\n };\n\n return {\n ...rowProps,\n onKeyDownCapture:\n options.keyboardNavigationBehavior() === \"arrow\" ? onKeyDownCapture : baseOnKeyDownCapture,\n onKeyDown,\n onPointerDown,\n onMouseDown,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createCollectionRowInteraction.jsx","names":[],"sources":["../../src/selection/createCollectionRowInteraction.ts"],"sourcesContent":["/*\n * Copyright 2022 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/gridlist/useGridListItem.ts\n\nimport type { Accessor } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n getActiveElement,\n getEventTarget,\n getFocusableTreeWalker,\n getScrollParent,\n isFocusable,\n nodeContains,\n} from \"../utils/dom\";\nimport { focusSafely } from \"../utils/focus\";\nimport { scrollIntoViewport } from \"../utils/scrollIntoView\";\n\ntype KeyboardNavigationBehavior = \"arrow\" | \"tab\";\n\ninterface CollectionRowInteractionOptions {\n ref: Accessor<HTMLElement | null>;\n keyboardNavigationBehavior: Accessor<KeyboardNavigationBehavior>;\n direction?: Accessor<\"ltr\" | \"rtl\">;\n /**\n * `\"grid\"` skips intra-row Left/Right so the collection can move between\n * columns (S2 CardView `layout=\"grid\"`).\n */\n layout?: Accessor<\"stack\" | \"grid\">;\n /**\n * Tree expansion/collapse runs in capture before intra-row arrow walking,\n * matching RAC `handleTreeExpansionKeys`. Return true if the key was handled.\n */\n onBeforeArrowNavigation?: (event: KeyboardEvent) => boolean;\n}\n\ntype CollectionRowInteractionProps<T extends HTMLElement> = JSX.HTMLAttributes<T> & {\n onKeyDownCapture?: JSX.EventHandler<T, KeyboardEvent>;\n};\n\n/**\n * Nested ActionMenu / checkbox widgets in an arrow-nav row are focusable but\n * `tabIndex=-1`, so `isTabbable` misses them. Walk to the nearest focusable\n * ancestor inside the row (the event target is often an SVG inside the trigger).\n */\nfunction isNestedFocusableChild(row: Element, target: Element): boolean {\n let el: Element | null = target;\n while (el && el !== row) {\n if (isFocusable(el)) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n}\n\nfunction lastFocusable(walker: TreeWalker): HTMLElement | null {\n let last: Node | null = null;\n let next: Node | null;\n while ((next = walker.nextNode())) {\n last = next;\n }\n return last instanceof HTMLElement ? last : null;\n}\n\nfunction scrollFocusedElementIntoView(row: HTMLElement, element: HTMLElement): void {\n focusSafely(element);\n scrollIntoViewport(element, { containingElement: getScrollParent(row) });\n}\n\nfunction redispatchCollectionArrowKey(row: HTMLElement, event: KeyboardEvent): void {\n row.parentElement?.dispatchEvent(\n new KeyboardEvent(event.type, {\n altKey: event.altKey,\n bubbles: true,\n cancelable: event.cancelable,\n code: event.code,\n composed: event.composed,\n ctrlKey: event.ctrlKey,\n key: event.key,\n location: event.location,\n metaKey: event.metaKey,\n repeat: event.repeat,\n shiftKey: event.shiftKey,\n }),\n );\n}\n\nfunction shouldIgnoreRowEvent(event: Event, row: HTMLElement): boolean {\n const target = getEventTarget<Element>(event);\n const currentTarget = event.currentTarget as Element | null;\n return (\n !target || !currentTarget || !nodeContains(currentTarget, target) || !nodeContains(row, target)\n );\n}\n\nexport function mergeCollectionRowInteractionProps<T extends HTMLElement>(\n rowProps: CollectionRowInteractionProps<T>,\n options: CollectionRowInteractionOptions,\n): CollectionRowInteractionProps<T> {\n const baseOnKeyDownCapture = rowProps.onKeyDownCapture as\n | ((event: KeyboardEvent) => void)\n | undefined;\n const baseOnKeyDown = rowProps.onKeyDown as ((event: KeyboardEvent) => void) | undefined;\n const baseOnPointerDown = rowProps.onPointerDown as ((event: PointerEvent) => void) | undefined;\n const baseOnMouseDown = rowProps.onMouseDown as ((event: MouseEvent) => void) | undefined;\n const baseOnClick = rowProps.onClick as ((event: MouseEvent) => void) | undefined;\n\n const onKeyDownCapture = (event: KeyboardEvent) => {\n const row = options.ref();\n const activeElement = getActiveElement(row?.ownerDocument);\n if (\n options.keyboardNavigationBehavior() !== \"arrow\" ||\n !row ||\n !activeElement ||\n shouldIgnoreRowEvent(event, row)\n ) {\n baseOnKeyDownCapture?.(event);\n return;\n }\n\n if (options.onBeforeArrowNavigation?.(event)) {\n return;\n }\n\n if (\n options.layout?.() === \"grid\" &&\n (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\")\n ) {\n baseOnKeyDownCapture?.(event);\n return;\n }\n\n const direction = options.direction?.() ?? \"ltr\";\n const walker = getFocusableTreeWalker(row);\n walker.currentNode = activeElement;\n\n switch (event.key) {\n case \"ArrowLeft\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.nextNode() as HTMLElement | null)\n : (walker.previousNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"rtl\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowRight\": {\n const focusable =\n direction === \"rtl\"\n ? (walker.previousNode() as HTMLElement | null)\n : (walker.nextNode() as HTMLElement | null);\n\n event.preventDefault();\n event.stopPropagation();\n\n if (focusable) {\n scrollFocusedElementIntoView(row, focusable);\n } else if (direction === \"ltr\") {\n scrollFocusedElementIntoView(row, row);\n } else {\n walker.currentNode = row;\n const lastElement = lastFocusable(walker);\n if (lastElement) {\n scrollFocusedElementIntoView(row, lastElement);\n }\n }\n break;\n }\n case \"ArrowUp\":\n case \"ArrowDown\": {\n if (!event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n redispatchCollectionArrowKey(row, event);\n }\n break;\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDownCapture?.(event);\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n const activeElement = getActiveElement(row?.ownerDocument);\n\n if (row && target && activeElement && !shouldIgnoreRowEvent(event, row)) {\n if (options.keyboardNavigationBehavior() === \"tab\" && target !== row && event.key !== \"Tab\") {\n event.stopPropagation();\n return;\n }\n\n if (options.keyboardNavigationBehavior() === \"tab\" && event.key === \"Tab\") {\n const walker = getFocusableTreeWalker(row, { tabbable: true });\n walker.currentNode = activeElement;\n const next = event.shiftKey ? walker.previousNode() : walker.nextNode();\n\n if (next) {\n event.stopPropagation();\n }\n }\n }\n\n if (!event.cancelBubble) {\n baseOnKeyDown?.(event);\n }\n };\n\n const onPointerDown = (event: PointerEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isNestedFocusableChild(row, target)) {\n event.stopPropagation();\n return;\n }\n baseOnPointerDown?.(event);\n };\n\n const onMouseDown = (event: MouseEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isNestedFocusableChild(row, target)) {\n event.stopPropagation();\n return;\n }\n baseOnMouseDown?.(event);\n };\n\n const onClick = (event: MouseEvent) => {\n const row = options.ref();\n const target = getEventTarget<Element>(event);\n if (row && target && target !== row && isNestedFocusableChild(row, target)) {\n return;\n }\n baseOnClick?.(event);\n };\n\n const captureHandler =\n options.keyboardNavigationBehavior() === \"arrow\" ? onKeyDownCapture : baseOnKeyDownCapture;\n\n return {\n ...rowProps,\n // Solid 2 has no capture JSX. The live binding is `bindCapture` in\n // createGridListItem / createTreeItem. Keep the RAC name so unit tests\n // can still invoke the handler off rowProps.\n onKeyDownCapture: captureHandler,\n onKeyDown,\n onPointerDown,\n onMouseDown,\n onClick,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2021 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/label/useField.ts
|
|
13
|
+
import { t as mergeProps } from "./mergeProps.js";
|
|
2
14
|
import { t as access } from "./reactivity.js";
|
|
3
|
-
import {
|
|
15
|
+
import { createSlotId } from "../ssr/index.js";
|
|
4
16
|
import { t as createLabel } from "./createLabel.js";
|
|
5
17
|
//#region src/label/createField.ts
|
|
6
18
|
/**
|
|
@@ -12,40 +24,38 @@ import { t as createLabel } from "./createLabel.js";
|
|
|
12
24
|
*/
|
|
13
25
|
function createField(props) {
|
|
14
26
|
const getProps = () => access(props);
|
|
15
|
-
const
|
|
16
|
-
const descriptionId =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
const labelAria = createLabel(props);
|
|
28
|
+
const descriptionId = createSlotId([
|
|
29
|
+
() => Boolean(getProps().description),
|
|
30
|
+
() => Boolean(getProps().errorMessage),
|
|
31
|
+
() => getProps().isInvalid,
|
|
32
|
+
() => getProps().validationState
|
|
33
|
+
]);
|
|
34
|
+
const errorMessageId = createSlotId([
|
|
35
|
+
() => Boolean(getProps().description),
|
|
36
|
+
() => Boolean(getProps().errorMessage),
|
|
37
|
+
() => getProps().isInvalid,
|
|
38
|
+
() => getProps().validationState
|
|
39
|
+
]);
|
|
28
40
|
const getFieldProps = () => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (existingDescribedBy) describedByIds.push(existingDescribedBy);
|
|
35
|
-
return mergeProps(baseLabelFieldProps, { "aria-describedby": describedByIds.length > 0 ? describedByIds.join(" ") : void 0 });
|
|
41
|
+
return mergeProps(labelAria.fieldProps, { "aria-describedby": [
|
|
42
|
+
descriptionId(),
|
|
43
|
+
errorMessageId(),
|
|
44
|
+
getProps()["aria-describedby"]
|
|
45
|
+
].filter(Boolean).join(" ") || void 0 });
|
|
36
46
|
};
|
|
37
47
|
return {
|
|
38
48
|
get labelProps() {
|
|
39
|
-
return labelProps;
|
|
49
|
+
return labelAria.labelProps;
|
|
40
50
|
},
|
|
41
51
|
get fieldProps() {
|
|
42
52
|
return getFieldProps();
|
|
43
53
|
},
|
|
44
54
|
get descriptionProps() {
|
|
45
|
-
return
|
|
55
|
+
return { id: descriptionId() };
|
|
46
56
|
},
|
|
47
57
|
get errorMessageProps() {
|
|
48
|
-
return
|
|
58
|
+
return { id: errorMessageId() };
|
|
49
59
|
}
|
|
50
60
|
};
|
|
51
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createField.js","names":[],"sources":["../../src/label/createField.ts"],"sourcesContent":["/**\n * Field hook for Solidaria\n *\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display\n * a description or error message.\n *\n * This is a 1:1 port of @react-aria/label's useField hook.\n */\n\nimport { JSX } from \"
|
|
1
|
+
{"version":3,"file":"createField.js","names":[],"sources":["../../src/label/createField.ts"],"sourcesContent":["/*\n * Copyright 2021 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/label/useField.ts\n\n/**\n * Field hook for Solidaria\n *\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display\n * a description or error message.\n *\n * This is a 1:1 port of @react-aria/label's useField hook.\n */\n\nimport type { JSX } from \"@solidjs/web\";\nimport { createSlotId } from \"../ssr\";\nimport {\n createLabel,\n type LabelAriaProps,\n type LabelAria,\n type AriaLabelingProps,\n type DOMProps,\n} from \"./createLabel\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface HelpTextProps {\n /** A description for the field. Provides a hint such as specific requirements for what to choose. */\n description?: JSX.Element;\n /** An error message for the field. */\n errorMessage?: JSX.Element | ((validation: ValidationResult) => JSX.Element);\n}\n\nexport interface ValidationResult {\n /** Whether the input value is invalid. */\n isInvalid: boolean;\n /** The current error messages for the input if it is invalid, otherwise an empty array. */\n validationErrors: string[];\n /** The native validity state for the input. */\n validationDetails: ValidityState;\n}\n\nexport interface Validation<T> {\n /** Whether the input value is invalid. */\n isInvalid?: boolean;\n /** Whether the input is required before form submission. */\n isRequired?: boolean;\n /** A function that returns an error message if a given value is invalid. */\n validate?: (value: T) => string | string[] | true | null | undefined;\n}\n\nexport interface AriaFieldProps\n extends LabelAriaProps, HelpTextProps, Omit<Validation<any>, \"isRequired\"> {\n /**\n * Legacy validation state. Kept as a `createSlotId` dependency so a\n * description/error slot is re-probed when this flips, matching RAC\n * `useField` (`useField.ts:38-48`).\n */\n validationState?: \"valid\" | \"invalid\";\n}\n\nexport interface FieldAria extends LabelAria {\n /** Props for the description element, if any. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the error message element, if any. */\n errorMessageProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display\n * a description or error message.\n *\n * @param props - Props for the Field.\n */\nexport function createField(props: MaybeAccessor<AriaFieldProps>): FieldAria {\n const getProps = () => access(props);\n\n // Keep the label hook intact. Its `fieldProps`/`labelProps` are getters;\n // destructuring them would freeze the first labelledby snapshot.\n const labelAria = createLabel(props);\n\n // RAC `useField.ts:38-48`: `useSlotId` so the id exists only when an element\n // with that id is in the DOM. Deps re-probe when help-text / invalid state\n // changes (the slot may mount or unmount).\n const descriptionId = createSlotId([\n () => Boolean(getProps().description),\n () => Boolean(getProps().errorMessage),\n () => getProps().isInvalid,\n () => getProps().validationState,\n ]);\n const errorMessageId = createSlotId([\n () => Boolean(getProps().description),\n () => Boolean(getProps().errorMessage),\n () => getProps().isInvalid,\n () => getProps().validationState,\n ]);\n\n const getFieldProps = (): AriaLabelingProps & DOMProps => {\n // RAC `useField.ts:51-60`: description id, then error id, then the user\n // `aria-describedby`. `createSlotId` yields `undefined` when the slot is\n // not rendered, so dangling references never land on the field.\n return mergeProps(labelAria.fieldProps, {\n \"aria-describedby\":\n [descriptionId(), errorMessageId(), getProps()[\"aria-describedby\"]]\n .filter(Boolean)\n .join(\" \") || undefined,\n }) as AriaLabelingProps & DOMProps;\n };\n\n return {\n get labelProps() {\n return labelAria.labelProps;\n },\n get fieldProps() {\n return getFieldProps();\n },\n get descriptionProps() {\n return {\n id: descriptionId(),\n };\n },\n get errorMessageProps() {\n return {\n id: errorMessageId(),\n };\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqFA,SAAgB,YAAY,OAAiD;CAC3E,MAAM,iBAAiB,OAAO,KAAK;CAInC,MAAM,YAAY,YAAY,KAAK;CAKnC,MAAM,gBAAgB,aAAa;QAC3B,QAAQ,SAAS,CAAC,CAAC,WAAW;QAC9B,QAAQ,SAAS,CAAC,CAAC,YAAY;QAC/B,SAAS,CAAC,CAAC;QACX,SAAS,CAAC,CAAC;CACnB,CAAC;CACD,MAAM,iBAAiB,aAAa;QAC5B,QAAQ,SAAS,CAAC,CAAC,WAAW;QAC9B,QAAQ,SAAS,CAAC,CAAC,YAAY;QAC/B,SAAS,CAAC,CAAC;QACX,SAAS,CAAC,CAAC;CACnB,CAAC;CAED,MAAM,sBAAoD;EAIxD,OAAO,WAAW,UAAU,YAAY,EACtC,oBACE;GAAC,cAAc;GAAG,eAAe;GAAG,SAAS,CAAC,CAAC;EAAmB,CAAC,CAChE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,KAAK,KAAA,EACpB,CAAC;CACH;CAEA,OAAO;EACL,IAAI,aAAa;GACf,OAAO,UAAU;EACnB;EACA,IAAI,aAAa;GACf,OAAO,cAAc;EACvB;EACA,IAAI,mBAAmB;GACrB,OAAO,EACL,IAAI,cAAc,EACpB;EACF;EACA,IAAI,oBAAoB;GACtB,OAAO,EACL,IAAI,eAAe,EACrB;EACF;CACF;AACF"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2021 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/label/useField.ts
|
|
13
|
+
import { t as mergeProps } from "./mergeProps.jsx";
|
|
2
14
|
import { t as access } from "./reactivity.jsx";
|
|
3
|
-
import {
|
|
15
|
+
import { createSlotId } from "../ssr/index.jsx";
|
|
4
16
|
import { t as createLabel } from "./createLabel.jsx";
|
|
5
17
|
//#region src/label/createField.ts
|
|
6
18
|
/**
|
|
@@ -12,40 +24,38 @@ import { t as createLabel } from "./createLabel.jsx";
|
|
|
12
24
|
*/
|
|
13
25
|
function createField(props) {
|
|
14
26
|
const getProps = () => access(props);
|
|
15
|
-
const
|
|
16
|
-
const descriptionId =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
const labelAria = createLabel(props);
|
|
28
|
+
const descriptionId = createSlotId([
|
|
29
|
+
() => Boolean(getProps().description),
|
|
30
|
+
() => Boolean(getProps().errorMessage),
|
|
31
|
+
() => getProps().isInvalid,
|
|
32
|
+
() => getProps().validationState
|
|
33
|
+
]);
|
|
34
|
+
const errorMessageId = createSlotId([
|
|
35
|
+
() => Boolean(getProps().description),
|
|
36
|
+
() => Boolean(getProps().errorMessage),
|
|
37
|
+
() => getProps().isInvalid,
|
|
38
|
+
() => getProps().validationState
|
|
39
|
+
]);
|
|
28
40
|
const getFieldProps = () => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (existingDescribedBy) describedByIds.push(existingDescribedBy);
|
|
35
|
-
return mergeProps(baseLabelFieldProps, { "aria-describedby": describedByIds.length > 0 ? describedByIds.join(" ") : void 0 });
|
|
41
|
+
return mergeProps(labelAria.fieldProps, { "aria-describedby": [
|
|
42
|
+
descriptionId(),
|
|
43
|
+
errorMessageId(),
|
|
44
|
+
getProps()["aria-describedby"]
|
|
45
|
+
].filter(Boolean).join(" ") || void 0 });
|
|
36
46
|
};
|
|
37
47
|
return {
|
|
38
48
|
get labelProps() {
|
|
39
|
-
return labelProps;
|
|
49
|
+
return labelAria.labelProps;
|
|
40
50
|
},
|
|
41
51
|
get fieldProps() {
|
|
42
52
|
return getFieldProps();
|
|
43
53
|
},
|
|
44
54
|
get descriptionProps() {
|
|
45
|
-
return
|
|
55
|
+
return { id: descriptionId() };
|
|
46
56
|
},
|
|
47
57
|
get errorMessageProps() {
|
|
48
|
-
return
|
|
58
|
+
return { id: errorMessageId() };
|
|
49
59
|
}
|
|
50
60
|
};
|
|
51
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createField.jsx","names":[],"sources":["../../src/label/createField.ts"],"sourcesContent":["/**\n * Field hook for Solidaria\n *\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display\n * a description or error message.\n *\n * This is a 1:1 port of @react-aria/label's useField hook.\n */\n\nimport { JSX } from \"
|
|
1
|
+
{"version":3,"file":"createField.jsx","names":[],"sources":["../../src/label/createField.ts"],"sourcesContent":["/*\n * Copyright 2021 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/label/useField.ts\n\n/**\n * Field hook for Solidaria\n *\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display\n * a description or error message.\n *\n * This is a 1:1 port of @react-aria/label's useField hook.\n */\n\nimport type { JSX } from \"@solidjs/web\";\nimport { createSlotId } from \"../ssr\";\nimport {\n createLabel,\n type LabelAriaProps,\n type LabelAria,\n type AriaLabelingProps,\n type DOMProps,\n} from \"./createLabel\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface HelpTextProps {\n /** A description for the field. Provides a hint such as specific requirements for what to choose. */\n description?: JSX.Element;\n /** An error message for the field. */\n errorMessage?: JSX.Element | ((validation: ValidationResult) => JSX.Element);\n}\n\nexport interface ValidationResult {\n /** Whether the input value is invalid. */\n isInvalid: boolean;\n /** The current error messages for the input if it is invalid, otherwise an empty array. */\n validationErrors: string[];\n /** The native validity state for the input. */\n validationDetails: ValidityState;\n}\n\nexport interface Validation<T> {\n /** Whether the input value is invalid. */\n isInvalid?: boolean;\n /** Whether the input is required before form submission. */\n isRequired?: boolean;\n /** A function that returns an error message if a given value is invalid. */\n validate?: (value: T) => string | string[] | true | null | undefined;\n}\n\nexport interface AriaFieldProps\n extends LabelAriaProps, HelpTextProps, Omit<Validation<any>, \"isRequired\"> {\n /**\n * Legacy validation state. Kept as a `createSlotId` dependency so a\n * description/error slot is re-probed when this flips, matching RAC\n * `useField` (`useField.ts:38-48`).\n */\n validationState?: \"valid\" | \"invalid\";\n}\n\nexport interface FieldAria extends LabelAria {\n /** Props for the description element, if any. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the error message element, if any. */\n errorMessageProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display\n * a description or error message.\n *\n * @param props - Props for the Field.\n */\nexport function createField(props: MaybeAccessor<AriaFieldProps>): FieldAria {\n const getProps = () => access(props);\n\n // Keep the label hook intact. Its `fieldProps`/`labelProps` are getters;\n // destructuring them would freeze the first labelledby snapshot.\n const labelAria = createLabel(props);\n\n // RAC `useField.ts:38-48`: `useSlotId` so the id exists only when an element\n // with that id is in the DOM. Deps re-probe when help-text / invalid state\n // changes (the slot may mount or unmount).\n const descriptionId = createSlotId([\n () => Boolean(getProps().description),\n () => Boolean(getProps().errorMessage),\n () => getProps().isInvalid,\n () => getProps().validationState,\n ]);\n const errorMessageId = createSlotId([\n () => Boolean(getProps().description),\n () => Boolean(getProps().errorMessage),\n () => getProps().isInvalid,\n () => getProps().validationState,\n ]);\n\n const getFieldProps = (): AriaLabelingProps & DOMProps => {\n // RAC `useField.ts:51-60`: description id, then error id, then the user\n // `aria-describedby`. `createSlotId` yields `undefined` when the slot is\n // not rendered, so dangling references never land on the field.\n return mergeProps(labelAria.fieldProps, {\n \"aria-describedby\":\n [descriptionId(), errorMessageId(), getProps()[\"aria-describedby\"]]\n .filter(Boolean)\n .join(\" \") || undefined,\n }) as AriaLabelingProps & DOMProps;\n };\n\n return {\n get labelProps() {\n return labelAria.labelProps;\n },\n get fieldProps() {\n return getFieldProps();\n },\n get descriptionProps() {\n return {\n id: descriptionId(),\n };\n },\n get errorMessageProps() {\n return {\n id: errorMessageId(),\n };\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqFA,SAAgB,YAAY,OAAiD;CAC3E,MAAM,iBAAiB,OAAO,KAAK;CAInC,MAAM,YAAY,YAAY,KAAK;CAKnC,MAAM,gBAAgB,aAAa;QAC3B,QAAQ,SAAS,CAAC,CAAC,WAAW;QAC9B,QAAQ,SAAS,CAAC,CAAC,YAAY;QAC/B,SAAS,CAAC,CAAC;QACX,SAAS,CAAC,CAAC;CACnB,CAAC;CACD,MAAM,iBAAiB,aAAa;QAC5B,QAAQ,SAAS,CAAC,CAAC,WAAW;QAC9B,QAAQ,SAAS,CAAC,CAAC,YAAY;QAC/B,SAAS,CAAC,CAAC;QACX,SAAS,CAAC,CAAC;CACnB,CAAC;CAED,MAAM,sBAAoD;EAIxD,OAAO,WAAW,UAAU,YAAY,EACtC,oBACE;GAAC,cAAc;GAAG,eAAe;GAAG,SAAS,CAAC,CAAC;EAAmB,CAAC,CAChE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,KAAK,KAAA,EACpB,CAAC;CACH;CAEA,OAAO;EACL,IAAI,aAAa;GACf,OAAO,UAAU;EACnB;EACA,IAAI,aAAa;GACf,OAAO,cAAc;EACvB;EACA,IAAI,mBAAmB;GACrB,OAAO,EACL,IAAI,cAAc,EACpB;EACF;EACA,IAAI,oBAAoB;GACtB,OAAO,EACL,IAAI,eAAe,EACrB;EACF;CACF;AACF"}
|