@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
package/src/tabs/createTabs.ts
CHANGED
|
@@ -3,19 +3,16 @@
|
|
|
3
3
|
* Based on @react-aria/tabs.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { type Accessor,
|
|
7
|
-
import { createFocusRing } from
|
|
8
|
-
import { createPress } from
|
|
9
|
-
import { createHover } from
|
|
10
|
-
import { createId } from
|
|
11
|
-
import
|
|
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";
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// ============================================
|
|
16
|
-
|
|
17
|
-
export type TabOrientation = 'horizontal' | 'vertical';
|
|
18
|
-
export type KeyboardActivation = 'automatic' | 'manual';
|
|
14
|
+
export type TabOrientation = "horizontal" | "vertical";
|
|
15
|
+
export type KeyboardActivation = "automatic" | "manual";
|
|
19
16
|
|
|
20
17
|
export interface TabListState<T = unknown> {
|
|
21
18
|
collection: Accessor<Collection<T>>;
|
|
@@ -41,21 +38,21 @@ export interface AriaTabListProps {
|
|
|
41
38
|
/** Whether the tab list is disabled. */
|
|
42
39
|
isDisabled?: boolean;
|
|
43
40
|
/** Label for the tab list. */
|
|
44
|
-
|
|
41
|
+
"aria-label"?: string;
|
|
45
42
|
/** ID of element that labels the tab list. */
|
|
46
|
-
|
|
43
|
+
"aria-labelledby"?: string;
|
|
47
44
|
/** ID of element that describes the tab list. */
|
|
48
|
-
|
|
45
|
+
"aria-describedby"?: string;
|
|
49
46
|
}
|
|
50
47
|
|
|
51
48
|
export interface TabListAria {
|
|
52
49
|
/** Props for the tab list container element. */
|
|
53
50
|
tabListProps: {
|
|
54
|
-
role:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
role: "tablist";
|
|
52
|
+
"aria-orientation": TabOrientation;
|
|
53
|
+
"aria-label"?: string;
|
|
54
|
+
"aria-labelledby"?: string;
|
|
55
|
+
"aria-describedby"?: string;
|
|
59
56
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
60
57
|
onFocus: (e: FocusEvent) => void;
|
|
61
58
|
onBlur: (e: FocusEvent) => void;
|
|
@@ -68,18 +65,21 @@ export interface AriaTabProps {
|
|
|
68
65
|
/** Whether the tab is disabled. */
|
|
69
66
|
isDisabled?: boolean;
|
|
70
67
|
/** Label for the tab. */
|
|
71
|
-
|
|
68
|
+
"aria-label"?: string;
|
|
69
|
+
/** ID reference for the tab label. */
|
|
70
|
+
"aria-labelledby"?: string;
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
export interface TabAria {
|
|
75
74
|
/** Props for the tab element. */
|
|
76
75
|
tabProps: {
|
|
77
76
|
id: string;
|
|
78
|
-
role:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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;
|
|
83
83
|
tabIndex: number;
|
|
84
84
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
85
85
|
onMouseDown: (e: MouseEvent) => void;
|
|
@@ -105,31 +105,27 @@ export interface AriaTabPanelProps {
|
|
|
105
105
|
/** The key of the associated tab. */
|
|
106
106
|
id?: Key;
|
|
107
107
|
/** Label for the tab panel. */
|
|
108
|
-
|
|
108
|
+
"aria-label"?: string;
|
|
109
109
|
/** ID of element that labels the tab panel. */
|
|
110
|
-
|
|
110
|
+
"aria-labelledby"?: string;
|
|
111
111
|
/** ID of element that describes the tab panel. */
|
|
112
|
-
|
|
112
|
+
"aria-describedby"?: string;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
export interface TabPanelAria {
|
|
116
116
|
/** Props for the tab panel element. */
|
|
117
117
|
tabPanelProps: {
|
|
118
118
|
id: string;
|
|
119
|
-
role:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
role: "tabpanel";
|
|
120
|
+
"aria-labelledby"?: string;
|
|
121
|
+
"aria-label"?: string;
|
|
122
|
+
"aria-describedby"?: string;
|
|
123
123
|
tabIndex: number;
|
|
124
124
|
};
|
|
125
125
|
/** Whether this panel is the selected one. */
|
|
126
126
|
isSelected: Accessor<boolean>;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
// ============================================
|
|
130
|
-
// ID MANAGEMENT
|
|
131
|
-
// ============================================
|
|
132
|
-
|
|
133
129
|
const tabListIds = new WeakMap<TabListState<unknown>, string>();
|
|
134
130
|
|
|
135
131
|
function getTabListId<T>(state: TabListState<T>): string {
|
|
@@ -143,23 +139,19 @@ function getTabListId<T>(state: TabListState<T>): string {
|
|
|
143
139
|
|
|
144
140
|
function generateTabId<T>(state: TabListState<T>, key: Key): string {
|
|
145
141
|
const baseId = getTabListId(state);
|
|
146
|
-
const keyStr = String(key).replace(/\s+/g,
|
|
142
|
+
const keyStr = String(key).replace(/\s+/g, "-");
|
|
147
143
|
return `${baseId}-tab-${keyStr}`;
|
|
148
144
|
}
|
|
149
145
|
|
|
150
146
|
function generateTabPanelId<T>(state: TabListState<T>, key: Key): string {
|
|
151
147
|
const baseId = getTabListId(state);
|
|
152
|
-
const keyStr = String(key).replace(/\s+/g,
|
|
148
|
+
const keyStr = String(key).replace(/\s+/g, "-");
|
|
153
149
|
return `${baseId}-tabpanel-${keyStr}`;
|
|
154
150
|
}
|
|
155
151
|
|
|
156
|
-
// ============================================
|
|
157
|
-
// KEYBOARD DELEGATE
|
|
158
|
-
// ============================================
|
|
159
|
-
|
|
160
152
|
function getNextKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
|
|
161
153
|
const coll = state.collection();
|
|
162
|
-
const keys = [...coll].map(node => node.key);
|
|
154
|
+
const keys = [...coll].map((node) => node.key);
|
|
163
155
|
const currentIndex = keys.indexOf(currentKey);
|
|
164
156
|
|
|
165
157
|
if (currentIndex === -1) return keys[0] ?? null;
|
|
@@ -178,7 +170,7 @@ function getNextKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
|
|
|
178
170
|
|
|
179
171
|
function getPreviousKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
|
|
180
172
|
const coll = state.collection();
|
|
181
|
-
const keys = [...coll].map(node => node.key);
|
|
173
|
+
const keys = [...coll].map((node) => node.key);
|
|
182
174
|
const currentIndex = keys.indexOf(currentKey);
|
|
183
175
|
|
|
184
176
|
if (currentIndex === -1) return keys[keys.length - 1] ?? null;
|
|
@@ -207,7 +199,7 @@ function getFirstKey<T>(state: TabListState<T>): Key | null {
|
|
|
207
199
|
|
|
208
200
|
function getLastKey<T>(state: TabListState<T>): Key | null {
|
|
209
201
|
const coll = state.collection();
|
|
210
|
-
const keys = [...coll].map(node => node.key).reverse();
|
|
202
|
+
const keys = [...coll].map((node) => node.key).reverse();
|
|
211
203
|
for (const key of keys) {
|
|
212
204
|
if (!state.isKeyDisabled(key)) {
|
|
213
205
|
return key;
|
|
@@ -216,19 +208,14 @@ function getLastKey<T>(state: TabListState<T>): Key | null {
|
|
|
216
208
|
return null;
|
|
217
209
|
}
|
|
218
210
|
|
|
219
|
-
// ============================================
|
|
220
|
-
// HOOKS
|
|
221
|
-
// ============================================
|
|
222
|
-
|
|
223
211
|
/**
|
|
224
212
|
* Creates ARIA props for a tab list container.
|
|
225
213
|
*/
|
|
226
|
-
export function createTabList<T>(
|
|
227
|
-
|
|
228
|
-
state
|
|
229
|
-
)
|
|
230
|
-
|
|
231
|
-
const keyboardActivation = () => props.keyboardActivation ?? state.keyboardActivation() ?? 'automatic';
|
|
214
|
+
export function createTabList<T>(props: AriaTabListProps, state: TabListState<T>): TabListAria {
|
|
215
|
+
const locale = useLocale();
|
|
216
|
+
const orientation = () => props.orientation ?? state.orientation() ?? "horizontal";
|
|
217
|
+
const keyboardActivation = () =>
|
|
218
|
+
props.keyboardActivation ?? state.keyboardActivation() ?? "automatic";
|
|
232
219
|
|
|
233
220
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
234
221
|
if (state.isDisabled()) return;
|
|
@@ -237,40 +224,40 @@ export function createTabList<T>(
|
|
|
237
224
|
if (currentKey === null) return;
|
|
238
225
|
|
|
239
226
|
let nextKey: Key | null = null;
|
|
240
|
-
const isHorizontal = orientation() ===
|
|
227
|
+
const isHorizontal = orientation() === "horizontal";
|
|
228
|
+
const isRTL = locale().direction === "rtl";
|
|
241
229
|
|
|
242
230
|
switch (e.key) {
|
|
243
|
-
case
|
|
231
|
+
case "ArrowLeft":
|
|
244
232
|
if (isHorizontal) {
|
|
245
|
-
|
|
246
|
-
nextKey = getPreviousKey(state, currentKey);
|
|
233
|
+
nextKey = isRTL ? getNextKey(state, currentKey) : getPreviousKey(state, currentKey);
|
|
247
234
|
}
|
|
248
235
|
break;
|
|
249
|
-
case
|
|
236
|
+
case "ArrowRight":
|
|
250
237
|
if (isHorizontal) {
|
|
251
|
-
nextKey = getNextKey(state, currentKey);
|
|
238
|
+
nextKey = isRTL ? getPreviousKey(state, currentKey) : getNextKey(state, currentKey);
|
|
252
239
|
}
|
|
253
240
|
break;
|
|
254
|
-
case
|
|
241
|
+
case "ArrowUp":
|
|
255
242
|
if (!isHorizontal) {
|
|
256
243
|
nextKey = getPreviousKey(state, currentKey);
|
|
257
244
|
}
|
|
258
245
|
break;
|
|
259
|
-
case
|
|
246
|
+
case "ArrowDown":
|
|
260
247
|
if (!isHorizontal) {
|
|
261
248
|
nextKey = getNextKey(state, currentKey);
|
|
262
249
|
}
|
|
263
250
|
break;
|
|
264
|
-
case
|
|
251
|
+
case "Home":
|
|
265
252
|
nextKey = getFirstKey(state);
|
|
266
253
|
break;
|
|
267
|
-
case
|
|
254
|
+
case "End":
|
|
268
255
|
nextKey = getLastKey(state);
|
|
269
256
|
break;
|
|
270
|
-
case
|
|
271
|
-
case
|
|
257
|
+
case "Enter":
|
|
258
|
+
case " ":
|
|
272
259
|
// In manual mode, Enter/Space activates the focused tab
|
|
273
|
-
if (keyboardActivation() ===
|
|
260
|
+
if (keyboardActivation() === "manual" && state.focusedKey()) {
|
|
274
261
|
state.setSelectedKey(state.focusedKey()!);
|
|
275
262
|
e.preventDefault();
|
|
276
263
|
}
|
|
@@ -282,11 +269,6 @@ export function createTabList<T>(
|
|
|
282
269
|
if (nextKey !== null) {
|
|
283
270
|
e.preventDefault();
|
|
284
271
|
state.setFocusedKey(nextKey);
|
|
285
|
-
|
|
286
|
-
// In automatic mode, selection follows focus
|
|
287
|
-
if (keyboardActivation() === 'automatic') {
|
|
288
|
-
state.setSelectedKey(nextKey);
|
|
289
|
-
}
|
|
290
272
|
}
|
|
291
273
|
};
|
|
292
274
|
|
|
@@ -309,11 +291,11 @@ export function createTabList<T>(
|
|
|
309
291
|
|
|
310
292
|
return {
|
|
311
293
|
tabListProps: {
|
|
312
|
-
role:
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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"],
|
|
317
299
|
onKeyDown: handleKeyDown,
|
|
318
300
|
onFocus: handleFocus,
|
|
319
301
|
onBlur: handleBlur,
|
|
@@ -327,7 +309,7 @@ export function createTabList<T>(
|
|
|
327
309
|
export function createTab<T>(
|
|
328
310
|
props: AriaTabProps,
|
|
329
311
|
state: TabListState<T>,
|
|
330
|
-
ref?: Accessor<HTMLElement | null
|
|
312
|
+
ref?: Accessor<HTMLElement | null>,
|
|
331
313
|
): TabAria {
|
|
332
314
|
const key = () => props.key;
|
|
333
315
|
|
|
@@ -348,8 +330,14 @@ export function createTab<T>(
|
|
|
348
330
|
return isDisabled();
|
|
349
331
|
},
|
|
350
332
|
onPress: () => {
|
|
351
|
-
|
|
352
|
-
state.
|
|
333
|
+
const tabKey = key();
|
|
334
|
+
const wasSelected = state.selectedKey() === tabKey;
|
|
335
|
+
|
|
336
|
+
state.setFocusedKey(tabKey);
|
|
337
|
+
|
|
338
|
+
if (state.keyboardActivation() === "manual" || wasSelected) {
|
|
339
|
+
state.setSelectedKey(tabKey);
|
|
340
|
+
}
|
|
353
341
|
},
|
|
354
342
|
});
|
|
355
343
|
|
|
@@ -365,60 +353,68 @@ export function createTab<T>(
|
|
|
365
353
|
const tabPanelId = generateTabPanelId(state, key());
|
|
366
354
|
|
|
367
355
|
// Helper to safely call event handlers that may be bound tuples
|
|
368
|
-
const callHandler = <E extends Event>(
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
if (Array.isArray(handler)) {
|
|
374
|
-
handler[1].call(handler[0], event);
|
|
375
|
-
} else {
|
|
376
|
-
handler(event);
|
|
356
|
+
const callHandler = <E extends Event>(handler: unknown, event: E) => {
|
|
357
|
+
if (typeof handler === "function") {
|
|
358
|
+
(handler as (e: E) => void)(event);
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
if (Array.isArray(handler) && handler.length >= 2 && typeof handler[1] === "function") {
|
|
362
|
+
(handler[1] as (this: unknown, e: E) => void).call(handler[0], event);
|
|
377
363
|
}
|
|
378
364
|
};
|
|
379
365
|
|
|
380
366
|
// Focus management
|
|
381
367
|
const handleFocus = (e: FocusEvent) => {
|
|
382
368
|
state.setFocusedKey(key());
|
|
383
|
-
callHandler(focusProps.onFocus
|
|
369
|
+
callHandler(focusProps.onFocus, e);
|
|
384
370
|
};
|
|
385
371
|
|
|
386
372
|
// Combine all handlers
|
|
387
373
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
388
|
-
callHandler(pressProps.onKeyDown
|
|
374
|
+
callHandler(pressProps.onKeyDown, e);
|
|
389
375
|
};
|
|
390
376
|
|
|
391
377
|
const handleMouseDown = (e: MouseEvent) => {
|
|
392
|
-
callHandler(pressProps.onMouseDown
|
|
378
|
+
callHandler(pressProps.onMouseDown, e);
|
|
393
379
|
};
|
|
394
380
|
|
|
395
381
|
const handlePointerDown = (e: PointerEvent) => {
|
|
396
|
-
callHandler(pressProps.onPointerDown
|
|
382
|
+
callHandler(pressProps.onPointerDown, e);
|
|
397
383
|
};
|
|
398
384
|
|
|
399
385
|
const handleClick = (e: MouseEvent) => {
|
|
400
|
-
callHandler(pressProps.onClick
|
|
386
|
+
callHandler(pressProps.onClick, e);
|
|
401
387
|
};
|
|
402
388
|
|
|
403
|
-
//
|
|
404
|
-
|
|
405
|
-
const
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
389
|
+
// Keep DOM focus aligned with focusedKey updates from keyboard delegate.
|
|
390
|
+
createEffect(() => {
|
|
391
|
+
const element = ref?.();
|
|
392
|
+
if (!isFocused() || !element) return;
|
|
393
|
+
|
|
394
|
+
const activeElement = element.ownerDocument?.activeElement;
|
|
395
|
+
if (activeElement !== element) {
|
|
396
|
+
element.focus();
|
|
397
|
+
}
|
|
411
398
|
});
|
|
412
399
|
|
|
413
400
|
return {
|
|
414
401
|
tabProps: {
|
|
415
402
|
id: tabId,
|
|
416
|
-
role:
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
403
|
+
role: "tab",
|
|
404
|
+
get "aria-selected"() {
|
|
405
|
+
return isSelected();
|
|
406
|
+
},
|
|
407
|
+
get "aria-disabled"() {
|
|
408
|
+
return isDisabled() || undefined;
|
|
409
|
+
},
|
|
410
|
+
get "aria-controls"() {
|
|
411
|
+
return isSelected() ? tabPanelId : undefined;
|
|
412
|
+
},
|
|
413
|
+
"aria-label": props["aria-label"],
|
|
414
|
+
"aria-labelledby": props["aria-labelledby"],
|
|
415
|
+
get tabIndex() {
|
|
416
|
+
return isSelected() && !isDisabled() ? 0 : -1;
|
|
417
|
+
},
|
|
422
418
|
onKeyDown: handleKeyDown,
|
|
423
419
|
onMouseDown: handleMouseDown,
|
|
424
420
|
onPointerDown: handlePointerDown,
|
|
@@ -439,31 +435,46 @@ export function createTab<T>(
|
|
|
439
435
|
*/
|
|
440
436
|
export function createTabPanel<T>(
|
|
441
437
|
props: AriaTabPanelProps,
|
|
442
|
-
state: TabListState<T> | null
|
|
438
|
+
state: TabListState<T> | null,
|
|
443
439
|
): TabPanelAria {
|
|
444
|
-
|
|
440
|
+
const fallbackId = createId();
|
|
441
|
+
|
|
442
|
+
// Shared panel pattern: if no explicit id is provided, associate the panel
|
|
443
|
+
// with the currently selected tab.
|
|
444
|
+
const associatedKey = createMemo<Key | null>(() => {
|
|
445
|
+
if (state === null) return null;
|
|
446
|
+
return props.id ?? state.selectedKey();
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
// If state is null, the panel is always visible (SSR fallback).
|
|
445
450
|
const isSelected = createMemo(() => {
|
|
446
451
|
if (state === null) return true;
|
|
447
|
-
if (props.id === undefined)
|
|
452
|
+
if (props.id === undefined) {
|
|
453
|
+
return state.selectedKey() !== null;
|
|
454
|
+
}
|
|
448
455
|
return state.selectedKey() === props.id;
|
|
449
456
|
});
|
|
450
457
|
|
|
451
|
-
// Generate IDs based on the associated tab key
|
|
452
|
-
const tabPanelId = state && props.id !== undefined
|
|
453
|
-
? generateTabPanelId(state, props.id)
|
|
454
|
-
: createId();
|
|
455
|
-
|
|
456
|
-
const tabId = state && props.id !== undefined
|
|
457
|
-
? generateTabId(state, props.id)
|
|
458
|
-
: '';
|
|
459
|
-
|
|
460
458
|
return {
|
|
461
459
|
tabPanelProps: {
|
|
462
|
-
id
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
460
|
+
get id() {
|
|
461
|
+
const key = associatedKey();
|
|
462
|
+
if (state && key !== null) {
|
|
463
|
+
return generateTabPanelId(state, key);
|
|
464
|
+
}
|
|
465
|
+
return fallbackId;
|
|
466
|
+
},
|
|
467
|
+
role: "tabpanel",
|
|
468
|
+
get "aria-labelledby"() {
|
|
469
|
+
if (props["aria-labelledby"]) return props["aria-labelledby"];
|
|
470
|
+
const key = associatedKey();
|
|
471
|
+
if (state && key !== null) {
|
|
472
|
+
return generateTabId(state, key);
|
|
473
|
+
}
|
|
474
|
+
return undefined;
|
|
475
|
+
},
|
|
476
|
+
"aria-label": props["aria-label"],
|
|
477
|
+
"aria-describedby": props["aria-describedby"],
|
|
467
478
|
// Make panel focusable if no tabbable children
|
|
468
479
|
tabIndex: 0,
|
|
469
480
|
},
|
package/src/tabs/index.ts
CHANGED