@proyecto-viviana/solidaria 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +5 -5
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.d.ts +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +10 -10
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +7 -7
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/index.d.ts +6 -6
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +6 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +5 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +12 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +6 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/collections/index.d.ts +3 -3
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +10 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +51 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +8 -6
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +10 -2
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +2 -2
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +7 -6
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +2 -2
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +26 -6
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +1 -1
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +6 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +4 -4
- package/dist/gridlist/types.d.ts +11 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +52 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18012 -16820
- package/dist/index.js.map +1 -1
- package/dist/index.jsx +18242 -0
- package/dist/index.jsx.map +1 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -2
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -3
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/link/createLink.d.ts +14 -8
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +11 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +21 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/menu/createMenu.d.ts +7 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +16 -4
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/numberfield/createNumberField.d.ts +9 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/popover/calculatePosition.d.ts +4 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +3 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/radio/createRadio.d.ts +7 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +10 -10
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/index.d.ts +1 -1
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/ssr/index.d.ts +1 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/switch/createSwitch.d.ts +6 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/types.d.ts +15 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +28 -25
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tag/createTag.d.ts +2 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +2 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toggle/createToggle.d.ts +9 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tree/createTree.d.ts +3 -3
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/types.d.ts +10 -6
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +12 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/package.json +32 -32
- package/src/actiongroup/createActionGroup.ts +101 -91
- package/src/actiongroup/index.ts +1 -1
- package/src/autocomplete/createAutocomplete.ts +117 -134
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +25 -32
- package/src/button/index.ts +6 -9
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +98 -46
- package/src/calendar/createCalendarGrid.ts +57 -35
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +92 -31
- package/src/calendar/index.ts +5 -9
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +227 -0
- package/src/checkbox/createCheckbox.ts +13 -21
- package/src/checkbox/createCheckboxGroup.ts +68 -44
- package/src/checkbox/createCheckboxGroupItem.ts +16 -27
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +33 -29
- package/src/color/createColorArea.ts +232 -154
- package/src/color/createColorField.ts +107 -58
- package/src/color/createColorSlider.ts +231 -73
- package/src/color/createColorSwatch.ts +38 -13
- package/src/color/createColorWheel.ts +208 -83
- package/src/color/index.ts +6 -6
- package/src/color/types.ts +98 -16
- package/src/combobox/createComboBox.ts +157 -100
- package/src/combobox/index.ts +1 -1
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +260 -67
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +105 -57
- package/src/datepicker/createDateSegment.ts +183 -96
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +67 -85
- package/src/datepicker/index.ts +13 -14
- package/src/dialog/createDialog.ts +45 -38
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +4 -4
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -21
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +19 -25
- package/src/dnd/createDraggableCollection.ts +4 -4
- package/src/dnd/createDraggableItem.ts +20 -19
- package/src/dnd/createDrop.ts +42 -51
- package/src/dnd/createDroppableCollection.ts +290 -173
- package/src/dnd/createDroppableItem.ts +34 -34
- package/src/dnd/index.ts +23 -12
- package/src/dnd/types.ts +4 -7
- package/src/dnd/utils.ts +36 -49
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +4 -20
- package/src/focus/createFocusRestore.ts +15 -28
- package/src/focus/createVirtualFocus.ts +20 -36
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +20 -43
- package/src/form/index.ts +2 -5
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +36 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +34 -29
- package/src/gridlist/createGridListItem.ts +68 -23
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +4 -4
- package/src/gridlist/types.ts +11 -7
- package/src/i18n/createCollator.ts +5 -18
- package/src/i18n/createDateFormatter.ts +5 -13
- package/src/i18n/createFilter.ts +11 -24
- package/src/i18n/createNumberFormatter.ts +4 -6
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +8 -11
- package/src/i18n/locale.tsx +15 -40
- package/src/i18n/utils.ts +35 -39
- package/src/index.ts +68 -169
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +12 -8
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +20 -13
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +75 -82
- package/src/interactions/createKeyboard.ts +2 -2
- package/src/interactions/createLongPress.ts +23 -23
- package/src/interactions/createMove.ts +72 -62
- package/src/interactions/createPress.ts +164 -87
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +30 -51
- package/src/landmark/index.ts +1 -1
- package/src/link/createLink.ts +83 -56
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +69 -58
- package/src/listbox/createOption.ts +83 -37
- package/src/listbox/index.ts +2 -6
- package/src/live-announcer/announce.ts +44 -71
- package/src/live-announcer/index.ts +1 -1
- package/src/menu/createMenu.ts +79 -50
- package/src/menu/createMenuItem.ts +79 -27
- package/src/menu/createMenuTrigger.ts +15 -15
- package/src/menu/index.ts +3 -12
- package/src/meter/createMeter.ts +7 -15
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +138 -81
- package/src/numberfield/index.ts +1 -1
- package/src/overlays/ariaHideOutside.ts +14 -10
- package/src/overlays/createInteractOutside.ts +21 -18
- package/src/overlays/createModal.tsx +17 -17
- package/src/overlays/createOverlay.ts +38 -8
- package/src/overlays/createOverlayTrigger.ts +16 -16
- package/src/overlays/createPreventScroll.ts +46 -24
- package/src/overlays/index.ts +6 -17
- package/src/popover/calculatePosition.ts +115 -117
- package/src/popover/createOverlayPosition.ts +46 -40
- package/src/popover/createPopover.ts +42 -17
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +31 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +83 -77
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +57 -29
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +57 -44
- package/src/select/createSelect.ts +128 -71
- package/src/select/index.ts +2 -7
- package/src/selection/createTypeSelect.ts +11 -11
- package/src/selection/index.ts +1 -1
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +93 -124
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +8 -47
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +9 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +152 -85
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +149 -29
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +12 -11
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +15 -7
- package/src/tabs/createTabs.ts +74 -92
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +52 -50
- package/src/tag/createTagGroup.ts +47 -41
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +28 -26
- package/src/toast/createToastRegion.ts +169 -26
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +95 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +193 -210
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +11 -24
- package/src/tooltip/createTooltipTrigger.ts +61 -49
- package/src/tooltip/index.ts +2 -2
- package/src/tree/createTree.ts +35 -37
- package/src/tree/createTreeItem.ts +29 -29
- package/src/tree/createTreeSelectionCheckbox.ts +11 -8
- package/src/tree/index.ts +4 -4
- package/src/tree/types.ts +10 -6
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +9 -11
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +12 -22
- package/src/utils/mergeProps.ts +42 -15
- package/src/utils/platform.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +16 -28
- package/src/visually-hidden/index.ts +1 -1
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -17082
- package/dist/index.ssr.js.map +0 -1
- package/src/i18n/NumberFormatter.ts +0 -266
|
@@ -4,23 +4,23 @@
|
|
|
4
4
|
* Based on @react-aria/combobox useComboBox.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { type JSX, type Accessor, createEffect, onCleanup } from
|
|
8
|
-
import { isServer } from
|
|
9
|
-
import { createPress } from
|
|
10
|
-
import { createFocusRing } from
|
|
11
|
-
import { createLabel } from
|
|
12
|
-
import { filterDOMProps } from
|
|
13
|
-
import { mergeProps } from
|
|
14
|
-
import { createId } from
|
|
15
|
-
import { access, type MaybeAccessor } from
|
|
16
|
-
import { isAppleDevice } from
|
|
17
|
-
import { openLink } from
|
|
18
|
-
import { ariaHideOutside } from
|
|
19
|
-
import { announce } from
|
|
20
|
-
import { createStringFormatter } from
|
|
21
|
-
import { comboBoxIntlStrings } from
|
|
22
|
-
import { isDevEnv } from
|
|
23
|
-
import type { ComboBoxState, CollectionNode, Key } from
|
|
7
|
+
import { type JSX, type Accessor, createEffect, onCleanup } from "solid-js";
|
|
8
|
+
import { isServer } from "solid-js/web";
|
|
9
|
+
import { createPress } from "../interactions/createPress";
|
|
10
|
+
import { createFocusRing } from "../interactions/createFocusRing";
|
|
11
|
+
import { createLabel } from "../label/createLabel";
|
|
12
|
+
import { filterDOMProps } from "../utils/filterDOMProps";
|
|
13
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
14
|
+
import { createId } from "../ssr";
|
|
15
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
16
|
+
import { isAppleDevice } from "../utils/platform";
|
|
17
|
+
import { openLink } from "../utils/dom";
|
|
18
|
+
import { ariaHideOutside } from "../overlays/ariaHideOutside";
|
|
19
|
+
import { announce } from "../live-announcer";
|
|
20
|
+
import { createStringFormatter } from "../i18n";
|
|
21
|
+
import { comboBoxIntlStrings } from "./intl";
|
|
22
|
+
import { isDevEnv } from "../utils/env";
|
|
23
|
+
import type { ComboBoxState, CollectionNode, Key } from "@proyecto-viviana/solid-stately";
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Helper to count items in a collection
|
|
@@ -45,11 +45,11 @@ export interface AriaComboBoxProps {
|
|
|
45
45
|
/** The label for the combobox. */
|
|
46
46
|
label?: JSX.Element;
|
|
47
47
|
/** An accessible label for the combobox when no visible label is provided. */
|
|
48
|
-
|
|
48
|
+
"aria-label"?: string;
|
|
49
49
|
/** The ID of an element that labels the combobox. */
|
|
50
|
-
|
|
50
|
+
"aria-labelledby"?: string;
|
|
51
51
|
/** The ID of an element that describes the combobox. */
|
|
52
|
-
|
|
52
|
+
"aria-describedby"?: string;
|
|
53
53
|
/** Description text for assistive technology and form help. */
|
|
54
54
|
description?: string;
|
|
55
55
|
/** Error message text for assistive technology and validation feedback. */
|
|
@@ -68,11 +68,13 @@ export interface AriaComboBoxProps {
|
|
|
68
68
|
onFocusChange?: (isFocused: boolean) => void;
|
|
69
69
|
/** The name of the combobox, used when submitting an HTML form. */
|
|
70
70
|
name?: string;
|
|
71
|
+
/** The form owner for the combobox input. */
|
|
72
|
+
form?: string;
|
|
71
73
|
/**
|
|
72
74
|
* Describes the type of autocomplete functionality the input should provide.
|
|
73
75
|
* @default 'list'
|
|
74
76
|
*/
|
|
75
|
-
autoComplete?:
|
|
77
|
+
autoComplete?: "list" | "none" | "inline" | "both";
|
|
76
78
|
/** Whether focus should wrap from the last item to the first. */
|
|
77
79
|
shouldFocusWrap?: boolean;
|
|
78
80
|
}
|
|
@@ -105,6 +107,7 @@ const comboBoxData = new WeakMap<object, ComboBoxData>();
|
|
|
105
107
|
|
|
106
108
|
interface ComboBoxData {
|
|
107
109
|
id: string;
|
|
110
|
+
listBoxId: string;
|
|
108
111
|
}
|
|
109
112
|
|
|
110
113
|
export function getComboBoxData(state: ComboBoxState<unknown>): ComboBoxData | undefined {
|
|
@@ -119,7 +122,7 @@ export function createComboBox<T>(
|
|
|
119
122
|
state: ComboBoxState<T>,
|
|
120
123
|
inputRef: () => HTMLInputElement | null,
|
|
121
124
|
buttonRef?: () => HTMLElement | null,
|
|
122
|
-
listBoxRef?: () => HTMLElement | null
|
|
125
|
+
listBoxRef?: () => HTMLElement | null,
|
|
123
126
|
): ComboBoxAria<T> {
|
|
124
127
|
const getProps = () => access(props);
|
|
125
128
|
const id = createId(getProps().id);
|
|
@@ -127,9 +130,9 @@ export function createComboBox<T>(
|
|
|
127
130
|
// Development-time warning for missing accessibility labels
|
|
128
131
|
if (isDevEnv()) {
|
|
129
132
|
const p = getProps();
|
|
130
|
-
if (!p.label && !p[
|
|
133
|
+
if (!p.label && !p["aria-label"] && !p["aria-labelledby"]) {
|
|
131
134
|
console.warn(
|
|
132
|
-
|
|
135
|
+
"[solidaria] A ComboBox requires a label, aria-label, or aria-labelledby attribute for accessibility.",
|
|
133
136
|
);
|
|
134
137
|
}
|
|
135
138
|
}
|
|
@@ -147,8 +150,8 @@ export function createComboBox<T>(
|
|
|
147
150
|
const getAriaDescribedBy = () => {
|
|
148
151
|
const p = getProps();
|
|
149
152
|
const ids: string[] = [];
|
|
150
|
-
if (p[
|
|
151
|
-
ids.push(p[
|
|
153
|
+
if (p["aria-describedby"]) {
|
|
154
|
+
ids.push(p["aria-describedby"]);
|
|
152
155
|
}
|
|
153
156
|
if (p.description) {
|
|
154
157
|
ids.push(descriptionId);
|
|
@@ -156,13 +159,13 @@ export function createComboBox<T>(
|
|
|
156
159
|
if (p.isInvalid && p.errorMessage) {
|
|
157
160
|
ids.push(errorMessageId);
|
|
158
161
|
}
|
|
159
|
-
return ids.length > 0 ? ids.join(
|
|
162
|
+
return ids.length > 0 ? ids.join(" ") : undefined;
|
|
160
163
|
};
|
|
161
164
|
|
|
162
165
|
// Set up global pointerdown listener to track clicks inside listbox
|
|
163
166
|
// This is needed because the option's createPress stops propagation
|
|
164
167
|
createEffect(() => {
|
|
165
|
-
if (typeof document ===
|
|
168
|
+
if (typeof document === "undefined") return;
|
|
166
169
|
|
|
167
170
|
const handleGlobalPointerDown = (e: PointerEvent) => {
|
|
168
171
|
const target = e.target as HTMLElement;
|
|
@@ -172,20 +175,23 @@ export function createComboBox<T>(
|
|
|
172
175
|
}
|
|
173
176
|
};
|
|
174
177
|
|
|
175
|
-
document.addEventListener(
|
|
178
|
+
document.addEventListener("pointerdown", handleGlobalPointerDown, true);
|
|
176
179
|
|
|
177
180
|
onCleanup(() => {
|
|
178
|
-
document.removeEventListener(
|
|
181
|
+
document.removeEventListener("pointerdown", handleGlobalPointerDown, true);
|
|
179
182
|
});
|
|
180
183
|
});
|
|
181
184
|
|
|
182
185
|
// Filter DOM props
|
|
183
186
|
const domProps = () =>
|
|
184
|
-
filterDOMProps(getProps() as unknown as Record<string, unknown>, {
|
|
187
|
+
filterDOMProps(getProps() as unknown as Record<string, unknown>, {
|
|
188
|
+
labelable: true,
|
|
189
|
+
propNames: new Set(["form"]),
|
|
190
|
+
});
|
|
185
191
|
|
|
186
192
|
// Share data with child options
|
|
187
193
|
createEffect(() => {
|
|
188
|
-
comboBoxData.set(state, { id });
|
|
194
|
+
comboBoxData.set(state, { id, listBoxId });
|
|
189
195
|
|
|
190
196
|
onCleanup(() => {
|
|
191
197
|
comboBoxData.delete(state);
|
|
@@ -200,13 +206,13 @@ export function createComboBox<T>(
|
|
|
200
206
|
get label() {
|
|
201
207
|
return getProps().label;
|
|
202
208
|
},
|
|
203
|
-
get
|
|
204
|
-
return getProps()[
|
|
209
|
+
get "aria-label"() {
|
|
210
|
+
return getProps()["aria-label"];
|
|
205
211
|
},
|
|
206
|
-
get
|
|
207
|
-
return getProps()[
|
|
212
|
+
get "aria-labelledby"() {
|
|
213
|
+
return getProps()["aria-labelledby"];
|
|
208
214
|
},
|
|
209
|
-
labelElementType:
|
|
215
|
+
labelElementType: "label",
|
|
210
216
|
});
|
|
211
217
|
|
|
212
218
|
// Focus ring for keyboard focus styling
|
|
@@ -240,25 +246,23 @@ export function createComboBox<T>(
|
|
|
240
246
|
const collection = state.collection();
|
|
241
247
|
|
|
242
248
|
// Get the focused item
|
|
243
|
-
const focusedItem = focusedKey != null && isOpen
|
|
244
|
-
? collection.getItem(focusedKey)
|
|
245
|
-
: null;
|
|
249
|
+
const focusedItem = focusedKey != null && isOpen ? collection.getItem(focusedKey) : null;
|
|
246
250
|
|
|
247
251
|
// Announce focus changes on Apple devices
|
|
248
252
|
if (isAppleDevice() && focusedItem != null && focusedKey !== lastFocusedKey) {
|
|
249
253
|
const isSelected = state.selectedKey() === focusedKey;
|
|
250
|
-
const optionText = focusedItem.textValue ||
|
|
254
|
+
const optionText = focusedItem.textValue || "";
|
|
251
255
|
|
|
252
256
|
// For now, we don't support sections, so isGroupChange is always false
|
|
253
|
-
const announcement = stringFormatter().format(
|
|
257
|
+
const announcement = stringFormatter().format("focusAnnouncement", {
|
|
254
258
|
isGroupChange: false,
|
|
255
|
-
groupTitle:
|
|
259
|
+
groupTitle: "",
|
|
256
260
|
groupCount: 0,
|
|
257
261
|
optionText,
|
|
258
262
|
isSelected,
|
|
259
263
|
});
|
|
260
264
|
|
|
261
|
-
announce(announcement,
|
|
265
|
+
announce(announcement, "polite");
|
|
262
266
|
}
|
|
263
267
|
|
|
264
268
|
lastFocusedKey = focusedKey;
|
|
@@ -277,12 +281,11 @@ export function createComboBox<T>(
|
|
|
277
281
|
// focused item, otherwise screen readers will typically read e.g. "1 of 6".
|
|
278
282
|
// The exception is VoiceOver since this isn't included in the message above.
|
|
279
283
|
const didOpenWithoutFocusedItem =
|
|
280
|
-
isOpen !== lastIsOpen &&
|
|
281
|
-
(focusedKey == null || isAppleDevice());
|
|
284
|
+
isOpen !== lastIsOpen && (focusedKey == null || isAppleDevice());
|
|
282
285
|
|
|
283
286
|
if (isOpen && (didOpenWithoutFocusedItem || optionCount !== lastOptionCount)) {
|
|
284
|
-
const announcement = stringFormatter().format(
|
|
285
|
-
announce(announcement,
|
|
287
|
+
const announcement = stringFormatter().format("countAnnouncement", { optionCount });
|
|
288
|
+
announce(announcement, "polite");
|
|
286
289
|
}
|
|
287
290
|
|
|
288
291
|
lastOptionCount = optionCount;
|
|
@@ -297,9 +300,9 @@ export function createComboBox<T>(
|
|
|
297
300
|
const selectedItem = state.selectedItem();
|
|
298
301
|
|
|
299
302
|
if (isAppleDevice() && state.isFocused() && selectedItem && selectedKey !== lastSelectedKey) {
|
|
300
|
-
const optionText = selectedItem.textValue ||
|
|
301
|
-
const announcement = stringFormatter().format(
|
|
302
|
-
announce(announcement,
|
|
303
|
+
const optionText = selectedItem.textValue || "";
|
|
304
|
+
const announcement = stringFormatter().format("selectedAnnouncement", { optionText });
|
|
305
|
+
announce(announcement, "polite");
|
|
303
306
|
}
|
|
304
307
|
|
|
305
308
|
lastSelectedKey = selectedKey;
|
|
@@ -325,14 +328,52 @@ export function createComboBox<T>(
|
|
|
325
328
|
});
|
|
326
329
|
|
|
327
330
|
// Handle press on button trigger
|
|
331
|
+
let wasOpenOnButtonPressStart = false;
|
|
332
|
+
const scheduleButtonOpenFallback = (startedOpen: boolean) => {
|
|
333
|
+
if (startedOpen) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
setTimeout(() => {
|
|
338
|
+
const p = getProps();
|
|
339
|
+
const isDisabled = p.isDisabled ?? state.isDisabled;
|
|
340
|
+
const isReadOnly = p.isReadOnly ?? state.isReadOnly;
|
|
341
|
+
if (!state.isOpen() && !isDisabled && !isReadOnly) {
|
|
342
|
+
inputRef()?.focus();
|
|
343
|
+
state.open(null, "manual");
|
|
344
|
+
}
|
|
345
|
+
}, 0);
|
|
346
|
+
};
|
|
347
|
+
|
|
328
348
|
const { pressProps } = createPress({
|
|
329
349
|
get isDisabled() {
|
|
330
|
-
return
|
|
350
|
+
return (
|
|
351
|
+
(getProps().isDisabled ?? state.isDisabled) || (getProps().isReadOnly ?? state.isReadOnly)
|
|
352
|
+
);
|
|
331
353
|
},
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
354
|
+
preventFocusOnPress: true,
|
|
355
|
+
onPressStart(e) {
|
|
356
|
+
if (e.pointerType === "touch") {
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
wasOpenOnButtonPressStart = state.isOpen();
|
|
361
|
+
inputRef()?.focus();
|
|
362
|
+
state.toggle(
|
|
363
|
+
e.pointerType === "keyboard" || e.pointerType === "virtual" ? "first" : null,
|
|
364
|
+
"manual",
|
|
365
|
+
);
|
|
366
|
+
scheduleButtonOpenFallback(wasOpenOnButtonPressStart);
|
|
367
|
+
},
|
|
368
|
+
onPress(e) {
|
|
369
|
+
if (e.pointerType !== "touch") {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
wasOpenOnButtonPressStart = state.isOpen();
|
|
335
374
|
inputRef()?.focus();
|
|
375
|
+
state.toggle(null, "manual");
|
|
376
|
+
scheduleButtonOpenFallback(wasOpenOnButtonPressStart);
|
|
336
377
|
},
|
|
337
378
|
});
|
|
338
379
|
|
|
@@ -352,21 +393,21 @@ export function createComboBox<T>(
|
|
|
352
393
|
const shouldWrap = p.shouldFocusWrap ?? false;
|
|
353
394
|
|
|
354
395
|
switch (e.key) {
|
|
355
|
-
case
|
|
396
|
+
case "Enter":
|
|
356
397
|
if (state.isOpen() && focusedKey != null) {
|
|
357
398
|
e.preventDefault();
|
|
358
399
|
|
|
359
400
|
// Check if the focused item is a link
|
|
360
401
|
// Link href can be in props (for components) or value (for dynamic items)
|
|
361
402
|
const collectionItem = collection.getItem(focusedKey);
|
|
362
|
-
const itemHref =
|
|
403
|
+
const itemHref =
|
|
404
|
+
collectionItem?.props?.href ??
|
|
405
|
+
(collectionItem?.value as Record<string, unknown> | null)?.href;
|
|
363
406
|
if (itemHref) {
|
|
364
407
|
// Find the actual anchor element in the DOM and trigger navigation
|
|
365
408
|
const listBox = listBoxRef?.();
|
|
366
409
|
if (listBox) {
|
|
367
|
-
const item = listBox.querySelector(
|
|
368
|
-
`[data-key="${CSS.escape(String(focusedKey))}"]`
|
|
369
|
-
);
|
|
410
|
+
const item = listBox.querySelector(`[data-key="${CSS.escape(String(focusedKey))}"]`);
|
|
370
411
|
if (item instanceof HTMLAnchorElement) {
|
|
371
412
|
openLink(item, e);
|
|
372
413
|
}
|
|
@@ -378,7 +419,7 @@ export function createComboBox<T>(
|
|
|
378
419
|
}
|
|
379
420
|
break;
|
|
380
421
|
|
|
381
|
-
case
|
|
422
|
+
case "Escape":
|
|
382
423
|
if (state.isOpen()) {
|
|
383
424
|
e.preventDefault();
|
|
384
425
|
e.stopPropagation();
|
|
@@ -386,10 +427,10 @@ export function createComboBox<T>(
|
|
|
386
427
|
}
|
|
387
428
|
break;
|
|
388
429
|
|
|
389
|
-
case
|
|
430
|
+
case "ArrowDown":
|
|
390
431
|
e.preventDefault();
|
|
391
432
|
if (!state.isOpen()) {
|
|
392
|
-
state.open(
|
|
433
|
+
state.open("first", "manual");
|
|
393
434
|
} else {
|
|
394
435
|
// Move to next item
|
|
395
436
|
if (focusedKey == null) {
|
|
@@ -419,10 +460,10 @@ export function createComboBox<T>(
|
|
|
419
460
|
}
|
|
420
461
|
break;
|
|
421
462
|
|
|
422
|
-
case
|
|
463
|
+
case "ArrowUp":
|
|
423
464
|
e.preventDefault();
|
|
424
465
|
if (!state.isOpen()) {
|
|
425
|
-
state.open(
|
|
466
|
+
state.open("last", "manual");
|
|
426
467
|
} else {
|
|
427
468
|
// Move to previous item
|
|
428
469
|
if (focusedKey == null) {
|
|
@@ -452,7 +493,7 @@ export function createComboBox<T>(
|
|
|
452
493
|
}
|
|
453
494
|
break;
|
|
454
495
|
|
|
455
|
-
case
|
|
496
|
+
case "Home":
|
|
456
497
|
if (state.isOpen()) {
|
|
457
498
|
e.preventDefault();
|
|
458
499
|
let firstKey = collection.getFirstKey();
|
|
@@ -465,7 +506,7 @@ export function createComboBox<T>(
|
|
|
465
506
|
}
|
|
466
507
|
break;
|
|
467
508
|
|
|
468
|
-
case
|
|
509
|
+
case "End":
|
|
469
510
|
if (state.isOpen()) {
|
|
470
511
|
e.preventDefault();
|
|
471
512
|
let lastKey = collection.getLastKey();
|
|
@@ -478,7 +519,18 @@ export function createComboBox<T>(
|
|
|
478
519
|
}
|
|
479
520
|
break;
|
|
480
521
|
|
|
481
|
-
case
|
|
522
|
+
case "Backspace":
|
|
523
|
+
// In multiple mode, remove last selected key when input is empty
|
|
524
|
+
if (state.selectionMode() === "multiple" && state.inputValue() === "") {
|
|
525
|
+
const keys = state.selectedKeys();
|
|
526
|
+
if (keys.size > 0) {
|
|
527
|
+
const lastKey = Array.from(keys).pop()!;
|
|
528
|
+
state.removeSelectedKey(lastKey);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
break;
|
|
532
|
+
|
|
533
|
+
case "Tab":
|
|
482
534
|
// Commit on Tab if menu is open
|
|
483
535
|
if (state.isOpen() && focusedKey != null) {
|
|
484
536
|
state.commit();
|
|
@@ -557,7 +609,7 @@ export function createComboBox<T>(
|
|
|
557
609
|
if (touch.clientX === centerX && touch.clientY === centerY) {
|
|
558
610
|
e.preventDefault();
|
|
559
611
|
inputRef()?.focus();
|
|
560
|
-
state.toggle(null,
|
|
612
|
+
state.toggle(null, "manual");
|
|
561
613
|
lastEventTime = e.timeStamp;
|
|
562
614
|
}
|
|
563
615
|
};
|
|
@@ -579,8 +631,8 @@ export function createComboBox<T>(
|
|
|
579
631
|
fieldProps as Record<string, unknown>,
|
|
580
632
|
{
|
|
581
633
|
id: inputId,
|
|
582
|
-
type:
|
|
583
|
-
role:
|
|
634
|
+
type: "text",
|
|
635
|
+
role: "combobox",
|
|
584
636
|
get value() {
|
|
585
637
|
return state.inputValue();
|
|
586
638
|
},
|
|
@@ -588,58 +640,63 @@ export function createComboBox<T>(
|
|
|
588
640
|
disabled: isDisabled || undefined,
|
|
589
641
|
readOnly: isReadOnly || undefined,
|
|
590
642
|
placeholder: p.placeholder,
|
|
591
|
-
autoComplete:
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
? `${listBoxId}-option-${focusedKey}`
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
'aria-describedby': getAriaDescribedBy(),
|
|
643
|
+
autoComplete: "off",
|
|
644
|
+
"aria-autocomplete": p.autoComplete ?? "list",
|
|
645
|
+
"aria-haspopup": "listbox",
|
|
646
|
+
"aria-expanded": isOpen,
|
|
647
|
+
"aria-controls": isOpen ? listBoxId : undefined,
|
|
648
|
+
"aria-activedescendant":
|
|
649
|
+
isOpen && focusedKey != null ? `${listBoxId}-option-${focusedKey}` : undefined,
|
|
650
|
+
"aria-disabled": isDisabled || undefined,
|
|
651
|
+
"aria-required": p.isRequired || undefined,
|
|
652
|
+
"aria-invalid": p.isInvalid || undefined,
|
|
653
|
+
"aria-describedby": getAriaDescribedBy(),
|
|
603
654
|
name: p.name,
|
|
604
655
|
onInput: onInputChange,
|
|
605
656
|
onKeyDown: onInputKeyDown,
|
|
606
657
|
onFocus: handleFocus,
|
|
607
658
|
onBlur: handleBlur,
|
|
608
659
|
onTouchEnd: handleTouchEnd,
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
} as Record<string, unknown
|
|
660
|
+
"data-open": isOpen || undefined,
|
|
661
|
+
"data-disabled": isDisabled || undefined,
|
|
662
|
+
"data-readonly": isReadOnly || undefined,
|
|
663
|
+
"data-focus-visible": isFocusVisible() || undefined,
|
|
664
|
+
} as Record<string, unknown>,
|
|
614
665
|
) as JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
615
666
|
},
|
|
616
667
|
get buttonProps() {
|
|
617
668
|
const p = getProps();
|
|
618
669
|
const isOpen = state.isOpen();
|
|
619
670
|
const isDisabled = p.isDisabled ?? state.isDisabled;
|
|
671
|
+
const isReadOnly = p.isReadOnly ?? state.isReadOnly;
|
|
620
672
|
|
|
621
673
|
return mergeProps(
|
|
622
674
|
pressProps as Record<string, unknown>,
|
|
623
675
|
{
|
|
624
676
|
id: buttonId,
|
|
625
|
-
type:
|
|
677
|
+
type: "button",
|
|
626
678
|
tabIndex: -1,
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
679
|
+
"aria-haspopup": "listbox",
|
|
680
|
+
"aria-expanded": isOpen,
|
|
681
|
+
"aria-controls": isOpen ? listBoxId : undefined,
|
|
682
|
+
"aria-disabled": isDisabled || isReadOnly || undefined,
|
|
683
|
+
disabled: isDisabled || isReadOnly || undefined,
|
|
684
|
+
"aria-label": stringFormatter?.().format("buttonLabel") ?? "Show suggestions",
|
|
685
|
+
"data-open": isOpen || undefined,
|
|
686
|
+
"data-disabled": isDisabled || isReadOnly || undefined,
|
|
687
|
+
} as Record<string, unknown>,
|
|
635
688
|
) as JSX.HTMLAttributes<HTMLElement>;
|
|
636
689
|
},
|
|
637
690
|
get listBoxProps() {
|
|
691
|
+
const isMulti = state.selectionMode() === "multiple";
|
|
638
692
|
return {
|
|
639
693
|
id: listBoxId,
|
|
640
|
-
role:
|
|
641
|
-
|
|
694
|
+
role: "listbox",
|
|
695
|
+
"aria-labelledby": inputId,
|
|
696
|
+
"aria-multiselectable": isMulti || undefined,
|
|
642
697
|
tabIndex: -1,
|
|
698
|
+
shouldSelectOnPressUp: true,
|
|
699
|
+
shouldFocusOnHover: true,
|
|
643
700
|
// Track pointerdown inside listbox to prevent blur from closing
|
|
644
701
|
// Use capture phase because createPress calls stopPropagation on pointerdown
|
|
645
702
|
onPointerDownCapture: () => {
|
|
@@ -659,7 +716,7 @@ export function createComboBox<T>(
|
|
|
659
716
|
get errorMessageProps() {
|
|
660
717
|
return {
|
|
661
718
|
id: errorMessageId,
|
|
662
|
-
role:
|
|
719
|
+
role: "alert",
|
|
663
720
|
} as JSX.HTMLAttributes<HTMLElement>;
|
|
664
721
|
},
|
|
665
722
|
isFocused,
|
package/src/combobox/index.ts
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Based on @react-aria/combobox/intl
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { LocalizedStrings } from
|
|
6
|
+
import type { LocalizedStrings } from "@internationalized/string";
|
|
7
7
|
|
|
8
8
|
// Import locale files
|
|
9
|
-
import enUS from
|
|
10
|
-
import esES from
|
|
9
|
+
import enUS from "./en-US.json" with { type: "json" };
|
|
10
|
+
import esES from "./es-ES.json" with { type: "json" };
|
|
11
11
|
|
|
12
12
|
export type ComboBoxIntlStrings = {
|
|
13
13
|
focusAnnouncement: string;
|
|
@@ -18,6 +18,6 @@ export type ComboBoxIntlStrings = {
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
export const comboBoxIntlStrings: LocalizedStrings<keyof ComboBoxIntlStrings, string> = {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
"en-US": enUS,
|
|
22
|
+
"es-ES": esES,
|
|
23
23
|
};
|