@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,18 +5,18 @@
|
|
|
5
5
|
* Based on @react-aria/datepicker useDateSegment
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { createSignal, createMemo } from
|
|
9
|
-
import { access, type MaybeAccessor } from
|
|
10
|
-
import type { DateFieldState, DateSegment, DateSegmentType } from
|
|
11
|
-
import { useLocale } from
|
|
12
|
-
|
|
13
|
-
// ============================================
|
|
14
|
-
// TYPES
|
|
15
|
-
// ============================================
|
|
8
|
+
import { createSignal, createMemo, onCleanup } from "solid-js";
|
|
9
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
10
|
+
import type { DateFieldState, DateSegment, DateSegmentType } from "@proyecto-viviana/solid-stately";
|
|
11
|
+
import { useLocale } from "../i18n";
|
|
16
12
|
|
|
17
13
|
export interface AriaDateSegmentProps {
|
|
18
14
|
/** The segment data. */
|
|
19
15
|
segment: DateSegment;
|
|
16
|
+
/** The ID of the calendar dialog controlled by this segment (when inside a datepicker). */
|
|
17
|
+
"aria-controls"?: string;
|
|
18
|
+
/** The ID of an element that describes the segment. */
|
|
19
|
+
"aria-describedby"?: string;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export interface DateSegmentAria {
|
|
@@ -30,23 +30,25 @@ export interface DateSegmentAria {
|
|
|
30
30
|
isPlaceholder: boolean;
|
|
31
31
|
/** The text to display. */
|
|
32
32
|
text: string;
|
|
33
|
+
/** Whether the segment is hovered. */
|
|
34
|
+
isHovered: boolean;
|
|
35
|
+
/** Whether the segment has keyboard focus visible. */
|
|
36
|
+
isFocusVisible: boolean;
|
|
33
37
|
}
|
|
34
38
|
|
|
35
|
-
// ============================================
|
|
36
|
-
// IMPLEMENTATION
|
|
37
|
-
// ============================================
|
|
38
|
-
|
|
39
39
|
/**
|
|
40
40
|
* Provides the behavior and accessibility implementation for a date segment.
|
|
41
41
|
*/
|
|
42
42
|
export function createDateSegment<T extends DateFieldState>(
|
|
43
43
|
props: MaybeAccessor<AriaDateSegmentProps>,
|
|
44
44
|
state: T,
|
|
45
|
-
ref?: () => HTMLElement | null
|
|
45
|
+
ref?: () => HTMLElement | null,
|
|
46
46
|
): DateSegmentAria {
|
|
47
47
|
const getProps = () => access(props);
|
|
48
48
|
const [isFocused, setIsFocused] = createSignal(false);
|
|
49
|
-
const [
|
|
49
|
+
const [isFocusVisible, setIsFocusVisible] = createSignal(false);
|
|
50
|
+
const [isHovered, setIsHovered] = createSignal(false);
|
|
51
|
+
const [enteredKeys, setEnteredKeys] = createSignal("");
|
|
50
52
|
const [isComposing, setIsComposing] = createSignal(false);
|
|
51
53
|
const locale = useLocale();
|
|
52
54
|
|
|
@@ -59,25 +61,53 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
59
61
|
return seg.isEditable && !state.isDisabled() && !state.isReadOnly();
|
|
60
62
|
});
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
// Long press state for ArrowUp / ArrowDown
|
|
65
|
+
let longPressTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
66
|
+
let longPressInterval: ReturnType<typeof setInterval> | null = null;
|
|
67
|
+
let hadPointerDown = false;
|
|
68
|
+
|
|
69
|
+
const clearLongPress = () => {
|
|
70
|
+
if (longPressTimeout) {
|
|
71
|
+
clearTimeout(longPressTimeout);
|
|
72
|
+
longPressTimeout = null;
|
|
73
|
+
}
|
|
74
|
+
if (longPressInterval) {
|
|
75
|
+
clearInterval(longPressInterval);
|
|
76
|
+
longPressInterval = null;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const startLongPress = (action: () => void) => {
|
|
81
|
+
clearLongPress();
|
|
82
|
+
longPressTimeout = setTimeout(() => {
|
|
83
|
+
action();
|
|
84
|
+
longPressInterval = setInterval(() => {
|
|
85
|
+
action();
|
|
86
|
+
}, 100);
|
|
87
|
+
}, 300);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
onCleanup(() => {
|
|
91
|
+
clearLongPress();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const focusSegment = (target: "first" | "last" | "prev" | "next") => {
|
|
63
95
|
const el = ref?.();
|
|
64
96
|
if (!el) return;
|
|
65
97
|
|
|
66
98
|
const container = el.parentElement;
|
|
67
99
|
if (!container) return;
|
|
68
100
|
|
|
69
|
-
const segments = Array.from(
|
|
70
|
-
container.querySelectorAll<HTMLElement>('[role="spinbutton"]')
|
|
71
|
-
);
|
|
101
|
+
const segments = Array.from(container.querySelectorAll<HTMLElement>('[role="spinbutton"]'));
|
|
72
102
|
|
|
73
103
|
if (segments.length === 0) return;
|
|
74
104
|
|
|
75
|
-
if (target ===
|
|
105
|
+
if (target === "first") {
|
|
76
106
|
segments[0]?.focus();
|
|
77
107
|
return;
|
|
78
108
|
}
|
|
79
109
|
|
|
80
|
-
if (target ===
|
|
110
|
+
if (target === "last") {
|
|
81
111
|
segments[segments.length - 1]?.focus();
|
|
82
112
|
return;
|
|
83
113
|
}
|
|
@@ -85,7 +115,7 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
85
115
|
const currentIndex = segments.indexOf(el);
|
|
86
116
|
if (currentIndex < 0) return;
|
|
87
117
|
|
|
88
|
-
const nextIndex = target ===
|
|
118
|
+
const nextIndex = target === "next" ? currentIndex + 1 : currentIndex - 1;
|
|
89
119
|
if (nextIndex >= 0 && nextIndex < segments.length) {
|
|
90
120
|
segments[nextIndex]?.focus();
|
|
91
121
|
}
|
|
@@ -93,7 +123,7 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
93
123
|
|
|
94
124
|
const clearCurrentSegment = (type: DateSegmentType) => {
|
|
95
125
|
state.clearSegment(type);
|
|
96
|
-
setEnteredKeys(
|
|
126
|
+
setEnteredKeys("");
|
|
97
127
|
};
|
|
98
128
|
|
|
99
129
|
// Handle keyboard input
|
|
@@ -104,43 +134,52 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
104
134
|
const seg = segment();
|
|
105
135
|
const type = seg.type;
|
|
106
136
|
|
|
107
|
-
if (type ===
|
|
137
|
+
if (type === "literal") return;
|
|
138
|
+
|
|
139
|
+
// Keyboard interaction means focus is visible
|
|
140
|
+
setIsFocusVisible(true);
|
|
108
141
|
|
|
109
142
|
switch (e.key) {
|
|
110
|
-
case
|
|
143
|
+
case "ArrowRight":
|
|
111
144
|
e.preventDefault();
|
|
112
|
-
focusSegment(locale().direction ===
|
|
145
|
+
focusSegment(locale().direction === "rtl" ? "prev" : "next");
|
|
113
146
|
break;
|
|
114
|
-
case
|
|
147
|
+
case "ArrowLeft":
|
|
115
148
|
e.preventDefault();
|
|
116
|
-
focusSegment(locale().direction ===
|
|
149
|
+
focusSegment(locale().direction === "rtl" ? "next" : "prev");
|
|
117
150
|
break;
|
|
118
|
-
case
|
|
151
|
+
case "ArrowUp":
|
|
119
152
|
e.preventDefault();
|
|
120
153
|
state.incrementSegment(type);
|
|
154
|
+
if (!e.repeat) {
|
|
155
|
+
startLongPress(() => state.incrementSegment(type));
|
|
156
|
+
}
|
|
121
157
|
break;
|
|
122
|
-
case
|
|
158
|
+
case "ArrowDown":
|
|
123
159
|
e.preventDefault();
|
|
124
160
|
state.decrementSegment(type);
|
|
161
|
+
if (!e.repeat) {
|
|
162
|
+
startLongPress(() => state.decrementSegment(type));
|
|
163
|
+
}
|
|
125
164
|
break;
|
|
126
|
-
case
|
|
165
|
+
case "Home":
|
|
127
166
|
e.preventDefault();
|
|
128
|
-
focusSegment(
|
|
167
|
+
focusSegment("first");
|
|
129
168
|
break;
|
|
130
|
-
case
|
|
169
|
+
case "End":
|
|
131
170
|
e.preventDefault();
|
|
132
|
-
focusSegment(
|
|
171
|
+
focusSegment("last");
|
|
133
172
|
break;
|
|
134
|
-
case
|
|
173
|
+
case "Backspace":
|
|
135
174
|
e.preventDefault();
|
|
136
175
|
// Match common date-field UX: backspace on an empty placeholder moves to previous segment.
|
|
137
176
|
if (seg.isPlaceholder) {
|
|
138
|
-
focusSegment(
|
|
177
|
+
focusSegment("prev");
|
|
139
178
|
} else {
|
|
140
179
|
clearCurrentSegment(type);
|
|
141
180
|
}
|
|
142
181
|
break;
|
|
143
|
-
case
|
|
182
|
+
case "Delete":
|
|
144
183
|
e.preventDefault();
|
|
145
184
|
clearCurrentSegment(type);
|
|
146
185
|
break;
|
|
@@ -155,12 +194,12 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
155
194
|
}
|
|
156
195
|
};
|
|
157
196
|
|
|
197
|
+
const handleKeyUp = () => {
|
|
198
|
+
clearLongPress();
|
|
199
|
+
};
|
|
200
|
+
|
|
158
201
|
// Handle numeric input
|
|
159
|
-
const handleNumericInput = (
|
|
160
|
-
key: string,
|
|
161
|
-
type: DateSegmentType,
|
|
162
|
-
seg: DateSegment
|
|
163
|
-
) => {
|
|
202
|
+
const handleNumericInput = (key: string, type: DateSegmentType, seg: DateSegment) => {
|
|
164
203
|
const newKeys = enteredKeys() + key;
|
|
165
204
|
const numValue = parseInt(newKeys, 10);
|
|
166
205
|
const maxValue = seg.maxValue ?? 99;
|
|
@@ -172,10 +211,10 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
172
211
|
state.setSegment(type, numValue);
|
|
173
212
|
|
|
174
213
|
// If entering more digits wouldn't make sense, clear entered keys
|
|
175
|
-
const potentialNextValue = parseInt(newKeys +
|
|
214
|
+
const potentialNextValue = parseInt(newKeys + "0", 10);
|
|
176
215
|
if (potentialNextValue > maxValue || newKeys.length >= maxDigits) {
|
|
177
|
-
setEnteredKeys(
|
|
178
|
-
focusSegment(
|
|
216
|
+
setEnteredKeys("");
|
|
217
|
+
focusSegment("next");
|
|
179
218
|
} else {
|
|
180
219
|
setEnteredKeys(newKeys);
|
|
181
220
|
}
|
|
@@ -184,15 +223,15 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
184
223
|
const singleValue = parseInt(key, 10);
|
|
185
224
|
if (singleValue >= minValue && singleValue <= maxValue) {
|
|
186
225
|
state.setSegment(type, singleValue);
|
|
187
|
-
const potentialNextValue = parseInt(key +
|
|
226
|
+
const potentialNextValue = parseInt(key + "0", 10);
|
|
188
227
|
if (potentialNextValue > maxValue || key.length >= maxDigits) {
|
|
189
|
-
setEnteredKeys(
|
|
190
|
-
focusSegment(
|
|
228
|
+
setEnteredKeys("");
|
|
229
|
+
focusSegment("next");
|
|
191
230
|
} else {
|
|
192
231
|
setEnteredKeys(key);
|
|
193
232
|
}
|
|
194
233
|
} else {
|
|
195
|
-
setEnteredKeys(
|
|
234
|
+
setEnteredKeys("");
|
|
196
235
|
}
|
|
197
236
|
}
|
|
198
237
|
};
|
|
@@ -202,15 +241,15 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
202
241
|
if (isComposing()) return;
|
|
203
242
|
|
|
204
243
|
const seg = segment();
|
|
205
|
-
if (seg.type ===
|
|
244
|
+
if (seg.type === "literal") return;
|
|
206
245
|
|
|
207
|
-
if (e.inputType ===
|
|
246
|
+
if (e.inputType === "deleteContentBackward" || e.inputType === "deleteContentForward") {
|
|
208
247
|
e.preventDefault();
|
|
209
248
|
clearCurrentSegment(seg.type);
|
|
210
249
|
return;
|
|
211
250
|
}
|
|
212
251
|
|
|
213
|
-
if (e.inputType ===
|
|
252
|
+
if (e.inputType === "insertText" && e.data) {
|
|
214
253
|
const normalizedDigit = normalizeDigit(e.data);
|
|
215
254
|
if (!normalizedDigit) return;
|
|
216
255
|
e.preventDefault();
|
|
@@ -221,7 +260,7 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
221
260
|
const handleCompositionStart = () => {
|
|
222
261
|
if (!isEditable()) return;
|
|
223
262
|
setIsComposing(true);
|
|
224
|
-
setEnteredKeys(
|
|
263
|
+
setEnteredKeys("");
|
|
225
264
|
};
|
|
226
265
|
|
|
227
266
|
const handleCompositionEnd = (e: CompositionEvent) => {
|
|
@@ -229,9 +268,9 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
229
268
|
setIsComposing(false);
|
|
230
269
|
|
|
231
270
|
const seg = segment();
|
|
232
|
-
if (seg.type ===
|
|
271
|
+
if (seg.type === "literal") return;
|
|
233
272
|
|
|
234
|
-
const digits = extractNormalizedDigits(e.data ??
|
|
273
|
+
const digits = extractNormalizedDigits(e.data ?? "");
|
|
235
274
|
if (digits.length === 0) return;
|
|
236
275
|
|
|
237
276
|
for (const digit of digits) {
|
|
@@ -242,53 +281,99 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
242
281
|
// Handle focus
|
|
243
282
|
const handleFocus = () => {
|
|
244
283
|
setIsFocused(true);
|
|
245
|
-
setEnteredKeys(
|
|
284
|
+
setEnteredKeys("");
|
|
285
|
+
|
|
286
|
+
if (!hadPointerDown) {
|
|
287
|
+
setIsFocusVisible(true);
|
|
288
|
+
}
|
|
289
|
+
hadPointerDown = false;
|
|
290
|
+
|
|
291
|
+
// Select all text in the segment
|
|
292
|
+
const el = ref?.();
|
|
293
|
+
if (el && typeof window !== "undefined") {
|
|
294
|
+
const selection = window.getSelection();
|
|
295
|
+
if (selection) {
|
|
296
|
+
const range = new Range();
|
|
297
|
+
range.selectNodeContents(el);
|
|
298
|
+
selection.removeAllRanges();
|
|
299
|
+
selection.addRange(range);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
246
302
|
};
|
|
247
303
|
|
|
248
304
|
const handleBlur = () => {
|
|
249
305
|
setIsFocused(false);
|
|
250
|
-
|
|
306
|
+
setIsFocusVisible(false);
|
|
307
|
+
setEnteredKeys("");
|
|
308
|
+
clearLongPress();
|
|
251
309
|
state.confirmPlaceholder();
|
|
252
310
|
};
|
|
253
311
|
|
|
312
|
+
const handleMouseEnter = () => {
|
|
313
|
+
setIsHovered(true);
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
const handleMouseLeave = () => {
|
|
317
|
+
setIsHovered(false);
|
|
318
|
+
};
|
|
319
|
+
|
|
254
320
|
// Segment props
|
|
255
321
|
const segmentProps = createMemo(() => {
|
|
256
322
|
const seg = segment();
|
|
257
323
|
const type = seg.type;
|
|
324
|
+
const p = getProps();
|
|
258
325
|
|
|
259
326
|
// Literal segments don't need interaction props
|
|
260
|
-
if (type ===
|
|
327
|
+
if (type === "literal") {
|
|
261
328
|
return {
|
|
262
|
-
|
|
329
|
+
"aria-hidden": true,
|
|
263
330
|
};
|
|
264
331
|
}
|
|
265
332
|
|
|
266
333
|
return {
|
|
267
|
-
role:
|
|
334
|
+
role: "spinbutton",
|
|
268
335
|
tabIndex: isEditable() ? 0 : -1,
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
336
|
+
"aria-label": getSegmentLabel(type, locale().locale),
|
|
337
|
+
"aria-valuenow": seg.value,
|
|
338
|
+
"aria-valuemin": seg.minValue,
|
|
339
|
+
"aria-valuemax": seg.maxValue,
|
|
340
|
+
"aria-valuetext": seg.isPlaceholder ? "" : seg.text,
|
|
341
|
+
"aria-readonly": state.isReadOnly() || undefined,
|
|
342
|
+
"aria-disabled": state.isDisabled() || undefined,
|
|
343
|
+
"aria-invalid": state.isInvalid() || undefined,
|
|
344
|
+
"aria-controls": p["aria-controls"] || undefined,
|
|
345
|
+
"aria-describedby": p["aria-describedby"] || undefined,
|
|
277
346
|
contentEditable: isEditable(),
|
|
278
347
|
suppressContentEditableWarning: true,
|
|
279
|
-
inputMode:
|
|
280
|
-
autoCorrect:
|
|
281
|
-
enterKeyHint:
|
|
348
|
+
inputMode: "numeric" as const,
|
|
349
|
+
autoCorrect: "off",
|
|
350
|
+
enterKeyHint: "next" as const,
|
|
282
351
|
spellCheck: false,
|
|
352
|
+
"data-placeholder": seg.isPlaceholder ? "true" : undefined,
|
|
353
|
+
"data-readonly": state.isReadOnly() || undefined,
|
|
354
|
+
"data-disabled": state.isDisabled() || undefined,
|
|
355
|
+
"data-invalid": state.isInvalid() || undefined,
|
|
356
|
+
"data-type": seg.type,
|
|
357
|
+
"data-hovered": isHovered() || undefined,
|
|
358
|
+
"data-focused": isFocused() || undefined,
|
|
359
|
+
"data-focus-visible": isFocusVisible() || undefined,
|
|
283
360
|
onKeyDown: handleKeyDown,
|
|
361
|
+
onKeyUp: handleKeyUp,
|
|
284
362
|
onFocus: handleFocus,
|
|
285
363
|
onBlur: handleBlur,
|
|
286
364
|
onBeforeInput: handleBeforeInput,
|
|
287
365
|
onCompositionStart: handleCompositionStart,
|
|
288
366
|
onCompositionEnd: handleCompositionEnd,
|
|
289
|
-
|
|
367
|
+
onMouseEnter: handleMouseEnter,
|
|
368
|
+
onMouseLeave: handleMouseLeave,
|
|
369
|
+
onPointerDown: (e: PointerEvent) => {
|
|
290
370
|
// Prevent cursor positioning in the middle of the segment
|
|
291
371
|
e.preventDefault();
|
|
372
|
+
hadPointerDown = true;
|
|
373
|
+
setIsFocusVisible(false);
|
|
374
|
+
},
|
|
375
|
+
onPointerUp: () => {
|
|
376
|
+
clearLongPress();
|
|
292
377
|
},
|
|
293
378
|
};
|
|
294
379
|
});
|
|
@@ -315,42 +400,44 @@ export function createDateSegment<T extends DateFieldState>(
|
|
|
315
400
|
get text() {
|
|
316
401
|
return text();
|
|
317
402
|
},
|
|
403
|
+
get isHovered() {
|
|
404
|
+
return isHovered();
|
|
405
|
+
},
|
|
406
|
+
get isFocusVisible() {
|
|
407
|
+
return isFocusVisible();
|
|
408
|
+
},
|
|
318
409
|
};
|
|
319
410
|
}
|
|
320
411
|
|
|
321
|
-
|
|
322
|
-
// HELPER FUNCTIONS
|
|
323
|
-
// ============================================
|
|
324
|
-
|
|
325
|
-
const SEGMENT_LABELS: Record<string, Record<Exclude<DateSegmentType, 'literal'>, string>> = {
|
|
412
|
+
const SEGMENT_LABELS: Record<string, Record<Exclude<DateSegmentType, "literal">, string>> = {
|
|
326
413
|
en: {
|
|
327
|
-
year:
|
|
328
|
-
month:
|
|
329
|
-
day:
|
|
330
|
-
hour:
|
|
331
|
-
minute:
|
|
332
|
-
second:
|
|
333
|
-
dayPeriod:
|
|
334
|
-
era:
|
|
335
|
-
timeZoneName:
|
|
414
|
+
year: "Year",
|
|
415
|
+
month: "Month",
|
|
416
|
+
day: "Day",
|
|
417
|
+
hour: "Hour",
|
|
418
|
+
minute: "Minute",
|
|
419
|
+
second: "Second",
|
|
420
|
+
dayPeriod: "AM/PM",
|
|
421
|
+
era: "Era",
|
|
422
|
+
timeZoneName: "Time zone",
|
|
336
423
|
},
|
|
337
424
|
es: {
|
|
338
|
-
year:
|
|
339
|
-
month:
|
|
340
|
-
day:
|
|
341
|
-
hour:
|
|
342
|
-
minute:
|
|
343
|
-
second:
|
|
344
|
-
dayPeriod:
|
|
345
|
-
era:
|
|
346
|
-
timeZoneName:
|
|
425
|
+
year: "Año",
|
|
426
|
+
month: "Mes",
|
|
427
|
+
day: "Día",
|
|
428
|
+
hour: "Hora",
|
|
429
|
+
minute: "Minuto",
|
|
430
|
+
second: "Segundo",
|
|
431
|
+
dayPeriod: "AM/PM",
|
|
432
|
+
era: "Era",
|
|
433
|
+
timeZoneName: "Zona horaria",
|
|
347
434
|
},
|
|
348
435
|
};
|
|
349
436
|
|
|
350
437
|
function getSegmentLabel(type: DateSegmentType, locale: string): string {
|
|
351
|
-
if (type ===
|
|
438
|
+
if (type === "literal") return "";
|
|
352
439
|
|
|
353
|
-
const language = locale.toLowerCase().split(
|
|
440
|
+
const language = locale.toLowerCase().split("-")[0] ?? "en";
|
|
354
441
|
const labels = SEGMENT_LABELS[language] ?? SEGMENT_LABELS.en;
|
|
355
442
|
return labels[type];
|
|
356
443
|
}
|
|
@@ -5,16 +5,12 @@
|
|
|
5
5
|
* Based on @react-aria/datepicker useTimeField
|
|
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 type { TimeFieldState, TimeSegment, TimeValue } from
|
|
14
|
-
|
|
15
|
-
// ============================================
|
|
16
|
-
// TYPES
|
|
17
|
-
// ============================================
|
|
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 type { TimeFieldState, TimeSegment, TimeValue } from "@proyecto-viviana/solid-stately";
|
|
18
14
|
|
|
19
15
|
export interface AriaTimeFieldProps {
|
|
20
16
|
/** An ID for the time field. */
|
|
@@ -22,11 +18,11 @@ export interface AriaTimeFieldProps {
|
|
|
22
18
|
/** A visible label for the time field. */
|
|
23
19
|
label?: string;
|
|
24
20
|
/** An accessible label for the time field. */
|
|
25
|
-
|
|
21
|
+
"aria-label"?: string;
|
|
26
22
|
/** The ID of an element that labels the time field. */
|
|
27
|
-
|
|
23
|
+
"aria-labelledby"?: string;
|
|
28
24
|
/** The ID of an element that describes the time field. */
|
|
29
|
-
|
|
25
|
+
"aria-describedby"?: string;
|
|
30
26
|
/** Whether the time field is disabled. */
|
|
31
27
|
isDisabled?: boolean;
|
|
32
28
|
/** Whether the time field is read-only. */
|
|
@@ -39,6 +35,12 @@ export interface AriaTimeFieldProps {
|
|
|
39
35
|
description?: string;
|
|
40
36
|
/** Error message. */
|
|
41
37
|
errorMessage?: string;
|
|
38
|
+
/** The name of the input element, used when submitting an HTML form. */
|
|
39
|
+
name?: string;
|
|
40
|
+
/** The id of the form the hidden input belongs to. */
|
|
41
|
+
form?: string;
|
|
42
|
+
/** Describes the autocomplete behavior for the hidden input. */
|
|
43
|
+
autoComplete?: string;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
export interface TimeFieldAria {
|
|
@@ -56,17 +58,13 @@ export interface TimeFieldAria {
|
|
|
56
58
|
segments: TimeSegment[];
|
|
57
59
|
}
|
|
58
60
|
|
|
59
|
-
// ============================================
|
|
60
|
-
// IMPLEMENTATION
|
|
61
|
-
// ============================================
|
|
62
|
-
|
|
63
61
|
/**
|
|
64
62
|
* Provides the behavior and accessibility implementation for a time field component.
|
|
65
63
|
*/
|
|
66
64
|
export function createTimeField<T extends TimeFieldState<TimeValue>>(
|
|
67
65
|
props: MaybeAccessor<AriaTimeFieldProps>,
|
|
68
66
|
state: T,
|
|
69
|
-
_ref?: () => HTMLElement | null
|
|
67
|
+
_ref?: () => HTMLElement | null,
|
|
70
68
|
): TimeFieldAria {
|
|
71
69
|
const getProps = () => access(props);
|
|
72
70
|
const id = createId(getProps().id);
|
|
@@ -75,26 +73,32 @@ export function createTimeField<T extends TimeFieldState<TimeValue>>(
|
|
|
75
73
|
|
|
76
74
|
// Create label handling
|
|
77
75
|
const { labelProps, fieldProps: labelFieldProps } = createLabel({
|
|
78
|
-
get label() {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
get label() {
|
|
77
|
+
return getProps().label;
|
|
78
|
+
},
|
|
79
|
+
get "aria-label"() {
|
|
80
|
+
return getProps()["aria-label"];
|
|
81
|
+
},
|
|
82
|
+
get "aria-labelledby"() {
|
|
83
|
+
return getProps()["aria-labelledby"];
|
|
84
|
+
},
|
|
85
|
+
labelElementType: "span",
|
|
82
86
|
});
|
|
83
87
|
|
|
84
88
|
// Build aria-describedby
|
|
85
89
|
const getAriaDescribedBy = () => {
|
|
86
90
|
const p = getProps();
|
|
87
91
|
const ids: string[] = [];
|
|
88
|
-
if (p[
|
|
89
|
-
ids.push(p[
|
|
92
|
+
if (p["aria-describedby"]) {
|
|
93
|
+
ids.push(p["aria-describedby"]);
|
|
90
94
|
}
|
|
91
95
|
if (p.description) {
|
|
92
96
|
ids.push(descriptionId);
|
|
93
97
|
}
|
|
94
|
-
if (p.isInvalid && p.errorMessage) {
|
|
98
|
+
if ((p.isInvalid || state.isInvalid()) && p.errorMessage) {
|
|
95
99
|
ids.push(errorMessageId);
|
|
96
100
|
}
|
|
97
|
-
return ids.length > 0 ? ids.join(
|
|
101
|
+
return ids.length > 0 ? ids.join(" ") : undefined;
|
|
98
102
|
};
|
|
99
103
|
|
|
100
104
|
// Segments from state
|
|
@@ -106,18 +110,18 @@ export function createTimeField<T extends TimeFieldState<TimeValue>>(
|
|
|
106
110
|
|
|
107
111
|
return mergeProps(labelFieldProps as Record<string, unknown>, {
|
|
108
112
|
id,
|
|
109
|
-
role:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
role: "group",
|
|
114
|
+
"aria-disabled": p.isDisabled || state.isDisabled() || undefined,
|
|
115
|
+
"aria-readonly": p.isReadOnly || state.isReadOnly() || undefined,
|
|
116
|
+
"aria-required": p.isRequired || state.isRequired() || undefined,
|
|
117
|
+
"aria-invalid": p.isInvalid || state.isInvalid() || undefined,
|
|
118
|
+
"aria-describedby": getAriaDescribedBy(),
|
|
115
119
|
});
|
|
116
120
|
});
|
|
117
121
|
|
|
118
122
|
// Input container props
|
|
119
123
|
const inputProps = createMemo(() => ({
|
|
120
|
-
role:
|
|
124
|
+
role: "presentation",
|
|
121
125
|
}));
|
|
122
126
|
|
|
123
127
|
// Description props
|
|
@@ -128,7 +132,7 @@ export function createTimeField<T extends TimeFieldState<TimeValue>>(
|
|
|
128
132
|
// Error message props
|
|
129
133
|
const errorMessageProps = createMemo(() => ({
|
|
130
134
|
id: errorMessageId,
|
|
131
|
-
role:
|
|
135
|
+
role: "alert",
|
|
132
136
|
}));
|
|
133
137
|
|
|
134
138
|
return {
|