@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
package/src/tabs/createTabs.ts
CHANGED
|
@@ -3,20 +3,16 @@
|
|
|
3
3
|
* Based on @react-aria/tabs.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { type Accessor, createEffect, createMemo } from
|
|
7
|
-
import { createFocusRing } from
|
|
8
|
-
import { createPress } from
|
|
9
|
-
import { createHover } from
|
|
10
|
-
import { createId } from
|
|
11
|
-
import { useLocale } from
|
|
12
|
-
import type { Key, Collection, CollectionNode } from
|
|
6
|
+
import { type Accessor, createEffect, createMemo } from "solid-js";
|
|
7
|
+
import { createFocusRing } from "../interactions";
|
|
8
|
+
import { createPress } from "../interactions";
|
|
9
|
+
import { createHover } from "../interactions";
|
|
10
|
+
import { createId } from "../ssr";
|
|
11
|
+
import { useLocale } from "../i18n";
|
|
12
|
+
import type { Key, Collection, CollectionNode } from "@proyecto-viviana/solid-stately";
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
// ============================================
|
|
17
|
-
|
|
18
|
-
export type TabOrientation = 'horizontal' | 'vertical';
|
|
19
|
-
export type KeyboardActivation = 'automatic' | 'manual';
|
|
14
|
+
export type TabOrientation = "horizontal" | "vertical";
|
|
15
|
+
export type KeyboardActivation = "automatic" | "manual";
|
|
20
16
|
|
|
21
17
|
export interface TabListState<T = unknown> {
|
|
22
18
|
collection: Accessor<Collection<T>>;
|
|
@@ -42,21 +38,21 @@ export interface AriaTabListProps {
|
|
|
42
38
|
/** Whether the tab list is disabled. */
|
|
43
39
|
isDisabled?: boolean;
|
|
44
40
|
/** Label for the tab list. */
|
|
45
|
-
|
|
41
|
+
"aria-label"?: string;
|
|
46
42
|
/** ID of element that labels the tab list. */
|
|
47
|
-
|
|
43
|
+
"aria-labelledby"?: string;
|
|
48
44
|
/** ID of element that describes the tab list. */
|
|
49
|
-
|
|
45
|
+
"aria-describedby"?: string;
|
|
50
46
|
}
|
|
51
47
|
|
|
52
48
|
export interface TabListAria {
|
|
53
49
|
/** Props for the tab list container element. */
|
|
54
50
|
tabListProps: {
|
|
55
|
-
role:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
role: "tablist";
|
|
52
|
+
"aria-orientation": TabOrientation;
|
|
53
|
+
"aria-label"?: string;
|
|
54
|
+
"aria-labelledby"?: string;
|
|
55
|
+
"aria-describedby"?: string;
|
|
60
56
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
61
57
|
onFocus: (e: FocusEvent) => void;
|
|
62
58
|
onBlur: (e: FocusEvent) => void;
|
|
@@ -69,18 +65,21 @@ export interface AriaTabProps {
|
|
|
69
65
|
/** Whether the tab is disabled. */
|
|
70
66
|
isDisabled?: boolean;
|
|
71
67
|
/** Label for the tab. */
|
|
72
|
-
|
|
68
|
+
"aria-label"?: string;
|
|
69
|
+
/** ID reference for the tab label. */
|
|
70
|
+
"aria-labelledby"?: string;
|
|
73
71
|
}
|
|
74
72
|
|
|
75
73
|
export interface TabAria {
|
|
76
74
|
/** Props for the tab element. */
|
|
77
75
|
tabProps: {
|
|
78
76
|
id: string;
|
|
79
|
-
role:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
role: "tab";
|
|
78
|
+
"aria-selected": boolean;
|
|
79
|
+
"aria-disabled": boolean | undefined;
|
|
80
|
+
"aria-controls": string | undefined;
|
|
81
|
+
"aria-label"?: string;
|
|
82
|
+
"aria-labelledby"?: string;
|
|
84
83
|
tabIndex: number;
|
|
85
84
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
86
85
|
onMouseDown: (e: MouseEvent) => void;
|
|
@@ -106,31 +105,27 @@ export interface AriaTabPanelProps {
|
|
|
106
105
|
/** The key of the associated tab. */
|
|
107
106
|
id?: Key;
|
|
108
107
|
/** Label for the tab panel. */
|
|
109
|
-
|
|
108
|
+
"aria-label"?: string;
|
|
110
109
|
/** ID of element that labels the tab panel. */
|
|
111
|
-
|
|
110
|
+
"aria-labelledby"?: string;
|
|
112
111
|
/** ID of element that describes the tab panel. */
|
|
113
|
-
|
|
112
|
+
"aria-describedby"?: string;
|
|
114
113
|
}
|
|
115
114
|
|
|
116
115
|
export interface TabPanelAria {
|
|
117
116
|
/** Props for the tab panel element. */
|
|
118
117
|
tabPanelProps: {
|
|
119
118
|
id: string;
|
|
120
|
-
role:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
role: "tabpanel";
|
|
120
|
+
"aria-labelledby"?: string;
|
|
121
|
+
"aria-label"?: string;
|
|
122
|
+
"aria-describedby"?: string;
|
|
124
123
|
tabIndex: number;
|
|
125
124
|
};
|
|
126
125
|
/** Whether this panel is the selected one. */
|
|
127
126
|
isSelected: Accessor<boolean>;
|
|
128
127
|
}
|
|
129
128
|
|
|
130
|
-
// ============================================
|
|
131
|
-
// ID MANAGEMENT
|
|
132
|
-
// ============================================
|
|
133
|
-
|
|
134
129
|
const tabListIds = new WeakMap<TabListState<unknown>, string>();
|
|
135
130
|
|
|
136
131
|
function getTabListId<T>(state: TabListState<T>): string {
|
|
@@ -144,23 +139,19 @@ function getTabListId<T>(state: TabListState<T>): string {
|
|
|
144
139
|
|
|
145
140
|
function generateTabId<T>(state: TabListState<T>, key: Key): string {
|
|
146
141
|
const baseId = getTabListId(state);
|
|
147
|
-
const keyStr = String(key).replace(/\s+/g,
|
|
142
|
+
const keyStr = String(key).replace(/\s+/g, "-");
|
|
148
143
|
return `${baseId}-tab-${keyStr}`;
|
|
149
144
|
}
|
|
150
145
|
|
|
151
146
|
function generateTabPanelId<T>(state: TabListState<T>, key: Key): string {
|
|
152
147
|
const baseId = getTabListId(state);
|
|
153
|
-
const keyStr = String(key).replace(/\s+/g,
|
|
148
|
+
const keyStr = String(key).replace(/\s+/g, "-");
|
|
154
149
|
return `${baseId}-tabpanel-${keyStr}`;
|
|
155
150
|
}
|
|
156
151
|
|
|
157
|
-
// ============================================
|
|
158
|
-
// KEYBOARD DELEGATE
|
|
159
|
-
// ============================================
|
|
160
|
-
|
|
161
152
|
function getNextKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
|
|
162
153
|
const coll = state.collection();
|
|
163
|
-
const keys = [...coll].map(node => node.key);
|
|
154
|
+
const keys = [...coll].map((node) => node.key);
|
|
164
155
|
const currentIndex = keys.indexOf(currentKey);
|
|
165
156
|
|
|
166
157
|
if (currentIndex === -1) return keys[0] ?? null;
|
|
@@ -179,7 +170,7 @@ function getNextKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
|
|
|
179
170
|
|
|
180
171
|
function getPreviousKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
|
|
181
172
|
const coll = state.collection();
|
|
182
|
-
const keys = [...coll].map(node => node.key);
|
|
173
|
+
const keys = [...coll].map((node) => node.key);
|
|
183
174
|
const currentIndex = keys.indexOf(currentKey);
|
|
184
175
|
|
|
185
176
|
if (currentIndex === -1) return keys[keys.length - 1] ?? null;
|
|
@@ -208,7 +199,7 @@ function getFirstKey<T>(state: TabListState<T>): Key | null {
|
|
|
208
199
|
|
|
209
200
|
function getLastKey<T>(state: TabListState<T>): Key | null {
|
|
210
201
|
const coll = state.collection();
|
|
211
|
-
const keys = [...coll].map(node => node.key).reverse();
|
|
202
|
+
const keys = [...coll].map((node) => node.key).reverse();
|
|
212
203
|
for (const key of keys) {
|
|
213
204
|
if (!state.isKeyDisabled(key)) {
|
|
214
205
|
return key;
|
|
@@ -217,20 +208,14 @@ function getLastKey<T>(state: TabListState<T>): Key | null {
|
|
|
217
208
|
return null;
|
|
218
209
|
}
|
|
219
210
|
|
|
220
|
-
// ============================================
|
|
221
|
-
// HOOKS
|
|
222
|
-
// ============================================
|
|
223
|
-
|
|
224
211
|
/**
|
|
225
212
|
* Creates ARIA props for a tab list container.
|
|
226
213
|
*/
|
|
227
|
-
export function createTabList<T>(
|
|
228
|
-
props: AriaTabListProps,
|
|
229
|
-
state: TabListState<T>
|
|
230
|
-
): TabListAria {
|
|
214
|
+
export function createTabList<T>(props: AriaTabListProps, state: TabListState<T>): TabListAria {
|
|
231
215
|
const locale = useLocale();
|
|
232
|
-
const orientation = () => props.orientation ?? state.orientation() ??
|
|
233
|
-
const keyboardActivation = () =>
|
|
216
|
+
const orientation = () => props.orientation ?? state.orientation() ?? "horizontal";
|
|
217
|
+
const keyboardActivation = () =>
|
|
218
|
+
props.keyboardActivation ?? state.keyboardActivation() ?? "automatic";
|
|
234
219
|
|
|
235
220
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
236
221
|
if (state.isDisabled()) return;
|
|
@@ -239,40 +224,40 @@ export function createTabList<T>(
|
|
|
239
224
|
if (currentKey === null) return;
|
|
240
225
|
|
|
241
226
|
let nextKey: Key | null = null;
|
|
242
|
-
const isHorizontal = orientation() ===
|
|
243
|
-
const isRTL = locale().direction ===
|
|
227
|
+
const isHorizontal = orientation() === "horizontal";
|
|
228
|
+
const isRTL = locale().direction === "rtl";
|
|
244
229
|
|
|
245
230
|
switch (e.key) {
|
|
246
|
-
case
|
|
231
|
+
case "ArrowLeft":
|
|
247
232
|
if (isHorizontal) {
|
|
248
233
|
nextKey = isRTL ? getNextKey(state, currentKey) : getPreviousKey(state, currentKey);
|
|
249
234
|
}
|
|
250
235
|
break;
|
|
251
|
-
case
|
|
236
|
+
case "ArrowRight":
|
|
252
237
|
if (isHorizontal) {
|
|
253
238
|
nextKey = isRTL ? getPreviousKey(state, currentKey) : getNextKey(state, currentKey);
|
|
254
239
|
}
|
|
255
240
|
break;
|
|
256
|
-
case
|
|
241
|
+
case "ArrowUp":
|
|
257
242
|
if (!isHorizontal) {
|
|
258
243
|
nextKey = getPreviousKey(state, currentKey);
|
|
259
244
|
}
|
|
260
245
|
break;
|
|
261
|
-
case
|
|
246
|
+
case "ArrowDown":
|
|
262
247
|
if (!isHorizontal) {
|
|
263
248
|
nextKey = getNextKey(state, currentKey);
|
|
264
249
|
}
|
|
265
250
|
break;
|
|
266
|
-
case
|
|
251
|
+
case "Home":
|
|
267
252
|
nextKey = getFirstKey(state);
|
|
268
253
|
break;
|
|
269
|
-
case
|
|
254
|
+
case "End":
|
|
270
255
|
nextKey = getLastKey(state);
|
|
271
256
|
break;
|
|
272
|
-
case
|
|
273
|
-
case
|
|
257
|
+
case "Enter":
|
|
258
|
+
case " ":
|
|
274
259
|
// In manual mode, Enter/Space activates the focused tab
|
|
275
|
-
if (keyboardActivation() ===
|
|
260
|
+
if (keyboardActivation() === "manual" && state.focusedKey()) {
|
|
276
261
|
state.setSelectedKey(state.focusedKey()!);
|
|
277
262
|
e.preventDefault();
|
|
278
263
|
}
|
|
@@ -306,11 +291,11 @@ export function createTabList<T>(
|
|
|
306
291
|
|
|
307
292
|
return {
|
|
308
293
|
tabListProps: {
|
|
309
|
-
role:
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
294
|
+
role: "tablist",
|
|
295
|
+
"aria-orientation": orientation(),
|
|
296
|
+
"aria-label": props["aria-label"],
|
|
297
|
+
"aria-labelledby": props["aria-labelledby"],
|
|
298
|
+
"aria-describedby": props["aria-describedby"],
|
|
314
299
|
onKeyDown: handleKeyDown,
|
|
315
300
|
onFocus: handleFocus,
|
|
316
301
|
onBlur: handleBlur,
|
|
@@ -324,7 +309,7 @@ export function createTabList<T>(
|
|
|
324
309
|
export function createTab<T>(
|
|
325
310
|
props: AriaTabProps,
|
|
326
311
|
state: TabListState<T>,
|
|
327
|
-
ref?: Accessor<HTMLElement | null
|
|
312
|
+
ref?: Accessor<HTMLElement | null>,
|
|
328
313
|
): TabAria {
|
|
329
314
|
const key = () => props.key;
|
|
330
315
|
|
|
@@ -350,7 +335,7 @@ export function createTab<T>(
|
|
|
350
335
|
|
|
351
336
|
state.setFocusedKey(tabKey);
|
|
352
337
|
|
|
353
|
-
if (state.keyboardActivation() ===
|
|
338
|
+
if (state.keyboardActivation() === "manual" || wasSelected) {
|
|
354
339
|
state.setSelectedKey(tabKey);
|
|
355
340
|
}
|
|
356
341
|
},
|
|
@@ -369,15 +354,11 @@ export function createTab<T>(
|
|
|
369
354
|
|
|
370
355
|
// Helper to safely call event handlers that may be bound tuples
|
|
371
356
|
const callHandler = <E extends Event>(handler: unknown, event: E) => {
|
|
372
|
-
if (typeof handler ===
|
|
357
|
+
if (typeof handler === "function") {
|
|
373
358
|
(handler as (e: E) => void)(event);
|
|
374
359
|
return;
|
|
375
360
|
}
|
|
376
|
-
if (
|
|
377
|
-
Array.isArray(handler) &&
|
|
378
|
-
handler.length >= 2 &&
|
|
379
|
-
typeof handler[1] === 'function'
|
|
380
|
-
) {
|
|
361
|
+
if (Array.isArray(handler) && handler.length >= 2 && typeof handler[1] === "function") {
|
|
381
362
|
(handler[1] as (this: unknown, e: E) => void).call(handler[0], event);
|
|
382
363
|
}
|
|
383
364
|
};
|
|
@@ -419,17 +400,18 @@ export function createTab<T>(
|
|
|
419
400
|
return {
|
|
420
401
|
tabProps: {
|
|
421
402
|
id: tabId,
|
|
422
|
-
role:
|
|
423
|
-
get
|
|
403
|
+
role: "tab",
|
|
404
|
+
get "aria-selected"() {
|
|
424
405
|
return isSelected();
|
|
425
406
|
},
|
|
426
|
-
get
|
|
407
|
+
get "aria-disabled"() {
|
|
427
408
|
return isDisabled() || undefined;
|
|
428
409
|
},
|
|
429
|
-
get
|
|
410
|
+
get "aria-controls"() {
|
|
430
411
|
return isSelected() ? tabPanelId : undefined;
|
|
431
412
|
},
|
|
432
|
-
|
|
413
|
+
"aria-label": props["aria-label"],
|
|
414
|
+
"aria-labelledby": props["aria-labelledby"],
|
|
433
415
|
get tabIndex() {
|
|
434
416
|
return isSelected() && !isDisabled() ? 0 : -1;
|
|
435
417
|
},
|
|
@@ -453,7 +435,7 @@ export function createTab<T>(
|
|
|
453
435
|
*/
|
|
454
436
|
export function createTabPanel<T>(
|
|
455
437
|
props: AriaTabPanelProps,
|
|
456
|
-
state: TabListState<T> | null
|
|
438
|
+
state: TabListState<T> | null,
|
|
457
439
|
): TabPanelAria {
|
|
458
440
|
const fallbackId = createId();
|
|
459
441
|
|
|
@@ -482,17 +464,17 @@ export function createTabPanel<T>(
|
|
|
482
464
|
}
|
|
483
465
|
return fallbackId;
|
|
484
466
|
},
|
|
485
|
-
role:
|
|
486
|
-
get
|
|
487
|
-
if (props[
|
|
467
|
+
role: "tabpanel",
|
|
468
|
+
get "aria-labelledby"() {
|
|
469
|
+
if (props["aria-labelledby"]) return props["aria-labelledby"];
|
|
488
470
|
const key = associatedKey();
|
|
489
471
|
if (state && key !== null) {
|
|
490
472
|
return generateTabId(state, key);
|
|
491
473
|
}
|
|
492
474
|
return undefined;
|
|
493
475
|
},
|
|
494
|
-
|
|
495
|
-
|
|
476
|
+
"aria-label": props["aria-label"],
|
|
477
|
+
"aria-describedby": props["aria-describedby"],
|
|
496
478
|
// Make panel focusable if no tabbable children
|
|
497
479
|
tabIndex: 0,
|
|
498
480
|
},
|
package/src/tabs/index.ts
CHANGED
package/src/tag/createTag.ts
CHANGED
|
@@ -7,19 +7,15 @@
|
|
|
7
7
|
* Based on @react-aria/tag useTag
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { createMemo } from
|
|
11
|
-
import { createFocusable } from
|
|
12
|
-
import { createPress } from
|
|
13
|
-
import { filterDOMProps } from
|
|
14
|
-
import { mergeProps } from
|
|
15
|
-
import { createId } from
|
|
16
|
-
import { access, type MaybeAccessor } from
|
|
17
|
-
import { getTagGroupData } from
|
|
18
|
-
import type { ListState, Key } from
|
|
19
|
-
|
|
20
|
-
// ============================================
|
|
21
|
-
// TYPES
|
|
22
|
-
// ============================================
|
|
10
|
+
import { createMemo } from "solid-js";
|
|
11
|
+
import { createFocusable } from "../interactions/createFocusable";
|
|
12
|
+
import { createPress } from "../interactions/createPress";
|
|
13
|
+
import { filterDOMProps } from "../utils/filterDOMProps";
|
|
14
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
15
|
+
import { createId } from "../ssr";
|
|
16
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
17
|
+
import { getTagGroupData } from "./createTagGroup";
|
|
18
|
+
import type { ListState, Key } from "@proyecto-viviana/solid-stately";
|
|
23
19
|
|
|
24
20
|
export interface AriaTagProps {
|
|
25
21
|
/** The unique key for this tag. */
|
|
@@ -49,10 +45,6 @@ export interface TagAria {
|
|
|
49
45
|
isPressed: boolean;
|
|
50
46
|
}
|
|
51
47
|
|
|
52
|
-
// ============================================
|
|
53
|
-
// IMPLEMENTATION
|
|
54
|
-
// ============================================
|
|
55
|
-
|
|
56
48
|
/**
|
|
57
49
|
* Provides the behavior and accessibility implementation for a tag component.
|
|
58
50
|
* Tags are individual items within a TagGroup.
|
|
@@ -60,7 +52,7 @@ export interface TagAria {
|
|
|
60
52
|
export function createTag<T>(
|
|
61
53
|
props: MaybeAccessor<AriaTagProps>,
|
|
62
54
|
state: ListState<T>,
|
|
63
|
-
ref: () => HTMLElement | null
|
|
55
|
+
ref: () => HTMLElement | null,
|
|
64
56
|
): TagAria {
|
|
65
57
|
const getProps = () => access(props);
|
|
66
58
|
const rowId = createId();
|
|
@@ -83,7 +75,7 @@ export function createTag<T>(
|
|
|
83
75
|
return state.isSelected(key());
|
|
84
76
|
});
|
|
85
77
|
|
|
86
|
-
const isSelectable = createMemo(() => state.selectionMode() !==
|
|
78
|
+
const isSelectable = createMemo(() => state.selectionMode() !== "none");
|
|
87
79
|
|
|
88
80
|
const isFocused = createMemo(() => {
|
|
89
81
|
return state.focusedKey() === key();
|
|
@@ -157,8 +149,9 @@ export function createTag<T>(
|
|
|
157
149
|
return;
|
|
158
150
|
}
|
|
159
151
|
|
|
160
|
-
const nextTag = Array.from(tagList.querySelectorAll<HTMLElement>('[role="
|
|
161
|
-
|
|
152
|
+
const nextTag = Array.from(tagList.querySelectorAll<HTMLElement>('[role="row"]')).find(
|
|
153
|
+
(el) => el.getAttribute("data-key") === String(nextKey),
|
|
154
|
+
);
|
|
162
155
|
|
|
163
156
|
nextTag?.focus();
|
|
164
157
|
};
|
|
@@ -175,33 +168,36 @@ export function createTag<T>(
|
|
|
175
168
|
});
|
|
176
169
|
|
|
177
170
|
// Handle focusable
|
|
178
|
-
const { focusableProps } = createFocusable(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
171
|
+
const { focusableProps } = createFocusable(
|
|
172
|
+
{
|
|
173
|
+
isDisabled,
|
|
174
|
+
onFocus: () => {
|
|
175
|
+
state.setFocusedKey(key());
|
|
176
|
+
},
|
|
182
177
|
},
|
|
183
|
-
|
|
178
|
+
ref,
|
|
179
|
+
);
|
|
184
180
|
|
|
185
181
|
// Handle keyboard for navigation and removal
|
|
186
182
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
187
183
|
if (isDisabled()) return;
|
|
188
184
|
|
|
189
185
|
switch (e.key) {
|
|
190
|
-
case
|
|
191
|
-
case
|
|
186
|
+
case "ArrowRight":
|
|
187
|
+
case "ArrowDown":
|
|
192
188
|
e.preventDefault();
|
|
193
189
|
focusKey(getNextFocusableKey(key()));
|
|
194
190
|
return;
|
|
195
|
-
case
|
|
196
|
-
case
|
|
191
|
+
case "ArrowLeft":
|
|
192
|
+
case "ArrowUp":
|
|
197
193
|
e.preventDefault();
|
|
198
194
|
focusKey(getPreviousFocusableKey(key()));
|
|
199
195
|
return;
|
|
200
|
-
case
|
|
196
|
+
case "Home":
|
|
201
197
|
e.preventDefault();
|
|
202
198
|
focusKey(getFirstFocusableKey());
|
|
203
199
|
return;
|
|
204
|
-
case
|
|
200
|
+
case "End":
|
|
205
201
|
e.preventDefault();
|
|
206
202
|
focusKey(getLastFocusableKey());
|
|
207
203
|
return;
|
|
@@ -209,16 +205,17 @@ export function createTag<T>(
|
|
|
209
205
|
break;
|
|
210
206
|
}
|
|
211
207
|
|
|
212
|
-
if (e.key ===
|
|
208
|
+
if (e.key === "Delete" || e.key === "Backspace") {
|
|
213
209
|
e.preventDefault();
|
|
214
210
|
const data = getData();
|
|
215
211
|
if (data?.onRemove) {
|
|
216
212
|
// Remove selected keys if this tag is selected, otherwise just this tag
|
|
217
213
|
if (isSelected()) {
|
|
218
214
|
const selection = state.selectedKeys();
|
|
219
|
-
const keysToRemove =
|
|
220
|
-
|
|
221
|
-
|
|
215
|
+
const keysToRemove =
|
|
216
|
+
selection === "all"
|
|
217
|
+
? new Set(Array.from(state.collection()).map((item) => (item as { key: Key }).key))
|
|
218
|
+
: new Set(selection);
|
|
222
219
|
data.onRemove(keysToRemove);
|
|
223
220
|
} else {
|
|
224
221
|
data.onRemove(new Set([key()]));
|
|
@@ -242,7 +239,7 @@ export function createTag<T>(
|
|
|
242
239
|
const collection = state.collection();
|
|
243
240
|
let defaultTabStop: Key | null = null;
|
|
244
241
|
|
|
245
|
-
if (state.selectionMode() !==
|
|
242
|
+
if (state.selectionMode() !== "none") {
|
|
246
243
|
for (const item of collection) {
|
|
247
244
|
if (!state.isDisabled(item.key) && state.isSelected(item.key)) {
|
|
248
245
|
defaultTabStop = item.key;
|
|
@@ -273,29 +270,34 @@ export function createTag<T>(
|
|
|
273
270
|
|
|
274
271
|
return {
|
|
275
272
|
get rowProps() {
|
|
276
|
-
return mergeProps(
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
273
|
+
return mergeProps(
|
|
274
|
+
domProps(),
|
|
275
|
+
focusableProps as Record<string, unknown>,
|
|
276
|
+
pressProps as Record<string, unknown>,
|
|
277
|
+
{
|
|
278
|
+
id: rowId,
|
|
279
|
+
role: "row",
|
|
280
|
+
tabIndex: tabIndex(),
|
|
281
|
+
"data-key": String(key()),
|
|
282
|
+
"aria-selected": isSelectable() ? isSelected() : undefined,
|
|
283
|
+
"aria-disabled": isDisabled() || undefined,
|
|
284
|
+
onKeyDown: handleKeyDown,
|
|
285
|
+
},
|
|
286
|
+
);
|
|
285
287
|
},
|
|
286
288
|
get gridCellProps() {
|
|
287
289
|
return {
|
|
288
290
|
id: cellId,
|
|
289
|
-
role:
|
|
290
|
-
|
|
291
|
+
role: "gridcell",
|
|
292
|
+
"aria-describedby": allowsRemoving() ? removeButtonId : undefined,
|
|
291
293
|
};
|
|
292
294
|
},
|
|
293
295
|
get removeButtonProps() {
|
|
294
296
|
const data = getData();
|
|
295
297
|
return {
|
|
296
298
|
id: removeButtonId,
|
|
297
|
-
|
|
298
|
-
|
|
299
|
+
"aria-label": "Remove",
|
|
300
|
+
"aria-labelledby": `${removeButtonId} ${rowId}`,
|
|
299
301
|
isDisabled: isDisabled(),
|
|
300
302
|
onPress: () => {
|
|
301
303
|
if (data?.onRemove && !isDisabled()) {
|