@proyecto-viviana/solidaria 0.3.0 → 0.4.1
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/DragManager.js +627 -0
- package/dist/_chunk/DragManager.js.map +1 -0
- package/dist/_chunk/DragManager.jsx +627 -0
- package/dist/_chunk/DragManager.jsx.map +1 -0
- package/dist/_chunk/FocusScope.js +400 -0
- package/dist/_chunk/FocusScope.js.map +1 -0
- package/dist/_chunk/FocusScope.jsx +375 -0
- package/dist/_chunk/FocusScope.jsx.map +1 -0
- package/dist/_chunk/actiongroup.js +141 -0
- package/dist/_chunk/actiongroup.js.map +1 -0
- package/dist/_chunk/actiongroup.jsx +141 -0
- package/dist/_chunk/actiongroup.jsx.map +1 -0
- package/dist/_chunk/announce.js +207 -0
- package/dist/_chunk/announce.js.map +1 -0
- package/dist/_chunk/announce.jsx +207 -0
- package/dist/_chunk/announce.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 +244 -0
- package/dist/_chunk/autocomplete.js.map +1 -0
- package/dist/_chunk/autocomplete.jsx +244 -0
- package/dist/_chunk/autocomplete.jsx.map +1 -0
- package/dist/_chunk/breadcrumbs.js +121 -0
- package/dist/_chunk/breadcrumbs.js.map +1 -0
- package/dist/_chunk/breadcrumbs.jsx +121 -0
- package/dist/_chunk/breadcrumbs.jsx.map +1 -0
- package/dist/_chunk/button.js +275 -0
- package/dist/_chunk/button.js.map +1 -0
- package/dist/_chunk/button.jsx +275 -0
- package/dist/_chunk/button.jsx.map +1 -0
- package/dist/_chunk/calendar.js +1037 -0
- package/dist/_chunk/calendar.js.map +1 -0
- package/dist/_chunk/calendar.jsx +1037 -0
- package/dist/_chunk/calendar.jsx.map +1 -0
- package/dist/_chunk/checkbox.js +235 -0
- package/dist/_chunk/checkbox.js.map +1 -0
- package/dist/_chunk/checkbox.jsx +235 -0
- package/dist/_chunk/checkbox.jsx.map +1 -0
- package/dist/_chunk/color.js +1458 -0
- package/dist/_chunk/color.js.map +1 -0
- package/dist/_chunk/color.jsx +1458 -0
- package/dist/_chunk/color.jsx.map +1 -0
- package/dist/_chunk/combobox.js +1062 -0
- package/dist/_chunk/combobox.js.map +1 -0
- package/dist/_chunk/combobox.jsx +1062 -0
- package/dist/_chunk/combobox.jsx.map +1 -0
- package/dist/_chunk/constants.js +19 -0
- package/dist/_chunk/constants.js.map +1 -0
- package/dist/_chunk/constants.jsx +19 -0
- package/dist/_chunk/constants.jsx.map +1 -0
- package/dist/_chunk/createCollator.js +61 -0
- package/dist/_chunk/createCollator.js.map +1 -0
- package/dist/_chunk/createCollator.jsx +61 -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 +55 -0
- package/dist/_chunk/createField.js.map +1 -0
- package/dist/_chunk/createField.jsx +55 -0
- package/dist/_chunk/createField.jsx.map +1 -0
- package/dist/_chunk/createFocus.js +105 -0
- package/dist/_chunk/createFocus.js.map +1 -0
- package/dist/_chunk/createFocus.jsx +105 -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 +120 -0
- package/dist/_chunk/createFocusWithin.js.map +1 -0
- package/dist/_chunk/createFocusWithin.jsx +120 -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/createFormReset.js +39 -0
- package/dist/_chunk/createFormReset.js.map +1 -0
- package/dist/_chunk/createFormReset.jsx +39 -0
- package/dist/_chunk/createFormReset.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 +131 -0
- package/dist/_chunk/createHover.js.map +1 -0
- package/dist/_chunk/createHover.jsx +131 -0
- package/dist/_chunk/createHover.jsx.map +1 -0
- package/dist/_chunk/createInteractionModality.js +268 -0
- package/dist/_chunk/createInteractionModality.js.map +1 -0
- package/dist/_chunk/createInteractionModality.jsx +268 -0
- package/dist/_chunk/createInteractionModality.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +47 -0
- package/dist/_chunk/createLabel.js.map +1 -0
- package/dist/_chunk/createLabel.jsx +47 -0
- package/dist/_chunk/createLabel.jsx.map +1 -0
- package/dist/_chunk/createLabels.js +32 -0
- package/dist/_chunk/createLabels.js.map +1 -0
- package/dist/_chunk/createLabels.jsx +32 -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/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 +82 -0
- package/dist/_chunk/createProgressBar.js.map +1 -0
- package/dist/_chunk/createProgressBar.jsx +82 -0
- package/dist/_chunk/createProgressBar.jsx.map +1 -0
- package/dist/_chunk/createSelectableItem.js +302 -0
- package/dist/_chunk/createSelectableItem.js.map +1 -0
- package/dist/_chunk/createSelectableItem.jsx +302 -0
- package/dist/_chunk/createSelectableItem.jsx.map +1 -0
- package/dist/_chunk/createStringFormatter.js +61 -0
- package/dist/_chunk/createStringFormatter.js.map +1 -0
- package/dist/_chunk/createStringFormatter.jsx +61 -0
- package/dist/_chunk/createStringFormatter.jsx.map +1 -0
- package/dist/_chunk/createToggle.js +159 -0
- package/dist/_chunk/createToggle.js.map +1 -0
- package/dist/_chunk/createToggle.jsx +159 -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 +1706 -0
- package/dist/_chunk/datepicker.js.map +1 -0
- package/dist/_chunk/datepicker.jsx +1706 -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 +2395 -0
- package/dist/_chunk/dnd.js.map +1 -0
- package/dist/_chunk/dnd.jsx +2395 -0
- package/dist/_chunk/dnd.jsx.map +1 -0
- package/dist/_chunk/env.js +87 -0
- package/dist/_chunk/env.js.map +1 -0
- package/dist/_chunk/env.jsx +87 -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 +631 -0
- package/dist/_chunk/focus2.js.map +1 -0
- package/dist/_chunk/focus2.jsx +631 -0
- package/dist/_chunk/focus2.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 +369 -0
- package/dist/_chunk/gridlist.js.map +1 -0
- package/dist/_chunk/gridlist.jsx +369 -0
- package/dist/_chunk/gridlist.jsx.map +1 -0
- package/dist/_chunk/i18n.js +199 -0
- package/dist/_chunk/i18n.js.map +1 -0
- package/dist/_chunk/i18n.jsx +199 -0
- package/dist/_chunk/i18n.jsx.map +1 -0
- package/dist/_chunk/interactions.js +331 -0
- package/dist/_chunk/interactions.js.map +1 -0
- package/dist/_chunk/interactions.jsx +325 -0
- package/dist/_chunk/interactions.jsx.map +1 -0
- package/dist/_chunk/link.js +97 -0
- package/dist/_chunk/link.js.map +1 -0
- package/dist/_chunk/link.jsx +97 -0
- package/dist/_chunk/link.jsx.map +1 -0
- package/dist/_chunk/listbox.js +356 -0
- package/dist/_chunk/listbox.js.map +1 -0
- package/dist/_chunk/listbox.jsx +356 -0
- package/dist/_chunk/listbox.jsx.map +1 -0
- package/dist/_chunk/locale.js +173 -0
- package/dist/_chunk/locale.js.map +1 -0
- package/dist/_chunk/locale.jsx +167 -0
- package/dist/_chunk/locale.jsx.map +1 -0
- package/dist/_chunk/menu.js +519 -0
- package/dist/_chunk/menu.js.map +1 -0
- package/dist/_chunk/menu.jsx +519 -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 +259 -0
- package/dist/_chunk/numberfield.js.map +1 -0
- package/dist/_chunk/numberfield.jsx +259 -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 +320 -0
- package/dist/_chunk/radio.js.map +1 -0
- package/dist/_chunk/radio.jsx +320 -0
- package/dist/_chunk/radio.jsx.map +1 -0
- package/dist/_chunk/reactivity.js +21 -0
- package/dist/_chunk/reactivity.js.map +1 -0
- package/dist/_chunk/reactivity.jsx +21 -0
- package/dist/_chunk/reactivity.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +210 -0
- package/dist/_chunk/searchfield.js.map +1 -0
- package/dist/_chunk/searchfield.jsx +210 -0
- package/dist/_chunk/searchfield.jsx.map +1 -0
- package/dist/_chunk/select.js +406 -0
- package/dist/_chunk/select.js.map +1 -0
- package/dist/_chunk/select.jsx +397 -0
- package/dist/_chunk/select.jsx.map +1 -0
- package/dist/_chunk/selection.js +666 -0
- package/dist/_chunk/selection.js.map +1 -0
- package/dist/_chunk/selection.jsx +666 -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 +256 -0
- package/dist/_chunk/slider.js.map +1 -0
- package/dist/_chunk/slider.jsx +256 -0
- package/dist/_chunk/slider.jsx.map +1 -0
- package/dist/_chunk/spinbutton.js +153 -0
- package/dist/_chunk/spinbutton.js.map +1 -0
- package/dist/_chunk/spinbutton.jsx +153 -0
- package/dist/_chunk/spinbutton.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 +1088 -0
- package/dist/_chunk/table.js.map +1 -0
- package/dist/_chunk/table.jsx +1088 -0
- package/dist/_chunk/table.jsx.map +1 -0
- package/dist/_chunk/tabs.js +263 -0
- package/dist/_chunk/tabs.js.map +1 -0
- package/dist/_chunk/tabs.jsx +263 -0
- package/dist/_chunk/tabs.jsx.map +1 -0
- package/dist/_chunk/tag.js +322 -0
- package/dist/_chunk/tag.js.map +1 -0
- package/dist/_chunk/tag.jsx +322 -0
- package/dist/_chunk/tag.jsx.map +1 -0
- package/dist/_chunk/textfield.js +110 -0
- package/dist/_chunk/textfield.js.map +1 -0
- package/dist/_chunk/textfield.jsx +110 -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 +226 -0
- package/dist/_chunk/toolbar.js.map +1 -0
- package/dist/_chunk/toolbar.jsx +226 -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 +452 -0
- package/dist/_chunk/tree.js.map +1 -0
- package/dist/_chunk/tree.jsx +452 -0
- package/dist/_chunk/tree.jsx.map +1 -0
- package/dist/_chunk/utils.js +705 -0
- package/dist/_chunk/utils.js.map +1 -0
- package/dist/_chunk/utils.jsx +705 -0
- package/dist/_chunk/utils.jsx.map +1 -0
- package/dist/_chunk/visually-hidden.js +93 -0
- package/dist/_chunk/visually-hidden.js.map +1 -0
- package/dist/_chunk/visually-hidden.jsx +93 -0
- package/dist/_chunk/visually-hidden.jsx.map +1 -0
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.js +2 -0
- package/dist/actiongroup/index.jsx +2 -0
- package/dist/autocomplete/createAutocomplete.d.ts +12 -7
- 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/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/index.jsx +2 -0
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- 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/createRangeCalendarCell.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/intl/index.d.ts +1 -1
- package/dist/calendar/intl/index.d.ts.map +1 -1
- 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/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.js +2 -0
- package/dist/color/index.jsx +2 -0
- package/dist/color/intl/index.d.ts +30 -0
- package/dist/color/intl/index.d.ts.map +1 -0
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.js +2 -0
- package/dist/combobox/index.jsx +2 -0
- package/dist/combobox/intl/generated-locales.d.ts +16 -0
- package/dist/combobox/intl/generated-locales.d.ts.map +1 -0
- package/dist/combobox/intl/index.d.ts +2 -2
- package/dist/combobox/intl/index.d.ts.map +1 -1
- package/dist/datepicker/createDateField.d.ts +45 -23
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +34 -6
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +13 -13
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
- package/dist/datepicker/createDateRangePicker.d.ts +55 -7
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +6 -15
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createDisplayNames.d.ts +17 -0
- package/dist/datepicker/createDisplayNames.d.ts.map +1 -0
- package/dist/datepicker/createTimeField.d.ts +12 -49
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +3 -3
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/datepicker/index.js +2 -0
- package/dist/datepicker/index.jsx +2 -0
- package/dist/datepicker/intl.d.ts +12 -0
- package/dist/datepicker/intl.d.ts.map +1 -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/DragManager.d.ts +86 -0
- package/dist/dnd/DragManager.d.ts.map +1 -0
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts +42 -0
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts.map +1 -0
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +12 -7
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +7 -15
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +5 -1
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +3 -0
- package/dist/dnd/index.jsx +3 -0
- package/dist/dnd/intl/index.d.ts +39 -0
- package/dist/dnd/intl/index.d.ts.map +1 -0
- package/dist/dnd/utils.d.ts +7 -2
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +7 -0
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/index.d.ts +2 -1
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/focus/index.js +3 -0
- package/dist/focus/index.jsx +3 -0
- package/dist/focus/virtualFocus.d.ts +26 -0
- package/dist/focus/virtualFocus.d.ts.map +1 -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 +5 -0
- package/dist/i18n/index.jsx +5 -0
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -18311
- package/dist/index.jsx +77 -18242
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +11 -0
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.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 +9 -0
- package/dist/interactions/index.jsx +9 -0
- package/dist/label/createLabels.d.ts.map +1 -1
- 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 +7 -1
- 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 +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 +5 -0
- package/dist/selection/index.jsx +5 -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/spinbutton/createSpinButton.d.ts +41 -0
- package/dist/spinbutton/createSpinButton.d.ts.map +1 -0
- package/dist/spinbutton/index.d.ts +3 -0
- package/dist/spinbutton/index.d.ts.map +1 -0
- package/dist/spinbutton/index.js +2 -0
- package/dist/spinbutton/index.jsx +2 -0
- package/dist/spinbutton/intl.d.ts +5 -0
- package/dist/spinbutton/intl.d.ts.map +1 -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/createTableColumnHeader.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/createTableSelectionCheckbox.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 +35 -1
- package/dist/table/types.d.ts.map +1 -1
- package/dist/table/utils.d.ts +15 -0
- package/dist/table/utils.d.ts.map +1 -0
- package/dist/tabs/createTabs.d.ts +5 -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/createTagGroup.d.ts +7 -0
- package/dist/tag/createTagGroup.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/createTreeSelectionCheckbox.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 +49 -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 +6 -0
- package/dist/utils/index.jsx +6 -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/actiongroup/createActionGroup.ts +26 -109
- package/src/autocomplete/createAutocomplete.ts +202 -35
- package/src/breadcrumbs/createBreadcrumbs.ts +12 -4
- package/src/button/createToggleButtonGroup.ts +19 -14
- package/src/calendar/createCalendar.ts +5 -4
- package/src/calendar/createCalendarCell.ts +36 -5
- package/src/calendar/createCalendarGrid.ts +47 -12
- package/src/calendar/createCalendarMonthPicker.ts +105 -0
- package/src/calendar/createCalendarYearPicker.ts +144 -0
- package/src/calendar/createRangeCalendar.ts +27 -15
- package/src/calendar/createRangeCalendarCell.ts +17 -3
- package/src/calendar/index.ts +17 -0
- package/src/calendar/intl/index.ts +8 -0
- package/src/calendar/utils.ts +4 -0
- package/src/checkbox/createCheckbox.ts +10 -0
- package/src/checkbox/createCheckboxGroupItem.ts +12 -16
- package/src/color/createColorArea.ts +17 -10
- package/src/color/createColorField.ts +8 -1
- package/src/color/createColorSlider.ts +1 -2
- package/src/color/createColorSwatch.ts +4 -2
- package/src/color/createColorWheel.ts +0 -6
- package/src/color/intl/index.ts +316 -0
- package/src/combobox/createComboBox.ts +35 -4
- package/src/combobox/intl/generated-locales.ts +635 -0
- package/src/combobox/intl/index.ts +8 -2
- package/src/datepicker/createDateField.ts +228 -213
- package/src/datepicker/createDatePicker.ts +157 -146
- package/src/datepicker/createDatePickerGroup.ts +88 -82
- package/src/datepicker/createDateRangePicker.ts +230 -179
- package/src/datepicker/createDateSegment.ts +386 -384
- package/src/datepicker/createDisplayNames.ts +45 -0
- package/src/datepicker/createTimeField.ts +36 -129
- package/src/datepicker/index.ts +13 -14
- package/src/datepicker/intl.ts +633 -0
- package/src/dnd/DragManager.ts +693 -0
- package/src/dnd/DropTargetKeyboardNavigation.ts +337 -0
- package/src/dnd/createDrag.ts +31 -5
- package/src/dnd/createDraggableCollection.ts +33 -15
- package/src/dnd/createDraggableItem.ts +92 -5
- package/src/dnd/createDroppableCollection.ts +488 -371
- package/src/dnd/index.ts +11 -0
- package/src/dnd/intl/ar-AE.json +29 -0
- package/src/dnd/intl/bg-BG.json +29 -0
- package/src/dnd/intl/cs-CZ.json +29 -0
- package/src/dnd/intl/da-DK.json +29 -0
- package/src/dnd/intl/de-DE.json +29 -0
- package/src/dnd/intl/el-GR.json +29 -0
- package/src/dnd/intl/en-US.json +29 -0
- package/src/dnd/intl/es-ES.json +29 -0
- package/src/dnd/intl/et-EE.json +29 -0
- package/src/dnd/intl/fi-FI.json +29 -0
- package/src/dnd/intl/fr-FR.json +29 -0
- package/src/dnd/intl/he-IL.json +29 -0
- package/src/dnd/intl/hr-HR.json +29 -0
- package/src/dnd/intl/hu-HU.json +29 -0
- package/src/dnd/intl/index.ts +139 -0
- package/src/dnd/intl/it-IT.json +29 -0
- package/src/dnd/intl/ja-JP.json +29 -0
- package/src/dnd/intl/ko-KR.json +29 -0
- package/src/dnd/intl/lt-LT.json +29 -0
- package/src/dnd/intl/lv-LV.json +29 -0
- package/src/dnd/intl/nb-NO.json +29 -0
- package/src/dnd/intl/nl-NL.json +29 -0
- package/src/dnd/intl/pl-PL.json +29 -0
- package/src/dnd/intl/pt-BR.json +29 -0
- package/src/dnd/intl/pt-PT.json +29 -0
- package/src/dnd/intl/ro-RO.json +29 -0
- package/src/dnd/intl/ru-RU.json +29 -0
- package/src/dnd/intl/sk-SK.json +29 -0
- package/src/dnd/intl/sl-SI.json +29 -0
- package/src/dnd/intl/sr-SP.json +29 -0
- package/src/dnd/intl/sv-SE.json +29 -0
- package/src/dnd/intl/tr-TR.json +29 -0
- package/src/dnd/intl/uk-UA.json +29 -0
- package/src/dnd/intl/zh-CN.json +29 -0
- package/src/dnd/intl/zh-TW.json +29 -0
- package/src/dnd/utils.ts +63 -3
- package/src/focus/FocusScope.tsx +266 -24
- package/src/focus/index.ts +8 -0
- package/src/focus/virtualFocus.ts +55 -0
- package/src/form/createFormValidation.ts +8 -1
- package/src/gridlist/createGridList.ts +187 -48
- 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 +51 -3
- package/src/interactions/FocusableProvider.tsx +11 -6
- package/src/interactions/PressEvent.ts +14 -0
- package/src/interactions/createFocus.ts +26 -21
- package/src/interactions/createFocusWithin.ts +23 -24
- package/src/interactions/createInteractionModality.ts +26 -15
- package/src/interactions/createKeyboard.ts +10 -0
- package/src/interactions/createPress.ts +29 -6
- package/src/label/createLabels.ts +7 -4
- package/src/listbox/createListBox.ts +203 -10
- package/src/listbox/createOption.ts +84 -74
- 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 +41 -4
- 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 +512 -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/spinbutton/createSpinButton.ts +163 -0
- package/src/spinbutton/index.ts +10 -0
- package/src/spinbutton/intl.ts +115 -0
- package/src/ssr/index.tsx +31 -0
- package/src/switch/createSwitch.ts +10 -0
- package/src/table/createTable.ts +82 -27
- package/src/table/createTableColumnHeader.ts +10 -0
- package/src/table/createTableRow.ts +208 -203
- package/src/table/createTableSelectAllCheckbox.ts +3 -4
- package/src/table/createTableSelectionCheckbox.ts +24 -1
- package/src/table/types.ts +37 -1
- package/src/table/utils.ts +41 -0
- package/src/tabs/createTabs.ts +95 -24
- package/src/tag/createTag.ts +30 -36
- package/src/tag/createTagGroup.ts +92 -0
- package/src/toast/createToast.ts +1 -0
- package/src/toggle/createToggle.ts +20 -0
- package/src/toolbar/createToolbar.ts +43 -94
- package/src/tree/createTree.ts +165 -52
- package/src/tree/createTreeItem.ts +105 -120
- package/src/tree/createTreeSelectionCheckbox.ts +14 -1
- package/src/tree/types.ts +10 -0
- package/src/utils/animation.ts +243 -0
- package/src/utils/dom.ts +216 -25
- package/src/utils/index.ts +10 -0
- package/src/utils/keyboard.ts +25 -0
- package/src/utils/mergeProps.ts +8 -1
- package/src/utils/scrollIntoView.ts +181 -0
- package/dist/datepicker/createTimeSegment.d.ts +0 -29
- package/dist/datepicker/createTimeSegment.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
- package/src/datepicker/createTimeSegment.ts +0 -352
|
@@ -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
|
|
|
@@ -189,6 +250,57 @@ export function createListBox<T>(
|
|
|
189
250
|
},
|
|
190
251
|
});
|
|
191
252
|
|
|
253
|
+
// Focus marshalling — the container is a trampoline. When a standalone
|
|
254
|
+
// listbox receives DOM focus with nothing focused yet (e.g. Tab lands on the
|
|
255
|
+
// container, whose roving tabIndex is 0 only while `focusedKey == null`), move
|
|
256
|
+
// the focused key to the first/last option; `createSelectableItem`'s focus
|
|
257
|
+
// effect then pulls REAL DOM focus onto that option and the container rolls to
|
|
258
|
+
// tabIndex -1. This mirrors `useSelectableCollection`'s `onFocus`
|
|
259
|
+
// (useSelectableCollection.ts:409-454) and is why upstream never needs
|
|
260
|
+
// `aria-activedescendant` on a standalone listbox — real focus IS the AT
|
|
261
|
+
// channel. Skipped under `shouldUseVirtualFocus` (ComboBox/Autocomplete keep
|
|
262
|
+
// DOM focus on the input and drive an activedescendant via the virtual-focus
|
|
263
|
+
// channel instead).
|
|
264
|
+
//
|
|
265
|
+
// NOTE on the guard: unlike upstream (whose selectable `onFocus` sets
|
|
266
|
+
// `manager.setFocused(true)` itself and guards on `manager.isFocused`), our
|
|
267
|
+
// `createFocusWithin` already flips `setFocused(true)` via `onFocusWithinChange`
|
|
268
|
+
// — and mergeProps chains it BEFORE this handler — so `manager.isFocused` is
|
|
269
|
+
// already true here. Guard on `focusedKey() == null` instead (only marshal when
|
|
270
|
+
// no option is focused yet). `onFocus` is non-bubbling in Solid, so this fires
|
|
271
|
+
// only when the container element itself receives focus, not on child focus.
|
|
272
|
+
const onListBoxFocus: JSX.EventHandler<HTMLElement, FocusEvent> = (e) => {
|
|
273
|
+
const p = getProps();
|
|
274
|
+
if (p.isDisabled || p.shouldUseVirtualFocus) return;
|
|
275
|
+
// Ignore focus events that bubbled through a portal.
|
|
276
|
+
if (!e.currentTarget.contains(e.target as Node)) return;
|
|
277
|
+
if (state.focusedKey() != null) return;
|
|
278
|
+
|
|
279
|
+
const manager = state.selectionManager;
|
|
280
|
+
const selectOnFocus = state.selectionBehavior() === "replace";
|
|
281
|
+
const navigateToKey = (key: Key | null | undefined) => {
|
|
282
|
+
if (key == null) return;
|
|
283
|
+
state.setFocusedKey(key);
|
|
284
|
+
if (selectOnFocus && !manager.isSelected(key)) {
|
|
285
|
+
state.replaceSelection(key);
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
const collection = state.collection();
|
|
290
|
+
const relatedTarget = e.relatedTarget as Element | null;
|
|
291
|
+
// Detect tab direction: if focus came from an element that FOLLOWS the
|
|
292
|
+
// listbox in the document, the user is shift-tabbing backward into it, so
|
|
293
|
+
// enter at the last item; otherwise enter at the first.
|
|
294
|
+
if (
|
|
295
|
+
relatedTarget &&
|
|
296
|
+
e.currentTarget.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING
|
|
297
|
+
) {
|
|
298
|
+
navigateToKey(manager.lastSelectedKey ?? collection.getLastKey());
|
|
299
|
+
} else {
|
|
300
|
+
navigateToKey(manager.firstSelectedKey ?? collection.getFirstKey());
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
|
|
192
304
|
// Keyboard navigation
|
|
193
305
|
const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (e) => {
|
|
194
306
|
const p = getProps();
|
|
@@ -200,9 +312,13 @@ export function createListBox<T>(
|
|
|
200
312
|
|
|
201
313
|
switch (e.key) {
|
|
202
314
|
case "ArrowDown": {
|
|
203
|
-
|
|
315
|
+
// Only consume the key once a target exists. Mirrors
|
|
316
|
+
// useSelectableCollection (ArrowDown, 211-225): preventDefault is called
|
|
317
|
+
// inside `if (nextKey != null)`, so at the last item without wrap the
|
|
318
|
+
// arrow is left alone to bubble (e.g. to scroll an enclosing region).
|
|
204
319
|
const nextKey = findNextEnabledKey(state, state.focusedKey(), "next", shouldWrap);
|
|
205
320
|
if (nextKey != null) {
|
|
321
|
+
e.preventDefault();
|
|
206
322
|
state.setFocusedKey(nextKey);
|
|
207
323
|
if (shouldSelectOnFocus && !e.shiftKey && state.selectionMode() === "single") {
|
|
208
324
|
state.replaceSelection(nextKey);
|
|
@@ -213,9 +329,9 @@ export function createListBox<T>(
|
|
|
213
329
|
break;
|
|
214
330
|
}
|
|
215
331
|
case "ArrowUp": {
|
|
216
|
-
e.preventDefault();
|
|
217
332
|
const prevKey = findNextEnabledKey(state, state.focusedKey(), "prev", shouldWrap);
|
|
218
333
|
if (prevKey != null) {
|
|
334
|
+
e.preventDefault();
|
|
219
335
|
state.setFocusedKey(prevKey);
|
|
220
336
|
if (shouldSelectOnFocus && !e.shiftKey && state.selectionMode() === "single") {
|
|
221
337
|
state.replaceSelection(prevKey);
|
|
@@ -225,7 +341,41 @@ export function createListBox<T>(
|
|
|
225
341
|
}
|
|
226
342
|
break;
|
|
227
343
|
}
|
|
344
|
+
case "ArrowRight":
|
|
345
|
+
case "ArrowLeft": {
|
|
346
|
+
// Horizontal orientation promotes the inline axis to the primary
|
|
347
|
+
// navigation axis. Upstream's ListKeyboardDelegate strips
|
|
348
|
+
// getKeyLeftOf/getKeyRightOf for a vertical stack, so Left/Right stay
|
|
349
|
+
// no-ops there; in a horizontal stack they move prev/next, flipped
|
|
350
|
+
// under RTL (Right=next, Left=prev in LTR).
|
|
351
|
+
if (p.orientation !== "horizontal") break;
|
|
352
|
+
const isRtl = p.direction === "rtl";
|
|
353
|
+
const forward = e.key === "ArrowRight" ? !isRtl : isRtl;
|
|
354
|
+
const focusedKey = state.focusedKey();
|
|
355
|
+
// With nothing focused, both directions enter at the first item,
|
|
356
|
+
// mirroring upstream's getFirstKey() fallback for Left and Right.
|
|
357
|
+
const nextKey =
|
|
358
|
+
focusedKey != null
|
|
359
|
+
? findNextEnabledKey(state, focusedKey, forward ? "next" : "prev", shouldWrap)
|
|
360
|
+
: findNextEnabledKey(state, null, "next", false);
|
|
361
|
+
// As with the block axis, only swallow the key when it moves focus
|
|
362
|
+
// (useSelectableCollection ArrowLeft/Right, 243-280).
|
|
363
|
+
if (nextKey != null) {
|
|
364
|
+
e.preventDefault();
|
|
365
|
+
state.setFocusedKey(nextKey);
|
|
366
|
+
if (shouldSelectOnFocus && !e.shiftKey && state.selectionMode() === "single") {
|
|
367
|
+
state.replaceSelection(nextKey);
|
|
368
|
+
} else if (e.shiftKey && state.selectionMode() === "multiple") {
|
|
369
|
+
state.extendSelection(nextKey, collection);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
228
374
|
case "Home": {
|
|
375
|
+
// Mirror useSelectableCollection (Home, 283-285): with nothing focused,
|
|
376
|
+
// Shift+Home has no anchor to extend a selection from, so leave the
|
|
377
|
+
// event alone (no focus move, no preventDefault).
|
|
378
|
+
if (state.focusedKey() == null && e.shiftKey) break;
|
|
229
379
|
e.preventDefault();
|
|
230
380
|
const firstKey = findNextEnabledKey(state, null, "next", false);
|
|
231
381
|
if (firstKey != null) {
|
|
@@ -240,6 +390,8 @@ export function createListBox<T>(
|
|
|
240
390
|
break;
|
|
241
391
|
}
|
|
242
392
|
case "End": {
|
|
393
|
+
// Mirror useSelectableCollection (End, 300-302): same anchor guard as Home.
|
|
394
|
+
if (state.focusedKey() == null && e.shiftKey) break;
|
|
243
395
|
e.preventDefault();
|
|
244
396
|
const lastKey = findNextEnabledKey(state, null, "prev", false);
|
|
245
397
|
if (lastKey != null) {
|
|
@@ -255,9 +407,18 @@ export function createListBox<T>(
|
|
|
255
407
|
}
|
|
256
408
|
case " ":
|
|
257
409
|
case "Enter": {
|
|
410
|
+
if (e.target !== e.currentTarget) {
|
|
411
|
+
break;
|
|
412
|
+
}
|
|
413
|
+
|
|
258
414
|
e.preventDefault();
|
|
259
415
|
const focusedKey = state.focusedKey();
|
|
260
|
-
|
|
416
|
+
// Activation is gated on the navigation-disabled check, not the raw
|
|
417
|
+
// one: under disabledBehavior "selection" a focusable disabled option
|
|
418
|
+
// still fires onAction, mirroring useSelectableItem's allowsActions
|
|
419
|
+
// (manager.isDisabled is gated on "all"). Selection stays blocked —
|
|
420
|
+
// toggleSelection self-guards on the raw disabled check.
|
|
421
|
+
if (focusedKey != null && !isNavigationDisabled(state, focusedKey)) {
|
|
261
422
|
if (state.selectionMode() !== "none") {
|
|
262
423
|
state.toggleSelection(focusedKey);
|
|
263
424
|
}
|
|
@@ -273,8 +434,19 @@ export function createListBox<T>(
|
|
|
273
434
|
break;
|
|
274
435
|
}
|
|
275
436
|
case "Escape": {
|
|
276
|
-
|
|
277
|
-
|
|
437
|
+
// Mirror useSelectableCollection (Escape, 352-362): only clear the
|
|
438
|
+
// selection — and swallow the event — when escapeKeyBehavior is
|
|
439
|
+
// 'clearSelection', there is actually a selection to clear, and empty
|
|
440
|
+
// selection is allowed. With escapeKeyBehavior 'none', or otherwise,
|
|
441
|
+
// leave Escape alone so an enclosing overlay (popover, dialog, combobox)
|
|
442
|
+
// can handle it.
|
|
443
|
+
if (
|
|
444
|
+
(p.escapeKeyBehavior ?? "clearSelection") === "clearSelection" &&
|
|
445
|
+
!state.disallowEmptySelection() &&
|
|
446
|
+
!state.isEmpty()
|
|
447
|
+
) {
|
|
448
|
+
e.stopPropagation();
|
|
449
|
+
e.preventDefault();
|
|
278
450
|
state.clearSelection();
|
|
279
451
|
}
|
|
280
452
|
break;
|
|
@@ -289,6 +461,26 @@ export function createListBox<T>(
|
|
|
289
461
|
get listBoxProps() {
|
|
290
462
|
const p = getProps();
|
|
291
463
|
const selectionMode = state.selectionMode();
|
|
464
|
+
const virtualFocus = p.shouldUseVirtualFocus ?? false;
|
|
465
|
+
const focusedKey = state.focusedKey();
|
|
466
|
+
|
|
467
|
+
// Roving container tabIndex mirrors `useSelectableCollection`
|
|
468
|
+
// (useSelectableCollection.ts:581-582): with real option focus, the
|
|
469
|
+
// container is tabbable (0) only while nothing is focused, then rolls to
|
|
470
|
+
// -1 once focus lands on an option so Tab exits the widget. Under virtual
|
|
471
|
+
// focus (ComboBox/Autocomplete) the container is NOT a tab stop at all —
|
|
472
|
+
// upstream leaves `tabIndex` undefined, so the popover listbox never
|
|
473
|
+
// appears in the roving trail. `aria-activedescendant` is the
|
|
474
|
+
// virtual-focus AT channel and is emitted ONLY on that path — a standalone
|
|
475
|
+
// listbox announces the active option through real DOM focus, so upstream
|
|
476
|
+
// never sets it there.
|
|
477
|
+
const tabIndex = p.isDisabled
|
|
478
|
+
? undefined
|
|
479
|
+
: virtualFocus
|
|
480
|
+
? undefined
|
|
481
|
+
: focusedKey != null
|
|
482
|
+
? -1
|
|
483
|
+
: 0;
|
|
292
484
|
|
|
293
485
|
const baseProps = mergeProps(
|
|
294
486
|
domProps(),
|
|
@@ -296,12 +488,13 @@ export function createListBox<T>(
|
|
|
296
488
|
fieldProps as Record<string, unknown>,
|
|
297
489
|
{
|
|
298
490
|
role: "listbox",
|
|
299
|
-
tabIndex
|
|
491
|
+
tabIndex,
|
|
300
492
|
"aria-disabled": p.isDisabled || undefined,
|
|
301
493
|
"aria-multiselectable": selectionMode === "multiple" ? true : undefined,
|
|
302
494
|
"aria-activedescendant":
|
|
303
|
-
|
|
495
|
+
virtualFocus && focusedKey != null ? String(focusedKey) : undefined,
|
|
304
496
|
onKeyDown,
|
|
497
|
+
onFocus: onListBoxFocus,
|
|
305
498
|
},
|
|
306
499
|
);
|
|
307
500
|
|
|
@@ -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
|
-
import type
|
|
12
|
+
import { getItemCount, type ListState, type 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
|
-
);
|
|
81
|
+
const shouldSelectOnPressUp = () => {
|
|
82
|
+
return getProps().shouldSelectOnPressUp ?? getData()?.shouldSelectOnPressUp;
|
|
79
83
|
};
|
|
80
84
|
|
|
81
|
-
const
|
|
82
|
-
return
|
|
85
|
+
const shouldFocusOnHover = () => {
|
|
86
|
+
return getProps().shouldFocusOnHover ?? getData()?.shouldFocusOnHover ?? false;
|
|
83
87
|
};
|
|
84
88
|
|
|
85
|
-
const
|
|
86
|
-
return
|
|
89
|
+
const shouldUseVirtualFocus = () => {
|
|
90
|
+
return getProps().shouldUseVirtualFocus ?? getData()?.shouldUseVirtualFocus ?? false;
|
|
87
91
|
};
|
|
88
92
|
|
|
89
|
-
const
|
|
90
|
-
return getProps().
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
const shouldUseVirtualFocus = () => {
|
|
94
|
-
return getProps().shouldUseVirtualFocus ?? false;
|
|
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
|
},
|
|
@@ -169,25 +164,38 @@ export function createOption<T>(
|
|
|
169
164
|
const selectionMode = state.selectionMode();
|
|
170
165
|
const ariaLabel = getProps()["aria-label"];
|
|
171
166
|
|
|
167
|
+
// When the listbox is virtualized the DOM only holds the windowed rows, so
|
|
168
|
+
// (mirroring @react-aria/listbox useOption) publish the item's absolute
|
|
169
|
+
// position in the full collection for assistive tech. Only under
|
|
170
|
+
// virtualization — an un-windowed listbox exposes every row and the browser
|
|
171
|
+
// derives posinset/setsize itself.
|
|
172
|
+
let ariaPosInSet: number | undefined;
|
|
173
|
+
let ariaSetSize: number | undefined;
|
|
174
|
+
if (isVirtualized()) {
|
|
175
|
+
const index = Number(state.collection().getItem(key)?.index);
|
|
176
|
+
ariaPosInSet = Number.isNaN(index) ? undefined : index + 1;
|
|
177
|
+
ariaSetSize = getItemCount(state.collection());
|
|
178
|
+
}
|
|
179
|
+
|
|
172
180
|
return mergeProps(
|
|
173
|
-
|
|
181
|
+
selectableItem.itemProps as Record<string, unknown>,
|
|
174
182
|
hoverProps as Record<string, unknown>,
|
|
175
183
|
focusProps as Record<string, unknown>,
|
|
176
184
|
{
|
|
177
185
|
role: "option",
|
|
178
|
-
id:
|
|
179
|
-
"
|
|
180
|
-
"aria-
|
|
181
|
-
"aria-disabled": isDisabled() || undefined,
|
|
186
|
+
id: optionId(),
|
|
187
|
+
"aria-selected": selectionMode !== "none" ? selectableItem.isSelected() : undefined,
|
|
188
|
+
"aria-disabled": selectableItem.isDisabled() || undefined,
|
|
182
189
|
"aria-label": ariaLabel,
|
|
183
190
|
"aria-labelledby": !ariaLabel ? labelId : undefined,
|
|
184
191
|
"aria-describedby": descriptionId,
|
|
185
|
-
|
|
186
|
-
"
|
|
187
|
-
"data-
|
|
188
|
-
"data-
|
|
189
|
-
"data-
|
|
190
|
-
"data-
|
|
192
|
+
"aria-posinset": ariaPosInSet,
|
|
193
|
+
"aria-setsize": ariaSetSize,
|
|
194
|
+
"data-selected": selectableItem.isSelected() || undefined,
|
|
195
|
+
"data-focused": selectableItem.isFocused() || undefined,
|
|
196
|
+
"data-focus-visible": (selectableItem.isFocused() && isFocusVisible()) || undefined,
|
|
197
|
+
"data-pressed": selectableItem.isPressed() || undefined,
|
|
198
|
+
"data-disabled": selectableItem.isDisabled() || undefined,
|
|
191
199
|
"data-hovered": isHovered() || undefined,
|
|
192
200
|
} as Record<string, unknown>,
|
|
193
201
|
) as JSX.HTMLAttributes<HTMLElement>;
|
|
@@ -198,11 +206,13 @@ export function createOption<T>(
|
|
|
198
206
|
descriptionProps: {
|
|
199
207
|
id: descriptionId,
|
|
200
208
|
},
|
|
201
|
-
isSelected,
|
|
202
|
-
isFocused,
|
|
203
|
-
isFocusVisible: () => isFocused() && isFocusVisible(),
|
|
204
|
-
isPressed,
|
|
209
|
+
isSelected: selectableItem.isSelected,
|
|
210
|
+
isFocused: selectableItem.isFocused,
|
|
211
|
+
isFocusVisible: () => selectableItem.isFocused() && isFocusVisible(),
|
|
212
|
+
isPressed: selectableItem.isPressed,
|
|
205
213
|
isHovered,
|
|
206
|
-
isDisabled,
|
|
214
|
+
isDisabled: selectableItem.isDisabled,
|
|
215
|
+
allowsSelection: selectableItem.allowsSelection,
|
|
216
|
+
hasAction: selectableItem.hasAction,
|
|
207
217
|
};
|
|
208
218
|
}
|