@proyecto-viviana/solidaria 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +29 -0
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
- package/dist/actiongroup/index.d.ts +2 -0
- package/dist/actiongroup/index.d.ts.map +1 -0
- package/dist/autocomplete/createAutocomplete.d.ts +16 -12
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +32 -0
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
- package/dist/button/index.d.ts +6 -4
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +8 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +5 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +12 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +6 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/collections/index.d.ts +56 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +16 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +57 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +42 -0
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
- package/dist/datepicker/createDateSegment.d.ts +11 -3
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +29 -0
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
- package/dist/datepicker/index.d.ts +7 -4
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +6 -2
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +55 -4
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +1 -1
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGrid.d.ts.map +1 -1
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +6 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +4 -4
- package/dist/gridlist/types.d.ts +11 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +52 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18089 -15690
- package/dist/index.js.map +1 -7
- package/dist/index.jsx +18242 -0
- package/dist/index.jsx.map +1 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -2
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -3
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/link/createLink.d.ts +23 -7
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +12 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +21 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/menu/createMenu.d.ts +8 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +16 -4
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/numberfield/createNumberField.d.ts +27 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +19 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/popover/calculatePosition.d.ts +4 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +3 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/radio/createRadio.d.ts +7 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +11 -11
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/index.d.ts +1 -1
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/ssr/index.d.ts +1 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/switch/createSwitch.d.ts +6 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/types.d.ts +15 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +28 -25
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tag/createTag.d.ts +2 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +6 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toggle/createToggle.d.ts +9 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tree/createTree.d.ts +3 -3
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/types.d.ts +13 -5
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +12 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/package.json +34 -32
- package/src/actiongroup/createActionGroup.ts +334 -0
- package/src/actiongroup/index.ts +8 -0
- package/src/autocomplete/createAutocomplete.ts +137 -131
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +121 -0
- package/src/button/index.ts +10 -4
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +102 -48
- package/src/calendar/createCalendarGrid.ts +78 -47
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +115 -37
- package/src/calendar/index.ts +5 -9
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +227 -0
- package/src/checkbox/createCheckbox.ts +13 -21
- package/src/checkbox/createCheckboxGroup.ts +86 -45
- package/src/checkbox/createCheckboxGroupItem.ts +16 -27
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +246 -0
- package/src/color/createColorArea.ts +458 -314
- package/src/color/createColorField.ts +186 -137
- package/src/color/createColorSlider.ts +444 -197
- package/src/color/createColorSwatch.ts +65 -40
- package/src/color/createColorWheel.ts +343 -208
- package/src/color/index.ts +24 -24
- package/src/color/types.ts +198 -116
- package/src/combobox/createComboBox.ts +727 -647
- package/src/combobox/index.ts +6 -6
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +294 -63
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +294 -0
- package/src/datepicker/createDateSegment.ts +316 -75
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +352 -0
- package/src/datepicker/index.ts +24 -11
- package/src/dialog/createDialog.ts +127 -120
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +19 -19
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -18
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +218 -209
- package/src/dnd/createDraggableCollection.ts +96 -63
- package/src/dnd/createDraggableItem.ts +260 -243
- package/src/dnd/createDrop.ts +313 -321
- package/src/dnd/createDroppableCollection.ts +799 -293
- package/src/dnd/createDroppableItem.ts +215 -213
- package/src/dnd/index.ts +66 -47
- package/src/dnd/types.ts +86 -89
- package/src/dnd/utils.ts +281 -294
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +305 -321
- package/src/focus/createFocusRestore.ts +300 -313
- package/src/focus/createVirtualFocus.ts +380 -396
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +201 -224
- package/src/form/index.ts +8 -11
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +38 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +45 -24
- package/src/gridlist/createGridListItem.ts +68 -23
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +4 -4
- package/src/gridlist/types.ts +11 -7
- package/src/i18n/createCollator.ts +66 -79
- package/src/i18n/createDateFormatter.ts +75 -83
- package/src/i18n/createFilter.ts +118 -131
- package/src/i18n/createNumberFormatter.ts +50 -52
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +37 -40
- package/src/i18n/locale.tsx +163 -188
- package/src/i18n/utils.ts +95 -99
- package/src/index.ts +114 -164
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +16 -11
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +24 -16
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +75 -82
- package/src/interactions/createKeyboard.ts +2 -2
- package/src/interactions/createLongPress.ts +174 -174
- package/src/interactions/createMove.ts +299 -289
- package/src/interactions/createPress.ts +168 -91
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +356 -377
- package/src/landmark/index.ts +8 -8
- package/src/link/createLink.ts +96 -54
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +319 -269
- package/src/listbox/createOption.ts +208 -151
- package/src/listbox/index.ts +8 -12
- package/src/live-announcer/announce.ts +295 -322
- package/src/live-announcer/index.ts +9 -9
- package/src/menu/createMenu.ts +434 -396
- package/src/menu/createMenuItem.ts +201 -149
- package/src/menu/createMenuTrigger.ts +88 -88
- package/src/menu/index.ts +9 -18
- package/src/meter/createMeter.ts +7 -20
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +368 -268
- package/src/numberfield/index.ts +5 -5
- package/src/overlays/ariaHideOutside.ts +223 -219
- package/src/overlays/createInteractOutside.ts +152 -149
- package/src/overlays/createModal.tsx +238 -202
- package/src/overlays/createOverlay.ts +195 -155
- package/src/overlays/createOverlayTrigger.ts +85 -85
- package/src/overlays/createPreventScroll.ts +288 -266
- package/src/overlays/index.ts +37 -44
- package/src/popover/calculatePosition.ts +117 -119
- package/src/popover/createOverlayPosition.ts +52 -43
- package/src/popover/createPopover.ts +63 -24
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +36 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +142 -62
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +269 -186
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +276 -236
- package/src/select/createSelect.ts +430 -395
- package/src/select/index.ts +9 -14
- package/src/selection/createTypeSelect.ts +11 -11
- package/src/selection/index.ts +1 -1
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +333 -349
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +331 -370
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +9 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +155 -86
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +149 -29
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +12 -11
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +15 -7
- package/src/tabs/createTabs.ts +138 -127
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +171 -40
- package/src/tag/createTagGroup.ts +50 -39
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +34 -26
- package/src/toast/createToastRegion.ts +169 -27
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +95 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +226 -169
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +66 -79
- package/src/tooltip/createTooltipTrigger.ts +238 -222
- package/src/tooltip/index.ts +6 -6
- package/src/tree/createTree.ts +259 -246
- package/src/tree/createTreeItem.ts +282 -233
- package/src/tree/createTreeSelectionCheckbox.ts +71 -68
- package/src/tree/index.ts +16 -16
- package/src/tree/types.ts +95 -87
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +53 -54
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +12 -22
- package/src/utils/mergeProps.ts +42 -15
- package/src/utils/platform.ts +16 -6
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +127 -124
- package/src/visually-hidden/index.ts +6 -6
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -15875
- package/dist/index.ssr.js.map +0 -7
- package/src/i18n/NumberFormatter.ts +0 -266
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* All behaviors, edge cases, and platform-specific handling are preserved.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { createSignal, JSX, Accessor, onCleanup } from
|
|
9
|
-
import { PressEvent, PointerType, createPressEvent, type PressEventSource } from
|
|
8
|
+
import { createSignal, JSX, Accessor, onCleanup } from "solid-js";
|
|
9
|
+
import { PressEvent, PointerType, createPressEvent, type PressEventSource } from "./PressEvent";
|
|
10
10
|
import {
|
|
11
11
|
nodeContains,
|
|
12
12
|
getEventTarget,
|
|
@@ -25,11 +25,10 @@ import {
|
|
|
25
25
|
isMac,
|
|
26
26
|
createGlobalListeners,
|
|
27
27
|
setEventTarget,
|
|
28
|
-
} from
|
|
28
|
+
} from "../utils";
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
export {
|
|
32
|
-
export type { IPressEvent, PressEventType } from './PressEvent';
|
|
30
|
+
export { PressEvent, type PointerType } from "./PressEvent";
|
|
31
|
+
export type { IPressEvent, PressEventType } from "./PressEvent";
|
|
33
32
|
|
|
34
33
|
export interface CreatePressProps {
|
|
35
34
|
/** Whether the target is currently disabled. */
|
|
@@ -71,29 +70,29 @@ export interface PressResult {
|
|
|
71
70
|
}
|
|
72
71
|
|
|
73
72
|
function isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): boolean {
|
|
74
|
-
if (typeof isDisabled ===
|
|
73
|
+
if (typeof isDisabled === "function") {
|
|
75
74
|
return isDisabled();
|
|
76
75
|
}
|
|
77
76
|
return isDisabled ?? false;
|
|
78
77
|
}
|
|
79
78
|
|
|
80
79
|
function isPressedValue(isPressed: Accessor<boolean> | boolean | undefined): boolean {
|
|
81
|
-
if (typeof isPressed ===
|
|
80
|
+
if (typeof isPressed === "function") {
|
|
82
81
|
return isPressed();
|
|
83
82
|
}
|
|
84
83
|
return isPressed ?? false;
|
|
85
84
|
}
|
|
86
85
|
|
|
87
|
-
//
|
|
88
|
-
const
|
|
86
|
+
// Track which links have been programmatically clicked to avoid double activation
|
|
87
|
+
const linkClickedSet = new WeakSet<HTMLElement>();
|
|
89
88
|
|
|
90
89
|
// CSS for preventing double-tap zoom delay
|
|
91
90
|
let pressableCSSInjected = false;
|
|
92
91
|
function injectPressableCSS(): void {
|
|
93
|
-
if (pressableCSSInjected || typeof document ===
|
|
92
|
+
if (pressableCSSInjected || typeof document === "undefined") return;
|
|
94
93
|
|
|
95
|
-
const style = document.createElement(
|
|
96
|
-
style.id =
|
|
94
|
+
const style = document.createElement("style");
|
|
95
|
+
style.id = "solidaria-pressable-style";
|
|
97
96
|
style.textContent = `
|
|
98
97
|
[data-solidaria-pressable] {
|
|
99
98
|
touch-action: pan-x pan-y pinch-zoom;
|
|
@@ -136,6 +135,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
136
135
|
userSelect: undefined as string | undefined,
|
|
137
136
|
metaKeyEvents: null as Map<string, KeyboardEvent> | null,
|
|
138
137
|
clickCleanup: null as (() => void) | null,
|
|
138
|
+
focusCleanup: null as (() => void) | null,
|
|
139
139
|
};
|
|
140
140
|
|
|
141
141
|
// Global listeners manager
|
|
@@ -146,7 +146,10 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
146
146
|
|
|
147
147
|
// --- Event Triggers ---
|
|
148
148
|
|
|
149
|
-
const triggerPressStart = (
|
|
149
|
+
const triggerPressStart = (
|
|
150
|
+
originalEvent: PressEventSource,
|
|
151
|
+
pointerType: PointerType,
|
|
152
|
+
): boolean => {
|
|
150
153
|
if (isDisabledValue(props.isDisabled) || pressState.didFirePressStart) {
|
|
151
154
|
return false;
|
|
152
155
|
}
|
|
@@ -155,7 +158,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
155
158
|
pressState.isTriggeringEvent = true;
|
|
156
159
|
|
|
157
160
|
if (props.onPressStart) {
|
|
158
|
-
const event = createPressEvent(
|
|
161
|
+
const event = createPressEvent("pressstart", pointerType, originalEvent, pressState.target!);
|
|
159
162
|
props.onPressStart(event);
|
|
160
163
|
shouldStopPropagation = event.shouldStopPropagation;
|
|
161
164
|
}
|
|
@@ -171,9 +174,13 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
171
174
|
return shouldStopPropagation;
|
|
172
175
|
};
|
|
173
176
|
|
|
174
|
-
const triggerPressEnd = (
|
|
177
|
+
const triggerPressEnd = (
|
|
178
|
+
originalEvent: PressEventSource,
|
|
179
|
+
pointerType: PointerType,
|
|
180
|
+
wasPressed = true,
|
|
181
|
+
): boolean => {
|
|
175
182
|
if (!pressState.didFirePressStart) {
|
|
176
|
-
return
|
|
183
|
+
return false;
|
|
177
184
|
}
|
|
178
185
|
|
|
179
186
|
pressState.didFirePressStart = false;
|
|
@@ -181,7 +188,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
181
188
|
|
|
182
189
|
let shouldStopPropagation = true;
|
|
183
190
|
if (props.onPressEnd) {
|
|
184
|
-
const event = createPressEvent(
|
|
191
|
+
const event = createPressEvent("pressend", pointerType, originalEvent, pressState.target!);
|
|
185
192
|
props.onPressEnd(event);
|
|
186
193
|
shouldStopPropagation = event.shouldStopPropagation;
|
|
187
194
|
}
|
|
@@ -194,8 +201,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
194
201
|
|
|
195
202
|
if (wasPressed && !isDisabledValue(props.isDisabled)) {
|
|
196
203
|
if (props.onPress) {
|
|
197
|
-
const event = createPressEvent(
|
|
204
|
+
const event = createPressEvent("press", pointerType, originalEvent, pressState.target!);
|
|
198
205
|
props.onPress(event);
|
|
206
|
+
shouldStopPropagation = shouldStopPropagation && event.shouldStopPropagation;
|
|
199
207
|
}
|
|
200
208
|
}
|
|
201
209
|
|
|
@@ -206,12 +214,12 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
206
214
|
|
|
207
215
|
const triggerPressUp = (originalEvent: PressEventSource, pointerType: PointerType): boolean => {
|
|
208
216
|
if (isDisabledValue(props.isDisabled)) {
|
|
209
|
-
return
|
|
217
|
+
return false;
|
|
210
218
|
}
|
|
211
219
|
|
|
212
220
|
if (props.onPressUp) {
|
|
213
221
|
pressState.isTriggeringEvent = true;
|
|
214
|
-
const event = createPressEvent(
|
|
222
|
+
const event = createPressEvent("pressup", pointerType, originalEvent, pressState.target!);
|
|
215
223
|
props.onPressUp(event);
|
|
216
224
|
pressState.isTriggeringEvent = false;
|
|
217
225
|
return event.shouldStopPropagation;
|
|
@@ -220,13 +228,16 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
220
228
|
return true;
|
|
221
229
|
};
|
|
222
230
|
|
|
223
|
-
const triggerSyntheticClick = (
|
|
231
|
+
const triggerSyntheticClick = (
|
|
232
|
+
originalEvent: KeyboardEvent | TouchEvent,
|
|
233
|
+
target: HTMLElement,
|
|
234
|
+
): void => {
|
|
224
235
|
if (isDisabledValue(props.isDisabled)) {
|
|
225
236
|
return;
|
|
226
237
|
}
|
|
227
238
|
|
|
228
239
|
if (props.onClick) {
|
|
229
|
-
const event = new MouseEvent(
|
|
240
|
+
const event = new MouseEvent("click", originalEvent as MouseEventInit);
|
|
230
241
|
setEventTarget(event, target);
|
|
231
242
|
props.onClick(event);
|
|
232
243
|
}
|
|
@@ -254,6 +265,11 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
254
265
|
pressState.clickCleanup = null;
|
|
255
266
|
}
|
|
256
267
|
|
|
268
|
+
if (pressState.focusCleanup) {
|
|
269
|
+
pressState.focusCleanup();
|
|
270
|
+
pressState.focusCleanup = null;
|
|
271
|
+
}
|
|
272
|
+
|
|
257
273
|
if (!props.allowTextSelectionOnPress) {
|
|
258
274
|
restoreTextSelection(pressState.target as HTMLElement);
|
|
259
275
|
}
|
|
@@ -271,7 +287,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
271
287
|
// iOS VoiceOver bug: fires pointer events with incorrect coordinates
|
|
272
288
|
// Let the click handler deal with it instead
|
|
273
289
|
if (isVirtualPointerEvent(e)) {
|
|
274
|
-
pressState.pointerType =
|
|
290
|
+
pressState.pointerType = "virtual";
|
|
275
291
|
return;
|
|
276
292
|
}
|
|
277
293
|
|
|
@@ -293,8 +309,8 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
293
309
|
}
|
|
294
310
|
|
|
295
311
|
// Set up global listeners for pointer events
|
|
296
|
-
addGlobalListener(
|
|
297
|
-
addGlobalListener(
|
|
312
|
+
addGlobalListener("pointerup", onPointerUp);
|
|
313
|
+
addGlobalListener("pointercancel", onPointerCancel);
|
|
298
314
|
}
|
|
299
315
|
};
|
|
300
316
|
|
|
@@ -305,9 +321,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
305
321
|
}
|
|
306
322
|
|
|
307
323
|
if (e.button === 0) {
|
|
308
|
-
// Prevent focus if requested
|
|
309
324
|
if (props.preventFocusOnPress) {
|
|
310
|
-
|
|
325
|
+
pressState.focusCleanup?.();
|
|
326
|
+
pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;
|
|
311
327
|
}
|
|
312
328
|
e.stopPropagation();
|
|
313
329
|
}
|
|
@@ -316,12 +332,17 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
316
332
|
const onPointerUp = (e: PointerEvent): void => {
|
|
317
333
|
// Only handle events for our active pointer
|
|
318
334
|
const button = e.button ?? 0;
|
|
319
|
-
if (
|
|
335
|
+
if (
|
|
336
|
+
e.pointerId !== pressState.activePointerId ||
|
|
337
|
+
!pressState.isPressed ||
|
|
338
|
+
button !== 0 ||
|
|
339
|
+
!pressState.target
|
|
340
|
+
) {
|
|
320
341
|
return;
|
|
321
342
|
}
|
|
322
343
|
|
|
323
344
|
const isOverTarget = nodeContains(pressState.target, getEventTarget(e) as Element);
|
|
324
|
-
if (isOverTarget && pressState.pointerType != null && pressState.pointerType !==
|
|
345
|
+
if (isOverTarget && pressState.pointerType != null && pressState.pointerType !== "virtual") {
|
|
325
346
|
// Pointer released over target - wait for onClick to complete the press sequence.
|
|
326
347
|
// This matches React-Aria's behavior for compatibility with DOM mutations and third-party libraries.
|
|
327
348
|
// https://github.com/adobe/react-spectrum/issues/1513
|
|
@@ -336,7 +357,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
336
357
|
let clickFired = false;
|
|
337
358
|
const timeout = setTimeout(() => {
|
|
338
359
|
// Guard for SSR/test environments where the element may no longer exist
|
|
339
|
-
if (typeof HTMLElement ===
|
|
360
|
+
if (typeof HTMLElement === "undefined") {
|
|
340
361
|
return;
|
|
341
362
|
}
|
|
342
363
|
if (pressState.isPressed && pressState.target instanceof HTMLElement) {
|
|
@@ -357,12 +378,12 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
357
378
|
const clickListener = () => {
|
|
358
379
|
clickFired = true;
|
|
359
380
|
};
|
|
360
|
-
doc.addEventListener(
|
|
381
|
+
doc.addEventListener("click", clickListener, true);
|
|
361
382
|
|
|
362
383
|
// Store cleanup function
|
|
363
384
|
pressState.clickCleanup = () => {
|
|
364
385
|
clearTimeout(timeout);
|
|
365
|
-
doc.removeEventListener(
|
|
386
|
+
doc.removeEventListener("click", clickListener, true);
|
|
366
387
|
};
|
|
367
388
|
|
|
368
389
|
pressState.isOverTarget = false;
|
|
@@ -378,15 +399,35 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
378
399
|
}
|
|
379
400
|
};
|
|
380
401
|
|
|
402
|
+
const onPointerUpTarget: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
|
|
403
|
+
if (!nodeContains(e.currentTarget, getEventTarget(e)) || pressState.pointerType === "virtual") {
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
if (e.button === 0 && !pressState.isPressed) {
|
|
408
|
+
triggerPressUp(e, (pressState.pointerType || e.pointerType || "mouse") as PointerType);
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
|
|
381
412
|
const onPointerEnter: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
|
|
382
|
-
if (
|
|
413
|
+
if (
|
|
414
|
+
e.pointerId === pressState.activePointerId &&
|
|
415
|
+
pressState.target &&
|
|
416
|
+
!pressState.isOverTarget &&
|
|
417
|
+
pressState.pointerType != null
|
|
418
|
+
) {
|
|
383
419
|
pressState.isOverTarget = true;
|
|
384
420
|
triggerPressStart(e, pressState.pointerType);
|
|
385
421
|
}
|
|
386
422
|
};
|
|
387
423
|
|
|
388
424
|
const onPointerLeave: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
|
|
389
|
-
if (
|
|
425
|
+
if (
|
|
426
|
+
e.pointerId === pressState.activePointerId &&
|
|
427
|
+
pressState.target &&
|
|
428
|
+
pressState.isOverTarget &&
|
|
429
|
+
pressState.pointerType != null
|
|
430
|
+
) {
|
|
390
431
|
pressState.isOverTarget = false;
|
|
391
432
|
triggerPressEnd(e, pressState.pointerType, false);
|
|
392
433
|
|
|
@@ -438,18 +479,21 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
438
479
|
pressState.isOverTarget = true;
|
|
439
480
|
pressState.isPressed = true;
|
|
440
481
|
pressState.target = e.currentTarget;
|
|
441
|
-
pressState.pointerType =
|
|
482
|
+
pressState.pointerType = "touch";
|
|
442
483
|
|
|
443
484
|
if (!props.allowTextSelectionOnPress) {
|
|
444
485
|
disableTextSelection(pressState.target as HTMLElement);
|
|
445
486
|
}
|
|
446
487
|
|
|
447
|
-
const shouldStopPropagation = triggerPressStart(
|
|
488
|
+
const shouldStopPropagation = triggerPressStart(
|
|
489
|
+
createTouchEvent(pressState.target, e),
|
|
490
|
+
"touch",
|
|
491
|
+
);
|
|
448
492
|
if (shouldStopPropagation) {
|
|
449
493
|
e.stopPropagation();
|
|
450
494
|
}
|
|
451
495
|
|
|
452
|
-
addGlobalListener(
|
|
496
|
+
addGlobalListener("scroll", onScroll, { capture: true, isWindow: true });
|
|
453
497
|
};
|
|
454
498
|
|
|
455
499
|
const onTouchMove: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {
|
|
@@ -468,9 +512,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
468
512
|
if (isOverTarget !== pressState.isOverTarget) {
|
|
469
513
|
pressState.isOverTarget = isOverTarget;
|
|
470
514
|
if (isOverTarget) {
|
|
471
|
-
triggerPressStart(createTouchEvent(target, e),
|
|
515
|
+
triggerPressStart(createTouchEvent(target, e), "touch");
|
|
472
516
|
} else {
|
|
473
|
-
triggerPressEnd(createTouchEvent(target, e),
|
|
517
|
+
triggerPressEnd(createTouchEvent(target, e), "touch", false);
|
|
474
518
|
|
|
475
519
|
if (props.shouldCancelOnPointerExit) {
|
|
476
520
|
cancel(createTouchEvent(target, e));
|
|
@@ -493,11 +537,19 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
493
537
|
const isOverTarget = isPointOverTarget(touch, target);
|
|
494
538
|
|
|
495
539
|
if (isOverTarget) {
|
|
496
|
-
triggerPressUp(createTouchEvent(target, e),
|
|
540
|
+
triggerPressUp(createTouchEvent(target, e), "touch");
|
|
541
|
+
triggerPressEnd(
|
|
542
|
+
createTouchEvent(target, e),
|
|
543
|
+
"touch",
|
|
544
|
+
isOverTarget && pressState.isOverTarget,
|
|
545
|
+
);
|
|
546
|
+
if (target instanceof HTMLElement) {
|
|
547
|
+
triggerSyntheticClick(e, target);
|
|
548
|
+
}
|
|
549
|
+
} else {
|
|
550
|
+
triggerPressEnd(createTouchEvent(target, e), "touch", false);
|
|
497
551
|
}
|
|
498
552
|
|
|
499
|
-
triggerPressEnd(createTouchEvent(target, e), 'touch', isOverTarget && pressState.isOverTarget);
|
|
500
|
-
|
|
501
553
|
pressState.isPressed = false;
|
|
502
554
|
pressState.isOverTarget = false;
|
|
503
555
|
pressState.activePointerId = null;
|
|
@@ -541,14 +593,19 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
541
593
|
pressState.isPressed = true;
|
|
542
594
|
pressState.isOverTarget = true;
|
|
543
595
|
pressState.target = e.currentTarget;
|
|
544
|
-
pressState.pointerType = isVirtualClick(e) ?
|
|
596
|
+
pressState.pointerType = isVirtualClick(e) ? "virtual" : "mouse";
|
|
545
597
|
|
|
546
598
|
const shouldStopPropagation = triggerPressStart(e, pressState.pointerType);
|
|
547
599
|
if (shouldStopPropagation) {
|
|
548
600
|
e.stopPropagation();
|
|
549
601
|
}
|
|
550
602
|
|
|
551
|
-
|
|
603
|
+
if (props.preventFocusOnPress) {
|
|
604
|
+
pressState.focusCleanup?.();
|
|
605
|
+
pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
addGlobalListener("mouseup", onMouseUpFallback);
|
|
552
609
|
};
|
|
553
610
|
|
|
554
611
|
const onMouseUpFallback = (e: MouseEvent): void => {
|
|
@@ -557,7 +614,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
557
614
|
}
|
|
558
615
|
|
|
559
616
|
if (!pressState.ignoreEmulatedMouseEvents && e.button === 0 && !pressState.isPressed) {
|
|
560
|
-
triggerPressUp(e, pressState.pointerType ||
|
|
617
|
+
triggerPressUp(e, pressState.pointerType || "mouse");
|
|
561
618
|
}
|
|
562
619
|
};
|
|
563
620
|
|
|
@@ -566,7 +623,11 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
566
623
|
return;
|
|
567
624
|
}
|
|
568
625
|
|
|
569
|
-
if (
|
|
626
|
+
if (
|
|
627
|
+
pressState.isPressed &&
|
|
628
|
+
!pressState.ignoreEmulatedMouseEvents &&
|
|
629
|
+
pressState.pointerType != null
|
|
630
|
+
) {
|
|
570
631
|
pressState.isOverTarget = true;
|
|
571
632
|
triggerPressStart(e, pressState.pointerType);
|
|
572
633
|
}
|
|
@@ -577,7 +638,11 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
577
638
|
return;
|
|
578
639
|
}
|
|
579
640
|
|
|
580
|
-
if (
|
|
641
|
+
if (
|
|
642
|
+
pressState.isPressed &&
|
|
643
|
+
!pressState.ignoreEmulatedMouseEvents &&
|
|
644
|
+
pressState.pointerType != null
|
|
645
|
+
) {
|
|
581
646
|
pressState.isOverTarget = false;
|
|
582
647
|
triggerPressEnd(e, pressState.pointerType, false);
|
|
583
648
|
|
|
@@ -595,10 +660,6 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
595
660
|
}
|
|
596
661
|
|
|
597
662
|
if (!isValidKeyboardEvent(e, e.currentTarget)) {
|
|
598
|
-
// Allow event to propagate for invalid keys
|
|
599
|
-
if (e.key === 'Enter') {
|
|
600
|
-
e.stopPropagation();
|
|
601
|
-
}
|
|
602
663
|
return;
|
|
603
664
|
}
|
|
604
665
|
|
|
@@ -611,9 +672,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
611
672
|
pressState.target = e.currentTarget;
|
|
612
673
|
pressState.isPressed = true;
|
|
613
674
|
pressState.isOverTarget = true;
|
|
614
|
-
pressState.pointerType =
|
|
675
|
+
pressState.pointerType = "keyboard";
|
|
615
676
|
|
|
616
|
-
const shouldStopPropagation = triggerPressStart(e,
|
|
677
|
+
const shouldStopPropagation = triggerPressStart(e, "keyboard");
|
|
617
678
|
if (shouldStopPropagation) {
|
|
618
679
|
e.stopPropagation();
|
|
619
680
|
}
|
|
@@ -632,16 +693,16 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
632
693
|
|
|
633
694
|
// For Enter key on native buttons, the click fires on keydown
|
|
634
695
|
// Set flag to ignore it
|
|
635
|
-
if (e.key ===
|
|
696
|
+
if (e.key === "Enter") {
|
|
636
697
|
pressState.ignoreClickAfterPress = true;
|
|
637
698
|
}
|
|
638
699
|
|
|
639
700
|
// Set up global keyup listener
|
|
640
|
-
addGlobalListener(
|
|
701
|
+
addGlobalListener("keyup", onKeyUp, { capture: true });
|
|
641
702
|
};
|
|
642
703
|
|
|
643
704
|
const onKeyUp = (e: KeyboardEvent): void => {
|
|
644
|
-
if (!pressState.isPressed || pressState.pointerType !==
|
|
705
|
+
if (!pressState.isPressed || pressState.pointerType !== "keyboard") {
|
|
645
706
|
return;
|
|
646
707
|
}
|
|
647
708
|
|
|
@@ -650,16 +711,16 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
650
711
|
}
|
|
651
712
|
|
|
652
713
|
// Handle macOS Meta key bug
|
|
653
|
-
if (isMac() && e.key ===
|
|
714
|
+
if (isMac() && e.key === "Meta" && pressState.metaKeyEvents?.size) {
|
|
654
715
|
// When Meta releases, dispatch keyup for any keys that were pressed during
|
|
655
716
|
for (const [key, event] of pressState.metaKeyEvents) {
|
|
656
717
|
pressState.target?.dispatchEvent(
|
|
657
|
-
new KeyboardEvent(
|
|
718
|
+
new KeyboardEvent("keyup", {
|
|
658
719
|
key,
|
|
659
720
|
code: event.code,
|
|
660
721
|
bubbles: true,
|
|
661
722
|
cancelable: true,
|
|
662
|
-
})
|
|
723
|
+
}),
|
|
663
724
|
);
|
|
664
725
|
}
|
|
665
726
|
pressState.metaKeyEvents.clear();
|
|
@@ -667,37 +728,48 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
667
728
|
}
|
|
668
729
|
|
|
669
730
|
const target = pressState.target!;
|
|
670
|
-
const
|
|
671
|
-
const
|
|
731
|
+
const eventTarget = getEventTarget(e) as Element;
|
|
732
|
+
const wasPressed = nodeContains(target, eventTarget);
|
|
733
|
+
const shouldStopPropagation = wasPressed ? triggerPressUp(e, "keyboard") : true;
|
|
734
|
+
const shouldStopPropagationEnd = triggerPressEnd(e, "keyboard", wasPressed);
|
|
672
735
|
|
|
673
736
|
pressState.isPressed = false;
|
|
674
737
|
pressState.pointerType = null;
|
|
675
738
|
|
|
676
739
|
removeAllGlobalListeners();
|
|
677
740
|
|
|
678
|
-
// Prevent default
|
|
679
|
-
|
|
741
|
+
// Prevent default for non-native interactive elements, but preserve native
|
|
742
|
+
// input behavior such as checkbox Space toggling.
|
|
743
|
+
if (shouldPreventDefaultKeyboard(getEventTarget(e) as Element, e.key)) {
|
|
744
|
+
e.preventDefault();
|
|
745
|
+
}
|
|
680
746
|
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
triggerSyntheticClick(e, pressState.target as HTMLElement);
|
|
747
|
+
if (wasPressed && target instanceof HTMLElement) {
|
|
748
|
+
triggerSyntheticClick(e, target);
|
|
684
749
|
}
|
|
685
750
|
|
|
686
|
-
// Handle link activation with non-Enter keys
|
|
687
|
-
//
|
|
688
|
-
if (
|
|
689
|
-
|
|
751
|
+
// Handle link activation with non-Enter keys. Native links only respond to
|
|
752
|
+
// Enter, but role-overridden links should also work with Space.
|
|
753
|
+
if (
|
|
754
|
+
e.key !== "Enter" &&
|
|
755
|
+
isHTMLAnchorLink(target) &&
|
|
756
|
+
wasPressed &&
|
|
757
|
+
!linkClickedSet.has(target as HTMLElement)
|
|
758
|
+
) {
|
|
759
|
+
linkClickedSet.add(target as HTMLElement);
|
|
690
760
|
openLink(target as HTMLAnchorElement, e);
|
|
691
761
|
// Clean up the marker
|
|
692
762
|
setTimeout(() => {
|
|
693
|
-
delete
|
|
763
|
+
linkClickedSet.delete(target as HTMLElement);
|
|
694
764
|
}, 0);
|
|
695
765
|
}
|
|
696
766
|
|
|
697
|
-
// For Space key, the click fires after keyup
|
|
698
|
-
// Set flag to ignore it
|
|
699
|
-
if (e.key ===
|
|
767
|
+
// For Space key on non-native targets, the click fires after keyup.
|
|
768
|
+
// Set flag to ignore it when we already synthesized the click.
|
|
769
|
+
if (e.key === " " && wasPressed && shouldPreventDefaultKeyboard(target, e.key)) {
|
|
700
770
|
pressState.ignoreClickAfterPress = true;
|
|
771
|
+
} else if (e.key === "Enter") {
|
|
772
|
+
pressState.ignoreClickAfterPress = false;
|
|
701
773
|
}
|
|
702
774
|
|
|
703
775
|
if (shouldStopPropagation && shouldStopPropagationEnd) {
|
|
@@ -725,10 +797,6 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
725
797
|
return;
|
|
726
798
|
}
|
|
727
799
|
|
|
728
|
-
// Call user's onClick handler if provided
|
|
729
|
-
// This matches React-Aria's behavior for third-party library compatibility
|
|
730
|
-
props.onClick?.(e);
|
|
731
|
-
|
|
732
800
|
// If triggered from a screen reader or by using element.click(),
|
|
733
801
|
// trigger as if it were a keyboard/virtual click.
|
|
734
802
|
let shouldStopPropagation = true;
|
|
@@ -736,21 +804,25 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
736
804
|
if (
|
|
737
805
|
!pressState.ignoreEmulatedMouseEvents &&
|
|
738
806
|
!pressState.isPressed &&
|
|
739
|
-
(pressState.pointerType ===
|
|
807
|
+
(pressState.pointerType === "virtual" || isVirtualClick(e))
|
|
740
808
|
) {
|
|
741
809
|
pressState.target = e.currentTarget;
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
810
|
+
const stopPressStart = triggerPressStart(e, "virtual");
|
|
811
|
+
const stopPressUp = triggerPressUp(e, "virtual");
|
|
812
|
+
const stopPressEnd = triggerPressEnd(e, "virtual", true);
|
|
813
|
+
props.onClick?.(e);
|
|
814
|
+
shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;
|
|
815
|
+
} else if (pressState.isPressed && pressState.pointerType !== "keyboard") {
|
|
746
816
|
// Complete the press sequence for pointer/touch/mouse events
|
|
747
817
|
const pointerType =
|
|
748
818
|
pressState.pointerType ||
|
|
749
819
|
((e as unknown as PointerEvent).pointerType as PointerType) ||
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
820
|
+
"virtual";
|
|
821
|
+
const stopPressUp = triggerPressUp(e, pointerType);
|
|
822
|
+
const stopPressEnd = triggerPressEnd(e, pointerType, true);
|
|
823
|
+
shouldStopPropagation = stopPressUp && stopPressEnd;
|
|
753
824
|
pressState.isOverTarget = false;
|
|
825
|
+
props.onClick?.(e);
|
|
754
826
|
cancel(e);
|
|
755
827
|
}
|
|
756
828
|
|
|
@@ -775,8 +847,8 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
775
847
|
// Conditionally use pointer events or mouse events based on browser support
|
|
776
848
|
// This matches React-Aria's approach exactly
|
|
777
849
|
|
|
778
|
-
const pressProps: JSX.HTMLAttributes<HTMLElement> & {
|
|
779
|
-
typeof PointerEvent !==
|
|
850
|
+
const pressProps: JSX.HTMLAttributes<HTMLElement> & { "data-solidaria-pressable": string } =
|
|
851
|
+
typeof PointerEvent !== "undefined"
|
|
780
852
|
? {
|
|
781
853
|
// Keyboard events
|
|
782
854
|
onKeyDown,
|
|
@@ -785,6 +857,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
785
857
|
onDragStart,
|
|
786
858
|
// Pointer events (preferred when available)
|
|
787
859
|
onPointerDown,
|
|
860
|
+
onPointerUp: onPointerUpTarget,
|
|
788
861
|
onPointerEnter,
|
|
789
862
|
onPointerLeave,
|
|
790
863
|
// Mouse down only for focus prevention when using pointer events
|
|
@@ -795,7 +868,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
795
868
|
onTouchEnd,
|
|
796
869
|
onTouchCancel,
|
|
797
870
|
// Attribute for CSS touch-action
|
|
798
|
-
|
|
871
|
+
"data-solidaria-pressable": "",
|
|
799
872
|
}
|
|
800
873
|
: {
|
|
801
874
|
// Keyboard events
|
|
@@ -814,7 +887,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
814
887
|
onTouchEnd,
|
|
815
888
|
onTouchCancel,
|
|
816
889
|
// Attribute for CSS touch-action
|
|
817
|
-
|
|
890
|
+
"data-solidaria-pressable": "",
|
|
818
891
|
};
|
|
819
892
|
|
|
820
893
|
// Clean up on unmount
|
|
@@ -825,6 +898,10 @@ export function createPress(props: CreatePressProps = {}): PressResult {
|
|
|
825
898
|
pressState.clickCleanup();
|
|
826
899
|
pressState.clickCleanup = null;
|
|
827
900
|
}
|
|
901
|
+
if (pressState.focusCleanup) {
|
|
902
|
+
pressState.focusCleanup();
|
|
903
|
+
pressState.focusCleanup = null;
|
|
904
|
+
}
|
|
828
905
|
});
|
|
829
906
|
|
|
830
907
|
return {
|