@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,14 +5,10 @@
|
|
|
5
5
|
* and safe restoration patterns.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { createEffect, onCleanup, onMount } from
|
|
9
|
-
import { isServer } from
|
|
10
|
-
import { getOwnerDocument } from
|
|
11
|
-
import { focusSafely } from
|
|
12
|
-
|
|
13
|
-
// ============================================
|
|
14
|
-
// TYPES
|
|
15
|
-
// ============================================
|
|
8
|
+
import { createEffect, onCleanup, onMount } from "solid-js";
|
|
9
|
+
import { isServer } from "solid-js/web";
|
|
10
|
+
import { getOwnerDocument } from "../utils";
|
|
11
|
+
import { focusSafely } from "../utils/focus";
|
|
16
12
|
|
|
17
13
|
export interface FocusRestoreOptions {
|
|
18
14
|
/**
|
|
@@ -64,10 +60,6 @@ export interface FocusRestoreResult {
|
|
|
64
60
|
clear: () => void;
|
|
65
61
|
}
|
|
66
62
|
|
|
67
|
-
// ============================================
|
|
68
|
-
// GLOBAL FOCUS STACK
|
|
69
|
-
// ============================================
|
|
70
|
-
|
|
71
63
|
// Stack to track focus history across scopes
|
|
72
64
|
const focusStack: HTMLElement[] = [];
|
|
73
65
|
|
|
@@ -99,10 +91,6 @@ export function clearFocusStack(): void {
|
|
|
99
91
|
focusStack.length = 0;
|
|
100
92
|
}
|
|
101
93
|
|
|
102
|
-
// ============================================
|
|
103
|
-
// UTILITIES
|
|
104
|
-
// ============================================
|
|
105
|
-
|
|
106
94
|
/**
|
|
107
95
|
* Gets the active element, accounting for shadow DOM.
|
|
108
96
|
*/
|
|
@@ -120,9 +108,9 @@ function getActiveElement(doc: Document): HTMLElement | null {
|
|
|
120
108
|
function isValidForRestore(element: HTMLElement | null): boolean {
|
|
121
109
|
if (!element) return false;
|
|
122
110
|
if (!document.body.contains(element)) return false;
|
|
123
|
-
if (element.hasAttribute(
|
|
124
|
-
if (element.getAttribute(
|
|
125
|
-
if (element.getAttribute(
|
|
111
|
+
if (element.hasAttribute("disabled")) return false;
|
|
112
|
+
if (element.getAttribute("aria-disabled") === "true") return false;
|
|
113
|
+
if (element.getAttribute("aria-hidden") === "true") return false;
|
|
126
114
|
return true;
|
|
127
115
|
}
|
|
128
116
|
|
|
@@ -131,7 +119,12 @@ function isValidForRestore(element: HTMLElement | null): boolean {
|
|
|
131
119
|
*/
|
|
132
120
|
function tryRestoreFocus(
|
|
133
121
|
element: HTMLElement | null,
|
|
134
|
-
options: Required<
|
|
122
|
+
options: Required<
|
|
123
|
+
Pick<
|
|
124
|
+
FocusRestoreOptions,
|
|
125
|
+
"maxRetries" | "retryDelay" | "preventScroll" | "onRestore" | "onRestoreFailed"
|
|
126
|
+
>
|
|
127
|
+
>,
|
|
135
128
|
): void {
|
|
136
129
|
const { maxRetries, retryDelay, preventScroll, onRestore, onRestoreFailed } = options;
|
|
137
130
|
let attempts = 0;
|
|
@@ -164,10 +157,6 @@ function tryRestoreFocus(
|
|
|
164
157
|
requestAnimationFrame(attempt);
|
|
165
158
|
}
|
|
166
159
|
|
|
167
|
-
// ============================================
|
|
168
|
-
// HOOK
|
|
169
|
-
// ============================================
|
|
170
|
-
|
|
171
160
|
/**
|
|
172
161
|
* Creates a focus restoration manager.
|
|
173
162
|
*
|
|
@@ -212,9 +201,7 @@ function tryRestoreFocus(
|
|
|
212
201
|
* }
|
|
213
202
|
* ```
|
|
214
203
|
*/
|
|
215
|
-
export function createFocusRestore(
|
|
216
|
-
options: FocusRestoreOptions = {}
|
|
217
|
-
): FocusRestoreResult {
|
|
204
|
+
export function createFocusRestore(options: FocusRestoreOptions = {}): FocusRestoreResult {
|
|
218
205
|
const {
|
|
219
206
|
restoreOnUnmount = true,
|
|
220
207
|
maxRetries = 3,
|
|
@@ -255,7 +242,7 @@ export function createFocusRestore(
|
|
|
255
242
|
});
|
|
256
243
|
|
|
257
244
|
function saveCurrentFocus(): void {
|
|
258
|
-
const doc = typeof document !==
|
|
245
|
+
const doc = typeof document !== "undefined" ? document : null;
|
|
259
246
|
if (!doc) return;
|
|
260
247
|
|
|
261
248
|
const active = getActiveElement(doc);
|
|
@@ -12,12 +12,8 @@
|
|
|
12
12
|
* - Grid/table navigation
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { type Accessor, createSignal, createEffect, onCleanup } from
|
|
16
|
-
import { isServer } from
|
|
17
|
-
|
|
18
|
-
// ============================================
|
|
19
|
-
// TYPES
|
|
20
|
-
// ============================================
|
|
15
|
+
import { type Accessor, createSignal, createEffect, onCleanup } from "solid-js";
|
|
16
|
+
import { isServer } from "solid-js/web";
|
|
21
17
|
|
|
22
18
|
export interface VirtualFocusOptions<T> {
|
|
23
19
|
/**
|
|
@@ -58,7 +54,7 @@ export interface VirtualFocusOptions<T> {
|
|
|
58
54
|
* Orientation for keyboard navigation.
|
|
59
55
|
* @default 'vertical'
|
|
60
56
|
*/
|
|
61
|
-
orientation?:
|
|
57
|
+
orientation?: "horizontal" | "vertical" | "both";
|
|
62
58
|
}
|
|
63
59
|
|
|
64
60
|
export interface VirtualFocusResult<T> {
|
|
@@ -106,7 +102,7 @@ export interface VirtualFocusResult<T> {
|
|
|
106
102
|
* Props to spread on the container element.
|
|
107
103
|
*/
|
|
108
104
|
containerProps: {
|
|
109
|
-
|
|
105
|
+
"aria-activedescendant": Accessor<string | undefined>;
|
|
110
106
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
111
107
|
};
|
|
112
108
|
/**
|
|
@@ -114,20 +110,12 @@ export interface VirtualFocusResult<T> {
|
|
|
114
110
|
*/
|
|
115
111
|
getItemProps: (key: string) => {
|
|
116
112
|
id: string;
|
|
117
|
-
|
|
113
|
+
"aria-selected"?: boolean;
|
|
118
114
|
};
|
|
119
115
|
}
|
|
120
116
|
|
|
121
|
-
// ============================================
|
|
122
|
-
// CONSTANTS
|
|
123
|
-
// ============================================
|
|
124
|
-
|
|
125
117
|
const DEFAULT_PAGE_SIZE = 10;
|
|
126
118
|
|
|
127
|
-
// ============================================
|
|
128
|
-
// HOOK
|
|
129
|
-
// ============================================
|
|
130
|
-
|
|
131
119
|
/**
|
|
132
120
|
* Creates virtual focus management for a collection.
|
|
133
121
|
*
|
|
@@ -185,9 +173,7 @@ const DEFAULT_PAGE_SIZE = 10;
|
|
|
185
173
|
* }
|
|
186
174
|
* ```
|
|
187
175
|
*/
|
|
188
|
-
export function createVirtualFocus<T>(
|
|
189
|
-
options: VirtualFocusOptions<T>
|
|
190
|
-
): VirtualFocusResult<T> {
|
|
176
|
+
export function createVirtualFocus<T>(options: VirtualFocusOptions<T>): VirtualFocusResult<T> {
|
|
191
177
|
const {
|
|
192
178
|
items,
|
|
193
179
|
getKey,
|
|
@@ -197,7 +183,7 @@ export function createVirtualFocus<T>(
|
|
|
197
183
|
onFocusChange,
|
|
198
184
|
wrap = true,
|
|
199
185
|
skipDisabled = true,
|
|
200
|
-
orientation =
|
|
186
|
+
orientation = "vertical",
|
|
201
187
|
} = options;
|
|
202
188
|
|
|
203
189
|
// During SSR, return minimal implementation
|
|
@@ -215,7 +201,7 @@ export function createVirtualFocus<T>(
|
|
|
215
201
|
focusPageUp: () => {},
|
|
216
202
|
isFocused: () => false,
|
|
217
203
|
containerProps: {
|
|
218
|
-
|
|
204
|
+
"aria-activedescendant": () => undefined,
|
|
219
205
|
onKeyDown: () => {},
|
|
220
206
|
},
|
|
221
207
|
getItemProps: (key: string) => ({ id: `item-${key}` }),
|
|
@@ -223,9 +209,7 @@ export function createVirtualFocus<T>(
|
|
|
223
209
|
}
|
|
224
210
|
|
|
225
211
|
// Internal state for uncontrolled mode
|
|
226
|
-
const [internalKey, setInternalKey] = createSignal<string | null>(
|
|
227
|
-
defaultFocusedKey ?? null
|
|
228
|
-
);
|
|
212
|
+
const [internalKey, setInternalKey] = createSignal<string | null>(defaultFocusedKey ?? null);
|
|
229
213
|
|
|
230
214
|
// Use controlled or uncontrolled value
|
|
231
215
|
const focusedKey = controlledFocusedKey ?? internalKey;
|
|
@@ -320,47 +304,47 @@ export function createVirtualFocus<T>(
|
|
|
320
304
|
|
|
321
305
|
// Keyboard handler
|
|
322
306
|
const onKeyDown = (e: KeyboardEvent): void => {
|
|
323
|
-
const isVertical = orientation ===
|
|
324
|
-
const isHorizontal = orientation ===
|
|
307
|
+
const isVertical = orientation === "vertical" || orientation === "both";
|
|
308
|
+
const isHorizontal = orientation === "horizontal" || orientation === "both";
|
|
325
309
|
|
|
326
310
|
switch (e.key) {
|
|
327
|
-
case
|
|
311
|
+
case "ArrowDown":
|
|
328
312
|
if (isVertical) {
|
|
329
313
|
e.preventDefault();
|
|
330
314
|
focusNext();
|
|
331
315
|
}
|
|
332
316
|
break;
|
|
333
|
-
case
|
|
317
|
+
case "ArrowUp":
|
|
334
318
|
if (isVertical) {
|
|
335
319
|
e.preventDefault();
|
|
336
320
|
focusPrevious();
|
|
337
321
|
}
|
|
338
322
|
break;
|
|
339
|
-
case
|
|
323
|
+
case "ArrowRight":
|
|
340
324
|
if (isHorizontal) {
|
|
341
325
|
e.preventDefault();
|
|
342
326
|
focusNext();
|
|
343
327
|
}
|
|
344
328
|
break;
|
|
345
|
-
case
|
|
329
|
+
case "ArrowLeft":
|
|
346
330
|
if (isHorizontal) {
|
|
347
331
|
e.preventDefault();
|
|
348
332
|
focusPrevious();
|
|
349
333
|
}
|
|
350
334
|
break;
|
|
351
|
-
case
|
|
335
|
+
case "Home":
|
|
352
336
|
e.preventDefault();
|
|
353
337
|
focusFirst();
|
|
354
338
|
break;
|
|
355
|
-
case
|
|
339
|
+
case "End":
|
|
356
340
|
e.preventDefault();
|
|
357
341
|
focusLast();
|
|
358
342
|
break;
|
|
359
|
-
case
|
|
343
|
+
case "PageDown":
|
|
360
344
|
e.preventDefault();
|
|
361
345
|
focusPageDown();
|
|
362
346
|
break;
|
|
363
|
-
case
|
|
347
|
+
case "PageUp":
|
|
364
348
|
e.preventDefault();
|
|
365
349
|
focusPageUp();
|
|
366
350
|
break;
|
|
@@ -368,7 +352,7 @@ export function createVirtualFocus<T>(
|
|
|
368
352
|
};
|
|
369
353
|
|
|
370
354
|
const containerProps = {
|
|
371
|
-
|
|
355
|
+
"aria-activedescendant": () => {
|
|
372
356
|
const key = focusedKey();
|
|
373
357
|
return key ? `item-${key}` : undefined;
|
|
374
358
|
},
|
package/src/focus/index.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
// FocusScope
|
|
2
1
|
export {
|
|
3
2
|
FocusScope,
|
|
4
3
|
useFocusManager,
|
|
5
4
|
type FocusScopeProps,
|
|
6
5
|
type FocusManager,
|
|
7
6
|
type FocusManagerOptions,
|
|
8
|
-
} from
|
|
7
|
+
} from "./FocusScope";
|
|
9
8
|
|
|
10
|
-
// Focus Restoration
|
|
11
9
|
export {
|
|
12
10
|
createFocusRestore,
|
|
13
11
|
pushFocusStack,
|
|
@@ -16,20 +14,18 @@ export {
|
|
|
16
14
|
clearFocusStack,
|
|
17
15
|
type FocusRestoreOptions,
|
|
18
16
|
type FocusRestoreResult,
|
|
19
|
-
} from
|
|
17
|
+
} from "./createFocusRestore";
|
|
20
18
|
|
|
21
|
-
// Virtual Focus
|
|
22
19
|
export {
|
|
23
20
|
createVirtualFocus,
|
|
24
21
|
type VirtualFocusOptions,
|
|
25
22
|
type VirtualFocusResult,
|
|
26
|
-
} from
|
|
23
|
+
} from "./createVirtualFocus";
|
|
27
24
|
|
|
28
|
-
// Auto Focus
|
|
29
25
|
export {
|
|
30
26
|
createAutoFocus,
|
|
31
27
|
clearAutoFocusQueue,
|
|
32
28
|
getAutoFocusQueueLength,
|
|
33
29
|
type AutoFocusOptions,
|
|
34
30
|
type AutoFocusResult,
|
|
35
|
-
} from
|
|
31
|
+
} from "./createAutoFocus";
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Port of @react-aria/utils useFormReset.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { type Accessor, createEffect, onCleanup } from
|
|
8
|
+
import { type Accessor, createEffect, onCleanup } from "solid-js";
|
|
9
9
|
|
|
10
10
|
export interface FormResetOptions<T> {
|
|
11
11
|
/** The default value to reset to. */
|
|
@@ -29,7 +29,7 @@ export interface FormResetOptions<T> {
|
|
|
29
29
|
export function createFormReset<T>(
|
|
30
30
|
ref: Accessor<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | undefined>,
|
|
31
31
|
defaultValue: T,
|
|
32
|
-
onReset: (value: T) => void
|
|
32
|
+
onReset: (value: T) => void,
|
|
33
33
|
): void {
|
|
34
34
|
createEffect(() => {
|
|
35
35
|
const element = ref();
|
|
@@ -42,10 +42,10 @@ export function createFormReset<T>(
|
|
|
42
42
|
onReset(defaultValue);
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
form.addEventListener(
|
|
45
|
+
form.addEventListener("reset", handleReset);
|
|
46
46
|
|
|
47
47
|
onCleanup(() => {
|
|
48
|
-
form.removeEventListener(
|
|
48
|
+
form.removeEventListener("reset", handleReset);
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
}
|
|
@@ -7,23 +7,13 @@
|
|
|
7
7
|
* Port of react-aria's useFormValidation.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { type Accessor, createEffect, onCleanup } from
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
type ValidationResult,
|
|
14
|
-
} from '@proyecto-viviana/solid-stately';
|
|
15
|
-
import { setInteractionModality } from '../interactions/createInteractionModality';
|
|
10
|
+
import { type Accessor, createEffect, onCleanup } from "solid-js";
|
|
11
|
+
import { type FormValidationState, type ValidationResult } from "@proyecto-viviana/solid-stately";
|
|
12
|
+
import { setInteractionModality } from "../interactions/createInteractionModality";
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
// TYPES
|
|
19
|
-
// ============================================
|
|
14
|
+
export type ValidatableElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;
|
|
20
15
|
|
|
21
|
-
export type
|
|
22
|
-
| HTMLInputElement
|
|
23
|
-
| HTMLTextAreaElement
|
|
24
|
-
| HTMLSelectElement;
|
|
25
|
-
|
|
26
|
-
export type ValidationBehavior = 'aria' | 'native';
|
|
16
|
+
export type ValidationBehavior = "aria" | "native";
|
|
27
17
|
|
|
28
18
|
export interface FormValidationProps {
|
|
29
19
|
/** Validation behavior: 'aria' for realtime, 'native' for on submit. */
|
|
@@ -32,10 +22,6 @@ export interface FormValidationProps {
|
|
|
32
22
|
focus?: () => void;
|
|
33
23
|
}
|
|
34
24
|
|
|
35
|
-
// ============================================
|
|
36
|
-
// HELPERS
|
|
37
|
-
// ============================================
|
|
38
|
-
|
|
39
25
|
function getValidity(input: ValidatableElement): ValidityState {
|
|
40
26
|
// Create a snapshot of the validity state (the native object is live)
|
|
41
27
|
const validity = input.validity;
|
|
@@ -72,10 +58,6 @@ function getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null
|
|
|
72
58
|
return null;
|
|
73
59
|
}
|
|
74
60
|
|
|
75
|
-
// ============================================
|
|
76
|
-
// HOOK
|
|
77
|
-
// ============================================
|
|
78
|
-
|
|
79
61
|
/**
|
|
80
62
|
* Connects form validation state to a native HTML form input.
|
|
81
63
|
*
|
|
@@ -115,9 +97,9 @@ function getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null
|
|
|
115
97
|
export function createFormValidation(
|
|
116
98
|
props: FormValidationProps,
|
|
117
99
|
state: FormValidationState,
|
|
118
|
-
ref: Accessor<ValidatableElement | undefined
|
|
100
|
+
ref: Accessor<ValidatableElement | undefined>,
|
|
119
101
|
): void {
|
|
120
|
-
const validationBehavior = () => props.validationBehavior ??
|
|
102
|
+
const validationBehavior = () => props.validationBehavior ?? "aria";
|
|
121
103
|
const focus = () => props.focus;
|
|
122
104
|
|
|
123
105
|
// Track whether we should ignore form reset (for React-like programmatic resets)
|
|
@@ -126,20 +108,16 @@ export function createFormValidation(
|
|
|
126
108
|
// Set custom validity on the native input
|
|
127
109
|
createEffect(() => {
|
|
128
110
|
const input = ref();
|
|
129
|
-
if (
|
|
130
|
-
validationBehavior() === 'native' &&
|
|
131
|
-
input &&
|
|
132
|
-
!input.disabled
|
|
133
|
-
) {
|
|
111
|
+
if (validationBehavior() === "native" && input && !input.disabled) {
|
|
134
112
|
const realtimeValidation = state.realtimeValidation();
|
|
135
113
|
const errorMessage = realtimeValidation.isInvalid
|
|
136
|
-
? realtimeValidation.validationErrors.join(
|
|
137
|
-
:
|
|
114
|
+
? realtimeValidation.validationErrors.join(" ") || "Invalid value."
|
|
115
|
+
: "";
|
|
138
116
|
input.setCustomValidity(errorMessage);
|
|
139
117
|
|
|
140
118
|
// Prevent default tooltip for validation message
|
|
141
|
-
if (!input.hasAttribute(
|
|
142
|
-
input.title =
|
|
119
|
+
if (!input.hasAttribute("title")) {
|
|
120
|
+
input.title = "";
|
|
143
121
|
}
|
|
144
122
|
|
|
145
123
|
// Update validation with native validity if not already invalid
|
|
@@ -174,7 +152,7 @@ export function createFormValidation(
|
|
|
174
152
|
input.focus();
|
|
175
153
|
}
|
|
176
154
|
// Always show focus ring
|
|
177
|
-
setInteractionModality(
|
|
155
|
+
setInteractionModality("keyboard");
|
|
178
156
|
}
|
|
179
157
|
|
|
180
158
|
// Prevent default browser error UI
|
|
@@ -201,21 +179,20 @@ export function createFormValidation(
|
|
|
201
179
|
// Ignore programmatic resets outside user events
|
|
202
180
|
isIgnoredReset =
|
|
203
181
|
!window.event ||
|
|
204
|
-
(window.event.type ===
|
|
205
|
-
window.event.target instanceof MessagePort);
|
|
182
|
+
(window.event.type === "message" && window.event.target instanceof MessagePort);
|
|
206
183
|
originalReset?.();
|
|
207
184
|
isIgnoredReset = false;
|
|
208
185
|
};
|
|
209
186
|
}
|
|
210
187
|
|
|
211
|
-
input.addEventListener(
|
|
212
|
-
input.addEventListener(
|
|
213
|
-
form?.addEventListener(
|
|
188
|
+
input.addEventListener("invalid", onInvalid);
|
|
189
|
+
input.addEventListener("change", onChange);
|
|
190
|
+
form?.addEventListener("reset", onReset);
|
|
214
191
|
|
|
215
192
|
onCleanup(() => {
|
|
216
|
-
input.removeEventListener(
|
|
217
|
-
input.removeEventListener(
|
|
218
|
-
form?.removeEventListener(
|
|
193
|
+
input.removeEventListener("invalid", onInvalid);
|
|
194
|
+
input.removeEventListener("change", onChange);
|
|
195
|
+
form?.removeEventListener("reset", onReset);
|
|
219
196
|
if (form && originalReset) {
|
|
220
197
|
form.reset = originalReset;
|
|
221
198
|
}
|
package/src/form/index.ts
CHANGED
|
@@ -3,9 +3,6 @@ export {
|
|
|
3
3
|
type FormValidationProps,
|
|
4
4
|
type ValidatableElement,
|
|
5
5
|
type ValidationBehavior,
|
|
6
|
-
} from
|
|
6
|
+
} from "./createFormValidation";
|
|
7
7
|
|
|
8
|
-
export {
|
|
9
|
-
createFormReset,
|
|
10
|
-
type FormResetOptions,
|
|
11
|
-
} from './createFormReset';
|
|
8
|
+
export { createFormReset, type FormResetOptions } from "./createFormReset";
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Based on @react-aria/grid/GridKeyboardDelegate.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { GridCollection, GridNode, Key } from
|
|
7
|
-
import type { KeyboardDelegate } from
|
|
8
|
-
import type { Accessor } from
|
|
6
|
+
import type { GridCollection, GridNode, Key } from "@proyecto-viviana/solid-stately";
|
|
7
|
+
import type { KeyboardDelegate } from "./types";
|
|
8
|
+
import type { Accessor } from "solid-js";
|
|
9
9
|
|
|
10
10
|
export interface GridKeyboardDelegateOptions<T> {
|
|
11
11
|
/** The grid collection. */
|
|
@@ -15,9 +15,9 @@ export interface GridKeyboardDelegateOptions<T> {
|
|
|
15
15
|
/** Ref to the grid element. */
|
|
16
16
|
ref: Accessor<HTMLElement | null>;
|
|
17
17
|
/** Focus mode: row or cell. */
|
|
18
|
-
focusMode:
|
|
18
|
+
focusMode: "row" | "cell";
|
|
19
19
|
/** Text direction (ltr or rtl). */
|
|
20
|
-
direction:
|
|
20
|
+
direction: "ltr" | "rtl";
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -27,8 +27,8 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
27
27
|
private collection: GridCollection<T>;
|
|
28
28
|
private disabledKeys: Set<Key>;
|
|
29
29
|
private ref: Accessor<HTMLElement | null>;
|
|
30
|
-
private focusMode:
|
|
31
|
-
private direction:
|
|
30
|
+
private focusMode: "row" | "cell";
|
|
31
|
+
private direction: "ltr" | "rtl";
|
|
32
32
|
|
|
33
33
|
constructor(options: GridKeyboardDelegateOptions<T>) {
|
|
34
34
|
this.collection = options.collection;
|
|
@@ -52,11 +52,11 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
52
52
|
const item = this.collection.getItem(key);
|
|
53
53
|
if (!item) return null;
|
|
54
54
|
|
|
55
|
-
if (item.type ===
|
|
55
|
+
if (item.type === "item") {
|
|
56
56
|
return key;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
if (item.type ===
|
|
59
|
+
if (item.type === "cell" && item.parentKey != null) {
|
|
60
60
|
return item.parentKey;
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -67,7 +67,7 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
67
67
|
* Get all body rows (excluding header rows).
|
|
68
68
|
*/
|
|
69
69
|
private getBodyRows(): GridNode<T>[] {
|
|
70
|
-
return this.collection.rows.filter((row) => row.type ===
|
|
70
|
+
return this.collection.rows.filter((row) => row.type === "item");
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
/**
|
|
@@ -76,7 +76,7 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
76
76
|
getFirstKey(fromKey?: Key, global?: boolean): Key | null {
|
|
77
77
|
const rows = this.getBodyRows();
|
|
78
78
|
|
|
79
|
-
if (this.focusMode ===
|
|
79
|
+
if (this.focusMode === "row" || global) {
|
|
80
80
|
// Find first non-disabled row
|
|
81
81
|
for (const row of rows) {
|
|
82
82
|
if (!this.isDisabled(row.key)) {
|
|
@@ -114,7 +114,7 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
114
114
|
getLastKey(fromKey?: Key, global?: boolean): Key | null {
|
|
115
115
|
const rows = this.getBodyRows();
|
|
116
116
|
|
|
117
|
-
if (this.focusMode ===
|
|
117
|
+
if (this.focusMode === "row" || global) {
|
|
118
118
|
// Find last non-disabled row
|
|
119
119
|
for (let i = rows.length - 1; i >= 0; i--) {
|
|
120
120
|
if (!this.isDisabled(rows[i].key)) {
|
|
@@ -155,9 +155,9 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
155
155
|
|
|
156
156
|
const rows = this.getBodyRows();
|
|
157
157
|
|
|
158
|
-
if (this.focusMode ===
|
|
158
|
+
if (this.focusMode === "row" || item.type === "item") {
|
|
159
159
|
// Find the row and get the previous one
|
|
160
|
-
const rowKey = item.type ===
|
|
160
|
+
const rowKey = item.type === "item" ? key : item.parentKey;
|
|
161
161
|
const rowIndex = rows.findIndex((r) => r.key === rowKey);
|
|
162
162
|
|
|
163
163
|
if (rowIndex > 0) {
|
|
@@ -172,7 +172,7 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
// Cell focus mode - get cell in same column of previous row
|
|
175
|
-
if (item.type ===
|
|
175
|
+
if (item.type === "cell" && item.parentKey != null) {
|
|
176
176
|
const rowIndex = rows.findIndex((r) => r.key === item.parentKey);
|
|
177
177
|
const colIndex = item.column ?? item.index;
|
|
178
178
|
|
|
@@ -201,9 +201,9 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
201
201
|
|
|
202
202
|
const rows = this.getBodyRows();
|
|
203
203
|
|
|
204
|
-
if (this.focusMode ===
|
|
204
|
+
if (this.focusMode === "row" || item.type === "item") {
|
|
205
205
|
// Find the row and get the next one
|
|
206
|
-
const rowKey = item.type ===
|
|
206
|
+
const rowKey = item.type === "item" ? key : item.parentKey;
|
|
207
207
|
const rowIndex = rows.findIndex((r) => r.key === rowKey);
|
|
208
208
|
|
|
209
209
|
if (rowIndex >= 0 && rowIndex < rows.length - 1) {
|
|
@@ -218,7 +218,7 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
// Cell focus mode - get cell in same column of next row
|
|
221
|
-
if (item.type ===
|
|
221
|
+
if (item.type === "cell" && item.parentKey != null) {
|
|
222
222
|
const rowIndex = rows.findIndex((r) => r.key === item.parentKey);
|
|
223
223
|
const colIndex = item.column ?? item.index;
|
|
224
224
|
|
|
@@ -246,15 +246,15 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
246
246
|
if (!item) return null;
|
|
247
247
|
|
|
248
248
|
// In row focus mode, left/right might not be meaningful
|
|
249
|
-
if (this.focusMode ===
|
|
249
|
+
if (this.focusMode === "row") {
|
|
250
250
|
return null;
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
-
if (item.type ===
|
|
253
|
+
if (item.type === "cell" && item.parentKey != null) {
|
|
254
254
|
const children = [...this.collection.getChildren(item.parentKey)];
|
|
255
255
|
const colIndex = children.findIndex((c) => c.key === key);
|
|
256
256
|
|
|
257
|
-
if (this.direction ===
|
|
257
|
+
if (this.direction === "rtl") {
|
|
258
258
|
// RTL: left moves to higher index
|
|
259
259
|
if (colIndex < children.length - 1) {
|
|
260
260
|
return children[colIndex + 1].key;
|
|
@@ -278,15 +278,15 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
278
278
|
if (!item) return null;
|
|
279
279
|
|
|
280
280
|
// In row focus mode, left/right might not be meaningful
|
|
281
|
-
if (this.focusMode ===
|
|
281
|
+
if (this.focusMode === "row") {
|
|
282
282
|
return null;
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
if (item.type ===
|
|
285
|
+
if (item.type === "cell" && item.parentKey != null) {
|
|
286
286
|
const children = [...this.collection.getChildren(item.parentKey)];
|
|
287
287
|
const colIndex = children.findIndex((c) => c.key === key);
|
|
288
288
|
|
|
289
|
-
if (this.direction ===
|
|
289
|
+
if (this.direction === "rtl") {
|
|
290
290
|
// RTL: right moves to lower index
|
|
291
291
|
if (colIndex > 0) {
|
|
292
292
|
return children[colIndex - 1].key;
|
|
@@ -327,12 +327,12 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
327
327
|
// Find first non-disabled row at or before target
|
|
328
328
|
for (let i = targetIndex; i >= 0; i--) {
|
|
329
329
|
if (!this.isDisabled(rows[i].key)) {
|
|
330
|
-
if (this.focusMode ===
|
|
330
|
+
if (this.focusMode === "row" || item.type === "item") {
|
|
331
331
|
return rows[i].key;
|
|
332
332
|
}
|
|
333
333
|
|
|
334
334
|
// Cell focus mode - return cell at same column
|
|
335
|
-
const colIndex = item.type ===
|
|
335
|
+
const colIndex = item.type === "cell" ? (item.column ?? item.index) : 0;
|
|
336
336
|
const children = [...this.collection.getChildren(rows[i].key)];
|
|
337
337
|
const targetCol = Math.min(colIndex, children.length - 1);
|
|
338
338
|
if (targetCol >= 0) {
|
|
@@ -369,12 +369,12 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
369
369
|
// Find first non-disabled row at or after target
|
|
370
370
|
for (let i = targetIndex; i < rows.length; i++) {
|
|
371
371
|
if (!this.isDisabled(rows[i].key)) {
|
|
372
|
-
if (this.focusMode ===
|
|
372
|
+
if (this.focusMode === "row" || item.type === "item") {
|
|
373
373
|
return rows[i].key;
|
|
374
374
|
}
|
|
375
375
|
|
|
376
376
|
// Cell focus mode - return cell at same column
|
|
377
|
-
const colIndex = item.type ===
|
|
377
|
+
const colIndex = item.type === "cell" ? (item.column ?? item.index) : 0;
|
|
378
378
|
const children = [...this.collection.getChildren(rows[i].key)];
|
|
379
379
|
const targetCol = Math.min(colIndex, children.length - 1);
|
|
380
380
|
if (targetCol >= 0) {
|
|
@@ -406,7 +406,7 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
406
406
|
for (let i = startIndex; i < rows.length; i++) {
|
|
407
407
|
const row = rows[i];
|
|
408
408
|
if (!this.isDisabled(row.key)) {
|
|
409
|
-
const textValue = row.textValue?.toLowerCase() ??
|
|
409
|
+
const textValue = row.textValue?.toLowerCase() ?? "";
|
|
410
410
|
if (textValue.startsWith(searchLower)) {
|
|
411
411
|
return row.key;
|
|
412
412
|
}
|
|
@@ -417,7 +417,7 @@ export class GridKeyboardDelegate<T> implements KeyboardDelegate {
|
|
|
417
417
|
for (let i = 0; i < startIndex; i++) {
|
|
418
418
|
const row = rows[i];
|
|
419
419
|
if (!this.isDisabled(row.key)) {
|
|
420
|
-
const textValue = row.textValue?.toLowerCase() ??
|
|
420
|
+
const textValue = row.textValue?.toLowerCase() ?? "";
|
|
421
421
|
if (textValue.startsWith(searchLower)) {
|
|
422
422
|
return row.key;
|
|
423
423
|
}
|