@proyecto-viviana/solidaria 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +5 -5
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.d.ts +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +10 -10
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +7 -7
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/index.d.ts +6 -6
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +6 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +5 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +12 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +6 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/collections/index.d.ts +3 -3
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +10 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +51 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +8 -6
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +10 -2
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +2 -2
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +7 -6
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +2 -2
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +26 -6
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +1 -1
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +6 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +4 -4
- package/dist/gridlist/types.d.ts +11 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +52 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18012 -16820
- package/dist/index.js.map +1 -1
- package/dist/index.jsx +18242 -0
- package/dist/index.jsx.map +1 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -2
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -3
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/link/createLink.d.ts +14 -8
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +11 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +21 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/menu/createMenu.d.ts +7 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +16 -4
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/numberfield/createNumberField.d.ts +9 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/popover/calculatePosition.d.ts +4 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +3 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/radio/createRadio.d.ts +7 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +10 -10
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/index.d.ts +1 -1
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/ssr/index.d.ts +1 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/switch/createSwitch.d.ts +6 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/types.d.ts +15 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +28 -25
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tag/createTag.d.ts +2 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +2 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toggle/createToggle.d.ts +9 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tree/createTree.d.ts +3 -3
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/types.d.ts +10 -6
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +12 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/package.json +32 -32
- package/src/actiongroup/createActionGroup.ts +101 -91
- package/src/actiongroup/index.ts +1 -1
- package/src/autocomplete/createAutocomplete.ts +117 -134
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +25 -32
- package/src/button/index.ts +6 -9
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +98 -46
- package/src/calendar/createCalendarGrid.ts +57 -35
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +92 -31
- package/src/calendar/index.ts +5 -9
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +227 -0
- package/src/checkbox/createCheckbox.ts +13 -21
- package/src/checkbox/createCheckboxGroup.ts +68 -44
- package/src/checkbox/createCheckboxGroupItem.ts +16 -27
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +33 -29
- package/src/color/createColorArea.ts +232 -154
- package/src/color/createColorField.ts +107 -58
- package/src/color/createColorSlider.ts +231 -73
- package/src/color/createColorSwatch.ts +38 -13
- package/src/color/createColorWheel.ts +208 -83
- package/src/color/index.ts +6 -6
- package/src/color/types.ts +98 -16
- package/src/combobox/createComboBox.ts +157 -100
- package/src/combobox/index.ts +1 -1
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +260 -67
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +105 -57
- package/src/datepicker/createDateSegment.ts +183 -96
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +67 -85
- package/src/datepicker/index.ts +13 -14
- package/src/dialog/createDialog.ts +45 -38
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +4 -4
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -21
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +19 -25
- package/src/dnd/createDraggableCollection.ts +4 -4
- package/src/dnd/createDraggableItem.ts +20 -19
- package/src/dnd/createDrop.ts +42 -51
- package/src/dnd/createDroppableCollection.ts +290 -173
- package/src/dnd/createDroppableItem.ts +34 -34
- package/src/dnd/index.ts +23 -12
- package/src/dnd/types.ts +4 -7
- package/src/dnd/utils.ts +36 -49
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +4 -20
- package/src/focus/createFocusRestore.ts +15 -28
- package/src/focus/createVirtualFocus.ts +20 -36
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +20 -43
- package/src/form/index.ts +2 -5
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +36 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +34 -29
- package/src/gridlist/createGridListItem.ts +68 -23
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +4 -4
- package/src/gridlist/types.ts +11 -7
- package/src/i18n/createCollator.ts +5 -18
- package/src/i18n/createDateFormatter.ts +5 -13
- package/src/i18n/createFilter.ts +11 -24
- package/src/i18n/createNumberFormatter.ts +4 -6
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +8 -11
- package/src/i18n/locale.tsx +15 -40
- package/src/i18n/utils.ts +35 -39
- package/src/index.ts +68 -169
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +12 -8
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +20 -13
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +75 -82
- package/src/interactions/createKeyboard.ts +2 -2
- package/src/interactions/createLongPress.ts +23 -23
- package/src/interactions/createMove.ts +72 -62
- package/src/interactions/createPress.ts +164 -87
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +30 -51
- package/src/landmark/index.ts +1 -1
- package/src/link/createLink.ts +83 -56
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +69 -58
- package/src/listbox/createOption.ts +83 -37
- package/src/listbox/index.ts +2 -6
- package/src/live-announcer/announce.ts +44 -71
- package/src/live-announcer/index.ts +1 -1
- package/src/menu/createMenu.ts +79 -50
- package/src/menu/createMenuItem.ts +79 -27
- package/src/menu/createMenuTrigger.ts +15 -15
- package/src/menu/index.ts +3 -12
- package/src/meter/createMeter.ts +7 -15
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +138 -81
- package/src/numberfield/index.ts +1 -1
- package/src/overlays/ariaHideOutside.ts +14 -10
- package/src/overlays/createInteractOutside.ts +21 -18
- package/src/overlays/createModal.tsx +17 -17
- package/src/overlays/createOverlay.ts +38 -8
- package/src/overlays/createOverlayTrigger.ts +16 -16
- package/src/overlays/createPreventScroll.ts +46 -24
- package/src/overlays/index.ts +6 -17
- package/src/popover/calculatePosition.ts +115 -117
- package/src/popover/createOverlayPosition.ts +46 -40
- package/src/popover/createPopover.ts +42 -17
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +31 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +83 -77
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +57 -29
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +57 -44
- package/src/select/createSelect.ts +128 -71
- package/src/select/index.ts +2 -7
- package/src/selection/createTypeSelect.ts +11 -11
- package/src/selection/index.ts +1 -1
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +93 -124
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +8 -47
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +9 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +152 -85
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +149 -29
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +12 -11
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +15 -7
- package/src/tabs/createTabs.ts +74 -92
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +52 -50
- package/src/tag/createTagGroup.ts +47 -41
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +28 -26
- package/src/toast/createToastRegion.ts +169 -26
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +95 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +193 -210
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +11 -24
- package/src/tooltip/createTooltipTrigger.ts +61 -49
- package/src/tooltip/index.ts +2 -2
- package/src/tree/createTree.ts +35 -37
- package/src/tree/createTreeItem.ts +29 -29
- package/src/tree/createTreeSelectionCheckbox.ts +11 -8
- package/src/tree/index.ts +4 -4
- package/src/tree/types.ts +10 -6
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +9 -11
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +12 -22
- package/src/utils/mergeProps.ts +42 -15
- package/src/utils/platform.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +16 -28
- package/src/visually-hidden/index.ts +1 -1
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -17082
- package/dist/index.ssr.js.map +0 -1
- package/src/i18n/NumberFormatter.ts +0 -266
|
@@ -5,17 +5,15 @@
|
|
|
5
5
|
* Based on @react-aria/datepicker useDatePicker
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { createMemo } from
|
|
9
|
-
import { createId } from
|
|
10
|
-
import { createLabel } from
|
|
11
|
-
import { access, type MaybeAccessor } from
|
|
12
|
-
import { mergeProps } from
|
|
13
|
-
import { useLocale } from
|
|
14
|
-
import
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// TYPES
|
|
18
|
-
// ============================================
|
|
8
|
+
import { createMemo } from "solid-js";
|
|
9
|
+
import { createId } from "../ssr";
|
|
10
|
+
import { createLabel } from "../label/createLabel";
|
|
11
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
12
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
13
|
+
import { useLocale } from "../i18n";
|
|
14
|
+
import { createPress } from "../interactions/createPress";
|
|
15
|
+
import { DateFormatter, getLocalTimeZone } from "@internationalized/date";
|
|
16
|
+
import type { DateFieldState, CalendarState } from "@proyecto-viviana/solid-stately";
|
|
19
17
|
|
|
20
18
|
export interface AriaDatePickerProps {
|
|
21
19
|
/** An ID for the date picker. */
|
|
@@ -23,11 +21,11 @@ export interface AriaDatePickerProps {
|
|
|
23
21
|
/** A visible label for the date picker. */
|
|
24
22
|
label?: string;
|
|
25
23
|
/** An accessible label for the date picker. */
|
|
26
|
-
|
|
24
|
+
"aria-label"?: string;
|
|
27
25
|
/** The ID of an element that labels the date picker. */
|
|
28
|
-
|
|
26
|
+
"aria-labelledby"?: string;
|
|
29
27
|
/** The ID of an element that describes the date picker. */
|
|
30
|
-
|
|
28
|
+
"aria-describedby"?: string;
|
|
31
29
|
/** Whether the date picker is disabled. */
|
|
32
30
|
isDisabled?: boolean;
|
|
33
31
|
/** Whether the date picker is read-only. */
|
|
@@ -46,6 +44,38 @@ export interface AriaDatePickerProps {
|
|
|
46
44
|
dialogAriaLabel?: string;
|
|
47
45
|
/** Accessible label for the calendar grid region. */
|
|
48
46
|
calendarAriaLabel?: string;
|
|
47
|
+
/** The minimum allowed date. */
|
|
48
|
+
minValue?: Date;
|
|
49
|
+
/** The maximum allowed date. */
|
|
50
|
+
maxValue?: Date;
|
|
51
|
+
/** Whether a date is unavailable. */
|
|
52
|
+
isDateUnavailable?: (date: unknown) => boolean;
|
|
53
|
+
/** The first day of the week. */
|
|
54
|
+
firstDayOfWeek?: number;
|
|
55
|
+
/** Page behavior for calendar. */
|
|
56
|
+
pageBehavior?: "single" | "visible";
|
|
57
|
+
/** Whether to force leading zeros. */
|
|
58
|
+
shouldForceLeadingZeros?: boolean;
|
|
59
|
+
/** Callback when focus changes. */
|
|
60
|
+
onFocusChange?: (isFocused: boolean) => void;
|
|
61
|
+
/** Callback when focused. */
|
|
62
|
+
onFocus?: (e: FocusEvent) => void;
|
|
63
|
+
/** Callback when blurred. */
|
|
64
|
+
onBlur?: (e: FocusEvent) => void;
|
|
65
|
+
/** The name attribute for form submission. */
|
|
66
|
+
name?: string;
|
|
67
|
+
/** The form attribute. */
|
|
68
|
+
form?: string;
|
|
69
|
+
/** Auto focus the field. */
|
|
70
|
+
autoFocus?: boolean;
|
|
71
|
+
/** The placeholder value. */
|
|
72
|
+
placeholderValue?: unknown;
|
|
73
|
+
/** Whether to hide the time zone. */
|
|
74
|
+
hideTimeZone?: boolean;
|
|
75
|
+
/** The hour cycle. */
|
|
76
|
+
hourCycle?: 12 | 24;
|
|
77
|
+
/** The granularity. */
|
|
78
|
+
granularity?: "day" | "hour" | "minute" | "second";
|
|
49
79
|
}
|
|
50
80
|
|
|
51
81
|
export interface DatePickerState {
|
|
@@ -76,12 +106,22 @@ export interface DatePickerAria {
|
|
|
76
106
|
descriptionProps: Record<string, unknown>;
|
|
77
107
|
/** Props for the error message element. */
|
|
78
108
|
errorMessageProps: Record<string, unknown>;
|
|
109
|
+
/** Whether the picker is invalid. */
|
|
110
|
+
isInvalid: boolean;
|
|
111
|
+
/** Validation errors. */
|
|
112
|
+
validationErrors: string[];
|
|
113
|
+
/** Validation details. */
|
|
114
|
+
validationDetails: Record<string, unknown>;
|
|
115
|
+
/** Focus manager for programmatic segment focus. */
|
|
116
|
+
focusManager: {
|
|
117
|
+
focusFirst: () => void;
|
|
118
|
+
focusLast: () => void;
|
|
119
|
+
} & {
|
|
120
|
+
/** @internal Wires the actual focus implementations from the component layer */
|
|
121
|
+
_register?: (first: () => void, last: () => void) => void;
|
|
122
|
+
};
|
|
79
123
|
}
|
|
80
124
|
|
|
81
|
-
// ============================================
|
|
82
|
-
// IMPLEMENTATION
|
|
83
|
-
// ============================================
|
|
84
|
-
|
|
85
125
|
/**
|
|
86
126
|
* Provides the behavior and accessibility implementation for a date picker component.
|
|
87
127
|
*/
|
|
@@ -89,7 +129,7 @@ export function createDatePicker<T extends DateFieldState, C extends CalendarSta
|
|
|
89
129
|
props: MaybeAccessor<AriaDatePickerProps>,
|
|
90
130
|
state: T,
|
|
91
131
|
overlayState: DatePickerState,
|
|
92
|
-
_calendarState?: C
|
|
132
|
+
_calendarState?: C,
|
|
93
133
|
): DatePickerAria {
|
|
94
134
|
const locale = useLocale();
|
|
95
135
|
const getProps = () => access(props);
|
|
@@ -97,108 +137,243 @@ export function createDatePicker<T extends DateFieldState, C extends CalendarSta
|
|
|
97
137
|
const descriptionId = createId();
|
|
98
138
|
const errorMessageId = createId();
|
|
99
139
|
const dialogId = createId();
|
|
140
|
+
const buttonId = createId();
|
|
141
|
+
const fieldId = createId();
|
|
100
142
|
|
|
101
143
|
// Create label handling
|
|
102
144
|
const { labelProps, fieldProps: labelFieldProps } = createLabel({
|
|
103
|
-
get label() {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
145
|
+
get label() {
|
|
146
|
+
return getProps().label;
|
|
147
|
+
},
|
|
148
|
+
get "aria-label"() {
|
|
149
|
+
return getProps()["aria-label"];
|
|
150
|
+
},
|
|
151
|
+
get "aria-labelledby"() {
|
|
152
|
+
return getProps()["aria-labelledby"];
|
|
153
|
+
},
|
|
154
|
+
labelElementType: "span",
|
|
107
155
|
});
|
|
108
156
|
|
|
109
157
|
// Build aria-describedby
|
|
110
158
|
const getAriaDescribedBy = () => {
|
|
111
159
|
const p = getProps();
|
|
112
160
|
const ids: string[] = [];
|
|
113
|
-
if (p[
|
|
114
|
-
ids.push(p[
|
|
161
|
+
if (p["aria-describedby"]) {
|
|
162
|
+
ids.push(p["aria-describedby"]);
|
|
163
|
+
}
|
|
164
|
+
if (valueDescription()) {
|
|
165
|
+
ids.push(valueDescriptionId);
|
|
115
166
|
}
|
|
116
167
|
if (p.description) {
|
|
117
168
|
ids.push(descriptionId);
|
|
118
169
|
}
|
|
119
|
-
if (p.isInvalid && p.errorMessage) {
|
|
170
|
+
if ((p.isInvalid || state.isInvalid()) && p.errorMessage) {
|
|
120
171
|
ids.push(errorMessageId);
|
|
121
172
|
}
|
|
122
|
-
return ids.length > 0 ? ids.join(
|
|
173
|
+
return ids.length > 0 ? ids.join(" ") : undefined;
|
|
123
174
|
};
|
|
124
175
|
|
|
176
|
+
// Selected date description for screen readers
|
|
177
|
+
const valueDescriptionId = createId();
|
|
178
|
+
const valueDescription = createMemo(() => {
|
|
179
|
+
const v = state.value?.();
|
|
180
|
+
if (!v) return "";
|
|
181
|
+
const formatter = new DateFormatter(locale().locale, {
|
|
182
|
+
year: "numeric",
|
|
183
|
+
month: "long",
|
|
184
|
+
day: "numeric",
|
|
185
|
+
});
|
|
186
|
+
return formatter.format(v.toDate(getLocalTimeZone()));
|
|
187
|
+
});
|
|
188
|
+
|
|
125
189
|
// Group props
|
|
126
190
|
const groupProps = createMemo(() => {
|
|
127
191
|
const p = getProps();
|
|
128
192
|
const isInvalid = p.isInvalid || state.isInvalid();
|
|
193
|
+
const describedBy = getAriaDescribedBy();
|
|
194
|
+
const labelField = labelFieldProps as Record<string, unknown>;
|
|
129
195
|
|
|
130
|
-
return
|
|
196
|
+
return {
|
|
131
197
|
id,
|
|
132
|
-
role:
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
198
|
+
role: "group",
|
|
199
|
+
"aria-label": labelField["aria-label"] || undefined,
|
|
200
|
+
"aria-labelledby": labelField["aria-labelledby"] || undefined,
|
|
201
|
+
"aria-disabled": p.isDisabled || state.isDisabled() || undefined,
|
|
202
|
+
"aria-readonly": p.isReadOnly || state.isReadOnly() || undefined,
|
|
203
|
+
"aria-required": p.isRequired || state.isRequired() || undefined,
|
|
204
|
+
"aria-invalid": isInvalid || undefined,
|
|
205
|
+
"aria-describedby": describedBy,
|
|
206
|
+
};
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
// Field props - applied to DateInput container
|
|
210
|
+
const fieldProps = createMemo(() => {
|
|
211
|
+
const p = getProps();
|
|
212
|
+
const describedBy = getAriaDescribedBy();
|
|
213
|
+
|
|
214
|
+
return {
|
|
215
|
+
id: fieldId,
|
|
216
|
+
"aria-describedby": describedBy,
|
|
217
|
+
value: state.value?.(),
|
|
218
|
+
defaultValue: state.defaultValue,
|
|
219
|
+
onChange: (value: unknown) => {
|
|
220
|
+
state.setValue?.(value as T extends DateFieldState<infer V> ? V | null : null);
|
|
221
|
+
},
|
|
222
|
+
placeholderValue: p.placeholderValue,
|
|
223
|
+
hideTimeZone: p.hideTimeZone,
|
|
224
|
+
hourCycle: p.hourCycle,
|
|
225
|
+
shouldForceLeadingZeros: p.shouldForceLeadingZeros,
|
|
226
|
+
granularity: p.granularity,
|
|
227
|
+
isDisabled: p.isDisabled || state.isDisabled(),
|
|
228
|
+
isReadOnly: p.isReadOnly || state.isReadOnly(),
|
|
229
|
+
isRequired: p.isRequired || state.isRequired(),
|
|
230
|
+
autoFocus: p.autoFocus,
|
|
231
|
+
name: p.name,
|
|
232
|
+
form: p.form,
|
|
233
|
+
};
|
|
139
234
|
});
|
|
140
235
|
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
|
|
236
|
+
// Button props with createPress for keyboard/mouse/touch activation
|
|
237
|
+
const buttonPress = createPress({
|
|
238
|
+
get isDisabled() {
|
|
239
|
+
const p = getProps();
|
|
240
|
+
return p.isDisabled || state.isDisabled();
|
|
241
|
+
},
|
|
242
|
+
onPress: () => {
|
|
243
|
+
overlayState.open();
|
|
244
|
+
},
|
|
245
|
+
});
|
|
144
246
|
|
|
145
|
-
// Button props
|
|
146
247
|
const buttonProps = createMemo(() => {
|
|
147
248
|
const p = getProps();
|
|
148
249
|
const isDisabled = p.isDisabled || state.isDisabled();
|
|
149
250
|
const defaults = getDatePickerLabelDefaults(locale().locale);
|
|
251
|
+
const labelId = (labelProps as Record<string, unknown>)["id"] as string | undefined;
|
|
252
|
+
const labelledBy = labelId ? `${buttonId} ${labelId}` : buttonId;
|
|
253
|
+
const describedBy = getAriaDescribedBy();
|
|
150
254
|
|
|
151
|
-
return {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
};
|
|
255
|
+
return mergeProps(buttonPress.pressProps as Record<string, unknown>, {
|
|
256
|
+
id: buttonId,
|
|
257
|
+
type: "button" as const,
|
|
258
|
+
"aria-label": p.buttonAriaLabel ?? defaults.button,
|
|
259
|
+
"aria-labelledby": labelledBy,
|
|
260
|
+
"aria-haspopup": "dialog" as const,
|
|
261
|
+
"aria-expanded": overlayState.isOpen,
|
|
262
|
+
"aria-controls": overlayState.isOpen ? dialogId : undefined,
|
|
263
|
+
"aria-describedby": describedBy,
|
|
264
|
+
"aria-disabled": isDisabled || undefined,
|
|
265
|
+
tabIndex: 0,
|
|
266
|
+
});
|
|
164
267
|
});
|
|
165
268
|
|
|
166
269
|
// Dialog props
|
|
167
270
|
const dialogProps = createMemo(() => {
|
|
271
|
+
const p = getProps();
|
|
168
272
|
const defaults = getDatePickerLabelDefaults(locale().locale);
|
|
273
|
+
const labelId = (labelProps as Record<string, unknown>)["id"] as string | undefined;
|
|
274
|
+
const labelledBy = labelId ? `${buttonId} ${labelId}` : buttonId;
|
|
275
|
+
|
|
169
276
|
return {
|
|
170
277
|
id: dialogId,
|
|
171
|
-
role:
|
|
172
|
-
|
|
173
|
-
|
|
278
|
+
role: "dialog",
|
|
279
|
+
"aria-modal": true,
|
|
280
|
+
"aria-labelledby": labelledBy,
|
|
281
|
+
"aria-label": p.dialogAriaLabel ?? defaults.dialog,
|
|
174
282
|
};
|
|
175
283
|
});
|
|
176
284
|
|
|
177
285
|
// Calendar props
|
|
178
286
|
const calendarProps = createMemo(() => {
|
|
287
|
+
const p = getProps();
|
|
179
288
|
const defaults = getDatePickerLabelDefaults(locale().locale);
|
|
289
|
+
const currentValue = state.value?.();
|
|
290
|
+
|
|
180
291
|
return {
|
|
181
|
-
|
|
292
|
+
autoFocus: true,
|
|
293
|
+
value: currentValue,
|
|
294
|
+
onChange: (value: unknown) => {
|
|
295
|
+
if (state.setValue) {
|
|
296
|
+
state.setValue(value as Parameters<typeof state.setValue>[0]);
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
minValue: p.minValue,
|
|
300
|
+
maxValue: p.maxValue,
|
|
301
|
+
isDisabled: p.isDisabled || state.isDisabled(),
|
|
302
|
+
isReadOnly: p.isReadOnly || state.isReadOnly(),
|
|
303
|
+
isDateUnavailable: p.isDateUnavailable,
|
|
304
|
+
defaultFocusedValue: currentValue ? undefined : p.placeholderValue,
|
|
305
|
+
isInvalid: p.isInvalid || state.isInvalid(),
|
|
306
|
+
errorMessage:
|
|
307
|
+
typeof p.errorMessage === "string"
|
|
308
|
+
? p.errorMessage
|
|
309
|
+
: state.isInvalid()
|
|
310
|
+
? "Invalid date"
|
|
311
|
+
: undefined,
|
|
312
|
+
firstDayOfWeek: p.firstDayOfWeek,
|
|
313
|
+
pageBehavior: p.pageBehavior,
|
|
314
|
+
"aria-label": p.calendarAriaLabel ?? p.dialogAriaLabel ?? defaults.calendar,
|
|
182
315
|
};
|
|
183
316
|
});
|
|
184
317
|
|
|
185
|
-
// Description props
|
|
318
|
+
// Description props for the description element
|
|
186
319
|
const descriptionProps = createMemo(() => ({
|
|
187
320
|
id: descriptionId,
|
|
188
321
|
}));
|
|
189
322
|
|
|
323
|
+
// Value description element props
|
|
324
|
+
const valueDescriptionProps = createMemo(() => ({
|
|
325
|
+
id: valueDescriptionId,
|
|
326
|
+
"aria-hidden": true,
|
|
327
|
+
}));
|
|
328
|
+
|
|
190
329
|
// Error message props
|
|
191
330
|
const errorMessageProps = createMemo(() => ({
|
|
192
331
|
id: errorMessageId,
|
|
193
|
-
role:
|
|
332
|
+
role: "alert",
|
|
194
333
|
}));
|
|
195
334
|
|
|
335
|
+
// Label click focuses first segment — component layer wires the actual ref
|
|
336
|
+
let focusFirstSegment: (() => void) | undefined;
|
|
337
|
+
let focusLastSegment: (() => void) | undefined;
|
|
338
|
+
|
|
339
|
+
const enhancedLabelProps = createMemo(() => {
|
|
340
|
+
return {
|
|
341
|
+
...labelProps,
|
|
342
|
+
onClick: () => {
|
|
343
|
+
focusFirstSegment?.();
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
const isInvalid = createMemo(() => {
|
|
349
|
+
const p = getProps();
|
|
350
|
+
return p.isInvalid || state.isInvalid();
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
const validationErrors = createMemo(() => {
|
|
354
|
+
const p = getProps();
|
|
355
|
+
if (p.isInvalid && typeof p.errorMessage === "string") {
|
|
356
|
+
return [p.errorMessage];
|
|
357
|
+
}
|
|
358
|
+
return [];
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
const validationDetails = createMemo(() => {
|
|
362
|
+
const p = getProps();
|
|
363
|
+
return {
|
|
364
|
+
minValue: p.minValue,
|
|
365
|
+
maxValue: p.maxValue,
|
|
366
|
+
isDateUnavailable: p.isDateUnavailable,
|
|
367
|
+
isInvalid: isInvalid(),
|
|
368
|
+
};
|
|
369
|
+
});
|
|
370
|
+
|
|
196
371
|
return {
|
|
197
372
|
get groupProps() {
|
|
198
373
|
return groupProps();
|
|
199
374
|
},
|
|
200
375
|
get labelProps() {
|
|
201
|
-
return
|
|
376
|
+
return enhancedLabelProps() as Record<string, unknown>;
|
|
202
377
|
},
|
|
203
378
|
get fieldProps() {
|
|
204
379
|
return fieldProps();
|
|
@@ -218,6 +393,24 @@ export function createDatePicker<T extends DateFieldState, C extends CalendarSta
|
|
|
218
393
|
get errorMessageProps() {
|
|
219
394
|
return errorMessageProps();
|
|
220
395
|
},
|
|
396
|
+
get isInvalid() {
|
|
397
|
+
return isInvalid();
|
|
398
|
+
},
|
|
399
|
+
get validationErrors() {
|
|
400
|
+
return validationErrors();
|
|
401
|
+
},
|
|
402
|
+
get validationDetails() {
|
|
403
|
+
return validationDetails();
|
|
404
|
+
},
|
|
405
|
+
focusManager: {
|
|
406
|
+
focusFirst: () => focusFirstSegment?.(),
|
|
407
|
+
focusLast: () => focusLastSegment?.(),
|
|
408
|
+
/** @internal Wires the actual focus implementations from the component layer */
|
|
409
|
+
_register: (first: () => void, last: () => void) => {
|
|
410
|
+
focusFirstSegment = first;
|
|
411
|
+
focusLastSegment = last;
|
|
412
|
+
},
|
|
413
|
+
},
|
|
221
414
|
};
|
|
222
415
|
}
|
|
223
416
|
|
|
@@ -226,19 +419,19 @@ function getDatePickerLabelDefaults(locale: string): {
|
|
|
226
419
|
dialog: string;
|
|
227
420
|
calendar: string;
|
|
228
421
|
} {
|
|
229
|
-
const language = locale.toLowerCase().split(
|
|
422
|
+
const language = locale.toLowerCase().split("-")[0] ?? "en";
|
|
230
423
|
|
|
231
|
-
if (language ===
|
|
424
|
+
if (language === "es") {
|
|
232
425
|
return {
|
|
233
|
-
button:
|
|
234
|
-
dialog:
|
|
235
|
-
calendar:
|
|
426
|
+
button: "Abrir calendario",
|
|
427
|
+
dialog: "Calendario",
|
|
428
|
+
calendar: "Calendario",
|
|
236
429
|
};
|
|
237
430
|
}
|
|
238
431
|
|
|
239
432
|
return {
|
|
240
|
-
button:
|
|
241
|
-
dialog:
|
|
242
|
-
calendar:
|
|
433
|
+
button: "Open calendar",
|
|
434
|
+
dialog: "Calendar",
|
|
435
|
+
calendar: "Calendar",
|
|
243
436
|
};
|
|
244
437
|
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createDatePickerGroup hook for Solidaria
|
|
3
|
+
*
|
|
4
|
+
* Provides keyboard and pointer behavior for the date picker field group.
|
|
5
|
+
* Based on @react-aria/datepicker useDatePickerGroup
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { createMemo } from "solid-js";
|
|
9
|
+
import { type MaybeAccessor, access } from "../utils/reactivity";
|
|
10
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
11
|
+
import { useLocale } from "../i18n";
|
|
12
|
+
import { createPress } from "../interactions/createPress";
|
|
13
|
+
import { nodeContains, getEventTarget } from "../utils";
|
|
14
|
+
import { focusSafely } from "../utils/focus";
|
|
15
|
+
|
|
16
|
+
export interface AriaDatePickerGroupProps {
|
|
17
|
+
isDisabled?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface DatePickerGroupAria {
|
|
21
|
+
groupProps: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function createDatePickerGroup(
|
|
25
|
+
props: MaybeAccessor<AriaDatePickerGroupProps>,
|
|
26
|
+
state: { setOpen: (isOpen: boolean) => void; isOpen: boolean; isDisabled: () => boolean },
|
|
27
|
+
ref: () => HTMLElement | null,
|
|
28
|
+
disableArrowNavigation?: boolean,
|
|
29
|
+
): DatePickerGroupAria {
|
|
30
|
+
const locale = useLocale();
|
|
31
|
+
const resolvedProps = createMemo(() => access(props));
|
|
32
|
+
|
|
33
|
+
const onKeyDown = (e: KeyboardEvent) => {
|
|
34
|
+
if (!nodeContains(e.currentTarget as Node | null, getEventTarget(e) as Node | null)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Open the popover on alt + arrow down/up
|
|
39
|
+
if (e.altKey && (e.key === "ArrowDown" || e.key === "ArrowUp")) {
|
|
40
|
+
e.preventDefault();
|
|
41
|
+
e.stopPropagation();
|
|
42
|
+
state.setOpen(true);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (disableArrowNavigation) return;
|
|
47
|
+
|
|
48
|
+
const root = ref();
|
|
49
|
+
if (!root) return;
|
|
50
|
+
|
|
51
|
+
const segments = Array.from(root.querySelectorAll('[role="spinbutton"]')) as HTMLElement[];
|
|
52
|
+
if (segments.length === 0) return;
|
|
53
|
+
|
|
54
|
+
const activeElement = root.ownerDocument.activeElement;
|
|
55
|
+
let currentIndex = -1;
|
|
56
|
+
if (activeElement) {
|
|
57
|
+
currentIndex = segments.indexOf(activeElement as HTMLElement);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const direction = locale().direction;
|
|
61
|
+
|
|
62
|
+
switch (e.key) {
|
|
63
|
+
case "ArrowLeft": {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
e.stopPropagation();
|
|
66
|
+
if (direction === "rtl") {
|
|
67
|
+
// geometric fallback: in RTL, left arrow moves toward the end (next)
|
|
68
|
+
const nextIndex = currentIndex >= 0 ? currentIndex + 1 : 0;
|
|
69
|
+
if (nextIndex < segments.length) {
|
|
70
|
+
focusSafely(segments[nextIndex]);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
const prevIndex = currentIndex >= 0 ? currentIndex - 1 : segments.length - 1;
|
|
74
|
+
if (prevIndex >= 0) {
|
|
75
|
+
focusSafely(segments[prevIndex]);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case "ArrowRight": {
|
|
81
|
+
e.preventDefault();
|
|
82
|
+
e.stopPropagation();
|
|
83
|
+
if (direction === "rtl") {
|
|
84
|
+
// geometric fallback: in RTL, right arrow moves toward the start (previous)
|
|
85
|
+
const prevIndex = currentIndex >= 0 ? currentIndex - 1 : segments.length - 1;
|
|
86
|
+
if (prevIndex >= 0) {
|
|
87
|
+
focusSafely(segments[prevIndex]);
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
const nextIndex = currentIndex >= 0 ? currentIndex + 1 : 0;
|
|
91
|
+
if (nextIndex < segments.length) {
|
|
92
|
+
focusSafely(segments[nextIndex]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const focusLast = (event?: Event) => {
|
|
101
|
+
const root = ref();
|
|
102
|
+
if (!root) return;
|
|
103
|
+
|
|
104
|
+
const target = event ? getEventTarget(event) : null;
|
|
105
|
+
|
|
106
|
+
const segments = Array.from(root.querySelectorAll('[role="spinbutton"]')) as HTMLElement[];
|
|
107
|
+
if (segments.length === 0) return;
|
|
108
|
+
|
|
109
|
+
let startIndex = segments.length - 1;
|
|
110
|
+
if (target) {
|
|
111
|
+
const targetIndex = segments.indexOf(target as HTMLElement);
|
|
112
|
+
if (targetIndex >= 0) {
|
|
113
|
+
startIndex = targetIndex;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
for (let i = startIndex; i >= 0; i--) {
|
|
118
|
+
const segment = segments[i];
|
|
119
|
+
if (segment.getAttribute("data-placeholder") !== "true") {
|
|
120
|
+
focusSafely(segment);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const { pressProps } = createPress({
|
|
127
|
+
isDisabled: () => resolvedProps().isDisabled || state.isDisabled(),
|
|
128
|
+
preventFocusOnPress: true,
|
|
129
|
+
allowTextSelectionOnPress: true,
|
|
130
|
+
onPressStart(e) {
|
|
131
|
+
if (e.pointerType === "mouse") {
|
|
132
|
+
focusLast(e as unknown as Event);
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
onPress(e) {
|
|
136
|
+
if (e.pointerType === "touch" || e.pointerType === "pen") {
|
|
137
|
+
focusLast(e as unknown as Event);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
get groupProps() {
|
|
144
|
+
return mergeProps(pressProps, {
|
|
145
|
+
onKeyDown,
|
|
146
|
+
});
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|