@proyecto-viviana/solidaria 0.3.0 → 0.4.1
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/dist/_chunk/DragManager.js +627 -0
- package/dist/_chunk/DragManager.js.map +1 -0
- package/dist/_chunk/DragManager.jsx +627 -0
- package/dist/_chunk/DragManager.jsx.map +1 -0
- package/dist/_chunk/FocusScope.js +400 -0
- package/dist/_chunk/FocusScope.js.map +1 -0
- package/dist/_chunk/FocusScope.jsx +375 -0
- package/dist/_chunk/FocusScope.jsx.map +1 -0
- package/dist/_chunk/actiongroup.js +141 -0
- package/dist/_chunk/actiongroup.js.map +1 -0
- package/dist/_chunk/actiongroup.jsx +141 -0
- package/dist/_chunk/actiongroup.jsx.map +1 -0
- package/dist/_chunk/announce.js +207 -0
- package/dist/_chunk/announce.js.map +1 -0
- package/dist/_chunk/announce.jsx +207 -0
- package/dist/_chunk/announce.jsx.map +1 -0
- package/dist/_chunk/ariaHideOutside.js +122 -0
- package/dist/_chunk/ariaHideOutside.js.map +1 -0
- package/dist/_chunk/ariaHideOutside.jsx +122 -0
- package/dist/_chunk/ariaHideOutside.jsx.map +1 -0
- package/dist/_chunk/autocomplete.js +244 -0
- package/dist/_chunk/autocomplete.js.map +1 -0
- package/dist/_chunk/autocomplete.jsx +244 -0
- package/dist/_chunk/autocomplete.jsx.map +1 -0
- package/dist/_chunk/breadcrumbs.js +121 -0
- package/dist/_chunk/breadcrumbs.js.map +1 -0
- package/dist/_chunk/breadcrumbs.jsx +121 -0
- package/dist/_chunk/breadcrumbs.jsx.map +1 -0
- package/dist/_chunk/button.js +275 -0
- package/dist/_chunk/button.js.map +1 -0
- package/dist/_chunk/button.jsx +275 -0
- package/dist/_chunk/button.jsx.map +1 -0
- package/dist/_chunk/calendar.js +1037 -0
- package/dist/_chunk/calendar.js.map +1 -0
- package/dist/_chunk/calendar.jsx +1037 -0
- package/dist/_chunk/calendar.jsx.map +1 -0
- package/dist/_chunk/checkbox.js +235 -0
- package/dist/_chunk/checkbox.js.map +1 -0
- package/dist/_chunk/checkbox.jsx +235 -0
- package/dist/_chunk/checkbox.jsx.map +1 -0
- package/dist/_chunk/color.js +1458 -0
- package/dist/_chunk/color.js.map +1 -0
- package/dist/_chunk/color.jsx +1458 -0
- package/dist/_chunk/color.jsx.map +1 -0
- package/dist/_chunk/combobox.js +1062 -0
- package/dist/_chunk/combobox.js.map +1 -0
- package/dist/_chunk/combobox.jsx +1062 -0
- package/dist/_chunk/combobox.jsx.map +1 -0
- package/dist/_chunk/constants.js +19 -0
- package/dist/_chunk/constants.js.map +1 -0
- package/dist/_chunk/constants.jsx +19 -0
- package/dist/_chunk/constants.jsx.map +1 -0
- package/dist/_chunk/createCollator.js +61 -0
- package/dist/_chunk/createCollator.js.map +1 -0
- package/dist/_chunk/createCollator.jsx +61 -0
- package/dist/_chunk/createCollator.jsx.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.js +133 -0
- package/dist/_chunk/createCollectionRowInteraction.js.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx +133 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -0
- package/dist/_chunk/createField.js +55 -0
- package/dist/_chunk/createField.js.map +1 -0
- package/dist/_chunk/createField.jsx +55 -0
- package/dist/_chunk/createField.jsx.map +1 -0
- package/dist/_chunk/createFocus.js +105 -0
- package/dist/_chunk/createFocus.js.map +1 -0
- package/dist/_chunk/createFocus.jsx +105 -0
- package/dist/_chunk/createFocus.jsx.map +1 -0
- package/dist/_chunk/createFocusRing.js +54 -0
- package/dist/_chunk/createFocusRing.js.map +1 -0
- package/dist/_chunk/createFocusRing.jsx +54 -0
- package/dist/_chunk/createFocusRing.jsx.map +1 -0
- package/dist/_chunk/createFocusWithin.js +120 -0
- package/dist/_chunk/createFocusWithin.js.map +1 -0
- package/dist/_chunk/createFocusWithin.jsx +120 -0
- package/dist/_chunk/createFocusWithin.jsx.map +1 -0
- package/dist/_chunk/createFocusable.js +131 -0
- package/dist/_chunk/createFocusable.js.map +1 -0
- package/dist/_chunk/createFocusable.jsx +131 -0
- package/dist/_chunk/createFocusable.jsx.map +1 -0
- package/dist/_chunk/createFormReset.js +39 -0
- package/dist/_chunk/createFormReset.js.map +1 -0
- package/dist/_chunk/createFormReset.jsx +39 -0
- package/dist/_chunk/createFormReset.jsx.map +1 -0
- package/dist/_chunk/createFormValidation.js +135 -0
- package/dist/_chunk/createFormValidation.js.map +1 -0
- package/dist/_chunk/createFormValidation.jsx +135 -0
- package/dist/_chunk/createFormValidation.jsx.map +1 -0
- package/dist/_chunk/createHover.js +131 -0
- package/dist/_chunk/createHover.js.map +1 -0
- package/dist/_chunk/createHover.jsx +131 -0
- package/dist/_chunk/createHover.jsx.map +1 -0
- package/dist/_chunk/createInteractionModality.js +268 -0
- package/dist/_chunk/createInteractionModality.js.map +1 -0
- package/dist/_chunk/createInteractionModality.jsx +268 -0
- package/dist/_chunk/createInteractionModality.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +47 -0
- package/dist/_chunk/createLabel.js.map +1 -0
- package/dist/_chunk/createLabel.jsx +47 -0
- package/dist/_chunk/createLabel.jsx.map +1 -0
- package/dist/_chunk/createLabels.js +32 -0
- package/dist/_chunk/createLabels.js.map +1 -0
- package/dist/_chunk/createLabels.jsx +32 -0
- package/dist/_chunk/createLabels.jsx.map +1 -0
- package/dist/_chunk/createLandmark.js +198 -0
- package/dist/_chunk/createLandmark.js.map +1 -0
- package/dist/_chunk/createLandmark.jsx +198 -0
- package/dist/_chunk/createLandmark.jsx.map +1 -0
- package/dist/_chunk/createOverlay.js +327 -0
- package/dist/_chunk/createOverlay.js.map +1 -0
- package/dist/_chunk/createOverlay.jsx +327 -0
- package/dist/_chunk/createOverlay.jsx.map +1 -0
- package/dist/_chunk/createPress.js +526 -0
- package/dist/_chunk/createPress.js.map +1 -0
- package/dist/_chunk/createPress.jsx +526 -0
- package/dist/_chunk/createPress.jsx.map +1 -0
- package/dist/_chunk/createProgressBar.js +82 -0
- package/dist/_chunk/createProgressBar.js.map +1 -0
- package/dist/_chunk/createProgressBar.jsx +82 -0
- package/dist/_chunk/createProgressBar.jsx.map +1 -0
- package/dist/_chunk/createSelectableItem.js +302 -0
- package/dist/_chunk/createSelectableItem.js.map +1 -0
- package/dist/_chunk/createSelectableItem.jsx +302 -0
- package/dist/_chunk/createSelectableItem.jsx.map +1 -0
- package/dist/_chunk/createStringFormatter.js +61 -0
- package/dist/_chunk/createStringFormatter.js.map +1 -0
- package/dist/_chunk/createStringFormatter.jsx +61 -0
- package/dist/_chunk/createStringFormatter.jsx.map +1 -0
- package/dist/_chunk/createToggle.js +159 -0
- package/dist/_chunk/createToggle.js.map +1 -0
- package/dist/_chunk/createToggle.jsx +159 -0
- package/dist/_chunk/createToggle.jsx.map +1 -0
- package/dist/_chunk/createTypeSelect.js +125 -0
- package/dist/_chunk/createTypeSelect.js.map +1 -0
- package/dist/_chunk/createTypeSelect.jsx +125 -0
- package/dist/_chunk/createTypeSelect.jsx.map +1 -0
- package/dist/_chunk/datepicker.js +1706 -0
- package/dist/_chunk/datepicker.js.map +1 -0
- package/dist/_chunk/datepicker.jsx +1706 -0
- package/dist/_chunk/datepicker.jsx.map +1 -0
- package/dist/_chunk/dialog.js +62 -0
- package/dist/_chunk/dialog.js.map +1 -0
- package/dist/_chunk/dialog.jsx +62 -0
- package/dist/_chunk/dialog.jsx.map +1 -0
- package/dist/_chunk/disclosure.js +185 -0
- package/dist/_chunk/disclosure.js.map +1 -0
- package/dist/_chunk/disclosure.jsx +185 -0
- package/dist/_chunk/disclosure.jsx.map +1 -0
- package/dist/_chunk/dnd.js +2395 -0
- package/dist/_chunk/dnd.js.map +1 -0
- package/dist/_chunk/dnd.jsx +2395 -0
- package/dist/_chunk/dnd.jsx.map +1 -0
- package/dist/_chunk/env.js +87 -0
- package/dist/_chunk/env.js.map +1 -0
- package/dist/_chunk/env.jsx +87 -0
- package/dist/_chunk/env.jsx.map +1 -0
- package/dist/_chunk/filterDOMProps.js +82 -0
- package/dist/_chunk/filterDOMProps.js.map +1 -0
- package/dist/_chunk/filterDOMProps.jsx +82 -0
- package/dist/_chunk/filterDOMProps.jsx.map +1 -0
- package/dist/_chunk/focus.js +399 -0
- package/dist/_chunk/focus.js.map +1 -0
- package/dist/_chunk/focus.jsx +399 -0
- package/dist/_chunk/focus.jsx.map +1 -0
- package/dist/_chunk/focus2.js +631 -0
- package/dist/_chunk/focus2.js.map +1 -0
- package/dist/_chunk/focus2.jsx +631 -0
- package/dist/_chunk/focus2.jsx.map +1 -0
- package/dist/_chunk/grid.js +623 -0
- package/dist/_chunk/grid.js.map +1 -0
- package/dist/_chunk/grid.jsx +623 -0
- package/dist/_chunk/grid.jsx.map +1 -0
- package/dist/_chunk/gridlist.js +369 -0
- package/dist/_chunk/gridlist.js.map +1 -0
- package/dist/_chunk/gridlist.jsx +369 -0
- package/dist/_chunk/gridlist.jsx.map +1 -0
- package/dist/_chunk/i18n.js +199 -0
- package/dist/_chunk/i18n.js.map +1 -0
- package/dist/_chunk/i18n.jsx +199 -0
- package/dist/_chunk/i18n.jsx.map +1 -0
- package/dist/_chunk/interactions.js +331 -0
- package/dist/_chunk/interactions.js.map +1 -0
- package/dist/_chunk/interactions.jsx +325 -0
- package/dist/_chunk/interactions.jsx.map +1 -0
- package/dist/_chunk/link.js +97 -0
- package/dist/_chunk/link.js.map +1 -0
- package/dist/_chunk/link.jsx +97 -0
- package/dist/_chunk/link.jsx.map +1 -0
- package/dist/_chunk/listbox.js +356 -0
- package/dist/_chunk/listbox.js.map +1 -0
- package/dist/_chunk/listbox.jsx +356 -0
- package/dist/_chunk/listbox.jsx.map +1 -0
- package/dist/_chunk/locale.js +173 -0
- package/dist/_chunk/locale.js.map +1 -0
- package/dist/_chunk/locale.jsx +167 -0
- package/dist/_chunk/locale.jsx.map +1 -0
- package/dist/_chunk/menu.js +519 -0
- package/dist/_chunk/menu.js.map +1 -0
- package/dist/_chunk/menu.jsx +519 -0
- package/dist/_chunk/menu.jsx.map +1 -0
- package/dist/_chunk/meter.js +33 -0
- package/dist/_chunk/meter.js.map +1 -0
- package/dist/_chunk/meter.jsx +33 -0
- package/dist/_chunk/meter.jsx.map +1 -0
- package/dist/_chunk/numberfield.js +259 -0
- package/dist/_chunk/numberfield.js.map +1 -0
- package/dist/_chunk/numberfield.jsx +259 -0
- package/dist/_chunk/numberfield.jsx.map +1 -0
- package/dist/_chunk/overlays.js +186 -0
- package/dist/_chunk/overlays.js.map +1 -0
- package/dist/_chunk/overlays.jsx +162 -0
- package/dist/_chunk/overlays.jsx.map +1 -0
- package/dist/_chunk/popover.js +574 -0
- package/dist/_chunk/popover.js.map +1 -0
- package/dist/_chunk/popover.jsx +574 -0
- package/dist/_chunk/popover.jsx.map +1 -0
- package/dist/_chunk/radio.js +320 -0
- package/dist/_chunk/radio.js.map +1 -0
- package/dist/_chunk/radio.jsx +320 -0
- package/dist/_chunk/radio.jsx.map +1 -0
- package/dist/_chunk/reactivity.js +21 -0
- package/dist/_chunk/reactivity.js.map +1 -0
- package/dist/_chunk/reactivity.jsx +21 -0
- package/dist/_chunk/reactivity.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +210 -0
- package/dist/_chunk/searchfield.js.map +1 -0
- package/dist/_chunk/searchfield.jsx +210 -0
- package/dist/_chunk/searchfield.jsx.map +1 -0
- package/dist/_chunk/select.js +406 -0
- package/dist/_chunk/select.js.map +1 -0
- package/dist/_chunk/select.jsx +397 -0
- package/dist/_chunk/select.jsx.map +1 -0
- package/dist/_chunk/selection.js +666 -0
- package/dist/_chunk/selection.js.map +1 -0
- package/dist/_chunk/selection.jsx +666 -0
- package/dist/_chunk/selection.jsx.map +1 -0
- package/dist/_chunk/separator.js +29 -0
- package/dist/_chunk/separator.js.map +1 -0
- package/dist/_chunk/separator.jsx +29 -0
- package/dist/_chunk/separator.jsx.map +1 -0
- package/dist/_chunk/slider.js +256 -0
- package/dist/_chunk/slider.js.map +1 -0
- package/dist/_chunk/slider.jsx +256 -0
- package/dist/_chunk/slider.jsx.map +1 -0
- package/dist/_chunk/spinbutton.js +153 -0
- package/dist/_chunk/spinbutton.js.map +1 -0
- package/dist/_chunk/spinbutton.jsx +153 -0
- package/dist/_chunk/spinbutton.jsx.map +1 -0
- package/dist/_chunk/steplist.js +66 -0
- package/dist/_chunk/steplist.js.map +1 -0
- package/dist/_chunk/steplist.jsx +66 -0
- package/dist/_chunk/steplist.jsx.map +1 -0
- package/dist/_chunk/switch.js +34 -0
- package/dist/_chunk/switch.js.map +1 -0
- package/dist/_chunk/switch.jsx +34 -0
- package/dist/_chunk/switch.jsx.map +1 -0
- package/dist/_chunk/table.js +1088 -0
- package/dist/_chunk/table.js.map +1 -0
- package/dist/_chunk/table.jsx +1088 -0
- package/dist/_chunk/table.jsx.map +1 -0
- package/dist/_chunk/tabs.js +263 -0
- package/dist/_chunk/tabs.js.map +1 -0
- package/dist/_chunk/tabs.jsx +263 -0
- package/dist/_chunk/tabs.jsx.map +1 -0
- package/dist/_chunk/tag.js +322 -0
- package/dist/_chunk/tag.js.map +1 -0
- package/dist/_chunk/tag.jsx +322 -0
- package/dist/_chunk/tag.jsx.map +1 -0
- package/dist/_chunk/textfield.js +110 -0
- package/dist/_chunk/textfield.js.map +1 -0
- package/dist/_chunk/textfield.jsx +110 -0
- package/dist/_chunk/textfield.jsx.map +1 -0
- package/dist/_chunk/toast.js +250 -0
- package/dist/_chunk/toast.js.map +1 -0
- package/dist/_chunk/toast.jsx +250 -0
- package/dist/_chunk/toast.jsx.map +1 -0
- package/dist/_chunk/toolbar.js +226 -0
- package/dist/_chunk/toolbar.js.map +1 -0
- package/dist/_chunk/toolbar.jsx +226 -0
- package/dist/_chunk/toolbar.jsx.map +1 -0
- package/dist/_chunk/tooltip.js +185 -0
- package/dist/_chunk/tooltip.js.map +1 -0
- package/dist/_chunk/tooltip.jsx +185 -0
- package/dist/_chunk/tooltip.jsx.map +1 -0
- package/dist/_chunk/tree.js +452 -0
- package/dist/_chunk/tree.js.map +1 -0
- package/dist/_chunk/tree.jsx +452 -0
- package/dist/_chunk/tree.jsx.map +1 -0
- package/dist/_chunk/utils.js +705 -0
- package/dist/_chunk/utils.js.map +1 -0
- package/dist/_chunk/utils.jsx +705 -0
- package/dist/_chunk/utils.jsx.map +1 -0
- package/dist/_chunk/visually-hidden.js +93 -0
- package/dist/_chunk/visually-hidden.js.map +1 -0
- package/dist/_chunk/visually-hidden.jsx +93 -0
- package/dist/_chunk/visually-hidden.jsx.map +1 -0
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.js +2 -0
- package/dist/actiongroup/index.jsx +2 -0
- package/dist/autocomplete/createAutocomplete.d.ts +12 -7
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.js +2 -0
- package/dist/autocomplete/index.jsx +2 -0
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/index.jsx +2 -0
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/index.js +2 -0
- package/dist/button/index.jsx +2 -0
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createCalendarMonthPicker.d.ts +41 -0
- package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -0
- package/dist/calendar/createCalendarYearPicker.d.ts +49 -0
- package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -0
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +2 -0
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +2 -0
- package/dist/calendar/index.jsx +2 -0
- package/dist/calendar/intl/index.d.ts +1 -1
- package/dist/calendar/intl/index.d.ts.map +1 -1
- package/dist/calendar/utils.d.ts +4 -0
- package/dist/calendar/utils.d.ts.map +1 -1
- package/dist/checkbox/createCheckbox.d.ts +4 -0
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox/index.jsx +2 -0
- package/dist/collections/index.js +160 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/index.jsx +160 -0
- package/dist/collections/index.jsx.map +1 -0
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.js +2 -0
- package/dist/color/index.jsx +2 -0
- package/dist/color/intl/index.d.ts +30 -0
- package/dist/color/intl/index.d.ts.map +1 -0
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.js +2 -0
- package/dist/combobox/index.jsx +2 -0
- package/dist/combobox/intl/generated-locales.d.ts +16 -0
- package/dist/combobox/intl/generated-locales.d.ts.map +1 -0
- package/dist/combobox/intl/index.d.ts +2 -2
- package/dist/combobox/intl/index.d.ts.map +1 -1
- package/dist/datepicker/createDateField.d.ts +45 -23
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +34 -6
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +13 -13
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
- package/dist/datepicker/createDateRangePicker.d.ts +55 -7
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +6 -15
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createDisplayNames.d.ts +17 -0
- package/dist/datepicker/createDisplayNames.d.ts.map +1 -0
- package/dist/datepicker/createTimeField.d.ts +12 -49
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +3 -3
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/datepicker/index.js +2 -0
- package/dist/datepicker/index.jsx +2 -0
- package/dist/datepicker/intl.d.ts +12 -0
- package/dist/datepicker/intl.d.ts.map +1 -0
- package/dist/dialog/index.js +2 -0
- package/dist/dialog/index.jsx +2 -0
- package/dist/disclosure/index.js +2 -0
- package/dist/disclosure/index.jsx +2 -0
- package/dist/dnd/DragManager.d.ts +86 -0
- package/dist/dnd/DragManager.d.ts.map +1 -0
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts +42 -0
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts.map +1 -0
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +12 -7
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +7 -15
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +5 -1
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +3 -0
- package/dist/dnd/index.jsx +3 -0
- package/dist/dnd/intl/index.d.ts +39 -0
- package/dist/dnd/intl/index.d.ts.map +1 -0
- package/dist/dnd/utils.d.ts +7 -2
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +7 -0
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/index.d.ts +2 -1
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/focus/index.js +3 -0
- package/dist/focus/index.jsx +3 -0
- package/dist/focus/virtualFocus.d.ts +26 -0
- package/dist/focus/virtualFocus.d.ts.map +1 -0
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.js +3 -0
- package/dist/form/index.jsx +3 -0
- package/dist/grid/index.js +2 -0
- package/dist/grid/index.jsx +2 -0
- package/dist/gridlist/createGridList.d.ts +7 -1
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +1 -1
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSection.d.ts +15 -0
- package/dist/gridlist/createGridListSection.d.ts.map +1 -0
- package/dist/gridlist/index.d.ts +2 -1
- package/dist/gridlist/index.d.ts.map +1 -1
- package/dist/gridlist/index.js +2 -0
- package/dist/gridlist/index.jsx +2 -0
- package/dist/gridlist/types.d.ts +50 -0
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/index.js +5 -0
- package/dist/i18n/index.jsx +5 -0
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -18311
- package/dist/index.jsx +77 -18242
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +11 -0
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +0 -1
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.js +9 -0
- package/dist/interactions/index.jsx +9 -0
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.js +4 -0
- package/dist/label/index.jsx +4 -0
- package/dist/landmark/index.js +2 -0
- package/dist/landmark/index.jsx +2 -0
- package/dist/link/index.js +2 -0
- package/dist/link/index.jsx +2 -0
- package/dist/listbox/createListBox.d.ts +37 -0
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +7 -1
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.js +2 -0
- package/dist/listbox/index.jsx +2 -0
- package/dist/live-announcer/index.js +2 -0
- package/dist/live-announcer/index.jsx +2 -0
- package/dist/menu/createMenu.d.ts +7 -4
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +9 -1
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/index.js +2 -0
- package/dist/menu/index.jsx +2 -0
- package/dist/meter/index.js +2 -0
- package/dist/meter/index.jsx +2 -0
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.js +2 -0
- package/dist/numberfield/index.jsx +2 -0
- package/dist/overlays/index.js +4 -0
- package/dist/overlays/index.jsx +4 -0
- package/dist/popover/calculatePosition.d.ts +2 -0
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +8 -0
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/index.js +2 -0
- package/dist/popover/index.jsx +2 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.jsx +2 -0
- package/dist/radio/createRadio.d.ts +2 -0
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/index.js +2 -0
- package/dist/radio/index.jsx +2 -0
- package/dist/searchfield/index.js +2 -0
- package/dist/searchfield/index.jsx +2 -0
- package/dist/select/createSelect.d.ts +2 -0
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.js +2 -0
- package/dist/select/index.jsx +2 -0
- package/dist/selection/DOMLayoutDelegate.d.ts +58 -0
- package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -0
- package/dist/selection/ListKeyboardDelegate.d.ts +95 -0
- package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -0
- package/dist/selection/constants.d.ts +15 -0
- package/dist/selection/constants.d.ts.map +1 -0
- package/dist/selection/createCollectionRowInteraction.d.ts +13 -0
- package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts +31 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -0
- package/dist/selection/createSelectableCollection.d.ts +69 -0
- package/dist/selection/createSelectableCollection.d.ts.map +1 -0
- package/dist/selection/createSelectableItem.d.ts +154 -0
- package/dist/selection/createSelectableItem.d.ts.map +1 -0
- package/dist/selection/createSelectableList.d.ts +43 -0
- package/dist/selection/createSelectableList.d.ts.map +1 -0
- package/dist/selection/createTypeSelect.d.ts.map +1 -1
- package/dist/selection/index.d.ts +9 -0
- package/dist/selection/index.d.ts.map +1 -1
- package/dist/selection/index.js +5 -0
- package/dist/selection/index.jsx +5 -0
- package/dist/selection/selectItem.d.ts +29 -0
- package/dist/selection/selectItem.d.ts.map +1 -0
- package/dist/selection/utils.d.ts +40 -0
- package/dist/selection/utils.d.ts.map +1 -0
- package/dist/separator/index.js +2 -0
- package/dist/separator/index.jsx +2 -0
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.js +2 -0
- package/dist/slider/index.jsx +2 -0
- package/dist/spinbutton/createSpinButton.d.ts +41 -0
- package/dist/spinbutton/createSpinButton.d.ts.map +1 -0
- package/dist/spinbutton/index.d.ts +3 -0
- package/dist/spinbutton/index.d.ts.map +1 -0
- package/dist/spinbutton/index.js +2 -0
- package/dist/spinbutton/index.jsx +2 -0
- package/dist/spinbutton/intl.d.ts +5 -0
- package/dist/spinbutton/intl.d.ts.map +1 -0
- package/dist/ssr/index.d.ts +17 -0
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +299 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/index.jsx +292 -0
- package/dist/ssr/index.jsx.map +1 -0
- package/dist/steplist/index.js +2 -0
- package/dist/steplist/index.jsx +2 -0
- package/dist/switch/createSwitch.d.ts +4 -0
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.jsx +2 -0
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableRow.d.ts +1 -1
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
- package/dist/table/index.js +2 -0
- package/dist/table/index.jsx +2 -0
- package/dist/table/types.d.ts +35 -1
- package/dist/table/types.d.ts.map +1 -1
- package/dist/table/utils.d.ts +15 -0
- package/dist/table/utils.d.ts.map +1 -0
- package/dist/tabs/createTabs.d.ts +5 -3
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.jsx +2 -0
- package/dist/tag/createTag.d.ts +2 -0
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +7 -0
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.js +2 -0
- package/dist/tag/index.jsx +2 -0
- package/dist/textfield/index.js +2 -0
- package/dist/textfield/index.jsx +2 -0
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/index.js +2 -0
- package/dist/toast/index.jsx +2 -0
- package/dist/toggle/createToggle.d.ts +4 -0
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/index.js +3 -0
- package/dist/toggle/index.jsx +3 -0
- package/dist/toolbar/createToolbar.d.ts +1 -1
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.js +2 -0
- package/dist/toolbar/index.jsx +2 -0
- package/dist/tooltip/index.js +2 -0
- package/dist/tooltip/index.jsx +2 -0
- package/dist/tree/createTree.d.ts +5 -1
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +1 -1
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.js +2 -0
- package/dist/tree/index.jsx +2 -0
- package/dist/tree/types.d.ts +10 -0
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/animation.d.ts +60 -0
- package/dist/utils/animation.d.ts.map +1 -0
- package/dist/utils/dom.d.ts +49 -2
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.jsx +6 -0
- package/dist/utils/keyboard.d.ts +17 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/scrollIntoView.d.ts +30 -0
- package/dist/utils/scrollIntoView.d.ts.map +1 -0
- package/dist/visually-hidden/index.js +2 -0
- package/dist/visually-hidden/index.jsx +2 -0
- package/package.json +304 -3
- package/src/actiongroup/createActionGroup.ts +26 -109
- package/src/autocomplete/createAutocomplete.ts +202 -35
- package/src/breadcrumbs/createBreadcrumbs.ts +12 -4
- package/src/button/createToggleButtonGroup.ts +19 -14
- package/src/calendar/createCalendar.ts +5 -4
- package/src/calendar/createCalendarCell.ts +36 -5
- package/src/calendar/createCalendarGrid.ts +47 -12
- package/src/calendar/createCalendarMonthPicker.ts +105 -0
- package/src/calendar/createCalendarYearPicker.ts +144 -0
- package/src/calendar/createRangeCalendar.ts +27 -15
- package/src/calendar/createRangeCalendarCell.ts +17 -3
- package/src/calendar/index.ts +17 -0
- package/src/calendar/intl/index.ts +8 -0
- package/src/calendar/utils.ts +4 -0
- package/src/checkbox/createCheckbox.ts +10 -0
- package/src/checkbox/createCheckboxGroupItem.ts +12 -16
- package/src/color/createColorArea.ts +17 -10
- package/src/color/createColorField.ts +8 -1
- package/src/color/createColorSlider.ts +1 -2
- package/src/color/createColorSwatch.ts +4 -2
- package/src/color/createColorWheel.ts +0 -6
- package/src/color/intl/index.ts +316 -0
- package/src/combobox/createComboBox.ts +35 -4
- package/src/combobox/intl/generated-locales.ts +635 -0
- package/src/combobox/intl/index.ts +8 -2
- package/src/datepicker/createDateField.ts +228 -213
- package/src/datepicker/createDatePicker.ts +157 -146
- package/src/datepicker/createDatePickerGroup.ts +88 -82
- package/src/datepicker/createDateRangePicker.ts +230 -179
- package/src/datepicker/createDateSegment.ts +386 -384
- package/src/datepicker/createDisplayNames.ts +45 -0
- package/src/datepicker/createTimeField.ts +36 -129
- package/src/datepicker/index.ts +13 -14
- package/src/datepicker/intl.ts +633 -0
- package/src/dnd/DragManager.ts +693 -0
- package/src/dnd/DropTargetKeyboardNavigation.ts +337 -0
- package/src/dnd/createDrag.ts +31 -5
- package/src/dnd/createDraggableCollection.ts +33 -15
- package/src/dnd/createDraggableItem.ts +92 -5
- package/src/dnd/createDroppableCollection.ts +488 -371
- package/src/dnd/index.ts +11 -0
- package/src/dnd/intl/ar-AE.json +29 -0
- package/src/dnd/intl/bg-BG.json +29 -0
- package/src/dnd/intl/cs-CZ.json +29 -0
- package/src/dnd/intl/da-DK.json +29 -0
- package/src/dnd/intl/de-DE.json +29 -0
- package/src/dnd/intl/el-GR.json +29 -0
- package/src/dnd/intl/en-US.json +29 -0
- package/src/dnd/intl/es-ES.json +29 -0
- package/src/dnd/intl/et-EE.json +29 -0
- package/src/dnd/intl/fi-FI.json +29 -0
- package/src/dnd/intl/fr-FR.json +29 -0
- package/src/dnd/intl/he-IL.json +29 -0
- package/src/dnd/intl/hr-HR.json +29 -0
- package/src/dnd/intl/hu-HU.json +29 -0
- package/src/dnd/intl/index.ts +139 -0
- package/src/dnd/intl/it-IT.json +29 -0
- package/src/dnd/intl/ja-JP.json +29 -0
- package/src/dnd/intl/ko-KR.json +29 -0
- package/src/dnd/intl/lt-LT.json +29 -0
- package/src/dnd/intl/lv-LV.json +29 -0
- package/src/dnd/intl/nb-NO.json +29 -0
- package/src/dnd/intl/nl-NL.json +29 -0
- package/src/dnd/intl/pl-PL.json +29 -0
- package/src/dnd/intl/pt-BR.json +29 -0
- package/src/dnd/intl/pt-PT.json +29 -0
- package/src/dnd/intl/ro-RO.json +29 -0
- package/src/dnd/intl/ru-RU.json +29 -0
- package/src/dnd/intl/sk-SK.json +29 -0
- package/src/dnd/intl/sl-SI.json +29 -0
- package/src/dnd/intl/sr-SP.json +29 -0
- package/src/dnd/intl/sv-SE.json +29 -0
- package/src/dnd/intl/tr-TR.json +29 -0
- package/src/dnd/intl/uk-UA.json +29 -0
- package/src/dnd/intl/zh-CN.json +29 -0
- package/src/dnd/intl/zh-TW.json +29 -0
- package/src/dnd/utils.ts +63 -3
- package/src/focus/FocusScope.tsx +266 -24
- package/src/focus/index.ts +8 -0
- package/src/focus/virtualFocus.ts +55 -0
- package/src/form/createFormValidation.ts +8 -1
- package/src/gridlist/createGridList.ts +187 -48
- package/src/gridlist/createGridListItem.ts +87 -155
- package/src/gridlist/createGridListSection.ts +54 -0
- package/src/gridlist/index.ts +3 -0
- package/src/gridlist/types.ts +47 -0
- package/src/index.ts +51 -3
- package/src/interactions/FocusableProvider.tsx +11 -6
- package/src/interactions/PressEvent.ts +14 -0
- package/src/interactions/createFocus.ts +26 -21
- package/src/interactions/createFocusWithin.ts +23 -24
- package/src/interactions/createInteractionModality.ts +26 -15
- package/src/interactions/createKeyboard.ts +10 -0
- package/src/interactions/createPress.ts +29 -6
- package/src/label/createLabels.ts +7 -4
- package/src/listbox/createListBox.ts +203 -10
- package/src/listbox/createOption.ts +84 -74
- package/src/menu/createMenu.ts +93 -16
- package/src/menu/createMenuItem.ts +253 -41
- package/src/numberfield/createNumberField.ts +82 -14
- package/src/popover/calculatePosition.ts +19 -7
- package/src/popover/createOverlayPosition.ts +9 -0
- package/src/radio/createRadio.ts +19 -2
- package/src/select/createSelect.ts +41 -4
- package/src/selection/DOMLayoutDelegate.ts +102 -0
- package/src/selection/ListKeyboardDelegate.ts +398 -0
- package/src/selection/constants.ts +16 -0
- package/src/selection/createCollectionRowInteraction.ts +209 -0
- package/src/selection/createScrollIntoViewOnFocus.ts +65 -0
- package/src/selection/createSelectableCollection.ts +645 -0
- package/src/selection/createSelectableItem.ts +512 -0
- package/src/selection/createSelectableList.ts +93 -0
- package/src/selection/createTypeSelect.ts +112 -51
- package/src/selection/index.ts +31 -0
- package/src/selection/selectItem.ts +80 -0
- package/src/selection/utils.ts +82 -0
- package/src/slider/createSlider.ts +48 -1
- package/src/spinbutton/createSpinButton.ts +163 -0
- package/src/spinbutton/index.ts +10 -0
- package/src/spinbutton/intl.ts +115 -0
- package/src/ssr/index.tsx +31 -0
- package/src/switch/createSwitch.ts +10 -0
- package/src/table/createTable.ts +82 -27
- package/src/table/createTableColumnHeader.ts +10 -0
- package/src/table/createTableRow.ts +208 -203
- package/src/table/createTableSelectAllCheckbox.ts +3 -4
- package/src/table/createTableSelectionCheckbox.ts +24 -1
- package/src/table/types.ts +37 -1
- package/src/table/utils.ts +41 -0
- package/src/tabs/createTabs.ts +95 -24
- package/src/tag/createTag.ts +30 -36
- package/src/tag/createTagGroup.ts +92 -0
- package/src/toast/createToast.ts +1 -0
- package/src/toggle/createToggle.ts +20 -0
- package/src/toolbar/createToolbar.ts +43 -94
- package/src/tree/createTree.ts +165 -52
- package/src/tree/createTreeItem.ts +105 -120
- package/src/tree/createTreeSelectionCheckbox.ts +14 -1
- package/src/tree/types.ts +10 -0
- package/src/utils/animation.ts +243 -0
- package/src/utils/dom.ts +216 -25
- package/src/utils/index.ts +10 -0
- package/src/utils/keyboard.ts +25 -0
- package/src/utils/mergeProps.ts +8 -1
- package/src/utils/scrollIntoView.ts +181 -0
- package/dist/datepicker/createTimeSegment.d.ts +0 -29
- package/dist/datepicker/createTimeSegment.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
- package/src/datepicker/createTimeSegment.ts +0 -352
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createCalendarMonthPicker hook for Solidaria
|
|
3
|
+
*
|
|
4
|
+
* Provides the behavior and accessibility implementation for a month picker
|
|
5
|
+
* within a calendar — a listbox/select that jumps the focused date to a chosen
|
|
6
|
+
* month of the focused year.
|
|
7
|
+
* Based on @react-aria/calendar useCalendarMonthPicker.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { createMemo } from "solid-js";
|
|
11
|
+
import { DateFormatter, type CalendarDate } from "@internationalized/date";
|
|
12
|
+
import type { CalendarState, RangeCalendarState } from "@proyecto-viviana/solid-stately";
|
|
13
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
14
|
+
import { useLocale } from "../i18n";
|
|
15
|
+
|
|
16
|
+
type Key = string | number;
|
|
17
|
+
|
|
18
|
+
export interface CalendarMonthPickerProps {
|
|
19
|
+
/** The format of the month to display in the picker. @default 'short' */
|
|
20
|
+
format?: "numeric" | "2-digit" | "long" | "short" | "narrow";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface CalendarMonthPickerItem {
|
|
24
|
+
/** The 1-based month number, used as the item's key. */
|
|
25
|
+
id: number;
|
|
26
|
+
/** The first day of the month. */
|
|
27
|
+
date: CalendarDate;
|
|
28
|
+
/** The localized month name. */
|
|
29
|
+
formatted: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface CalendarMonthPickerAria {
|
|
33
|
+
/** An accessible label for the month picker. */
|
|
34
|
+
"aria-label": string;
|
|
35
|
+
/** The key of the currently focused month (its 1-based number). */
|
|
36
|
+
value: Key;
|
|
37
|
+
/** Handler that moves focus to the selected month. */
|
|
38
|
+
onChange: (key: Key | null) => void;
|
|
39
|
+
/** The list of selectable months in the focused year. */
|
|
40
|
+
items: CalendarMonthPickerItem[];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Provides the behavior and accessibility implementation for a month picker
|
|
45
|
+
* within a calendar.
|
|
46
|
+
*/
|
|
47
|
+
export function createCalendarMonthPicker(
|
|
48
|
+
props: MaybeAccessor<CalendarMonthPickerProps>,
|
|
49
|
+
state: CalendarState | RangeCalendarState,
|
|
50
|
+
): CalendarMonthPickerAria {
|
|
51
|
+
const getProps = () => access(props);
|
|
52
|
+
const locale = useLocale();
|
|
53
|
+
|
|
54
|
+
const formatter = createMemo(
|
|
55
|
+
() =>
|
|
56
|
+
new DateFormatter(locale().locale, {
|
|
57
|
+
month: getProps().format ?? "short",
|
|
58
|
+
calendar: state.focusedDate().calendar.identifier,
|
|
59
|
+
timeZone: state.timeZone,
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
// Build the list of months in the focused year. The number of months can vary
|
|
64
|
+
// by year in some calendar systems (e.g. the Hebrew leap year), so derive it
|
|
65
|
+
// from the focused date rather than assuming twelve.
|
|
66
|
+
const items = createMemo<CalendarMonthPickerItem[]>(() => {
|
|
67
|
+
const focused = state.focusedDate();
|
|
68
|
+
const fmt = formatter();
|
|
69
|
+
const numMonths = focused.calendar.getMonthsInYear(focused);
|
|
70
|
+
const months: CalendarMonthPickerItem[] = [];
|
|
71
|
+
for (let i = 1; i <= numMonths; i++) {
|
|
72
|
+
const date = focused.set({ month: i });
|
|
73
|
+
// Calendars that offset their month numbering (e.g. fiscal calendars)
|
|
74
|
+
// expose getFormattableMonth to map back to the displayable month.
|
|
75
|
+
const displayDate = date.calendar.getFormattableMonth?.(date) ?? date;
|
|
76
|
+
months.push({
|
|
77
|
+
id: i,
|
|
78
|
+
date,
|
|
79
|
+
formatted: fmt.format(displayDate.toDate(state.timeZone)),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return months;
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const ariaLabel = createMemo(
|
|
86
|
+
() => new Intl.DisplayNames(locale().locale, { type: "dateTimeField" }).of("month") ?? "month",
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
return {
|
|
90
|
+
get "aria-label"() {
|
|
91
|
+
return ariaLabel();
|
|
92
|
+
},
|
|
93
|
+
get value() {
|
|
94
|
+
return state.focusedDate().month;
|
|
95
|
+
},
|
|
96
|
+
onChange: (key) => {
|
|
97
|
+
if (key != null) {
|
|
98
|
+
state.setFocusedDate(items()[Number(key) - 1].date);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
get items() {
|
|
102
|
+
return items();
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createCalendarYearPicker hook for Solidaria
|
|
3
|
+
*
|
|
4
|
+
* Provides the behavior and accessibility implementation for a year picker
|
|
5
|
+
* within a calendar — a listbox/select that jumps the focused date to a chosen
|
|
6
|
+
* year within a sliding window centered on the focused year.
|
|
7
|
+
* Based on @react-aria/calendar useCalendarYearPicker.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { createMemo } from "solid-js";
|
|
11
|
+
import {
|
|
12
|
+
DateFormatter,
|
|
13
|
+
isSameYear,
|
|
14
|
+
toCalendarDate,
|
|
15
|
+
type CalendarDate,
|
|
16
|
+
} from "@internationalized/date";
|
|
17
|
+
import type { CalendarState, RangeCalendarState } from "@proyecto-viviana/solid-stately";
|
|
18
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
19
|
+
import { useLocale } from "../i18n";
|
|
20
|
+
|
|
21
|
+
type Key = string | number;
|
|
22
|
+
|
|
23
|
+
export interface CalendarYearPickerFormatOptions {
|
|
24
|
+
/** The format of the year. @default 'numeric' */
|
|
25
|
+
year?: "numeric" | "2-digit";
|
|
26
|
+
/** The format of the era. */
|
|
27
|
+
era?: "long" | "short" | "narrow";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface CalendarYearPickerProps {
|
|
31
|
+
/** The number of years to display in the picker. @default 20 */
|
|
32
|
+
visibleYears?: number;
|
|
33
|
+
/** The format of the year/era to display. */
|
|
34
|
+
format?: CalendarYearPickerFormatOptions;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface CalendarYearPickerItem {
|
|
38
|
+
/** The index of the year within the visible window, used as the item's key. */
|
|
39
|
+
id: number;
|
|
40
|
+
/** The first day of the year. */
|
|
41
|
+
date: CalendarDate;
|
|
42
|
+
/** The localized year name. */
|
|
43
|
+
formatted: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface CalendarYearPickerAria {
|
|
47
|
+
/** An accessible label for the year picker. */
|
|
48
|
+
"aria-label": string;
|
|
49
|
+
/** The key of the currently focused year (its index in the visible window). */
|
|
50
|
+
value: Key;
|
|
51
|
+
/** Handler that moves focus to the selected year. */
|
|
52
|
+
onChange: (key: Key | null) => void;
|
|
53
|
+
/** The list of selectable years in the visible window. */
|
|
54
|
+
items: CalendarYearPickerItem[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Provides the behavior and accessibility implementation for a year picker
|
|
59
|
+
* within a calendar.
|
|
60
|
+
*/
|
|
61
|
+
export function createCalendarYearPicker(
|
|
62
|
+
props: MaybeAccessor<CalendarYearPickerProps>,
|
|
63
|
+
state: CalendarState | RangeCalendarState,
|
|
64
|
+
): CalendarYearPickerAria {
|
|
65
|
+
const getProps = () => access(props);
|
|
66
|
+
const locale = useLocale();
|
|
67
|
+
|
|
68
|
+
const formatter = createMemo(() => {
|
|
69
|
+
const focused = state.focusedDate();
|
|
70
|
+
const format = getProps().format;
|
|
71
|
+
return new DateFormatter(locale().locale, {
|
|
72
|
+
year: format?.year ?? "numeric",
|
|
73
|
+
era:
|
|
74
|
+
format?.era ??
|
|
75
|
+
(focused.calendar.identifier === "gregory" && focused.era === "BC" ? "short" : undefined),
|
|
76
|
+
calendar: focused.calendar.identifier,
|
|
77
|
+
timeZone: state.timeZone,
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Compute a window of years centered on the focused year, then clamp it to the
|
|
82
|
+
// calendar's min/max so the picker never offers an out-of-range year.
|
|
83
|
+
const data = createMemo(() => {
|
|
84
|
+
const focused = state.focusedDate();
|
|
85
|
+
const fmt = formatter();
|
|
86
|
+
// Falsy coercion (not `??`) mirrors upstream `props.visibleYears || 20`, so a
|
|
87
|
+
// `0`/`NaN` visibleYears falls back to the default 20 rather than producing an
|
|
88
|
+
// empty window.
|
|
89
|
+
const visibleYears = getProps().visibleYears || 20;
|
|
90
|
+
let minDate = focused.subtract({ years: Math.floor(visibleYears / 2) });
|
|
91
|
+
let maxDate = focused.add({ years: Math.ceil(visibleYears / 2) - 1 });
|
|
92
|
+
|
|
93
|
+
const stateMax = state.maxValue();
|
|
94
|
+
const stateMin = state.minValue();
|
|
95
|
+
if (stateMax && maxDate.compare(stateMax) > 0) {
|
|
96
|
+
maxDate = toCalendarDate(stateMax);
|
|
97
|
+
minDate = maxDate.subtract({ years: visibleYears - 1 });
|
|
98
|
+
}
|
|
99
|
+
if (stateMin && minDate.compare(stateMin) < 0) {
|
|
100
|
+
minDate = toCalendarDate(stateMin);
|
|
101
|
+
maxDate = minDate.add({ years: visibleYears - 1 });
|
|
102
|
+
if (stateMax && maxDate.compare(stateMax) > 0) {
|
|
103
|
+
maxDate = toCalendarDate(stateMax);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const years: CalendarYearPickerItem[] = [];
|
|
108
|
+
let value: number = 0;
|
|
109
|
+
let date = minDate;
|
|
110
|
+
while (date.compare(maxDate) <= 0) {
|
|
111
|
+
if (isSameYear(date, focused)) {
|
|
112
|
+
value = years.length;
|
|
113
|
+
}
|
|
114
|
+
years.push({
|
|
115
|
+
id: years.length,
|
|
116
|
+
date,
|
|
117
|
+
formatted: fmt.format(date.toDate(state.timeZone)),
|
|
118
|
+
});
|
|
119
|
+
date = date.add({ years: 1 });
|
|
120
|
+
}
|
|
121
|
+
return { items: years, value };
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
const ariaLabel = createMemo(
|
|
125
|
+
() => new Intl.DisplayNames(locale().locale, { type: "dateTimeField" }).of("year") ?? "year",
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
return {
|
|
129
|
+
get "aria-label"() {
|
|
130
|
+
return ariaLabel();
|
|
131
|
+
},
|
|
132
|
+
get value() {
|
|
133
|
+
return data().value;
|
|
134
|
+
},
|
|
135
|
+
onChange: (key) => {
|
|
136
|
+
if (key != null) {
|
|
137
|
+
state.setFocusedDate(data().items[Number(key)].date);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
get items() {
|
|
141
|
+
return data().items;
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
@@ -13,9 +13,9 @@ import type { RangeCalendarState } from "@proyecto-viviana/solid-stately";
|
|
|
13
13
|
import {
|
|
14
14
|
formatSelectedDateDescription,
|
|
15
15
|
formatVisibleRangeDescription,
|
|
16
|
-
getCalendarHookData,
|
|
17
16
|
setCalendarHookData,
|
|
18
17
|
} from "./utils";
|
|
18
|
+
import { formatCalendarLabel } from "./intl";
|
|
19
19
|
|
|
20
20
|
export interface AriaRangeCalendarProps {
|
|
21
21
|
/** An ID for the calendar. */
|
|
@@ -80,16 +80,30 @@ export function createRangeCalendar<T extends RangeCalendarState>(
|
|
|
80
80
|
const selectedDateDescription = createMemo(() => formatSelectedDateDescription(state));
|
|
81
81
|
|
|
82
82
|
const initialProps = getProps();
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
83
|
+
// Gate the hook-data write on an identifying prop, mirroring createCalendar.
|
|
84
|
+
// The headless RangeCalendarButton re-invokes createRangeCalendar({}, state)
|
|
85
|
+
// to read prev/next button props from context; without this gate that bare
|
|
86
|
+
// call would clobber the ariaLabel / selectedDateDescription the owning
|
|
87
|
+
// RangeCalendar published, dropping the calendar label from every grid name.
|
|
88
|
+
if (
|
|
89
|
+
initialProps.id ||
|
|
90
|
+
initialProps["aria-label"] ||
|
|
91
|
+
initialProps["aria-labelledby"] ||
|
|
92
|
+
initialProps["aria-describedby"] ||
|
|
93
|
+
initialProps["aria-details"] ||
|
|
94
|
+
initialProps.errorMessage ||
|
|
95
|
+
initialProps.errorMessageId
|
|
96
|
+
) {
|
|
97
|
+
setCalendarHookData(state, {
|
|
98
|
+
errorMessageId:
|
|
99
|
+
initialProps.errorMessage || initialProps.errorMessageId ? errorMessageId : undefined,
|
|
100
|
+
ariaLabel: initialProps["aria-label"],
|
|
101
|
+
ariaLabelledBy: initialProps["aria-labelledby"],
|
|
102
|
+
get selectedDateDescription() {
|
|
103
|
+
return selectedDateDescription();
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
93
107
|
|
|
94
108
|
// Previous button props
|
|
95
109
|
const prevButtonProps = createMemo(() => {
|
|
@@ -97,14 +111,13 @@ export function createRangeCalendar<T extends RangeCalendarState>(
|
|
|
97
111
|
const isDisabled = p.isDisabled || state.isDisabled() || state.isPreviousVisibleRangeInvalid();
|
|
98
112
|
|
|
99
113
|
return {
|
|
100
|
-
"aria-label":
|
|
114
|
+
"aria-label": formatCalendarLabel(state.locale(), "previous"),
|
|
101
115
|
onClick: () => {
|
|
102
116
|
if (!isDisabled) {
|
|
103
117
|
state.focusPreviousPage();
|
|
104
118
|
}
|
|
105
119
|
},
|
|
106
120
|
disabled: isDisabled,
|
|
107
|
-
tabIndex: -1,
|
|
108
121
|
};
|
|
109
122
|
});
|
|
110
123
|
|
|
@@ -114,14 +127,13 @@ export function createRangeCalendar<T extends RangeCalendarState>(
|
|
|
114
127
|
const isDisabled = p.isDisabled || state.isDisabled() || state.isNextVisibleRangeInvalid();
|
|
115
128
|
|
|
116
129
|
return {
|
|
117
|
-
"aria-label":
|
|
130
|
+
"aria-label": formatCalendarLabel(state.locale(), "next"),
|
|
118
131
|
onClick: () => {
|
|
119
132
|
if (!isDisabled) {
|
|
120
133
|
state.focusNextPage();
|
|
121
134
|
}
|
|
122
135
|
},
|
|
123
136
|
disabled: isDisabled,
|
|
124
|
-
tabIndex: -1,
|
|
125
137
|
};
|
|
126
138
|
});
|
|
127
139
|
|
|
@@ -10,7 +10,12 @@ import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
|
10
10
|
import { focusSafely } from "../utils/focus";
|
|
11
11
|
import { createDescription } from "../utils/createDescription";
|
|
12
12
|
import type { RangeCalendarState, CalendarDate, DateValue } from "@proyecto-viviana/solid-stately";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
isToday as isTodayUtil,
|
|
15
|
+
isSameDay,
|
|
16
|
+
DateFormatter,
|
|
17
|
+
getLocalTimeZone,
|
|
18
|
+
} from "@internationalized/date";
|
|
14
19
|
import { getCalendarHookData, getEraFormat } from "./utils";
|
|
15
20
|
import { formatCalendarLabel, formatCalendarPrompt } from "./intl";
|
|
16
21
|
|
|
@@ -71,7 +76,6 @@ export function createRangeCalendarCell<T extends RangeCalendarState>(
|
|
|
71
76
|
const isSelected = createMemo(() => state.isSelected(date()));
|
|
72
77
|
const isSelectionStart = createMemo(() => state.isSelectionStart(date()));
|
|
73
78
|
const isSelectionEnd = createMemo(() => state.isSelectionEnd(date()));
|
|
74
|
-
const isFocused = createMemo(() => state.isCellFocused(date()));
|
|
75
79
|
const isInvalid = createMemo(() => {
|
|
76
80
|
const range = state.highlightedRange();
|
|
77
81
|
const d = date();
|
|
@@ -91,6 +95,11 @@ export function createRangeCalendarCell<T extends RangeCalendarState>(
|
|
|
91
95
|
const isOutsideMonth = createMemo(() => {
|
|
92
96
|
return getProps().isOutsideMonth ?? state.isOutsideVisibleRange(date());
|
|
93
97
|
});
|
|
98
|
+
// Mirror @react-aria/calendar useCalendarCell: `isCellFocused(date) &&
|
|
99
|
+
// !isOutsideMonth`. isCellFocused is now gated on the calendar-level focus
|
|
100
|
+
// flag, so this drives the focusSafely effect + range-selection prompt (never
|
|
101
|
+
// on mount) — NOT the roving tabIndex, which tracks focusedDate directly.
|
|
102
|
+
const isFocused = createMemo(() => state.isCellFocused(date()) && !isOutsideMonth());
|
|
94
103
|
const isToday = createMemo(() => isTodayUtil(date(), timeZone));
|
|
95
104
|
const rangeSelectionPrompt = createMemo(() => {
|
|
96
105
|
if (!isFocused() || state.isReadOnly() || !isSelectable()) {
|
|
@@ -199,7 +208,12 @@ export function createRangeCalendarCell<T extends RangeCalendarState>(
|
|
|
199
208
|
|
|
200
209
|
return {
|
|
201
210
|
role: "button",
|
|
202
|
-
|
|
211
|
+
// Roving tabbable cell = the focusedDate cell, ungated by calendar focus,
|
|
212
|
+
// mirroring @react-aria/calendar useCalendarCell
|
|
213
|
+
// (`tabIndex = isSameDay(date, state.focusedDate) ? 0 : -1`, undefined when
|
|
214
|
+
// disabled). Keeps one cell tabbable on mount without stealing focus, and
|
|
215
|
+
// prunes tabindex from disabled cells like upstream.
|
|
216
|
+
tabIndex: isDisabled() ? undefined : isSameDay(d, state.focusedDate()) ? 0 : -1,
|
|
203
217
|
"aria-label": label,
|
|
204
218
|
"aria-disabled": isDisabled() || isUnavailable() || undefined,
|
|
205
219
|
"aria-invalid": isInvalid() || undefined,
|
package/src/calendar/index.ts
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
// Calendar
|
|
2
2
|
export { createCalendar, type AriaCalendarProps, type CalendarAria } from "./createCalendar";
|
|
3
3
|
|
|
4
|
+
// Calendar Month Picker
|
|
5
|
+
export {
|
|
6
|
+
createCalendarMonthPicker,
|
|
7
|
+
type CalendarMonthPickerProps,
|
|
8
|
+
type CalendarMonthPickerItem,
|
|
9
|
+
type CalendarMonthPickerAria,
|
|
10
|
+
} from "./createCalendarMonthPicker";
|
|
11
|
+
|
|
12
|
+
// Calendar Year Picker
|
|
13
|
+
export {
|
|
14
|
+
createCalendarYearPicker,
|
|
15
|
+
type CalendarYearPickerProps,
|
|
16
|
+
type CalendarYearPickerFormatOptions,
|
|
17
|
+
type CalendarYearPickerItem,
|
|
18
|
+
type CalendarYearPickerAria,
|
|
19
|
+
} from "./createCalendarYearPicker";
|
|
20
|
+
|
|
4
21
|
// Calendar Grid
|
|
5
22
|
export {
|
|
6
23
|
createCalendarGrid,
|
|
@@ -10,6 +10,8 @@ type CalendarLabelKey =
|
|
|
10
10
|
| "dateSelected"
|
|
11
11
|
| "maximumDate"
|
|
12
12
|
| "minimumDate"
|
|
13
|
+
| "next"
|
|
14
|
+
| "previous"
|
|
13
15
|
| "selectedDateDescription"
|
|
14
16
|
| "selectedRangeDescription"
|
|
15
17
|
| "todayDate"
|
|
@@ -169,6 +171,8 @@ const calendarLabelStrings: LocalizedStrings<CalendarLabelKey, CalendarLabelMess
|
|
|
169
171
|
dateSelected: (args) => `${args?.date} selected`,
|
|
170
172
|
maximumDate: "Last available date",
|
|
171
173
|
minimumDate: "First available date",
|
|
174
|
+
next: "Next",
|
|
175
|
+
previous: "Previous",
|
|
172
176
|
selectedDateDescription: (args) => `Selected Date: ${args?.date}`,
|
|
173
177
|
selectedRangeDescription: (args) => `Selected Range: ${args?.dateRange}`,
|
|
174
178
|
todayDate: (args) => `Today, ${args?.date}`,
|
|
@@ -181,6 +185,8 @@ const calendarLabelStrings: LocalizedStrings<CalendarLabelKey, CalendarLabelMess
|
|
|
181
185
|
minimumDate: "Première date disponible",
|
|
182
186
|
selectedDateDescription: (args) => `Date sélectionnée : ${args?.date}`,
|
|
183
187
|
selectedRangeDescription: (args) => `Plage sélectionnée : ${args?.dateRange}`,
|
|
188
|
+
next: "Suivant",
|
|
189
|
+
previous: "Précédent",
|
|
184
190
|
todayDate: (args) => `Aujourd'hui, ${args?.date}`,
|
|
185
191
|
todayDateSelected: (args) => `Aujourd’hui, ${args?.date} sélectionné`,
|
|
186
192
|
},
|
|
@@ -189,6 +195,8 @@ const calendarLabelStrings: LocalizedStrings<CalendarLabelKey, CalendarLabelMess
|
|
|
189
195
|
dateSelected: (args) => `${args?.date} المحدد`,
|
|
190
196
|
maximumDate: "آخر تاريخ متاح",
|
|
191
197
|
minimumDate: "أول تاريخ متاح",
|
|
198
|
+
next: "التالي",
|
|
199
|
+
previous: "السابق",
|
|
192
200
|
selectedDateDescription: (args) => `تاريخ محدد: ${args?.date}`,
|
|
193
201
|
selectedRangeDescription: (args) => `المدى الزمني المحدد: ${args?.dateRange}`,
|
|
194
202
|
todayDate: (args) => `اليوم، ${args?.date}`,
|
package/src/calendar/utils.ts
CHANGED
|
@@ -11,6 +11,10 @@ import { formatCalendarLabel } from "./intl";
|
|
|
11
11
|
export interface CalendarHookData {
|
|
12
12
|
errorMessageId?: string;
|
|
13
13
|
selectedDateDescription?: string;
|
|
14
|
+
/** The calendar's accessible label, shared with each grid (mirrors @react-aria/calendar hookData.ariaLabel). */
|
|
15
|
+
ariaLabel?: string;
|
|
16
|
+
/** The id of an element labelling the calendar, shared with each grid (mirrors hookData.ariaLabelledBy). */
|
|
17
|
+
ariaLabelledBy?: string;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
const hookData = new WeakMap<CalendarState | RangeCalendarState, CalendarHookData>();
|
|
@@ -37,6 +37,10 @@ export interface CheckboxAria {
|
|
|
37
37
|
labelProps: JSX.LabelHTMLAttributes<HTMLLabelElement>;
|
|
38
38
|
/** Props for the input element. */
|
|
39
39
|
inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
40
|
+
/** Props for the checkbox description element, if any. */
|
|
41
|
+
descriptionProps: JSX.HTMLAttributes<HTMLElement>;
|
|
42
|
+
/** Props for the checkbox error message element, if any. */
|
|
43
|
+
errorMessageProps: JSX.HTMLAttributes<HTMLElement>;
|
|
40
44
|
/** Whether the checkbox is selected. */
|
|
41
45
|
isSelected: Accessor<boolean>;
|
|
42
46
|
/** Whether the checkbox is in a pressed state. */
|
|
@@ -118,6 +122,12 @@ export function createCheckbox(
|
|
|
118
122
|
required: isRequired && validationBehavior === "native",
|
|
119
123
|
}) as JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
120
124
|
},
|
|
125
|
+
get descriptionProps() {
|
|
126
|
+
return toggleResult.descriptionProps;
|
|
127
|
+
},
|
|
128
|
+
get errorMessageProps() {
|
|
129
|
+
return toggleResult.errorMessageProps;
|
|
130
|
+
},
|
|
121
131
|
isSelected,
|
|
122
132
|
isPressed,
|
|
123
133
|
isDisabled,
|
|
@@ -80,22 +80,18 @@ export function createCheckboxGroupItem(
|
|
|
80
80
|
const baseInputProps = result.inputProps;
|
|
81
81
|
const groupData = getGroupData();
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
describedByIds.push(groupData.descriptionId);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(" ") : undefined;
|
|
83
|
+
// Mirror upstream useCheckboxGroupItem: keep the checkbox's own
|
|
84
|
+
// aria-describedby (its description/error slot ids from createCheckbox/
|
|
85
|
+
// createToggle, which already fold in the user's aria-describedby) and append
|
|
86
|
+
// the group's shared description/error ids.
|
|
87
|
+
const ariaDescribedBy =
|
|
88
|
+
[
|
|
89
|
+
baseInputProps["aria-describedby"],
|
|
90
|
+
state.isInvalid && groupData?.errorMessageId ? groupData.errorMessageId : null,
|
|
91
|
+
groupData?.descriptionId,
|
|
92
|
+
]
|
|
93
|
+
.filter(Boolean)
|
|
94
|
+
.join(" ") || undefined;
|
|
99
95
|
|
|
100
96
|
return {
|
|
101
97
|
...baseInputProps,
|
|
@@ -9,6 +9,7 @@ import type { Color, ColorAreaState, ColorChannel } from "@proyecto-viviana/soli
|
|
|
9
9
|
import { parseColor } from "@proyecto-viviana/solid-stately";
|
|
10
10
|
import { useLocale } from "../i18n";
|
|
11
11
|
import { createId } from "../ssr";
|
|
12
|
+
import { createColorStringFormatter } from "./intl";
|
|
12
13
|
import type { AriaColorAreaOptions, ColorAreaAria } from "./types";
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -22,6 +23,7 @@ export function createColorArea(
|
|
|
22
23
|
const getProps = () => props();
|
|
23
24
|
const getState = () => state();
|
|
24
25
|
const locale = useLocale();
|
|
26
|
+
const stringFormatter = createColorStringFormatter();
|
|
25
27
|
const isRTL = () => locale().direction === "rtl";
|
|
26
28
|
const [focusedInput, setFocusedInput] = createSignal<"x" | "y" | null>(null);
|
|
27
29
|
const [valueChangedViaKeyboard, setValueChangedViaKeyboard] = createSignal(false);
|
|
@@ -32,11 +34,18 @@ export function createColorArea(
|
|
|
32
34
|
const xInputId = createId();
|
|
33
35
|
const yInputId = createId();
|
|
34
36
|
|
|
35
|
-
const colorPickerLabel = () => "
|
|
37
|
+
const colorPickerLabel = () => stringFormatter().format("colorPicker");
|
|
36
38
|
const colorInputLabel = () => {
|
|
37
39
|
const ariaLabel = getProps()["aria-label"];
|
|
38
|
-
return ariaLabel
|
|
40
|
+
return ariaLabel
|
|
41
|
+
? stringFormatter().format("colorInputLabel", {
|
|
42
|
+
label: ariaLabel,
|
|
43
|
+
channelLabel: colorPickerLabel(),
|
|
44
|
+
})
|
|
45
|
+
: colorPickerLabel();
|
|
39
46
|
};
|
|
47
|
+
// Upstream joins the group label with a literal ", " (useColorArea.ts:488),
|
|
48
|
+
// NOT the colorInputLabel message.
|
|
40
49
|
const colorAreaLabel = () => {
|
|
41
50
|
const ariaLabel = getProps()["aria-label"];
|
|
42
51
|
return ariaLabel ? `${ariaLabel}, ${colorPickerLabel()}` : undefined;
|
|
@@ -44,7 +53,10 @@ export function createColorArea(
|
|
|
44
53
|
const formatChannelValueText = (channel: ColorChannel) => {
|
|
45
54
|
const value = getState().getDisplayColor();
|
|
46
55
|
const loc = locale().locale;
|
|
47
|
-
return
|
|
56
|
+
return stringFormatter().format("colorNameAndValue", {
|
|
57
|
+
name: value.getChannelName(channel, loc),
|
|
58
|
+
value: value.formatChannelValue(channel, loc),
|
|
59
|
+
});
|
|
48
60
|
};
|
|
49
61
|
const getAriaValueTextForChannel = (channel: ColorChannel) => {
|
|
50
62
|
const s = getState();
|
|
@@ -355,7 +367,7 @@ export function createColorArea(
|
|
|
355
367
|
type: "range",
|
|
356
368
|
id: p.id ?? xInputId,
|
|
357
369
|
"aria-label": colorInputLabel(),
|
|
358
|
-
"aria-roledescription": "
|
|
370
|
+
"aria-roledescription": stringFormatter().format("twoDimensionalSlider"),
|
|
359
371
|
"aria-valuetext": getAriaValueTextForChannel(s.xChannel),
|
|
360
372
|
"aria-orientation": "horizontal" as const,
|
|
361
373
|
"aria-describedby": p["aria-describedby"],
|
|
@@ -375,11 +387,6 @@ export function createColorArea(
|
|
|
375
387
|
onKeyDown,
|
|
376
388
|
onInput: (e: Event) => updateFromInput(e, "x"),
|
|
377
389
|
onChange: (e: Event) => updateFromInput(e, "x"),
|
|
378
|
-
onBlur: () => {
|
|
379
|
-
if (s.isDragging) {
|
|
380
|
-
s.setDragging(false);
|
|
381
|
-
}
|
|
382
|
-
},
|
|
383
390
|
tabIndex: !focusedInput() || focusedInput() === "x" ? undefined : -1,
|
|
384
391
|
style: {
|
|
385
392
|
position: "absolute" as const,
|
|
@@ -405,7 +412,7 @@ export function createColorArea(
|
|
|
405
412
|
type: "range",
|
|
406
413
|
id: p.id ?? yInputId,
|
|
407
414
|
"aria-label": colorInputLabel(),
|
|
408
|
-
"aria-roledescription": "
|
|
415
|
+
"aria-roledescription": stringFormatter().format("twoDimensionalSlider"),
|
|
409
416
|
"aria-valuetext": getAriaValueTextForChannel(s.yChannel),
|
|
410
417
|
"aria-orientation": "vertical" as const,
|
|
411
418
|
"aria-describedby": p["aria-describedby"],
|
|
@@ -134,7 +134,14 @@ export function createColorField(
|
|
|
134
134
|
disabled: isDisabled(),
|
|
135
135
|
readOnly: isReadOnly(),
|
|
136
136
|
required: validationBehavior() === "native" ? required || undefined : undefined,
|
|
137
|
-
|
|
137
|
+
// Upstream routes the input through useFormattedTextField → useTextField →
|
|
138
|
+
// useFocusable, which ALWAYS sets a tabIndex ("so that Safari allows focusing
|
|
139
|
+
// native buttons and inputs"): `excludeFromTabOrder ? -1 : 0`, then `undefined`
|
|
140
|
+
// when disabled (useFocusable.mjs:65-66). We hand-roll inputProps, so replay that
|
|
141
|
+
// one focusable prop here — the port previously dropped the default `0`, so the
|
|
142
|
+
// rendered input carried no `tabindex` while React's carries `tabindex="0"` (a D5
|
|
143
|
+
// focus-trail divergence), exactly as createNumberField already replays it.
|
|
144
|
+
tabIndex: isDisabled() ? undefined : p.excludeFromTabOrder ? -1 : 0,
|
|
138
145
|
autoComplete: "off",
|
|
139
146
|
autoCorrect: "off",
|
|
140
147
|
spellCheck: "false",
|
|
@@ -44,7 +44,7 @@ export function createColorSlider(
|
|
|
44
44
|
const p = getProps();
|
|
45
45
|
if (p.channelName) return p.channelName;
|
|
46
46
|
const s = getState();
|
|
47
|
-
return s.value.getChannelName(s.channel,
|
|
47
|
+
return s.value.getChannelName(s.channel, locale().locale);
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
const orientation = () => getProps().orientation ?? "horizontal";
|
|
@@ -325,7 +325,6 @@ export function createColorSlider(
|
|
|
325
325
|
const y = orientation() === "horizontal" ? 0.5 : 1 - percent;
|
|
326
326
|
|
|
327
327
|
return {
|
|
328
|
-
role: "presentation" as const,
|
|
329
328
|
onKeyDown,
|
|
330
329
|
style: {
|
|
331
330
|
position: "absolute" as const,
|
|
@@ -9,6 +9,7 @@ import { normalizeColor } from "@proyecto-viviana/solid-stately";
|
|
|
9
9
|
import { useLocale } from "../i18n";
|
|
10
10
|
import { createId } from "../ssr";
|
|
11
11
|
import { filterDOMProps } from "../utils/filterDOMProps";
|
|
12
|
+
import { createColorStringFormatter } from "./intl";
|
|
12
13
|
import type { AriaColorSwatchOptions, ColorSwatchAria } from "./types";
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -17,6 +18,7 @@ import type { AriaColorSwatchOptions, ColorSwatchAria } from "./types";
|
|
|
17
18
|
export function createColorSwatch(props: Accessor<AriaColorSwatchOptions>): ColorSwatchAria {
|
|
18
19
|
const getProps = () => props();
|
|
19
20
|
const locale = useLocale();
|
|
21
|
+
const stringFormatter = createColorStringFormatter();
|
|
20
22
|
const generatedId = createId();
|
|
21
23
|
const id = () => getProps().id ?? generatedId;
|
|
22
24
|
|
|
@@ -28,7 +30,7 @@ export function createColorSwatch(props: Accessor<AriaColorSwatchOptions>): Colo
|
|
|
28
30
|
|
|
29
31
|
const resolvedColor = color();
|
|
30
32
|
if (resolvedColor.getChannelValue("alpha") === 0) {
|
|
31
|
-
return "transparent";
|
|
33
|
+
return stringFormatter().format("transparent");
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
return resolvedColor.getColorName(locale().locale);
|
|
@@ -44,7 +46,7 @@ export function createColorSwatch(props: Accessor<AriaColorSwatchOptions>): Colo
|
|
|
44
46
|
id: id(),
|
|
45
47
|
slot: p.slot,
|
|
46
48
|
role: "img" as const,
|
|
47
|
-
"aria-roledescription": "
|
|
49
|
+
"aria-roledescription": stringFormatter().format("colorSwatch"),
|
|
48
50
|
"aria-label": ariaLabel,
|
|
49
51
|
"aria-labelledby": p["aria-labelledby"] ? `${id()} ${p["aria-labelledby"]}` : undefined,
|
|
50
52
|
style: {
|