@proyecto-viviana/solidaria 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunk/actiongroup.js +207 -0
- package/dist/_chunk/actiongroup.js.map +1 -0
- package/dist/_chunk/actiongroup.jsx +207 -0
- package/dist/_chunk/actiongroup.jsx.map +1 -0
- package/dist/_chunk/ariaHideOutside.js +122 -0
- package/dist/_chunk/ariaHideOutside.js.map +1 -0
- package/dist/_chunk/ariaHideOutside.jsx +122 -0
- package/dist/_chunk/ariaHideOutside.jsx.map +1 -0
- package/dist/_chunk/autocomplete.js +196 -0
- package/dist/_chunk/autocomplete.js.map +1 -0
- package/dist/_chunk/autocomplete.jsx +196 -0
- package/dist/_chunk/autocomplete.jsx.map +1 -0
- package/dist/_chunk/breadcrumbs.js +119 -0
- package/dist/_chunk/breadcrumbs.js.map +1 -0
- package/dist/_chunk/breadcrumbs.jsx +119 -0
- package/dist/_chunk/breadcrumbs.jsx.map +1 -0
- package/dist/_chunk/button.js +276 -0
- package/dist/_chunk/button.js.map +1 -0
- package/dist/_chunk/button.jsx +276 -0
- package/dist/_chunk/button.jsx.map +1 -0
- package/dist/_chunk/calendar.js +1036 -0
- package/dist/_chunk/calendar.js.map +1 -0
- package/dist/_chunk/calendar.jsx +1036 -0
- package/dist/_chunk/calendar.jsx.map +1 -0
- package/dist/_chunk/checkbox.js +234 -0
- package/dist/_chunk/checkbox.js.map +1 -0
- package/dist/_chunk/checkbox.jsx +234 -0
- package/dist/_chunk/checkbox.jsx.map +1 -0
- package/dist/_chunk/color.js +1174 -0
- package/dist/_chunk/color.js.map +1 -0
- package/dist/_chunk/color.jsx +1174 -0
- package/dist/_chunk/color.jsx.map +1 -0
- package/dist/_chunk/combobox.js +436 -0
- package/dist/_chunk/combobox.js.map +1 -0
- package/dist/_chunk/combobox.jsx +436 -0
- package/dist/_chunk/combobox.jsx.map +1 -0
- package/dist/_chunk/createCollator.js +229 -0
- package/dist/_chunk/createCollator.js.map +1 -0
- package/dist/_chunk/createCollator.jsx +223 -0
- package/dist/_chunk/createCollator.jsx.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.js +133 -0
- package/dist/_chunk/createCollectionRowInteraction.js.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx +133 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -0
- package/dist/_chunk/createField.js +54 -0
- package/dist/_chunk/createField.js.map +1 -0
- package/dist/_chunk/createField.jsx +54 -0
- package/dist/_chunk/createField.jsx.map +1 -0
- package/dist/_chunk/createFocus.js +101 -0
- package/dist/_chunk/createFocus.js.map +1 -0
- package/dist/_chunk/createFocus.jsx +101 -0
- package/dist/_chunk/createFocus.jsx.map +1 -0
- package/dist/_chunk/createFocusRing.js +54 -0
- package/dist/_chunk/createFocusRing.js.map +1 -0
- package/dist/_chunk/createFocusRing.jsx +54 -0
- package/dist/_chunk/createFocusRing.jsx.map +1 -0
- package/dist/_chunk/createFocusWithin.js +121 -0
- package/dist/_chunk/createFocusWithin.js.map +1 -0
- package/dist/_chunk/createFocusWithin.jsx +121 -0
- package/dist/_chunk/createFocusWithin.jsx.map +1 -0
- package/dist/_chunk/createFocusable.js +131 -0
- package/dist/_chunk/createFocusable.js.map +1 -0
- package/dist/_chunk/createFocusable.jsx +131 -0
- package/dist/_chunk/createFocusable.jsx.map +1 -0
- package/dist/_chunk/createFormValidation.js +135 -0
- package/dist/_chunk/createFormValidation.js.map +1 -0
- package/dist/_chunk/createFormValidation.jsx +135 -0
- package/dist/_chunk/createFormValidation.jsx.map +1 -0
- package/dist/_chunk/createHover.js +130 -0
- package/dist/_chunk/createHover.js.map +1 -0
- package/dist/_chunk/createHover.jsx +130 -0
- package/dist/_chunk/createHover.jsx.map +1 -0
- package/dist/_chunk/createInteractionModality.js +269 -0
- package/dist/_chunk/createInteractionModality.js.map +1 -0
- package/dist/_chunk/createInteractionModality.jsx +269 -0
- package/dist/_chunk/createInteractionModality.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +46 -0
- package/dist/_chunk/createLabel.js.map +1 -0
- package/dist/_chunk/createLabel.jsx +46 -0
- package/dist/_chunk/createLabel.jsx.map +1 -0
- package/dist/_chunk/createLabels.js +31 -0
- package/dist/_chunk/createLabels.js.map +1 -0
- package/dist/_chunk/createLabels.jsx +31 -0
- package/dist/_chunk/createLabels.jsx.map +1 -0
- package/dist/_chunk/createLandmark.js +198 -0
- package/dist/_chunk/createLandmark.js.map +1 -0
- package/dist/_chunk/createLandmark.jsx +198 -0
- package/dist/_chunk/createLandmark.jsx.map +1 -0
- package/dist/_chunk/createLongPress.js +91 -0
- package/dist/_chunk/createLongPress.js.map +1 -0
- package/dist/_chunk/createLongPress.jsx +91 -0
- package/dist/_chunk/createLongPress.jsx.map +1 -0
- package/dist/_chunk/createOverlay.js +327 -0
- package/dist/_chunk/createOverlay.js.map +1 -0
- package/dist/_chunk/createOverlay.jsx +327 -0
- package/dist/_chunk/createOverlay.jsx.map +1 -0
- package/dist/_chunk/createPress.js +526 -0
- package/dist/_chunk/createPress.js.map +1 -0
- package/dist/_chunk/createPress.jsx +526 -0
- package/dist/_chunk/createPress.jsx.map +1 -0
- package/dist/_chunk/createProgressBar.js +81 -0
- package/dist/_chunk/createProgressBar.js.map +1 -0
- package/dist/_chunk/createProgressBar.jsx +81 -0
- package/dist/_chunk/createProgressBar.jsx.map +1 -0
- package/dist/_chunk/createSelectableItem.js +298 -0
- package/dist/_chunk/createSelectableItem.js.map +1 -0
- package/dist/_chunk/createSelectableItem.jsx +298 -0
- package/dist/_chunk/createSelectableItem.jsx.map +1 -0
- package/dist/_chunk/createToggle.js +158 -0
- package/dist/_chunk/createToggle.js.map +1 -0
- package/dist/_chunk/createToggle.jsx +158 -0
- package/dist/_chunk/createToggle.jsx.map +1 -0
- package/dist/_chunk/createTypeSelect.js +125 -0
- package/dist/_chunk/createTypeSelect.js.map +1 -0
- package/dist/_chunk/createTypeSelect.jsx +125 -0
- package/dist/_chunk/createTypeSelect.jsx.map +1 -0
- package/dist/_chunk/datepicker.js +1393 -0
- package/dist/_chunk/datepicker.js.map +1 -0
- package/dist/_chunk/datepicker.jsx +1393 -0
- package/dist/_chunk/datepicker.jsx.map +1 -0
- package/dist/_chunk/dialog.js +62 -0
- package/dist/_chunk/dialog.js.map +1 -0
- package/dist/_chunk/dialog.jsx +62 -0
- package/dist/_chunk/dialog.jsx.map +1 -0
- package/dist/_chunk/disclosure.js +185 -0
- package/dist/_chunk/disclosure.js.map +1 -0
- package/dist/_chunk/disclosure.jsx +185 -0
- package/dist/_chunk/disclosure.jsx.map +1 -0
- package/dist/_chunk/dnd.js +1304 -0
- package/dist/_chunk/dnd.js.map +1 -0
- package/dist/_chunk/dnd.jsx +1304 -0
- package/dist/_chunk/dnd.jsx.map +1 -0
- package/dist/_chunk/env.js +105 -0
- package/dist/_chunk/env.js.map +1 -0
- package/dist/_chunk/env.jsx +105 -0
- package/dist/_chunk/env.jsx.map +1 -0
- package/dist/_chunk/filterDOMProps.js +82 -0
- package/dist/_chunk/filterDOMProps.js.map +1 -0
- package/dist/_chunk/filterDOMProps.jsx +82 -0
- package/dist/_chunk/filterDOMProps.jsx.map +1 -0
- package/dist/_chunk/focus.js +399 -0
- package/dist/_chunk/focus.js.map +1 -0
- package/dist/_chunk/focus.jsx +399 -0
- package/dist/_chunk/focus.jsx.map +1 -0
- package/dist/_chunk/focus2.js +895 -0
- package/dist/_chunk/focus2.js.map +1 -0
- package/dist/_chunk/focus2.jsx +870 -0
- package/dist/_chunk/focus2.jsx.map +1 -0
- package/dist/_chunk/form.js +39 -0
- package/dist/_chunk/form.js.map +1 -0
- package/dist/_chunk/form.jsx +39 -0
- package/dist/_chunk/form.jsx.map +1 -0
- package/dist/_chunk/grid.js +623 -0
- package/dist/_chunk/grid.js.map +1 -0
- package/dist/_chunk/grid.jsx +623 -0
- package/dist/_chunk/grid.jsx.map +1 -0
- package/dist/_chunk/gridlist.js +364 -0
- package/dist/_chunk/gridlist.js.map +1 -0
- package/dist/_chunk/gridlist.jsx +364 -0
- package/dist/_chunk/gridlist.jsx.map +1 -0
- package/dist/_chunk/i18n.js +254 -0
- package/dist/_chunk/i18n.js.map +1 -0
- package/dist/_chunk/i18n.jsx +254 -0
- package/dist/_chunk/i18n.jsx.map +1 -0
- package/dist/_chunk/interactions.js +241 -0
- package/dist/_chunk/interactions.js.map +1 -0
- package/dist/_chunk/interactions.jsx +237 -0
- package/dist/_chunk/interactions.jsx.map +1 -0
- package/dist/_chunk/link.js +96 -0
- package/dist/_chunk/link.js.map +1 -0
- package/dist/_chunk/link.jsx +96 -0
- package/dist/_chunk/link.jsx.map +1 -0
- package/dist/_chunk/listbox.js +324 -0
- package/dist/_chunk/listbox.js.map +1 -0
- package/dist/_chunk/listbox.jsx +324 -0
- package/dist/_chunk/listbox.jsx.map +1 -0
- package/dist/_chunk/live-announcer.js +207 -0
- package/dist/_chunk/live-announcer.js.map +1 -0
- package/dist/_chunk/live-announcer.jsx +207 -0
- package/dist/_chunk/live-announcer.jsx.map +1 -0
- package/dist/_chunk/menu.js +518 -0
- package/dist/_chunk/menu.js.map +1 -0
- package/dist/_chunk/menu.jsx +518 -0
- package/dist/_chunk/menu.jsx.map +1 -0
- package/dist/_chunk/meter.js +33 -0
- package/dist/_chunk/meter.js.map +1 -0
- package/dist/_chunk/meter.jsx +33 -0
- package/dist/_chunk/meter.jsx.map +1 -0
- package/dist/_chunk/numberfield.js +258 -0
- package/dist/_chunk/numberfield.js.map +1 -0
- package/dist/_chunk/numberfield.jsx +258 -0
- package/dist/_chunk/numberfield.jsx.map +1 -0
- package/dist/_chunk/overlays.js +186 -0
- package/dist/_chunk/overlays.js.map +1 -0
- package/dist/_chunk/overlays.jsx +162 -0
- package/dist/_chunk/overlays.jsx.map +1 -0
- package/dist/_chunk/popover.js +574 -0
- package/dist/_chunk/popover.js.map +1 -0
- package/dist/_chunk/popover.jsx +574 -0
- package/dist/_chunk/popover.jsx.map +1 -0
- package/dist/_chunk/radio.js +319 -0
- package/dist/_chunk/radio.js.map +1 -0
- package/dist/_chunk/radio.jsx +319 -0
- package/dist/_chunk/radio.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +209 -0
- package/dist/_chunk/searchfield.js.map +1 -0
- package/dist/_chunk/searchfield.jsx +209 -0
- package/dist/_chunk/searchfield.jsx.map +1 -0
- package/dist/_chunk/select.js +403 -0
- package/dist/_chunk/select.js.map +1 -0
- package/dist/_chunk/select.jsx +394 -0
- package/dist/_chunk/select.jsx.map +1 -0
- package/dist/_chunk/selection.js +679 -0
- package/dist/_chunk/selection.js.map +1 -0
- package/dist/_chunk/selection.jsx +679 -0
- package/dist/_chunk/selection.jsx.map +1 -0
- package/dist/_chunk/separator.js +29 -0
- package/dist/_chunk/separator.js.map +1 -0
- package/dist/_chunk/separator.jsx +29 -0
- package/dist/_chunk/separator.jsx.map +1 -0
- package/dist/_chunk/slider.js +255 -0
- package/dist/_chunk/slider.js.map +1 -0
- package/dist/_chunk/slider.jsx +255 -0
- package/dist/_chunk/slider.jsx.map +1 -0
- package/dist/_chunk/steplist.js +66 -0
- package/dist/_chunk/steplist.js.map +1 -0
- package/dist/_chunk/steplist.jsx +66 -0
- package/dist/_chunk/steplist.jsx.map +1 -0
- package/dist/_chunk/switch.js +34 -0
- package/dist/_chunk/switch.js.map +1 -0
- package/dist/_chunk/switch.jsx +34 -0
- package/dist/_chunk/switch.jsx.map +1 -0
- package/dist/_chunk/table.js +1051 -0
- package/dist/_chunk/table.js.map +1 -0
- package/dist/_chunk/table.jsx +1051 -0
- package/dist/_chunk/table.jsx.map +1 -0
- package/dist/_chunk/tabs.js +260 -0
- package/dist/_chunk/tabs.js.map +1 -0
- package/dist/_chunk/tabs.jsx +260 -0
- package/dist/_chunk/tabs.jsx.map +1 -0
- package/dist/_chunk/tag.js +286 -0
- package/dist/_chunk/tag.js.map +1 -0
- package/dist/_chunk/tag.jsx +286 -0
- package/dist/_chunk/tag.jsx.map +1 -0
- package/dist/_chunk/textfield.js +109 -0
- package/dist/_chunk/textfield.js.map +1 -0
- package/dist/_chunk/textfield.jsx +109 -0
- package/dist/_chunk/textfield.jsx.map +1 -0
- package/dist/_chunk/toast.js +250 -0
- package/dist/_chunk/toast.js.map +1 -0
- package/dist/_chunk/toast.jsx +250 -0
- package/dist/_chunk/toast.jsx.map +1 -0
- package/dist/_chunk/toolbar.js +258 -0
- package/dist/_chunk/toolbar.js.map +1 -0
- package/dist/_chunk/toolbar.jsx +258 -0
- package/dist/_chunk/toolbar.jsx.map +1 -0
- package/dist/_chunk/tooltip.js +185 -0
- package/dist/_chunk/tooltip.js.map +1 -0
- package/dist/_chunk/tooltip.jsx +185 -0
- package/dist/_chunk/tooltip.jsx.map +1 -0
- package/dist/_chunk/tree.js +424 -0
- package/dist/_chunk/tree.js.map +1 -0
- package/dist/_chunk/tree.jsx +424 -0
- package/dist/_chunk/tree.jsx.map +1 -0
- package/dist/_chunk/utils.js +665 -0
- package/dist/_chunk/utils.js.map +1 -0
- package/dist/_chunk/utils.jsx +665 -0
- package/dist/_chunk/utils.jsx.map +1 -0
- package/dist/_chunk/visually-hidden.js +92 -0
- package/dist/_chunk/visually-hidden.js.map +1 -0
- package/dist/_chunk/visually-hidden.jsx +92 -0
- package/dist/_chunk/visually-hidden.jsx.map +1 -0
- package/dist/actiongroup/index.js +2 -0
- package/dist/actiongroup/index.jsx +2 -0
- package/dist/autocomplete/createAutocomplete.d.ts +2 -0
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.js +2 -0
- package/dist/autocomplete/index.jsx +2 -0
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/index.jsx +2 -0
- package/dist/button/index.js +2 -0
- package/dist/button/index.jsx +2 -0
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createCalendarMonthPicker.d.ts +41 -0
- package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -0
- package/dist/calendar/createCalendarYearPicker.d.ts +49 -0
- package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -0
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +2 -0
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +2 -0
- package/dist/calendar/index.jsx +2 -0
- package/dist/calendar/utils.d.ts +4 -0
- package/dist/calendar/utils.d.ts.map +1 -1
- package/dist/checkbox/createCheckbox.d.ts +4 -0
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox/index.jsx +2 -0
- package/dist/collections/index.js +160 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/index.jsx +160 -0
- package/dist/collections/index.jsx.map +1 -0
- package/dist/color/index.js +2 -0
- package/dist/color/index.jsx +2 -0
- package/dist/combobox/index.js +2 -0
- package/dist/combobox/index.jsx +2 -0
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/index.js +2 -0
- package/dist/datepicker/index.jsx +2 -0
- package/dist/dialog/index.js +2 -0
- package/dist/dialog/index.jsx +2 -0
- package/dist/disclosure/index.js +2 -0
- package/dist/disclosure/index.jsx +2 -0
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/index.js +2 -0
- package/dist/dnd/index.jsx +2 -0
- package/dist/dnd/utils.d.ts +2 -2
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/index.js +2 -0
- package/dist/focus/index.jsx +2 -0
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.js +3 -0
- package/dist/form/index.jsx +3 -0
- package/dist/grid/index.js +2 -0
- package/dist/grid/index.jsx +2 -0
- package/dist/gridlist/createGridList.d.ts +7 -1
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +1 -1
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSection.d.ts +15 -0
- package/dist/gridlist/createGridListSection.d.ts.map +1 -0
- package/dist/gridlist/index.d.ts +2 -1
- package/dist/gridlist/index.d.ts.map +1 -1
- package/dist/gridlist/index.js +2 -0
- package/dist/gridlist/index.jsx +2 -0
- package/dist/gridlist/types.d.ts +50 -0
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/index.jsx +3 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -18311
- package/dist/index.jsx +71 -18242
- package/dist/interactions/PressEvent.d.ts +11 -0
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +0 -1
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.js +10 -0
- package/dist/interactions/index.jsx +10 -0
- package/dist/label/index.js +4 -0
- package/dist/label/index.jsx +4 -0
- package/dist/landmark/index.js +2 -0
- package/dist/landmark/index.jsx +2 -0
- package/dist/link/index.js +2 -0
- package/dist/link/index.jsx +2 -0
- package/dist/listbox/createListBox.d.ts +37 -0
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +6 -0
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.js +2 -0
- package/dist/listbox/index.jsx +2 -0
- package/dist/live-announcer/index.js +2 -0
- package/dist/live-announcer/index.jsx +2 -0
- package/dist/menu/createMenu.d.ts +7 -4
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +9 -1
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/index.js +2 -0
- package/dist/menu/index.jsx +2 -0
- package/dist/meter/index.js +2 -0
- package/dist/meter/index.jsx +2 -0
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.js +2 -0
- package/dist/numberfield/index.jsx +2 -0
- package/dist/overlays/index.js +4 -0
- package/dist/overlays/index.jsx +4 -0
- package/dist/popover/calculatePosition.d.ts +2 -0
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +8 -0
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/index.js +2 -0
- package/dist/popover/index.jsx +2 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.jsx +2 -0
- package/dist/radio/createRadio.d.ts +2 -0
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/index.js +2 -0
- package/dist/radio/index.jsx +2 -0
- package/dist/searchfield/index.js +2 -0
- package/dist/searchfield/index.jsx +2 -0
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.js +2 -0
- package/dist/select/index.jsx +2 -0
- package/dist/selection/DOMLayoutDelegate.d.ts +58 -0
- package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -0
- package/dist/selection/ListKeyboardDelegate.d.ts +95 -0
- package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -0
- package/dist/selection/constants.d.ts +15 -0
- package/dist/selection/constants.d.ts.map +1 -0
- package/dist/selection/createCollectionRowInteraction.d.ts +13 -0
- package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts +31 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -0
- package/dist/selection/createSelectableCollection.d.ts +69 -0
- package/dist/selection/createSelectableCollection.d.ts.map +1 -0
- package/dist/selection/createSelectableItem.d.ts +154 -0
- package/dist/selection/createSelectableItem.d.ts.map +1 -0
- package/dist/selection/createSelectableList.d.ts +43 -0
- package/dist/selection/createSelectableList.d.ts.map +1 -0
- package/dist/selection/createTypeSelect.d.ts.map +1 -1
- package/dist/selection/index.d.ts +9 -0
- package/dist/selection/index.d.ts.map +1 -1
- package/dist/selection/index.js +4 -0
- package/dist/selection/index.jsx +4 -0
- package/dist/selection/selectItem.d.ts +29 -0
- package/dist/selection/selectItem.d.ts.map +1 -0
- package/dist/selection/utils.d.ts +40 -0
- package/dist/selection/utils.d.ts.map +1 -0
- package/dist/separator/index.js +2 -0
- package/dist/separator/index.jsx +2 -0
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.js +2 -0
- package/dist/slider/index.jsx +2 -0
- package/dist/ssr/index.d.ts +17 -0
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +299 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/index.jsx +292 -0
- package/dist/ssr/index.jsx.map +1 -0
- package/dist/steplist/index.js +2 -0
- package/dist/steplist/index.jsx +2 -0
- package/dist/switch/createSwitch.d.ts +4 -0
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.jsx +2 -0
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableRow.d.ts +1 -1
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/index.js +2 -0
- package/dist/table/index.jsx +2 -0
- package/dist/table/types.d.ts +27 -1
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +4 -3
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.jsx +2 -0
- package/dist/tag/createTag.d.ts +2 -0
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/index.js +2 -0
- package/dist/tag/index.jsx +2 -0
- package/dist/textfield/index.js +2 -0
- package/dist/textfield/index.jsx +2 -0
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/index.js +2 -0
- package/dist/toast/index.jsx +2 -0
- package/dist/toggle/createToggle.d.ts +4 -0
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/index.js +3 -0
- package/dist/toggle/index.jsx +3 -0
- package/dist/toolbar/createToolbar.d.ts +1 -1
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.js +2 -0
- package/dist/toolbar/index.jsx +2 -0
- package/dist/tooltip/index.js +2 -0
- package/dist/tooltip/index.jsx +2 -0
- package/dist/tree/createTree.d.ts +5 -1
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +1 -1
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/index.js +2 -0
- package/dist/tree/index.jsx +2 -0
- package/dist/tree/types.d.ts +10 -0
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/animation.d.ts +60 -0
- package/dist/utils/animation.d.ts.map +1 -0
- package/dist/utils/dom.d.ts +48 -2
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.jsx +5 -0
- package/dist/utils/keyboard.d.ts +17 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/scrollIntoView.d.ts +30 -0
- package/dist/utils/scrollIntoView.d.ts.map +1 -0
- package/dist/visually-hidden/index.js +2 -0
- package/dist/visually-hidden/index.jsx +2 -0
- package/package.json +304 -3
- package/src/autocomplete/createAutocomplete.ts +67 -21
- package/src/calendar/createCalendar.ts +2 -0
- package/src/calendar/createCalendarCell.ts +19 -2
- package/src/calendar/createCalendarGrid.ts +43 -9
- package/src/calendar/createCalendarMonthPicker.ts +105 -0
- package/src/calendar/createCalendarYearPicker.ts +144 -0
- package/src/calendar/createRangeCalendar.ts +2 -0
- package/src/calendar/index.ts +17 -0
- package/src/calendar/utils.ts +4 -0
- package/src/checkbox/createCheckbox.ts +10 -0
- package/src/checkbox/createCheckboxGroupItem.ts +12 -16
- package/src/datepicker/createDateSegment.ts +6 -1
- package/src/dnd/createDroppableCollection.ts +4 -1
- package/src/dnd/utils.ts +27 -3
- package/src/focus/FocusScope.tsx +152 -18
- package/src/form/createFormValidation.ts +8 -1
- package/src/gridlist/createGridList.ts +145 -42
- package/src/gridlist/createGridListItem.ts +87 -155
- package/src/gridlist/createGridListSection.ts +54 -0
- package/src/gridlist/index.ts +3 -0
- package/src/gridlist/types.ts +47 -0
- package/src/index.ts +40 -0
- package/src/interactions/PressEvent.ts +14 -0
- package/src/interactions/createInteractionModality.ts +21 -12
- package/src/interactions/createKeyboard.ts +10 -0
- package/src/interactions/createPress.ts +29 -6
- package/src/listbox/createListBox.ts +129 -8
- package/src/listbox/createOption.ts +68 -73
- package/src/menu/createMenu.ts +93 -16
- package/src/menu/createMenuItem.ts +253 -41
- package/src/numberfield/createNumberField.ts +82 -14
- package/src/popover/calculatePosition.ts +19 -7
- package/src/popover/createOverlayPosition.ts +9 -0
- package/src/radio/createRadio.ts +19 -2
- package/src/select/createSelect.ts +18 -2
- package/src/selection/DOMLayoutDelegate.ts +102 -0
- package/src/selection/ListKeyboardDelegate.ts +398 -0
- package/src/selection/constants.ts +16 -0
- package/src/selection/createCollectionRowInteraction.ts +209 -0
- package/src/selection/createScrollIntoViewOnFocus.ts +65 -0
- package/src/selection/createSelectableCollection.ts +645 -0
- package/src/selection/createSelectableItem.ts +498 -0
- package/src/selection/createSelectableList.ts +93 -0
- package/src/selection/createTypeSelect.ts +112 -51
- package/src/selection/index.ts +31 -0
- package/src/selection/selectItem.ts +80 -0
- package/src/selection/utils.ts +82 -0
- package/src/slider/createSlider.ts +48 -1
- package/src/ssr/index.tsx +31 -0
- package/src/switch/createSwitch.ts +10 -0
- package/src/table/createTable.ts +56 -26
- package/src/table/createTableRow.ts +198 -203
- package/src/table/createTableSelectAllCheckbox.ts +3 -4
- package/src/table/types.ts +29 -1
- package/src/tabs/createTabs.ts +50 -20
- package/src/tag/createTag.ts +9 -4
- package/src/toast/createToast.ts +1 -0
- package/src/toggle/createToggle.ts +20 -0
- package/src/toolbar/createToolbar.ts +43 -42
- package/src/tree/createTree.ts +100 -42
- package/src/tree/createTreeItem.ts +105 -120
- package/src/tree/types.ts +10 -0
- package/src/utils/animation.ts +151 -0
- package/src/utils/dom.ts +215 -25
- package/src/utils/index.ts +8 -0
- package/src/utils/keyboard.ts +25 -0
- package/src/utils/mergeProps.ts +8 -1
- package/src/utils/scrollIntoView.ts +181 -0
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
isMac,
|
|
26
26
|
createGlobalListeners,
|
|
27
27
|
setEventTarget,
|
|
28
|
+
focusWithoutScrolling,
|
|
28
29
|
} from "../utils";
|
|
29
30
|
|
|
30
31
|
export { PressEvent, type PointerType } from "./PressEvent";
|
|
@@ -83,6 +84,28 @@ function isPressedValue(isPressed: Accessor<boolean> | boolean | undefined): boo
|
|
|
83
84
|
return isPressed ?? false;
|
|
84
85
|
}
|
|
85
86
|
|
|
87
|
+
function eventPathContains(parent: EventTarget | null | undefined, event: Event): boolean {
|
|
88
|
+
if (!parent) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const target = getEventTarget(event);
|
|
93
|
+
if (
|
|
94
|
+
typeof Node !== "undefined" &&
|
|
95
|
+
parent instanceof Node &&
|
|
96
|
+
target instanceof Node &&
|
|
97
|
+
nodeContains(parent, target)
|
|
98
|
+
) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (typeof event.composedPath === "function") {
|
|
103
|
+
return event.composedPath().includes(parent);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
|
|
86
109
|
// Track which links have been programmatically clicked to avoid double activation
|
|
87
110
|
const linkClickedSet = new WeakSet<HTMLElement>();
|
|
88
111
|
|
|
@@ -280,7 +303,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
280
303
|
const onPointerDown: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
|
|
281
304
|
// Only handle left clicks, and ignore events that bubbled through portals
|
|
282
305
|
const button = e.button ?? 0;
|
|
283
|
-
if (button !== 0 || !
|
|
306
|
+
if (button !== 0 || !eventPathContains(e.currentTarget, e)) {
|
|
284
307
|
return;
|
|
285
308
|
}
|
|
286
309
|
|
|
@@ -316,7 +339,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
316
339
|
|
|
317
340
|
// Mouse down handler when using pointer events - only prevents focus, doesn't trigger press
|
|
318
341
|
const onMouseDownPointer: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {
|
|
319
|
-
if (!
|
|
342
|
+
if (!eventPathContains(e.currentTarget, e)) {
|
|
320
343
|
return;
|
|
321
344
|
}
|
|
322
345
|
|
|
@@ -341,7 +364,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
341
364
|
return;
|
|
342
365
|
}
|
|
343
366
|
|
|
344
|
-
const isOverTarget =
|
|
367
|
+
const isOverTarget = eventPathContains(pressState.target, e);
|
|
345
368
|
if (isOverTarget && pressState.pointerType != null && pressState.pointerType !== "virtual") {
|
|
346
369
|
// Pointer released over target - wait for onClick to complete the press sequence.
|
|
347
370
|
// This matches React-Aria's behavior for compatibility with DOM mutations and third-party libraries.
|
|
@@ -366,7 +389,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
366
389
|
cancel(e);
|
|
367
390
|
} else {
|
|
368
391
|
// Click didn't happen (probably due to stopPropagation), trigger it manually
|
|
369
|
-
pressState.target
|
|
392
|
+
focusWithoutScrolling(pressState.target);
|
|
370
393
|
pressState.target.click();
|
|
371
394
|
}
|
|
372
395
|
}
|
|
@@ -400,7 +423,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
400
423
|
};
|
|
401
424
|
|
|
402
425
|
const onPointerUpTarget: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
|
|
403
|
-
if (!
|
|
426
|
+
if (!eventPathContains(e.currentTarget, e) || pressState.pointerType === "virtual") {
|
|
404
427
|
return;
|
|
405
428
|
}
|
|
406
429
|
|
|
@@ -781,7 +804,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
781
804
|
|
|
782
805
|
const onClick: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {
|
|
783
806
|
// Don't handle click if it's not on the target
|
|
784
|
-
if (!
|
|
807
|
+
if (!eventPathContains(e.currentTarget, e)) {
|
|
785
808
|
return;
|
|
786
809
|
}
|
|
787
810
|
|
|
@@ -42,6 +42,17 @@ export interface AriaListBoxProps {
|
|
|
42
42
|
shouldSelectOnPressUp?: boolean;
|
|
43
43
|
/** Whether to focus items on hover. */
|
|
44
44
|
shouldFocusOnHover?: boolean;
|
|
45
|
+
/** Whether the listbox uses virtual scrolling. */
|
|
46
|
+
isVirtualized?: boolean;
|
|
47
|
+
/** Whether options should use virtual focus instead of receiving DOM focus. */
|
|
48
|
+
shouldUseVirtualFocus?: boolean;
|
|
49
|
+
/** The behavior of links in the collection. */
|
|
50
|
+
linkBehavior?: "action" | "selection" | "override" | "none";
|
|
51
|
+
/**
|
|
52
|
+
* Unstable upstream override that forces items with actions to prefer
|
|
53
|
+
* selection or action behavior.
|
|
54
|
+
*/
|
|
55
|
+
UNSTABLE_itemBehavior?: "selection" | "action";
|
|
45
56
|
/**
|
|
46
57
|
* Whether keyboard focus movement should also update selection in single selection mode.
|
|
47
58
|
* @default true
|
|
@@ -49,6 +60,28 @@ export interface AriaListBoxProps {
|
|
|
49
60
|
shouldSelectOnFocus?: boolean;
|
|
50
61
|
/** Whether type-to-select is disabled. @default false */
|
|
51
62
|
disallowTypeAhead?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* The primary orientation of the items. In a horizontal listbox the Left/Right
|
|
65
|
+
* arrows navigate the list (the block-axis Up/Down arrows still work); in a
|
|
66
|
+
* vertical listbox Left/Right are no-ops, matching upstream's
|
|
67
|
+
* `ListKeyboardDelegate` for a `stack` layout.
|
|
68
|
+
* @default "vertical"
|
|
69
|
+
*/
|
|
70
|
+
orientation?: "vertical" | "horizontal";
|
|
71
|
+
/**
|
|
72
|
+
* The text direction, used to resolve the horizontal navigation axis. In a
|
|
73
|
+
* horizontal listbox, RTL flips Left/Right (Right=previous, Left=next).
|
|
74
|
+
* @default "ltr"
|
|
75
|
+
*/
|
|
76
|
+
direction?: "ltr" | "rtl";
|
|
77
|
+
/**
|
|
78
|
+
* Whether pressing the Escape key should clear selection in the listbox or not.
|
|
79
|
+
* Most experiences should not modify this option as it eliminates a keyboard
|
|
80
|
+
* user's ability to easily clear selection. Only use if the escape key is being
|
|
81
|
+
* handled externally or should not trigger selection clearing contextually.
|
|
82
|
+
* @default "clearSelection"
|
|
83
|
+
*/
|
|
84
|
+
escapeKeyBehavior?: "clearSelection" | "none";
|
|
52
85
|
}
|
|
53
86
|
|
|
54
87
|
export interface ListBoxAria {
|
|
@@ -66,13 +99,28 @@ interface ListBoxData {
|
|
|
66
99
|
onAction?: (key: Key) => void;
|
|
67
100
|
shouldSelectOnPressUp?: boolean;
|
|
68
101
|
shouldFocusOnHover?: boolean;
|
|
102
|
+
isVirtualized?: boolean;
|
|
103
|
+
shouldUseVirtualFocus?: boolean;
|
|
69
104
|
isDisabled?: boolean;
|
|
105
|
+
linkBehavior?: "action" | "selection" | "override" | "none";
|
|
106
|
+
UNSTABLE_itemBehavior?: "selection" | "action";
|
|
70
107
|
}
|
|
71
108
|
|
|
72
109
|
export function getListBoxData(state: ListState): ListBoxData | undefined {
|
|
73
110
|
return listBoxData.get(state);
|
|
74
111
|
}
|
|
75
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Whether a key should be skipped during keyboard navigation. Disabled keys only
|
|
115
|
+
* block navigation under `disabledBehavior: "all"` (the default); under
|
|
116
|
+
* `"selection"` they stay focusable (selection is still blocked elsewhere).
|
|
117
|
+
* Mirrors `ListKeyboardDelegate.isDisabled` in React Aria, which gates the skip
|
|
118
|
+
* on the resolved `disabledBehavior` from the selection manager.
|
|
119
|
+
*/
|
|
120
|
+
function isNavigationDisabled<T>(state: ListState<T>, key: Key): boolean {
|
|
121
|
+
return state.isDisabled(key) && state.disabledBehavior() === "all";
|
|
122
|
+
}
|
|
123
|
+
|
|
76
124
|
function findNextEnabledKey<T>(
|
|
77
125
|
state: ListState<T>,
|
|
78
126
|
currentKey: Key | null,
|
|
@@ -88,13 +136,13 @@ function findNextEnabledKey<T>(
|
|
|
88
136
|
direction === "next" ? () => collection.getFirstKey() : () => collection.getLastKey();
|
|
89
137
|
|
|
90
138
|
let key = currentKey != null ? getAdjacentKey(currentKey) : getBoundaryKey();
|
|
91
|
-
while (key != null && state
|
|
139
|
+
while (key != null && isNavigationDisabled(state, key)) {
|
|
92
140
|
key = getAdjacentKey(key);
|
|
93
141
|
}
|
|
94
142
|
|
|
95
143
|
if (key == null && wrap) {
|
|
96
144
|
key = getBoundaryKey();
|
|
97
|
-
while (key != null && state
|
|
145
|
+
while (key != null && isNavigationDisabled(state, key)) {
|
|
98
146
|
key = getAdjacentKey(key);
|
|
99
147
|
}
|
|
100
148
|
}
|
|
@@ -130,12 +178,22 @@ export function createListBox<T>(
|
|
|
130
178
|
|
|
131
179
|
const updateSharedData = () => {
|
|
132
180
|
const p = getProps();
|
|
181
|
+
const selectionBehavior = state.selectionBehavior();
|
|
182
|
+
let linkBehavior = p.linkBehavior ?? (selectionBehavior === "replace" ? "action" : "override");
|
|
183
|
+
if (selectionBehavior === "toggle" && linkBehavior === "action") {
|
|
184
|
+
linkBehavior = "override";
|
|
185
|
+
}
|
|
186
|
+
|
|
133
187
|
listBoxData.set(state, {
|
|
134
188
|
id,
|
|
135
189
|
onAction: p.onAction,
|
|
136
190
|
shouldSelectOnPressUp: p.shouldSelectOnPressUp,
|
|
137
191
|
shouldFocusOnHover: p.shouldFocusOnHover,
|
|
192
|
+
isVirtualized: p.isVirtualized,
|
|
193
|
+
shouldUseVirtualFocus: p.shouldUseVirtualFocus,
|
|
138
194
|
isDisabled: p.isDisabled,
|
|
195
|
+
linkBehavior,
|
|
196
|
+
UNSTABLE_itemBehavior: p.UNSTABLE_itemBehavior,
|
|
139
197
|
});
|
|
140
198
|
};
|
|
141
199
|
|
|
@@ -157,7 +215,10 @@ export function createListBox<T>(
|
|
|
157
215
|
onBlurWithin: (e) => getProps().onBlur?.(e),
|
|
158
216
|
onFocusWithinChange: (isFocused) => {
|
|
159
217
|
getProps().onFocusChange?.(isFocused);
|
|
160
|
-
|
|
218
|
+
// Collection focus lives on the selection manager (upstream tracks it in
|
|
219
|
+
// useSelectableCollection); the ListState-level setFocused may be a
|
|
220
|
+
// widget-level focus state (e.g. Select's trigger focus).
|
|
221
|
+
state.selectionManager.setFocused(isFocused);
|
|
161
222
|
},
|
|
162
223
|
});
|
|
163
224
|
|
|
@@ -200,9 +261,13 @@ export function createListBox<T>(
|
|
|
200
261
|
|
|
201
262
|
switch (e.key) {
|
|
202
263
|
case "ArrowDown": {
|
|
203
|
-
|
|
264
|
+
// Only consume the key once a target exists. Mirrors
|
|
265
|
+
// useSelectableCollection (ArrowDown, 211-225): preventDefault is called
|
|
266
|
+
// inside `if (nextKey != null)`, so at the last item without wrap the
|
|
267
|
+
// arrow is left alone to bubble (e.g. to scroll an enclosing region).
|
|
204
268
|
const nextKey = findNextEnabledKey(state, state.focusedKey(), "next", shouldWrap);
|
|
205
269
|
if (nextKey != null) {
|
|
270
|
+
e.preventDefault();
|
|
206
271
|
state.setFocusedKey(nextKey);
|
|
207
272
|
if (shouldSelectOnFocus && !e.shiftKey && state.selectionMode() === "single") {
|
|
208
273
|
state.replaceSelection(nextKey);
|
|
@@ -213,9 +278,9 @@ export function createListBox<T>(
|
|
|
213
278
|
break;
|
|
214
279
|
}
|
|
215
280
|
case "ArrowUp": {
|
|
216
|
-
e.preventDefault();
|
|
217
281
|
const prevKey = findNextEnabledKey(state, state.focusedKey(), "prev", shouldWrap);
|
|
218
282
|
if (prevKey != null) {
|
|
283
|
+
e.preventDefault();
|
|
219
284
|
state.setFocusedKey(prevKey);
|
|
220
285
|
if (shouldSelectOnFocus && !e.shiftKey && state.selectionMode() === "single") {
|
|
221
286
|
state.replaceSelection(prevKey);
|
|
@@ -225,7 +290,41 @@ export function createListBox<T>(
|
|
|
225
290
|
}
|
|
226
291
|
break;
|
|
227
292
|
}
|
|
293
|
+
case "ArrowRight":
|
|
294
|
+
case "ArrowLeft": {
|
|
295
|
+
// Horizontal orientation promotes the inline axis to the primary
|
|
296
|
+
// navigation axis. Upstream's ListKeyboardDelegate strips
|
|
297
|
+
// getKeyLeftOf/getKeyRightOf for a vertical stack, so Left/Right stay
|
|
298
|
+
// no-ops there; in a horizontal stack they move prev/next, flipped
|
|
299
|
+
// under RTL (Right=next, Left=prev in LTR).
|
|
300
|
+
if (p.orientation !== "horizontal") break;
|
|
301
|
+
const isRtl = p.direction === "rtl";
|
|
302
|
+
const forward = e.key === "ArrowRight" ? !isRtl : isRtl;
|
|
303
|
+
const focusedKey = state.focusedKey();
|
|
304
|
+
// With nothing focused, both directions enter at the first item,
|
|
305
|
+
// mirroring upstream's getFirstKey() fallback for Left and Right.
|
|
306
|
+
const nextKey =
|
|
307
|
+
focusedKey != null
|
|
308
|
+
? findNextEnabledKey(state, focusedKey, forward ? "next" : "prev", shouldWrap)
|
|
309
|
+
: findNextEnabledKey(state, null, "next", false);
|
|
310
|
+
// As with the block axis, only swallow the key when it moves focus
|
|
311
|
+
// (useSelectableCollection ArrowLeft/Right, 243-280).
|
|
312
|
+
if (nextKey != null) {
|
|
313
|
+
e.preventDefault();
|
|
314
|
+
state.setFocusedKey(nextKey);
|
|
315
|
+
if (shouldSelectOnFocus && !e.shiftKey && state.selectionMode() === "single") {
|
|
316
|
+
state.replaceSelection(nextKey);
|
|
317
|
+
} else if (e.shiftKey && state.selectionMode() === "multiple") {
|
|
318
|
+
state.extendSelection(nextKey, collection);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
228
323
|
case "Home": {
|
|
324
|
+
// Mirror useSelectableCollection (Home, 283-285): with nothing focused,
|
|
325
|
+
// Shift+Home has no anchor to extend a selection from, so leave the
|
|
326
|
+
// event alone (no focus move, no preventDefault).
|
|
327
|
+
if (state.focusedKey() == null && e.shiftKey) break;
|
|
229
328
|
e.preventDefault();
|
|
230
329
|
const firstKey = findNextEnabledKey(state, null, "next", false);
|
|
231
330
|
if (firstKey != null) {
|
|
@@ -240,6 +339,8 @@ export function createListBox<T>(
|
|
|
240
339
|
break;
|
|
241
340
|
}
|
|
242
341
|
case "End": {
|
|
342
|
+
// Mirror useSelectableCollection (End, 300-302): same anchor guard as Home.
|
|
343
|
+
if (state.focusedKey() == null && e.shiftKey) break;
|
|
243
344
|
e.preventDefault();
|
|
244
345
|
const lastKey = findNextEnabledKey(state, null, "prev", false);
|
|
245
346
|
if (lastKey != null) {
|
|
@@ -255,9 +356,18 @@ export function createListBox<T>(
|
|
|
255
356
|
}
|
|
256
357
|
case " ":
|
|
257
358
|
case "Enter": {
|
|
359
|
+
if (e.target !== e.currentTarget) {
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
|
|
258
363
|
e.preventDefault();
|
|
259
364
|
const focusedKey = state.focusedKey();
|
|
260
|
-
|
|
365
|
+
// Activation is gated on the navigation-disabled check, not the raw
|
|
366
|
+
// one: under disabledBehavior "selection" a focusable disabled option
|
|
367
|
+
// still fires onAction, mirroring useSelectableItem's allowsActions
|
|
368
|
+
// (manager.isDisabled is gated on "all"). Selection stays blocked —
|
|
369
|
+
// toggleSelection self-guards on the raw disabled check.
|
|
370
|
+
if (focusedKey != null && !isNavigationDisabled(state, focusedKey)) {
|
|
261
371
|
if (state.selectionMode() !== "none") {
|
|
262
372
|
state.toggleSelection(focusedKey);
|
|
263
373
|
}
|
|
@@ -273,8 +383,19 @@ export function createListBox<T>(
|
|
|
273
383
|
break;
|
|
274
384
|
}
|
|
275
385
|
case "Escape": {
|
|
276
|
-
|
|
277
|
-
|
|
386
|
+
// Mirror useSelectableCollection (Escape, 352-362): only clear the
|
|
387
|
+
// selection — and swallow the event — when escapeKeyBehavior is
|
|
388
|
+
// 'clearSelection', there is actually a selection to clear, and empty
|
|
389
|
+
// selection is allowed. With escapeKeyBehavior 'none', or otherwise,
|
|
390
|
+
// leave Escape alone so an enclosing overlay (popover, dialog, combobox)
|
|
391
|
+
// can handle it.
|
|
392
|
+
if (
|
|
393
|
+
(p.escapeKeyBehavior ?? "clearSelection") === "clearSelection" &&
|
|
394
|
+
!state.disallowEmptySelection() &&
|
|
395
|
+
!state.isEmpty()
|
|
396
|
+
) {
|
|
397
|
+
e.stopPropagation();
|
|
398
|
+
e.preventDefault();
|
|
278
399
|
state.clearSelection();
|
|
279
400
|
}
|
|
280
401
|
break;
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { type JSX, type Accessor } from "solid-js";
|
|
7
|
-
import { createPress } from "../interactions/createPress";
|
|
8
7
|
import { createHover, type HoverEvents } from "../interactions/createHover";
|
|
9
8
|
import { createFocusRing } from "../interactions/createFocusRing";
|
|
10
9
|
import { mergeProps } from "../utils/mergeProps";
|
|
11
10
|
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
12
11
|
import { getListBoxData } from "./createListBox";
|
|
13
12
|
import type { ListState, Key } from "@proyecto-viviana/solid-stately";
|
|
13
|
+
import { createSelectableItem, type SelectableItemState } from "../selection/createSelectableItem";
|
|
14
14
|
|
|
15
15
|
export interface AriaOptionProps {
|
|
16
16
|
/** The unique key for the option. */
|
|
@@ -27,6 +27,8 @@ export interface AriaOptionProps {
|
|
|
27
27
|
shouldFocusOnHover?: boolean;
|
|
28
28
|
/** Whether the option should use virtual focus instead of receiving DOM focus. */
|
|
29
29
|
shouldUseVirtualFocus?: boolean;
|
|
30
|
+
/** Whether the option is contained in a virtual scrolling listbox. */
|
|
31
|
+
isVirtualized?: boolean;
|
|
30
32
|
/** Whether press-up may occur without the press starting on this option. */
|
|
31
33
|
allowsDifferentPressOrigin?: boolean;
|
|
32
34
|
/** Handler called when hover starts. */
|
|
@@ -58,6 +60,10 @@ export interface OptionAria {
|
|
|
58
60
|
isHovered: Accessor<boolean>;
|
|
59
61
|
/** Whether the option is disabled. */
|
|
60
62
|
isDisabled: Accessor<boolean>;
|
|
63
|
+
/** Whether the option may be selected. */
|
|
64
|
+
allowsSelection: Accessor<boolean>;
|
|
65
|
+
/** Whether the option has an action. */
|
|
66
|
+
hasAction: Accessor<boolean>;
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
/**
|
|
@@ -72,81 +78,70 @@ export function createOption<T>(
|
|
|
72
78
|
|
|
73
79
|
const getData = () => getListBoxData(state);
|
|
74
80
|
|
|
75
|
-
const
|
|
76
|
-
return
|
|
77
|
-
getData()?.isDisabled || getProps().isDisabled || state.isDisabled(getProps().key),
|
|
78
|
-
);
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
const isSelected: Accessor<boolean> = () => {
|
|
82
|
-
return state.isSelected(getProps().key);
|
|
81
|
+
const shouldSelectOnPressUp = () => {
|
|
82
|
+
return getProps().shouldSelectOnPressUp ?? getData()?.shouldSelectOnPressUp;
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
-
const
|
|
86
|
-
return
|
|
85
|
+
const shouldFocusOnHover = () => {
|
|
86
|
+
return getProps().shouldFocusOnHover ?? getData()?.shouldFocusOnHover ?? false;
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
const
|
|
90
|
-
return getProps().
|
|
89
|
+
const shouldUseVirtualFocus = () => {
|
|
90
|
+
return getProps().shouldUseVirtualFocus ?? getData()?.shouldUseVirtualFocus ?? false;
|
|
91
91
|
};
|
|
92
92
|
|
|
93
|
-
const
|
|
94
|
-
return getProps().
|
|
93
|
+
const isVirtualized = () => {
|
|
94
|
+
return getProps().isVirtualized ?? getData()?.isVirtualized ?? false;
|
|
95
95
|
};
|
|
96
96
|
|
|
97
97
|
const allowsDifferentPressOrigin = () => {
|
|
98
|
-
return
|
|
98
|
+
return (
|
|
99
|
+
getProps().allowsDifferentPressOrigin ??
|
|
100
|
+
Boolean(shouldSelectOnPressUp() && shouldFocusOnHover())
|
|
101
|
+
);
|
|
99
102
|
};
|
|
100
103
|
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
if (state.selectionMode() !== "none") {
|
|
104
|
-
state.select(key);
|
|
105
|
-
}
|
|
106
|
-
getProps().onAction?.();
|
|
107
|
-
getData()?.onAction?.(key);
|
|
104
|
+
const isDisabledProp = () => {
|
|
105
|
+
return Boolean(getData()?.isDisabled || getProps().isDisabled);
|
|
108
106
|
};
|
|
109
107
|
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
e.pointerType === "keyboard" ||
|
|
135
|
-
e.pointerType === "virtual"
|
|
136
|
-
) {
|
|
137
|
-
selectAndAction();
|
|
138
|
-
}
|
|
108
|
+
const optionId = () => getProps().optionId ?? String(getProps().key);
|
|
109
|
+
|
|
110
|
+
const selectableItem = createSelectableItem<T>(
|
|
111
|
+
() => {
|
|
112
|
+
const key = getProps().key;
|
|
113
|
+
const hasAction = getProps().onAction != null || getData()?.onAction != null;
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
key,
|
|
117
|
+
id: optionId(),
|
|
118
|
+
isDisabled: isDisabledProp(),
|
|
119
|
+
shouldSelectOnPressUp: shouldSelectOnPressUp(),
|
|
120
|
+
allowsDifferentPressOrigin: allowsDifferentPressOrigin(),
|
|
121
|
+
isVirtualized: isVirtualized(),
|
|
122
|
+
shouldUseVirtualFocus: shouldUseVirtualFocus(),
|
|
123
|
+
onAction: hasAction
|
|
124
|
+
? () => {
|
|
125
|
+
getProps().onAction?.();
|
|
126
|
+
getData()?.onAction?.(key);
|
|
127
|
+
}
|
|
128
|
+
: undefined,
|
|
129
|
+
linkBehavior: getData()?.linkBehavior,
|
|
130
|
+
UNSTABLE_itemBehavior: getData()?.UNSTABLE_itemBehavior,
|
|
131
|
+
};
|
|
139
132
|
},
|
|
140
|
-
|
|
133
|
+
state as SelectableItemState<T>,
|
|
134
|
+
() => _ref?.() ?? null,
|
|
135
|
+
);
|
|
141
136
|
|
|
142
137
|
const { hoverProps, isHovered } = createHover({
|
|
143
138
|
get isDisabled() {
|
|
144
|
-
return isDisabled();
|
|
139
|
+
return selectableItem.isDisabled();
|
|
145
140
|
},
|
|
146
141
|
onHoverStart(e) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
state.setFocusedKey(getProps().key);
|
|
142
|
+
if (shouldFocusOnHover() && !isFocusVisible()) {
|
|
143
|
+
state.selectionManager.setFocused(true);
|
|
144
|
+
state.selectionManager.setFocusedKey(getProps().key);
|
|
150
145
|
}
|
|
151
146
|
getProps().onHoverStart?.(e);
|
|
152
147
|
},
|
|
@@ -170,24 +165,22 @@ export function createOption<T>(
|
|
|
170
165
|
const ariaLabel = getProps()["aria-label"];
|
|
171
166
|
|
|
172
167
|
return mergeProps(
|
|
173
|
-
|
|
168
|
+
selectableItem.itemProps as Record<string, unknown>,
|
|
174
169
|
hoverProps as Record<string, unknown>,
|
|
175
170
|
focusProps as Record<string, unknown>,
|
|
176
171
|
{
|
|
177
172
|
role: "option",
|
|
178
|
-
id:
|
|
179
|
-
"
|
|
180
|
-
"aria-
|
|
181
|
-
"aria-disabled": isDisabled() || undefined,
|
|
173
|
+
id: optionId(),
|
|
174
|
+
"aria-selected": selectionMode !== "none" ? selectableItem.isSelected() : undefined,
|
|
175
|
+
"aria-disabled": selectableItem.isDisabled() || undefined,
|
|
182
176
|
"aria-label": ariaLabel,
|
|
183
177
|
"aria-labelledby": !ariaLabel ? labelId : undefined,
|
|
184
178
|
"aria-describedby": descriptionId,
|
|
185
|
-
|
|
186
|
-
"data-
|
|
187
|
-
"data-
|
|
188
|
-
"data-
|
|
189
|
-
"data-
|
|
190
|
-
"data-disabled": isDisabled() || undefined,
|
|
179
|
+
"data-selected": selectableItem.isSelected() || undefined,
|
|
180
|
+
"data-focused": selectableItem.isFocused() || undefined,
|
|
181
|
+
"data-focus-visible": (selectableItem.isFocused() && isFocusVisible()) || undefined,
|
|
182
|
+
"data-pressed": selectableItem.isPressed() || undefined,
|
|
183
|
+
"data-disabled": selectableItem.isDisabled() || undefined,
|
|
191
184
|
"data-hovered": isHovered() || undefined,
|
|
192
185
|
} as Record<string, unknown>,
|
|
193
186
|
) as JSX.HTMLAttributes<HTMLElement>;
|
|
@@ -198,11 +191,13 @@ export function createOption<T>(
|
|
|
198
191
|
descriptionProps: {
|
|
199
192
|
id: descriptionId,
|
|
200
193
|
},
|
|
201
|
-
isSelected,
|
|
202
|
-
isFocused,
|
|
203
|
-
isFocusVisible: () => isFocused() && isFocusVisible(),
|
|
204
|
-
isPressed,
|
|
194
|
+
isSelected: selectableItem.isSelected,
|
|
195
|
+
isFocused: selectableItem.isFocused,
|
|
196
|
+
isFocusVisible: () => selectableItem.isFocused() && isFocusVisible(),
|
|
197
|
+
isPressed: selectableItem.isPressed,
|
|
205
198
|
isHovered,
|
|
206
|
-
isDisabled,
|
|
199
|
+
isDisabled: selectableItem.isDisabled,
|
|
200
|
+
allowsSelection: selectableItem.allowsSelection,
|
|
201
|
+
hasAction: selectableItem.hasAction,
|
|
207
202
|
};
|
|
208
203
|
}
|