@proyecto-viviana/solidaria 0.2.5 → 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/LICENSE +21 -0
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +29 -0
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
- package/dist/actiongroup/index.d.ts +2 -0
- package/dist/actiongroup/index.d.ts.map +1 -0
- package/dist/autocomplete/createAutocomplete.d.ts +16 -12
- 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 +11 -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 +32 -0
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
- package/dist/button/index.d.ts +6 -4
- 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 +8 -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 +7 -3
- 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 +11 -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 +56 -0
- package/dist/collections/index.d.ts.map +1 -0
- 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 +16 -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 +57 -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 +42 -0
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
- package/dist/datepicker/createDateSegment.d.ts +11 -3
- 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 +29 -0
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
- package/dist/datepicker/index.d.ts +7 -4
- 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 -3
- 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 +6 -2
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- 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 +55 -4
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- 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/createGrid.d.ts.map +1 -1
- 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 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18089 -15690
- package/dist/index.js.map +1 -7
- 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 +23 -7
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +12 -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 +8 -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 +27 -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 +19 -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 +11 -11
- 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 +6 -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 +13 -5
- 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 +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/platform.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 +34 -32
- package/src/actiongroup/createActionGroup.ts +334 -0
- package/src/actiongroup/index.ts +8 -0
- package/src/autocomplete/createAutocomplete.ts +137 -131
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
- 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 +121 -0
- package/src/button/index.ts +10 -4
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +102 -48
- package/src/calendar/createCalendarGrid.ts +78 -47
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +115 -37
- 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 +86 -45
- 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 +246 -0
- package/src/color/createColorArea.ts +458 -314
- package/src/color/createColorField.ts +186 -137
- package/src/color/createColorSlider.ts +444 -197
- package/src/color/createColorSwatch.ts +65 -40
- package/src/color/createColorWheel.ts +343 -208
- package/src/color/index.ts +24 -24
- package/src/color/types.ts +198 -116
- package/src/combobox/createComboBox.ts +727 -647
- package/src/combobox/index.ts +6 -6
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +294 -63
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +294 -0
- package/src/datepicker/createDateSegment.ts +316 -75
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +352 -0
- package/src/datepicker/index.ts +24 -11
- package/src/dialog/createDialog.ts +127 -120
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +19 -19
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -18
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +218 -209
- package/src/dnd/createDraggableCollection.ts +96 -63
- package/src/dnd/createDraggableItem.ts +260 -243
- package/src/dnd/createDrop.ts +313 -321
- package/src/dnd/createDroppableCollection.ts +799 -293
- package/src/dnd/createDroppableItem.ts +215 -213
- package/src/dnd/index.ts +66 -47
- package/src/dnd/types.ts +86 -89
- package/src/dnd/utils.ts +281 -294
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +305 -321
- package/src/focus/createFocusRestore.ts +300 -313
- package/src/focus/createVirtualFocus.ts +380 -396
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +201 -224
- package/src/form/index.ts +8 -11
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +38 -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 +45 -24
- 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 +66 -79
- package/src/i18n/createDateFormatter.ts +75 -83
- package/src/i18n/createFilter.ts +118 -131
- package/src/i18n/createNumberFormatter.ts +50 -52
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +37 -40
- package/src/i18n/locale.tsx +163 -188
- package/src/i18n/utils.ts +95 -99
- package/src/index.ts +114 -164
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +16 -11
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +24 -16
- 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 +174 -174
- package/src/interactions/createMove.ts +299 -289
- package/src/interactions/createPress.ts +168 -91
- 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 +356 -377
- package/src/landmark/index.ts +8 -8
- package/src/link/createLink.ts +96 -54
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +319 -269
- package/src/listbox/createOption.ts +208 -151
- package/src/listbox/index.ts +8 -12
- package/src/live-announcer/announce.ts +295 -322
- package/src/live-announcer/index.ts +9 -9
- package/src/menu/createMenu.ts +434 -396
- package/src/menu/createMenuItem.ts +201 -149
- package/src/menu/createMenuTrigger.ts +88 -88
- package/src/menu/index.ts +9 -18
- package/src/meter/createMeter.ts +7 -20
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +368 -268
- package/src/numberfield/index.ts +5 -5
- package/src/overlays/ariaHideOutside.ts +223 -219
- package/src/overlays/createInteractOutside.ts +152 -149
- package/src/overlays/createModal.tsx +238 -202
- package/src/overlays/createOverlay.ts +195 -155
- package/src/overlays/createOverlayTrigger.ts +85 -85
- package/src/overlays/createPreventScroll.ts +288 -266
- package/src/overlays/index.ts +37 -44
- package/src/popover/calculatePosition.ts +117 -119
- package/src/popover/createOverlayPosition.ts +52 -43
- package/src/popover/createPopover.ts +63 -24
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +36 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +142 -62
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +269 -186
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +276 -236
- package/src/select/createSelect.ts +430 -395
- package/src/select/index.ts +9 -14
- 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 +333 -349
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +331 -370
- 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 +155 -86
- 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 +138 -127
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +171 -40
- package/src/tag/createTagGroup.ts +50 -39
- 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 +34 -26
- package/src/toast/createToastRegion.ts +169 -27
- 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 +226 -169
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +66 -79
- package/src/tooltip/createTooltipTrigger.ts +238 -222
- package/src/tooltip/index.ts +6 -6
- package/src/tree/createTree.ts +259 -246
- package/src/tree/createTreeItem.ts +282 -233
- package/src/tree/createTreeSelectionCheckbox.ts +71 -68
- package/src/tree/index.ts +16 -16
- package/src/tree/types.ts +95 -87
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +53 -54
- 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 +16 -6
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +127 -124
- package/src/visually-hidden/index.ts +6 -6
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -15875
- package/dist/index.ssr.js.map +0 -7
- package/src/i18n/NumberFormatter.ts +0 -266
|
@@ -5,220 +5,243 @@
|
|
|
5
5
|
* Based on @react-aria/toolbar useToolbar.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import { type MaybeAccessor, access } from '../utils'
|
|
16
|
-
import { useLocale } from '../i18n'
|
|
17
|
-
import { getOwnerDocument, isFocusable } from '../utils'
|
|
18
|
-
import { focusSafely } from '../utils/focus'
|
|
19
|
-
|
|
20
|
-
// ============================================
|
|
21
|
-
// TYPES
|
|
22
|
-
// ============================================
|
|
23
|
-
|
|
24
|
-
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";
|
|
25
15
|
|
|
26
16
|
export interface AriaToolbarProps {
|
|
27
17
|
/** The orientation of the toolbar. @default 'horizontal' */
|
|
28
|
-
orientation?: MaybeAccessor<Orientation
|
|
18
|
+
orientation?: MaybeAccessor<Orientation>;
|
|
29
19
|
/** An accessibility label for the toolbar. */
|
|
30
|
-
|
|
20
|
+
"aria-label"?: MaybeAccessor<string>;
|
|
31
21
|
/** Identifies the element (or elements) that labels the toolbar. */
|
|
32
|
-
|
|
22
|
+
"aria-labelledby"?: MaybeAccessor<string>;
|
|
33
23
|
}
|
|
34
24
|
|
|
35
25
|
export interface ToolbarAria {
|
|
36
26
|
/** Props for the toolbar container element. */
|
|
37
27
|
toolbarProps: {
|
|
38
|
-
role:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
tabIndex?: number
|
|
43
|
-
ref: (el: HTMLElement) => void
|
|
44
|
-
}
|
|
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
|
+
};
|
|
45
35
|
/** The orientation of the toolbar. */
|
|
46
|
-
orientation: Accessor<Orientation
|
|
36
|
+
orientation: Accessor<Orientation>;
|
|
47
37
|
}
|
|
48
38
|
|
|
49
|
-
// ============================================
|
|
50
|
-
// FOCUS MANAGER FOR TOOLBAR
|
|
51
|
-
// ============================================
|
|
52
|
-
|
|
53
39
|
interface FocusManagerOptions {
|
|
54
|
-
from?: Element
|
|
55
|
-
tabbable?: boolean
|
|
56
|
-
wrap?: boolean
|
|
57
|
-
accept?: (node: Element) => boolean
|
|
40
|
+
from?: Element;
|
|
41
|
+
tabbable?: boolean;
|
|
42
|
+
wrap?: boolean;
|
|
43
|
+
accept?: (node: Element) => boolean;
|
|
58
44
|
}
|
|
59
45
|
|
|
60
46
|
interface FocusManager {
|
|
61
|
-
focusNext(opts?: FocusManagerOptions): HTMLElement | null
|
|
62
|
-
focusPrevious(opts?: FocusManagerOptions): HTMLElement | null
|
|
63
|
-
focusFirst(opts?: FocusManagerOptions): HTMLElement | null
|
|
64
|
-
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;
|
|
65
51
|
}
|
|
66
52
|
|
|
67
53
|
function isTabbable(element: Element): boolean {
|
|
68
54
|
if (!isFocusable(element)) {
|
|
69
|
-
return false
|
|
55
|
+
return false;
|
|
70
56
|
}
|
|
71
|
-
const tabIndex = element.getAttribute(
|
|
57
|
+
const tabIndex = element.getAttribute("tabindex");
|
|
72
58
|
if (tabIndex != null) {
|
|
73
|
-
return parseInt(tabIndex, 10) >= 0
|
|
59
|
+
return parseInt(tabIndex, 10) >= 0;
|
|
74
60
|
}
|
|
75
|
-
return true
|
|
61
|
+
return true;
|
|
76
62
|
}
|
|
77
63
|
|
|
78
64
|
function getFocusableElements(root: Element, tabbable = false): HTMLElement[] {
|
|
79
|
-
const elements: HTMLElement[] = []
|
|
80
|
-
const filter = tabbable ? isTabbable : isFocusable
|
|
65
|
+
const elements: HTMLElement[] = [];
|
|
66
|
+
const filter = tabbable ? isTabbable : isFocusable;
|
|
81
67
|
|
|
82
68
|
// Check the root element itself
|
|
83
69
|
if (filter(root)) {
|
|
84
|
-
elements.push(root as HTMLElement)
|
|
70
|
+
elements.push(root as HTMLElement);
|
|
85
71
|
}
|
|
86
72
|
|
|
87
73
|
// Check all descendants
|
|
88
|
-
const descendants = root.querySelectorAll(
|
|
74
|
+
const descendants = root.querySelectorAll("*");
|
|
89
75
|
for (let i = 0; i < descendants.length; i++) {
|
|
90
|
-
const el = descendants[i]
|
|
76
|
+
const el = descendants[i];
|
|
91
77
|
if (filter(el)) {
|
|
92
|
-
elements.push(el as HTMLElement)
|
|
78
|
+
elements.push(el as HTMLElement);
|
|
93
79
|
}
|
|
94
80
|
}
|
|
95
81
|
|
|
96
|
-
return elements
|
|
82
|
+
return elements;
|
|
97
83
|
}
|
|
98
84
|
|
|
99
85
|
function getActiveElement(doc: Document): Element | null {
|
|
100
|
-
let activeElement = doc.activeElement
|
|
86
|
+
let activeElement = doc.activeElement;
|
|
101
87
|
while (activeElement?.shadowRoot?.activeElement) {
|
|
102
|
-
activeElement = activeElement.shadowRoot.activeElement
|
|
88
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
89
|
+
}
|
|
90
|
+
return activeElement;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const TEXT_INPUT_TYPES = new Set([
|
|
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
|
+
]);
|
|
108
|
+
|
|
109
|
+
function isTextInputLikeElement(target: EventTarget | null): boolean {
|
|
110
|
+
if (!(target instanceof HTMLElement)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (target.isContentEditable || !!target.closest('[contenteditable="true"]')) {
|
|
115
|
+
return true;
|
|
103
116
|
}
|
|
104
|
-
|
|
117
|
+
|
|
118
|
+
if (target.getAttribute("role") === "textbox") {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (target instanceof HTMLInputElement) {
|
|
127
|
+
const type = target.type.toLowerCase();
|
|
128
|
+
return TEXT_INPUT_TYPES.has(type);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return false;
|
|
105
132
|
}
|
|
106
133
|
|
|
107
134
|
function createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManager {
|
|
108
135
|
return {
|
|
109
136
|
focusNext(opts: FocusManagerOptions = {}) {
|
|
110
|
-
const root = ref()
|
|
111
|
-
if (!root) return null
|
|
137
|
+
const root = ref();
|
|
138
|
+
if (!root) return null;
|
|
112
139
|
|
|
113
|
-
const { from, tabbable = true, wrap = false, accept } = opts
|
|
114
|
-
const doc = getOwnerDocument(root)
|
|
115
|
-
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);
|
|
116
143
|
|
|
117
|
-
let elements = getFocusableElements(root, tabbable)
|
|
144
|
+
let elements = getFocusableElements(root, tabbable);
|
|
118
145
|
if (accept) {
|
|
119
|
-
elements = elements.filter(accept)
|
|
146
|
+
elements = elements.filter(accept);
|
|
120
147
|
}
|
|
121
148
|
|
|
122
|
-
if (!current || elements.length === 0) return null
|
|
149
|
+
if (!current || elements.length === 0) return null;
|
|
123
150
|
|
|
124
|
-
const currentIndex = elements.indexOf(current as HTMLElement)
|
|
125
|
-
let nextIndex = currentIndex + 1
|
|
151
|
+
const currentIndex = elements.indexOf(current as HTMLElement);
|
|
152
|
+
let nextIndex = currentIndex + 1;
|
|
126
153
|
|
|
127
154
|
if (nextIndex >= elements.length) {
|
|
128
155
|
if (wrap) {
|
|
129
|
-
nextIndex = 0
|
|
156
|
+
nextIndex = 0;
|
|
130
157
|
} else {
|
|
131
|
-
return null
|
|
158
|
+
return null;
|
|
132
159
|
}
|
|
133
160
|
}
|
|
134
161
|
|
|
135
|
-
const nextElement = elements[nextIndex]
|
|
162
|
+
const nextElement = elements[nextIndex];
|
|
136
163
|
if (nextElement) {
|
|
137
|
-
focusSafely(nextElement)
|
|
138
|
-
return nextElement
|
|
164
|
+
focusSafely(nextElement);
|
|
165
|
+
return nextElement;
|
|
139
166
|
}
|
|
140
167
|
|
|
141
|
-
return null
|
|
168
|
+
return null;
|
|
142
169
|
},
|
|
143
170
|
|
|
144
171
|
focusPrevious(opts: FocusManagerOptions = {}) {
|
|
145
|
-
const root = ref()
|
|
146
|
-
if (!root) return null
|
|
172
|
+
const root = ref();
|
|
173
|
+
if (!root) return null;
|
|
147
174
|
|
|
148
|
-
const { from, tabbable = true, wrap = false, accept } = opts
|
|
149
|
-
const doc = getOwnerDocument(root)
|
|
150
|
-
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);
|
|
151
178
|
|
|
152
|
-
let elements = getFocusableElements(root, tabbable)
|
|
179
|
+
let elements = getFocusableElements(root, tabbable);
|
|
153
180
|
if (accept) {
|
|
154
|
-
elements = elements.filter(accept)
|
|
181
|
+
elements = elements.filter(accept);
|
|
155
182
|
}
|
|
156
183
|
|
|
157
|
-
if (!current || elements.length === 0) return null
|
|
184
|
+
if (!current || elements.length === 0) return null;
|
|
158
185
|
|
|
159
|
-
const currentIndex = elements.indexOf(current as HTMLElement)
|
|
160
|
-
let prevIndex = currentIndex - 1
|
|
186
|
+
const currentIndex = elements.indexOf(current as HTMLElement);
|
|
187
|
+
let prevIndex = currentIndex - 1;
|
|
161
188
|
|
|
162
189
|
if (prevIndex < 0) {
|
|
163
190
|
if (wrap) {
|
|
164
|
-
prevIndex = elements.length - 1
|
|
191
|
+
prevIndex = elements.length - 1;
|
|
165
192
|
} else {
|
|
166
|
-
return null
|
|
193
|
+
return null;
|
|
167
194
|
}
|
|
168
195
|
}
|
|
169
196
|
|
|
170
|
-
const prevElement = elements[prevIndex]
|
|
197
|
+
const prevElement = elements[prevIndex];
|
|
171
198
|
if (prevElement) {
|
|
172
|
-
focusSafely(prevElement)
|
|
173
|
-
return prevElement
|
|
199
|
+
focusSafely(prevElement);
|
|
200
|
+
return prevElement;
|
|
174
201
|
}
|
|
175
202
|
|
|
176
|
-
return null
|
|
203
|
+
return null;
|
|
177
204
|
},
|
|
178
205
|
|
|
179
206
|
focusFirst(opts: FocusManagerOptions = {}) {
|
|
180
|
-
const root = ref()
|
|
181
|
-
if (!root) return null
|
|
207
|
+
const root = ref();
|
|
208
|
+
if (!root) return null;
|
|
182
209
|
|
|
183
|
-
const { tabbable = true, accept } = opts
|
|
184
|
-
let elements = getFocusableElements(root, tabbable)
|
|
210
|
+
const { tabbable = true, accept } = opts;
|
|
211
|
+
let elements = getFocusableElements(root, tabbable);
|
|
185
212
|
if (accept) {
|
|
186
|
-
elements = elements.filter(accept)
|
|
213
|
+
elements = elements.filter(accept);
|
|
187
214
|
}
|
|
188
215
|
|
|
189
216
|
if (elements.length > 0) {
|
|
190
|
-
focusSafely(elements[0])
|
|
191
|
-
return elements[0]
|
|
217
|
+
focusSafely(elements[0]);
|
|
218
|
+
return elements[0];
|
|
192
219
|
}
|
|
193
220
|
|
|
194
|
-
return null
|
|
221
|
+
return null;
|
|
195
222
|
},
|
|
196
223
|
|
|
197
224
|
focusLast(opts: FocusManagerOptions = {}) {
|
|
198
|
-
const root = ref()
|
|
199
|
-
if (!root) return null
|
|
225
|
+
const root = ref();
|
|
226
|
+
if (!root) return null;
|
|
200
227
|
|
|
201
|
-
const { tabbable = true, accept } = opts
|
|
202
|
-
let elements = getFocusableElements(root, tabbable)
|
|
228
|
+
const { tabbable = true, accept } = opts;
|
|
229
|
+
let elements = getFocusableElements(root, tabbable);
|
|
203
230
|
if (accept) {
|
|
204
|
-
elements = elements.filter(accept)
|
|
231
|
+
elements = elements.filter(accept);
|
|
205
232
|
}
|
|
206
233
|
|
|
207
234
|
if (elements.length > 0) {
|
|
208
|
-
const lastElement = elements[elements.length - 1]
|
|
209
|
-
focusSafely(lastElement)
|
|
210
|
-
return lastElement
|
|
235
|
+
const lastElement = elements[elements.length - 1];
|
|
236
|
+
focusSafely(lastElement);
|
|
237
|
+
return lastElement;
|
|
211
238
|
}
|
|
212
239
|
|
|
213
|
-
return null
|
|
240
|
+
return null;
|
|
214
241
|
},
|
|
215
|
-
}
|
|
242
|
+
};
|
|
216
243
|
}
|
|
217
244
|
|
|
218
|
-
// ============================================
|
|
219
|
-
// CREATE TOOLBAR HOOK
|
|
220
|
-
// ============================================
|
|
221
|
-
|
|
222
245
|
/**
|
|
223
246
|
* Provides the behavior and accessibility implementation for a toolbar.
|
|
224
247
|
* A toolbar is a container for a set of interactive controls with arrow key navigation.
|
|
@@ -237,90 +260,124 @@ function createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManage
|
|
|
237
260
|
* ```
|
|
238
261
|
*/
|
|
239
262
|
export function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {
|
|
240
|
-
let toolbarRef: HTMLElement | undefined
|
|
241
|
-
const [isInToolbar, setIsInToolbar] = createSignal(false)
|
|
242
|
-
let lastFocusedElement: Element | null = null
|
|
263
|
+
let toolbarRef: HTMLElement | undefined;
|
|
264
|
+
const [isInToolbar, setIsInToolbar] = createSignal(false);
|
|
265
|
+
let lastFocusedElement: Element | null = null;
|
|
243
266
|
|
|
244
|
-
const locale = useLocale()
|
|
245
|
-
const orientation = () => access(props.orientation) ??
|
|
246
|
-
const ariaLabel = () => access(props[
|
|
247
|
-
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"]);
|
|
248
271
|
|
|
249
|
-
const focusManager = createFocusManager(() => toolbarRef)
|
|
272
|
+
const focusManager = createFocusManager(() => toolbarRef);
|
|
250
273
|
|
|
251
274
|
// Check if this toolbar is nested inside another toolbar
|
|
252
275
|
onMount(() => {
|
|
253
276
|
if (toolbarRef) {
|
|
254
|
-
const parentToolbar = toolbarRef.parentElement?.closest('[role="toolbar"]')
|
|
255
|
-
setIsInToolbar(!!parentToolbar)
|
|
277
|
+
const parentToolbar = toolbarRef.parentElement?.closest('[role="toolbar"]');
|
|
278
|
+
setIsInToolbar(!!parentToolbar);
|
|
256
279
|
}
|
|
257
|
-
})
|
|
280
|
+
});
|
|
258
281
|
|
|
259
282
|
// Keyboard event handler
|
|
260
283
|
const onKeyDown = (e: KeyboardEvent) => {
|
|
284
|
+
const root = toolbarRef;
|
|
285
|
+
if (!root) return;
|
|
286
|
+
|
|
261
287
|
// Don't handle if nested toolbar (parent handles navigation)
|
|
262
|
-
if (isInToolbar()) return
|
|
288
|
+
if (isInToolbar()) return;
|
|
289
|
+
|
|
290
|
+
const target = e.target;
|
|
291
|
+
if (!(target instanceof Element) || !root.contains(target)) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Let modified shortcuts pass through.
|
|
296
|
+
if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
263
299
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
300
|
+
// Text entry controls should keep arrow/home/end for caret/value navigation.
|
|
301
|
+
if (isTextInputLikeElement(target)) {
|
|
302
|
+
switch (e.key) {
|
|
303
|
+
case "ArrowRight":
|
|
304
|
+
case "ArrowLeft":
|
|
305
|
+
case "ArrowDown":
|
|
306
|
+
case "ArrowUp":
|
|
307
|
+
case "Home":
|
|
308
|
+
case "End":
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
267
312
|
|
|
268
|
-
|
|
313
|
+
const dir = locale().direction;
|
|
314
|
+
const isRTL = dir === "rtl";
|
|
315
|
+
const isHorizontal = orientation() === "horizontal";
|
|
316
|
+
|
|
317
|
+
let handled = false;
|
|
269
318
|
|
|
270
319
|
switch (e.key) {
|
|
271
|
-
case
|
|
320
|
+
case "ArrowRight":
|
|
272
321
|
if (isHorizontal) {
|
|
273
322
|
if (isRTL) {
|
|
274
|
-
focusManager.focusPrevious({ tabbable: true })
|
|
323
|
+
focusManager.focusPrevious({ tabbable: true });
|
|
275
324
|
} else {
|
|
276
|
-
focusManager.focusNext({ tabbable: true })
|
|
325
|
+
focusManager.focusNext({ tabbable: true });
|
|
277
326
|
}
|
|
278
|
-
handled = true
|
|
327
|
+
handled = true;
|
|
279
328
|
}
|
|
280
|
-
break
|
|
281
|
-
case
|
|
329
|
+
break;
|
|
330
|
+
case "ArrowLeft":
|
|
282
331
|
if (isHorizontal) {
|
|
283
332
|
if (isRTL) {
|
|
284
|
-
focusManager.focusNext({ tabbable: true })
|
|
333
|
+
focusManager.focusNext({ tabbable: true });
|
|
285
334
|
} else {
|
|
286
|
-
focusManager.focusPrevious({ tabbable: true })
|
|
335
|
+
focusManager.focusPrevious({ tabbable: true });
|
|
287
336
|
}
|
|
288
|
-
handled = true
|
|
337
|
+
handled = true;
|
|
289
338
|
}
|
|
290
|
-
break
|
|
291
|
-
case
|
|
339
|
+
break;
|
|
340
|
+
case "ArrowDown":
|
|
292
341
|
if (!isHorizontal) {
|
|
293
|
-
focusManager.focusNext({ tabbable: true })
|
|
294
|
-
handled = true
|
|
342
|
+
focusManager.focusNext({ tabbable: true });
|
|
343
|
+
handled = true;
|
|
295
344
|
}
|
|
296
|
-
break
|
|
297
|
-
case
|
|
345
|
+
break;
|
|
346
|
+
case "ArrowUp":
|
|
298
347
|
if (!isHorizontal) {
|
|
299
|
-
focusManager.focusPrevious({ tabbable: true })
|
|
300
|
-
handled = true
|
|
348
|
+
focusManager.focusPrevious({ tabbable: true });
|
|
349
|
+
handled = true;
|
|
301
350
|
}
|
|
302
|
-
break
|
|
303
|
-
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":
|
|
304
361
|
// Store the last focused element for re-entry
|
|
305
|
-
lastFocusedElement = e.target as Element
|
|
306
|
-
break
|
|
362
|
+
lastFocusedElement = e.target as Element;
|
|
363
|
+
break;
|
|
307
364
|
}
|
|
308
365
|
|
|
309
366
|
if (handled) {
|
|
310
|
-
e.preventDefault()
|
|
311
|
-
e.stopPropagation()
|
|
367
|
+
e.preventDefault();
|
|
368
|
+
e.stopPropagation();
|
|
312
369
|
}
|
|
313
|
-
}
|
|
370
|
+
};
|
|
314
371
|
|
|
315
372
|
// Focus handler - restore last focused element when re-entering
|
|
316
373
|
const onFocus = (e: FocusEvent) => {
|
|
317
|
-
if (isInToolbar()) return
|
|
374
|
+
if (isInToolbar()) return;
|
|
318
375
|
|
|
319
376
|
// Only restore if focus is coming from outside the toolbar
|
|
320
|
-
const root = toolbarRef
|
|
321
|
-
if (!root) return
|
|
377
|
+
const root = toolbarRef;
|
|
378
|
+
if (!root) return;
|
|
322
379
|
|
|
323
|
-
const relatedTarget = e.relatedTarget as Element | null
|
|
380
|
+
const relatedTarget = e.relatedTarget as Element | null;
|
|
324
381
|
|
|
325
382
|
// If focus came from outside and we have a last focused element
|
|
326
383
|
if (
|
|
@@ -329,41 +386,41 @@ export function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {
|
|
|
329
386
|
(!relatedTarget || !root.contains(relatedTarget))
|
|
330
387
|
) {
|
|
331
388
|
// Restore focus to the last focused element
|
|
332
|
-
focusSafely(lastFocusedElement as HTMLElement)
|
|
389
|
+
focusSafely(lastFocusedElement as HTMLElement);
|
|
333
390
|
}
|
|
334
|
-
}
|
|
391
|
+
};
|
|
335
392
|
|
|
336
393
|
// Set up capture event listeners
|
|
337
394
|
const setRef = (el: HTMLElement) => {
|
|
338
|
-
toolbarRef = el
|
|
395
|
+
toolbarRef = el;
|
|
339
396
|
|
|
340
397
|
// Use capture phase for keyboard events
|
|
341
|
-
el.addEventListener(
|
|
342
|
-
el.addEventListener(
|
|
398
|
+
el.addEventListener("keydown", onKeyDown, true);
|
|
399
|
+
el.addEventListener("focus", onFocus, true);
|
|
343
400
|
|
|
344
401
|
onCleanup(() => {
|
|
345
|
-
el.removeEventListener(
|
|
346
|
-
el.removeEventListener(
|
|
347
|
-
})
|
|
348
|
-
}
|
|
402
|
+
el.removeEventListener("keydown", onKeyDown, true);
|
|
403
|
+
el.removeEventListener("focus", onFocus, true);
|
|
404
|
+
});
|
|
405
|
+
};
|
|
349
406
|
|
|
350
407
|
return {
|
|
351
408
|
toolbarProps: {
|
|
352
409
|
get role() {
|
|
353
|
-
return isInToolbar() ?
|
|
410
|
+
return isInToolbar() ? "group" : "toolbar";
|
|
354
411
|
},
|
|
355
|
-
get
|
|
356
|
-
return orientation()
|
|
412
|
+
get "aria-orientation"() {
|
|
413
|
+
return orientation();
|
|
357
414
|
},
|
|
358
|
-
get
|
|
359
|
-
return ariaLabel()
|
|
415
|
+
get "aria-label"() {
|
|
416
|
+
return ariaLabel();
|
|
360
417
|
},
|
|
361
|
-
get
|
|
418
|
+
get "aria-labelledby"() {
|
|
362
419
|
// Only use aria-labelledby if no aria-label is provided
|
|
363
|
-
return ariaLabel() ? undefined : ariaLabelledby()
|
|
420
|
+
return ariaLabel() ? undefined : ariaLabelledby();
|
|
364
421
|
},
|
|
365
422
|
ref: setRef,
|
|
366
423
|
},
|
|
367
424
|
orientation,
|
|
368
|
-
}
|
|
425
|
+
};
|
|
369
426
|
}
|
package/src/toolbar/index.ts
CHANGED