@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
|
@@ -3,23 +3,25 @@
|
|
|
3
3
|
* Based on @react-aria/numberfield useNumberField.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { type JSX, createMemo } from
|
|
7
|
-
import { createLabel } from
|
|
8
|
-
import { filterDOMProps } from
|
|
9
|
-
import { mergeProps } from
|
|
10
|
-
import { createId } from
|
|
11
|
-
import { access, type MaybeAccessor } from
|
|
12
|
-
import type { NumberFieldState } from
|
|
6
|
+
import { type JSX, createMemo } from "solid-js";
|
|
7
|
+
import { createLabel } from "../label/createLabel";
|
|
8
|
+
import { filterDOMProps } from "../utils/filterDOMProps";
|
|
9
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
10
|
+
import { createId } from "../ssr";
|
|
11
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
12
|
+
import type { NumberFieldState } from "@proyecto-viviana/solid-stately";
|
|
13
|
+
import type { AriaButtonProps } from "../button/types";
|
|
14
|
+
import type { PressEvent } from "../interactions";
|
|
13
15
|
|
|
14
16
|
export interface AriaNumberFieldProps {
|
|
15
17
|
/** A label for the number field. */
|
|
16
18
|
label?: JSX.Element;
|
|
17
19
|
/** An accessible label for the number field. */
|
|
18
|
-
|
|
20
|
+
"aria-label"?: string;
|
|
19
21
|
/** The element ID that labels the number field. */
|
|
20
|
-
|
|
22
|
+
"aria-labelledby"?: string;
|
|
21
23
|
/** The element ID that describes the number field. */
|
|
22
|
-
|
|
24
|
+
"aria-describedby"?: string;
|
|
23
25
|
/** Whether the number field is disabled. */
|
|
24
26
|
isDisabled?: boolean;
|
|
25
27
|
/** Whether the number field is read-only. */
|
|
@@ -66,9 +68,9 @@ export interface NumberFieldAria {
|
|
|
66
68
|
/** Props for the input element. */
|
|
67
69
|
inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
68
70
|
/** Props for the increment button. */
|
|
69
|
-
incrementButtonProps:
|
|
71
|
+
incrementButtonProps: AriaButtonProps;
|
|
70
72
|
/** Props for the decrement button. */
|
|
71
|
-
decrementButtonProps:
|
|
73
|
+
decrementButtonProps: AriaButtonProps;
|
|
72
74
|
/** Props for the description element. */
|
|
73
75
|
descriptionProps: JSX.HTMLAttributes<HTMLElement>;
|
|
74
76
|
/** Props for the error message element. */
|
|
@@ -81,7 +83,7 @@ export interface NumberFieldAria {
|
|
|
81
83
|
export function createNumberField(
|
|
82
84
|
props: MaybeAccessor<AriaNumberFieldProps>,
|
|
83
85
|
state: NumberFieldState,
|
|
84
|
-
inputRef?: () => HTMLInputElement | null
|
|
86
|
+
inputRef?: () => HTMLInputElement | null,
|
|
85
87
|
): NumberFieldAria {
|
|
86
88
|
const getProps = () => access(props);
|
|
87
89
|
const id = createId(getProps().id);
|
|
@@ -101,26 +103,26 @@ export function createNumberField(
|
|
|
101
103
|
get label() {
|
|
102
104
|
return getProps().label;
|
|
103
105
|
},
|
|
104
|
-
get
|
|
105
|
-
return getProps()[
|
|
106
|
+
get "aria-label"() {
|
|
107
|
+
return getProps()["aria-label"];
|
|
106
108
|
},
|
|
107
|
-
get
|
|
108
|
-
return getProps()[
|
|
109
|
+
get "aria-labelledby"() {
|
|
110
|
+
return getProps()["aria-labelledby"];
|
|
109
111
|
},
|
|
110
|
-
labelElementType:
|
|
112
|
+
labelElementType: "span",
|
|
111
113
|
});
|
|
112
114
|
|
|
113
115
|
// Get the label text for button aria-labels
|
|
114
116
|
const getLabelText = (): string => {
|
|
115
117
|
const p = getProps();
|
|
116
|
-
if (p[
|
|
117
|
-
if (typeof p.label ===
|
|
118
|
-
return
|
|
118
|
+
if (p["aria-label"]) return p["aria-label"];
|
|
119
|
+
if (typeof p.label === "string") return p.label;
|
|
120
|
+
return "value";
|
|
119
121
|
};
|
|
120
122
|
|
|
121
123
|
// Filter DOM props
|
|
122
124
|
const domProps = createMemo(() =>
|
|
123
|
-
filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true })
|
|
125
|
+
filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true }),
|
|
124
126
|
);
|
|
125
127
|
|
|
126
128
|
// Handle input change
|
|
@@ -154,31 +156,31 @@ export function createNumberField(
|
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
switch (e.key) {
|
|
157
|
-
case
|
|
159
|
+
case "ArrowUp":
|
|
158
160
|
e.preventDefault();
|
|
159
161
|
state.increment();
|
|
160
162
|
break;
|
|
161
|
-
case
|
|
163
|
+
case "ArrowDown":
|
|
162
164
|
e.preventDefault();
|
|
163
165
|
state.decrement();
|
|
164
166
|
break;
|
|
165
|
-
case
|
|
167
|
+
case "PageUp":
|
|
166
168
|
e.preventDefault();
|
|
167
169
|
state.incrementToMax();
|
|
168
170
|
break;
|
|
169
|
-
case
|
|
171
|
+
case "PageDown":
|
|
170
172
|
e.preventDefault();
|
|
171
173
|
state.decrementToMin();
|
|
172
174
|
break;
|
|
173
|
-
case
|
|
175
|
+
case "Home":
|
|
174
176
|
e.preventDefault();
|
|
175
177
|
state.decrementToMin();
|
|
176
178
|
break;
|
|
177
|
-
case
|
|
179
|
+
case "End":
|
|
178
180
|
e.preventDefault();
|
|
179
181
|
state.incrementToMax();
|
|
180
182
|
break;
|
|
181
|
-
case
|
|
183
|
+
case "Enter":
|
|
182
184
|
state.commit();
|
|
183
185
|
break;
|
|
184
186
|
}
|
|
@@ -190,28 +192,81 @@ export function createNumberField(
|
|
|
190
192
|
getProps().onKeyUp?.(e);
|
|
191
193
|
};
|
|
192
194
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
//
|
|
197
|
-
|
|
195
|
+
const onButtonPressStart = (e: PressEvent) => {
|
|
196
|
+
const input = inputRef?.();
|
|
197
|
+
|
|
198
|
+
// Keep existing input focus in place. This avoids hiding software keyboards
|
|
199
|
+
// and prevents a blur/refocus flicker when mouse pressing the steppers.
|
|
200
|
+
if (input && input.ownerDocument.activeElement === input) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (e.pointerType === "mouse") {
|
|
205
|
+
input?.focus();
|
|
206
|
+
} else if (e.target instanceof HTMLElement) {
|
|
207
|
+
e.target.focus();
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
let incrementTouchPressUp = false;
|
|
212
|
+
let decrementTouchPressUp = false;
|
|
213
|
+
|
|
214
|
+
const onIncrementPressStart = (e: PressEvent) => {
|
|
215
|
+
if (e.pointerType !== "touch") {
|
|
216
|
+
state.increment();
|
|
217
|
+
} else {
|
|
218
|
+
incrementTouchPressUp = false;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
onButtonPressStart(e);
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
const onIncrementPressUp = (e: PressEvent) => {
|
|
225
|
+
if (e.pointerType === "touch") {
|
|
226
|
+
incrementTouchPressUp = true;
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const onIncrementPressEnd = (e: PressEvent) => {
|
|
231
|
+
if (e.pointerType === "touch" && incrementTouchPressUp) {
|
|
232
|
+
state.increment();
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
incrementTouchPressUp = false;
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
const onDecrementPressStart = (e: PressEvent) => {
|
|
239
|
+
if (e.pointerType !== "touch") {
|
|
240
|
+
state.decrement();
|
|
241
|
+
} else {
|
|
242
|
+
decrementTouchPressUp = false;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
onButtonPressStart(e);
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
const onDecrementPressUp = (e: PressEvent) => {
|
|
249
|
+
if (e.pointerType === "touch") {
|
|
250
|
+
decrementTouchPressUp = true;
|
|
251
|
+
}
|
|
198
252
|
};
|
|
199
253
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
254
|
+
const onDecrementPressEnd = (e: PressEvent) => {
|
|
255
|
+
if (e.pointerType === "touch" && decrementTouchPressUp) {
|
|
256
|
+
state.decrement();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
decrementTouchPressUp = false;
|
|
205
260
|
};
|
|
206
261
|
|
|
207
262
|
// Build aria-describedby
|
|
208
263
|
const getAriaDescribedBy = () => {
|
|
209
264
|
const p = getProps();
|
|
210
265
|
const parts: string[] = [];
|
|
211
|
-
if (p[
|
|
266
|
+
if (p["aria-describedby"]) parts.push(p["aria-describedby"]);
|
|
212
267
|
if (p.description) parts.push(descriptionId);
|
|
213
268
|
if (p.isInvalid && p.errorMessage) parts.push(errorMessageId);
|
|
214
|
-
return parts.length > 0 ? parts.join(
|
|
269
|
+
return parts.length > 0 ? parts.join(" ") : undefined;
|
|
215
270
|
};
|
|
216
271
|
|
|
217
272
|
return {
|
|
@@ -220,9 +275,9 @@ export function createNumberField(
|
|
|
220
275
|
},
|
|
221
276
|
get groupProps() {
|
|
222
277
|
return {
|
|
223
|
-
role:
|
|
224
|
-
|
|
225
|
-
|
|
278
|
+
role: "group",
|
|
279
|
+
"aria-disabled": getProps().isDisabled || undefined,
|
|
280
|
+
"aria-invalid": getProps().isInvalid || undefined,
|
|
226
281
|
} as JSX.HTMLAttributes<HTMLElement>;
|
|
227
282
|
},
|
|
228
283
|
get inputProps() {
|
|
@@ -235,22 +290,24 @@ export function createNumberField(
|
|
|
235
290
|
fieldProps as Record<string, unknown>,
|
|
236
291
|
{
|
|
237
292
|
id: inputId,
|
|
238
|
-
type:
|
|
239
|
-
inputMode:
|
|
240
|
-
autoComplete:
|
|
241
|
-
autoCorrect:
|
|
293
|
+
type: "text",
|
|
294
|
+
inputMode: "decimal" as const,
|
|
295
|
+
autoComplete: "off",
|
|
296
|
+
autoCorrect: "off",
|
|
242
297
|
spellcheck: false,
|
|
243
|
-
role:
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
298
|
+
role: "spinbutton",
|
|
299
|
+
"aria-valuenow": isNaN(state.numberValue()) ? undefined : state.numberValue(),
|
|
300
|
+
"aria-valuemin": state.minValue(),
|
|
301
|
+
"aria-valuemax": state.maxValue(),
|
|
302
|
+
"aria-valuetext": isNaN(state.numberValue()) ? undefined : state.inputValue(),
|
|
303
|
+
"aria-invalid": p.isInvalid || undefined,
|
|
304
|
+
"aria-required": p.isRequired || undefined,
|
|
305
|
+
"aria-describedby": getAriaDescribedBy(),
|
|
251
306
|
disabled: isDisabled || undefined,
|
|
252
307
|
readOnly: isReadOnly || undefined,
|
|
308
|
+
required: p.isRequired || undefined,
|
|
253
309
|
value: state.inputValue(),
|
|
310
|
+
onInput: onInputChange,
|
|
254
311
|
onChange: onInputChange,
|
|
255
312
|
onFocus: onInputFocus,
|
|
256
313
|
onBlur: onInputBlur,
|
|
@@ -262,40 +319,40 @@ export function createNumberField(
|
|
|
262
319
|
name: p.name,
|
|
263
320
|
form: p.form,
|
|
264
321
|
autoFocus: p.autoFocus,
|
|
265
|
-
} as Record<string, unknown
|
|
322
|
+
} as Record<string, unknown>,
|
|
266
323
|
) as JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
267
324
|
},
|
|
268
325
|
get incrementButtonProps() {
|
|
269
|
-
const p = getProps();
|
|
270
|
-
const isDisabled = p.isDisabled ?? state.isDisabled();
|
|
271
|
-
const canIncrement = state.canIncrement();
|
|
272
|
-
|
|
273
326
|
return {
|
|
274
327
|
id: incrementId,
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
328
|
+
"aria-label": `Increase ${getLabelText()}`,
|
|
329
|
+
"aria-controls": inputId,
|
|
330
|
+
excludeFromTabOrder: true,
|
|
331
|
+
preventFocusOnPress: true,
|
|
332
|
+
allowFocusWhenDisabled: true,
|
|
333
|
+
get isDisabled() {
|
|
334
|
+
return !state.canIncrement();
|
|
335
|
+
},
|
|
336
|
+
onPressStart: onIncrementPressStart,
|
|
337
|
+
onPressUp: onIncrementPressUp,
|
|
338
|
+
onPressEnd: onIncrementPressEnd,
|
|
339
|
+
} as AriaButtonProps;
|
|
283
340
|
},
|
|
284
341
|
get decrementButtonProps() {
|
|
285
|
-
const p = getProps();
|
|
286
|
-
const isDisabled = p.isDisabled ?? state.isDisabled();
|
|
287
|
-
const canDecrement = state.canDecrement();
|
|
288
|
-
|
|
289
342
|
return {
|
|
290
343
|
id: decrementId,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
344
|
+
"aria-label": `Decrease ${getLabelText()}`,
|
|
345
|
+
"aria-controls": inputId,
|
|
346
|
+
excludeFromTabOrder: true,
|
|
347
|
+
preventFocusOnPress: true,
|
|
348
|
+
allowFocusWhenDisabled: true,
|
|
349
|
+
get isDisabled() {
|
|
350
|
+
return !state.canDecrement();
|
|
351
|
+
},
|
|
352
|
+
onPressStart: onDecrementPressStart,
|
|
353
|
+
onPressUp: onDecrementPressUp,
|
|
354
|
+
onPressEnd: onDecrementPressEnd,
|
|
355
|
+
} as AriaButtonProps;
|
|
299
356
|
},
|
|
300
357
|
get descriptionProps() {
|
|
301
358
|
return {
|
package/src/numberfield/index.ts
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Based on @react-aria/overlays ariaHideOutside.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { getOwnerWindow } from
|
|
6
|
+
import { getOwnerWindow } from "../utils";
|
|
7
7
|
|
|
8
|
-
const supportsInert = typeof HTMLElement !==
|
|
8
|
+
const supportsInert = typeof HTMLElement !== "undefined" && "inert" in HTMLElement.prototype;
|
|
9
9
|
|
|
10
10
|
export interface AriaHideOutsideOptions {
|
|
11
11
|
/** The root element to start hiding from. */
|
|
@@ -37,7 +37,7 @@ const observerStack: ObserverWrapper[] = [];
|
|
|
37
37
|
*/
|
|
38
38
|
export function ariaHideOutside(
|
|
39
39
|
targets: Element[],
|
|
40
|
-
options?: AriaHideOutsideOptions | Element
|
|
40
|
+
options?: AriaHideOutsideOptions | Element,
|
|
41
41
|
): () => void {
|
|
42
42
|
const windowObj = getOwnerWindow(targets?.[0]);
|
|
43
43
|
const opts = options instanceof windowObj.Element ? { root: options } : options;
|
|
@@ -49,16 +49,16 @@ export function ariaHideOutside(
|
|
|
49
49
|
const getHidden = (element: Element): boolean => {
|
|
50
50
|
return shouldUseInert && element instanceof windowObj.HTMLElement
|
|
51
51
|
? element.inert
|
|
52
|
-
: element.getAttribute(
|
|
52
|
+
: element.getAttribute("aria-hidden") === "true";
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
const setHidden = (element: Element, hidden: boolean): void => {
|
|
56
56
|
if (shouldUseInert && element instanceof windowObj.HTMLElement) {
|
|
57
57
|
element.inert = hidden;
|
|
58
58
|
} else if (hidden) {
|
|
59
|
-
element.setAttribute(
|
|
59
|
+
element.setAttribute("aria-hidden", "true");
|
|
60
60
|
} else {
|
|
61
|
-
element.removeAttribute(
|
|
61
|
+
element.removeAttribute("aria-hidden");
|
|
62
62
|
if (element instanceof windowObj.HTMLElement) {
|
|
63
63
|
// We only ever call setHidden with hidden = false when the nodeCount is 1 aka
|
|
64
64
|
// we are trying to make the element visible to screen readers again, so remove inert as well
|
|
@@ -86,7 +86,9 @@ export function ariaHideOutside(
|
|
|
86
86
|
|
|
87
87
|
const walk = (walkRoot: Element): void => {
|
|
88
88
|
// Keep live announcer and top layer elements (e.g. toasts) visible.
|
|
89
|
-
for (const element of walkRoot.querySelectorAll(
|
|
89
|
+
for (const element of walkRoot.querySelectorAll(
|
|
90
|
+
"[data-live-announcer], [data-solidaria-top-layer]",
|
|
91
|
+
)) {
|
|
90
92
|
visibleNodes.add(element);
|
|
91
93
|
}
|
|
92
94
|
|
|
@@ -98,7 +100,9 @@ export function ariaHideOutside(
|
|
|
98
100
|
if (
|
|
99
101
|
hiddenNodes.has(node) ||
|
|
100
102
|
visibleNodes.has(node) ||
|
|
101
|
-
(node.parentElement &&
|
|
103
|
+
(node.parentElement &&
|
|
104
|
+
hiddenNodes.has(node.parentElement) &&
|
|
105
|
+
node.parentElement.getAttribute("role") !== "row")
|
|
102
106
|
) {
|
|
103
107
|
return NodeFilter.FILTER_REJECT;
|
|
104
108
|
}
|
|
@@ -140,7 +144,7 @@ export function ariaHideOutside(
|
|
|
140
144
|
|
|
141
145
|
const observer = new MutationObserver((changes) => {
|
|
142
146
|
for (const change of changes) {
|
|
143
|
-
if (change.type !==
|
|
147
|
+
if (change.type !== "childList") {
|
|
144
148
|
continue;
|
|
145
149
|
}
|
|
146
150
|
|
|
@@ -150,7 +154,7 @@ export function ariaHideOutside(
|
|
|
150
154
|
for (const node of change.addedNodes) {
|
|
151
155
|
if (
|
|
152
156
|
(node instanceof HTMLElement || node instanceof SVGElement) &&
|
|
153
|
-
(node.dataset.liveAnnouncer ===
|
|
157
|
+
(node.dataset.liveAnnouncer === "true" || node.dataset.solidariaTopLayer === "true")
|
|
154
158
|
) {
|
|
155
159
|
visibleNodes.add(node);
|
|
156
160
|
} else if (node instanceof Element) {
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Based on @react-aria/interactions useInteractOutside.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { createEffect, onCleanup } from
|
|
7
|
-
import { getOwnerDocument } from
|
|
6
|
+
import { createEffect, onCleanup } from "solid-js";
|
|
7
|
+
import { getOwnerDocument } from "../utils";
|
|
8
8
|
|
|
9
9
|
export interface InteractOutsideProps {
|
|
10
10
|
/** Reference to the element to detect interactions outside of. */
|
|
@@ -51,7 +51,7 @@ export function createInteractOutside(props: InteractOutsideProps): void {
|
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
// Use pointer events if available. Otherwise, fall back to mouse and touch events.
|
|
54
|
-
if (typeof PointerEvent !==
|
|
54
|
+
if (typeof PointerEvent !== "undefined") {
|
|
55
55
|
const onClick = (e: PointerEvent) => {
|
|
56
56
|
if (isPointerDown && isValidEvent(e, ref)) {
|
|
57
57
|
triggerInteractOutside(e);
|
|
@@ -61,12 +61,12 @@ export function createInteractOutside(props: InteractOutsideProps): void {
|
|
|
61
61
|
|
|
62
62
|
// Use click instead of pointerup to avoid Android Chrome issue
|
|
63
63
|
// https://issues.chromium.org/issues/40732224
|
|
64
|
-
documentObject.addEventListener(
|
|
65
|
-
documentObject.addEventListener(
|
|
64
|
+
documentObject.addEventListener("pointerdown", onPointerDown as EventListener, true);
|
|
65
|
+
documentObject.addEventListener("click", onClick as EventListener, true);
|
|
66
66
|
|
|
67
67
|
onCleanup(() => {
|
|
68
|
-
documentObject.removeEventListener(
|
|
69
|
-
documentObject.removeEventListener(
|
|
68
|
+
documentObject.removeEventListener("pointerdown", onPointerDown as EventListener, true);
|
|
69
|
+
documentObject.removeEventListener("click", onClick as EventListener, true);
|
|
70
70
|
});
|
|
71
71
|
} else {
|
|
72
72
|
// Fallback for environments without PointerEvent (mainly tests)
|
|
@@ -105,24 +105,27 @@ export function createInteractOutside(props: InteractOutsideProps): void {
|
|
|
105
105
|
}
|
|
106
106
|
};
|
|
107
107
|
|
|
108
|
-
documentObject.addEventListener(
|
|
109
|
-
documentObject.addEventListener(
|
|
110
|
-
documentObject.addEventListener(
|
|
111
|
-
documentObject.addEventListener(
|
|
108
|
+
documentObject.addEventListener("mousedown", onMouseDown as EventListener, true);
|
|
109
|
+
documentObject.addEventListener("mouseup", onMouseUp as EventListener, true);
|
|
110
|
+
documentObject.addEventListener("touchstart", onTouchStart as EventListener, true);
|
|
111
|
+
documentObject.addEventListener("touchend", onTouchEnd as EventListener, true);
|
|
112
112
|
|
|
113
113
|
onCleanup(() => {
|
|
114
|
-
documentObject.removeEventListener(
|
|
115
|
-
documentObject.removeEventListener(
|
|
116
|
-
documentObject.removeEventListener(
|
|
117
|
-
documentObject.removeEventListener(
|
|
114
|
+
documentObject.removeEventListener("mousedown", onMouseDown as EventListener, true);
|
|
115
|
+
documentObject.removeEventListener("mouseup", onMouseUp as EventListener, true);
|
|
116
|
+
documentObject.removeEventListener("touchstart", onTouchStart as EventListener, true);
|
|
117
|
+
documentObject.removeEventListener("touchend", onTouchEnd as EventListener, true);
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
function isValidEvent(
|
|
123
|
+
function isValidEvent(
|
|
124
|
+
event: PointerEvent | MouseEvent | TouchEvent,
|
|
125
|
+
ref: () => Element | null,
|
|
126
|
+
): boolean {
|
|
124
127
|
// Only handle primary button clicks
|
|
125
|
-
if (
|
|
128
|
+
if ("button" in event && event.button > 0) {
|
|
126
129
|
return false;
|
|
127
130
|
}
|
|
128
131
|
|
|
@@ -133,7 +136,7 @@ function isValidEvent(event: PointerEvent | MouseEvent | TouchEvent, ref: () =>
|
|
|
133
136
|
return false;
|
|
134
137
|
}
|
|
135
138
|
// If the target is within a top layer element (e.g. toasts), ignore
|
|
136
|
-
if ((event.target as Element).closest?.(
|
|
139
|
+
if ((event.target as Element).closest?.("[data-solidaria-top-layer]")) {
|
|
137
140
|
return false;
|
|
138
141
|
}
|
|
139
142
|
}
|
|
@@ -12,9 +12,9 @@ import {
|
|
|
12
12
|
type JSX,
|
|
13
13
|
type Accessor,
|
|
14
14
|
type ParentComponent,
|
|
15
|
-
} from
|
|
16
|
-
import { Portal } from
|
|
17
|
-
import { isServer } from
|
|
15
|
+
} from "solid-js";
|
|
16
|
+
import { Portal } from "solid-js/web";
|
|
17
|
+
import { isServer } from "solid-js/web";
|
|
18
18
|
|
|
19
19
|
export interface ModalProviderProps {
|
|
20
20
|
children: JSX.Element;
|
|
@@ -69,11 +69,7 @@ export const ModalProvider: ParentComponent<ModalProviderProps> = (props) => {
|
|
|
69
69
|
},
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
-
return
|
|
73
|
-
<ModalContext.Provider value={context}>
|
|
74
|
-
{props.children}
|
|
75
|
-
</ModalContext.Provider>
|
|
76
|
-
);
|
|
72
|
+
return <ModalContext.Provider value={context}>{props.children}</ModalContext.Provider>;
|
|
77
73
|
};
|
|
78
74
|
|
|
79
75
|
/**
|
|
@@ -85,7 +81,8 @@ export const UNSAFE_PortalProvider: ParentComponent<PortalProviderProps> = (prop
|
|
|
85
81
|
return (
|
|
86
82
|
<PortalContext.Provider
|
|
87
83
|
value={{
|
|
88
|
-
getContainer:
|
|
84
|
+
getContainer:
|
|
85
|
+
props.getContainer === null ? undefined : (props.getContainer ?? parent.getContainer),
|
|
89
86
|
}}
|
|
90
87
|
>
|
|
91
88
|
{props.children}
|
|
@@ -103,7 +100,7 @@ export function useUNSAFE_PortalContext(): PortalProviderContextValue {
|
|
|
103
100
|
export interface ModalProviderAria {
|
|
104
101
|
/** Props to be spread on the container element. */
|
|
105
102
|
modalProviderProps: {
|
|
106
|
-
|
|
103
|
+
"aria-hidden"?: true;
|
|
107
104
|
};
|
|
108
105
|
}
|
|
109
106
|
|
|
@@ -115,7 +112,7 @@ export function useModalProvider(): ModalProviderAria {
|
|
|
115
112
|
const context = useContext(ModalContext);
|
|
116
113
|
return {
|
|
117
114
|
modalProviderProps: {
|
|
118
|
-
get
|
|
115
|
+
get "aria-hidden"() {
|
|
119
116
|
return context && context.modalCount() > 0 ? true : undefined;
|
|
120
117
|
},
|
|
121
118
|
},
|
|
@@ -172,12 +169,15 @@ export const OverlayContainer: ParentComponent<OverlayContainerProps> = (props)
|
|
|
172
169
|
}
|
|
173
170
|
|
|
174
171
|
const portalContext = useUNSAFE_PortalContext();
|
|
175
|
-
const portalContainer = () =>
|
|
172
|
+
const portalContainer = () =>
|
|
173
|
+
props.portalContainer ?? portalContext.getContainer?.() ?? document.body;
|
|
176
174
|
|
|
177
175
|
createEffect(() => {
|
|
178
176
|
const container = portalContainer();
|
|
179
|
-
if (container?.closest(
|
|
180
|
-
throw new Error(
|
|
177
|
+
if (container?.closest("[data-overlay-container]")) {
|
|
178
|
+
throw new Error(
|
|
179
|
+
"An OverlayContainer must not be inside another container. Please change the portalContainer prop.",
|
|
180
|
+
);
|
|
181
181
|
}
|
|
182
182
|
});
|
|
183
183
|
|
|
@@ -196,7 +196,7 @@ export interface AriaModalOptions {
|
|
|
196
196
|
export interface ModalAria {
|
|
197
197
|
/** Props for the modal content element. */
|
|
198
198
|
modalProps: {
|
|
199
|
-
|
|
199
|
+
"data-ismodal": boolean;
|
|
200
200
|
};
|
|
201
201
|
}
|
|
202
202
|
|
|
@@ -211,7 +211,7 @@ export function createModal(options?: AriaModalOptions): ModalAria {
|
|
|
211
211
|
const context = useContext(ModalContext);
|
|
212
212
|
|
|
213
213
|
if (!context) {
|
|
214
|
-
throw new Error(
|
|
214
|
+
throw new Error("Modal is not contained within a provider");
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
createEffect(() => {
|
|
@@ -232,7 +232,7 @@ export function createModal(options?: AriaModalOptions): ModalAria {
|
|
|
232
232
|
|
|
233
233
|
return {
|
|
234
234
|
modalProps: {
|
|
235
|
-
|
|
235
|
+
"data-ismodal": !options?.isDisabled,
|
|
236
236
|
},
|
|
237
237
|
};
|
|
238
238
|
}
|