@proyecto-viviana/solidaria 0.4.2 → 0.6.0-rc.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-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/dist/_chunk/DragManager.js +71 -25
- package/dist/_chunk/DragManager.js.map +1 -1
- package/dist/_chunk/DragManager.jsx +71 -25
- package/dist/_chunk/DragManager.jsx.map +1 -1
- package/dist/_chunk/FocusScope.js +281 -66
- package/dist/_chunk/FocusScope.js.map +1 -1
- package/dist/_chunk/FocusScope.jsx +274 -55
- package/dist/_chunk/FocusScope.jsx.map +1 -1
- package/dist/_chunk/actiongroup.js +43 -19
- package/dist/_chunk/actiongroup.js.map +1 -1
- package/dist/_chunk/actiongroup.jsx +43 -19
- package/dist/_chunk/actiongroup.jsx.map +1 -1
- package/dist/_chunk/announce.js +19 -6
- package/dist/_chunk/announce.js.map +1 -1
- package/dist/_chunk/announce.jsx +19 -6
- package/dist/_chunk/announce.jsx.map +1 -1
- package/dist/_chunk/ariaHideOutside.js +212 -10
- package/dist/_chunk/ariaHideOutside.js.map +1 -1
- package/dist/_chunk/ariaHideOutside.jsx +212 -10
- package/dist/_chunk/ariaHideOutside.jsx.map +1 -1
- package/dist/_chunk/autocomplete.js +26 -7
- package/dist/_chunk/autocomplete.js.map +1 -1
- package/dist/_chunk/autocomplete.jsx +26 -7
- package/dist/_chunk/autocomplete.jsx.map +1 -1
- package/dist/_chunk/breadcrumbs.js +17 -2
- package/dist/_chunk/breadcrumbs.js.map +1 -1
- package/dist/_chunk/breadcrumbs.jsx +17 -2
- package/dist/_chunk/breadcrumbs.jsx.map +1 -1
- package/dist/_chunk/button.js +53 -20
- package/dist/_chunk/button.js.map +1 -1
- package/dist/_chunk/button.jsx +53 -20
- package/dist/_chunk/button.jsx.map +1 -1
- package/dist/_chunk/calendar.js +341 -56
- package/dist/_chunk/calendar.js.map +1 -1
- package/dist/_chunk/calendar.jsx +341 -56
- package/dist/_chunk/calendar.jsx.map +1 -1
- package/dist/_chunk/checkbox.js +69 -26
- package/dist/_chunk/checkbox.js.map +1 -1
- package/dist/_chunk/checkbox.jsx +69 -26
- package/dist/_chunk/checkbox.jsx.map +1 -1
- package/dist/_chunk/color.js +307 -48
- package/dist/_chunk/color.js.map +1 -1
- package/dist/_chunk/color.jsx +307 -48
- package/dist/_chunk/color.jsx.map +1 -1
- package/dist/_chunk/combobox.js +193 -103
- package/dist/_chunk/combobox.js.map +1 -1
- package/dist/_chunk/combobox.jsx +193 -103
- package/dist/_chunk/combobox.jsx.map +1 -1
- package/dist/_chunk/constants.js +12 -0
- package/dist/_chunk/constants.js.map +1 -1
- package/dist/_chunk/constants.jsx +12 -0
- package/dist/_chunk/constants.jsx.map +1 -1
- package/dist/_chunk/createCollator.js +12 -0
- package/dist/_chunk/createCollator.js.map +1 -1
- package/dist/_chunk/createCollator.jsx +12 -0
- package/dist/_chunk/createCollator.jsx.map +1 -1
- package/dist/_chunk/createCollectionRowInteraction.js +50 -13
- package/dist/_chunk/createCollectionRowInteraction.js.map +1 -1
- package/dist/_chunk/createCollectionRowInteraction.jsx +50 -13
- package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -1
- package/dist/_chunk/createField.js +35 -25
- package/dist/_chunk/createField.js.map +1 -1
- package/dist/_chunk/createField.jsx +35 -25
- package/dist/_chunk/createField.jsx.map +1 -1
- package/dist/_chunk/createFocus.js +18 -5
- package/dist/_chunk/createFocus.js.map +1 -1
- package/dist/_chunk/createFocus.jsx +18 -5
- package/dist/_chunk/createFocus.jsx.map +1 -1
- package/dist/_chunk/createFocusRing.js +16 -7
- package/dist/_chunk/createFocusRing.js.map +1 -1
- package/dist/_chunk/createFocusRing.jsx +16 -7
- package/dist/_chunk/createFocusRing.jsx.map +1 -1
- package/dist/_chunk/createFocusWithin.js +16 -4
- package/dist/_chunk/createFocusWithin.js.map +1 -1
- package/dist/_chunk/createFocusWithin.jsx +16 -4
- package/dist/_chunk/createFocusWithin.jsx.map +1 -1
- package/dist/_chunk/createFocusable.js +39 -53
- package/dist/_chunk/createFocusable.js.map +1 -1
- package/dist/_chunk/createFocusable.jsx +39 -53
- package/dist/_chunk/createFocusable.jsx.map +1 -1
- package/dist/_chunk/createFormReset.js +24 -12
- package/dist/_chunk/createFormReset.js.map +1 -1
- package/dist/_chunk/createFormReset.jsx +24 -12
- package/dist/_chunk/createFormReset.jsx.map +1 -1
- package/dist/_chunk/createFormValidation.js +41 -17
- package/dist/_chunk/createFormValidation.js.map +1 -1
- package/dist/_chunk/createFormValidation.jsx +41 -17
- package/dist/_chunk/createFormValidation.jsx.map +1 -1
- package/dist/_chunk/createHover.js +56 -42
- package/dist/_chunk/createHover.js.map +1 -1
- package/dist/_chunk/createHover.jsx +56 -42
- package/dist/_chunk/createHover.jsx.map +1 -1
- package/dist/_chunk/createKeyboard.js +205 -0
- package/dist/_chunk/createKeyboard.js.map +1 -0
- package/dist/_chunk/createKeyboard.jsx +205 -0
- package/dist/_chunk/createKeyboard.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +17 -4
- package/dist/_chunk/createLabel.js.map +1 -1
- package/dist/_chunk/createLabel.jsx +17 -4
- package/dist/_chunk/createLabel.jsx.map +1 -1
- package/dist/_chunk/createLabels.js +14 -2
- package/dist/_chunk/createLabels.js.map +1 -1
- package/dist/_chunk/createLabels.jsx +14 -2
- package/dist/_chunk/createLabels.jsx.map +1 -1
- package/dist/_chunk/createLandmark.js +19 -3
- package/dist/_chunk/createLandmark.js.map +1 -1
- package/dist/_chunk/createLandmark.jsx +19 -3
- package/dist/_chunk/createLandmark.jsx.map +1 -1
- package/dist/_chunk/createLongPress.js +105 -0
- package/dist/_chunk/createLongPress.js.map +1 -0
- package/dist/_chunk/createLongPress.jsx +105 -0
- package/dist/_chunk/createLongPress.jsx.map +1 -0
- package/dist/_chunk/createOverlay.js +220 -111
- package/dist/_chunk/createOverlay.js.map +1 -1
- package/dist/_chunk/createOverlay.jsx +220 -111
- package/dist/_chunk/createOverlay.jsx.map +1 -1
- package/dist/_chunk/createOverlayTrigger.js +58 -0
- package/dist/_chunk/createOverlayTrigger.js.map +1 -0
- package/dist/_chunk/createOverlayTrigger.jsx +58 -0
- package/dist/_chunk/createOverlayTrigger.jsx.map +1 -0
- package/dist/_chunk/createPress.js +38 -28
- package/dist/_chunk/createPress.js.map +1 -1
- package/dist/_chunk/createPress.jsx +38 -28
- package/dist/_chunk/createPress.jsx.map +1 -1
- package/dist/_chunk/createProgressBar.js +17 -4
- package/dist/_chunk/createProgressBar.js.map +1 -1
- package/dist/_chunk/createProgressBar.jsx +17 -4
- package/dist/_chunk/createProgressBar.jsx.map +1 -1
- package/dist/_chunk/createSelectableItem.js +58 -20
- package/dist/_chunk/createSelectableItem.js.map +1 -1
- package/dist/_chunk/createSelectableItem.jsx +58 -20
- package/dist/_chunk/createSelectableItem.jsx.map +1 -1
- package/dist/_chunk/createSelectableList.js +776 -0
- package/dist/_chunk/createSelectableList.js.map +1 -0
- package/dist/_chunk/createSelectableList.jsx +776 -0
- package/dist/_chunk/createSelectableList.jsx.map +1 -0
- package/dist/_chunk/createStringFormatter.js +350 -5
- package/dist/_chunk/createStringFormatter.js.map +1 -1
- package/dist/_chunk/createStringFormatter.jsx +350 -5
- package/dist/_chunk/createStringFormatter.jsx.map +1 -1
- package/dist/_chunk/createToggle.js +68 -19
- package/dist/_chunk/createToggle.js.map +1 -1
- package/dist/_chunk/createToggle.jsx +68 -19
- package/dist/_chunk/createToggle.jsx.map +1 -1
- package/dist/_chunk/createTypeSelect.js +15 -3
- package/dist/_chunk/createTypeSelect.js.map +1 -1
- package/dist/_chunk/createTypeSelect.jsx +15 -3
- package/dist/_chunk/createTypeSelect.jsx.map +1 -1
- package/dist/_chunk/{visually-hidden.js → createVisuallyHidden.js} +16 -4
- package/dist/_chunk/createVisuallyHidden.js.map +1 -0
- package/dist/_chunk/{visually-hidden.jsx → createVisuallyHidden.jsx} +16 -4
- package/dist/_chunk/createVisuallyHidden.jsx.map +1 -0
- package/dist/_chunk/datepicker.js +687 -602
- package/dist/_chunk/datepicker.js.map +1 -1
- package/dist/_chunk/datepicker.jsx +687 -602
- package/dist/_chunk/datepicker.jsx.map +1 -1
- package/dist/_chunk/dialog.js +49 -19
- package/dist/_chunk/dialog.js.map +1 -1
- package/dist/_chunk/dialog.jsx +49 -19
- package/dist/_chunk/dialog.jsx.map +1 -1
- package/dist/_chunk/disclosure.js +48 -28
- package/dist/_chunk/disclosure.js.map +1 -1
- package/dist/_chunk/disclosure.jsx +48 -28
- package/dist/_chunk/disclosure.jsx.map +1 -1
- package/dist/_chunk/dnd.js +1340 -1172
- package/dist/_chunk/dnd.js.map +1 -1
- package/dist/_chunk/dnd.jsx +1340 -1172
- package/dist/_chunk/dnd.jsx.map +1 -1
- package/dist/_chunk/dom.js +1200 -0
- package/dist/_chunk/dom.js.map +1 -0
- package/dist/_chunk/dom.jsx +1200 -0
- package/dist/_chunk/dom.jsx.map +1 -0
- package/dist/_chunk/env.js +1 -57
- package/dist/_chunk/env.js.map +1 -1
- package/dist/_chunk/env.jsx +1 -57
- package/dist/_chunk/env.jsx.map +1 -1
- package/dist/_chunk/filterDOMProps.js +32 -7
- package/dist/_chunk/filterDOMProps.js.map +1 -1
- package/dist/_chunk/filterDOMProps.jsx +32 -7
- package/dist/_chunk/filterDOMProps.jsx.map +1 -1
- package/dist/_chunk/focus.js +570 -338
- package/dist/_chunk/focus.js.map +1 -1
- package/dist/_chunk/focus.jsx +570 -338
- package/dist/_chunk/focus.jsx.map +1 -1
- package/dist/_chunk/grid.js +62 -8
- package/dist/_chunk/grid.js.map +1 -1
- package/dist/_chunk/grid.jsx +62 -8
- package/dist/_chunk/grid.jsx.map +1 -1
- package/dist/_chunk/gridlist.js +192 -53
- package/dist/_chunk/gridlist.js.map +1 -1
- package/dist/_chunk/gridlist.jsx +192 -53
- package/dist/_chunk/gridlist.jsx.map +1 -1
- package/dist/_chunk/i18n.js +68 -1
- package/dist/_chunk/i18n.js.map +1 -1
- package/dist/_chunk/i18n.jsx +68 -1
- package/dist/_chunk/i18n.jsx.map +1 -1
- package/dist/_chunk/interactions.js +38 -102
- package/dist/_chunk/interactions.js.map +1 -1
- package/dist/_chunk/interactions.jsx +38 -100
- package/dist/_chunk/interactions.jsx.map +1 -1
- package/dist/_chunk/intl.js +280 -0
- package/dist/_chunk/intl.js.map +1 -0
- package/dist/_chunk/intl.jsx +280 -0
- package/dist/_chunk/intl.jsx.map +1 -0
- package/dist/_chunk/link.js +15 -4
- package/dist/_chunk/link.js.map +1 -1
- package/dist/_chunk/link.jsx +15 -4
- package/dist/_chunk/link.jsx.map +1 -1
- package/dist/_chunk/listbox.js +99 -175
- package/dist/_chunk/listbox.js.map +1 -1
- package/dist/_chunk/listbox.jsx +99 -175
- package/dist/_chunk/listbox.jsx.map +1 -1
- package/dist/_chunk/locale.js +58 -12
- package/dist/_chunk/locale.js.map +1 -1
- package/dist/_chunk/locale.jsx +57 -11
- package/dist/_chunk/locale.jsx.map +1 -1
- package/dist/_chunk/menu.js +298 -57
- package/dist/_chunk/menu.js.map +1 -1
- package/dist/_chunk/menu.jsx +298 -57
- package/dist/_chunk/menu.jsx.map +1 -1
- package/dist/_chunk/mergeProps.js +216 -0
- package/dist/_chunk/mergeProps.js.map +1 -0
- package/dist/_chunk/mergeProps.jsx +216 -0
- package/dist/_chunk/mergeProps.jsx.map +1 -0
- package/dist/_chunk/meter.js +16 -4
- package/dist/_chunk/meter.js.map +1 -1
- package/dist/_chunk/meter.jsx +16 -4
- package/dist/_chunk/meter.jsx.map +1 -1
- package/dist/_chunk/numberfield.js +167 -22
- package/dist/_chunk/numberfield.js.map +1 -1
- package/dist/_chunk/numberfield.jsx +167 -22
- package/dist/_chunk/numberfield.jsx.map +1 -1
- package/dist/_chunk/overlays.js +87 -74
- package/dist/_chunk/overlays.js.map +1 -1
- package/dist/_chunk/overlays.jsx +71 -57
- package/dist/_chunk/overlays.jsx.map +1 -1
- package/dist/_chunk/owner.js +23 -0
- package/dist/_chunk/owner.js.map +1 -0
- package/dist/_chunk/owner.jsx +23 -0
- package/dist/_chunk/owner.jsx.map +1 -0
- package/dist/_chunk/popover.js +180 -42
- package/dist/_chunk/popover.js.map +1 -1
- package/dist/_chunk/popover.jsx +180 -42
- package/dist/_chunk/popover.jsx.map +1 -1
- package/dist/_chunk/radio.js +92 -32
- package/dist/_chunk/radio.js.map +1 -1
- package/dist/_chunk/radio.jsx +92 -32
- package/dist/_chunk/radio.jsx.map +1 -1
- package/dist/_chunk/reactivity.js.map +1 -1
- package/dist/_chunk/reactivity.jsx.map +1 -1
- package/dist/_chunk/refs.js +41 -0
- package/dist/_chunk/refs.js.map +1 -0
- package/dist/_chunk/refs.jsx +41 -0
- package/dist/_chunk/refs.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +69 -3
- package/dist/_chunk/searchfield.js.map +1 -1
- package/dist/_chunk/searchfield.jsx +69 -3
- package/dist/_chunk/searchfield.jsx.map +1 -1
- package/dist/_chunk/select.js +226 -80
- package/dist/_chunk/select.js.map +1 -1
- package/dist/_chunk/select.jsx +162 -70
- package/dist/_chunk/select.jsx.map +1 -1
- package/dist/_chunk/selection.js +20 -638
- package/dist/_chunk/selection.js.map +1 -1
- package/dist/_chunk/selection.jsx +20 -638
- package/dist/_chunk/selection.jsx.map +1 -1
- package/dist/_chunk/separator.js +12 -0
- package/dist/_chunk/separator.js.map +1 -1
- package/dist/_chunk/separator.jsx +12 -0
- package/dist/_chunk/separator.jsx.map +1 -1
- package/dist/_chunk/slider.js +25 -16
- package/dist/_chunk/slider.js.map +1 -1
- package/dist/_chunk/slider.jsx +25 -16
- package/dist/_chunk/slider.jsx.map +1 -1
- package/dist/_chunk/spinbutton.js +52 -42
- package/dist/_chunk/spinbutton.js.map +1 -1
- package/dist/_chunk/spinbutton.jsx +52 -42
- package/dist/_chunk/spinbutton.jsx.map +1 -1
- package/dist/_chunk/steplist.js +14 -1
- package/dist/_chunk/steplist.js.map +1 -1
- package/dist/_chunk/steplist.jsx +14 -1
- package/dist/_chunk/steplist.jsx.map +1 -1
- package/dist/_chunk/switch.js +21 -3
- package/dist/_chunk/switch.js.map +1 -1
- package/dist/_chunk/switch.jsx +21 -3
- package/dist/_chunk/switch.jsx.map +1 -1
- package/dist/_chunk/table.js +666 -88
- package/dist/_chunk/table.js.map +1 -1
- package/dist/_chunk/table.jsx +666 -88
- package/dist/_chunk/table.jsx.map +1 -1
- package/dist/_chunk/tabs.js +115 -17
- package/dist/_chunk/tabs.js.map +1 -1
- package/dist/_chunk/tabs.jsx +115 -17
- package/dist/_chunk/tabs.jsx.map +1 -1
- package/dist/_chunk/tag.js +240 -39
- package/dist/_chunk/tag.js.map +1 -1
- package/dist/_chunk/tag.jsx +240 -39
- package/dist/_chunk/tag.jsx.map +1 -1
- package/dist/_chunk/textfield.js +83 -12
- package/dist/_chunk/textfield.js.map +1 -1
- package/dist/_chunk/textfield.jsx +83 -12
- package/dist/_chunk/textfield.jsx.map +1 -1
- package/dist/_chunk/toast.js +61 -28
- package/dist/_chunk/toast.js.map +1 -1
- package/dist/_chunk/toast.jsx +61 -28
- package/dist/_chunk/toast.jsx.map +1 -1
- package/dist/_chunk/tokenfield.js +567 -0
- package/dist/_chunk/tokenfield.js.map +1 -0
- package/dist/_chunk/tokenfield.jsx +567 -0
- package/dist/_chunk/tokenfield.jsx.map +1 -0
- package/dist/_chunk/toolbar.js +25 -8
- package/dist/_chunk/toolbar.js.map +1 -1
- package/dist/_chunk/toolbar.jsx +25 -8
- package/dist/_chunk/toolbar.jsx.map +1 -1
- package/dist/_chunk/tooltip.js +379 -6
- package/dist/_chunk/tooltip.js.map +1 -1
- package/dist/_chunk/tooltip.jsx +379 -6
- package/dist/_chunk/tooltip.jsx.map +1 -1
- package/dist/_chunk/tree.js +280 -69
- package/dist/_chunk/tree.js.map +1 -1
- package/dist/_chunk/tree.jsx +280 -69
- package/dist/_chunk/tree.jsx.map +1 -1
- package/dist/_chunk/utils.js +192 -150
- package/dist/_chunk/utils.js.map +1 -1
- package/dist/_chunk/utils.jsx +192 -150
- package/dist/_chunk/utils.jsx.map +1 -1
- package/dist/_chunk/virtualFocus.js +54 -0
- package/dist/_chunk/virtualFocus.js.map +1 -0
- package/dist/_chunk/virtualFocus.jsx +54 -0
- package/dist/_chunk/virtualFocus.jsx.map +1 -0
- package/dist/_chunk/virtualizer.js +202 -0
- package/dist/_chunk/virtualizer.js.map +1 -0
- package/dist/_chunk/virtualizer.jsx +202 -0
- package/dist/_chunk/virtualizer.jsx.map +1 -0
- package/dist/actiongroup/createActionGroup.d.ts +2 -1
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +1 -9
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/intl/index.d.ts +13 -0
- package/dist/autocomplete/intl/index.d.ts.map +1 -0
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +3 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/intl/index.d.ts +13 -0
- package/dist/breadcrumbs/intl/index.d.ts.map +1 -0
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts.map +1 -1
- package/dist/button/createToggleButtonGroup.d.ts +1 -1
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/types.d.ts +14 -0
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +1 -7
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +0 -6
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +1 -7
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createCalendarMonthPicker.d.ts +0 -8
- package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -1
- package/dist/calendar/createCalendarYearPicker.d.ts +0 -8
- package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +13 -7
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +2 -6
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts.map +1 -1
- package/dist/calendar/utils.d.ts.map +1 -1
- package/dist/checkbox/createCheckbox.d.ts +2 -1
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +1 -9
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +0 -8
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/collections/index.d.ts +1 -1
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +18 -2
- package/dist/collections/index.js.map +1 -1
- package/dist/collections/index.jsx +18 -2
- package/dist/collections/index.jsx.map +1 -1
- package/dist/color/createColorArea.d.ts +2 -7
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +2 -7
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +1 -6
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +1 -6
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +1 -6
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/intl/index.d.ts.map +1 -1
- package/dist/color/types.d.ts +47 -1
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +17 -8
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/intl/generated-locales.d.ts +3 -0
- package/dist/combobox/intl/generated-locales.d.ts.map +1 -1
- package/dist/combobox/intl/index.d.ts +3 -2
- package/dist/combobox/intl/index.d.ts.map +1 -1
- package/dist/datepicker/createDateField.d.ts +0 -10
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +0 -16
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
- package/dist/datepicker/createDateRangePicker.d.ts +0 -21
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +0 -9
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createDisplayNames.d.ts +1 -9
- package/dist/datepicker/createDisplayNames.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/intl.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +2 -4
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +14 -0
- package/dist/dialog/types.d.ts.map +1 -1
- package/dist/disclosure/createDisclosure.d.ts +1 -8
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +3 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/dnd/DragManager.d.ts +1 -16
- package/dist/dnd/DragManager.d.ts.map +1 -1
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +1 -7
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +1 -7
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +2 -7
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +1 -7
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDropIndicator.d.ts +27 -0
- package/dist/dnd/createDropIndicator.d.ts.map +1 -0
- package/dist/dnd/createDroppableCollection.d.ts +6 -8
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +12 -10
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +3 -1
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +2 -2
- package/dist/dnd/index.jsx +2 -2
- package/dist/dnd/intl/index.d.ts +6 -4
- package/dist/dnd/intl/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +20 -1
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +4 -0
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +9 -5
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts +3 -0
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts +3 -0
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createHasTabbableChild.d.ts +13 -0
- package/dist/focus/createHasTabbableChild.d.ts.map +1 -0
- package/dist/focus/createVirtualFocus.d.ts +4 -1
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.js +3 -2
- package/dist/focus/index.jsx +3 -2
- package/dist/focus/virtualFocus.d.ts +1 -1
- package/dist/form/createFormReset.d.ts +1 -7
- package/dist/form/createFormReset.d.ts.map +1 -1
- package/dist/form/createFormValidation.d.ts +1 -9
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts.map +1 -1
- package/dist/grid/createGrid.d.ts +1 -5
- package/dist/grid/createGrid.d.ts.map +1 -1
- package/dist/grid/createGridCell.d.ts +1 -5
- package/dist/grid/createGridCell.d.ts.map +1 -1
- package/dist/grid/createGridRow.d.ts +1 -5
- package/dist/grid/createGridRow.d.ts.map +1 -1
- package/dist/grid/index.d.ts +2 -2
- package/dist/grid/intl/index.d.ts +18 -0
- package/dist/grid/intl/index.d.ts.map +1 -0
- package/dist/grid/types.d.ts +25 -2
- package/dist/grid/types.d.ts.map +1 -1
- package/dist/gridlist/createGridList.d.ts +3 -5
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +1 -5
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSection.d.ts +0 -4
- package/dist/gridlist/createGridListSection.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +1 -5
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/intl/index.d.ts +14 -0
- package/dist/gridlist/intl/index.d.ts.map +1 -0
- package/dist/gridlist/types.d.ts +56 -2
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/compileIcu.d.ts +24 -0
- package/dist/i18n/compileIcu.d.ts.map +1 -0
- package/dist/i18n/createCollator.d.ts +0 -7
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts +0 -7
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts +0 -7
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createListFormatter.d.ts +9 -0
- package/dist/i18n/createListFormatter.d.ts.map +1 -0
- package/dist/i18n/createNumberFormatter.d.ts +0 -7
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +14 -4
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.jsx +2 -2
- package/dist/i18n/locale.d.ts +2 -8
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts +0 -7
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -21
- package/dist/index.jsx +27 -21
- package/dist/interactions/FocusableProvider.d.ts +3 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -1
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createContextMenu.d.ts +24 -0
- package/dist/interactions/createContextMenu.d.ts.map +1 -0
- package/dist/interactions/createFocus.d.ts +3 -2
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +2 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -6
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +2 -6
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +3 -10
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +12 -10
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +12 -3
- package/dist/interactions/createKeyboard.d.ts.map +1 -1
- package/dist/interactions/createKeyboardShortcutHandler.d.ts +24 -0
- package/dist/interactions/createKeyboardShortcutHandler.d.ts.map +1 -0
- package/dist/interactions/createLongPress.d.ts +4 -7
- package/dist/interactions/createLongPress.d.ts.map +1 -1
- package/dist/interactions/createMove.d.ts +1 -6
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +2 -7
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +1 -1
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +5 -3
- package/dist/interactions/index.jsx +5 -3
- package/dist/label/createField.d.ts +7 -1
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +1 -1
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +0 -7
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/landmark/createLandmark.d.ts +4 -1
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/link/createLink.d.ts +1 -1
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/listbox/createListBox.d.ts +8 -7
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +7 -1
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -13
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/menu/createMenu.d.ts +3 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +2 -1
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +24 -20
- package/dist/menu/createMenuTrigger.d.ts.map +1 -1
- package/dist/menu/index.d.ts +1 -1
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/intl/index.d.ts +4 -0
- package/dist/menu/intl/index.d.ts.map +1 -0
- package/dist/meter/createMeter.d.ts +2 -1
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/numberfield/createNumberField.d.ts +29 -6
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/overlays/ariaHideOutside.d.ts +0 -4
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createInteractOutside.d.ts +2 -5
- package/dist/overlays/createInteractOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -6
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -5
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +2 -6
- package/dist/overlays/createOverlayTrigger.d.ts.map +1 -1
- package/dist/overlays/createPreventScroll.d.ts +0 -4
- package/dist/overlays/createPreventScroll.d.ts.map +1 -1
- package/dist/overlays/index.d.ts +1 -0
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +3 -2
- package/dist/overlays/index.jsx +3 -2
- package/dist/overlays/intl/index.d.ts +13 -0
- package/dist/overlays/intl/index.d.ts.map +1 -0
- package/dist/popover/calculatePosition.d.ts +1 -1
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +1 -7
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +6 -7
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/progress/createProgressBar.d.ts +2 -10
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/radio/createRadio.d.ts +8 -1
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +1 -9
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +1 -1
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/intl/index.d.ts +13 -0
- package/dist/searchfield/intl/index.d.ts.map +1 -0
- package/dist/select/createHiddenSelect.d.ts +3 -10
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +10 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -1
- package/dist/selection/ListKeyboardDelegate.d.ts +2 -1
- package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -1
- package/dist/selection/constants.d.ts.map +1 -1
- package/dist/selection/createCollectionRowInteraction.d.ts +12 -1
- package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -1
- package/dist/selection/createScrollIntoViewOnFocus.d.ts +0 -11
- package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -1
- package/dist/selection/createSelectableCollection.d.ts +1 -23
- package/dist/selection/createSelectableCollection.d.ts.map +1 -1
- package/dist/selection/createSelectableItem.d.ts +2 -29
- package/dist/selection/createSelectableItem.d.ts.map +1 -1
- package/dist/selection/createSelectableList.d.ts +4 -17
- package/dist/selection/createSelectableList.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -8
- package/dist/selection/createTypeSelect.d.ts.map +1 -1
- package/dist/selection/index.js +3 -2
- package/dist/selection/index.jsx +3 -2
- package/dist/selection/selectItem.d.ts.map +1 -1
- package/dist/selection/utils.d.ts +1 -1
- package/dist/selection/utils.d.ts.map +1 -1
- package/dist/separator/createSeparator.d.ts +3 -1
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/slider/createSlider.d.ts +1 -6
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/spinbutton/createSpinButton.d.ts +0 -9
- package/dist/spinbutton/createSpinButton.d.ts.map +1 -1
- package/dist/spinbutton/index.d.ts +2 -2
- package/dist/spinbutton/index.d.ts.map +1 -1
- package/dist/spinbutton/intl.d.ts.map +1 -1
- package/dist/ssr/index.d.ts +3 -9
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +47 -26
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/index.jsx +47 -26
- package/dist/ssr/index.jsx.map +1 -1
- package/dist/steplist/createStepList.d.ts +1 -1
- package/dist/steplist/createStepList.d.ts.map +1 -1
- package/dist/switch/createSwitch.d.ts +2 -1
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/table/createTable.d.ts +1 -5
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +1 -5
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +1 -5
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +2 -8
- package/dist/table/createTableColumnResize.d.ts.map +1 -1
- package/dist/table/createTableHeaderRow.d.ts +1 -5
- package/dist/table/createTableHeaderRow.d.ts.map +1 -1
- package/dist/table/createTableRow.d.ts +1 -5
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +1 -5
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +1 -5
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +1 -5
- package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
- package/dist/table/index.d.ts +2 -2
- package/dist/table/intl/index.d.ts +23 -0
- package/dist/table/intl/index.d.ts.map +1 -0
- package/dist/table/types.d.ts +44 -2
- package/dist/table/types.d.ts.map +1 -1
- package/dist/table/utils.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +5 -9
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tag/createTag.d.ts +4 -8
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +0 -9
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/intl/index.d.ts +14 -0
- package/dist/tag/intl/index.d.ts.map +1 -0
- package/dist/textfield/createTextField.d.ts +6 -8
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +1 -8
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +7 -18
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/intl/index.d.ts +14 -0
- package/dist/toast/intl/index.d.ts.map +1 -0
- package/dist/toggle/createToggle.d.ts +8 -1
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/tokenfield/createToken.d.ts +15 -0
- package/dist/tokenfield/createToken.d.ts.map +1 -0
- package/dist/tokenfield/createTokenField.d.ts +52 -0
- package/dist/tokenfield/createTokenField.d.ts.map +1 -0
- package/dist/tokenfield/index.d.ts +3 -0
- package/dist/tokenfield/index.d.ts.map +1 -0
- package/dist/tokenfield/index.js +2 -0
- package/dist/tokenfield/index.jsx +2 -0
- package/dist/toolbar/createToolbar.d.ts +1 -1
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/tooltip/createPreviewTrigger.d.ts +23 -0
- package/dist/tooltip/createPreviewTrigger.d.ts.map +1 -0
- package/dist/tooltip/createSafeArea.d.ts +20 -0
- package/dist/tooltip/createSafeArea.d.ts.map +1 -0
- package/dist/tooltip/createTooltip.d.ts +1 -1
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +1 -9
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -0
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +2 -2
- package/dist/tooltip/index.jsx +2 -2
- package/dist/tooltip/intl/index.d.ts +4 -0
- package/dist/tooltip/intl/index.d.ts.map +1 -0
- package/dist/tree/createTree.d.ts +1 -5
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +1 -5
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +1 -5
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/intl/index.d.ts +14 -0
- package/dist/tree/intl/index.d.ts.map +1 -0
- package/dist/tree/types.d.ts +35 -2
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/ShadowTreeWalker.d.ts +30 -0
- package/dist/utils/ShadowTreeWalker.d.ts.map +1 -0
- package/dist/utils/animation.d.ts +1 -29
- package/dist/utils/animation.d.ts.map +1 -1
- package/dist/utils/capture.d.ts +14 -0
- package/dist/utils/capture.d.ts.map +1 -0
- package/dist/utils/createDescription.d.ts +1 -25
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +45 -11
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/domAttrs.d.ts +16 -0
- package/dist/utils/domAttrs.d.ts.map +1 -0
- package/dist/utils/env.d.ts +2 -0
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/events.d.ts +0 -4
- package/dist/utils/events.d.ts.map +1 -1
- package/dist/utils/filterDOMProps.d.ts +0 -6
- package/dist/utils/filterDOMProps.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +19 -6
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/getMetaValue.d.ts +13 -0
- package/dist/utils/getMetaValue.d.ts.map +1 -0
- package/dist/utils/getNonce.d.ts +9 -0
- package/dist/utils/getNonce.d.ts.map +1 -0
- package/dist/utils/globalListeners.d.ts +0 -6
- package/dist/utils/globalListeners.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +7 -4
- package/dist/utils/index.jsx +7 -4
- package/dist/utils/keyboard.d.ts +0 -4
- package/dist/utils/keyboard.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts +5 -2
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/owner.d.ts +14 -0
- package/dist/utils/owner.d.ts.map +1 -0
- package/dist/utils/platform.d.ts +0 -4
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +2 -0
- package/dist/utils/reactivity.d.ts.map +1 -1
- package/dist/utils/refs.d.ts +20 -0
- package/dist/utils/refs.d.ts.map +1 -0
- package/dist/utils/runAfterTransition.d.ts +2 -0
- package/dist/utils/runAfterTransition.d.ts.map +1 -0
- package/dist/utils/scrollIntoView.d.ts +0 -4
- package/dist/utils/scrollIntoView.d.ts.map +1 -1
- package/dist/utils/splitProps.d.ts +17 -0
- package/dist/utils/splitProps.d.ts.map +1 -0
- package/dist/utils/textSelection.d.ts +0 -8
- package/dist/utils/textSelection.d.ts.map +1 -1
- package/dist/virtualizer/ScrollView.d.ts +38 -0
- package/dist/virtualizer/ScrollView.d.ts.map +1 -0
- package/dist/virtualizer/index.d.ts +3 -0
- package/dist/virtualizer/index.d.ts.map +1 -0
- package/dist/virtualizer/index.js +2 -0
- package/dist/virtualizer/index.jsx +2 -0
- package/dist/virtualizer/utils.d.ts +10 -0
- package/dist/virtualizer/utils.d.ts.map +1 -0
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -9
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.js +1 -1
- package/dist/visually-hidden/index.jsx +1 -1
- package/package.json +30 -11
- package/src/actiongroup/createActionGroup.ts +49 -27
- package/src/autocomplete/createAutocomplete.ts +32 -5
- package/src/autocomplete/intl/ar-AE.json +3 -0
- package/src/autocomplete/intl/bg-BG.json +3 -0
- package/src/autocomplete/intl/cs-CZ.json +3 -0
- package/src/autocomplete/intl/da-DK.json +3 -0
- package/src/autocomplete/intl/de-DE.json +3 -0
- package/src/autocomplete/intl/el-GR.json +3 -0
- package/src/autocomplete/intl/en-US.json +3 -0
- package/src/autocomplete/intl/es-ES.json +3 -0
- package/src/autocomplete/intl/et-EE.json +3 -0
- package/src/autocomplete/intl/fi-FI.json +3 -0
- package/src/autocomplete/intl/fr-FR.json +3 -0
- package/src/autocomplete/intl/he-IL.json +3 -0
- package/src/autocomplete/intl/hr-HR.json +3 -0
- package/src/autocomplete/intl/hu-HU.json +3 -0
- package/src/autocomplete/intl/index.ts +122 -0
- package/src/autocomplete/intl/it-IT.json +3 -0
- package/src/autocomplete/intl/ja-JP.json +3 -0
- package/src/autocomplete/intl/ko-KR.json +3 -0
- package/src/autocomplete/intl/lt-LT.json +3 -0
- package/src/autocomplete/intl/lv-LV.json +3 -0
- package/src/autocomplete/intl/nb-NO.json +3 -0
- package/src/autocomplete/intl/nl-NL.json +3 -0
- package/src/autocomplete/intl/pl-PL.json +3 -0
- package/src/autocomplete/intl/pt-BR.json +3 -0
- package/src/autocomplete/intl/pt-PT.json +3 -0
- package/src/autocomplete/intl/ro-RO.json +3 -0
- package/src/autocomplete/intl/ru-RU.json +3 -0
- package/src/autocomplete/intl/sk-SK.json +3 -0
- package/src/autocomplete/intl/sl-SI.json +3 -0
- package/src/autocomplete/intl/sr-SP.json +3 -0
- package/src/autocomplete/intl/sv-SE.json +3 -0
- package/src/autocomplete/intl/tr-TR.json +3 -0
- package/src/autocomplete/intl/uk-UA.json +3 -0
- package/src/autocomplete/intl/zh-CN.json +3 -0
- package/src/autocomplete/intl/zh-TW.json +3 -0
- package/src/breadcrumbs/createBreadcrumbs.ts +18 -1
- package/src/breadcrumbs/intl/ar-AE.json +3 -0
- package/src/breadcrumbs/intl/bg-BG.json +3 -0
- package/src/breadcrumbs/intl/cs-CZ.json +3 -0
- package/src/breadcrumbs/intl/da-DK.json +3 -0
- package/src/breadcrumbs/intl/de-DE.json +3 -0
- package/src/breadcrumbs/intl/el-GR.json +3 -0
- package/src/breadcrumbs/intl/en-US.json +3 -0
- package/src/breadcrumbs/intl/es-ES.json +3 -0
- package/src/breadcrumbs/intl/et-EE.json +3 -0
- package/src/breadcrumbs/intl/fi-FI.json +3 -0
- package/src/breadcrumbs/intl/fr-FR.json +3 -0
- package/src/breadcrumbs/intl/he-IL.json +3 -0
- package/src/breadcrumbs/intl/hr-HR.json +3 -0
- package/src/breadcrumbs/intl/hu-HU.json +3 -0
- package/src/breadcrumbs/intl/index.ts +122 -0
- package/src/breadcrumbs/intl/it-IT.json +3 -0
- package/src/breadcrumbs/intl/ja-JP.json +3 -0
- package/src/breadcrumbs/intl/ko-KR.json +3 -0
- package/src/breadcrumbs/intl/lt-LT.json +3 -0
- package/src/breadcrumbs/intl/lv-LV.json +3 -0
- package/src/breadcrumbs/intl/nb-NO.json +3 -0
- package/src/breadcrumbs/intl/nl-NL.json +3 -0
- package/src/breadcrumbs/intl/pl-PL.json +3 -0
- package/src/breadcrumbs/intl/pt-BR.json +3 -0
- package/src/breadcrumbs/intl/pt-PT.json +3 -0
- package/src/breadcrumbs/intl/ro-RO.json +3 -0
- package/src/breadcrumbs/intl/ru-RU.json +3 -0
- package/src/breadcrumbs/intl/sk-SK.json +3 -0
- package/src/breadcrumbs/intl/sl-SI.json +3 -0
- package/src/breadcrumbs/intl/sr-SP.json +3 -0
- package/src/breadcrumbs/intl/sv-SE.json +3 -0
- package/src/breadcrumbs/intl/tr-TR.json +3 -0
- package/src/breadcrumbs/intl/uk-UA.json +3 -0
- package/src/breadcrumbs/intl/zh-CN.json +3 -0
- package/src/breadcrumbs/intl/zh-TW.json +3 -0
- package/src/button/createButton.ts +15 -1
- package/src/button/createToggleButton.ts +18 -5
- package/src/button/createToggleButtonGroup.ts +23 -8
- package/src/button/types.ts +16 -0
- package/src/calendar/createCalendar.ts +22 -3
- package/src/calendar/createCalendarCell.ts +104 -15
- package/src/calendar/createCalendarGrid.ts +37 -13
- package/src/calendar/createCalendarMonthPicker.ts +14 -0
- package/src/calendar/createCalendarYearPicker.ts +14 -0
- package/src/calendar/createRangeCalendar.ts +124 -1
- package/src/calendar/createRangeCalendarCell.ts +179 -40
- package/src/calendar/intl/index.ts +37 -0
- package/src/calendar/utils.ts +14 -0
- package/src/checkbox/createCheckbox.ts +32 -17
- package/src/checkbox/createCheckboxGroup.ts +31 -13
- package/src/checkbox/createCheckboxGroupItem.ts +15 -1
- package/src/collections/index.ts +21 -3
- package/src/color/createColorArea.ts +226 -29
- package/src/color/createColorField.ts +98 -22
- package/src/color/createColorSlider.ts +24 -3
- package/src/color/createColorSwatch.ts +18 -1
- package/src/color/createColorWheel.ts +27 -5
- package/src/color/intl/index.ts +35 -0
- package/src/color/types.ts +47 -1
- package/src/combobox/createComboBox.ts +303 -152
- package/src/combobox/intl/generated-locales.ts +38 -1
- package/src/combobox/intl/index.ts +38 -2
- package/src/datepicker/createDateField.ts +38 -22
- package/src/datepicker/createDatePicker.ts +14 -0
- package/src/datepicker/createDatePickerGroup.ts +24 -12
- package/src/datepicker/createDateRangePicker.ts +14 -0
- package/src/datepicker/createDateSegment.ts +110 -46
- package/src/datepicker/createDisplayNames.ts +16 -1
- package/src/datepicker/createTimeField.ts +15 -5
- package/src/datepicker/intl.ts +623 -544
- package/src/dialog/createDialog.ts +57 -30
- package/src/dialog/types.ts +14 -0
- package/src/disclosure/createDisclosure.ts +28 -6
- package/src/disclosure/createDisclosureGroup.ts +3 -4
- package/src/dnd/DragManager.ts +60 -9
- package/src/dnd/DropTargetKeyboardNavigation.ts +8 -6
- package/src/dnd/createDrag.ts +18 -1
- package/src/dnd/createDraggableCollection.ts +96 -32
- package/src/dnd/createDraggableItem.ts +73 -31
- package/src/dnd/createDrop.ts +18 -1
- package/src/dnd/createDropIndicator.ts +92 -0
- package/src/dnd/createDroppableCollection.ts +113 -48
- package/src/dnd/createDroppableItem.ts +161 -13
- package/src/dnd/index.ts +3 -0
- package/src/dnd/intl/index.ts +77 -66
- package/src/dnd/types.ts +20 -1
- package/src/dnd/utils.ts +19 -0
- package/src/focus/FocusScope.tsx +542 -157
- package/src/focus/createAutoFocus.ts +94 -68
- package/src/focus/createFocusRestore.ts +16 -12
- package/src/focus/createHasTabbableChild.ts +78 -0
- package/src/focus/createVirtualFocus.ts +21 -5
- package/src/focus/virtualFocus.ts +1 -1
- package/src/form/createFormReset.ts +40 -17
- package/src/form/createFormValidation.ts +128 -86
- package/src/grid/GridKeyboardDelegate.ts +14 -0
- package/src/grid/createGrid.ts +17 -2
- package/src/grid/createGridCell.ts +17 -2
- package/src/grid/createGridRow.ts +17 -2
- package/src/grid/index.ts +2 -2
- package/src/grid/intl/ar-AE.json +8 -0
- package/src/grid/intl/bg-BG.json +8 -0
- package/src/grid/intl/cs-CZ.json +8 -0
- package/src/grid/intl/da-DK.json +8 -0
- package/src/grid/intl/de-DE.json +8 -0
- package/src/grid/intl/el-GR.json +8 -0
- package/src/grid/intl/en-US.json +8 -0
- package/src/grid/intl/es-ES.json +8 -0
- package/src/grid/intl/et-EE.json +8 -0
- package/src/grid/intl/fi-FI.json +8 -0
- package/src/grid/intl/fr-FR.json +8 -0
- package/src/grid/intl/he-IL.json +8 -0
- package/src/grid/intl/hr-HR.json +8 -0
- package/src/grid/intl/hu-HU.json +8 -0
- package/src/grid/intl/index.ts +127 -0
- package/src/grid/intl/it-IT.json +8 -0
- package/src/grid/intl/ja-JP.json +8 -0
- package/src/grid/intl/ko-KR.json +8 -0
- package/src/grid/intl/lt-LT.json +8 -0
- package/src/grid/intl/lv-LV.json +8 -0
- package/src/grid/intl/nb-NO.json +8 -0
- package/src/grid/intl/nl-NL.json +8 -0
- package/src/grid/intl/pl-PL.json +8 -0
- package/src/grid/intl/pt-BR.json +8 -0
- package/src/grid/intl/pt-PT.json +8 -0
- package/src/grid/intl/ro-RO.json +8 -0
- package/src/grid/intl/ru-RU.json +8 -0
- package/src/grid/intl/sk-SK.json +8 -0
- package/src/grid/intl/sl-SI.json +8 -0
- package/src/grid/intl/sr-SP.json +8 -0
- package/src/grid/intl/sv-SE.json +8 -0
- package/src/grid/intl/tr-TR.json +8 -0
- package/src/grid/intl/uk-UA.json +8 -0
- package/src/grid/intl/zh-CN.json +8 -0
- package/src/grid/intl/zh-TW.json +8 -0
- package/src/grid/types.ts +25 -2
- package/src/gridlist/createGridList.ts +172 -42
- package/src/gridlist/createGridListItem.ts +51 -13
- package/src/gridlist/createGridListSection.ts +14 -0
- package/src/gridlist/createGridListSelectionCheckbox.ts +31 -4
- package/src/gridlist/intl/ar-AE.json +4 -0
- package/src/gridlist/intl/bg-BG.json +4 -0
- package/src/gridlist/intl/cs-CZ.json +4 -0
- package/src/gridlist/intl/da-DK.json +4 -0
- package/src/gridlist/intl/de-DE.json +4 -0
- package/src/gridlist/intl/el-GR.json +4 -0
- package/src/gridlist/intl/en-US.json +4 -0
- package/src/gridlist/intl/es-ES.json +4 -0
- package/src/gridlist/intl/et-EE.json +4 -0
- package/src/gridlist/intl/fi-FI.json +4 -0
- package/src/gridlist/intl/fr-FR.json +4 -0
- package/src/gridlist/intl/he-IL.json +4 -0
- package/src/gridlist/intl/hr-HR.json +4 -0
- package/src/gridlist/intl/hu-HU.json +4 -0
- package/src/gridlist/intl/index.ts +123 -0
- package/src/gridlist/intl/it-IT.json +4 -0
- package/src/gridlist/intl/ja-JP.json +4 -0
- package/src/gridlist/intl/ko-KR.json +4 -0
- package/src/gridlist/intl/lt-LT.json +4 -0
- package/src/gridlist/intl/lv-LV.json +4 -0
- package/src/gridlist/intl/nb-NO.json +4 -0
- package/src/gridlist/intl/nl-NL.json +4 -0
- package/src/gridlist/intl/pl-PL.json +4 -0
- package/src/gridlist/intl/pt-BR.json +4 -0
- package/src/gridlist/intl/pt-PT.json +4 -0
- package/src/gridlist/intl/ro-RO.json +4 -0
- package/src/gridlist/intl/ru-RU.json +4 -0
- package/src/gridlist/intl/sk-SK.json +4 -0
- package/src/gridlist/intl/sl-SI.json +4 -0
- package/src/gridlist/intl/sr-SP.json +4 -0
- package/src/gridlist/intl/sv-SE.json +4 -0
- package/src/gridlist/intl/tr-TR.json +4 -0
- package/src/gridlist/intl/uk-UA.json +4 -0
- package/src/gridlist/intl/zh-CN.json +4 -0
- package/src/gridlist/intl/zh-TW.json +4 -0
- package/src/gridlist/types.ts +54 -2
- package/src/i18n/compileIcu.ts +440 -0
- package/src/i18n/createCollator.ts +14 -0
- package/src/i18n/createDateFormatter.ts +14 -0
- package/src/i18n/createFilter.ts +14 -0
- package/src/i18n/createListFormatter.ts +38 -0
- package/src/i18n/createNumberFormatter.ts +14 -0
- package/src/i18n/createStringFormatter.ts +64 -8
- package/src/i18n/index.ts +3 -0
- package/src/i18n/locale.tsx +60 -19
- package/src/i18n/utils.ts +14 -0
- package/src/index.ts +49 -1
- package/src/interactions/FocusableProvider.tsx +28 -11
- package/src/interactions/PressEvent.ts +16 -1
- package/src/interactions/createContextMenu.ts +108 -0
- package/src/interactions/createFocus.ts +26 -6
- package/src/interactions/createFocusRing.ts +28 -13
- package/src/interactions/createFocusWithin.ts +23 -3
- package/src/interactions/createFocusable.ts +45 -28
- package/src/interactions/createHover.ts +102 -81
- package/src/interactions/createInteractionModality.ts +135 -45
- package/src/interactions/createKeyboard.ts +85 -9
- package/src/interactions/createKeyboardShortcutHandler.ts +157 -0
- package/src/interactions/createLongPress.ts +31 -9
- package/src/interactions/createMove.ts +24 -3
- package/src/interactions/createPress.ts +85 -41
- package/src/interactions/index.ts +1 -0
- package/src/label/createField.ts +58 -63
- package/src/label/createLabel.ts +21 -4
- package/src/label/createLabels.ts +25 -1
- package/src/landmark/createLandmark.ts +27 -4
- package/src/link/createLink.ts +20 -12
- package/src/listbox/createListBox.ts +86 -310
- package/src/listbox/createOption.ts +50 -14
- package/src/live-announcer/announce.ts +21 -6
- package/src/menu/createMenu.ts +92 -5
- package/src/menu/createMenuItem.ts +40 -23
- package/src/menu/createMenuTrigger.ts +179 -51
- package/src/menu/index.ts +2 -0
- package/src/menu/intl/index.ts +130 -0
- package/src/meter/createMeter.ts +20 -5
- package/src/numberfield/createNumberField.ts +254 -14
- package/src/overlays/ariaHideOutside.ts +76 -11
- package/src/overlays/createInteractOutside.ts +74 -47
- package/src/overlays/createModal.tsx +42 -27
- package/src/overlays/createOverlay.ts +107 -66
- package/src/overlays/createOverlayTrigger.ts +21 -6
- package/src/overlays/createPreventScroll.ts +92 -62
- package/src/overlays/index.ts +2 -0
- package/src/overlays/intl/ar-AE.json +3 -0
- package/src/overlays/intl/bg-BG.json +3 -0
- package/src/overlays/intl/cs-CZ.json +3 -0
- package/src/overlays/intl/da-DK.json +3 -0
- package/src/overlays/intl/de-DE.json +3 -0
- package/src/overlays/intl/el-GR.json +3 -0
- package/src/overlays/intl/en-US.json +3 -0
- package/src/overlays/intl/es-ES.json +3 -0
- package/src/overlays/intl/et-EE.json +3 -0
- package/src/overlays/intl/fi-FI.json +3 -0
- package/src/overlays/intl/fr-FR.json +3 -0
- package/src/overlays/intl/he-IL.json +3 -0
- package/src/overlays/intl/hr-HR.json +3 -0
- package/src/overlays/intl/hu-HU.json +3 -0
- package/src/overlays/intl/index.ts +122 -0
- package/src/overlays/intl/it-IT.json +3 -0
- package/src/overlays/intl/ja-JP.json +3 -0
- package/src/overlays/intl/ko-KR.json +3 -0
- package/src/overlays/intl/lt-LT.json +3 -0
- package/src/overlays/intl/lv-LV.json +3 -0
- package/src/overlays/intl/nb-NO.json +3 -0
- package/src/overlays/intl/nl-NL.json +3 -0
- package/src/overlays/intl/pl-PL.json +3 -0
- package/src/overlays/intl/pt-BR.json +3 -0
- package/src/overlays/intl/pt-PT.json +3 -0
- package/src/overlays/intl/ro-RO.json +3 -0
- package/src/overlays/intl/ru-RU.json +3 -0
- package/src/overlays/intl/sk-SK.json +3 -0
- package/src/overlays/intl/sl-SI.json +3 -0
- package/src/overlays/intl/sr-SP.json +3 -0
- package/src/overlays/intl/sv-SE.json +3 -0
- package/src/overlays/intl/tr-TR.json +3 -0
- package/src/overlays/intl/uk-UA.json +3 -0
- package/src/overlays/intl/zh-CN.json +3 -0
- package/src/overlays/intl/zh-TW.json +3 -0
- package/src/popover/calculatePosition.ts +21 -3
- package/src/popover/createOverlayPosition.ts +149 -41
- package/src/popover/createPopover.ts +88 -23
- package/src/progress/createProgressBar.ts +19 -4
- package/src/radio/createRadio.ts +80 -25
- package/src/radio/createRadioGroup.ts +47 -13
- package/src/searchfield/createSearchField.ts +31 -2
- package/src/searchfield/intl/ar-AE.json +3 -0
- package/src/searchfield/intl/bg-BG.json +3 -0
- package/src/searchfield/intl/cs-CZ.json +3 -0
- package/src/searchfield/intl/da-DK.json +3 -0
- package/src/searchfield/intl/de-DE.json +3 -0
- package/src/searchfield/intl/el-GR.json +3 -0
- package/src/searchfield/intl/en-US.json +3 -0
- package/src/searchfield/intl/es-ES.json +3 -0
- package/src/searchfield/intl/et-EE.json +3 -0
- package/src/searchfield/intl/fi-FI.json +3 -0
- package/src/searchfield/intl/fr-FR.json +3 -0
- package/src/searchfield/intl/he-IL.json +3 -0
- package/src/searchfield/intl/hr-HR.json +3 -0
- package/src/searchfield/intl/hu-HU.json +3 -0
- package/src/searchfield/intl/index.ts +122 -0
- package/src/searchfield/intl/it-IT.json +3 -0
- package/src/searchfield/intl/ja-JP.json +3 -0
- package/src/searchfield/intl/ko-KR.json +3 -0
- package/src/searchfield/intl/lt-LT.json +3 -0
- package/src/searchfield/intl/lv-LV.json +3 -0
- package/src/searchfield/intl/nb-NO.json +3 -0
- package/src/searchfield/intl/nl-NL.json +3 -0
- package/src/searchfield/intl/pl-PL.json +3 -0
- package/src/searchfield/intl/pt-BR.json +3 -0
- package/src/searchfield/intl/pt-PT.json +3 -0
- package/src/searchfield/intl/ro-RO.json +3 -0
- package/src/searchfield/intl/ru-RU.json +3 -0
- package/src/searchfield/intl/sk-SK.json +3 -0
- package/src/searchfield/intl/sl-SI.json +3 -0
- package/src/searchfield/intl/sr-SP.json +3 -0
- package/src/searchfield/intl/sv-SE.json +3 -0
- package/src/searchfield/intl/tr-TR.json +3 -0
- package/src/searchfield/intl/uk-UA.json +3 -0
- package/src/searchfield/intl/zh-CN.json +3 -0
- package/src/searchfield/intl/zh-TW.json +3 -0
- package/src/select/createHiddenSelect.tsx +166 -69
- package/src/select/createSelect.ts +80 -34
- package/src/selection/DOMLayoutDelegate.ts +14 -0
- package/src/selection/ListKeyboardDelegate.ts +16 -1
- package/src/selection/constants.ts +14 -0
- package/src/selection/createCollectionRowInteraction.ts +75 -6
- package/src/selection/createScrollIntoViewOnFocus.ts +23 -8
- package/src/selection/createSelectableCollection.ts +352 -226
- package/src/selection/createSelectableItem.ts +51 -12
- package/src/selection/createSelectableList.ts +21 -1
- package/src/selection/createTypeSelect.ts +21 -5
- package/src/selection/selectItem.ts +14 -0
- package/src/selection/utils.ts +15 -1
- package/src/separator/createSeparator.ts +17 -1
- package/src/slider/createSlider.ts +24 -18
- package/src/spinbutton/createSpinButton.ts +16 -2
- package/src/spinbutton/index.ts +2 -10
- package/src/spinbutton/intl.ts +70 -34
- package/src/ssr/index.tsx +79 -48
- package/src/steplist/createStepList.ts +17 -2
- package/src/switch/createSwitch.ts +25 -4
- package/src/table/createTable.ts +104 -52
- package/src/table/createTableCell.ts +17 -2
- package/src/table/createTableColumnHeader.ts +21 -3
- package/src/table/createTableColumnResize.ts +19 -3
- package/src/table/createTableHeaderRow.ts +17 -2
- package/src/table/createTableRow.ts +29 -22
- package/src/table/createTableRowGroup.ts +18 -3
- package/src/table/createTableSelectAllCheckbox.ts +30 -14
- package/src/table/createTableSelectionCheckbox.ts +21 -3
- package/src/table/index.ts +2 -2
- package/src/table/intl/ar-AE.json +13 -0
- package/src/table/intl/bg-BG.json +13 -0
- package/src/table/intl/cs-CZ.json +13 -0
- package/src/table/intl/da-DK.json +13 -0
- package/src/table/intl/de-DE.json +13 -0
- package/src/table/intl/el-GR.json +13 -0
- package/src/table/intl/en-US.json +13 -0
- package/src/table/intl/es-ES.json +13 -0
- package/src/table/intl/et-EE.json +13 -0
- package/src/table/intl/fi-FI.json +13 -0
- package/src/table/intl/fr-FR.json +13 -0
- package/src/table/intl/he-IL.json +13 -0
- package/src/table/intl/hr-HR.json +13 -0
- package/src/table/intl/hu-HU.json +13 -0
- package/src/table/intl/index.ts +132 -0
- package/src/table/intl/it-IT.json +13 -0
- package/src/table/intl/ja-JP.json +13 -0
- package/src/table/intl/ko-KR.json +13 -0
- package/src/table/intl/lt-LT.json +13 -0
- package/src/table/intl/lv-LV.json +13 -0
- package/src/table/intl/nb-NO.json +13 -0
- package/src/table/intl/nl-NL.json +13 -0
- package/src/table/intl/pl-PL.json +13 -0
- package/src/table/intl/pt-BR.json +13 -0
- package/src/table/intl/pt-PT.json +13 -0
- package/src/table/intl/ro-RO.json +13 -0
- package/src/table/intl/ru-RU.json +13 -0
- package/src/table/intl/sk-SK.json +13 -0
- package/src/table/intl/sl-SI.json +13 -0
- package/src/table/intl/sr-SP.json +13 -0
- package/src/table/intl/sv-SE.json +13 -0
- package/src/table/intl/tr-TR.json +13 -0
- package/src/table/intl/uk-UA.json +13 -0
- package/src/table/intl/zh-CN.json +13 -0
- package/src/table/intl/zh-TW.json +13 -0
- package/src/table/types.ts +44 -2
- package/src/table/utils.ts +15 -6
- package/src/tabs/createTabs.ts +104 -37
- package/src/tag/createTag.ts +118 -37
- package/src/tag/createTagGroup.ts +20 -12
- package/src/tag/intl/ar-AE.json +4 -0
- package/src/tag/intl/bg-BG.json +4 -0
- package/src/tag/intl/cs-CZ.json +4 -0
- package/src/tag/intl/da-DK.json +4 -0
- package/src/tag/intl/de-DE.json +4 -0
- package/src/tag/intl/el-GR.json +4 -0
- package/src/tag/intl/en-US.json +4 -0
- package/src/tag/intl/es-ES.json +4 -0
- package/src/tag/intl/et-EE.json +4 -0
- package/src/tag/intl/fi-FI.json +4 -0
- package/src/tag/intl/fr-FR.json +4 -0
- package/src/tag/intl/he-IL.json +4 -0
- package/src/tag/intl/hr-HR.json +4 -0
- package/src/tag/intl/hu-HU.json +4 -0
- package/src/tag/intl/index.ts +123 -0
- package/src/tag/intl/it-IT.json +4 -0
- package/src/tag/intl/ja-JP.json +4 -0
- package/src/tag/intl/ko-KR.json +4 -0
- package/src/tag/intl/lt-LT.json +4 -0
- package/src/tag/intl/lv-LV.json +4 -0
- package/src/tag/intl/nb-NO.json +4 -0
- package/src/tag/intl/nl-NL.json +4 -0
- package/src/tag/intl/pl-PL.json +4 -0
- package/src/tag/intl/pt-BR.json +4 -0
- package/src/tag/intl/pt-PT.json +4 -0
- package/src/tag/intl/ro-RO.json +4 -0
- package/src/tag/intl/ru-RU.json +4 -0
- package/src/tag/intl/sk-SK.json +4 -0
- package/src/tag/intl/sl-SI.json +4 -0
- package/src/tag/intl/sr-SP.json +4 -0
- package/src/tag/intl/sv-SE.json +4 -0
- package/src/tag/intl/tr-TR.json +4 -0
- package/src/tag/intl/uk-UA.json +4 -0
- package/src/tag/intl/zh-CN.json +4 -0
- package/src/tag/intl/zh-TW.json +4 -0
- package/src/textfield/createTextField.ts +104 -14
- package/src/toast/createToast.ts +39 -6
- package/src/toast/createToastRegion.ts +28 -15
- package/src/toast/intl/ar-AE.json +4 -0
- package/src/toast/intl/bg-BG.json +4 -0
- package/src/toast/intl/cs-CZ.json +4 -0
- package/src/toast/intl/da-DK.json +4 -0
- package/src/toast/intl/de-DE.json +4 -0
- package/src/toast/intl/el-GR.json +4 -0
- package/src/toast/intl/en-US.json +4 -0
- package/src/toast/intl/es-ES.json +4 -0
- package/src/toast/intl/et-EE.json +4 -0
- package/src/toast/intl/fi-FI.json +4 -0
- package/src/toast/intl/fr-FR.json +4 -0
- package/src/toast/intl/he-IL.json +4 -0
- package/src/toast/intl/hr-HR.json +4 -0
- package/src/toast/intl/hu-HU.json +4 -0
- package/src/toast/intl/index.ts +123 -0
- package/src/toast/intl/it-IT.json +4 -0
- package/src/toast/intl/ja-JP.json +4 -0
- package/src/toast/intl/ko-KR.json +4 -0
- package/src/toast/intl/lt-LT.json +4 -0
- package/src/toast/intl/lv-LV.json +4 -0
- package/src/toast/intl/nb-NO.json +4 -0
- package/src/toast/intl/nl-NL.json +4 -0
- package/src/toast/intl/pl-PL.json +4 -0
- package/src/toast/intl/pt-BR.json +4 -0
- package/src/toast/intl/pt-PT.json +4 -0
- package/src/toast/intl/ro-RO.json +4 -0
- package/src/toast/intl/ru-RU.json +4 -0
- package/src/toast/intl/sk-SK.json +4 -0
- package/src/toast/intl/sl-SI.json +4 -0
- package/src/toast/intl/sr-SP.json +4 -0
- package/src/toast/intl/sv-SE.json +4 -0
- package/src/toast/intl/tr-TR.json +4 -0
- package/src/toast/intl/uk-UA.json +4 -0
- package/src/toast/intl/zh-CN.json +4 -0
- package/src/toast/intl/zh-TW.json +4 -0
- package/src/toggle/createToggle.ts +96 -15
- package/src/tokenfield/createToken.ts +82 -0
- package/src/tokenfield/createTokenField.ts +859 -0
- package/src/tokenfield/index.ts +10 -0
- package/src/toolbar/createToolbar.ts +26 -5
- package/src/tooltip/createPreviewTrigger.ts +301 -0
- package/src/tooltip/createSafeArea.ts +165 -0
- package/src/tooltip/createTooltip.ts +15 -1
- package/src/tooltip/createTooltipTrigger.ts +24 -3
- package/src/tooltip/index.ts +7 -0
- package/src/tooltip/intl/index.ts +76 -0
- package/src/tree/createTree.ts +66 -50
- package/src/tree/createTreeItem.ts +85 -21
- package/src/tree/createTreeSelectionCheckbox.ts +29 -28
- package/src/tree/intl/ar-AE.json +4 -0
- package/src/tree/intl/bg-BG.json +4 -0
- package/src/tree/intl/cs-CZ.json +4 -0
- package/src/tree/intl/da-DK.json +4 -0
- package/src/tree/intl/de-DE.json +4 -0
- package/src/tree/intl/el-GR.json +4 -0
- package/src/tree/intl/en-US.json +4 -0
- package/src/tree/intl/es-ES.json +4 -0
- package/src/tree/intl/et-EE.json +4 -0
- package/src/tree/intl/fi-FI.json +4 -0
- package/src/tree/intl/fr-FR.json +4 -0
- package/src/tree/intl/he-IL.json +4 -0
- package/src/tree/intl/hr-HR.json +4 -0
- package/src/tree/intl/hu-HU.json +4 -0
- package/src/tree/intl/index.ts +123 -0
- package/src/tree/intl/it-IT.json +4 -0
- package/src/tree/intl/ja-JP.json +4 -0
- package/src/tree/intl/ko-KR.json +4 -0
- package/src/tree/intl/lt-LT.json +4 -0
- package/src/tree/intl/lv-LV.json +4 -0
- package/src/tree/intl/nb-NO.json +4 -0
- package/src/tree/intl/nl-NL.json +4 -0
- package/src/tree/intl/pl-PL.json +4 -0
- package/src/tree/intl/pt-BR.json +4 -0
- package/src/tree/intl/pt-PT.json +4 -0
- package/src/tree/intl/ro-RO.json +4 -0
- package/src/tree/intl/ru-RU.json +4 -0
- package/src/tree/intl/sk-SK.json +4 -0
- package/src/tree/intl/sl-SI.json +4 -0
- package/src/tree/intl/sr-SP.json +4 -0
- package/src/tree/intl/sv-SE.json +4 -0
- package/src/tree/intl/tr-TR.json +4 -0
- package/src/tree/intl/uk-UA.json +4 -0
- package/src/tree/intl/zh-CN.json +4 -0
- package/src/tree/intl/zh-TW.json +4 -0
- package/src/tree/types.ts +35 -2
- package/src/utils/ShadowTreeWalker.ts +249 -0
- package/src/utils/animation.ts +106 -85
- package/src/utils/capture.ts +51 -0
- package/src/utils/createDescription.ts +31 -8
- package/src/utils/dom.ts +314 -33
- package/src/utils/domAttrs.ts +84 -0
- package/src/utils/env.ts +2 -0
- package/src/utils/events.ts +39 -3
- package/src/utils/filterDOMProps.ts +34 -2
- package/src/utils/focus.ts +186 -32
- package/src/utils/geometry.ts +15 -1
- package/src/utils/getMetaValue.ts +57 -0
- package/src/utils/getNonce.ts +40 -0
- package/src/utils/globalListeners.ts +16 -3
- package/src/utils/index.ts +14 -0
- package/src/utils/keyboard.ts +15 -1
- package/src/utils/mergeProps.ts +149 -16
- package/src/utils/owner.ts +26 -0
- package/src/utils/platform.ts +15 -1
- package/src/utils/reactivity.ts +2 -0
- package/src/utils/refs.ts +53 -0
- package/src/utils/runAfterTransition.ts +117 -0
- package/src/utils/scrollIntoView.ts +14 -0
- package/src/utils/splitProps.ts +70 -0
- package/src/utils/textSelection.ts +15 -1
- package/src/virtualizer/ScrollView.ts +210 -0
- package/src/virtualizer/index.ts +2 -0
- package/src/virtualizer/utils.ts +100 -0
- package/src/visually-hidden/createVisuallyHidden.ts +20 -4
- package/dist/_chunk/createInteractionModality.js +0 -268
- package/dist/_chunk/createInteractionModality.js.map +0 -1
- package/dist/_chunk/createInteractionModality.jsx +0 -268
- package/dist/_chunk/createInteractionModality.jsx.map +0 -1
- package/dist/_chunk/focus2.js +0 -631
- package/dist/_chunk/focus2.js.map +0 -1
- package/dist/_chunk/focus2.jsx +0 -631
- package/dist/_chunk/focus2.jsx.map +0 -1
- package/dist/_chunk/visually-hidden.js.map +0 -1
- package/dist/_chunk/visually-hidden.jsx.map +0 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +0 -71
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +0 -1
- package/dist/radio/createRadioGroupState.d.ts +0 -77
- package/dist/radio/createRadioGroupState.d.ts.map +0 -1
- package/dist/toggle/createToggleState.d.ts +0 -34
- package/dist/toggle/createToggleState.d.ts.map +0 -1
- package/src/checkbox/createCheckboxGroupState.ts +0 -174
- package/src/radio/createRadioGroupState.ts +0 -177
- package/src/toggle/createToggleState.ts +0 -86
|
@@ -1,10 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/usePress.ts
|
|
13
|
+
import { h as isPointOverTarget, l as disableTextSelection, m as getTouchFromEvent, p as getTouchById, s as createGlobalListeners, u as restoreTextSelection } from "./utils.jsx";
|
|
14
|
+
import { t as onOwnedCleanup } from "./owner.jsx";
|
|
15
|
+
import { E as preventFocus, H as isVirtualPointerEvent, T as focusWithoutScrolling, U as setEventTarget, V as isVirtualClick, Z as isMac, _ as isValidKeyboardEvent, p as isHTMLAnchorLink, r as getEventTarget, v as nodeContains, x as shouldPreventDefaultKeyboard, y as openLink } from "./dom.jsx";
|
|
16
|
+
import { createSignal } from "solid-js";
|
|
4
17
|
//#region src/interactions/PressEvent.ts
|
|
5
18
|
/**
|
|
6
19
|
* PressEvent class that provides all press event data.
|
|
7
|
-
*
|
|
20
|
+
* Ported from packages/react-aria/src/interactions/usePress.ts.
|
|
21
|
+
* createPressEvent is a local adapter around the ported PressEvent class.
|
|
8
22
|
*/
|
|
9
23
|
var PressEvent = class {
|
|
10
24
|
type;
|
|
@@ -84,7 +98,7 @@ function eventPathContains(parent, event) {
|
|
|
84
98
|
if (typeof event.composedPath === "function") return event.composedPath().includes(parent);
|
|
85
99
|
return false;
|
|
86
100
|
}
|
|
87
|
-
const
|
|
101
|
+
const LINK_CLICKED = Symbol("linkClicked");
|
|
88
102
|
let pressableCSSInjected = false;
|
|
89
103
|
function injectPressableCSS() {
|
|
90
104
|
if (pressableCSSInjected || typeof document === "undefined") return;
|
|
@@ -105,7 +119,7 @@ function injectPressableCSS() {
|
|
|
105
119
|
* Based on react-aria's usePress but adapted for SolidJS.
|
|
106
120
|
*/
|
|
107
121
|
function createPress(props = {}) {
|
|
108
|
-
const [internalIsPressed, setInternalIsPressed] = createSignal(false);
|
|
122
|
+
const [internalIsPressed, setInternalIsPressed] = createSignal(false, { ownedWrite: true });
|
|
109
123
|
const isPressed = () => {
|
|
110
124
|
const controlledPressed = isPressedValue(props.isPressed);
|
|
111
125
|
if (controlledPressed) return controlledPressed;
|
|
@@ -114,7 +128,6 @@ function createPress(props = {}) {
|
|
|
114
128
|
let pressState = {
|
|
115
129
|
isPressed: false,
|
|
116
130
|
ignoreEmulatedMouseEvents: false,
|
|
117
|
-
ignoreClickAfterPress: false,
|
|
118
131
|
didFirePressStart: false,
|
|
119
132
|
isTriggeringEvent: false,
|
|
120
133
|
activePointerId: null,
|
|
@@ -209,16 +222,18 @@ function createPress(props = {}) {
|
|
|
209
222
|
return;
|
|
210
223
|
}
|
|
211
224
|
pressState.pointerType = e.pointerType;
|
|
225
|
+
let shouldStopPropagation = true;
|
|
212
226
|
if (!pressState.isPressed) {
|
|
213
227
|
pressState.isPressed = true;
|
|
214
228
|
pressState.isOverTarget = true;
|
|
215
229
|
pressState.activePointerId = e.pointerId;
|
|
216
230
|
pressState.target = e.currentTarget;
|
|
217
231
|
if (!props.allowTextSelectionOnPress) disableTextSelection(pressState.target);
|
|
218
|
-
|
|
232
|
+
shouldStopPropagation = triggerPressStart(e, pressState.pointerType);
|
|
219
233
|
addGlobalListener("pointerup", onPointerUp);
|
|
220
234
|
addGlobalListener("pointercancel", onPointerCancel);
|
|
221
235
|
}
|
|
236
|
+
if (shouldStopPropagation) e.stopPropagation();
|
|
222
237
|
};
|
|
223
238
|
const onMouseDownPointer = (e) => {
|
|
224
239
|
if (!eventPathContains(e.currentTarget, e)) return;
|
|
@@ -237,10 +252,12 @@ function createPress(props = {}) {
|
|
|
237
252
|
let clickFired = false;
|
|
238
253
|
const timeout = setTimeout(() => {
|
|
239
254
|
if (typeof HTMLElement === "undefined") return;
|
|
240
|
-
if (pressState.isPressed && pressState.target instanceof HTMLElement)
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
255
|
+
if (pressState.isPressed && pressState.target instanceof HTMLElement) {
|
|
256
|
+
if (clickFired) cancel(e);
|
|
257
|
+
else {
|
|
258
|
+
focusWithoutScrolling(pressState.target);
|
|
259
|
+
pressState.target.click();
|
|
260
|
+
}
|
|
244
261
|
}
|
|
245
262
|
}, 80);
|
|
246
263
|
const doc = pressState.target.ownerDocument ?? document;
|
|
@@ -403,7 +420,6 @@ function createPress(props = {}) {
|
|
|
403
420
|
pressState.metaKeyEvents = pressState.metaKeyEvents || /* @__PURE__ */ new Map();
|
|
404
421
|
pressState.metaKeyEvents.set(e.key, e);
|
|
405
422
|
}
|
|
406
|
-
if (e.key === "Enter") pressState.ignoreClickAfterPress = true;
|
|
407
423
|
addGlobalListener("keyup", onKeyUp, { capture: true });
|
|
408
424
|
};
|
|
409
425
|
const onKeyUp = (e) => {
|
|
@@ -420,7 +436,8 @@ function createPress(props = {}) {
|
|
|
420
436
|
return;
|
|
421
437
|
}
|
|
422
438
|
const target = pressState.target;
|
|
423
|
-
const
|
|
439
|
+
const eventTarget = getEventTarget(e);
|
|
440
|
+
const wasPressed = nodeContains(target, eventTarget);
|
|
424
441
|
const shouldStopPropagation = wasPressed ? triggerPressUp(e, "keyboard") : true;
|
|
425
442
|
const shouldStopPropagationEnd = triggerPressEnd(e, "keyboard", wasPressed);
|
|
426
443
|
pressState.isPressed = false;
|
|
@@ -428,28 +445,21 @@ function createPress(props = {}) {
|
|
|
428
445
|
removeAllGlobalListeners();
|
|
429
446
|
if (shouldPreventDefaultKeyboard(getEventTarget(e), e.key)) e.preventDefault();
|
|
430
447
|
if (wasPressed && target instanceof HTMLElement) triggerSyntheticClick(e, target);
|
|
431
|
-
if (e.key !== "Enter" && isHTMLAnchorLink(target) && wasPressed && !
|
|
432
|
-
|
|
433
|
-
openLink(target, e);
|
|
434
|
-
setTimeout(() => {
|
|
435
|
-
linkClickedSet.delete(target);
|
|
436
|
-
}, 0);
|
|
448
|
+
if (e.key !== "Enter" && isHTMLAnchorLink(target) && wasPressed && !e[LINK_CLICKED]) {
|
|
449
|
+
e[LINK_CLICKED] = true;
|
|
450
|
+
openLink(target, e, false);
|
|
437
451
|
}
|
|
438
|
-
if (e.key === " " && wasPressed && shouldPreventDefaultKeyboard(target, e.key)) pressState.ignoreClickAfterPress = true;
|
|
439
|
-
else if (e.key === "Enter") pressState.ignoreClickAfterPress = false;
|
|
440
452
|
if (shouldStopPropagation && shouldStopPropagationEnd) e.stopPropagation();
|
|
441
453
|
};
|
|
442
454
|
const onClick = (e) => {
|
|
443
455
|
if (!eventPathContains(e.currentTarget, e)) return;
|
|
444
|
-
if (e.button === 0 && !pressState.isTriggeringEvent) {
|
|
445
|
-
if (pressState.ignoreClickAfterPress) {
|
|
446
|
-
pressState.ignoreClickAfterPress = false;
|
|
447
|
-
return;
|
|
448
|
-
}
|
|
456
|
+
if (e.button === 0 && !pressState.isTriggeringEvent && !openLink.isOpening) {
|
|
449
457
|
if (isDisabledValue(props.isDisabled)) {
|
|
450
458
|
e.preventDefault();
|
|
451
459
|
return;
|
|
452
460
|
}
|
|
461
|
+
const closestInteractive = e.currentTarget instanceof Element && (e.currentTarget.hasAttribute("data-collection") || e.currentTarget.matches("[role=\"row\"], [role=\"gridcell\"], [role=\"treeitem\"]") || e.currentTarget.closest("[data-collection]") != null) && e.target instanceof Element ? e.target.closest("button, input, select, textarea, a[href], [data-solidaria-pressable], [role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]") : null;
|
|
462
|
+
if (closestInteractive != null && closestInteractive !== e.currentTarget && e.currentTarget.contains(closestInteractive)) return;
|
|
453
463
|
let shouldStopPropagation = true;
|
|
454
464
|
if (!pressState.ignoreEmulatedMouseEvents && !pressState.isPressed && (pressState.pointerType === "virtual" || isVirtualClick(e))) {
|
|
455
465
|
pressState.target = e.currentTarget;
|
|
@@ -504,7 +514,7 @@ function createPress(props = {}) {
|
|
|
504
514
|
onTouchCancel,
|
|
505
515
|
"data-solidaria-pressable": ""
|
|
506
516
|
};
|
|
507
|
-
|
|
517
|
+
onOwnedCleanup(() => {
|
|
508
518
|
removeAllGlobalListeners();
|
|
509
519
|
if (pressState.clickCleanup) {
|
|
510
520
|
pressState.clickCleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPress.jsx","names":["#shouldStopPropagation"],"sources":["../../src/interactions/PressEvent.ts","../../src/interactions/createPress.ts"],"sourcesContent":["/**\n * PressEvent class that matches React-Aria's PressEvent interface.\n * Wraps native events with press-specific data.\n */\n\nexport type PointerType = \"mouse\" | \"pen\" | \"touch\" | \"keyboard\" | \"virtual\";\nexport type PressEventType = \"pressstart\" | \"pressend\" | \"pressup\" | \"press\";\n\n/**\n * Minimal event data needed to create a PressEvent.\n * Allows both native Event objects and synthetic event-like objects.\n */\nexport interface PressEventSource {\n currentTarget?: EventTarget | null;\n shiftKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n altKey?: boolean;\n clientX?: number;\n clientY?: number;\n /**\n * The key that triggered the event, present on keyboard interactions\n * (the native `KeyboardEvent` is passed through unchanged).\n */\n key?: string;\n}\n\nexport interface IPressEvent {\n /** The type of press event being fired. */\n type: PressEventType;\n /** The pointer type that triggered the press event. */\n pointerType: PointerType;\n /** The target element of the press event. */\n target: Element;\n /** Whether the shift keyboard modifier was held during the press event. */\n shiftKey: boolean;\n /** Whether the ctrl keyboard modifier was held during the press event. */\n ctrlKey: boolean;\n /** Whether the meta keyboard modifier was held during the press event. */\n metaKey: boolean;\n /** Whether the alt keyboard modifier was held during the press event. */\n altKey: boolean;\n /** X position of the press relative to the target element. */\n x: number;\n /** Y position of the press relative to the target element. */\n y: number;\n /**\n * The key that triggered the press event, if it was triggered by a keyboard\n * interaction. Useful for differentiating between Space and Enter key presses.\n */\n key?: string;\n /**\n * By default, press events stop propagation to parent elements.\n * Call continuePropagation() to allow the event to bubble up.\n */\n continuePropagation(): void;\n}\n\n/**\n * PressEvent class that provides all press event data.\n * Based on React-Aria's PressEvent implementation.\n */\nexport class PressEvent implements IPressEvent {\n type: PressEventType;\n pointerType: PointerType;\n target: Element;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n x: number;\n y: number;\n key?: string;\n\n #shouldStopPropagation = true;\n\n constructor(\n type: PressEventType,\n pointerType: PointerType,\n originalEvent: PressEventSource | null,\n target: Element | null,\n ) {\n this.type = type;\n this.pointerType = pointerType;\n const eventTarget = target ?? (originalEvent?.currentTarget as Element | undefined);\n this.target = eventTarget as Element;\n\n // Extract modifier keys from the original event\n this.shiftKey = originalEvent?.shiftKey ?? false;\n this.ctrlKey = originalEvent?.ctrlKey ?? false;\n this.metaKey = originalEvent?.metaKey ?? false;\n this.altKey = originalEvent?.altKey ?? false;\n // Present only for keyboard interactions (the native KeyboardEvent carries\n // `key`); pointer events leave this undefined, matching upstream.\n this.key = originalEvent?.key;\n\n // Calculate position relative to target\n this.x = 0;\n this.y = 0;\n\n if (originalEvent && originalEvent.clientX !== undefined && eventTarget) {\n const rect = eventTarget.getBoundingClientRect();\n this.x = originalEvent.clientX - rect.left;\n this.y = (originalEvent.clientY ?? 0) - rect.top;\n } else if (eventTarget) {\n // For keyboard events, use center of element\n const rect = eventTarget.getBoundingClientRect();\n this.x = rect.width / 2;\n this.y = rect.height / 2;\n }\n }\n\n /**\n * Call this to allow the press event to propagate to parent elements.\n * By default, press events stop propagation.\n */\n continuePropagation(): void {\n this.#shouldStopPropagation = false;\n }\n\n /**\n * Whether the event should stop propagation.\n * Used internally by the press handler.\n */\n get shouldStopPropagation(): boolean {\n return this.#shouldStopPropagation;\n }\n}\n\n/**\n * Creates a PressEvent from a native event or event-like source.\n */\nexport function createPressEvent(\n type: PressEventType,\n pointerType: PointerType,\n originalEvent: PressEventSource | null,\n target: Element | null,\n): PressEvent {\n return new PressEvent(type, pointerType, originalEvent, target);\n}\n","/**\n * createPress - Handles press interactions across mouse, touch, keyboard, and virtual clicks.\n *\n * This is a 1-1 port of React-Aria's usePress hook adapted for SolidJS.\n * All behaviors, edge cases, and platform-specific handling are preserved.\n */\n\nimport { createSignal, JSX, Accessor, onCleanup } from \"solid-js\";\nimport { PressEvent, PointerType, createPressEvent, type PressEventSource } from \"./PressEvent\";\nimport {\n nodeContains,\n getEventTarget,\n isValidKeyboardEvent,\n isHTMLAnchorLink,\n shouldPreventDefaultKeyboard,\n isVirtualClick,\n isVirtualPointerEvent,\n isPointOverTarget,\n getTouchFromEvent,\n getTouchById,\n disableTextSelection,\n restoreTextSelection,\n preventFocus,\n openLink,\n isMac,\n createGlobalListeners,\n setEventTarget,\n focusWithoutScrolling,\n} from \"../utils\";\n\nexport { PressEvent, type PointerType } from \"./PressEvent\";\nexport type { IPressEvent, PressEventType } from \"./PressEvent\";\n\nexport interface CreatePressProps {\n /** Whether the target is currently disabled. */\n isDisabled?: Accessor<boolean> | boolean;\n /** Handler called when the press is released over the target. */\n onPress?: (e: PressEvent) => void;\n /** Handler called when a press interaction starts. */\n onPressStart?: (e: PressEvent) => void;\n /**\n * Handler called when a press interaction ends, either\n * over the target or when the pointer leaves the target.\n */\n onPressEnd?: (e: PressEvent) => void;\n /** Handler called when a press is released over the target, regardless of whether it started on the target. */\n onPressUp?: (e: PressEvent) => void;\n /** Handler called when the press state changes. */\n onPressChange?: (isPressed: boolean) => void;\n /**\n * Handler called on native click event.\n * Some third-party libraries pass onClick instead of onPress.\n * This matches the browser's native activation behavior for certain elements.\n */\n onClick?: (e: MouseEvent) => void;\n /** Whether the press should be visual only, not triggering onPress. */\n isPressed?: Accessor<boolean> | boolean;\n /** Whether to prevent focus when pressing. */\n preventFocusOnPress?: boolean;\n /** Whether long press should cancel when pointer moves out of target. */\n shouldCancelOnPointerExit?: boolean;\n /** Whether text selection should be allowed during press. */\n allowTextSelectionOnPress?: boolean;\n}\n\nexport interface PressResult {\n /** Whether the target is currently pressed. */\n isPressed: Accessor<boolean>;\n /** Props to spread on the target element. */\n pressProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\nfunction isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): boolean {\n if (typeof isDisabled === \"function\") {\n return isDisabled();\n }\n return isDisabled ?? false;\n}\n\nfunction isPressedValue(isPressed: Accessor<boolean> | boolean | undefined): boolean {\n if (typeof isPressed === \"function\") {\n return isPressed();\n }\n return isPressed ?? false;\n}\n\nfunction eventPathContains(parent: EventTarget | null | undefined, event: Event): boolean {\n if (!parent) {\n return false;\n }\n\n const target = getEventTarget(event);\n if (\n typeof Node !== \"undefined\" &&\n parent instanceof Node &&\n target instanceof Node &&\n nodeContains(parent, target)\n ) {\n return true;\n }\n\n if (typeof event.composedPath === \"function\") {\n return event.composedPath().includes(parent);\n }\n\n return false;\n}\n\n// Track which links have been programmatically clicked to avoid double activation\nconst linkClickedSet = new WeakSet<HTMLElement>();\n\n// CSS for preventing double-tap zoom delay\nlet pressableCSSInjected = false;\nfunction injectPressableCSS(): void {\n if (pressableCSSInjected || typeof document === \"undefined\") return;\n\n const style = document.createElement(\"style\");\n style.id = \"solidaria-pressable-style\";\n style.textContent = `\n [data-solidaria-pressable] {\n touch-action: pan-x pan-y pinch-zoom;\n }\n `;\n document.head.appendChild(style);\n pressableCSSInjected = true;\n}\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * Provides consistent press behavior regardless of input method.\n *\n * Based on react-aria's usePress but adapted for SolidJS.\n */\nexport function createPress(props: CreatePressProps = {}): PressResult {\n // Internal pressed state (for visual feedback)\n const [internalIsPressed, setInternalIsPressed] = createSignal(false);\n\n // Use controlled isPressed if provided, otherwise internal state\n const isPressed = (): boolean => {\n const controlledPressed = isPressedValue(props.isPressed);\n if (controlledPressed) {\n return controlledPressed;\n }\n return internalIsPressed();\n };\n\n // State tracking (using plain variables - SolidJS doesn't need refs for mutable state)\n let pressState = {\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n ignoreClickAfterPress: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null as number | null,\n target: null as Element | null,\n isOverTarget: false,\n pointerType: null as PointerType | null,\n userSelect: undefined as string | undefined,\n metaKeyEvents: null as Map<string, KeyboardEvent> | null,\n clickCleanup: null as (() => void) | null,\n focusCleanup: null as (() => void) | null,\n };\n\n // Global listeners manager\n const { addGlobalListener, removeAllGlobalListeners } = createGlobalListeners();\n\n // Inject CSS on first use\n injectPressableCSS();\n\n // --- Event Triggers ---\n\n const triggerPressStart = (\n originalEvent: PressEventSource,\n pointerType: PointerType,\n ): boolean => {\n if (isDisabledValue(props.isDisabled) || pressState.didFirePressStart) {\n return false;\n }\n\n let shouldStopPropagation = true;\n pressState.isTriggeringEvent = true;\n\n if (props.onPressStart) {\n const event = createPressEvent(\"pressstart\", pointerType, originalEvent, pressState.target!);\n props.onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (props.onPressChange) {\n props.onPressChange(true);\n }\n\n pressState.isTriggeringEvent = false;\n pressState.didFirePressStart = true;\n setInternalIsPressed(true);\n\n return shouldStopPropagation;\n };\n\n const triggerPressEnd = (\n originalEvent: PressEventSource,\n pointerType: PointerType,\n wasPressed = true,\n ): boolean => {\n if (!pressState.didFirePressStart) {\n return false;\n }\n\n pressState.didFirePressStart = false;\n pressState.isTriggeringEvent = true;\n\n let shouldStopPropagation = true;\n if (props.onPressEnd) {\n const event = createPressEvent(\"pressend\", pointerType, originalEvent, pressState.target!);\n props.onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (props.onPressChange) {\n props.onPressChange(false);\n }\n\n setInternalIsPressed(false);\n\n if (wasPressed && !isDisabledValue(props.isDisabled)) {\n if (props.onPress) {\n const event = createPressEvent(\"press\", pointerType, originalEvent, pressState.target!);\n props.onPress(event);\n shouldStopPropagation = shouldStopPropagation && event.shouldStopPropagation;\n }\n }\n\n pressState.isTriggeringEvent = false;\n\n return shouldStopPropagation;\n };\n\n const triggerPressUp = (originalEvent: PressEventSource, pointerType: PointerType): boolean => {\n if (isDisabledValue(props.isDisabled)) {\n return false;\n }\n\n if (props.onPressUp) {\n pressState.isTriggeringEvent = true;\n const event = createPressEvent(\"pressup\", pointerType, originalEvent, pressState.target!);\n props.onPressUp(event);\n pressState.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n\n return true;\n };\n\n const triggerSyntheticClick = (\n originalEvent: KeyboardEvent | TouchEvent,\n target: HTMLElement,\n ): void => {\n if (isDisabledValue(props.isDisabled)) {\n return;\n }\n\n if (props.onClick) {\n const event = new MouseEvent(\"click\", originalEvent as MouseEventInit);\n setEventTarget(event, target);\n props.onClick(event);\n }\n };\n\n const cancel = (originalEvent: PressEventSource): void => {\n if (!pressState.isPressed) {\n return;\n }\n\n if (pressState.target && pressState.didFirePressStart && pressState.pointerType != null) {\n triggerPressEnd(originalEvent, pressState.pointerType, false);\n }\n\n pressState.isPressed = false;\n pressState.isOverTarget = false;\n pressState.activePointerId = null;\n pressState.pointerType = null;\n\n removeAllGlobalListeners();\n\n // Clean up click timeout/listener if set\n if (pressState.clickCleanup) {\n pressState.clickCleanup();\n pressState.clickCleanup = null;\n }\n\n if (pressState.focusCleanup) {\n pressState.focusCleanup();\n pressState.focusCleanup = null;\n }\n\n if (!props.allowTextSelectionOnPress) {\n restoreTextSelection(pressState.target as HTMLElement);\n }\n };\n\n // --- Pointer Event Handlers (used when PointerEvent is available) ---\n\n const onPointerDown: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n // Only handle left clicks, and ignore events that bubbled through portals\n const button = e.button ?? 0;\n if (button !== 0 || !eventPathContains(e.currentTarget, e)) {\n return;\n }\n\n // iOS VoiceOver bug: fires pointer events with incorrect coordinates\n // Let the click handler deal with it instead\n if (isVirtualPointerEvent(e)) {\n pressState.pointerType = \"virtual\";\n return;\n }\n\n pressState.pointerType = e.pointerType as PointerType;\n\n if (!pressState.isPressed) {\n pressState.isPressed = true;\n pressState.isOverTarget = true;\n pressState.activePointerId = e.pointerId;\n pressState.target = e.currentTarget;\n\n if (!props.allowTextSelectionOnPress) {\n disableTextSelection(pressState.target as HTMLElement);\n }\n\n const shouldStopPropagation = triggerPressStart(e, pressState.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n // Set up global listeners for pointer events\n addGlobalListener(\"pointerup\", onPointerUp);\n addGlobalListener(\"pointercancel\", onPointerCancel);\n }\n };\n\n // Mouse down handler when using pointer events - only prevents focus, doesn't trigger press\n const onMouseDownPointer: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n if (!eventPathContains(e.currentTarget, e)) {\n return;\n }\n\n if (e.button === 0) {\n if (props.preventFocusOnPress) {\n pressState.focusCleanup?.();\n pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;\n }\n e.stopPropagation();\n }\n };\n\n const onPointerUp = (e: PointerEvent): void => {\n // Only handle events for our active pointer\n const button = e.button ?? 0;\n if (\n e.pointerId !== pressState.activePointerId ||\n !pressState.isPressed ||\n button !== 0 ||\n !pressState.target\n ) {\n return;\n }\n\n const isOverTarget = eventPathContains(pressState.target, e);\n if (isOverTarget && pressState.pointerType != null && pressState.pointerType !== \"virtual\") {\n // Pointer released over target - wait for onClick to complete the press sequence.\n // This matches React-Aria's behavior for compatibility with DOM mutations and third-party libraries.\n // https://github.com/adobe/react-spectrum/issues/1513\n // https://issues.chromium.org/issues/40732224\n //\n // However, if stopPropagation is called on the click event (e.g., by a child input element),\n // the onClick handler on this element won't fire. We work around this by triggering a click\n // ourselves after a timeout. This timeout is canceled during the click event in case the\n // real one fires first. The timeout must be at least 32ms, because Safari on iOS delays the\n // click event on non-form elements without certain ARIA roles (for hover emulation).\n // https://github.com/WebKit/WebKit/blob/dccfae42bb29bd4bdef052e469f604a9387241c0/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L875-L892\n let clickFired = false;\n const timeout = setTimeout(() => {\n // Guard for SSR/test environments where the element may no longer exist\n if (typeof HTMLElement === \"undefined\") {\n return;\n }\n if (pressState.isPressed && pressState.target instanceof HTMLElement) {\n if (clickFired) {\n // Click already happened, just cancel the press state\n cancel(e);\n } else {\n // Click didn't happen (probably due to stopPropagation), trigger it manually\n focusWithoutScrolling(pressState.target);\n pressState.target.click();\n }\n }\n }, 80);\n\n // Use a capturing listener to track if a click occurred.\n // If stopPropagation is called it may never reach our handler.\n const doc = pressState.target.ownerDocument ?? document;\n const clickListener = () => {\n clickFired = true;\n };\n doc.addEventListener(\"click\", clickListener, true);\n\n // Store cleanup function\n pressState.clickCleanup = () => {\n clearTimeout(timeout);\n doc.removeEventListener(\"click\", clickListener, true);\n };\n\n pressState.isOverTarget = false;\n } else {\n // Pointer released outside target, or virtual - cancel the press\n cancel(e);\n }\n };\n\n const onPointerCancel = (e: PointerEvent): void => {\n if (e.pointerId === pressState.activePointerId) {\n cancel(e);\n }\n };\n\n const onPointerUpTarget: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n if (!eventPathContains(e.currentTarget, e) || pressState.pointerType === \"virtual\") {\n return;\n }\n\n if (e.button === 0 && !pressState.isPressed) {\n triggerPressUp(e, (pressState.pointerType || e.pointerType || \"mouse\") as PointerType);\n }\n };\n\n const onPointerEnter: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n if (\n e.pointerId === pressState.activePointerId &&\n pressState.target &&\n !pressState.isOverTarget &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = true;\n triggerPressStart(e, pressState.pointerType);\n }\n };\n\n const onPointerLeave: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n if (\n e.pointerId === pressState.activePointerId &&\n pressState.target &&\n pressState.isOverTarget &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = false;\n triggerPressEnd(e, pressState.pointerType, false);\n\n if (props.shouldCancelOnPointerExit) {\n cancel(e);\n }\n }\n };\n\n // --- Touch Event Helpers ---\n\n const createTouchEvent = (target: Element, event: TouchEvent): PressEventSource => {\n let clientX = 0;\n let clientY = 0;\n if (event.targetTouches && event.targetTouches.length === 1) {\n clientX = event.targetTouches[0].clientX;\n clientY = event.targetTouches[0].clientY;\n }\n return {\n currentTarget: target,\n shiftKey: event.shiftKey,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n altKey: event.altKey,\n clientX,\n clientY,\n };\n };\n\n // --- Touch Event Handlers (fallback for testing/older browsers) ---\n\n const onTouchStart: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (isDisabledValue(props.isDisabled)) {\n return;\n }\n\n // If already pressed via pointer events, ignore touch events\n if (pressState.isPressed) {\n return;\n }\n\n const touch = getTouchFromEvent(e);\n if (!touch) {\n return;\n }\n\n pressState.activePointerId = touch.identifier;\n pressState.ignoreEmulatedMouseEvents = true;\n pressState.isOverTarget = true;\n pressState.isPressed = true;\n pressState.target = e.currentTarget;\n pressState.pointerType = \"touch\";\n\n if (!props.allowTextSelectionOnPress) {\n disableTextSelection(pressState.target as HTMLElement);\n }\n\n const shouldStopPropagation = triggerPressStart(\n createTouchEvent(pressState.target, e),\n \"touch\",\n );\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(\"scroll\", onScroll, { capture: true, isWindow: true });\n };\n\n const onTouchMove: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (!pressState.isPressed) {\n return;\n }\n\n const touch = getTouchById(e, pressState.activePointerId);\n if (!touch) {\n return;\n }\n\n const target = pressState.target!;\n const isOverTarget = isPointOverTarget(touch, target);\n\n if (isOverTarget !== pressState.isOverTarget) {\n pressState.isOverTarget = isOverTarget;\n if (isOverTarget) {\n triggerPressStart(createTouchEvent(target, e), \"touch\");\n } else {\n triggerPressEnd(createTouchEvent(target, e), \"touch\", false);\n\n if (props.shouldCancelOnPointerExit) {\n cancel(createTouchEvent(target, e));\n }\n }\n }\n };\n\n const onTouchEnd: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (!pressState.isPressed) {\n return;\n }\n\n const touch = getTouchById(e, pressState.activePointerId);\n if (!touch) {\n return;\n }\n\n const target = pressState.target!;\n const isOverTarget = isPointOverTarget(touch, target);\n\n if (isOverTarget) {\n triggerPressUp(createTouchEvent(target, e), \"touch\");\n triggerPressEnd(\n createTouchEvent(target, e),\n \"touch\",\n isOverTarget && pressState.isOverTarget,\n );\n if (target instanceof HTMLElement) {\n triggerSyntheticClick(e, target);\n }\n } else {\n triggerPressEnd(createTouchEvent(target, e), \"touch\", false);\n }\n\n pressState.isPressed = false;\n pressState.isOverTarget = false;\n pressState.activePointerId = null;\n pressState.pointerType = null;\n\n removeAllGlobalListeners();\n\n if (!props.allowTextSelectionOnPress) {\n restoreTextSelection(target as HTMLElement);\n }\n };\n\n const onTouchCancel: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (pressState.target) {\n cancel(createTouchEvent(pressState.target, e));\n } else {\n cancel(e);\n }\n };\n\n const onScroll = (e: Event): void => {\n if (pressState.isPressed && nodeContains(e.target as Element, pressState.target)) {\n cancel(e);\n }\n };\n\n // --- Mouse Event Handlers (fallback when PointerEvent is not available) ---\n\n const onMouseDownFallback: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n // Only handle left button\n if (e.button !== 0) {\n return;\n }\n\n // Ignore emulated mouse events from touch\n if (pressState.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n\n pressState.isPressed = true;\n pressState.isOverTarget = true;\n pressState.target = e.currentTarget;\n pressState.pointerType = isVirtualClick(e) ? \"virtual\" : \"mouse\";\n\n const shouldStopPropagation = triggerPressStart(e, pressState.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n if (props.preventFocusOnPress) {\n pressState.focusCleanup?.();\n pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;\n }\n\n addGlobalListener(\"mouseup\", onMouseUpFallback);\n };\n\n const onMouseUpFallback = (e: MouseEvent): void => {\n if (e.button !== 0) {\n return;\n }\n\n if (!pressState.ignoreEmulatedMouseEvents && e.button === 0 && !pressState.isPressed) {\n triggerPressUp(e, pressState.pointerType || \"mouse\");\n }\n };\n\n const onMouseEnterFallback: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n if (!pressState.isPressed || pressState.ignoreEmulatedMouseEvents) {\n return;\n }\n\n if (\n pressState.isPressed &&\n !pressState.ignoreEmulatedMouseEvents &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = true;\n triggerPressStart(e, pressState.pointerType);\n }\n };\n\n const onMouseLeaveFallback: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n if (!pressState.isPressed || pressState.ignoreEmulatedMouseEvents) {\n return;\n }\n\n if (\n pressState.isPressed &&\n !pressState.ignoreEmulatedMouseEvents &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = false;\n triggerPressEnd(e, pressState.pointerType, false);\n\n if (props.shouldCancelOnPointerExit) {\n cancel(e);\n }\n }\n };\n\n // --- Keyboard Event Handlers ---\n\n const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (e) => {\n if (isDisabledValue(props.isDisabled)) {\n return;\n }\n\n if (!isValidKeyboardEvent(e, e.currentTarget)) {\n return;\n }\n\n // Prevent key repeat\n if (e.repeat) {\n e.preventDefault();\n return;\n }\n\n pressState.target = e.currentTarget;\n pressState.isPressed = true;\n pressState.isOverTarget = true;\n pressState.pointerType = \"keyboard\";\n\n const shouldStopPropagation = triggerPressStart(e, \"keyboard\");\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n // Prevent default for non-native interactive elements\n if (shouldPreventDefaultKeyboard(e.currentTarget, e.key)) {\n e.preventDefault();\n }\n\n // macOS bug: keyup doesn't fire while Meta key is held\n // Track keydown events while Meta is held so we can manually dispatch keyup\n if (isMac() && e.metaKey && !e.ctrlKey && !e.altKey) {\n pressState.metaKeyEvents = pressState.metaKeyEvents || new Map();\n pressState.metaKeyEvents.set(e.key, e);\n }\n\n // For Enter key on native buttons, the click fires on keydown\n // Set flag to ignore it\n if (e.key === \"Enter\") {\n pressState.ignoreClickAfterPress = true;\n }\n\n // Set up global keyup listener\n addGlobalListener(\"keyup\", onKeyUp, { capture: true });\n };\n\n const onKeyUp = (e: KeyboardEvent): void => {\n if (!pressState.isPressed || pressState.pointerType !== \"keyboard\") {\n return;\n }\n\n if (!isValidKeyboardEvent(e, pressState.target!)) {\n return;\n }\n\n // Handle macOS Meta key bug\n if (isMac() && e.key === \"Meta\" && pressState.metaKeyEvents?.size) {\n // When Meta releases, dispatch keyup for any keys that were pressed during\n for (const [key, event] of pressState.metaKeyEvents) {\n pressState.target?.dispatchEvent(\n new KeyboardEvent(\"keyup\", {\n key,\n code: event.code,\n bubbles: true,\n cancelable: true,\n }),\n );\n }\n pressState.metaKeyEvents.clear();\n return;\n }\n\n const target = pressState.target!;\n const eventTarget = getEventTarget(e) as Element;\n const wasPressed = nodeContains(target, eventTarget);\n const shouldStopPropagation = wasPressed ? triggerPressUp(e, \"keyboard\") : true;\n const shouldStopPropagationEnd = triggerPressEnd(e, \"keyboard\", wasPressed);\n\n pressState.isPressed = false;\n pressState.pointerType = null;\n\n removeAllGlobalListeners();\n\n // Prevent default for non-native interactive elements, but preserve native\n // input behavior such as checkbox Space toggling.\n if (shouldPreventDefaultKeyboard(getEventTarget(e) as Element, e.key)) {\n e.preventDefault();\n }\n\n if (wasPressed && target instanceof HTMLElement) {\n triggerSyntheticClick(e, target);\n }\n\n // Handle link activation with non-Enter keys. Native links only respond to\n // Enter, but role-overridden links should also work with Space.\n if (\n e.key !== \"Enter\" &&\n isHTMLAnchorLink(target) &&\n wasPressed &&\n !linkClickedSet.has(target as HTMLElement)\n ) {\n linkClickedSet.add(target as HTMLElement);\n openLink(target as HTMLAnchorElement, e);\n // Clean up the marker\n setTimeout(() => {\n linkClickedSet.delete(target as HTMLElement);\n }, 0);\n }\n\n // For Space key on non-native targets, the click fires after keyup.\n // Set flag to ignore it when we already synthesized the click.\n if (e.key === \" \" && wasPressed && shouldPreventDefaultKeyboard(target, e.key)) {\n pressState.ignoreClickAfterPress = true;\n } else if (e.key === \"Enter\") {\n pressState.ignoreClickAfterPress = false;\n }\n\n if (shouldStopPropagation && shouldStopPropagationEnd) {\n e.stopPropagation();\n }\n };\n\n // --- Click Event Handler ---\n\n const onClick: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n // Don't handle click if it's not on the target\n if (!eventPathContains(e.currentTarget, e)) {\n return;\n }\n\n // Only process left clicks that aren't from our own event triggers\n if (e.button === 0 && !pressState.isTriggeringEvent) {\n if (pressState.ignoreClickAfterPress) {\n pressState.ignoreClickAfterPress = false;\n return;\n }\n\n if (isDisabledValue(props.isDisabled)) {\n e.preventDefault();\n return;\n }\n\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard/virtual click.\n let shouldStopPropagation = true;\n\n if (\n !pressState.ignoreEmulatedMouseEvents &&\n !pressState.isPressed &&\n (pressState.pointerType === \"virtual\" || isVirtualClick(e))\n ) {\n pressState.target = e.currentTarget;\n const stopPressStart = triggerPressStart(e, \"virtual\");\n const stopPressUp = triggerPressUp(e, \"virtual\");\n const stopPressEnd = triggerPressEnd(e, \"virtual\", true);\n props.onClick?.(e);\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n } else if (pressState.isPressed && pressState.pointerType !== \"keyboard\") {\n // Complete the press sequence for pointer/touch/mouse events\n const pointerType =\n pressState.pointerType ||\n ((e as unknown as PointerEvent).pointerType as PointerType) ||\n \"virtual\";\n const stopPressUp = triggerPressUp(e, pointerType);\n const stopPressEnd = triggerPressEnd(e, pointerType, true);\n shouldStopPropagation = stopPressUp && stopPressEnd;\n pressState.isOverTarget = false;\n props.onClick?.(e);\n cancel(e);\n }\n\n pressState.ignoreEmulatedMouseEvents = false;\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n }\n };\n\n // --- Drag Event Handler ---\n\n const onDragStart: JSX.EventHandler<HTMLElement, DragEvent> = (e) => {\n // Safari doesn't fire pointercancel on drag, so we need to cancel manually\n if (pressState.isPressed) {\n cancel(e);\n }\n };\n\n // --- Build Props ---\n // Conditionally use pointer events or mouse events based on browser support\n // This matches React-Aria's approach exactly\n\n const pressProps: JSX.HTMLAttributes<HTMLElement> & { \"data-solidaria-pressable\": string } =\n typeof PointerEvent !== \"undefined\"\n ? {\n // Keyboard events\n onKeyDown,\n onKeyUp,\n onClick,\n onDragStart,\n // Pointer events (preferred when available)\n onPointerDown,\n onPointerUp: onPointerUpTarget,\n onPointerEnter,\n onPointerLeave,\n // Mouse down only for focus prevention when using pointer events\n onMouseDown: onMouseDownPointer,\n // Touch events (always included for ignoreEmulatedMouseEvents handling)\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onTouchCancel,\n // Attribute for CSS touch-action\n \"data-solidaria-pressable\": \"\",\n }\n : {\n // Keyboard events\n onKeyDown,\n onKeyUp,\n onClick,\n onDragStart,\n // Mouse events (fallback when PointerEvent not available)\n onMouseDown: onMouseDownFallback,\n onMouseUp: onMouseUpFallback,\n onMouseEnter: onMouseEnterFallback,\n onMouseLeave: onMouseLeaveFallback,\n // Touch events (always included)\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onTouchCancel,\n // Attribute for CSS touch-action\n \"data-solidaria-pressable\": \"\",\n };\n\n // Clean up on unmount\n onCleanup(() => {\n removeAllGlobalListeners();\n // Clean up click timeout/listener if pending\n if (pressState.clickCleanup) {\n pressState.clickCleanup();\n pressState.clickCleanup = null;\n }\n if (pressState.focusCleanup) {\n pressState.focusCleanup();\n pressState.focusCleanup = null;\n }\n });\n\n return {\n isPressed,\n pressProps,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createPress.jsx","names":["#shouldStopPropagation"],"sources":["../../src/interactions/PressEvent.ts","../../src/interactions/createPress.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/usePress.ts\n\n/**\n * PressEvent class that matches React-Aria's PressEvent interface.\n * Wraps native events with press-specific data.\n */\n\nexport type PointerType = \"mouse\" | \"pen\" | \"touch\" | \"keyboard\" | \"virtual\";\nexport type PressEventType = \"pressstart\" | \"pressend\" | \"pressup\" | \"press\";\n\n/**\n * Minimal event data needed to create a PressEvent.\n * Allows both native Event objects and synthetic event-like objects.\n */\nexport interface PressEventSource {\n currentTarget?: EventTarget | null;\n shiftKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n altKey?: boolean;\n clientX?: number;\n clientY?: number;\n /**\n * The key that triggered the event, present on keyboard interactions\n * (the native `KeyboardEvent` is passed through unchanged).\n */\n key?: string;\n}\n\nexport interface IPressEvent {\n /** The type of press event being fired. */\n type: PressEventType;\n /** The pointer type that triggered the press event. */\n pointerType: PointerType;\n /** The target element of the press event. */\n target: Element;\n /** Whether the shift keyboard modifier was held during the press event. */\n shiftKey: boolean;\n /** Whether the ctrl keyboard modifier was held during the press event. */\n ctrlKey: boolean;\n /** Whether the meta keyboard modifier was held during the press event. */\n metaKey: boolean;\n /** Whether the alt keyboard modifier was held during the press event. */\n altKey: boolean;\n /** X position of the press relative to the target element. */\n x: number;\n /** Y position of the press relative to the target element. */\n y: number;\n /**\n * The key that triggered the press event, if it was triggered by a keyboard\n * interaction. Useful for differentiating between Space and Enter key presses.\n */\n key?: string;\n /**\n * By default, press events stop propagation to parent elements.\n * Call continuePropagation() to allow the event to bubble up.\n */\n continuePropagation(): void;\n}\n\n/**\n * PressEvent class that provides all press event data.\n * Ported from packages/react-aria/src/interactions/usePress.ts.\n * createPressEvent is a local adapter around the ported PressEvent class.\n */\nexport class PressEvent implements IPressEvent {\n type: PressEventType;\n pointerType: PointerType;\n target: Element;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n x: number;\n y: number;\n key?: string;\n\n #shouldStopPropagation = true;\n\n constructor(\n type: PressEventType,\n pointerType: PointerType,\n originalEvent: PressEventSource | null,\n target: Element | null,\n ) {\n this.type = type;\n this.pointerType = pointerType;\n const eventTarget = target ?? (originalEvent?.currentTarget as Element | undefined);\n this.target = eventTarget as Element;\n\n // Extract modifier keys from the original event\n this.shiftKey = originalEvent?.shiftKey ?? false;\n this.ctrlKey = originalEvent?.ctrlKey ?? false;\n this.metaKey = originalEvent?.metaKey ?? false;\n this.altKey = originalEvent?.altKey ?? false;\n // Present only for keyboard interactions (the native KeyboardEvent carries\n // `key`); pointer events leave this undefined, matching upstream.\n this.key = originalEvent?.key;\n\n // Calculate position relative to target\n this.x = 0;\n this.y = 0;\n\n if (originalEvent && originalEvent.clientX !== undefined && eventTarget) {\n const rect = eventTarget.getBoundingClientRect();\n this.x = originalEvent.clientX - rect.left;\n this.y = (originalEvent.clientY ?? 0) - rect.top;\n } else if (eventTarget) {\n // For keyboard events, use center of element\n const rect = eventTarget.getBoundingClientRect();\n this.x = rect.width / 2;\n this.y = rect.height / 2;\n }\n }\n\n /**\n * Call this to allow the press event to propagate to parent elements.\n * By default, press events stop propagation.\n */\n continuePropagation(): void {\n this.#shouldStopPropagation = false;\n }\n\n /**\n * Whether the event should stop propagation.\n * Used internally by the press handler.\n */\n get shouldStopPropagation(): boolean {\n return this.#shouldStopPropagation;\n }\n}\n\n/**\n * Creates a PressEvent from a native event or event-like source.\n */\nexport function createPressEvent(\n type: PressEventType,\n pointerType: PointerType,\n originalEvent: PressEventSource | null,\n target: Element | null,\n): PressEvent {\n return new PressEvent(type, pointerType, originalEvent, target);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/usePress.ts\n\n/**\n * createPress - Handles press interactions across mouse, touch, keyboard, and virtual clicks.\n *\n * This is a 1-1 port of React-Aria's usePress hook adapted for SolidJS.\n * All behaviors, edge cases, and platform-specific handling are preserved.\n */\n\nimport {\n nodeContains,\n getEventTarget,\n isValidKeyboardEvent,\n isHTMLAnchorLink,\n shouldPreventDefaultKeyboard,\n isVirtualClick,\n isVirtualPointerEvent,\n isPointOverTarget,\n getTouchFromEvent,\n getTouchById,\n disableTextSelection,\n restoreTextSelection,\n preventFocus,\n openLink,\n isMac,\n createGlobalListeners,\n setEventTarget,\n focusWithoutScrolling,\n onOwnedCleanup,\n} from \"../utils\";\nimport { createSignal, Accessor } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { PressEvent, PointerType, createPressEvent, type PressEventSource } from \"./PressEvent\";\n\nexport { PressEvent, type PointerType } from \"./PressEvent\";\nexport type { IPressEvent, PressEventType } from \"./PressEvent\";\n\nexport interface CreatePressProps {\n /** Whether the target is currently disabled. */\n isDisabled?: Accessor<boolean> | boolean;\n /** Handler called when the press is released over the target. */\n onPress?: (e: PressEvent) => void;\n /** Handler called when a press interaction starts. */\n onPressStart?: (e: PressEvent) => void;\n /**\n * Handler called when a press interaction ends, either\n * over the target or when the pointer leaves the target.\n */\n onPressEnd?: (e: PressEvent) => void;\n /** Handler called when a press is released over the target, regardless of whether it started on the target. */\n onPressUp?: (e: PressEvent) => void;\n /** Handler called when the press state changes. */\n onPressChange?: (isPressed: boolean) => void;\n /**\n * Handler called on native click event.\n * Some third-party libraries pass onClick instead of onPress.\n * This matches the browser's native activation behavior for certain elements.\n */\n onClick?: (e: MouseEvent) => void;\n /** Whether the press should be visual only, not triggering onPress. */\n isPressed?: Accessor<boolean> | boolean;\n /** Whether to prevent focus when pressing. */\n preventFocusOnPress?: boolean;\n /** Whether long press should cancel when pointer moves out of target. */\n shouldCancelOnPointerExit?: boolean;\n /** Whether text selection should be allowed during press. */\n allowTextSelectionOnPress?: boolean;\n}\n\nexport interface PressResult {\n /** Whether the target is currently pressed. */\n isPressed: Accessor<boolean>;\n /** Props to spread on the target element. */\n pressProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\nfunction isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): boolean {\n if (typeof isDisabled === \"function\") {\n return isDisabled();\n }\n return isDisabled ?? false;\n}\n\nfunction isPressedValue(isPressed: Accessor<boolean> | boolean | undefined): boolean {\n if (typeof isPressed === \"function\") {\n return isPressed();\n }\n return isPressed ?? false;\n}\n\nfunction eventPathContains(parent: EventTarget | null | undefined, event: Event): boolean {\n if (!parent) {\n return false;\n }\n\n const target = getEventTarget(event);\n if (\n typeof Node !== \"undefined\" &&\n parent instanceof Node &&\n target instanceof Node &&\n nodeContains(parent, target)\n ) {\n return true;\n }\n\n if (typeof event.composedPath === \"function\") {\n return event.composedPath().includes(parent);\n }\n\n return false;\n}\n\n// Marks the keyup event a link was already opened from, so several press\n// instances on one element do not each open it. Upstream keys this on the event\n// (react-aria 3.52.0 `usePress.mjs:102` `Symbol('linkClicked')`, set at `:317`)\n// rather than on the element, so the mark dies with the event rather than with a\n// timeout, and a later activation of the same link is never swallowed.\nconst LINK_CLICKED = Symbol(\"linkClicked\");\ntype LinkClickedEvent = KeyboardEvent & { [LINK_CLICKED]?: boolean };\n\n// CSS for preventing double-tap zoom delay\nlet pressableCSSInjected = false;\nfunction injectPressableCSS(): void {\n if (pressableCSSInjected || typeof document === \"undefined\") return;\n\n const style = document.createElement(\"style\");\n style.id = \"solidaria-pressable-style\";\n style.textContent = `\n [data-solidaria-pressable] {\n touch-action: pan-x pan-y pinch-zoom;\n }\n `;\n document.head.appendChild(style);\n pressableCSSInjected = true;\n}\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * Provides consistent press behavior regardless of input method.\n *\n * Based on react-aria's usePress but adapted for SolidJS.\n */\nexport function createPress(props: CreatePressProps = {}): PressResult {\n // Internal pressed state (for visual feedback)\n const [internalIsPressed, setInternalIsPressed] = createSignal(false, { ownedWrite: true });\n\n // Use controlled isPressed if provided, otherwise internal state\n const isPressed = (): boolean => {\n const controlledPressed = isPressedValue(props.isPressed);\n if (controlledPressed) {\n return controlledPressed;\n }\n return internalIsPressed();\n };\n\n // State tracking (using plain variables - SolidJS doesn't need refs for mutable state)\n let pressState = {\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null as number | null,\n target: null as Element | null,\n isOverTarget: false,\n pointerType: null as PointerType | null,\n userSelect: undefined as string | undefined,\n metaKeyEvents: null as Map<string, KeyboardEvent> | null,\n clickCleanup: null as (() => void) | null,\n focusCleanup: null as (() => void) | null,\n };\n\n // Global listeners manager\n const { addGlobalListener, removeAllGlobalListeners } = createGlobalListeners();\n\n // Inject CSS on first use\n injectPressableCSS();\n\n // --- Event Triggers ---\n\n const triggerPressStart = (\n originalEvent: PressEventSource,\n pointerType: PointerType,\n ): boolean => {\n if (isDisabledValue(props.isDisabled) || pressState.didFirePressStart) {\n return false;\n }\n\n let shouldStopPropagation = true;\n pressState.isTriggeringEvent = true;\n\n if (props.onPressStart) {\n const event = createPressEvent(\"pressstart\", pointerType, originalEvent, pressState.target!);\n props.onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (props.onPressChange) {\n props.onPressChange(true);\n }\n\n pressState.isTriggeringEvent = false;\n pressState.didFirePressStart = true;\n setInternalIsPressed(true);\n\n return shouldStopPropagation;\n };\n\n const triggerPressEnd = (\n originalEvent: PressEventSource,\n pointerType: PointerType,\n wasPressed = true,\n ): boolean => {\n if (!pressState.didFirePressStart) {\n return false;\n }\n\n pressState.didFirePressStart = false;\n pressState.isTriggeringEvent = true;\n\n let shouldStopPropagation = true;\n if (props.onPressEnd) {\n const event = createPressEvent(\"pressend\", pointerType, originalEvent, pressState.target!);\n props.onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (props.onPressChange) {\n props.onPressChange(false);\n }\n\n setInternalIsPressed(false);\n\n if (wasPressed && !isDisabledValue(props.isDisabled)) {\n if (props.onPress) {\n const event = createPressEvent(\"press\", pointerType, originalEvent, pressState.target!);\n props.onPress(event);\n shouldStopPropagation = shouldStopPropagation && event.shouldStopPropagation;\n }\n }\n\n pressState.isTriggeringEvent = false;\n\n return shouldStopPropagation;\n };\n\n const triggerPressUp = (originalEvent: PressEventSource, pointerType: PointerType): boolean => {\n if (isDisabledValue(props.isDisabled)) {\n return false;\n }\n\n if (props.onPressUp) {\n pressState.isTriggeringEvent = true;\n const event = createPressEvent(\"pressup\", pointerType, originalEvent, pressState.target!);\n props.onPressUp(event);\n pressState.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n\n return true;\n };\n\n const triggerSyntheticClick = (\n originalEvent: KeyboardEvent | TouchEvent,\n target: HTMLElement,\n ): void => {\n if (isDisabledValue(props.isDisabled)) {\n return;\n }\n\n if (props.onClick) {\n const event = new MouseEvent(\"click\", originalEvent as MouseEventInit);\n setEventTarget(event, target);\n props.onClick(event);\n }\n };\n\n const cancel = (originalEvent: PressEventSource): void => {\n if (!pressState.isPressed) {\n return;\n }\n\n if (pressState.target && pressState.didFirePressStart && pressState.pointerType != null) {\n triggerPressEnd(originalEvent, pressState.pointerType, false);\n }\n\n pressState.isPressed = false;\n pressState.isOverTarget = false;\n pressState.activePointerId = null;\n pressState.pointerType = null;\n\n removeAllGlobalListeners();\n\n // Clean up click timeout/listener if set\n if (pressState.clickCleanup) {\n pressState.clickCleanup();\n pressState.clickCleanup = null;\n }\n\n if (pressState.focusCleanup) {\n pressState.focusCleanup();\n pressState.focusCleanup = null;\n }\n\n if (!props.allowTextSelectionOnPress) {\n restoreTextSelection(pressState.target as HTMLElement);\n }\n };\n\n // --- Pointer Event Handlers (used when PointerEvent is available) ---\n\n const onPointerDown: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n // Only handle left clicks, and ignore events that bubbled through portals\n const button = e.button ?? 0;\n if (button !== 0 || !eventPathContains(e.currentTarget, e)) {\n return;\n }\n\n // iOS VoiceOver bug: fires pointer events with incorrect coordinates\n // Let the click handler deal with it instead\n if (isVirtualPointerEvent(e)) {\n pressState.pointerType = \"virtual\";\n return;\n }\n\n pressState.pointerType = e.pointerType as PointerType;\n\n // RAC usePress always stopPropagates a handled pointerdown, even when this\n // target is already pressed. Nested pressables (DatePicker calendar\n // button inside the field group) rely on that so a second pointerdown —\n // Playwright pressLocator's dispatched event after mouse.down — does not\n // start the parent's press and run focusLast.\n let shouldStopPropagation = true;\n if (!pressState.isPressed) {\n pressState.isPressed = true;\n pressState.isOverTarget = true;\n pressState.activePointerId = e.pointerId;\n pressState.target = e.currentTarget;\n\n if (!props.allowTextSelectionOnPress) {\n disableTextSelection(pressState.target as HTMLElement);\n }\n\n shouldStopPropagation = triggerPressStart(e, pressState.pointerType);\n\n // Set up global listeners for pointer events\n addGlobalListener(\"pointerup\", onPointerUp);\n addGlobalListener(\"pointercancel\", onPointerCancel);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n // Mouse down handler when using pointer events - only prevents focus, doesn't trigger press\n const onMouseDownPointer: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n if (!eventPathContains(e.currentTarget, e)) {\n return;\n }\n\n if (e.button === 0) {\n if (props.preventFocusOnPress) {\n pressState.focusCleanup?.();\n pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;\n }\n e.stopPropagation();\n }\n };\n\n const onPointerUp = (e: PointerEvent): void => {\n // Only handle events for our active pointer\n const button = e.button ?? 0;\n if (\n e.pointerId !== pressState.activePointerId ||\n !pressState.isPressed ||\n button !== 0 ||\n !pressState.target\n ) {\n return;\n }\n\n const isOverTarget = eventPathContains(pressState.target, e);\n if (isOverTarget && pressState.pointerType != null && pressState.pointerType !== \"virtual\") {\n // Pointer released over target - wait for onClick to complete the press sequence.\n // This matches React-Aria's behavior for compatibility with DOM mutations and third-party libraries.\n // https://github.com/adobe/react-spectrum/issues/1513\n // https://issues.chromium.org/issues/40732224\n //\n // However, if stopPropagation is called on the click event (e.g., by a child input element),\n // the onClick handler on this element won't fire. We work around this by triggering a click\n // ourselves after a timeout. This timeout is canceled during the click event in case the\n // real one fires first. The timeout must be at least 32ms, because Safari on iOS delays the\n // click event on non-form elements without certain ARIA roles (for hover emulation).\n // https://github.com/WebKit/WebKit/blob/dccfae42bb29bd4bdef052e469f604a9387241c0/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L875-L892\n let clickFired = false;\n const timeout = setTimeout(() => {\n // Guard for SSR/test environments where the element may no longer exist\n if (typeof HTMLElement === \"undefined\") {\n return;\n }\n if (pressState.isPressed && pressState.target instanceof HTMLElement) {\n if (clickFired) {\n // Click already happened, just cancel the press state\n cancel(e);\n } else {\n // Click didn't happen (probably due to stopPropagation), trigger it manually\n focusWithoutScrolling(pressState.target);\n pressState.target.click();\n }\n }\n }, 80);\n\n // Use a capturing listener to track if a click occurred.\n // If stopPropagation is called it may never reach our handler.\n const doc = pressState.target.ownerDocument ?? document;\n const clickListener = () => {\n clickFired = true;\n };\n doc.addEventListener(\"click\", clickListener, true);\n\n // Store cleanup function\n pressState.clickCleanup = () => {\n clearTimeout(timeout);\n doc.removeEventListener(\"click\", clickListener, true);\n };\n\n pressState.isOverTarget = false;\n } else {\n // Pointer released outside target, or virtual - cancel the press\n cancel(e);\n }\n };\n\n const onPointerCancel = (e: PointerEvent): void => {\n if (e.pointerId === pressState.activePointerId) {\n cancel(e);\n }\n };\n\n const onPointerUpTarget: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n if (!eventPathContains(e.currentTarget, e) || pressState.pointerType === \"virtual\") {\n return;\n }\n\n if (e.button === 0 && !pressState.isPressed) {\n triggerPressUp(e, (pressState.pointerType || e.pointerType || \"mouse\") as PointerType);\n }\n };\n\n const onPointerEnter: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n if (\n e.pointerId === pressState.activePointerId &&\n pressState.target &&\n !pressState.isOverTarget &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = true;\n triggerPressStart(e, pressState.pointerType);\n }\n };\n\n const onPointerLeave: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {\n if (\n e.pointerId === pressState.activePointerId &&\n pressState.target &&\n pressState.isOverTarget &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = false;\n triggerPressEnd(e, pressState.pointerType, false);\n\n if (props.shouldCancelOnPointerExit) {\n cancel(e);\n }\n }\n };\n\n // --- Touch Event Helpers ---\n\n const createTouchEvent = (target: Element, event: TouchEvent): PressEventSource => {\n let clientX = 0;\n let clientY = 0;\n if (event.targetTouches && event.targetTouches.length === 1) {\n clientX = event.targetTouches[0].clientX;\n clientY = event.targetTouches[0].clientY;\n }\n return {\n currentTarget: target,\n shiftKey: event.shiftKey,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n altKey: event.altKey,\n clientX,\n clientY,\n };\n };\n\n // --- Touch Event Handlers (fallback for testing/older browsers) ---\n\n const onTouchStart: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (isDisabledValue(props.isDisabled)) {\n return;\n }\n\n // If already pressed via pointer events, ignore touch events\n if (pressState.isPressed) {\n return;\n }\n\n const touch = getTouchFromEvent(e);\n if (!touch) {\n return;\n }\n\n pressState.activePointerId = touch.identifier;\n pressState.ignoreEmulatedMouseEvents = true;\n pressState.isOverTarget = true;\n pressState.isPressed = true;\n pressState.target = e.currentTarget;\n pressState.pointerType = \"touch\";\n\n if (!props.allowTextSelectionOnPress) {\n disableTextSelection(pressState.target as HTMLElement);\n }\n\n const shouldStopPropagation = triggerPressStart(\n createTouchEvent(pressState.target, e),\n \"touch\",\n );\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(\"scroll\", onScroll, { capture: true, isWindow: true });\n };\n\n const onTouchMove: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (!pressState.isPressed) {\n return;\n }\n\n const touch = getTouchById(e, pressState.activePointerId);\n if (!touch) {\n return;\n }\n\n const target = pressState.target!;\n const isOverTarget = isPointOverTarget(touch, target);\n\n if (isOverTarget !== pressState.isOverTarget) {\n pressState.isOverTarget = isOverTarget;\n if (isOverTarget) {\n triggerPressStart(createTouchEvent(target, e), \"touch\");\n } else {\n triggerPressEnd(createTouchEvent(target, e), \"touch\", false);\n\n if (props.shouldCancelOnPointerExit) {\n cancel(createTouchEvent(target, e));\n }\n }\n }\n };\n\n const onTouchEnd: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (!pressState.isPressed) {\n return;\n }\n\n const touch = getTouchById(e, pressState.activePointerId);\n if (!touch) {\n return;\n }\n\n const target = pressState.target!;\n const isOverTarget = isPointOverTarget(touch, target);\n\n if (isOverTarget) {\n triggerPressUp(createTouchEvent(target, e), \"touch\");\n triggerPressEnd(\n createTouchEvent(target, e),\n \"touch\",\n isOverTarget && pressState.isOverTarget,\n );\n if (target instanceof HTMLElement) {\n triggerSyntheticClick(e, target);\n }\n } else {\n triggerPressEnd(createTouchEvent(target, e), \"touch\", false);\n }\n\n pressState.isPressed = false;\n pressState.isOverTarget = false;\n pressState.activePointerId = null;\n pressState.pointerType = null;\n\n removeAllGlobalListeners();\n\n if (!props.allowTextSelectionOnPress) {\n restoreTextSelection(target as HTMLElement);\n }\n };\n\n const onTouchCancel: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {\n if (pressState.target) {\n cancel(createTouchEvent(pressState.target, e));\n } else {\n cancel(e);\n }\n };\n\n const onScroll = (e: Event): void => {\n if (pressState.isPressed && nodeContains(e.target as Element, pressState.target)) {\n cancel(e);\n }\n };\n\n // --- Mouse Event Handlers (fallback when PointerEvent is not available) ---\n\n const onMouseDownFallback: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n // Only handle left button\n if (e.button !== 0) {\n return;\n }\n\n // Ignore emulated mouse events from touch\n if (pressState.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n\n pressState.isPressed = true;\n pressState.isOverTarget = true;\n pressState.target = e.currentTarget;\n pressState.pointerType = isVirtualClick(e) ? \"virtual\" : \"mouse\";\n\n const shouldStopPropagation = triggerPressStart(e, pressState.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n if (props.preventFocusOnPress) {\n pressState.focusCleanup?.();\n pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;\n }\n\n addGlobalListener(\"mouseup\", onMouseUpFallback);\n };\n\n const onMouseUpFallback = (e: MouseEvent): void => {\n if (e.button !== 0) {\n return;\n }\n\n if (!pressState.ignoreEmulatedMouseEvents && e.button === 0 && !pressState.isPressed) {\n triggerPressUp(e, pressState.pointerType || \"mouse\");\n }\n };\n\n const onMouseEnterFallback: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n if (!pressState.isPressed || pressState.ignoreEmulatedMouseEvents) {\n return;\n }\n\n if (\n pressState.isPressed &&\n !pressState.ignoreEmulatedMouseEvents &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = true;\n triggerPressStart(e, pressState.pointerType);\n }\n };\n\n const onMouseLeaveFallback: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n if (!pressState.isPressed || pressState.ignoreEmulatedMouseEvents) {\n return;\n }\n\n if (\n pressState.isPressed &&\n !pressState.ignoreEmulatedMouseEvents &&\n pressState.pointerType != null\n ) {\n pressState.isOverTarget = false;\n triggerPressEnd(e, pressState.pointerType, false);\n\n if (props.shouldCancelOnPointerExit) {\n cancel(e);\n }\n }\n };\n\n // --- Keyboard Event Handlers ---\n\n const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (e) => {\n if (isDisabledValue(props.isDisabled)) {\n return;\n }\n\n if (!isValidKeyboardEvent(e, e.currentTarget)) {\n return;\n }\n\n // Prevent key repeat\n if (e.repeat) {\n e.preventDefault();\n return;\n }\n\n pressState.target = e.currentTarget;\n pressState.isPressed = true;\n pressState.isOverTarget = true;\n pressState.pointerType = \"keyboard\";\n\n const shouldStopPropagation = triggerPressStart(e, \"keyboard\");\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n // Prevent default for non-native interactive elements\n if (shouldPreventDefaultKeyboard(e.currentTarget, e.key)) {\n e.preventDefault();\n }\n\n // macOS bug: keyup doesn't fire while Meta key is held\n // Track keydown events while Meta is held so we can manually dispatch keyup\n if (isMac() && e.metaKey && !e.ctrlKey && !e.altKey) {\n pressState.metaKeyEvents = pressState.metaKeyEvents || new Map();\n pressState.metaKeyEvents.set(e.key, e);\n }\n\n // Set up global keyup listener\n addGlobalListener(\"keyup\", onKeyUp, { capture: true });\n };\n\n const onKeyUp = (e: KeyboardEvent): void => {\n if (!pressState.isPressed || pressState.pointerType !== \"keyboard\") {\n return;\n }\n\n if (!isValidKeyboardEvent(e, pressState.target!)) {\n return;\n }\n\n // Handle macOS Meta key bug\n if (isMac() && e.key === \"Meta\" && pressState.metaKeyEvents?.size) {\n // When Meta releases, dispatch keyup for any keys that were pressed during\n for (const [key, event] of pressState.metaKeyEvents) {\n pressState.target?.dispatchEvent(\n new KeyboardEvent(\"keyup\", {\n key,\n code: event.code,\n bubbles: true,\n cancelable: true,\n }),\n );\n }\n pressState.metaKeyEvents.clear();\n return;\n }\n\n const target = pressState.target!;\n const eventTarget = getEventTarget(e) as Element;\n const wasPressed = nodeContains(target, eventTarget);\n const shouldStopPropagation = wasPressed ? triggerPressUp(e, \"keyboard\") : true;\n const shouldStopPropagationEnd = triggerPressEnd(e, \"keyboard\", wasPressed);\n\n pressState.isPressed = false;\n pressState.pointerType = null;\n\n removeAllGlobalListeners();\n\n // Prevent default for non-native interactive elements, but preserve native\n // input behavior such as checkbox Space toggling.\n if (shouldPreventDefaultKeyboard(getEventTarget(e) as Element, e.key)) {\n e.preventDefault();\n }\n\n if (wasPressed && target instanceof HTMLElement) {\n triggerSyntheticClick(e, target);\n }\n\n // Handle link activation with non-Enter keys. Native links only respond to\n // Enter, but role-overridden links should also work with Space.\n if (\n e.key !== \"Enter\" &&\n isHTMLAnchorLink(target) &&\n wasPressed &&\n !(e as LinkClickedEvent)[LINK_CLICKED]\n ) {\n // Store a hidden property on the event so we only trigger the link click\n // once, even if there are multiple createPress instances on the element.\n (e as LinkClickedEvent)[LINK_CLICKED] = true;\n // `false`: this click is ours, not the consumer's, so `openLink.isOpening`\n // must stay down and a collection item's click guard\n // (`createSelectableItem`, upstream `useSelectableItem.mjs:254`) can\n // suppress the navigation it did not ask for. Upstream `usePress.mjs:320`.\n openLink(target as HTMLAnchorElement, e, false);\n }\n\n if (shouldStopPropagation && shouldStopPropagationEnd) {\n e.stopPropagation();\n }\n };\n\n // --- Click Event Handler ---\n\n const onClick: JSX.EventHandler<HTMLElement, MouseEvent> = (e) => {\n // Don't handle click if it's not on the target\n if (!eventPathContains(e.currentTarget, e)) {\n return;\n }\n\n // Only process left clicks that aren't from our own event triggers, and not\n // the click `openLink` is dispatching right now (upstream\n // `usePress.mjs:279`). Keyboard activation\n // (isPressed + pointerType keyboard) skips press re-entry like RAC usePress,\n // then still stopPropagates so document click interceptors do not run. Do\n // not preventDefault an enabled <a href>.\n if (\n e.button === 0 &&\n !pressState.isTriggeringEvent &&\n !(openLink as { isOpening?: boolean }).isOpening\n ) {\n if (isDisabledValue(props.isDisabled)) {\n e.preventDefault();\n return;\n }\n\n const isCollectionItem =\n e.currentTarget instanceof Element &&\n (e.currentTarget.hasAttribute(\"data-collection\") ||\n e.currentTarget.matches('[role=\"row\"], [role=\"gridcell\"], [role=\"treeitem\"]') ||\n e.currentTarget.closest(\"[data-collection]\") != null);\n\n const closestInteractive =\n isCollectionItem && e.target instanceof Element\n ? e.target.closest(\n 'button, input, select, textarea, a[href], [data-solidaria-pressable], [role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]',\n )\n : null;\n\n const isInteractiveChild =\n closestInteractive != null &&\n closestInteractive !== e.currentTarget &&\n e.currentTarget.contains(closestInteractive);\n\n if (isInteractiveChild) {\n return;\n }\n\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard/virtual click.\n let shouldStopPropagation = true;\n\n if (\n !pressState.ignoreEmulatedMouseEvents &&\n !pressState.isPressed &&\n (pressState.pointerType === \"virtual\" || isVirtualClick(e))\n ) {\n pressState.target = e.currentTarget;\n const stopPressStart = triggerPressStart(e, \"virtual\");\n const stopPressUp = triggerPressUp(e, \"virtual\");\n const stopPressEnd = triggerPressEnd(e, \"virtual\", true);\n props.onClick?.(e);\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n } else if (pressState.isPressed && pressState.pointerType !== \"keyboard\") {\n // Complete the press sequence for pointer/touch/mouse events\n const pointerType =\n pressState.pointerType ||\n ((e as unknown as PointerEvent).pointerType as PointerType) ||\n \"virtual\";\n const stopPressUp = triggerPressUp(e, pointerType);\n const stopPressEnd = triggerPressEnd(e, pointerType, true);\n shouldStopPropagation = stopPressUp && stopPressEnd;\n pressState.isOverTarget = false;\n props.onClick?.(e);\n cancel(e);\n }\n\n pressState.ignoreEmulatedMouseEvents = false;\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n }\n };\n\n // --- Drag Event Handler ---\n\n const onDragStart: JSX.EventHandler<HTMLElement, DragEvent> = (e) => {\n // Safari doesn't fire pointercancel on drag, so we need to cancel manually\n if (pressState.isPressed) {\n cancel(e);\n }\n };\n\n // --- Build Props ---\n // Conditionally use pointer events or mouse events based on browser support\n // This matches React-Aria's approach exactly\n\n const pressProps: JSX.HTMLAttributes<HTMLElement> & {\n \"data-solidaria-pressable\": string;\n onClick: JSX.EventHandler<HTMLElement, MouseEvent>;\n } =\n typeof PointerEvent !== \"undefined\"\n ? {\n // Keyboard events\n onKeyDown,\n onKeyUp,\n onClick: onClick,\n onDragStart,\n // Pointer events (preferred when available)\n onPointerDown,\n onPointerUp: onPointerUpTarget,\n onPointerEnter,\n onPointerLeave,\n // Mouse down only for focus prevention when using pointer events\n onMouseDown: onMouseDownPointer,\n // Touch events (always included for ignoreEmulatedMouseEvents handling)\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onTouchCancel,\n // Attribute for CSS touch-action\n \"data-solidaria-pressable\": \"\",\n }\n : {\n // Keyboard events\n onKeyDown,\n onKeyUp,\n onClick: onClick,\n onDragStart,\n // Mouse events (fallback when PointerEvent not available)\n onMouseDown: onMouseDownFallback,\n onMouseUp: onMouseUpFallback,\n onMouseEnter: onMouseEnterFallback,\n onMouseLeave: onMouseLeaveFallback,\n // Touch events (always included)\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onTouchCancel,\n // Attribute for CSS touch-action\n \"data-solidaria-pressable\": \"\",\n };\n\n // Clean up on unmount\n onOwnedCleanup(() => {\n removeAllGlobalListeners();\n // Clean up click timeout/listener if pending\n if (pressState.clickCleanup) {\n pressState.clickCleanup();\n pressState.clickCleanup = null;\n }\n if (pressState.focusCleanup) {\n pressState.focusCleanup();\n pressState.focusCleanup = null;\n }\n });\n\n return {\n isPressed,\n pressProps,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/progress/useProgressBar.ts
|
|
13
|
+
import { t as mergeProps } from "./mergeProps.js";
|
|
2
14
|
import { t as filterDOMProps } from "./filterDOMProps.js";
|
|
3
15
|
import { t as access } from "./reactivity.js";
|
|
4
16
|
import { t as createLabel } from "./createLabel.js";
|
|
@@ -26,7 +38,7 @@ function getSafeRange(min, max) {
|
|
|
26
38
|
*/
|
|
27
39
|
function createProgressBar(props = {}) {
|
|
28
40
|
const getProps = () => access(props);
|
|
29
|
-
const
|
|
41
|
+
const labelAria = createLabel({
|
|
30
42
|
get id() {
|
|
31
43
|
return getProps().id;
|
|
32
44
|
},
|
|
@@ -59,7 +71,8 @@ function createProgressBar(props = {}) {
|
|
|
59
71
|
valueLabel = `${Math.round(percentage * 100)}%`;
|
|
60
72
|
}
|
|
61
73
|
}
|
|
62
|
-
|
|
74
|
+
const domProps = filterDOMProps(p, { labelable: true });
|
|
75
|
+
return mergeProps(domProps, labelAria.fieldProps, {
|
|
63
76
|
"aria-valuenow": isIndeterminate ? void 0 : clampedValue,
|
|
64
77
|
"aria-valuemin": minValue,
|
|
65
78
|
"aria-valuemax": maxValue,
|
|
@@ -72,7 +85,7 @@ function createProgressBar(props = {}) {
|
|
|
72
85
|
return getProgressBarProps();
|
|
73
86
|
},
|
|
74
87
|
get labelProps() {
|
|
75
|
-
return labelProps;
|
|
88
|
+
return labelAria.labelProps;
|
|
76
89
|
}
|
|
77
90
|
};
|
|
78
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createProgressBar.js","names":[],"sources":["../../src/progress/createProgressBar.ts"],"sourcesContent":["/**\n * ProgressBar hook for Solidaria\n *\n * Provides the accessibility implementation for a progress bar component.\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n *\n * This is a 1:1 port of @react-aria/progress's useProgressBar hook.\n */\n\nimport { createLabel } from \"../label/createLabel\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaProgressBarProps {\n /** The element id. */\n id?: string;\n /** The current value (controlled). */\n value?: number;\n /** The smallest value allowed for the input. @default 0 */\n minValue?: number;\n /** The largest value allowed for the input. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. 1 of 4). */\n valueLabel?: string;\n /** Whether presentation is indeterminate when progress isn't known. */\n isIndeterminate?: boolean;\n /** The display format of the value label. */\n formatOptions?: Intl.NumberFormatOptions;\n /** The content to display as the label. */\n label?:
|
|
1
|
+
{"version":3,"file":"createProgressBar.js","names":[],"sources":["../../src/progress/createProgressBar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/progress/useProgressBar.ts\n\n/**\n * ProgressBar hook for Solidaria\n *\n * Provides the accessibility implementation for a progress bar component.\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n *\n * This is a 1:1 port of @react-aria/progress's useProgressBar hook.\n */\n\nimport { createLabel } from \"../label/createLabel\";\nimport type { JSX } from \"@solidjs/web\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaProgressBarProps {\n /** The element id. */\n id?: string;\n /** The current value (controlled). */\n value?: number;\n /** The smallest value allowed for the input. @default 0 */\n minValue?: number;\n /** The largest value allowed for the input. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. 1 of 4). */\n valueLabel?: string;\n /** Whether presentation is indeterminate when progress isn't known. */\n isIndeterminate?: boolean;\n /** The display format of the value label. */\n formatOptions?: Intl.NumberFormatOptions;\n /** The content to display as the label. */\n label?: JSX.Element;\n /** An accessibility label for this item. */\n \"aria-label\"?: string;\n /** Identifies the element (or elements) that labels the current element. */\n \"aria-labelledby\"?: string;\n /** Identifies the element (or elements) that describes the object. */\n \"aria-describedby\"?: string;\n /** Identifies the element (or elements) that provide a detailed, extended description for the object. */\n \"aria-details\"?: string;\n}\n\nexport interface ProgressBarAria {\n /** Props for the progress bar container element. */\n progressBarProps: Record<string, unknown>;\n /** Props for the progress bar's visual label element (if any). */\n labelProps: Record<string, unknown>;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getSafeRange(min: number, max: number): number {\n const range = max - min;\n return Number.isFinite(range) && range > 0 ? range : 1;\n}\n\n/**\n * Provides the accessibility implementation for a progress bar component.\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n */\nexport function createProgressBar(\n props: MaybeAccessor<AriaProgressBarProps> = {},\n): ProgressBarAria {\n const getProps = () => access(props);\n\n // Create label handling\n const labelAria = createLabel({\n get id() {\n return getProps().id;\n },\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n // Progress bar is not an HTML input element so it\n // shouldn't be labeled by a <label> element.\n labelElementType: \"span\",\n });\n\n // Build progress bar props\n const getProgressBarProps = (): Record<string, unknown> => {\n const p = getProps();\n const value = p.value ?? 0;\n const minValue = p.minValue ?? 0;\n const maxValue = p.maxValue ?? 100;\n const isIndeterminate = p.isIndeterminate ?? false;\n const formatOptions = p.formatOptions ?? { style: \"percent\" as const };\n\n const clampedValue = clamp(value, minValue, maxValue);\n const percentage = (clampedValue - minValue) / getSafeRange(minValue, maxValue);\n\n // Format value label\n let valueLabel = p.valueLabel;\n if (!isIndeterminate && !valueLabel) {\n const valueToFormat = formatOptions.style === \"percent\" ? percentage : clampedValue;\n try {\n const formatter = new Intl.NumberFormat(undefined, formatOptions);\n valueLabel = formatter.format(valueToFormat);\n } catch {\n // Fallback if formatting fails\n valueLabel = `${Math.round(percentage * 100)}%`;\n }\n }\n\n const domProps = filterDOMProps(p as Record<string, unknown>, { labelable: true });\n\n return mergeProps(domProps, labelAria.fieldProps as Record<string, unknown>, {\n \"aria-valuenow\": isIndeterminate ? undefined : clampedValue,\n \"aria-valuemin\": minValue,\n \"aria-valuemax\": maxValue,\n \"aria-valuetext\": isIndeterminate ? undefined : valueLabel,\n role: \"progressbar\",\n });\n };\n\n return {\n get progressBarProps() {\n return getProgressBarProps();\n },\n get labelProps() {\n return labelAria.labelProps as Record<string, unknown>;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,SAAS,MAAM,OAAe,KAAa,KAAqB;CAC9D,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC3C;AAEA,SAAS,aAAa,KAAa,KAAqB;CACtD,MAAM,QAAQ,MAAM;CACpB,OAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,IAAI,QAAQ;AACvD;;;;;;AAOA,SAAgB,kBACd,QAA6C,CAAC,GAC7B;CACjB,MAAM,iBAAiB,OAAO,KAAK;CAGnC,MAAM,YAAY,YAAY;EAC5B,IAAI,KAAK;GACP,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,QAAQ;GACV,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,eAAe;GACjB,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,oBAAoB;GACtB,OAAO,SAAS,CAAC,CAAC;EACpB;EAGA,kBAAkB;CACpB,CAAC;CAGD,MAAM,4BAAqD;EACzD,MAAM,IAAI,SAAS;EACnB,MAAM,QAAQ,EAAE,SAAS;EACzB,MAAM,WAAW,EAAE,YAAY;EAC/B,MAAM,WAAW,EAAE,YAAY;EAC/B,MAAM,kBAAkB,EAAE,mBAAmB;EAC7C,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,UAAmB;EAErE,MAAM,eAAe,MAAM,OAAO,UAAU,QAAQ;EACpD,MAAM,cAAc,eAAe,YAAY,aAAa,UAAU,QAAQ;EAG9E,IAAI,aAAa,EAAE;EACnB,IAAI,CAAC,mBAAmB,CAAC,YAAY;GACnC,MAAM,gBAAgB,cAAc,UAAU,YAAY,aAAa;GACvE,IAAI;IAEF,aAAa,IADS,KAAK,aAAa,KAAA,GAAW,aAC9B,CAAC,CAAC,OAAO,aAAa;GAC7C,QAAQ;IAEN,aAAa,GAAG,KAAK,MAAM,aAAa,GAAG,EAAE;GAC/C;EACF;EAEA,MAAM,WAAW,eAAe,GAA8B,EAAE,WAAW,KAAK,CAAC;EAEjF,OAAO,WAAW,UAAU,UAAU,YAAuC;GAC3E,iBAAiB,kBAAkB,KAAA,IAAY;GAC/C,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB,kBAAkB,KAAA,IAAY;GAChD,MAAM;EACR,CAAC;CACH;CAEA,OAAO;EACL,IAAI,mBAAmB;GACrB,OAAO,oBAAoB;EAC7B;EACA,IAAI,aAAa;GACf,OAAO,UAAU;EACnB;CACF;AACF"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/progress/useProgressBar.ts
|
|
13
|
+
import { t as mergeProps } from "./mergeProps.jsx";
|
|
2
14
|
import { t as filterDOMProps } from "./filterDOMProps.jsx";
|
|
3
15
|
import { t as access } from "./reactivity.jsx";
|
|
4
16
|
import { t as createLabel } from "./createLabel.jsx";
|
|
@@ -26,7 +38,7 @@ function getSafeRange(min, max) {
|
|
|
26
38
|
*/
|
|
27
39
|
function createProgressBar(props = {}) {
|
|
28
40
|
const getProps = () => access(props);
|
|
29
|
-
const
|
|
41
|
+
const labelAria = createLabel({
|
|
30
42
|
get id() {
|
|
31
43
|
return getProps().id;
|
|
32
44
|
},
|
|
@@ -59,7 +71,8 @@ function createProgressBar(props = {}) {
|
|
|
59
71
|
valueLabel = `${Math.round(percentage * 100)}%`;
|
|
60
72
|
}
|
|
61
73
|
}
|
|
62
|
-
|
|
74
|
+
const domProps = filterDOMProps(p, { labelable: true });
|
|
75
|
+
return mergeProps(domProps, labelAria.fieldProps, {
|
|
63
76
|
"aria-valuenow": isIndeterminate ? void 0 : clampedValue,
|
|
64
77
|
"aria-valuemin": minValue,
|
|
65
78
|
"aria-valuemax": maxValue,
|
|
@@ -72,7 +85,7 @@ function createProgressBar(props = {}) {
|
|
|
72
85
|
return getProgressBarProps();
|
|
73
86
|
},
|
|
74
87
|
get labelProps() {
|
|
75
|
-
return labelProps;
|
|
88
|
+
return labelAria.labelProps;
|
|
76
89
|
}
|
|
77
90
|
};
|
|
78
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createProgressBar.jsx","names":[],"sources":["../../src/progress/createProgressBar.ts"],"sourcesContent":["/**\n * ProgressBar hook for Solidaria\n *\n * Provides the accessibility implementation for a progress bar component.\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n *\n * This is a 1:1 port of @react-aria/progress's useProgressBar hook.\n */\n\nimport { createLabel } from \"../label/createLabel\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaProgressBarProps {\n /** The element id. */\n id?: string;\n /** The current value (controlled). */\n value?: number;\n /** The smallest value allowed for the input. @default 0 */\n minValue?: number;\n /** The largest value allowed for the input. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. 1 of 4). */\n valueLabel?: string;\n /** Whether presentation is indeterminate when progress isn't known. */\n isIndeterminate?: boolean;\n /** The display format of the value label. */\n formatOptions?: Intl.NumberFormatOptions;\n /** The content to display as the label. */\n label?:
|
|
1
|
+
{"version":3,"file":"createProgressBar.jsx","names":[],"sources":["../../src/progress/createProgressBar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/progress/useProgressBar.ts\n\n/**\n * ProgressBar hook for Solidaria\n *\n * Provides the accessibility implementation for a progress bar component.\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n *\n * This is a 1:1 port of @react-aria/progress's useProgressBar hook.\n */\n\nimport { createLabel } from \"../label/createLabel\";\nimport type { JSX } from \"@solidjs/web\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaProgressBarProps {\n /** The element id. */\n id?: string;\n /** The current value (controlled). */\n value?: number;\n /** The smallest value allowed for the input. @default 0 */\n minValue?: number;\n /** The largest value allowed for the input. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. 1 of 4). */\n valueLabel?: string;\n /** Whether presentation is indeterminate when progress isn't known. */\n isIndeterminate?: boolean;\n /** The display format of the value label. */\n formatOptions?: Intl.NumberFormatOptions;\n /** The content to display as the label. */\n label?: JSX.Element;\n /** An accessibility label for this item. */\n \"aria-label\"?: string;\n /** Identifies the element (or elements) that labels the current element. */\n \"aria-labelledby\"?: string;\n /** Identifies the element (or elements) that describes the object. */\n \"aria-describedby\"?: string;\n /** Identifies the element (or elements) that provide a detailed, extended description for the object. */\n \"aria-details\"?: string;\n}\n\nexport interface ProgressBarAria {\n /** Props for the progress bar container element. */\n progressBarProps: Record<string, unknown>;\n /** Props for the progress bar's visual label element (if any). */\n labelProps: Record<string, unknown>;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getSafeRange(min: number, max: number): number {\n const range = max - min;\n return Number.isFinite(range) && range > 0 ? range : 1;\n}\n\n/**\n * Provides the accessibility implementation for a progress bar component.\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n */\nexport function createProgressBar(\n props: MaybeAccessor<AriaProgressBarProps> = {},\n): ProgressBarAria {\n const getProps = () => access(props);\n\n // Create label handling\n const labelAria = createLabel({\n get id() {\n return getProps().id;\n },\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n // Progress bar is not an HTML input element so it\n // shouldn't be labeled by a <label> element.\n labelElementType: \"span\",\n });\n\n // Build progress bar props\n const getProgressBarProps = (): Record<string, unknown> => {\n const p = getProps();\n const value = p.value ?? 0;\n const minValue = p.minValue ?? 0;\n const maxValue = p.maxValue ?? 100;\n const isIndeterminate = p.isIndeterminate ?? false;\n const formatOptions = p.formatOptions ?? { style: \"percent\" as const };\n\n const clampedValue = clamp(value, minValue, maxValue);\n const percentage = (clampedValue - minValue) / getSafeRange(minValue, maxValue);\n\n // Format value label\n let valueLabel = p.valueLabel;\n if (!isIndeterminate && !valueLabel) {\n const valueToFormat = formatOptions.style === \"percent\" ? percentage : clampedValue;\n try {\n const formatter = new Intl.NumberFormat(undefined, formatOptions);\n valueLabel = formatter.format(valueToFormat);\n } catch {\n // Fallback if formatting fails\n valueLabel = `${Math.round(percentage * 100)}%`;\n }\n }\n\n const domProps = filterDOMProps(p as Record<string, unknown>, { labelable: true });\n\n return mergeProps(domProps, labelAria.fieldProps as Record<string, unknown>, {\n \"aria-valuenow\": isIndeterminate ? undefined : clampedValue,\n \"aria-valuemin\": minValue,\n \"aria-valuemax\": maxValue,\n \"aria-valuetext\": isIndeterminate ? undefined : valueLabel,\n role: \"progressbar\",\n });\n };\n\n return {\n get progressBarProps() {\n return getProgressBarProps();\n },\n get labelProps() {\n return labelAria.labelProps as Record<string, unknown>;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,SAAS,MAAM,OAAe,KAAa,KAAqB;CAC9D,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC3C;AAEA,SAAS,aAAa,KAAa,KAAqB;CACtD,MAAM,QAAQ,MAAM;CACpB,OAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,IAAI,QAAQ;AACvD;;;;;;AAOA,SAAgB,kBACd,QAA6C,CAAC,GAC7B;CACjB,MAAM,iBAAiB,OAAO,KAAK;CAGnC,MAAM,YAAY,YAAY;EAC5B,IAAI,KAAK;GACP,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,QAAQ;GACV,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,eAAe;GACjB,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,oBAAoB;GACtB,OAAO,SAAS,CAAC,CAAC;EACpB;EAGA,kBAAkB;CACpB,CAAC;CAGD,MAAM,4BAAqD;EACzD,MAAM,IAAI,SAAS;EACnB,MAAM,QAAQ,EAAE,SAAS;EACzB,MAAM,WAAW,EAAE,YAAY;EAC/B,MAAM,WAAW,EAAE,YAAY;EAC/B,MAAM,kBAAkB,EAAE,mBAAmB;EAC7C,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,UAAmB;EAErE,MAAM,eAAe,MAAM,OAAO,UAAU,QAAQ;EACpD,MAAM,cAAc,eAAe,YAAY,aAAa,UAAU,QAAQ;EAG9E,IAAI,aAAa,EAAE;EACnB,IAAI,CAAC,mBAAmB,CAAC,YAAY;GACnC,MAAM,gBAAgB,cAAc,UAAU,YAAY,aAAa;GACvE,IAAI;IAEF,aAAa,IADS,KAAK,aAAa,KAAA,GAAW,aAC9B,CAAC,CAAC,OAAO,aAAa;GAC7C,QAAQ;IAEN,aAAa,GAAG,KAAK,MAAM,aAAa,GAAG,EAAE;GAC/C;EACF;EAEA,MAAM,WAAW,eAAe,GAA8B,EAAE,WAAW,KAAK,CAAC;EAEjF,OAAO,WAAW,UAAU,UAAU,YAAuC;GAC3E,iBAAiB,kBAAkB,KAAA,IAAY;GAC/C,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB,kBAAkB,KAAA,IAAY;GAChD,MAAM;EACR,CAAC;CACH;CAEA,OAAO;EACL,IAAI,mBAAmB;GACrB,OAAO,oBAAoB;EAC7B;EACA,IAAI,aAAa;GACf,OAAO,UAAU;EACnB;CACF;AACF"}
|