@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
|
@@ -5,260 +5,243 @@
|
|
|
5
5
|
* Based on @react-aria/toolbar useToolbar.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import { useLocale } from '../i18n'
|
|
16
|
-
import { getOwnerDocument, isFocusable } from '../utils'
|
|
17
|
-
import { focusSafely } from '../utils/focus'
|
|
18
|
-
|
|
19
|
-
// ============================================
|
|
20
|
-
// TYPES
|
|
21
|
-
// ============================================
|
|
22
|
-
|
|
23
|
-
export type Orientation = 'horizontal' | 'vertical'
|
|
8
|
+
import { createSignal, onMount, onCleanup, type Accessor } from "solid-js";
|
|
9
|
+
import { type MaybeAccessor, access } from "../utils";
|
|
10
|
+
import { useLocale } from "../i18n";
|
|
11
|
+
import { getOwnerDocument, isFocusable } from "../utils";
|
|
12
|
+
import { focusSafely } from "../utils/focus";
|
|
13
|
+
|
|
14
|
+
export type Orientation = "horizontal" | "vertical";
|
|
24
15
|
|
|
25
16
|
export interface AriaToolbarProps {
|
|
26
17
|
/** The orientation of the toolbar. @default 'horizontal' */
|
|
27
|
-
orientation?: MaybeAccessor<Orientation
|
|
18
|
+
orientation?: MaybeAccessor<Orientation>;
|
|
28
19
|
/** An accessibility label for the toolbar. */
|
|
29
|
-
|
|
20
|
+
"aria-label"?: MaybeAccessor<string>;
|
|
30
21
|
/** Identifies the element (or elements) that labels the toolbar. */
|
|
31
|
-
|
|
22
|
+
"aria-labelledby"?: MaybeAccessor<string>;
|
|
32
23
|
}
|
|
33
24
|
|
|
34
25
|
export interface ToolbarAria {
|
|
35
26
|
/** Props for the toolbar container element. */
|
|
36
27
|
toolbarProps: {
|
|
37
|
-
role:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
tabIndex?: number
|
|
42
|
-
ref: (el: HTMLElement) => void
|
|
43
|
-
}
|
|
28
|
+
role: "toolbar" | "group";
|
|
29
|
+
"aria-orientation": Orientation;
|
|
30
|
+
"aria-label"?: string;
|
|
31
|
+
"aria-labelledby"?: string;
|
|
32
|
+
tabIndex?: number;
|
|
33
|
+
ref: (el: HTMLElement) => void;
|
|
34
|
+
};
|
|
44
35
|
/** The orientation of the toolbar. */
|
|
45
|
-
orientation: Accessor<Orientation
|
|
36
|
+
orientation: Accessor<Orientation>;
|
|
46
37
|
}
|
|
47
38
|
|
|
48
|
-
// ============================================
|
|
49
|
-
// FOCUS MANAGER FOR TOOLBAR
|
|
50
|
-
// ============================================
|
|
51
|
-
|
|
52
39
|
interface FocusManagerOptions {
|
|
53
|
-
from?: Element
|
|
54
|
-
tabbable?: boolean
|
|
55
|
-
wrap?: boolean
|
|
56
|
-
accept?: (node: Element) => boolean
|
|
40
|
+
from?: Element;
|
|
41
|
+
tabbable?: boolean;
|
|
42
|
+
wrap?: boolean;
|
|
43
|
+
accept?: (node: Element) => boolean;
|
|
57
44
|
}
|
|
58
45
|
|
|
59
46
|
interface FocusManager {
|
|
60
|
-
focusNext(opts?: FocusManagerOptions): HTMLElement | null
|
|
61
|
-
focusPrevious(opts?: FocusManagerOptions): HTMLElement | null
|
|
62
|
-
focusFirst(opts?: FocusManagerOptions): HTMLElement | null
|
|
63
|
-
focusLast(opts?: FocusManagerOptions): HTMLElement | null
|
|
47
|
+
focusNext(opts?: FocusManagerOptions): HTMLElement | null;
|
|
48
|
+
focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;
|
|
49
|
+
focusFirst(opts?: FocusManagerOptions): HTMLElement | null;
|
|
50
|
+
focusLast(opts?: FocusManagerOptions): HTMLElement | null;
|
|
64
51
|
}
|
|
65
52
|
|
|
66
53
|
function isTabbable(element: Element): boolean {
|
|
67
54
|
if (!isFocusable(element)) {
|
|
68
|
-
return false
|
|
55
|
+
return false;
|
|
69
56
|
}
|
|
70
|
-
const tabIndex = element.getAttribute(
|
|
57
|
+
const tabIndex = element.getAttribute("tabindex");
|
|
71
58
|
if (tabIndex != null) {
|
|
72
|
-
return parseInt(tabIndex, 10) >= 0
|
|
59
|
+
return parseInt(tabIndex, 10) >= 0;
|
|
73
60
|
}
|
|
74
|
-
return true
|
|
61
|
+
return true;
|
|
75
62
|
}
|
|
76
63
|
|
|
77
64
|
function getFocusableElements(root: Element, tabbable = false): HTMLElement[] {
|
|
78
|
-
const elements: HTMLElement[] = []
|
|
79
|
-
const filter = tabbable ? isTabbable : isFocusable
|
|
65
|
+
const elements: HTMLElement[] = [];
|
|
66
|
+
const filter = tabbable ? isTabbable : isFocusable;
|
|
80
67
|
|
|
81
68
|
// Check the root element itself
|
|
82
69
|
if (filter(root)) {
|
|
83
|
-
elements.push(root as HTMLElement)
|
|
70
|
+
elements.push(root as HTMLElement);
|
|
84
71
|
}
|
|
85
72
|
|
|
86
73
|
// Check all descendants
|
|
87
|
-
const descendants = root.querySelectorAll(
|
|
74
|
+
const descendants = root.querySelectorAll("*");
|
|
88
75
|
for (let i = 0; i < descendants.length; i++) {
|
|
89
|
-
const el = descendants[i]
|
|
76
|
+
const el = descendants[i];
|
|
90
77
|
if (filter(el)) {
|
|
91
|
-
elements.push(el as HTMLElement)
|
|
78
|
+
elements.push(el as HTMLElement);
|
|
92
79
|
}
|
|
93
80
|
}
|
|
94
81
|
|
|
95
|
-
return elements
|
|
82
|
+
return elements;
|
|
96
83
|
}
|
|
97
84
|
|
|
98
85
|
function getActiveElement(doc: Document): Element | null {
|
|
99
|
-
let activeElement = doc.activeElement
|
|
86
|
+
let activeElement = doc.activeElement;
|
|
100
87
|
while (activeElement?.shadowRoot?.activeElement) {
|
|
101
|
-
activeElement = activeElement.shadowRoot.activeElement
|
|
88
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
102
89
|
}
|
|
103
|
-
return activeElement
|
|
90
|
+
return activeElement;
|
|
104
91
|
}
|
|
105
92
|
|
|
106
93
|
const TEXT_INPUT_TYPES = new Set([
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
])
|
|
94
|
+
"",
|
|
95
|
+
"text",
|
|
96
|
+
"search",
|
|
97
|
+
"url",
|
|
98
|
+
"tel",
|
|
99
|
+
"password",
|
|
100
|
+
"email",
|
|
101
|
+
"number",
|
|
102
|
+
"date",
|
|
103
|
+
"datetime-local",
|
|
104
|
+
"month",
|
|
105
|
+
"time",
|
|
106
|
+
"week",
|
|
107
|
+
]);
|
|
121
108
|
|
|
122
109
|
function isTextInputLikeElement(target: EventTarget | null): boolean {
|
|
123
110
|
if (!(target instanceof HTMLElement)) {
|
|
124
|
-
return false
|
|
111
|
+
return false;
|
|
125
112
|
}
|
|
126
113
|
|
|
127
114
|
if (target.isContentEditable || !!target.closest('[contenteditable="true"]')) {
|
|
128
|
-
return true
|
|
115
|
+
return true;
|
|
129
116
|
}
|
|
130
117
|
|
|
131
|
-
if (target.getAttribute(
|
|
132
|
-
return true
|
|
118
|
+
if (target.getAttribute("role") === "textbox") {
|
|
119
|
+
return true;
|
|
133
120
|
}
|
|
134
121
|
|
|
135
122
|
if (target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement) {
|
|
136
|
-
return true
|
|
123
|
+
return true;
|
|
137
124
|
}
|
|
138
125
|
|
|
139
126
|
if (target instanceof HTMLInputElement) {
|
|
140
|
-
const type = target.type.toLowerCase()
|
|
141
|
-
return TEXT_INPUT_TYPES.has(type)
|
|
127
|
+
const type = target.type.toLowerCase();
|
|
128
|
+
return TEXT_INPUT_TYPES.has(type);
|
|
142
129
|
}
|
|
143
130
|
|
|
144
|
-
return false
|
|
131
|
+
return false;
|
|
145
132
|
}
|
|
146
133
|
|
|
147
134
|
function createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManager {
|
|
148
135
|
return {
|
|
149
136
|
focusNext(opts: FocusManagerOptions = {}) {
|
|
150
|
-
const root = ref()
|
|
151
|
-
if (!root) return null
|
|
137
|
+
const root = ref();
|
|
138
|
+
if (!root) return null;
|
|
152
139
|
|
|
153
|
-
const { from, tabbable = true, wrap = false, accept } = opts
|
|
154
|
-
const doc = getOwnerDocument(root)
|
|
155
|
-
const current = from || getActiveElement(doc)
|
|
140
|
+
const { from, tabbable = true, wrap = false, accept } = opts;
|
|
141
|
+
const doc = getOwnerDocument(root);
|
|
142
|
+
const current = from || getActiveElement(doc);
|
|
156
143
|
|
|
157
|
-
let elements = getFocusableElements(root, tabbable)
|
|
144
|
+
let elements = getFocusableElements(root, tabbable);
|
|
158
145
|
if (accept) {
|
|
159
|
-
elements = elements.filter(accept)
|
|
146
|
+
elements = elements.filter(accept);
|
|
160
147
|
}
|
|
161
148
|
|
|
162
|
-
if (!current || elements.length === 0) return null
|
|
149
|
+
if (!current || elements.length === 0) return null;
|
|
163
150
|
|
|
164
|
-
const currentIndex = elements.indexOf(current as HTMLElement)
|
|
165
|
-
let nextIndex = currentIndex + 1
|
|
151
|
+
const currentIndex = elements.indexOf(current as HTMLElement);
|
|
152
|
+
let nextIndex = currentIndex + 1;
|
|
166
153
|
|
|
167
154
|
if (nextIndex >= elements.length) {
|
|
168
155
|
if (wrap) {
|
|
169
|
-
nextIndex = 0
|
|
156
|
+
nextIndex = 0;
|
|
170
157
|
} else {
|
|
171
|
-
return null
|
|
158
|
+
return null;
|
|
172
159
|
}
|
|
173
160
|
}
|
|
174
161
|
|
|
175
|
-
const nextElement = elements[nextIndex]
|
|
162
|
+
const nextElement = elements[nextIndex];
|
|
176
163
|
if (nextElement) {
|
|
177
|
-
focusSafely(nextElement)
|
|
178
|
-
return nextElement
|
|
164
|
+
focusSafely(nextElement);
|
|
165
|
+
return nextElement;
|
|
179
166
|
}
|
|
180
167
|
|
|
181
|
-
return null
|
|
168
|
+
return null;
|
|
182
169
|
},
|
|
183
170
|
|
|
184
171
|
focusPrevious(opts: FocusManagerOptions = {}) {
|
|
185
|
-
const root = ref()
|
|
186
|
-
if (!root) return null
|
|
172
|
+
const root = ref();
|
|
173
|
+
if (!root) return null;
|
|
187
174
|
|
|
188
|
-
const { from, tabbable = true, wrap = false, accept } = opts
|
|
189
|
-
const doc = getOwnerDocument(root)
|
|
190
|
-
const current = from || getActiveElement(doc)
|
|
175
|
+
const { from, tabbable = true, wrap = false, accept } = opts;
|
|
176
|
+
const doc = getOwnerDocument(root);
|
|
177
|
+
const current = from || getActiveElement(doc);
|
|
191
178
|
|
|
192
|
-
let elements = getFocusableElements(root, tabbable)
|
|
179
|
+
let elements = getFocusableElements(root, tabbable);
|
|
193
180
|
if (accept) {
|
|
194
|
-
elements = elements.filter(accept)
|
|
181
|
+
elements = elements.filter(accept);
|
|
195
182
|
}
|
|
196
183
|
|
|
197
|
-
if (!current || elements.length === 0) return null
|
|
184
|
+
if (!current || elements.length === 0) return null;
|
|
198
185
|
|
|
199
|
-
const currentIndex = elements.indexOf(current as HTMLElement)
|
|
200
|
-
let prevIndex = currentIndex - 1
|
|
186
|
+
const currentIndex = elements.indexOf(current as HTMLElement);
|
|
187
|
+
let prevIndex = currentIndex - 1;
|
|
201
188
|
|
|
202
189
|
if (prevIndex < 0) {
|
|
203
190
|
if (wrap) {
|
|
204
|
-
prevIndex = elements.length - 1
|
|
191
|
+
prevIndex = elements.length - 1;
|
|
205
192
|
} else {
|
|
206
|
-
return null
|
|
193
|
+
return null;
|
|
207
194
|
}
|
|
208
195
|
}
|
|
209
196
|
|
|
210
|
-
const prevElement = elements[prevIndex]
|
|
197
|
+
const prevElement = elements[prevIndex];
|
|
211
198
|
if (prevElement) {
|
|
212
|
-
focusSafely(prevElement)
|
|
213
|
-
return prevElement
|
|
199
|
+
focusSafely(prevElement);
|
|
200
|
+
return prevElement;
|
|
214
201
|
}
|
|
215
202
|
|
|
216
|
-
return null
|
|
203
|
+
return null;
|
|
217
204
|
},
|
|
218
205
|
|
|
219
206
|
focusFirst(opts: FocusManagerOptions = {}) {
|
|
220
|
-
const root = ref()
|
|
221
|
-
if (!root) return null
|
|
207
|
+
const root = ref();
|
|
208
|
+
if (!root) return null;
|
|
222
209
|
|
|
223
|
-
const { tabbable = true, accept } = opts
|
|
224
|
-
let elements = getFocusableElements(root, tabbable)
|
|
210
|
+
const { tabbable = true, accept } = opts;
|
|
211
|
+
let elements = getFocusableElements(root, tabbable);
|
|
225
212
|
if (accept) {
|
|
226
|
-
elements = elements.filter(accept)
|
|
213
|
+
elements = elements.filter(accept);
|
|
227
214
|
}
|
|
228
215
|
|
|
229
216
|
if (elements.length > 0) {
|
|
230
|
-
focusSafely(elements[0])
|
|
231
|
-
return elements[0]
|
|
217
|
+
focusSafely(elements[0]);
|
|
218
|
+
return elements[0];
|
|
232
219
|
}
|
|
233
220
|
|
|
234
|
-
return null
|
|
221
|
+
return null;
|
|
235
222
|
},
|
|
236
223
|
|
|
237
224
|
focusLast(opts: FocusManagerOptions = {}) {
|
|
238
|
-
const root = ref()
|
|
239
|
-
if (!root) return null
|
|
225
|
+
const root = ref();
|
|
226
|
+
if (!root) return null;
|
|
240
227
|
|
|
241
|
-
const { tabbable = true, accept } = opts
|
|
242
|
-
let elements = getFocusableElements(root, tabbable)
|
|
228
|
+
const { tabbable = true, accept } = opts;
|
|
229
|
+
let elements = getFocusableElements(root, tabbable);
|
|
243
230
|
if (accept) {
|
|
244
|
-
elements = elements.filter(accept)
|
|
231
|
+
elements = elements.filter(accept);
|
|
245
232
|
}
|
|
246
233
|
|
|
247
234
|
if (elements.length > 0) {
|
|
248
|
-
const lastElement = elements[elements.length - 1]
|
|
249
|
-
focusSafely(lastElement)
|
|
250
|
-
return lastElement
|
|
235
|
+
const lastElement = elements[elements.length - 1];
|
|
236
|
+
focusSafely(lastElement);
|
|
237
|
+
return lastElement;
|
|
251
238
|
}
|
|
252
239
|
|
|
253
|
-
return null
|
|
240
|
+
return null;
|
|
254
241
|
},
|
|
255
|
-
}
|
|
242
|
+
};
|
|
256
243
|
}
|
|
257
244
|
|
|
258
|
-
// ============================================
|
|
259
|
-
// CREATE TOOLBAR HOOK
|
|
260
|
-
// ============================================
|
|
261
|
-
|
|
262
245
|
/**
|
|
263
246
|
* Provides the behavior and accessibility implementation for a toolbar.
|
|
264
247
|
* A toolbar is a container for a set of interactive controls with arrow key navigation.
|
|
@@ -277,124 +260,124 @@ function createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManage
|
|
|
277
260
|
* ```
|
|
278
261
|
*/
|
|
279
262
|
export function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {
|
|
280
|
-
let toolbarRef: HTMLElement | undefined
|
|
281
|
-
const [isInToolbar, setIsInToolbar] = createSignal(false)
|
|
282
|
-
let lastFocusedElement: Element | null = null
|
|
263
|
+
let toolbarRef: HTMLElement | undefined;
|
|
264
|
+
const [isInToolbar, setIsInToolbar] = createSignal(false);
|
|
265
|
+
let lastFocusedElement: Element | null = null;
|
|
283
266
|
|
|
284
|
-
const locale = useLocale()
|
|
285
|
-
const orientation = () => access(props.orientation) ??
|
|
286
|
-
const ariaLabel = () => access(props[
|
|
287
|
-
const ariaLabelledby = () => access(props[
|
|
267
|
+
const locale = useLocale();
|
|
268
|
+
const orientation = () => access(props.orientation) ?? "horizontal";
|
|
269
|
+
const ariaLabel = () => access(props["aria-label"]);
|
|
270
|
+
const ariaLabelledby = () => access(props["aria-labelledby"]);
|
|
288
271
|
|
|
289
|
-
const focusManager = createFocusManager(() => toolbarRef)
|
|
272
|
+
const focusManager = createFocusManager(() => toolbarRef);
|
|
290
273
|
|
|
291
274
|
// Check if this toolbar is nested inside another toolbar
|
|
292
275
|
onMount(() => {
|
|
293
276
|
if (toolbarRef) {
|
|
294
|
-
const parentToolbar = toolbarRef.parentElement?.closest('[role="toolbar"]')
|
|
295
|
-
setIsInToolbar(!!parentToolbar)
|
|
277
|
+
const parentToolbar = toolbarRef.parentElement?.closest('[role="toolbar"]');
|
|
278
|
+
setIsInToolbar(!!parentToolbar);
|
|
296
279
|
}
|
|
297
|
-
})
|
|
280
|
+
});
|
|
298
281
|
|
|
299
282
|
// Keyboard event handler
|
|
300
283
|
const onKeyDown = (e: KeyboardEvent) => {
|
|
301
|
-
const root = toolbarRef
|
|
302
|
-
if (!root) return
|
|
284
|
+
const root = toolbarRef;
|
|
285
|
+
if (!root) return;
|
|
303
286
|
|
|
304
287
|
// Don't handle if nested toolbar (parent handles navigation)
|
|
305
|
-
if (isInToolbar()) return
|
|
288
|
+
if (isInToolbar()) return;
|
|
306
289
|
|
|
307
|
-
const target = e.target
|
|
290
|
+
const target = e.target;
|
|
308
291
|
if (!(target instanceof Element) || !root.contains(target)) {
|
|
309
|
-
return
|
|
292
|
+
return;
|
|
310
293
|
}
|
|
311
294
|
|
|
312
295
|
// Let modified shortcuts pass through.
|
|
313
296
|
if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
314
|
-
return
|
|
297
|
+
return;
|
|
315
298
|
}
|
|
316
299
|
|
|
317
300
|
// Text entry controls should keep arrow/home/end for caret/value navigation.
|
|
318
301
|
if (isTextInputLikeElement(target)) {
|
|
319
302
|
switch (e.key) {
|
|
320
|
-
case
|
|
321
|
-
case
|
|
322
|
-
case
|
|
323
|
-
case
|
|
324
|
-
case
|
|
325
|
-
case
|
|
326
|
-
return
|
|
303
|
+
case "ArrowRight":
|
|
304
|
+
case "ArrowLeft":
|
|
305
|
+
case "ArrowDown":
|
|
306
|
+
case "ArrowUp":
|
|
307
|
+
case "Home":
|
|
308
|
+
case "End":
|
|
309
|
+
return;
|
|
327
310
|
}
|
|
328
311
|
}
|
|
329
312
|
|
|
330
|
-
const dir = locale().direction
|
|
331
|
-
const isRTL = dir ===
|
|
332
|
-
const isHorizontal = orientation() ===
|
|
313
|
+
const dir = locale().direction;
|
|
314
|
+
const isRTL = dir === "rtl";
|
|
315
|
+
const isHorizontal = orientation() === "horizontal";
|
|
333
316
|
|
|
334
|
-
let handled = false
|
|
317
|
+
let handled = false;
|
|
335
318
|
|
|
336
319
|
switch (e.key) {
|
|
337
|
-
case
|
|
320
|
+
case "ArrowRight":
|
|
338
321
|
if (isHorizontal) {
|
|
339
322
|
if (isRTL) {
|
|
340
|
-
focusManager.focusPrevious({ tabbable: true })
|
|
323
|
+
focusManager.focusPrevious({ tabbable: true });
|
|
341
324
|
} else {
|
|
342
|
-
focusManager.focusNext({ tabbable: true })
|
|
325
|
+
focusManager.focusNext({ tabbable: true });
|
|
343
326
|
}
|
|
344
|
-
handled = true
|
|
327
|
+
handled = true;
|
|
345
328
|
}
|
|
346
|
-
break
|
|
347
|
-
case
|
|
329
|
+
break;
|
|
330
|
+
case "ArrowLeft":
|
|
348
331
|
if (isHorizontal) {
|
|
349
332
|
if (isRTL) {
|
|
350
|
-
focusManager.focusNext({ tabbable: true })
|
|
333
|
+
focusManager.focusNext({ tabbable: true });
|
|
351
334
|
} else {
|
|
352
|
-
focusManager.focusPrevious({ tabbable: true })
|
|
335
|
+
focusManager.focusPrevious({ tabbable: true });
|
|
353
336
|
}
|
|
354
|
-
handled = true
|
|
337
|
+
handled = true;
|
|
355
338
|
}
|
|
356
|
-
break
|
|
357
|
-
case
|
|
339
|
+
break;
|
|
340
|
+
case "ArrowDown":
|
|
358
341
|
if (!isHorizontal) {
|
|
359
|
-
focusManager.focusNext({ tabbable: true })
|
|
360
|
-
handled = true
|
|
342
|
+
focusManager.focusNext({ tabbable: true });
|
|
343
|
+
handled = true;
|
|
361
344
|
}
|
|
362
|
-
break
|
|
363
|
-
case
|
|
345
|
+
break;
|
|
346
|
+
case "ArrowUp":
|
|
364
347
|
if (!isHorizontal) {
|
|
365
|
-
focusManager.focusPrevious({ tabbable: true })
|
|
366
|
-
handled = true
|
|
348
|
+
focusManager.focusPrevious({ tabbable: true });
|
|
349
|
+
handled = true;
|
|
367
350
|
}
|
|
368
|
-
break
|
|
369
|
-
case
|
|
370
|
-
focusManager.focusFirst({ tabbable: true })
|
|
371
|
-
handled = true
|
|
372
|
-
break
|
|
373
|
-
case
|
|
374
|
-
focusManager.focusLast({ tabbable: true })
|
|
375
|
-
handled = true
|
|
376
|
-
break
|
|
377
|
-
case
|
|
351
|
+
break;
|
|
352
|
+
case "Home":
|
|
353
|
+
focusManager.focusFirst({ tabbable: true });
|
|
354
|
+
handled = true;
|
|
355
|
+
break;
|
|
356
|
+
case "End":
|
|
357
|
+
focusManager.focusLast({ tabbable: true });
|
|
358
|
+
handled = true;
|
|
359
|
+
break;
|
|
360
|
+
case "Tab":
|
|
378
361
|
// Store the last focused element for re-entry
|
|
379
|
-
lastFocusedElement = e.target as Element
|
|
380
|
-
break
|
|
362
|
+
lastFocusedElement = e.target as Element;
|
|
363
|
+
break;
|
|
381
364
|
}
|
|
382
365
|
|
|
383
366
|
if (handled) {
|
|
384
|
-
e.preventDefault()
|
|
385
|
-
e.stopPropagation()
|
|
367
|
+
e.preventDefault();
|
|
368
|
+
e.stopPropagation();
|
|
386
369
|
}
|
|
387
|
-
}
|
|
370
|
+
};
|
|
388
371
|
|
|
389
372
|
// Focus handler - restore last focused element when re-entering
|
|
390
373
|
const onFocus = (e: FocusEvent) => {
|
|
391
|
-
if (isInToolbar()) return
|
|
374
|
+
if (isInToolbar()) return;
|
|
392
375
|
|
|
393
376
|
// Only restore if focus is coming from outside the toolbar
|
|
394
|
-
const root = toolbarRef
|
|
395
|
-
if (!root) return
|
|
377
|
+
const root = toolbarRef;
|
|
378
|
+
if (!root) return;
|
|
396
379
|
|
|
397
|
-
const relatedTarget = e.relatedTarget as Element | null
|
|
380
|
+
const relatedTarget = e.relatedTarget as Element | null;
|
|
398
381
|
|
|
399
382
|
// If focus came from outside and we have a last focused element
|
|
400
383
|
if (
|
|
@@ -403,41 +386,41 @@ export function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {
|
|
|
403
386
|
(!relatedTarget || !root.contains(relatedTarget))
|
|
404
387
|
) {
|
|
405
388
|
// Restore focus to the last focused element
|
|
406
|
-
focusSafely(lastFocusedElement as HTMLElement)
|
|
389
|
+
focusSafely(lastFocusedElement as HTMLElement);
|
|
407
390
|
}
|
|
408
|
-
}
|
|
391
|
+
};
|
|
409
392
|
|
|
410
393
|
// Set up capture event listeners
|
|
411
394
|
const setRef = (el: HTMLElement) => {
|
|
412
|
-
toolbarRef = el
|
|
395
|
+
toolbarRef = el;
|
|
413
396
|
|
|
414
397
|
// Use capture phase for keyboard events
|
|
415
|
-
el.addEventListener(
|
|
416
|
-
el.addEventListener(
|
|
398
|
+
el.addEventListener("keydown", onKeyDown, true);
|
|
399
|
+
el.addEventListener("focus", onFocus, true);
|
|
417
400
|
|
|
418
401
|
onCleanup(() => {
|
|
419
|
-
el.removeEventListener(
|
|
420
|
-
el.removeEventListener(
|
|
421
|
-
})
|
|
422
|
-
}
|
|
402
|
+
el.removeEventListener("keydown", onKeyDown, true);
|
|
403
|
+
el.removeEventListener("focus", onFocus, true);
|
|
404
|
+
});
|
|
405
|
+
};
|
|
423
406
|
|
|
424
407
|
return {
|
|
425
408
|
toolbarProps: {
|
|
426
409
|
get role() {
|
|
427
|
-
return isInToolbar() ?
|
|
410
|
+
return isInToolbar() ? "group" : "toolbar";
|
|
428
411
|
},
|
|
429
|
-
get
|
|
430
|
-
return orientation()
|
|
412
|
+
get "aria-orientation"() {
|
|
413
|
+
return orientation();
|
|
431
414
|
},
|
|
432
|
-
get
|
|
433
|
-
return ariaLabel()
|
|
415
|
+
get "aria-label"() {
|
|
416
|
+
return ariaLabel();
|
|
434
417
|
},
|
|
435
|
-
get
|
|
418
|
+
get "aria-labelledby"() {
|
|
436
419
|
// Only use aria-labelledby if no aria-label is provided
|
|
437
|
-
return ariaLabel() ? undefined : ariaLabelledby()
|
|
420
|
+
return ariaLabel() ? undefined : ariaLabelledby();
|
|
438
421
|
},
|
|
439
422
|
ref: setRef,
|
|
440
423
|
},
|
|
441
424
|
orientation,
|
|
442
|
-
}
|
|
425
|
+
};
|
|
443
426
|
}
|
package/src/toolbar/index.ts
CHANGED