@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
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Accessor } from
|
|
2
|
-
import { createPress } from
|
|
3
|
-
import { createFocusable } from
|
|
4
|
-
import { mergeProps, filterDOMProps } from
|
|
5
|
-
import type { AriaButtonProps, ButtonAria } from
|
|
1
|
+
import { Accessor } from "solid-js";
|
|
2
|
+
import { createPress } from "../interactions";
|
|
3
|
+
import { createFocusable } from "../interactions";
|
|
4
|
+
import { mergeProps, filterDOMProps } from "../utils";
|
|
5
|
+
import type { AriaButtonProps, ButtonAria } from "./types";
|
|
6
6
|
|
|
7
7
|
function isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): boolean {
|
|
8
|
-
if (typeof isDisabled ===
|
|
8
|
+
if (typeof isDisabled === "function") {
|
|
9
9
|
return isDisabled();
|
|
10
10
|
}
|
|
11
11
|
return isDisabled ?? false;
|
|
@@ -38,101 +38,130 @@ function isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): b
|
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
40
|
export function createButton(props: AriaButtonProps = {}): ButtonAria {
|
|
41
|
-
const elementType = props.elementType ??
|
|
41
|
+
const elementType = props.elementType ?? "button";
|
|
42
|
+
const isDisabled = () => isDisabledValue(props.isDisabled);
|
|
42
43
|
|
|
43
44
|
const { pressProps, isPressed } = createPress({
|
|
44
|
-
isDisabled
|
|
45
|
-
onPress: props.onPress,
|
|
46
|
-
onPressStart: props.onPressStart,
|
|
47
|
-
onPressEnd: props.onPressEnd,
|
|
48
|
-
onPressUp: props.onPressUp,
|
|
49
|
-
onPressChange: props.onPressChange,
|
|
50
|
-
onClick: props.onClick,
|
|
51
|
-
preventFocusOnPress
|
|
45
|
+
isDisabled,
|
|
46
|
+
onPress: (event) => props.onPress?.(event),
|
|
47
|
+
onPressStart: (event) => props.onPressStart?.(event),
|
|
48
|
+
onPressEnd: (event) => props.onPressEnd?.(event),
|
|
49
|
+
onPressUp: (event) => props.onPressUp?.(event),
|
|
50
|
+
onPressChange: (pressed) => props.onPressChange?.(pressed),
|
|
51
|
+
onClick: (event) => props.onClick?.(event),
|
|
52
|
+
get preventFocusOnPress() {
|
|
53
|
+
return props.preventFocusOnPress;
|
|
54
|
+
},
|
|
52
55
|
});
|
|
53
56
|
|
|
54
57
|
const { focusableProps } = createFocusable({
|
|
55
|
-
isDisabled
|
|
58
|
+
isDisabled,
|
|
56
59
|
autoFocus: props.autoFocus,
|
|
57
60
|
excludeFromTabOrder: props.excludeFromTabOrder,
|
|
58
61
|
});
|
|
59
62
|
|
|
60
|
-
const isNativeButton = elementType ===
|
|
61
|
-
const isLink = elementType ===
|
|
62
|
-
const disabled = isDisabledValue(props.isDisabled);
|
|
63
|
+
const isNativeButton = elementType === "button";
|
|
64
|
+
const isLink = elementType === "a";
|
|
63
65
|
|
|
64
66
|
// Handle allowFocusWhenDisabled - set tabIndex to -1 when disabled but focusable
|
|
65
67
|
// This allows tooltips to be shown on disabled buttons
|
|
66
|
-
if (props.allowFocusWhenDisabled
|
|
67
|
-
(focusableProps
|
|
68
|
+
if (props.allowFocusWhenDisabled) {
|
|
69
|
+
Object.defineProperty(focusableProps, "tabIndex", {
|
|
70
|
+
enumerable: true,
|
|
71
|
+
configurable: true,
|
|
72
|
+
get() {
|
|
73
|
+
return isDisabled() ? -1 : props.excludeFromTabOrder ? -1 : 0;
|
|
74
|
+
},
|
|
75
|
+
});
|
|
68
76
|
}
|
|
69
77
|
|
|
70
|
-
// Build base props based on element type
|
|
71
78
|
let additionalProps: Record<string, unknown> = {};
|
|
72
79
|
|
|
73
80
|
if (isNativeButton) {
|
|
74
81
|
additionalProps = {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
get type() {
|
|
83
|
+
return props.type ?? "button";
|
|
84
|
+
},
|
|
85
|
+
get disabled() {
|
|
86
|
+
return isDisabled();
|
|
87
|
+
},
|
|
88
|
+
get form() {
|
|
89
|
+
return props.form;
|
|
90
|
+
},
|
|
91
|
+
get formAction() {
|
|
92
|
+
return props.formAction;
|
|
93
|
+
},
|
|
94
|
+
get formEncType() {
|
|
95
|
+
return props.formEncType;
|
|
96
|
+
},
|
|
97
|
+
get formMethod() {
|
|
98
|
+
return props.formMethod;
|
|
99
|
+
},
|
|
100
|
+
get formNoValidate() {
|
|
101
|
+
return props.formNoValidate;
|
|
102
|
+
},
|
|
103
|
+
get formTarget() {
|
|
104
|
+
return props.formTarget;
|
|
105
|
+
},
|
|
106
|
+
get name() {
|
|
107
|
+
return props.name;
|
|
108
|
+
},
|
|
109
|
+
get value() {
|
|
110
|
+
return props.value;
|
|
111
|
+
},
|
|
86
112
|
};
|
|
87
113
|
} else {
|
|
88
|
-
// Non-native buttons need role
|
|
114
|
+
// Non-native buttons need role; focusableProps supplies tabIndex.
|
|
89
115
|
additionalProps = {
|
|
90
|
-
role:
|
|
91
|
-
|
|
92
|
-
|
|
116
|
+
role: "button",
|
|
117
|
+
get href() {
|
|
118
|
+
return isLink && !isDisabled() ? props.href : undefined;
|
|
119
|
+
},
|
|
120
|
+
get target() {
|
|
121
|
+
return isLink ? props.target : undefined;
|
|
122
|
+
},
|
|
123
|
+
get type() {
|
|
124
|
+
return elementType === "input" ? (props.type ?? "button") : undefined;
|
|
125
|
+
},
|
|
126
|
+
get disabled() {
|
|
127
|
+
return elementType === "input" ? isDisabled() : undefined;
|
|
128
|
+
},
|
|
129
|
+
get "aria-disabled"() {
|
|
130
|
+
return isDisabled() && elementType !== "input" ? true : undefined;
|
|
131
|
+
},
|
|
132
|
+
get rel() {
|
|
133
|
+
return isLink ? props.rel : undefined;
|
|
134
|
+
},
|
|
93
135
|
};
|
|
94
|
-
|
|
95
|
-
if (isLink) {
|
|
96
|
-
additionalProps.href = props.href;
|
|
97
|
-
additionalProps.target = props.target;
|
|
98
|
-
additionalProps.rel = props.rel;
|
|
99
|
-
}
|
|
100
136
|
}
|
|
101
137
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
if (props['aria-controls']) {
|
|
124
|
-
ariaProps['aria-controls'] = props['aria-controls'];
|
|
125
|
-
}
|
|
126
|
-
if (props['aria-current'] !== undefined) {
|
|
127
|
-
ariaProps['aria-current'] = props['aria-current'];
|
|
128
|
-
}
|
|
138
|
+
const ariaProps: Record<string, unknown> = {
|
|
139
|
+
get "aria-haspopup"() {
|
|
140
|
+
return props["aria-haspopup"];
|
|
141
|
+
},
|
|
142
|
+
get "aria-expanded"() {
|
|
143
|
+
return props["aria-expanded"];
|
|
144
|
+
},
|
|
145
|
+
get "aria-controls"() {
|
|
146
|
+
return props["aria-controls"];
|
|
147
|
+
},
|
|
148
|
+
get "aria-pressed"() {
|
|
149
|
+
return props["aria-pressed"];
|
|
150
|
+
},
|
|
151
|
+
get "aria-current"() {
|
|
152
|
+
return props["aria-current"];
|
|
153
|
+
},
|
|
154
|
+
get "aria-disabled"() {
|
|
155
|
+
return props["aria-disabled"];
|
|
156
|
+
},
|
|
157
|
+
};
|
|
129
158
|
|
|
130
159
|
const buttonProps = mergeProps(
|
|
131
|
-
filterDOMProps(props as Record<string, unknown>, { labelable: true }),
|
|
132
160
|
additionalProps,
|
|
133
|
-
ariaProps,
|
|
134
161
|
focusableProps as Record<string, unknown>,
|
|
135
|
-
pressProps as Record<string, unknown
|
|
162
|
+
pressProps as Record<string, unknown>,
|
|
163
|
+
filterDOMProps(props as Record<string, unknown>, { labelable: true }),
|
|
164
|
+
ariaProps,
|
|
136
165
|
);
|
|
137
166
|
|
|
138
167
|
return {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Accessor, createSignal } from
|
|
2
|
-
import { createButton } from
|
|
3
|
-
import { mergeProps } from
|
|
4
|
-
import type { AriaButtonProps, ButtonAria } from
|
|
5
|
-
import type { PressEvent } from
|
|
1
|
+
import { Accessor, createSignal } from "solid-js";
|
|
2
|
+
import { createButton } from "./createButton";
|
|
3
|
+
import { mergeProps } from "../utils";
|
|
4
|
+
import type { AriaButtonProps, ButtonAria } from "./types";
|
|
5
|
+
import type { PressEvent } from "../interactions";
|
|
6
6
|
|
|
7
|
-
export interface AriaToggleButtonProps extends Omit<AriaButtonProps,
|
|
7
|
+
export interface AriaToggleButtonProps extends Omit<AriaButtonProps, "aria-pressed"> {
|
|
8
8
|
/** Whether the button is selected (controlled). */
|
|
9
9
|
isSelected?: Accessor<boolean> | boolean;
|
|
10
10
|
/** Handler called when the button's selection state changes. */
|
|
@@ -19,7 +19,7 @@ export interface ToggleButtonAria extends ButtonAria {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function getSelectedValue(isSelected: Accessor<boolean> | boolean | undefined): boolean {
|
|
22
|
-
if (typeof isSelected ===
|
|
22
|
+
if (typeof isSelected === "function") {
|
|
23
23
|
return isSelected();
|
|
24
24
|
}
|
|
25
25
|
return isSelected ?? false;
|
|
@@ -54,7 +54,7 @@ export function createToggleButton(props: AriaToggleButtonProps = {}): ToggleBut
|
|
|
54
54
|
// Handle controlled vs uncontrolled state
|
|
55
55
|
const isControlled = props.isSelected !== undefined;
|
|
56
56
|
const [uncontrolledSelected, setUncontrolledSelected] = createSignal(
|
|
57
|
-
props.defaultSelected ?? false
|
|
57
|
+
props.defaultSelected ?? false,
|
|
58
58
|
);
|
|
59
59
|
|
|
60
60
|
const isSelected = (): boolean => {
|
|
@@ -82,13 +82,13 @@ export function createToggleButton(props: AriaToggleButtonProps = {}): ToggleBut
|
|
|
82
82
|
const { buttonProps: baseButtonProps, isPressed } = createButton(
|
|
83
83
|
mergeProps(props, {
|
|
84
84
|
onPress,
|
|
85
|
-
}) as AriaButtonProps
|
|
85
|
+
}) as AriaButtonProps,
|
|
86
86
|
);
|
|
87
87
|
|
|
88
88
|
// Create buttonProps with a getter for aria-pressed so it stays reactive
|
|
89
89
|
const buttonProps = {
|
|
90
90
|
...baseButtonProps,
|
|
91
|
-
get
|
|
91
|
+
get "aria-pressed"() {
|
|
92
92
|
return isSelected();
|
|
93
93
|
},
|
|
94
94
|
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { JSX } from "solid-js";
|
|
2
|
+
import type { Key, ToggleGroupProps, ToggleGroupState } from "@proyecto-viviana/solid-stately";
|
|
3
|
+
import { createToolbar, type Orientation } from "../toolbar";
|
|
4
|
+
import { mergeProps } from "../utils";
|
|
5
|
+
import {
|
|
6
|
+
createToggleButton,
|
|
7
|
+
type AriaToggleButtonProps,
|
|
8
|
+
type ToggleButtonAria,
|
|
9
|
+
} from "./createToggleButton";
|
|
10
|
+
|
|
11
|
+
export interface AriaToggleButtonGroupProps extends ToggleGroupProps {
|
|
12
|
+
/**
|
|
13
|
+
* The orientation of the toggle button group.
|
|
14
|
+
* @default 'horizontal'
|
|
15
|
+
*/
|
|
16
|
+
orientation?: Orientation;
|
|
17
|
+
/** Accessible label. */
|
|
18
|
+
"aria-label"?: string;
|
|
19
|
+
/** Labelled-by id. */
|
|
20
|
+
"aria-labelledby"?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ToggleButtonGroupAria {
|
|
24
|
+
/** Props for the group container. */
|
|
25
|
+
groupProps: JSX.HTMLAttributes<HTMLElement>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface AriaToggleButtonGroupItemProps extends Omit<AriaToggleButtonProps, "children"> {
|
|
29
|
+
/** Key used in the group selection state. */
|
|
30
|
+
id: Key;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function isDisabledValue(isDisabled: AriaToggleButtonProps["isDisabled"]): boolean {
|
|
34
|
+
if (typeof isDisabled === "function") {
|
|
35
|
+
return isDisabled();
|
|
36
|
+
}
|
|
37
|
+
return !!isDisabled;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Provides ARIA behavior for a toggle button group container.
|
|
42
|
+
*/
|
|
43
|
+
export function createToggleButtonGroup(
|
|
44
|
+
props: AriaToggleButtonGroupProps,
|
|
45
|
+
state: ToggleGroupState,
|
|
46
|
+
): ToggleButtonGroupAria {
|
|
47
|
+
const { toolbarProps } = createToolbar({
|
|
48
|
+
get orientation() {
|
|
49
|
+
return props.orientation;
|
|
50
|
+
},
|
|
51
|
+
get "aria-label"() {
|
|
52
|
+
return props["aria-label"];
|
|
53
|
+
},
|
|
54
|
+
get "aria-labelledby"() {
|
|
55
|
+
return props["aria-labelledby"];
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const groupProps = mergeProps(toolbarProps as Record<string, unknown>, {
|
|
60
|
+
get role() {
|
|
61
|
+
return state.selectionMode === "single" ? "radiogroup" : toolbarProps.role;
|
|
62
|
+
},
|
|
63
|
+
get "aria-disabled"() {
|
|
64
|
+
return props.isDisabled || undefined;
|
|
65
|
+
},
|
|
66
|
+
}) as JSX.HTMLAttributes<HTMLElement>;
|
|
67
|
+
|
|
68
|
+
return { groupProps };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Provides ARIA behavior for an item within a toggle button group.
|
|
73
|
+
*/
|
|
74
|
+
export function createToggleButtonGroupItem(
|
|
75
|
+
props: AriaToggleButtonGroupItemProps,
|
|
76
|
+
state: ToggleGroupState,
|
|
77
|
+
): ToggleButtonAria {
|
|
78
|
+
const { id: _id, ...toggleProps } = props;
|
|
79
|
+
|
|
80
|
+
const toggleButton = createToggleButton({
|
|
81
|
+
...toggleProps,
|
|
82
|
+
get isSelected() {
|
|
83
|
+
return state.selectedKeys.has(props.id);
|
|
84
|
+
},
|
|
85
|
+
onChange(isSelected) {
|
|
86
|
+
state.setSelected(props.id, isSelected);
|
|
87
|
+
props.onChange?.(isSelected);
|
|
88
|
+
},
|
|
89
|
+
get isDisabled() {
|
|
90
|
+
return isDisabledValue(props.isDisabled) || state.isDisabled;
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const baseButtonProps = toggleButton.buttonProps as Record<string, unknown>;
|
|
95
|
+
const buttonProps: Record<string, unknown> = {
|
|
96
|
+
...baseButtonProps,
|
|
97
|
+
get role() {
|
|
98
|
+
if (state.selectionMode === "single") {
|
|
99
|
+
return "radio";
|
|
100
|
+
}
|
|
101
|
+
return baseButtonProps.role as string | undefined;
|
|
102
|
+
},
|
|
103
|
+
get "aria-checked"() {
|
|
104
|
+
if (state.selectionMode !== "single") {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
return state.selectedKeys.has(props.id);
|
|
108
|
+
},
|
|
109
|
+
get "aria-pressed"() {
|
|
110
|
+
if (state.selectionMode === "single") {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
return baseButtonProps["aria-pressed"];
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
...toggleButton,
|
|
119
|
+
buttonProps,
|
|
120
|
+
};
|
|
121
|
+
}
|
package/src/button/index.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export { createButton } from
|
|
2
|
-
export { createToggleButton } from
|
|
3
|
-
export
|
|
4
|
-
export type {
|
|
1
|
+
export { createButton } from "./createButton";
|
|
2
|
+
export { createToggleButton } from "./createToggleButton";
|
|
3
|
+
export { createToggleButtonGroup, createToggleButtonGroupItem } from "./createToggleButtonGroup";
|
|
4
|
+
export type { AriaButtonProps, ButtonAria } from "./types";
|
|
5
|
+
export type { AriaToggleButtonProps, ToggleButtonAria } from "./createToggleButton";
|
|
6
|
+
export type {
|
|
7
|
+
AriaToggleButtonGroupProps,
|
|
8
|
+
ToggleButtonGroupAria,
|
|
9
|
+
AriaToggleButtonGroupItemProps,
|
|
10
|
+
} from "./createToggleButtonGroup";
|
package/src/button/types.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { Accessor } from
|
|
2
|
-
import { PressEvent } from
|
|
1
|
+
import { Accessor } from "solid-js";
|
|
2
|
+
import { PressEvent } from "../interactions";
|
|
3
3
|
|
|
4
4
|
export interface AriaButtonProps {
|
|
5
|
+
/** The element's unique identifier. */
|
|
6
|
+
id?: string | number;
|
|
5
7
|
/** Whether the button is disabled. */
|
|
6
8
|
isDisabled?: Accessor<boolean> | boolean;
|
|
7
9
|
/** Handler called when the press is released over the target. */
|
|
@@ -30,7 +32,7 @@ export interface AriaButtonProps {
|
|
|
30
32
|
/** Whether the element should receive focus on render. */
|
|
31
33
|
autoFocus?: boolean;
|
|
32
34
|
/** The HTML element type to use for the button. */
|
|
33
|
-
elementType?:
|
|
35
|
+
elementType?: "button" | "a" | "div" | "input" | "span";
|
|
34
36
|
/** The URL to link to (for anchor elements). */
|
|
35
37
|
href?: string;
|
|
36
38
|
/** The target for the link (for anchor elements). */
|
|
@@ -38,23 +40,27 @@ export interface AriaButtonProps {
|
|
|
38
40
|
/** The rel attribute for the link (for anchor elements). */
|
|
39
41
|
rel?: string;
|
|
40
42
|
/** The type attribute for button elements. */
|
|
41
|
-
type?:
|
|
43
|
+
type?: "button" | "submit" | "reset";
|
|
42
44
|
/** Whether the button is in a pressed state (controlled). */
|
|
43
|
-
|
|
45
|
+
"aria-pressed"?: boolean | "true" | "false" | "mixed";
|
|
44
46
|
/** Whether the button has a popup. */
|
|
45
|
-
|
|
47
|
+
"aria-haspopup"?: boolean | "menu" | "listbox" | "tree" | "grid" | "dialog" | "true" | "false";
|
|
46
48
|
/** Whether the popup is expanded. */
|
|
47
|
-
|
|
49
|
+
"aria-expanded"?: boolean | "true" | "false";
|
|
48
50
|
/** The accessible label for the button. */
|
|
49
|
-
|
|
51
|
+
"aria-label"?: string;
|
|
50
52
|
/** The id of the element that labels the button. */
|
|
51
|
-
|
|
53
|
+
"aria-labelledby"?: string;
|
|
52
54
|
/** The id of the element that describes the button. */
|
|
53
|
-
|
|
55
|
+
"aria-describedby"?: string;
|
|
56
|
+
/** The id of the element that provides detailed, extended description for the button. */
|
|
57
|
+
"aria-details"?: string;
|
|
54
58
|
/** Identifies the element (or elements) whose contents or presence are controlled by the button. */
|
|
55
|
-
|
|
59
|
+
"aria-controls"?: string;
|
|
56
60
|
/** Indicates the current "pressed" state of toggle buttons. */
|
|
57
|
-
|
|
61
|
+
"aria-current"?: boolean | "page" | "step" | "location" | "date" | "time" | "true" | "false";
|
|
62
|
+
/** Indicates that the button is perceivable but disabled. */
|
|
63
|
+
"aria-disabled"?: boolean | "true" | "false";
|
|
58
64
|
/** Additional attributes for form buttons. */
|
|
59
65
|
form?: string;
|
|
60
66
|
formAction?: string;
|
|
@@ -5,15 +5,12 @@
|
|
|
5
5
|
* Based on @react-aria/calendar useCalendar
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { createMemo } from
|
|
9
|
-
import { createId } from
|
|
10
|
-
import { access, type MaybeAccessor } from
|
|
11
|
-
import { mergeProps } from
|
|
12
|
-
import type { CalendarState } from
|
|
13
|
-
|
|
14
|
-
// ============================================
|
|
15
|
-
// TYPES
|
|
16
|
-
// ============================================
|
|
8
|
+
import { createMemo } from "solid-js";
|
|
9
|
+
import { createId } from "../ssr";
|
|
10
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
11
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
12
|
+
import type { CalendarState } from "@proyecto-viviana/solid-stately";
|
|
13
|
+
import { formatVisibleRangeDescription, setCalendarHookData } from "./utils";
|
|
17
14
|
|
|
18
15
|
export interface AriaCalendarProps {
|
|
19
16
|
/** An ID for the calendar. */
|
|
@@ -23,11 +20,19 @@ export interface AriaCalendarProps {
|
|
|
23
20
|
/** Whether the calendar is read-only. */
|
|
24
21
|
isReadOnly?: boolean;
|
|
25
22
|
/** An accessible label for the calendar. */
|
|
26
|
-
|
|
23
|
+
"aria-label"?: string;
|
|
27
24
|
/** The ID of an element that labels the calendar. */
|
|
28
|
-
|
|
25
|
+
"aria-labelledby"?: string;
|
|
29
26
|
/** The ID of an element that describes the calendar. */
|
|
30
|
-
|
|
27
|
+
"aria-describedby"?: string;
|
|
28
|
+
/** The ID of an element that provides additional details about the calendar. */
|
|
29
|
+
"aria-details"?: string;
|
|
30
|
+
/** Whether the current selection is invalid. */
|
|
31
|
+
isInvalid?: boolean;
|
|
32
|
+
/** Error message rendered for invalid selections. */
|
|
33
|
+
errorMessage?: string;
|
|
34
|
+
/** ID of the rendered error message element. */
|
|
35
|
+
errorMessageId?: string;
|
|
31
36
|
/** Minimum number of visible months. */
|
|
32
37
|
visibleMonths?: number;
|
|
33
38
|
}
|
|
@@ -41,27 +46,50 @@ export interface CalendarAria {
|
|
|
41
46
|
nextButtonProps: Record<string, unknown>;
|
|
42
47
|
/** Props for the title/heading element. */
|
|
43
48
|
titleProps: Record<string, unknown>;
|
|
49
|
+
/** Props for the error message element, if any. */
|
|
50
|
+
errorMessageProps: Record<string, unknown>;
|
|
44
51
|
/** An accessible label for the title. */
|
|
45
52
|
title: string;
|
|
46
53
|
}
|
|
47
54
|
|
|
48
|
-
// ============================================
|
|
49
|
-
// IMPLEMENTATION
|
|
50
|
-
// ============================================
|
|
51
|
-
|
|
52
55
|
/**
|
|
53
56
|
* Provides the behavior and accessibility implementation for a calendar component.
|
|
54
57
|
*/
|
|
55
58
|
export function createCalendar<T extends CalendarState>(
|
|
56
59
|
props: MaybeAccessor<AriaCalendarProps>,
|
|
57
|
-
state: T
|
|
60
|
+
state: T,
|
|
58
61
|
): CalendarAria {
|
|
59
62
|
const getProps = () => access(props);
|
|
60
63
|
const id = createId(getProps().id);
|
|
61
64
|
const titleId = createId();
|
|
65
|
+
const errorMessageId = createId(getProps().errorMessageId);
|
|
62
66
|
|
|
63
67
|
// Title (e.g., "December 2024")
|
|
64
68
|
const title = createMemo(() => state.title());
|
|
69
|
+
const visibleRangeDescription = createMemo(() => {
|
|
70
|
+
const range = state.visibleRange();
|
|
71
|
+
return formatVisibleRangeDescription(range.start, range.end, state.timeZone, state.locale());
|
|
72
|
+
});
|
|
73
|
+
const calendarLabel = createMemo(() => {
|
|
74
|
+
const p = getProps();
|
|
75
|
+
return [p["aria-label"], visibleRangeDescription()].filter(Boolean).join(", ");
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const initialProps = getProps();
|
|
79
|
+
if (
|
|
80
|
+
initialProps.id ||
|
|
81
|
+
initialProps["aria-label"] ||
|
|
82
|
+
initialProps["aria-labelledby"] ||
|
|
83
|
+
initialProps["aria-describedby"] ||
|
|
84
|
+
initialProps["aria-details"] ||
|
|
85
|
+
initialProps.errorMessage ||
|
|
86
|
+
initialProps.errorMessageId
|
|
87
|
+
) {
|
|
88
|
+
setCalendarHookData(state, {
|
|
89
|
+
errorMessageId:
|
|
90
|
+
initialProps.errorMessage || initialProps.errorMessageId ? errorMessageId : undefined,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
65
93
|
|
|
66
94
|
// Previous button props
|
|
67
95
|
const prevButtonProps = createMemo(() => {
|
|
@@ -69,7 +97,7 @@ export function createCalendar<T extends CalendarState>(
|
|
|
69
97
|
const isDisabled = p.isDisabled || state.isDisabled();
|
|
70
98
|
|
|
71
99
|
return {
|
|
72
|
-
|
|
100
|
+
"aria-label": "Previous month",
|
|
73
101
|
onClick: () => {
|
|
74
102
|
if (!isDisabled) {
|
|
75
103
|
state.focusPreviousPage();
|
|
@@ -86,7 +114,7 @@ export function createCalendar<T extends CalendarState>(
|
|
|
86
114
|
const isDisabled = p.isDisabled || state.isDisabled();
|
|
87
115
|
|
|
88
116
|
return {
|
|
89
|
-
|
|
117
|
+
"aria-label": "Next month",
|
|
90
118
|
onClick: () => {
|
|
91
119
|
if (!isDisabled) {
|
|
92
120
|
state.focusNextPage();
|
|
@@ -100,22 +128,24 @@ export function createCalendar<T extends CalendarState>(
|
|
|
100
128
|
// Title props
|
|
101
129
|
const titleProps = createMemo(() => ({
|
|
102
130
|
id: titleId,
|
|
103
|
-
|
|
131
|
+
"aria-live": "polite" as const,
|
|
132
|
+
}));
|
|
133
|
+
const errorMessageProps = createMemo(() => ({
|
|
134
|
+
id: errorMessageId,
|
|
104
135
|
}));
|
|
105
136
|
|
|
106
137
|
// Calendar container props
|
|
107
138
|
const calendarProps = createMemo(() => {
|
|
108
139
|
const p = getProps();
|
|
109
140
|
|
|
110
|
-
return mergeProps(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
);
|
|
141
|
+
return mergeProps({
|
|
142
|
+
id,
|
|
143
|
+
role: "application",
|
|
144
|
+
"aria-labelledby": p["aria-labelledby"],
|
|
145
|
+
"aria-label": calendarLabel(),
|
|
146
|
+
"aria-describedby": p["aria-describedby"],
|
|
147
|
+
"aria-details": p["aria-details"],
|
|
148
|
+
});
|
|
119
149
|
});
|
|
120
150
|
|
|
121
151
|
return {
|
|
@@ -131,6 +161,9 @@ export function createCalendar<T extends CalendarState>(
|
|
|
131
161
|
get titleProps() {
|
|
132
162
|
return titleProps();
|
|
133
163
|
},
|
|
164
|
+
get errorMessageProps() {
|
|
165
|
+
return errorMessageProps();
|
|
166
|
+
},
|
|
134
167
|
get title() {
|
|
135
168
|
return title();
|
|
136
169
|
},
|