@proyecto-viviana/solidaria 0.2.5 → 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/LICENSE +21 -0
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +29 -0
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
- package/dist/actiongroup/index.d.ts +2 -0
- package/dist/actiongroup/index.d.ts.map +1 -0
- package/dist/autocomplete/createAutocomplete.d.ts +16 -12
- 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 +11 -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 +32 -0
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
- package/dist/button/index.d.ts +6 -4
- 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 +8 -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 +7 -3
- 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 +11 -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 +56 -0
- package/dist/collections/index.d.ts.map +1 -0
- 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 +16 -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 +57 -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 +42 -0
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
- package/dist/datepicker/createDateSegment.d.ts +11 -3
- 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 +29 -0
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
- package/dist/datepicker/index.d.ts +7 -4
- 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 -3
- 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 +6 -2
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- 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 +55 -4
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- 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/createGrid.d.ts.map +1 -1
- 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 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18089 -15690
- package/dist/index.js.map +1 -7
- 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 +23 -7
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +12 -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 +8 -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 +27 -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 +19 -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 +11 -11
- 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 +6 -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 +13 -5
- 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 +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/platform.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 +34 -32
- package/src/actiongroup/createActionGroup.ts +334 -0
- package/src/actiongroup/index.ts +8 -0
- package/src/autocomplete/createAutocomplete.ts +137 -131
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
- 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 +121 -0
- package/src/button/index.ts +10 -4
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +102 -48
- package/src/calendar/createCalendarGrid.ts +78 -47
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +115 -37
- 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 +86 -45
- 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 +246 -0
- package/src/color/createColorArea.ts +458 -314
- package/src/color/createColorField.ts +186 -137
- package/src/color/createColorSlider.ts +444 -197
- package/src/color/createColorSwatch.ts +65 -40
- package/src/color/createColorWheel.ts +343 -208
- package/src/color/index.ts +24 -24
- package/src/color/types.ts +198 -116
- package/src/combobox/createComboBox.ts +727 -647
- package/src/combobox/index.ts +6 -6
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +294 -63
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +294 -0
- package/src/datepicker/createDateSegment.ts +316 -75
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +352 -0
- package/src/datepicker/index.ts +24 -11
- package/src/dialog/createDialog.ts +127 -120
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +19 -19
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -18
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +218 -209
- package/src/dnd/createDraggableCollection.ts +96 -63
- package/src/dnd/createDraggableItem.ts +260 -243
- package/src/dnd/createDrop.ts +313 -321
- package/src/dnd/createDroppableCollection.ts +799 -293
- package/src/dnd/createDroppableItem.ts +215 -213
- package/src/dnd/index.ts +66 -47
- package/src/dnd/types.ts +86 -89
- package/src/dnd/utils.ts +281 -294
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +305 -321
- package/src/focus/createFocusRestore.ts +300 -313
- package/src/focus/createVirtualFocus.ts +380 -396
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +201 -224
- package/src/form/index.ts +8 -11
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +38 -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 +45 -24
- 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 +66 -79
- package/src/i18n/createDateFormatter.ts +75 -83
- package/src/i18n/createFilter.ts +118 -131
- package/src/i18n/createNumberFormatter.ts +50 -52
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +37 -40
- package/src/i18n/locale.tsx +163 -188
- package/src/i18n/utils.ts +95 -99
- package/src/index.ts +114 -164
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +16 -11
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +24 -16
- 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 +174 -174
- package/src/interactions/createMove.ts +299 -289
- package/src/interactions/createPress.ts +168 -91
- 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 +356 -377
- package/src/landmark/index.ts +8 -8
- package/src/link/createLink.ts +96 -54
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +319 -269
- package/src/listbox/createOption.ts +208 -151
- package/src/listbox/index.ts +8 -12
- package/src/live-announcer/announce.ts +295 -322
- package/src/live-announcer/index.ts +9 -9
- package/src/menu/createMenu.ts +434 -396
- package/src/menu/createMenuItem.ts +201 -149
- package/src/menu/createMenuTrigger.ts +88 -88
- package/src/menu/index.ts +9 -18
- package/src/meter/createMeter.ts +7 -20
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +368 -268
- package/src/numberfield/index.ts +5 -5
- package/src/overlays/ariaHideOutside.ts +223 -219
- package/src/overlays/createInteractOutside.ts +152 -149
- package/src/overlays/createModal.tsx +238 -202
- package/src/overlays/createOverlay.ts +195 -155
- package/src/overlays/createOverlayTrigger.ts +85 -85
- package/src/overlays/createPreventScroll.ts +288 -266
- package/src/overlays/index.ts +37 -44
- package/src/popover/calculatePosition.ts +117 -119
- package/src/popover/createOverlayPosition.ts +52 -43
- package/src/popover/createPopover.ts +63 -24
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +36 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +142 -62
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +269 -186
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +276 -236
- package/src/select/createSelect.ts +430 -395
- package/src/select/index.ts +9 -14
- 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 +333 -349
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +331 -370
- 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 +155 -86
- 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 +138 -127
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +171 -40
- package/src/tag/createTagGroup.ts +50 -39
- 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 +34 -26
- package/src/toast/createToastRegion.ts +169 -27
- 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 +226 -169
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +66 -79
- package/src/tooltip/createTooltipTrigger.ts +238 -222
- package/src/tooltip/index.ts +6 -6
- package/src/tree/createTree.ts +259 -246
- package/src/tree/createTreeItem.ts +282 -233
- package/src/tree/createTreeSelectionCheckbox.ts +71 -68
- package/src/tree/index.ts +16 -16
- package/src/tree/types.ts +95 -87
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +53 -54
- 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 +16 -6
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +127 -124
- package/src/visually-hidden/index.ts +6 -6
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -15875
- package/dist/index.ssr.js.map +0 -7
- package/src/i18n/NumberFormatter.ts +0 -266
package/src/tag/createTag.ts
CHANGED
|
@@ -7,19 +7,15 @@
|
|
|
7
7
|
* Based on @react-aria/tag useTag
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { createMemo } from
|
|
11
|
-
import { createFocusable } from
|
|
12
|
-
import { createPress } from
|
|
13
|
-
import { filterDOMProps } from
|
|
14
|
-
import { mergeProps } from
|
|
15
|
-
import { createId } from
|
|
16
|
-
import { access, type MaybeAccessor } from
|
|
17
|
-
import { getTagGroupData } from
|
|
18
|
-
import type { ListState, Key } from
|
|
19
|
-
|
|
20
|
-
// ============================================
|
|
21
|
-
// TYPES
|
|
22
|
-
// ============================================
|
|
10
|
+
import { createMemo } from "solid-js";
|
|
11
|
+
import { createFocusable } from "../interactions/createFocusable";
|
|
12
|
+
import { createPress } from "../interactions/createPress";
|
|
13
|
+
import { filterDOMProps } from "../utils/filterDOMProps";
|
|
14
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
15
|
+
import { createId } from "../ssr";
|
|
16
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
17
|
+
import { getTagGroupData } from "./createTagGroup";
|
|
18
|
+
import type { ListState, Key } from "@proyecto-viviana/solid-stately";
|
|
23
19
|
|
|
24
20
|
export interface AriaTagProps {
|
|
25
21
|
/** The unique key for this tag. */
|
|
@@ -49,10 +45,6 @@ export interface TagAria {
|
|
|
49
45
|
isPressed: boolean;
|
|
50
46
|
}
|
|
51
47
|
|
|
52
|
-
// ============================================
|
|
53
|
-
// IMPLEMENTATION
|
|
54
|
-
// ============================================
|
|
55
|
-
|
|
56
48
|
/**
|
|
57
49
|
* Provides the behavior and accessibility implementation for a tag component.
|
|
58
50
|
* Tags are individual items within a TagGroup.
|
|
@@ -60,7 +52,7 @@ export interface TagAria {
|
|
|
60
52
|
export function createTag<T>(
|
|
61
53
|
props: MaybeAccessor<AriaTagProps>,
|
|
62
54
|
state: ListState<T>,
|
|
63
|
-
ref: () => HTMLElement | null
|
|
55
|
+
ref: () => HTMLElement | null,
|
|
64
56
|
): TagAria {
|
|
65
57
|
const getProps = () => access(props);
|
|
66
58
|
const rowId = createId();
|
|
@@ -83,39 +75,147 @@ export function createTag<T>(
|
|
|
83
75
|
return state.isSelected(key());
|
|
84
76
|
});
|
|
85
77
|
|
|
78
|
+
const isSelectable = createMemo(() => state.selectionMode() !== "none");
|
|
79
|
+
|
|
86
80
|
const isFocused = createMemo(() => {
|
|
87
81
|
return state.focusedKey() === key();
|
|
88
82
|
});
|
|
89
83
|
|
|
84
|
+
const getFirstFocusableKey = (): Key | null => {
|
|
85
|
+
const collection = state.collection();
|
|
86
|
+
let candidate = collection.getFirstKey();
|
|
87
|
+
while (candidate != null && state.isDisabled(candidate)) {
|
|
88
|
+
candidate = collection.getKeyAfter(candidate);
|
|
89
|
+
}
|
|
90
|
+
return candidate;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const getLastFocusableKey = (): Key | null => {
|
|
94
|
+
const collection = state.collection();
|
|
95
|
+
let candidate = collection.getLastKey();
|
|
96
|
+
while (candidate != null && state.isDisabled(candidate)) {
|
|
97
|
+
candidate = collection.getKeyBefore(candidate);
|
|
98
|
+
}
|
|
99
|
+
return candidate;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const getNextFocusableKey = (fromKey: Key): Key | null => {
|
|
103
|
+
const collection = state.collection();
|
|
104
|
+
let candidate = collection.getKeyAfter(fromKey);
|
|
105
|
+
while (candidate != null && state.isDisabled(candidate)) {
|
|
106
|
+
candidate = collection.getKeyAfter(candidate);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (candidate != null) {
|
|
110
|
+
return candidate;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return getFirstFocusableKey();
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const getPreviousFocusableKey = (fromKey: Key): Key | null => {
|
|
117
|
+
const collection = state.collection();
|
|
118
|
+
let candidate = collection.getKeyBefore(fromKey);
|
|
119
|
+
while (candidate != null && state.isDisabled(candidate)) {
|
|
120
|
+
candidate = collection.getKeyBefore(candidate);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (candidate != null) {
|
|
124
|
+
return candidate;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return getLastFocusableKey();
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const focusKey = (nextKey: Key | null) => {
|
|
131
|
+
if (nextKey == null) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
state.setFocusedKey(nextKey);
|
|
136
|
+
const currentElement = ref();
|
|
137
|
+
|
|
138
|
+
if (!currentElement) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (nextKey === key()) {
|
|
143
|
+
currentElement.focus();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const tagList = currentElement.parentElement;
|
|
148
|
+
if (!tagList) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const nextTag = Array.from(tagList.querySelectorAll<HTMLElement>('[role="row"]')).find(
|
|
153
|
+
(el) => el.getAttribute("data-key") === String(nextKey),
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
nextTag?.focus();
|
|
157
|
+
};
|
|
158
|
+
|
|
90
159
|
// Handle press for selection
|
|
91
160
|
const { pressProps, isPressed } = createPress({
|
|
92
161
|
isDisabled,
|
|
93
162
|
onPress: () => {
|
|
94
163
|
if (!isDisabled()) {
|
|
164
|
+
state.setFocusedKey(key());
|
|
95
165
|
state.toggleSelection(key());
|
|
96
166
|
}
|
|
97
167
|
},
|
|
98
168
|
});
|
|
99
169
|
|
|
100
170
|
// Handle focusable
|
|
101
|
-
const { focusableProps } = createFocusable(
|
|
102
|
-
|
|
103
|
-
|
|
171
|
+
const { focusableProps } = createFocusable(
|
|
172
|
+
{
|
|
173
|
+
isDisabled,
|
|
174
|
+
onFocus: () => {
|
|
175
|
+
state.setFocusedKey(key());
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
ref,
|
|
179
|
+
);
|
|
104
180
|
|
|
105
|
-
// Handle keyboard for removal
|
|
181
|
+
// Handle keyboard for navigation and removal
|
|
106
182
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
107
183
|
if (isDisabled()) return;
|
|
108
184
|
|
|
109
|
-
|
|
185
|
+
switch (e.key) {
|
|
186
|
+
case "ArrowRight":
|
|
187
|
+
case "ArrowDown":
|
|
188
|
+
e.preventDefault();
|
|
189
|
+
focusKey(getNextFocusableKey(key()));
|
|
190
|
+
return;
|
|
191
|
+
case "ArrowLeft":
|
|
192
|
+
case "ArrowUp":
|
|
193
|
+
e.preventDefault();
|
|
194
|
+
focusKey(getPreviousFocusableKey(key()));
|
|
195
|
+
return;
|
|
196
|
+
case "Home":
|
|
197
|
+
e.preventDefault();
|
|
198
|
+
focusKey(getFirstFocusableKey());
|
|
199
|
+
return;
|
|
200
|
+
case "End":
|
|
201
|
+
e.preventDefault();
|
|
202
|
+
focusKey(getLastFocusableKey());
|
|
203
|
+
return;
|
|
204
|
+
default:
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if (e.key === "Delete" || e.key === "Backspace") {
|
|
110
209
|
e.preventDefault();
|
|
111
210
|
const data = getData();
|
|
112
211
|
if (data?.onRemove) {
|
|
113
212
|
// Remove selected keys if this tag is selected, otherwise just this tag
|
|
114
213
|
if (isSelected()) {
|
|
115
214
|
const selection = state.selectedKeys();
|
|
116
|
-
const keysToRemove =
|
|
117
|
-
|
|
118
|
-
|
|
215
|
+
const keysToRemove =
|
|
216
|
+
selection === "all"
|
|
217
|
+
? new Set(Array.from(state.collection()).map((item) => (item as { key: Key }).key))
|
|
218
|
+
: new Set(selection);
|
|
119
219
|
data.onRemove(keysToRemove);
|
|
120
220
|
} else {
|
|
121
221
|
data.onRemove(new Set([key()]));
|
|
@@ -127,10 +227,35 @@ export function createTag<T>(
|
|
|
127
227
|
// Compute tabIndex
|
|
128
228
|
const tabIndex = createMemo(() => {
|
|
129
229
|
if (isDisabled()) return -1;
|
|
130
|
-
|
|
131
|
-
if (isFocused()
|
|
230
|
+
|
|
231
|
+
if (isFocused()) {
|
|
132
232
|
return 0;
|
|
133
233
|
}
|
|
234
|
+
|
|
235
|
+
if (state.focusedKey() !== null) {
|
|
236
|
+
return -1;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
const collection = state.collection();
|
|
240
|
+
let defaultTabStop: Key | null = null;
|
|
241
|
+
|
|
242
|
+
if (state.selectionMode() !== "none") {
|
|
243
|
+
for (const item of collection) {
|
|
244
|
+
if (!state.isDisabled(item.key) && state.isSelected(item.key)) {
|
|
245
|
+
defaultTabStop = item.key;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (defaultTabStop == null) {
|
|
252
|
+
defaultTabStop = getFirstFocusableKey();
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (key() === defaultTabStop) {
|
|
256
|
+
return 0;
|
|
257
|
+
}
|
|
258
|
+
|
|
134
259
|
return -1;
|
|
135
260
|
});
|
|
136
261
|
|
|
@@ -145,28 +270,34 @@ export function createTag<T>(
|
|
|
145
270
|
|
|
146
271
|
return {
|
|
147
272
|
get rowProps() {
|
|
148
|
-
return mergeProps(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
273
|
+
return mergeProps(
|
|
274
|
+
domProps(),
|
|
275
|
+
focusableProps as Record<string, unknown>,
|
|
276
|
+
pressProps as Record<string, unknown>,
|
|
277
|
+
{
|
|
278
|
+
id: rowId,
|
|
279
|
+
role: "row",
|
|
280
|
+
tabIndex: tabIndex(),
|
|
281
|
+
"data-key": String(key()),
|
|
282
|
+
"aria-selected": isSelectable() ? isSelected() : undefined,
|
|
283
|
+
"aria-disabled": isDisabled() || undefined,
|
|
284
|
+
onKeyDown: handleKeyDown,
|
|
285
|
+
},
|
|
286
|
+
);
|
|
156
287
|
},
|
|
157
288
|
get gridCellProps() {
|
|
158
289
|
return {
|
|
159
290
|
id: cellId,
|
|
160
|
-
role:
|
|
161
|
-
|
|
291
|
+
role: "gridcell",
|
|
292
|
+
"aria-describedby": allowsRemoving() ? removeButtonId : undefined,
|
|
162
293
|
};
|
|
163
294
|
},
|
|
164
295
|
get removeButtonProps() {
|
|
165
296
|
const data = getData();
|
|
166
297
|
return {
|
|
167
298
|
id: removeButtonId,
|
|
168
|
-
|
|
169
|
-
|
|
299
|
+
"aria-label": "Remove",
|
|
300
|
+
"aria-labelledby": `${removeButtonId} ${rowId}`,
|
|
170
301
|
isDisabled: isDisabled(),
|
|
171
302
|
onPress: () => {
|
|
172
303
|
if (data?.onRemove && !isDisabled()) {
|
|
@@ -8,17 +8,13 @@
|
|
|
8
8
|
* Based on @react-aria/tag useTagGroup
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { createEffect, onCleanup } from
|
|
12
|
-
import { createLabel } from
|
|
13
|
-
import { filterDOMProps } from
|
|
14
|
-
import { mergeProps } from
|
|
15
|
-
import { createId } from
|
|
16
|
-
import { access, type MaybeAccessor } from
|
|
17
|
-
import type { ListState, Key } from
|
|
18
|
-
|
|
19
|
-
// ============================================
|
|
20
|
-
// TYPES
|
|
21
|
-
// ============================================
|
|
11
|
+
import { createEffect, onCleanup } from "solid-js";
|
|
12
|
+
import { createLabel } from "../label/createLabel";
|
|
13
|
+
import { filterDOMProps } from "../utils/filterDOMProps";
|
|
14
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
15
|
+
import { createId } from "../ssr";
|
|
16
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
17
|
+
import type { ListState, Key } from "@proyecto-viviana/solid-stately";
|
|
22
18
|
|
|
23
19
|
export interface AriaTagGroupProps {
|
|
24
20
|
/** An ID for the tag group. */
|
|
@@ -28,11 +24,11 @@ export interface AriaTagGroupProps {
|
|
|
28
24
|
/** The label for the tag group. */
|
|
29
25
|
label?: string;
|
|
30
26
|
/** An accessible label for the tag group when no visible label is provided. */
|
|
31
|
-
|
|
27
|
+
"aria-label"?: string;
|
|
32
28
|
/** The ID of an element that labels the tag group. */
|
|
33
|
-
|
|
29
|
+
"aria-labelledby"?: string;
|
|
34
30
|
/** The ID of an element that describes the tag group. */
|
|
35
|
-
|
|
31
|
+
"aria-describedby"?: string;
|
|
36
32
|
/** A description of the tag group. */
|
|
37
33
|
description?: string;
|
|
38
34
|
/** An error message for the tag group. */
|
|
@@ -64,10 +60,6 @@ export function getTagGroupData(state: ListState): TagGroupData | undefined {
|
|
|
64
60
|
return tagGroupData.get(state);
|
|
65
61
|
}
|
|
66
62
|
|
|
67
|
-
// ============================================
|
|
68
|
-
// IMPLEMENTATION
|
|
69
|
-
// ============================================
|
|
70
|
-
|
|
71
63
|
/**
|
|
72
64
|
* Provides the behavior and accessibility implementation for a tag group component.
|
|
73
65
|
* A tag group is a focusable list of labels, categories, keywords, filters, or other items,
|
|
@@ -76,34 +68,52 @@ export function getTagGroupData(state: ListState): TagGroupData | undefined {
|
|
|
76
68
|
export function createTagGroup<T>(
|
|
77
69
|
props: MaybeAccessor<AriaTagGroupProps>,
|
|
78
70
|
state: ListState<T>,
|
|
79
|
-
_ref?: () => HTMLElement | null
|
|
71
|
+
_ref?: () => HTMLElement | null,
|
|
80
72
|
): TagGroupAria {
|
|
81
73
|
const getProps = () => access(props);
|
|
82
74
|
const id = createId(getProps().id);
|
|
83
75
|
const descriptionId = createId();
|
|
84
76
|
const errorMessageId = createId();
|
|
77
|
+
const getFallbackAriaLabel = () => {
|
|
78
|
+
const p = getProps();
|
|
79
|
+
return !p.label && !p["aria-label"] && !p["aria-labelledby"] ? "Tag list" : undefined;
|
|
80
|
+
};
|
|
81
|
+
const sharedData: TagGroupData = {
|
|
82
|
+
id,
|
|
83
|
+
get onRemove() {
|
|
84
|
+
return getProps().onRemove;
|
|
85
|
+
},
|
|
86
|
+
};
|
|
85
87
|
|
|
86
88
|
// Filter DOM props
|
|
87
|
-
const domProps = () =>
|
|
89
|
+
const domProps = () =>
|
|
90
|
+
filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
|
|
88
91
|
|
|
89
92
|
// Create label handling
|
|
90
93
|
const { labelProps, fieldProps } = createLabel({
|
|
91
|
-
get label() {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
get label() {
|
|
95
|
+
return getProps().label;
|
|
96
|
+
},
|
|
97
|
+
get "aria-label"() {
|
|
98
|
+
return getProps()["aria-label"] ?? getFallbackAriaLabel();
|
|
99
|
+
},
|
|
100
|
+
get "aria-labelledby"() {
|
|
101
|
+
return getProps()["aria-labelledby"];
|
|
102
|
+
},
|
|
103
|
+
labelElementType: "span",
|
|
95
104
|
});
|
|
96
105
|
|
|
97
|
-
// Share data with child tags
|
|
106
|
+
// Share data with child tags before they create their aria state.
|
|
107
|
+
tagGroupData.set(state, sharedData);
|
|
108
|
+
|
|
109
|
+
// Clean up the shared state when the tag group owner is disposed.
|
|
98
110
|
createEffect(() => {
|
|
99
|
-
|
|
100
|
-
tagGroupData.set(state, {
|
|
101
|
-
id,
|
|
102
|
-
onRemove: p.onRemove,
|
|
103
|
-
});
|
|
111
|
+
tagGroupData.set(state, sharedData);
|
|
104
112
|
|
|
105
113
|
onCleanup(() => {
|
|
106
|
-
tagGroupData.
|
|
114
|
+
if (tagGroupData.get(state) === sharedData) {
|
|
115
|
+
tagGroupData.delete(state);
|
|
116
|
+
}
|
|
107
117
|
});
|
|
108
118
|
});
|
|
109
119
|
|
|
@@ -111,8 +121,8 @@ export function createTagGroup<T>(
|
|
|
111
121
|
const getAriaDescribedBy = () => {
|
|
112
122
|
const p = getProps();
|
|
113
123
|
const ids: string[] = [];
|
|
114
|
-
if (p[
|
|
115
|
-
ids.push(p[
|
|
124
|
+
if (p["aria-describedby"]) {
|
|
125
|
+
ids.push(p["aria-describedby"]);
|
|
116
126
|
}
|
|
117
127
|
if (p.description) {
|
|
118
128
|
ids.push(descriptionId);
|
|
@@ -120,7 +130,7 @@ export function createTagGroup<T>(
|
|
|
120
130
|
if (p.errorMessage) {
|
|
121
131
|
ids.push(errorMessageId);
|
|
122
132
|
}
|
|
123
|
-
return ids.length > 0 ? ids.join(
|
|
133
|
+
return ids.length > 0 ? ids.join(" ") : undefined;
|
|
124
134
|
};
|
|
125
135
|
|
|
126
136
|
return {
|
|
@@ -130,11 +140,12 @@ export function createTagGroup<T>(
|
|
|
130
140
|
|
|
131
141
|
return mergeProps(domProps(), fieldProps as Record<string, unknown>, {
|
|
132
142
|
id,
|
|
133
|
-
role: hasItems ?
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
143
|
+
role: hasItems ? "grid" : "group",
|
|
144
|
+
"aria-multiselectable": hasItems && state.selectionMode() === "multiple" ? true : undefined,
|
|
145
|
+
"aria-atomic": false,
|
|
146
|
+
"aria-relevant": "additions",
|
|
147
|
+
"aria-describedby": getAriaDescribedBy(),
|
|
148
|
+
"aria-disabled": p.isDisabled || undefined,
|
|
138
149
|
});
|
|
139
150
|
},
|
|
140
151
|
get labelProps() {
|
package/src/tag/index.ts
CHANGED
|
@@ -3,10 +3,6 @@ export {
|
|
|
3
3
|
getTagGroupData,
|
|
4
4
|
type AriaTagGroupProps,
|
|
5
5
|
type TagGroupAria,
|
|
6
|
-
} from
|
|
6
|
+
} from "./createTagGroup";
|
|
7
7
|
|
|
8
|
-
export {
|
|
9
|
-
createTag,
|
|
10
|
-
type AriaTagProps,
|
|
11
|
-
type TagAria,
|
|
12
|
-
} from './createTag';
|
|
8
|
+
export { createTag, type AriaTagProps, type TagAria } from "./createTag";
|
|
@@ -6,17 +6,13 @@
|
|
|
6
6
|
* This is a 1:1 port of @react-aria/textfield's useTextField hook.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { JSX } from
|
|
10
|
-
import { createField, type AriaFieldProps, type FieldAria } from
|
|
11
|
-
import { createFocusable, type FocusableProps } from
|
|
12
|
-
import { mergeProps, filterDOMProps } from
|
|
13
|
-
import { type MaybeAccessor, access } from
|
|
9
|
+
import { JSX } from "solid-js";
|
|
10
|
+
import { createField, type AriaFieldProps, type FieldAria } from "../label";
|
|
11
|
+
import { createFocusable, type FocusableDOMProps, type FocusableProps } from "../interactions";
|
|
12
|
+
import { mergeProps, filterDOMProps } from "../utils";
|
|
13
|
+
import { type MaybeAccessor, access } from "../utils/reactivity";
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
// TYPES
|
|
17
|
-
// ============================================
|
|
18
|
-
|
|
19
|
-
export interface AriaTextFieldProps extends AriaFieldProps, FocusableProps {
|
|
15
|
+
export interface AriaTextFieldProps extends AriaFieldProps, FocusableProps, FocusableDOMProps {
|
|
20
16
|
/** The current value (controlled). */
|
|
21
17
|
value?: string;
|
|
22
18
|
/** The default value (uncontrolled). */
|
|
@@ -29,12 +25,18 @@ export interface AriaTextFieldProps extends AriaFieldProps, FocusableProps {
|
|
|
29
25
|
isReadOnly?: boolean;
|
|
30
26
|
/** Whether the input is required. */
|
|
31
27
|
isRequired?: boolean;
|
|
28
|
+
/** Whether to use native HTML form validation or ARIA validation semantics. */
|
|
29
|
+
validationBehavior?: "aria" | "native";
|
|
32
30
|
/** The type of input to render. */
|
|
33
|
-
type?:
|
|
31
|
+
type?: "text" | "search" | "url" | "tel" | "email" | "password" | string;
|
|
34
32
|
/** The input mode hint for virtual keyboards. */
|
|
35
|
-
inputMode?:
|
|
33
|
+
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search";
|
|
34
|
+
/** Hint for the enter key action on virtual keyboards. */
|
|
35
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send";
|
|
36
36
|
/** The name of the input element, used when submitting an HTML form. */
|
|
37
37
|
name?: string;
|
|
38
|
+
/** Associates the input with a form element by id. */
|
|
39
|
+
form?: string;
|
|
38
40
|
/** Regex pattern to validate the input value. */
|
|
39
41
|
pattern?: string;
|
|
40
42
|
/** The maximum number of characters supported by the input. */
|
|
@@ -48,11 +50,11 @@ export interface AriaTextFieldProps extends AriaFieldProps, FocusableProps {
|
|
|
48
50
|
/** Whether to enable auto correct. */
|
|
49
51
|
autoCorrect?: string;
|
|
50
52
|
/** Whether to enable spell check. */
|
|
51
|
-
spellCheck?:
|
|
53
|
+
spellCheck?: "true" | "false";
|
|
52
54
|
/** Controls whether and how text input is automatically capitalized. */
|
|
53
|
-
autoCapitalize?:
|
|
55
|
+
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters";
|
|
54
56
|
/** The element type to use for the input. Defaults to 'input'. */
|
|
55
|
-
inputElementType?:
|
|
57
|
+
inputElementType?: "input" | "textarea";
|
|
56
58
|
|
|
57
59
|
// Clipboard events
|
|
58
60
|
onCopy?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;
|
|
@@ -72,17 +74,15 @@ export interface AriaTextFieldProps extends AriaFieldProps, FocusableProps {
|
|
|
72
74
|
onInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;
|
|
73
75
|
}
|
|
74
76
|
|
|
75
|
-
export interface TextFieldAria<
|
|
77
|
+
export interface TextFieldAria<
|
|
78
|
+
T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,
|
|
79
|
+
> extends Omit<FieldAria, "fieldProps"> {
|
|
76
80
|
/** Props for the input element. */
|
|
77
81
|
inputProps: JSX.InputHTMLAttributes<T>;
|
|
78
82
|
/** Whether the text field is invalid. */
|
|
79
83
|
isInvalid: boolean;
|
|
80
84
|
}
|
|
81
85
|
|
|
82
|
-
// ============================================
|
|
83
|
-
// IMPLEMENTATION
|
|
84
|
-
// ============================================
|
|
85
|
-
|
|
86
86
|
/**
|
|
87
87
|
* Provides the behavior and accessibility implementation for a text field.
|
|
88
88
|
* Text fields allow users to input text with a keyboard.
|
|
@@ -90,11 +90,26 @@ export interface TextFieldAria<T extends HTMLInputElement | HTMLTextAreaElement
|
|
|
90
90
|
* @param props - Props for the text field.
|
|
91
91
|
* @param ref - Optional ref callback for the input element.
|
|
92
92
|
*/
|
|
93
|
-
export function createTextField<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
): TextFieldAria<T> {
|
|
93
|
+
export function createTextField<
|
|
94
|
+
T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,
|
|
95
|
+
>(props: MaybeAccessor<AriaTextFieldProps>, ref?: (el: T) => void): TextFieldAria<T> {
|
|
97
96
|
const getProps = () => access(props);
|
|
97
|
+
let lastInputValue: string | undefined;
|
|
98
|
+
|
|
99
|
+
const eventWithCurrentTarget = (
|
|
100
|
+
event: InputEvent,
|
|
101
|
+
element: HTMLInputElement | HTMLTextAreaElement,
|
|
102
|
+
) =>
|
|
103
|
+
new Proxy(event, {
|
|
104
|
+
get(target, property, receiver) {
|
|
105
|
+
if (property === "target" || property === "currentTarget") {
|
|
106
|
+
return element;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const value = Reflect.get(target, property, receiver);
|
|
110
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
111
|
+
},
|
|
112
|
+
});
|
|
98
113
|
|
|
99
114
|
// Get field accessibility props (label, description, error message)
|
|
100
115
|
const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField(props);
|
|
@@ -108,41 +123,50 @@ export function createTextField<T extends HTMLInputElement | HTMLTextAreaElement
|
|
|
108
123
|
get autoFocus() {
|
|
109
124
|
return getProps().autoFocus;
|
|
110
125
|
},
|
|
126
|
+
get excludeFromTabOrder() {
|
|
127
|
+
return getProps().excludeFromTabOrder;
|
|
128
|
+
},
|
|
111
129
|
onFocus: getProps().onFocus,
|
|
112
130
|
onBlur: getProps().onBlur,
|
|
113
131
|
onFocusChange: getProps().onFocusChange,
|
|
114
132
|
onKeyDown: getProps().onKeyDown,
|
|
115
133
|
onKeyUp: getProps().onKeyUp,
|
|
116
134
|
},
|
|
117
|
-
ref as ((el: HTMLElement) => void) | undefined
|
|
135
|
+
ref as ((el: HTMLElement) => void) | undefined,
|
|
118
136
|
);
|
|
119
137
|
|
|
120
138
|
// Filter DOM props
|
|
121
|
-
const getDomProps = () =>
|
|
139
|
+
const getDomProps = () =>
|
|
140
|
+
filterDOMProps(getProps() as Record<string, unknown>, { labelable: true });
|
|
122
141
|
|
|
123
142
|
// Build input props
|
|
124
143
|
const getInputProps = (): JSX.InputHTMLAttributes<T> => {
|
|
125
144
|
const p = getProps();
|
|
126
145
|
const isInvalid = p.isInvalid ?? false;
|
|
127
|
-
const isTextarea = p.inputElementType ===
|
|
146
|
+
const isTextarea = p.inputElementType === "textarea";
|
|
147
|
+
const validationBehavior = p.validationBehavior ?? "native";
|
|
128
148
|
|
|
129
149
|
return mergeProps(
|
|
130
150
|
getDomProps(),
|
|
131
151
|
{
|
|
132
152
|
disabled: p.isDisabled,
|
|
133
153
|
readOnly: p.isReadOnly,
|
|
134
|
-
required: p.isRequired,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
value: p.value ?? p.defaultValue ??
|
|
154
|
+
required: validationBehavior === "native" && p.isRequired,
|
|
155
|
+
"aria-required": (validationBehavior === "aria" && p.isRequired) || undefined,
|
|
156
|
+
"aria-invalid": isInvalid || undefined,
|
|
157
|
+
value: p.value ?? p.defaultValue ?? "",
|
|
138
158
|
onChange: (e: Event) => {
|
|
139
159
|
const target = e.target as HTMLInputElement | HTMLTextAreaElement;
|
|
140
|
-
|
|
160
|
+
if (target.value !== lastInputValue) {
|
|
161
|
+
p.onChange?.(target.value);
|
|
162
|
+
}
|
|
141
163
|
},
|
|
142
164
|
// Don't include type and pattern for textarea elements
|
|
143
|
-
type: isTextarea ? undefined : (p.type ??
|
|
165
|
+
type: isTextarea ? undefined : (p.type ?? "text"),
|
|
144
166
|
inputMode: p.inputMode,
|
|
167
|
+
enterKeyHint: p.enterKeyHint,
|
|
145
168
|
name: p.name,
|
|
169
|
+
form: p.form,
|
|
146
170
|
pattern: isTextarea ? undefined : p.pattern,
|
|
147
171
|
maxLength: p.maxLength,
|
|
148
172
|
minLength: p.minLength,
|
|
@@ -167,10 +191,18 @@ export function createTextField<T extends HTMLInputElement | HTMLTextAreaElement
|
|
|
167
191
|
|
|
168
192
|
// Input events
|
|
169
193
|
onBeforeInput: p.onBeforeInput,
|
|
170
|
-
onInput:
|
|
194
|
+
onInput: (e: InputEvent) => {
|
|
195
|
+
const target = e.target as HTMLInputElement | HTMLTextAreaElement;
|
|
196
|
+
const nextValue = target.value;
|
|
197
|
+
p.onInput?.(
|
|
198
|
+
eventWithCurrentTarget(e, target) as Parameters<NonNullable<typeof p.onInput>>[0],
|
|
199
|
+
);
|
|
200
|
+
lastInputValue = nextValue;
|
|
201
|
+
p.onChange?.(nextValue);
|
|
202
|
+
},
|
|
171
203
|
},
|
|
172
204
|
focusableProps as Record<string, unknown>,
|
|
173
|
-
fieldProps as Record<string, unknown
|
|
205
|
+
fieldProps as Record<string, unknown>,
|
|
174
206
|
) as JSX.InputHTMLAttributes<T>;
|
|
175
207
|
};
|
|
176
208
|
|
package/src/textfield/index.ts
CHANGED