@proyecto-viviana/solidaria 0.4.0 → 0.4.2
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 +13 -79
- package/dist/_chunk/actiongroup.js.map +1 -1
- package/dist/_chunk/actiongroup.jsx +13 -79
- package/dist/_chunk/actiongroup.jsx.map +1 -1
- package/dist/_chunk/{live-announcer.js → announce.js} +1 -1
- package/dist/_chunk/announce.js.map +1 -0
- package/dist/_chunk/{live-announcer.jsx → announce.jsx} +1 -1
- package/dist/_chunk/announce.jsx.map +1 -0
- package/dist/_chunk/autocomplete.js +56 -8
- package/dist/_chunk/autocomplete.js.map +1 -1
- package/dist/_chunk/autocomplete.jsx +56 -8
- package/dist/_chunk/autocomplete.jsx.map +1 -1
- package/dist/_chunk/breadcrumbs.js +6 -4
- package/dist/_chunk/breadcrumbs.js.map +1 -1
- package/dist/_chunk/breadcrumbs.jsx +6 -4
- package/dist/_chunk/breadcrumbs.jsx.map +1 -1
- package/dist/_chunk/button.js +8 -9
- package/dist/_chunk/button.js.map +1 -1
- package/dist/_chunk/button.jsx +8 -9
- package/dist/_chunk/button.jsx.map +1 -1
- package/dist/_chunk/calendar.js +27 -26
- package/dist/_chunk/calendar.js.map +1 -1
- package/dist/_chunk/calendar.jsx +27 -26
- package/dist/_chunk/calendar.jsx.map +1 -1
- package/dist/_chunk/checkbox.js +5 -4
- package/dist/_chunk/checkbox.js.map +1 -1
- package/dist/_chunk/checkbox.jsx +5 -4
- package/dist/_chunk/checkbox.jsx.map +1 -1
- package/dist/_chunk/color.js +302 -18
- package/dist/_chunk/color.js.map +1 -1
- package/dist/_chunk/color.jsx +302 -18
- package/dist/_chunk/color.jsx.map +1 -1
- package/dist/_chunk/combobox.js +638 -12
- package/dist/_chunk/combobox.js.map +1 -1
- package/dist/_chunk/combobox.jsx +638 -12
- package/dist/_chunk/combobox.jsx.map +1 -1
- 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 +3 -171
- package/dist/_chunk/createCollator.js.map +1 -1
- package/dist/_chunk/createCollator.jsx +3 -165
- package/dist/_chunk/createCollator.jsx.map +1 -1
- package/dist/_chunk/createField.js +2 -1
- package/dist/_chunk/createField.js.map +1 -1
- package/dist/_chunk/createField.jsx +2 -1
- package/dist/_chunk/createField.jsx.map +1 -1
- package/dist/_chunk/createFocus.js +12 -8
- package/dist/_chunk/createFocus.js.map +1 -1
- package/dist/_chunk/createFocus.jsx +12 -8
- package/dist/_chunk/createFocus.jsx.map +1 -1
- package/dist/_chunk/createFocusWithin.js +12 -13
- package/dist/_chunk/createFocusWithin.js.map +1 -1
- package/dist/_chunk/createFocusWithin.jsx +12 -13
- package/dist/_chunk/createFocusWithin.jsx.map +1 -1
- package/dist/_chunk/createFocusable.js +3 -3
- package/dist/_chunk/createFocusable.js.map +1 -1
- package/dist/_chunk/createFocusable.jsx +3 -3
- package/dist/_chunk/createFocusable.jsx.map +1 -1
- package/dist/_chunk/{form.js → createFormReset.js} +1 -1
- package/dist/_chunk/createFormReset.js.map +1 -0
- package/dist/_chunk/{form.jsx → createFormReset.jsx} +1 -1
- package/dist/_chunk/createFormReset.jsx.map +1 -0
- package/dist/_chunk/createHover.js +2 -1
- package/dist/_chunk/createHover.js.map +1 -1
- package/dist/_chunk/createHover.jsx +2 -1
- package/dist/_chunk/createHover.jsx.map +1 -1
- package/dist/_chunk/createInteractionModality.js +2 -3
- package/dist/_chunk/createInteractionModality.js.map +1 -1
- package/dist/_chunk/createInteractionModality.jsx +2 -3
- package/dist/_chunk/createInteractionModality.jsx.map +1 -1
- package/dist/_chunk/createLabel.js +2 -1
- package/dist/_chunk/createLabel.js.map +1 -1
- package/dist/_chunk/createLabel.jsx +2 -1
- package/dist/_chunk/createLabel.jsx.map +1 -1
- package/dist/_chunk/createLabels.js +3 -2
- package/dist/_chunk/createLabels.js.map +1 -1
- package/dist/_chunk/createLabels.jsx +3 -2
- package/dist/_chunk/createLabels.jsx.map +1 -1
- package/dist/_chunk/createLandmark.js +1 -1
- package/dist/_chunk/createLandmark.jsx +1 -1
- package/dist/_chunk/createProgressBar.js +2 -1
- package/dist/_chunk/createProgressBar.js.map +1 -1
- package/dist/_chunk/createProgressBar.jsx +2 -1
- package/dist/_chunk/createProgressBar.jsx.map +1 -1
- package/dist/_chunk/createSelectableItem.js +7 -3
- package/dist/_chunk/createSelectableItem.js.map +1 -1
- package/dist/_chunk/createSelectableItem.jsx +7 -3
- package/dist/_chunk/createSelectableItem.jsx.map +1 -1
- 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 +5 -4
- package/dist/_chunk/createToggle.js.map +1 -1
- package/dist/_chunk/createToggle.jsx +5 -4
- package/dist/_chunk/createToggle.jsx.map +1 -1
- package/dist/_chunk/datepicker.js +1413 -1100
- package/dist/_chunk/datepicker.js.map +1 -1
- package/dist/_chunk/datepicker.jsx +1413 -1100
- package/dist/_chunk/datepicker.jsx.map +1 -1
- package/dist/_chunk/disclosure.js +2 -2
- package/dist/_chunk/disclosure.js.map +1 -1
- package/dist/_chunk/disclosure.jsx +2 -2
- package/dist/_chunk/disclosure.jsx.map +1 -1
- package/dist/_chunk/dnd.js +1586 -495
- package/dist/_chunk/dnd.js.map +1 -1
- package/dist/_chunk/dnd.jsx +1586 -495
- package/dist/_chunk/dnd.jsx.map +1 -1
- package/dist/_chunk/env.js +1 -19
- package/dist/_chunk/env.js.map +1 -1
- package/dist/_chunk/env.jsx +1 -19
- package/dist/_chunk/env.jsx.map +1 -1
- package/dist/_chunk/focus.js +1 -1
- package/dist/_chunk/focus.js.map +1 -1
- package/dist/_chunk/focus.jsx +1 -1
- package/dist/_chunk/focus.jsx.map +1 -1
- package/dist/_chunk/focus2.js +54 -318
- package/dist/_chunk/focus2.js.map +1 -1
- package/dist/_chunk/focus2.jsx +53 -292
- package/dist/_chunk/focus2.jsx.map +1 -1
- package/dist/_chunk/grid.js +1 -1
- package/dist/_chunk/grid.jsx +1 -1
- package/dist/_chunk/gridlist.js +14 -9
- package/dist/_chunk/gridlist.js.map +1 -1
- package/dist/_chunk/gridlist.jsx +14 -9
- package/dist/_chunk/gridlist.jsx.map +1 -1
- package/dist/_chunk/i18n.js +3 -58
- package/dist/_chunk/i18n.js.map +1 -1
- package/dist/_chunk/i18n.jsx +3 -58
- package/dist/_chunk/i18n.jsx.map +1 -1
- package/dist/_chunk/interactions.js +99 -9
- package/dist/_chunk/interactions.js.map +1 -1
- package/dist/_chunk/interactions.jsx +97 -9
- package/dist/_chunk/interactions.jsx.map +1 -1
- package/dist/_chunk/link.js +2 -1
- package/dist/_chunk/link.js.map +1 -1
- package/dist/_chunk/link.jsx +2 -1
- package/dist/_chunk/link.jsx.map +1 -1
- package/dist/_chunk/listbox.js +42 -10
- package/dist/_chunk/listbox.js.map +1 -1
- package/dist/_chunk/listbox.jsx +42 -10
- package/dist/_chunk/listbox.jsx.map +1 -1
- 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 +5 -4
- package/dist/_chunk/menu.js.map +1 -1
- package/dist/_chunk/menu.jsx +5 -4
- package/dist/_chunk/menu.jsx.map +1 -1
- package/dist/_chunk/numberfield.js +3 -2
- package/dist/_chunk/numberfield.js.map +1 -1
- package/dist/_chunk/numberfield.jsx +3 -2
- package/dist/_chunk/numberfield.jsx.map +1 -1
- package/dist/_chunk/overlays.js +1 -1
- package/dist/_chunk/overlays.jsx +1 -1
- package/dist/_chunk/popover.js +3 -3
- package/dist/_chunk/popover.js.map +1 -1
- package/dist/_chunk/popover.jsx +3 -3
- package/dist/_chunk/popover.jsx.map +1 -1
- package/dist/_chunk/radio.js +7 -6
- package/dist/_chunk/radio.js.map +1 -1
- package/dist/_chunk/radio.jsx +7 -6
- package/dist/_chunk/radio.jsx.map +1 -1
- 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 +2 -1
- package/dist/_chunk/searchfield.js.map +1 -1
- package/dist/_chunk/searchfield.jsx +2 -1
- package/dist/_chunk/searchfield.jsx.map +1 -1
- package/dist/_chunk/select.js +8 -5
- package/dist/_chunk/select.js.map +1 -1
- package/dist/_chunk/select.jsx +8 -5
- package/dist/_chunk/select.jsx.map +1 -1
- package/dist/_chunk/selection.js +8 -21
- package/dist/_chunk/selection.js.map +1 -1
- package/dist/_chunk/selection.jsx +8 -21
- package/dist/_chunk/selection.jsx.map +1 -1
- package/dist/_chunk/separator.js +1 -1
- package/dist/_chunk/separator.jsx +1 -1
- package/dist/_chunk/slider.js +5 -4
- package/dist/_chunk/slider.js.map +1 -1
- package/dist/_chunk/slider.jsx +5 -4
- package/dist/_chunk/slider.jsx.map +1 -1
- 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/table.js +45 -8
- package/dist/_chunk/table.js.map +1 -1
- package/dist/_chunk/table.jsx +45 -8
- package/dist/_chunk/table.jsx.map +1 -1
- package/dist/_chunk/tabs.js +11 -8
- package/dist/_chunk/tabs.js.map +1 -1
- package/dist/_chunk/tabs.jsx +11 -8
- package/dist/_chunk/tabs.jsx.map +1 -1
- package/dist/_chunk/tag.js +54 -18
- package/dist/_chunk/tag.js.map +1 -1
- package/dist/_chunk/tag.jsx +54 -18
- package/dist/_chunk/tag.jsx.map +1 -1
- package/dist/_chunk/textfield.js +2 -1
- package/dist/_chunk/textfield.js.map +1 -1
- package/dist/_chunk/textfield.jsx +2 -1
- package/dist/_chunk/textfield.jsx.map +1 -1
- package/dist/_chunk/toolbar.js +4 -36
- package/dist/_chunk/toolbar.js.map +1 -1
- package/dist/_chunk/toolbar.jsx +4 -36
- package/dist/_chunk/toolbar.jsx.map +1 -1
- package/dist/_chunk/tooltip.js +2 -2
- package/dist/_chunk/tooltip.js.map +1 -1
- package/dist/_chunk/tooltip.jsx +2 -2
- package/dist/_chunk/tooltip.jsx.map +1 -1
- package/dist/_chunk/tree.js +42 -14
- package/dist/_chunk/tree.js.map +1 -1
- package/dist/_chunk/tree.jsx +42 -14
- package/dist/_chunk/tree.jsx.map +1 -1
- package/dist/_chunk/utils.js +59 -19
- package/dist/_chunk/utils.js.map +1 -1
- package/dist/_chunk/utils.jsx +59 -19
- package/dist/_chunk/utils.jsx.map +1 -1
- package/dist/_chunk/visually-hidden.js +3 -2
- package/dist/_chunk/visually-hidden.js.map +1 -1
- package/dist/_chunk/visually-hidden.jsx +3 -2
- package/dist/_chunk/visually-hidden.jsx.map +1 -1
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +10 -7
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- 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/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +1 -1
- package/dist/calendar/intl/index.d.ts.map +1 -1
- package/dist/collections/index.js +1 -1
- package/dist/collections/index.jsx +1 -1
- 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/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/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 -2
- package/dist/datepicker/index.jsx +2 -2
- package/dist/datepicker/intl.d.ts +12 -0
- package/dist/datepicker/intl.d.ts.map +1 -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 -2
- package/dist/dnd/index.jsx +3 -2
- 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 +5 -0
- 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 -2
- package/dist/focus/index.jsx +3 -2
- package/dist/focus/virtualFocus.d.ts +26 -0
- package/dist/focus/virtualFocus.d.ts.map +1 -0
- package/dist/form/index.js +1 -1
- package/dist/form/index.jsx +1 -1
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/i18n/index.js +4 -2
- package/dist/i18n/index.jsx +4 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -12
- package/dist/index.jsx +18 -12
- package/dist/interactions/FocusableProvider.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.map +1 -1
- package/dist/interactions/index.js +1 -2
- package/dist/interactions/index.jsx +1 -2
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +1 -1
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/live-announcer/index.js +1 -1
- package/dist/live-announcer/index.jsx +1 -1
- package/dist/select/createSelect.d.ts +2 -0
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/selection/createSelectableItem.d.ts.map +1 -1
- package/dist/selection/index.js +2 -1
- package/dist/selection/index.jsx +2 -1
- 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/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
- package/dist/table/types.d.ts +8 -0
- 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 +1 -0
- package/dist/tabs/createTabs.d.ts.map +1 -1
- 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/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/utils/animation.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +1 -0
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -3
- package/dist/utils/index.jsx +4 -3
- package/package.json +2 -2
- package/src/actiongroup/createActionGroup.ts +26 -109
- package/src/autocomplete/createAutocomplete.ts +136 -15
- package/src/breadcrumbs/createBreadcrumbs.ts +12 -4
- package/src/button/createToggleButtonGroup.ts +19 -14
- package/src/calendar/createCalendar.ts +3 -4
- package/src/calendar/createCalendarCell.ts +17 -3
- package/src/calendar/createCalendarGrid.ts +5 -4
- package/src/calendar/createRangeCalendar.ts +27 -17
- package/src/calendar/createRangeCalendarCell.ts +17 -3
- package/src/calendar/intl/index.ts +8 -0
- 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 -389
- 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 +487 -373
- 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 +36 -0
- package/src/focus/FocusScope.tsx +120 -12
- package/src/focus/index.ts +8 -0
- package/src/focus/virtualFocus.ts +55 -0
- package/src/gridlist/createGridList.ts +52 -16
- package/src/index.ts +11 -3
- package/src/interactions/FocusableProvider.tsx +11 -6
- package/src/interactions/createFocus.ts +26 -21
- package/src/interactions/createFocusWithin.ts +23 -24
- package/src/interactions/createInteractionModality.ts +5 -3
- package/src/label/createLabels.ts +7 -4
- package/src/listbox/createListBox.ts +74 -2
- package/src/listbox/createOption.ts +16 -1
- package/src/select/createSelect.ts +23 -2
- package/src/selection/createSelectableItem.ts +14 -0
- package/src/spinbutton/createSpinButton.ts +163 -0
- package/src/spinbutton/index.ts +10 -0
- package/src/spinbutton/intl.ts +115 -0
- package/src/table/createTable.ts +26 -1
- package/src/table/createTableColumnHeader.ts +10 -0
- package/src/table/createTableRow.ts +10 -0
- package/src/table/createTableSelectionCheckbox.ts +24 -1
- package/src/table/types.ts +8 -0
- package/src/table/utils.ts +41 -0
- package/src/tabs/createTabs.ts +53 -12
- package/src/tag/createTag.ts +21 -32
- package/src/tag/createTagGroup.ts +92 -0
- package/src/toolbar/createToolbar.ts +6 -58
- package/src/tree/createTree.ts +69 -14
- package/src/tree/createTreeSelectionCheckbox.ts +14 -1
- package/src/utils/animation.ts +119 -27
- package/src/utils/dom.ts +3 -2
- package/src/utils/index.ts +2 -0
- package/dist/_chunk/createLongPress.js +0 -91
- package/dist/_chunk/createLongPress.js.map +0 -1
- package/dist/_chunk/createLongPress.jsx +0 -91
- package/dist/_chunk/createLongPress.jsx.map +0 -1
- package/dist/_chunk/form.js.map +0 -1
- package/dist/_chunk/form.jsx.map +0 -1
- package/dist/_chunk/live-announcer.js.map +0 -1
- package/dist/_chunk/live-announcer.jsx.map +0 -1
- package/dist/datepicker/createTimeSegment.d.ts +0 -29
- package/dist/datepicker/createTimeSegment.d.ts.map +0 -1
- package/src/datepicker/createTimeSegment.ts +0 -352
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { t as access } from "./reactivity.js";
|
|
2
|
+
import { n as createStringFormatter } from "./createStringFormatter.js";
|
|
3
|
+
import { n as clearAnnouncer, t as announce } from "./announce.js";
|
|
4
|
+
import { createEffect, createMemo } from "solid-js";
|
|
5
|
+
import { LocalizedStringDictionary } from "@internationalized/string";
|
|
6
|
+
//#region src/spinbutton/intl.ts
|
|
7
|
+
const spinButtonStrings = {
|
|
8
|
+
"ar-AE": { "Empty": `\u{641}\u{627}\u{631}\u{63A}` },
|
|
9
|
+
"bg-BG": { "Empty": `\u{418}\u{437}\u{43F}\u{440}\u{430}\u{437}\u{43D}\u{438}` },
|
|
10
|
+
"cs-CZ": { "Empty": `Pr\xe1zdn\xe9` },
|
|
11
|
+
"da-DK": { "Empty": `Tom` },
|
|
12
|
+
"de-DE": { "Empty": `Leer` },
|
|
13
|
+
"el-GR": { "Empty": `\u{386}\u{3B4}\u{3B5}\u{3B9}\u{3BF}` },
|
|
14
|
+
"en-US": { "Empty": `Empty` },
|
|
15
|
+
"es-ES": { "Empty": `Vac\xedo` },
|
|
16
|
+
"et-EE": { "Empty": `T\xfchjenda` },
|
|
17
|
+
"fi-FI": { "Empty": `Tyhj\xe4` },
|
|
18
|
+
"fr-FR": { "Empty": `Vide` },
|
|
19
|
+
"he-IL": { "Empty": `\u{5E8}\u{5D9}\u{5E7}` },
|
|
20
|
+
"hr-HR": { "Empty": `Prazno` },
|
|
21
|
+
"hu-HU": { "Empty": `\xdcres` },
|
|
22
|
+
"it-IT": { "Empty": `Vuoto` },
|
|
23
|
+
"ja-JP": { "Empty": `\u{7A7A}` },
|
|
24
|
+
"ko-KR": { "Empty": `\u{BE44}\u{C5B4} \u{C788}\u{C74C}` },
|
|
25
|
+
"lt-LT": { "Empty": `Tu\u{161}\u{10D}ias` },
|
|
26
|
+
"lv-LV": { "Empty": `Tuk\u{161}s` },
|
|
27
|
+
"nb-NO": { "Empty": `Tom` },
|
|
28
|
+
"nl-NL": { "Empty": `Leeg` },
|
|
29
|
+
"pl-PL": { "Empty": `Pusty` },
|
|
30
|
+
"pt-BR": { "Empty": `Vazio` },
|
|
31
|
+
"pt-PT": { "Empty": `Vazio` },
|
|
32
|
+
"ro-RO": { "Empty": `Gol` },
|
|
33
|
+
"ru-RU": { "Empty": `\u{41D}\u{435} \u{437}\u{430}\u{43F}\u{43E}\u{43B}\u{43D}\u{435}\u{43D}\u{43E}` },
|
|
34
|
+
"sk-SK": { "Empty": `Pr\xe1zdne` },
|
|
35
|
+
"sl-SI": { "Empty": `Prazen` },
|
|
36
|
+
"sr-SP": { "Empty": `Prazno` },
|
|
37
|
+
"sv-SE": { "Empty": `Tomt` },
|
|
38
|
+
"tr-TR": { "Empty": `Bo\u{15F}` },
|
|
39
|
+
"uk-UA": { "Empty": `\u{41F}\u{443}\u{441}\u{442}\u{43E}` },
|
|
40
|
+
"zh-CN": { "Empty": `\u{7A7A}` },
|
|
41
|
+
"zh-TW": { "Empty": `\u{7A7A}\u{767D}` }
|
|
42
|
+
};
|
|
43
|
+
const spinButtonDictionary = new LocalizedStringDictionary(spinButtonStrings);
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/spinbutton/createSpinButton.ts
|
|
46
|
+
/**
|
|
47
|
+
* createSpinButton hook for Solidaria
|
|
48
|
+
*
|
|
49
|
+
* Provides the ARIA spinbutton props and live-region announcement behaviour for
|
|
50
|
+
* a single spinbutton (e.g. a date-field segment). Port of the keyboard/announce
|
|
51
|
+
* portion of @react-aria/spinbutton `useSpinButton`. The pointer press-and-hold
|
|
52
|
+
* button machinery (increment/decrement buttons) is intentionally omitted — date
|
|
53
|
+
* segments drive value changes through the keyboard only.
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* Provides the behaviour and accessibility implementation for a spinbutton.
|
|
57
|
+
*/
|
|
58
|
+
function createSpinButton(props) {
|
|
59
|
+
const getProps = () => access(props);
|
|
60
|
+
const stringFormatter = createStringFormatter(spinButtonStrings, "@react-aria/spinbutton");
|
|
61
|
+
const onKeyDown = (e) => {
|
|
62
|
+
const p = getProps();
|
|
63
|
+
if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || p.isReadOnly || e.isComposing) return;
|
|
64
|
+
switch (e.key) {
|
|
65
|
+
case "PageUp":
|
|
66
|
+
if (p.onIncrementPage) {
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
p.onIncrementPage();
|
|
69
|
+
} else if (p.onIncrement) {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
p.onIncrement();
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case "ArrowUp":
|
|
75
|
+
case "Up":
|
|
76
|
+
if (p.onIncrement) {
|
|
77
|
+
e.preventDefault();
|
|
78
|
+
p.onIncrement();
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case "PageDown":
|
|
82
|
+
if (p.onDecrementPage) {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
p.onDecrementPage();
|
|
85
|
+
} else if (p.onDecrement) {
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
p.onDecrement();
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
case "ArrowDown":
|
|
91
|
+
case "Down":
|
|
92
|
+
if (p.onDecrement) {
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
p.onDecrement();
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
case "Home":
|
|
98
|
+
if (p.onDecrementToMin) {
|
|
99
|
+
e.preventDefault();
|
|
100
|
+
p.onDecrementToMin();
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case "End":
|
|
104
|
+
if (p.onIncrementToMax) {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
p.onIncrementToMax();
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
let isFocused = false;
|
|
112
|
+
const onFocus = () => {
|
|
113
|
+
isFocused = true;
|
|
114
|
+
};
|
|
115
|
+
const onBlur = () => {
|
|
116
|
+
isFocused = false;
|
|
117
|
+
};
|
|
118
|
+
const ariaTextValue = createMemo(() => {
|
|
119
|
+
const p = getProps();
|
|
120
|
+
return p.textValue === "" ? stringFormatter().format("Empty") : (p.textValue || `${p.value}`).replace("-", "−");
|
|
121
|
+
});
|
|
122
|
+
createEffect(() => {
|
|
123
|
+
const value = ariaTextValue();
|
|
124
|
+
if (isFocused) {
|
|
125
|
+
clearAnnouncer("assertive");
|
|
126
|
+
announce(value, "assertive");
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const spinButtonProps = createMemo(() => {
|
|
130
|
+
const p = getProps();
|
|
131
|
+
const value = p.value;
|
|
132
|
+
return {
|
|
133
|
+
role: "spinbutton",
|
|
134
|
+
"aria-valuenow": value !== void 0 && !isNaN(value) ? value : void 0,
|
|
135
|
+
"aria-valuetext": ariaTextValue(),
|
|
136
|
+
"aria-valuemin": p.minValue,
|
|
137
|
+
"aria-valuemax": p.maxValue,
|
|
138
|
+
"aria-disabled": p.isDisabled || void 0,
|
|
139
|
+
"aria-readonly": p.isReadOnly || void 0,
|
|
140
|
+
"aria-required": p.isRequired || void 0,
|
|
141
|
+
onKeyDown,
|
|
142
|
+
onFocus,
|
|
143
|
+
onBlur
|
|
144
|
+
};
|
|
145
|
+
});
|
|
146
|
+
return { get spinButtonProps() {
|
|
147
|
+
return spinButtonProps();
|
|
148
|
+
} };
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
151
|
+
export { spinButtonDictionary as n, spinButtonStrings as r, createSpinButton as t };
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=spinbutton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinbutton.js","names":[],"sources":["../../src/spinbutton/intl.ts","../../src/spinbutton/createSpinButton.ts"],"sourcesContent":["// Spinbutton announcement catalog, ported verbatim from @react-aria/spinbutton's\n// intl/*.json (34 locales). Keep in sync with the vendored react-spectrum source on\n// every pin bump.\nimport { LocalizedStringDictionary } from \"@internationalized/string\";\n\nexport type SpinButtonStringKey = \"Empty\";\n\nexport const spinButtonStrings: Record<string, Record<SpinButtonStringKey, string>> = {\n \"ar-AE\": {\n \"Empty\": `\\u{641}\\u{627}\\u{631}\\u{63A}`\n },\n \"bg-BG\": {\n \"Empty\": `\\u{418}\\u{437}\\u{43F}\\u{440}\\u{430}\\u{437}\\u{43D}\\u{438}`\n },\n \"cs-CZ\": {\n \"Empty\": `Pr\\xe1zdn\\xe9`\n },\n \"da-DK\": {\n \"Empty\": `Tom`\n },\n \"de-DE\": {\n \"Empty\": `Leer`\n },\n \"el-GR\": {\n \"Empty\": `\\u{386}\\u{3B4}\\u{3B5}\\u{3B9}\\u{3BF}`\n },\n \"en-US\": {\n \"Empty\": `Empty`\n },\n \"es-ES\": {\n \"Empty\": `Vac\\xedo`\n },\n \"et-EE\": {\n \"Empty\": `T\\xfchjenda`\n },\n \"fi-FI\": {\n \"Empty\": `Tyhj\\xe4`\n },\n \"fr-FR\": {\n \"Empty\": `Vide`\n },\n \"he-IL\": {\n \"Empty\": `\\u{5E8}\\u{5D9}\\u{5E7}`\n },\n \"hr-HR\": {\n \"Empty\": `Prazno`\n },\n \"hu-HU\": {\n \"Empty\": `\\xdcres`\n },\n \"it-IT\": {\n \"Empty\": `Vuoto`\n },\n \"ja-JP\": {\n \"Empty\": `\\u{7A7A}`\n },\n \"ko-KR\": {\n \"Empty\": `\\u{BE44}\\u{C5B4} \\u{C788}\\u{C74C}`\n },\n \"lt-LT\": {\n \"Empty\": `Tu\\u{161}\\u{10D}ias`\n },\n \"lv-LV\": {\n \"Empty\": `Tuk\\u{161}s`\n },\n \"nb-NO\": {\n \"Empty\": `Tom`\n },\n \"nl-NL\": {\n \"Empty\": `Leeg`\n },\n \"pl-PL\": {\n \"Empty\": `Pusty`\n },\n \"pt-BR\": {\n \"Empty\": `Vazio`\n },\n \"pt-PT\": {\n \"Empty\": `Vazio`\n },\n \"ro-RO\": {\n \"Empty\": `Gol`\n },\n \"ru-RU\": {\n \"Empty\": `\\u{41D}\\u{435} \\u{437}\\u{430}\\u{43F}\\u{43E}\\u{43B}\\u{43D}\\u{435}\\u{43D}\\u{43E}`\n },\n \"sk-SK\": {\n \"Empty\": `Pr\\xe1zdne`\n },\n \"sl-SI\": {\n \"Empty\": `Prazen`\n },\n \"sr-SP\": {\n \"Empty\": `Prazno`\n },\n \"sv-SE\": {\n \"Empty\": `Tomt`\n },\n \"tr-TR\": {\n \"Empty\": `Bo\\u{15F}`\n },\n \"uk-UA\": {\n \"Empty\": `\\u{41F}\\u{443}\\u{441}\\u{442}\\u{43E}`\n },\n \"zh-CN\": {\n \"Empty\": `\\u{7A7A}`\n },\n \"zh-TW\": {\n \"Empty\": `\\u{7A7A}\\u{767D}`\n },\n};\n\nexport const spinButtonDictionary = new LocalizedStringDictionary<SpinButtonStringKey, string>(\n spinButtonStrings,\n);\n","/**\n * createSpinButton hook for Solidaria\n *\n * Provides the ARIA spinbutton props and live-region announcement behaviour for\n * a single spinbutton (e.g. a date-field segment). Port of the keyboard/announce\n * portion of @react-aria/spinbutton `useSpinButton`. The pointer press-and-hold\n * button machinery (increment/decrement buttons) is intentionally omitted — date\n * segments drive value changes through the keyboard only.\n */\n\nimport { createMemo, createEffect } from \"solid-js\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { createStringFormatter } from \"../i18n\";\nimport { announce, clearAnnouncer } from \"../live-announcer\";\nimport { spinButtonStrings, type SpinButtonStringKey } from \"./intl\";\n\nexport interface SpinButtonProps {\n /** The current value of the spinbutton. */\n value?: number;\n /** A human-readable text alternative for the value. */\n textValue?: string;\n /** The smallest value allowed. */\n minValue?: number;\n /** The largest value allowed. */\n maxValue?: number;\n /** Whether the spinbutton is disabled. */\n isDisabled?: boolean;\n /** Whether the spinbutton is read only. */\n isReadOnly?: boolean;\n /** Whether the spinbutton is required. */\n isRequired?: boolean;\n onIncrement?: () => void;\n onIncrementPage?: () => void;\n onDecrement?: () => void;\n onDecrementPage?: () => void;\n onDecrementToMin?: () => void;\n onIncrementToMax?: () => void;\n}\n\nexport interface SpinButtonAria {\n /** Props for the spinbutton element. */\n spinButtonProps: Record<string, unknown>;\n}\n\n/**\n * Provides the behaviour and accessibility implementation for a spinbutton.\n */\nexport function createSpinButton(props: MaybeAccessor<SpinButtonProps>): SpinButtonAria {\n const getProps = () => access(props);\n const stringFormatter = createStringFormatter<SpinButtonStringKey>(\n spinButtonStrings,\n \"@react-aria/spinbutton\",\n );\n\n const onKeyDown = (e: KeyboardEvent) => {\n const p = getProps();\n if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || p.isReadOnly || e.isComposing) {\n return;\n }\n\n switch (e.key) {\n // Upstream deliberately falls through PageUp → ArrowUp when no page\n // handler exists; our tsconfig forbids lexical fallthrough, so the\n // PageUp case mirrors that branch inline instead.\n case \"PageUp\":\n if (p.onIncrementPage) {\n e.preventDefault();\n p.onIncrementPage();\n } else if (p.onIncrement) {\n e.preventDefault();\n p.onIncrement();\n }\n break;\n case \"ArrowUp\":\n case \"Up\":\n if (p.onIncrement) {\n e.preventDefault();\n p.onIncrement();\n }\n break;\n // Same faithful fallthrough as PageUp, mirrored inline (PageDown → ArrowDown).\n case \"PageDown\":\n if (p.onDecrementPage) {\n e.preventDefault();\n p.onDecrementPage();\n } else if (p.onDecrement) {\n e.preventDefault();\n p.onDecrement();\n }\n break;\n case \"ArrowDown\":\n case \"Down\":\n if (p.onDecrement) {\n e.preventDefault();\n p.onDecrement();\n }\n break;\n case \"Home\":\n if (p.onDecrementToMin) {\n e.preventDefault();\n p.onDecrementToMin();\n }\n break;\n case \"End\":\n if (p.onIncrementToMax) {\n e.preventDefault();\n p.onIncrementToMax();\n }\n break;\n }\n };\n\n // Non-reactive focus flag — matches upstream's `isFocused` ref. Toggling it must\n // NOT re-run the announce effect; only a change in `ariaTextValue` announces.\n let isFocused = false;\n const onFocus = () => {\n isFocused = true;\n };\n const onBlur = () => {\n isFocused = false;\n };\n\n // Replace Unicode hyphen-minus (U+002D) with minus sign (U+2212) so VoiceOver\n // announces it as \"minus\". Replace the empty string with the word \"Empty\".\n const ariaTextValue = createMemo(() => {\n const p = getProps();\n return p.textValue === \"\"\n ? stringFormatter().format(\"Empty\")\n : (p.textValue || `${p.value}`).replace(\"-\", \"−\");\n });\n\n createEffect(() => {\n const value = ariaTextValue();\n if (isFocused) {\n clearAnnouncer(\"assertive\");\n announce(value, \"assertive\");\n }\n });\n\n const spinButtonProps = createMemo(() => {\n const p = getProps();\n const value = p.value;\n return {\n role: \"spinbutton\",\n \"aria-valuenow\": value !== undefined && !isNaN(value) ? value : undefined,\n \"aria-valuetext\": ariaTextValue(),\n \"aria-valuemin\": p.minValue,\n \"aria-valuemax\": p.maxValue,\n \"aria-disabled\": p.isDisabled || undefined,\n \"aria-readonly\": p.isReadOnly || undefined,\n \"aria-required\": p.isRequired || undefined,\n onKeyDown,\n onFocus,\n onBlur,\n };\n });\n\n return {\n get spinButtonProps() {\n return spinButtonProps();\n },\n };\n}\n"],"mappings":";;;;;;AAOA,MAAa,oBAAyE;CACpF,SAAS,EACT,SAAS,+BACT;CACA,SAAS,EACT,SAAS,2DACT;CACA,SAAS,EACT,SAAS,gBACT;CACA,SAAS,EACT,SAAS,MACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,sCACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,cACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,wBACT;CACA,SAAS,EACT,SAAS,SACT;CACA,SAAS,EACT,SAAS,UACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,oCACT;CACA,SAAS,EACT,SAAS,sBACT;CACA,SAAS,EACT,SAAS,cACT;CACA,SAAS,EACT,SAAS,MACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,MACT;CACA,SAAS,EACT,SAAS,iFACT;CACA,SAAS,EACT,SAAS,aACT;CACA,SAAS,EACT,SAAS,SACT;CACA,SAAS,EACT,SAAS,SACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,YACT;CACA,SAAS,EACT,SAAS,sCACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,mBACT;AACF;AAEA,MAAa,uBAAuB,IAAI,0BACtC,iBACF;;;;;;;;;;;;;;;ACnEA,SAAgB,iBAAiB,OAAuD;CACtF,MAAM,iBAAiB,OAAO,KAAK;CACnC,MAAM,kBAAkB,sBACtB,mBACA,wBACF;CAEA,MAAM,aAAa,MAAqB;EACtC,MAAM,IAAI,SAAS;EACnB,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aACxE;EAGF,QAAQ,EAAE,KAAV;GAIE,KAAK;IACH,IAAI,EAAE,iBAAiB;KACrB,EAAE,eAAe;KACjB,EAAE,gBAAgB;IACpB,OAAO,IAAI,EAAE,aAAa;KACxB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GACF,KAAK;GACL,KAAK;IACH,IAAI,EAAE,aAAa;KACjB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GAEF,KAAK;IACH,IAAI,EAAE,iBAAiB;KACrB,EAAE,eAAe;KACjB,EAAE,gBAAgB;IACpB,OAAO,IAAI,EAAE,aAAa;KACxB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GACF,KAAK;GACL,KAAK;IACH,IAAI,EAAE,aAAa;KACjB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GACF,KAAK;IACH,IAAI,EAAE,kBAAkB;KACtB,EAAE,eAAe;KACjB,EAAE,iBAAiB;IACrB;IACA;GACF,KAAK;IACH,IAAI,EAAE,kBAAkB;KACtB,EAAE,eAAe;KACjB,EAAE,iBAAiB;IACrB;IACA;EACJ;CACF;CAIA,IAAI,YAAY;CAChB,MAAM,gBAAgB;EACpB,YAAY;CACd;CACA,MAAM,eAAe;EACnB,YAAY;CACd;CAIA,MAAM,gBAAgB,iBAAiB;EACrC,MAAM,IAAI,SAAS;EACnB,OAAO,EAAE,cAAc,KACnB,gBAAgB,CAAC,CAAC,OAAO,OAAO,KAC/B,EAAE,aAAa,GAAG,EAAE,QAAA,CAAS,QAAQ,KAAK,GAAG;CACpD,CAAC;CAED,mBAAmB;EACjB,MAAM,QAAQ,cAAc;EAC5B,IAAI,WAAW;GACb,eAAe,WAAW;GAC1B,SAAS,OAAO,WAAW;EAC7B;CACF,CAAC;CAED,MAAM,kBAAkB,iBAAiB;EACvC,MAAM,IAAI,SAAS;EACnB,MAAM,QAAQ,EAAE;EAChB,OAAO;GACL,MAAM;GACN,iBAAiB,UAAU,KAAA,KAAa,CAAC,MAAM,KAAK,IAAI,QAAQ,KAAA;GAChE,kBAAkB,cAAc;GAChC,iBAAiB,EAAE;GACnB,iBAAiB,EAAE;GACnB,iBAAiB,EAAE,cAAc,KAAA;GACjC,iBAAiB,EAAE,cAAc,KAAA;GACjC,iBAAiB,EAAE,cAAc,KAAA;GACjC;GACA;GACA;EACF;CACF,CAAC;CAED,OAAO,EACL,IAAI,kBAAkB;EACpB,OAAO,gBAAgB;CACzB,EACF;AACF"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { t as access } from "./reactivity.jsx";
|
|
2
|
+
import { n as createStringFormatter } from "./createStringFormatter.jsx";
|
|
3
|
+
import { n as clearAnnouncer, t as announce } from "./announce.jsx";
|
|
4
|
+
import { createEffect, createMemo } from "solid-js";
|
|
5
|
+
import { LocalizedStringDictionary } from "@internationalized/string";
|
|
6
|
+
//#region src/spinbutton/intl.ts
|
|
7
|
+
const spinButtonStrings = {
|
|
8
|
+
"ar-AE": { "Empty": `\u{641}\u{627}\u{631}\u{63A}` },
|
|
9
|
+
"bg-BG": { "Empty": `\u{418}\u{437}\u{43F}\u{440}\u{430}\u{437}\u{43D}\u{438}` },
|
|
10
|
+
"cs-CZ": { "Empty": `Pr\xe1zdn\xe9` },
|
|
11
|
+
"da-DK": { "Empty": `Tom` },
|
|
12
|
+
"de-DE": { "Empty": `Leer` },
|
|
13
|
+
"el-GR": { "Empty": `\u{386}\u{3B4}\u{3B5}\u{3B9}\u{3BF}` },
|
|
14
|
+
"en-US": { "Empty": `Empty` },
|
|
15
|
+
"es-ES": { "Empty": `Vac\xedo` },
|
|
16
|
+
"et-EE": { "Empty": `T\xfchjenda` },
|
|
17
|
+
"fi-FI": { "Empty": `Tyhj\xe4` },
|
|
18
|
+
"fr-FR": { "Empty": `Vide` },
|
|
19
|
+
"he-IL": { "Empty": `\u{5E8}\u{5D9}\u{5E7}` },
|
|
20
|
+
"hr-HR": { "Empty": `Prazno` },
|
|
21
|
+
"hu-HU": { "Empty": `\xdcres` },
|
|
22
|
+
"it-IT": { "Empty": `Vuoto` },
|
|
23
|
+
"ja-JP": { "Empty": `\u{7A7A}` },
|
|
24
|
+
"ko-KR": { "Empty": `\u{BE44}\u{C5B4} \u{C788}\u{C74C}` },
|
|
25
|
+
"lt-LT": { "Empty": `Tu\u{161}\u{10D}ias` },
|
|
26
|
+
"lv-LV": { "Empty": `Tuk\u{161}s` },
|
|
27
|
+
"nb-NO": { "Empty": `Tom` },
|
|
28
|
+
"nl-NL": { "Empty": `Leeg` },
|
|
29
|
+
"pl-PL": { "Empty": `Pusty` },
|
|
30
|
+
"pt-BR": { "Empty": `Vazio` },
|
|
31
|
+
"pt-PT": { "Empty": `Vazio` },
|
|
32
|
+
"ro-RO": { "Empty": `Gol` },
|
|
33
|
+
"ru-RU": { "Empty": `\u{41D}\u{435} \u{437}\u{430}\u{43F}\u{43E}\u{43B}\u{43D}\u{435}\u{43D}\u{43E}` },
|
|
34
|
+
"sk-SK": { "Empty": `Pr\xe1zdne` },
|
|
35
|
+
"sl-SI": { "Empty": `Prazen` },
|
|
36
|
+
"sr-SP": { "Empty": `Prazno` },
|
|
37
|
+
"sv-SE": { "Empty": `Tomt` },
|
|
38
|
+
"tr-TR": { "Empty": `Bo\u{15F}` },
|
|
39
|
+
"uk-UA": { "Empty": `\u{41F}\u{443}\u{441}\u{442}\u{43E}` },
|
|
40
|
+
"zh-CN": { "Empty": `\u{7A7A}` },
|
|
41
|
+
"zh-TW": { "Empty": `\u{7A7A}\u{767D}` }
|
|
42
|
+
};
|
|
43
|
+
const spinButtonDictionary = new LocalizedStringDictionary(spinButtonStrings);
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/spinbutton/createSpinButton.ts
|
|
46
|
+
/**
|
|
47
|
+
* createSpinButton hook for Solidaria
|
|
48
|
+
*
|
|
49
|
+
* Provides the ARIA spinbutton props and live-region announcement behaviour for
|
|
50
|
+
* a single spinbutton (e.g. a date-field segment). Port of the keyboard/announce
|
|
51
|
+
* portion of @react-aria/spinbutton `useSpinButton`. The pointer press-and-hold
|
|
52
|
+
* button machinery (increment/decrement buttons) is intentionally omitted — date
|
|
53
|
+
* segments drive value changes through the keyboard only.
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* Provides the behaviour and accessibility implementation for a spinbutton.
|
|
57
|
+
*/
|
|
58
|
+
function createSpinButton(props) {
|
|
59
|
+
const getProps = () => access(props);
|
|
60
|
+
const stringFormatter = createStringFormatter(spinButtonStrings, "@react-aria/spinbutton");
|
|
61
|
+
const onKeyDown = (e) => {
|
|
62
|
+
const p = getProps();
|
|
63
|
+
if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || p.isReadOnly || e.isComposing) return;
|
|
64
|
+
switch (e.key) {
|
|
65
|
+
case "PageUp":
|
|
66
|
+
if (p.onIncrementPage) {
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
p.onIncrementPage();
|
|
69
|
+
} else if (p.onIncrement) {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
p.onIncrement();
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case "ArrowUp":
|
|
75
|
+
case "Up":
|
|
76
|
+
if (p.onIncrement) {
|
|
77
|
+
e.preventDefault();
|
|
78
|
+
p.onIncrement();
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case "PageDown":
|
|
82
|
+
if (p.onDecrementPage) {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
p.onDecrementPage();
|
|
85
|
+
} else if (p.onDecrement) {
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
p.onDecrement();
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
case "ArrowDown":
|
|
91
|
+
case "Down":
|
|
92
|
+
if (p.onDecrement) {
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
p.onDecrement();
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
case "Home":
|
|
98
|
+
if (p.onDecrementToMin) {
|
|
99
|
+
e.preventDefault();
|
|
100
|
+
p.onDecrementToMin();
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case "End":
|
|
104
|
+
if (p.onIncrementToMax) {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
p.onIncrementToMax();
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
let isFocused = false;
|
|
112
|
+
const onFocus = () => {
|
|
113
|
+
isFocused = true;
|
|
114
|
+
};
|
|
115
|
+
const onBlur = () => {
|
|
116
|
+
isFocused = false;
|
|
117
|
+
};
|
|
118
|
+
const ariaTextValue = createMemo(() => {
|
|
119
|
+
const p = getProps();
|
|
120
|
+
return p.textValue === "" ? stringFormatter().format("Empty") : (p.textValue || `${p.value}`).replace("-", "−");
|
|
121
|
+
});
|
|
122
|
+
createEffect(() => {
|
|
123
|
+
const value = ariaTextValue();
|
|
124
|
+
if (isFocused) {
|
|
125
|
+
clearAnnouncer("assertive");
|
|
126
|
+
announce(value, "assertive");
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const spinButtonProps = createMemo(() => {
|
|
130
|
+
const p = getProps();
|
|
131
|
+
const value = p.value;
|
|
132
|
+
return {
|
|
133
|
+
role: "spinbutton",
|
|
134
|
+
"aria-valuenow": value !== void 0 && !isNaN(value) ? value : void 0,
|
|
135
|
+
"aria-valuetext": ariaTextValue(),
|
|
136
|
+
"aria-valuemin": p.minValue,
|
|
137
|
+
"aria-valuemax": p.maxValue,
|
|
138
|
+
"aria-disabled": p.isDisabled || void 0,
|
|
139
|
+
"aria-readonly": p.isReadOnly || void 0,
|
|
140
|
+
"aria-required": p.isRequired || void 0,
|
|
141
|
+
onKeyDown,
|
|
142
|
+
onFocus,
|
|
143
|
+
onBlur
|
|
144
|
+
};
|
|
145
|
+
});
|
|
146
|
+
return { get spinButtonProps() {
|
|
147
|
+
return spinButtonProps();
|
|
148
|
+
} };
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
151
|
+
export { spinButtonDictionary as n, spinButtonStrings as r, createSpinButton as t };
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=spinbutton.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinbutton.jsx","names":[],"sources":["../../src/spinbutton/intl.ts","../../src/spinbutton/createSpinButton.ts"],"sourcesContent":["// Spinbutton announcement catalog, ported verbatim from @react-aria/spinbutton's\n// intl/*.json (34 locales). Keep in sync with the vendored react-spectrum source on\n// every pin bump.\nimport { LocalizedStringDictionary } from \"@internationalized/string\";\n\nexport type SpinButtonStringKey = \"Empty\";\n\nexport const spinButtonStrings: Record<string, Record<SpinButtonStringKey, string>> = {\n \"ar-AE\": {\n \"Empty\": `\\u{641}\\u{627}\\u{631}\\u{63A}`\n },\n \"bg-BG\": {\n \"Empty\": `\\u{418}\\u{437}\\u{43F}\\u{440}\\u{430}\\u{437}\\u{43D}\\u{438}`\n },\n \"cs-CZ\": {\n \"Empty\": `Pr\\xe1zdn\\xe9`\n },\n \"da-DK\": {\n \"Empty\": `Tom`\n },\n \"de-DE\": {\n \"Empty\": `Leer`\n },\n \"el-GR\": {\n \"Empty\": `\\u{386}\\u{3B4}\\u{3B5}\\u{3B9}\\u{3BF}`\n },\n \"en-US\": {\n \"Empty\": `Empty`\n },\n \"es-ES\": {\n \"Empty\": `Vac\\xedo`\n },\n \"et-EE\": {\n \"Empty\": `T\\xfchjenda`\n },\n \"fi-FI\": {\n \"Empty\": `Tyhj\\xe4`\n },\n \"fr-FR\": {\n \"Empty\": `Vide`\n },\n \"he-IL\": {\n \"Empty\": `\\u{5E8}\\u{5D9}\\u{5E7}`\n },\n \"hr-HR\": {\n \"Empty\": `Prazno`\n },\n \"hu-HU\": {\n \"Empty\": `\\xdcres`\n },\n \"it-IT\": {\n \"Empty\": `Vuoto`\n },\n \"ja-JP\": {\n \"Empty\": `\\u{7A7A}`\n },\n \"ko-KR\": {\n \"Empty\": `\\u{BE44}\\u{C5B4} \\u{C788}\\u{C74C}`\n },\n \"lt-LT\": {\n \"Empty\": `Tu\\u{161}\\u{10D}ias`\n },\n \"lv-LV\": {\n \"Empty\": `Tuk\\u{161}s`\n },\n \"nb-NO\": {\n \"Empty\": `Tom`\n },\n \"nl-NL\": {\n \"Empty\": `Leeg`\n },\n \"pl-PL\": {\n \"Empty\": `Pusty`\n },\n \"pt-BR\": {\n \"Empty\": `Vazio`\n },\n \"pt-PT\": {\n \"Empty\": `Vazio`\n },\n \"ro-RO\": {\n \"Empty\": `Gol`\n },\n \"ru-RU\": {\n \"Empty\": `\\u{41D}\\u{435} \\u{437}\\u{430}\\u{43F}\\u{43E}\\u{43B}\\u{43D}\\u{435}\\u{43D}\\u{43E}`\n },\n \"sk-SK\": {\n \"Empty\": `Pr\\xe1zdne`\n },\n \"sl-SI\": {\n \"Empty\": `Prazen`\n },\n \"sr-SP\": {\n \"Empty\": `Prazno`\n },\n \"sv-SE\": {\n \"Empty\": `Tomt`\n },\n \"tr-TR\": {\n \"Empty\": `Bo\\u{15F}`\n },\n \"uk-UA\": {\n \"Empty\": `\\u{41F}\\u{443}\\u{441}\\u{442}\\u{43E}`\n },\n \"zh-CN\": {\n \"Empty\": `\\u{7A7A}`\n },\n \"zh-TW\": {\n \"Empty\": `\\u{7A7A}\\u{767D}`\n },\n};\n\nexport const spinButtonDictionary = new LocalizedStringDictionary<SpinButtonStringKey, string>(\n spinButtonStrings,\n);\n","/**\n * createSpinButton hook for Solidaria\n *\n * Provides the ARIA spinbutton props and live-region announcement behaviour for\n * a single spinbutton (e.g. a date-field segment). Port of the keyboard/announce\n * portion of @react-aria/spinbutton `useSpinButton`. The pointer press-and-hold\n * button machinery (increment/decrement buttons) is intentionally omitted — date\n * segments drive value changes through the keyboard only.\n */\n\nimport { createMemo, createEffect } from \"solid-js\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { createStringFormatter } from \"../i18n\";\nimport { announce, clearAnnouncer } from \"../live-announcer\";\nimport { spinButtonStrings, type SpinButtonStringKey } from \"./intl\";\n\nexport interface SpinButtonProps {\n /** The current value of the spinbutton. */\n value?: number;\n /** A human-readable text alternative for the value. */\n textValue?: string;\n /** The smallest value allowed. */\n minValue?: number;\n /** The largest value allowed. */\n maxValue?: number;\n /** Whether the spinbutton is disabled. */\n isDisabled?: boolean;\n /** Whether the spinbutton is read only. */\n isReadOnly?: boolean;\n /** Whether the spinbutton is required. */\n isRequired?: boolean;\n onIncrement?: () => void;\n onIncrementPage?: () => void;\n onDecrement?: () => void;\n onDecrementPage?: () => void;\n onDecrementToMin?: () => void;\n onIncrementToMax?: () => void;\n}\n\nexport interface SpinButtonAria {\n /** Props for the spinbutton element. */\n spinButtonProps: Record<string, unknown>;\n}\n\n/**\n * Provides the behaviour and accessibility implementation for a spinbutton.\n */\nexport function createSpinButton(props: MaybeAccessor<SpinButtonProps>): SpinButtonAria {\n const getProps = () => access(props);\n const stringFormatter = createStringFormatter<SpinButtonStringKey>(\n spinButtonStrings,\n \"@react-aria/spinbutton\",\n );\n\n const onKeyDown = (e: KeyboardEvent) => {\n const p = getProps();\n if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || p.isReadOnly || e.isComposing) {\n return;\n }\n\n switch (e.key) {\n // Upstream deliberately falls through PageUp → ArrowUp when no page\n // handler exists; our tsconfig forbids lexical fallthrough, so the\n // PageUp case mirrors that branch inline instead.\n case \"PageUp\":\n if (p.onIncrementPage) {\n e.preventDefault();\n p.onIncrementPage();\n } else if (p.onIncrement) {\n e.preventDefault();\n p.onIncrement();\n }\n break;\n case \"ArrowUp\":\n case \"Up\":\n if (p.onIncrement) {\n e.preventDefault();\n p.onIncrement();\n }\n break;\n // Same faithful fallthrough as PageUp, mirrored inline (PageDown → ArrowDown).\n case \"PageDown\":\n if (p.onDecrementPage) {\n e.preventDefault();\n p.onDecrementPage();\n } else if (p.onDecrement) {\n e.preventDefault();\n p.onDecrement();\n }\n break;\n case \"ArrowDown\":\n case \"Down\":\n if (p.onDecrement) {\n e.preventDefault();\n p.onDecrement();\n }\n break;\n case \"Home\":\n if (p.onDecrementToMin) {\n e.preventDefault();\n p.onDecrementToMin();\n }\n break;\n case \"End\":\n if (p.onIncrementToMax) {\n e.preventDefault();\n p.onIncrementToMax();\n }\n break;\n }\n };\n\n // Non-reactive focus flag — matches upstream's `isFocused` ref. Toggling it must\n // NOT re-run the announce effect; only a change in `ariaTextValue` announces.\n let isFocused = false;\n const onFocus = () => {\n isFocused = true;\n };\n const onBlur = () => {\n isFocused = false;\n };\n\n // Replace Unicode hyphen-minus (U+002D) with minus sign (U+2212) so VoiceOver\n // announces it as \"minus\". Replace the empty string with the word \"Empty\".\n const ariaTextValue = createMemo(() => {\n const p = getProps();\n return p.textValue === \"\"\n ? stringFormatter().format(\"Empty\")\n : (p.textValue || `${p.value}`).replace(\"-\", \"−\");\n });\n\n createEffect(() => {\n const value = ariaTextValue();\n if (isFocused) {\n clearAnnouncer(\"assertive\");\n announce(value, \"assertive\");\n }\n });\n\n const spinButtonProps = createMemo(() => {\n const p = getProps();\n const value = p.value;\n return {\n role: \"spinbutton\",\n \"aria-valuenow\": value !== undefined && !isNaN(value) ? value : undefined,\n \"aria-valuetext\": ariaTextValue(),\n \"aria-valuemin\": p.minValue,\n \"aria-valuemax\": p.maxValue,\n \"aria-disabled\": p.isDisabled || undefined,\n \"aria-readonly\": p.isReadOnly || undefined,\n \"aria-required\": p.isRequired || undefined,\n onKeyDown,\n onFocus,\n onBlur,\n };\n });\n\n return {\n get spinButtonProps() {\n return spinButtonProps();\n },\n };\n}\n"],"mappings":";;;;;;AAOA,MAAa,oBAAyE;CACpF,SAAS,EACT,SAAS,+BACT;CACA,SAAS,EACT,SAAS,2DACT;CACA,SAAS,EACT,SAAS,gBACT;CACA,SAAS,EACT,SAAS,MACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,sCACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,cACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,wBACT;CACA,SAAS,EACT,SAAS,SACT;CACA,SAAS,EACT,SAAS,UACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,oCACT;CACA,SAAS,EACT,SAAS,sBACT;CACA,SAAS,EACT,SAAS,cACT;CACA,SAAS,EACT,SAAS,MACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,QACT;CACA,SAAS,EACT,SAAS,MACT;CACA,SAAS,EACT,SAAS,iFACT;CACA,SAAS,EACT,SAAS,aACT;CACA,SAAS,EACT,SAAS,SACT;CACA,SAAS,EACT,SAAS,SACT;CACA,SAAS,EACT,SAAS,OACT;CACA,SAAS,EACT,SAAS,YACT;CACA,SAAS,EACT,SAAS,sCACT;CACA,SAAS,EACT,SAAS,WACT;CACA,SAAS,EACT,SAAS,mBACT;AACF;AAEA,MAAa,uBAAuB,IAAI,0BACtC,iBACF;;;;;;;;;;;;;;;ACnEA,SAAgB,iBAAiB,OAAuD;CACtF,MAAM,iBAAiB,OAAO,KAAK;CACnC,MAAM,kBAAkB,sBACtB,mBACA,wBACF;CAEA,MAAM,aAAa,MAAqB;EACtC,MAAM,IAAI,SAAS;EACnB,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aACxE;EAGF,QAAQ,EAAE,KAAV;GAIE,KAAK;IACH,IAAI,EAAE,iBAAiB;KACrB,EAAE,eAAe;KACjB,EAAE,gBAAgB;IACpB,OAAO,IAAI,EAAE,aAAa;KACxB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GACF,KAAK;GACL,KAAK;IACH,IAAI,EAAE,aAAa;KACjB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GAEF,KAAK;IACH,IAAI,EAAE,iBAAiB;KACrB,EAAE,eAAe;KACjB,EAAE,gBAAgB;IACpB,OAAO,IAAI,EAAE,aAAa;KACxB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GACF,KAAK;GACL,KAAK;IACH,IAAI,EAAE,aAAa;KACjB,EAAE,eAAe;KACjB,EAAE,YAAY;IAChB;IACA;GACF,KAAK;IACH,IAAI,EAAE,kBAAkB;KACtB,EAAE,eAAe;KACjB,EAAE,iBAAiB;IACrB;IACA;GACF,KAAK;IACH,IAAI,EAAE,kBAAkB;KACtB,EAAE,eAAe;KACjB,EAAE,iBAAiB;IACrB;IACA;EACJ;CACF;CAIA,IAAI,YAAY;CAChB,MAAM,gBAAgB;EACpB,YAAY;CACd;CACA,MAAM,eAAe;EACnB,YAAY;CACd;CAIA,MAAM,gBAAgB,iBAAiB;EACrC,MAAM,IAAI,SAAS;EACnB,OAAO,EAAE,cAAc,KACnB,gBAAgB,CAAC,CAAC,OAAO,OAAO,KAC/B,EAAE,aAAa,GAAG,EAAE,QAAA,CAAS,QAAQ,KAAK,GAAG;CACpD,CAAC;CAED,mBAAmB;EACjB,MAAM,QAAQ,cAAc;EAC5B,IAAI,WAAW;GACb,eAAe,WAAW;GAC1B,SAAS,OAAO,WAAW;EAC7B;CACF,CAAC;CAED,MAAM,kBAAkB,iBAAiB;EACvC,MAAM,IAAI,SAAS;EACnB,MAAM,QAAQ,EAAE;EAChB,OAAO;GACL,MAAM;GACN,iBAAiB,UAAU,KAAA,KAAa,CAAC,MAAM,KAAK,IAAI,QAAQ,KAAA;GAChE,kBAAkB,cAAc;GAChC,iBAAiB,EAAE;GACnB,iBAAiB,EAAE;GACnB,iBAAiB,EAAE,cAAc,KAAA;GACjC,iBAAiB,EAAE,cAAc,KAAA;GACjC,iBAAiB,EAAE,cAAc,KAAA;GACjC;GACA;GACA;EACF;CACF,CAAC;CAED,OAAO,EACL,IAAI,kBAAkB;EACpB,OAAO,gBAAgB;CACzB,EACF;AACF"}
|
package/dist/_chunk/table.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { S as scrollIntoViewport } from "./utils.js";
|
|
1
|
+
import { i as mergeProps$1 } from "./env.js";
|
|
2
|
+
import { S as scrollIntoViewport, i as createDescription } from "./utils.js";
|
|
3
3
|
import { o as getInteractionModality } from "./createInteractionModality.js";
|
|
4
|
-
import {
|
|
4
|
+
import { i as useLocale } from "./locale.js";
|
|
5
5
|
import { n as createSelectableItem } from "./createSelectableItem.js";
|
|
6
|
-
import { t as announce } from "./
|
|
6
|
+
import { t as announce } from "./announce.js";
|
|
7
7
|
import { createEffect, createMemo, createSignal, on } from "solid-js";
|
|
8
8
|
import { createId } from "@proyecto-viviana/solid-stately";
|
|
9
9
|
//#region src/table/createTable.ts
|
|
@@ -316,15 +316,25 @@ function createTable(props, state, ref) {
|
|
|
316
316
|
const p = props();
|
|
317
317
|
if (!p["aria-label"] && !p["aria-labelledby"]) console.warn("Table: An aria-label or aria-labelledby prop is required for accessibility.");
|
|
318
318
|
});
|
|
319
|
+
const sortDescription = () => {
|
|
320
|
+
const s = state();
|
|
321
|
+
const descriptor = s.sortDescriptor;
|
|
322
|
+
const column = descriptor?.column;
|
|
323
|
+
const direction = descriptor?.direction;
|
|
324
|
+
if (!direction || column == null) return;
|
|
325
|
+
return `sorted by column ${s.collection.columns.find((c) => c.key === column)?.textValue ?? ""} in ${direction} order`;
|
|
326
|
+
};
|
|
327
|
+
const sortDescriptionProps = createDescription(sortDescription);
|
|
319
328
|
const gridProps = createMemo(() => {
|
|
320
329
|
const p = props();
|
|
321
330
|
const s = state();
|
|
331
|
+
const describedBy = [sortDescriptionProps["aria-describedby"], p["aria-describedby"]].filter(Boolean).join(" ") || void 0;
|
|
322
332
|
const baseProps = {
|
|
323
333
|
role: "grid",
|
|
324
334
|
id,
|
|
325
335
|
"aria-label": p["aria-label"],
|
|
326
336
|
"aria-labelledby": p["aria-labelledby"],
|
|
327
|
-
"aria-describedby":
|
|
337
|
+
"aria-describedby": describedBy,
|
|
328
338
|
"aria-multiselectable": s.selectionMode === "multiple" ? "true" : void 0,
|
|
329
339
|
tabIndex: 0,
|
|
330
340
|
onKeyDown,
|
|
@@ -380,6 +390,7 @@ function createTableColumnHeader(props, state, _ref) {
|
|
|
380
390
|
const p = props();
|
|
381
391
|
return s.focusedKey === p.node.key;
|
|
382
392
|
});
|
|
393
|
+
const sortDescriptionProps = createDescription(() => props().allowsSorting ? "sortable column" : void 0);
|
|
383
394
|
const sortColumn = () => {
|
|
384
395
|
const s = state();
|
|
385
396
|
const p = props();
|
|
@@ -447,6 +458,7 @@ function createTableColumnHeader(props, state, _ref) {
|
|
|
447
458
|
role: "columnheader",
|
|
448
459
|
id: tableData ? `${tableData.tableId}-${node.key}` : void 0,
|
|
449
460
|
"aria-sort": ariaSort,
|
|
461
|
+
"aria-describedby": sortDescriptionProps["aria-describedby"],
|
|
450
462
|
tabIndex: isFocused() ? 0 : -1,
|
|
451
463
|
onFocus
|
|
452
464
|
};
|
|
@@ -471,6 +483,24 @@ function createTableColumnHeader(props, state, _ref) {
|
|
|
471
483
|
} };
|
|
472
484
|
}
|
|
473
485
|
//#endregion
|
|
486
|
+
//#region src/table/utils.ts
|
|
487
|
+
/**
|
|
488
|
+
* A row is labelled by its row-header cells. Mirrors `@react-aria/table`'s
|
|
489
|
+
* `getRowLabelledBy`, which joins `getCellId(state, rowKey, columnKey)` across
|
|
490
|
+
* `collection.rowHeaderColumnKeys`. We resolve the actual rowheader cell node
|
|
491
|
+
* and rebuild the exact id string `createTableCell` puts on the element
|
|
492
|
+
* (`${tableId}-${parentKey}-${cellKey}`) so the reference always matches a real
|
|
493
|
+
* element, regardless of the cell-key scheme.
|
|
494
|
+
*/
|
|
495
|
+
function getRowLabelledBy(state, rowKey) {
|
|
496
|
+
const tableId = getTableData(state)?.tableId ?? "table";
|
|
497
|
+
const collection = state.collection;
|
|
498
|
+
return [...collection.rowHeaderColumnKeys].map((columnKey) => {
|
|
499
|
+
const cell = collection.getCell?.(rowKey, columnKey);
|
|
500
|
+
return cell?.parentKey != null ? `${tableId}-${String(cell.parentKey)}-${String(cell.key)}` : null;
|
|
501
|
+
}).filter((id) => id != null).join(" ");
|
|
502
|
+
}
|
|
503
|
+
//#endregion
|
|
474
504
|
//#region src/table/createTableRow.ts
|
|
475
505
|
/**
|
|
476
506
|
* createTableRow - Provides accessibility for a table row.
|
|
@@ -621,6 +651,8 @@ function createTableRow(props, state, ref) {
|
|
|
621
651
|
"aria-selected": s.selectionMode !== "none" ? isSelected() : void 0,
|
|
622
652
|
"aria-disabled": isDisabled() || void 0
|
|
623
653
|
};
|
|
654
|
+
const labelledBy = getRowLabelledBy(s, node.key);
|
|
655
|
+
if (labelledBy) baseProps["aria-labelledby"] = labelledBy;
|
|
624
656
|
if (s.treeColumn != null) {
|
|
625
657
|
const { posinset, setsize } = siblingInfo();
|
|
626
658
|
baseProps["aria-expanded"] = hasChildRows() ? isExpanded() : void 0;
|
|
@@ -630,7 +662,7 @@ function createTableRow(props, state, ref) {
|
|
|
630
662
|
baseProps.onKeyDown = onTreeGridKeyDown;
|
|
631
663
|
}
|
|
632
664
|
if (p.isVirtualized && s.treeColumn == null && node.rowIndex != null) baseProps["aria-rowindex"] = node.rowIndex + 1;
|
|
633
|
-
return mergeProps(selectableItem.itemProps, baseProps);
|
|
665
|
+
return mergeProps$1(selectableItem.itemProps, baseProps);
|
|
634
666
|
});
|
|
635
667
|
const onExpandPress = () => {
|
|
636
668
|
const s = state();
|
|
@@ -797,7 +829,9 @@ function createTableSelectionCheckbox(props, state) {
|
|
|
797
829
|
const isDisabled = createMemo(() => {
|
|
798
830
|
const s = state();
|
|
799
831
|
const p = props();
|
|
800
|
-
|
|
832
|
+
if (s.selectionMode === "none" || s.disabledKeys.has(p.key) || p.isRowDisabled) return true;
|
|
833
|
+
const item = s.collection.getItem(p.key);
|
|
834
|
+
return !item || !!item.isDisabled || !!item.props?.isDisabled;
|
|
801
835
|
});
|
|
802
836
|
const onChange = () => {
|
|
803
837
|
const s = state();
|
|
@@ -805,13 +839,16 @@ function createTableSelectionCheckbox(props, state) {
|
|
|
805
839
|
if (!isDisabled()) s.toggleSelection(p.key);
|
|
806
840
|
};
|
|
807
841
|
const checkboxProps = createMemo(() => {
|
|
842
|
+
const s = state();
|
|
843
|
+
const p = props();
|
|
808
844
|
return {
|
|
809
845
|
id: checkboxId,
|
|
810
846
|
type: "checkbox",
|
|
811
847
|
checked: isSelected(),
|
|
812
848
|
disabled: isDisabled(),
|
|
813
849
|
onChange,
|
|
814
|
-
"aria-label": "Select"
|
|
850
|
+
"aria-label": "Select",
|
|
851
|
+
"aria-labelledby": `${checkboxId} ${getRowLabelledBy(s, p.key)}`
|
|
815
852
|
};
|
|
816
853
|
});
|
|
817
854
|
return { get checkboxProps() {
|