@proyecto-viviana/solidaria 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +5 -5
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.d.ts +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +10 -10
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +7 -7
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/index.d.ts +6 -6
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +6 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +5 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +12 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +6 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/collections/index.d.ts +3 -3
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +10 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +51 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +8 -6
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +10 -2
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +2 -2
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +7 -6
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +2 -2
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +26 -6
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +1 -1
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +6 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +4 -4
- package/dist/gridlist/types.d.ts +11 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +52 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18012 -16820
- package/dist/index.js.map +1 -1
- package/dist/index.jsx +18242 -0
- package/dist/index.jsx.map +1 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -2
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -3
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/link/createLink.d.ts +14 -8
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +11 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +21 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/menu/createMenu.d.ts +7 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +16 -4
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/numberfield/createNumberField.d.ts +9 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/popover/calculatePosition.d.ts +4 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +3 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/radio/createRadio.d.ts +7 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +10 -10
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/index.d.ts +1 -1
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/ssr/index.d.ts +1 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/switch/createSwitch.d.ts +6 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/types.d.ts +15 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +28 -25
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tag/createTag.d.ts +2 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +2 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toggle/createToggle.d.ts +9 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tree/createTree.d.ts +3 -3
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/types.d.ts +10 -6
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +12 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/package.json +32 -32
- package/src/actiongroup/createActionGroup.ts +101 -91
- package/src/actiongroup/index.ts +1 -1
- package/src/autocomplete/createAutocomplete.ts +117 -134
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +25 -32
- package/src/button/index.ts +6 -9
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +98 -46
- package/src/calendar/createCalendarGrid.ts +57 -35
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +92 -31
- package/src/calendar/index.ts +5 -9
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +227 -0
- package/src/checkbox/createCheckbox.ts +13 -21
- package/src/checkbox/createCheckboxGroup.ts +68 -44
- package/src/checkbox/createCheckboxGroupItem.ts +16 -27
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +33 -29
- package/src/color/createColorArea.ts +232 -154
- package/src/color/createColorField.ts +107 -58
- package/src/color/createColorSlider.ts +231 -73
- package/src/color/createColorSwatch.ts +38 -13
- package/src/color/createColorWheel.ts +208 -83
- package/src/color/index.ts +6 -6
- package/src/color/types.ts +98 -16
- package/src/combobox/createComboBox.ts +157 -100
- package/src/combobox/index.ts +1 -1
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +260 -67
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +105 -57
- package/src/datepicker/createDateSegment.ts +183 -96
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +67 -85
- package/src/datepicker/index.ts +13 -14
- package/src/dialog/createDialog.ts +45 -38
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +4 -4
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -21
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +19 -25
- package/src/dnd/createDraggableCollection.ts +4 -4
- package/src/dnd/createDraggableItem.ts +20 -19
- package/src/dnd/createDrop.ts +42 -51
- package/src/dnd/createDroppableCollection.ts +290 -173
- package/src/dnd/createDroppableItem.ts +34 -34
- package/src/dnd/index.ts +23 -12
- package/src/dnd/types.ts +4 -7
- package/src/dnd/utils.ts +36 -49
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +4 -20
- package/src/focus/createFocusRestore.ts +15 -28
- package/src/focus/createVirtualFocus.ts +20 -36
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +20 -43
- package/src/form/index.ts +2 -5
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +36 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +34 -29
- package/src/gridlist/createGridListItem.ts +68 -23
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +4 -4
- package/src/gridlist/types.ts +11 -7
- package/src/i18n/createCollator.ts +5 -18
- package/src/i18n/createDateFormatter.ts +5 -13
- package/src/i18n/createFilter.ts +11 -24
- package/src/i18n/createNumberFormatter.ts +4 -6
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +8 -11
- package/src/i18n/locale.tsx +15 -40
- package/src/i18n/utils.ts +35 -39
- package/src/index.ts +68 -169
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +12 -8
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +20 -13
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +75 -82
- package/src/interactions/createKeyboard.ts +2 -2
- package/src/interactions/createLongPress.ts +23 -23
- package/src/interactions/createMove.ts +72 -62
- package/src/interactions/createPress.ts +164 -87
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +30 -51
- package/src/landmark/index.ts +1 -1
- package/src/link/createLink.ts +83 -56
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +69 -58
- package/src/listbox/createOption.ts +83 -37
- package/src/listbox/index.ts +2 -6
- package/src/live-announcer/announce.ts +44 -71
- package/src/live-announcer/index.ts +1 -1
- package/src/menu/createMenu.ts +79 -50
- package/src/menu/createMenuItem.ts +79 -27
- package/src/menu/createMenuTrigger.ts +15 -15
- package/src/menu/index.ts +3 -12
- package/src/meter/createMeter.ts +7 -15
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +138 -81
- package/src/numberfield/index.ts +1 -1
- package/src/overlays/ariaHideOutside.ts +14 -10
- package/src/overlays/createInteractOutside.ts +21 -18
- package/src/overlays/createModal.tsx +17 -17
- package/src/overlays/createOverlay.ts +38 -8
- package/src/overlays/createOverlayTrigger.ts +16 -16
- package/src/overlays/createPreventScroll.ts +46 -24
- package/src/overlays/index.ts +6 -17
- package/src/popover/calculatePosition.ts +115 -117
- package/src/popover/createOverlayPosition.ts +46 -40
- package/src/popover/createPopover.ts +42 -17
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +31 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +83 -77
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +57 -29
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +57 -44
- package/src/select/createSelect.ts +128 -71
- package/src/select/index.ts +2 -7
- package/src/selection/createTypeSelect.ts +11 -11
- package/src/selection/index.ts +1 -1
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +93 -124
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +8 -47
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +9 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +152 -85
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +149 -29
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +12 -11
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +15 -7
- package/src/tabs/createTabs.ts +74 -92
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +52 -50
- package/src/tag/createTagGroup.ts +47 -41
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +28 -26
- package/src/toast/createToastRegion.ts +169 -26
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +95 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +193 -210
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +11 -24
- package/src/tooltip/createTooltipTrigger.ts +61 -49
- package/src/tooltip/index.ts +2 -2
- package/src/tree/createTree.ts +35 -37
- package/src/tree/createTreeItem.ts +29 -29
- package/src/tree/createTreeSelectionCheckbox.ts +11 -8
- package/src/tree/index.ts +4 -4
- package/src/tree/types.ts +10 -6
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +9 -11
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +12 -22
- package/src/utils/mergeProps.ts +42 -15
- package/src/utils/platform.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +16 -28
- package/src/visually-hidden/index.ts +1 -1
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -17082
- package/dist/index.ssr.js.map +0 -1
- package/src/i18n/NumberFormatter.ts +0 -266
package/src/utils/focus.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Based on @react-aria/utils focus utilities.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { getOwnerDocument } from
|
|
6
|
+
import { getEventTarget, getOwnerDocument, getOwnerWindow, isFocusable } from "./dom";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Focuses an element without scrolling the page.
|
|
@@ -12,12 +12,10 @@ import { getOwnerDocument } from './dom';
|
|
|
12
12
|
export function focusWithoutScrolling(element: HTMLElement | null): void {
|
|
13
13
|
if (!element) return;
|
|
14
14
|
|
|
15
|
-
// Try using the modern preventScroll option
|
|
16
15
|
try {
|
|
17
16
|
element.focus({ preventScroll: true });
|
|
18
17
|
} catch {
|
|
19
18
|
// Fallback for browsers that don't support preventScroll
|
|
20
|
-
// Save scroll positions and restore after focus
|
|
21
19
|
const scrollableElements = getScrollableAncestors(element);
|
|
22
20
|
const scrollPositions = scrollableElements.map((el) => ({
|
|
23
21
|
element: el,
|
|
@@ -27,7 +25,6 @@ export function focusWithoutScrolling(element: HTMLElement | null): void {
|
|
|
27
25
|
|
|
28
26
|
element.focus();
|
|
29
27
|
|
|
30
|
-
// Restore scroll positions
|
|
31
28
|
for (const { element: el, scrollTop, scrollLeft } of scrollPositions) {
|
|
32
29
|
el.scrollTop = scrollTop;
|
|
33
30
|
el.scrollLeft = scrollLeft;
|
|
@@ -48,10 +45,10 @@ function getScrollableAncestors(element: Element): Element[] {
|
|
|
48
45
|
const overflowX = style.overflowX;
|
|
49
46
|
|
|
50
47
|
if (
|
|
51
|
-
overflowY ===
|
|
52
|
-
overflowY ===
|
|
53
|
-
overflowX ===
|
|
54
|
-
overflowX ===
|
|
48
|
+
overflowY === "auto" ||
|
|
49
|
+
overflowY === "scroll" ||
|
|
50
|
+
overflowX === "auto" ||
|
|
51
|
+
overflowX === "scroll"
|
|
55
52
|
) {
|
|
56
53
|
ancestors.push(parent);
|
|
57
54
|
}
|
|
@@ -66,82 +63,77 @@ function getScrollableAncestors(element: Element): Element[] {
|
|
|
66
63
|
return ancestors;
|
|
67
64
|
}
|
|
68
65
|
|
|
69
|
-
// State for preventFocus
|
|
70
|
-
let ignoreFocus = false;
|
|
71
|
-
let preventFocusTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
72
|
-
|
|
73
66
|
/**
|
|
74
67
|
* Prevents focus from moving to a new element temporarily.
|
|
75
68
|
* Used when clicking on a button that shouldn't steal focus.
|
|
76
69
|
*/
|
|
77
|
-
export function preventFocus(target: Element): void {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
const activeElement = document.activeElement;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
70
|
+
export function preventFocus(target: Element | null): (() => void) | undefined {
|
|
71
|
+
while (target && !isFocusable(target)) {
|
|
72
|
+
target = target.parentElement;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const ownerWindow = getOwnerWindow(target);
|
|
76
|
+
const activeElement = ownerWindow.document.activeElement as HTMLElement | null;
|
|
77
|
+
|
|
78
|
+
if (!activeElement || activeElement === target) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let isRefocusing = false;
|
|
83
|
+
|
|
84
|
+
const onBlur = (event: FocusEvent) => {
|
|
85
|
+
if (getEventTarget(event) === activeElement || isRefocusing) {
|
|
86
|
+
event.stopImmediatePropagation();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const onFocusOut = (event: FocusEvent) => {
|
|
91
|
+
if (getEventTarget(event) === activeElement || isRefocusing) {
|
|
92
|
+
event.stopImmediatePropagation();
|
|
93
|
+
|
|
94
|
+
if (!target && !isRefocusing) {
|
|
95
|
+
isRefocusing = true;
|
|
96
|
+
focusWithoutScrolling(activeElement);
|
|
97
|
+
cleanup();
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
};
|
|
98
101
|
|
|
99
|
-
const
|
|
100
|
-
if (
|
|
101
|
-
|
|
102
|
+
const onFocus = (event: FocusEvent) => {
|
|
103
|
+
if (getEventTarget(event) === target || isRefocusing) {
|
|
104
|
+
event.stopImmediatePropagation();
|
|
102
105
|
}
|
|
103
106
|
};
|
|
104
107
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
el.addEventListener('focus', onFocus, true);
|
|
109
|
-
el.addEventListener('blur', onBlur, true);
|
|
110
|
-
el.addEventListener('focusin', onFocus, true);
|
|
111
|
-
el.addEventListener('focusout', onBlur, true);
|
|
112
|
-
|
|
113
|
-
// Clean up after the current event cycle
|
|
114
|
-
if (preventFocusTimeout != null) {
|
|
115
|
-
clearTimeout(preventFocusTimeout);
|
|
116
|
-
}
|
|
108
|
+
const onFocusIn = (event: FocusEvent) => {
|
|
109
|
+
if (getEventTarget(event) === target || isRefocusing) {
|
|
110
|
+
event.stopImmediatePropagation();
|
|
117
111
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}, 0);
|
|
126
|
-
}
|
|
112
|
+
if (!isRefocusing) {
|
|
113
|
+
isRefocusing = true;
|
|
114
|
+
focusWithoutScrolling(activeElement);
|
|
115
|
+
cleanup();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
127
119
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
let current: Element | null = element;
|
|
120
|
+
ownerWindow.addEventListener("blur", onBlur, true);
|
|
121
|
+
ownerWindow.addEventListener("focusout", onFocusOut, true);
|
|
122
|
+
ownerWindow.addEventListener("focusin", onFocusIn, true);
|
|
123
|
+
ownerWindow.addEventListener("focus", onFocus, true);
|
|
133
124
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
125
|
+
const raf = ownerWindow.requestAnimationFrame(cleanup);
|
|
126
|
+
|
|
127
|
+
function cleanup() {
|
|
128
|
+
ownerWindow.cancelAnimationFrame(raf);
|
|
129
|
+
ownerWindow.removeEventListener("blur", onBlur, true);
|
|
130
|
+
ownerWindow.removeEventListener("focusout", onFocusOut, true);
|
|
131
|
+
ownerWindow.removeEventListener("focusin", onFocusIn, true);
|
|
132
|
+
ownerWindow.removeEventListener("focus", onFocus, true);
|
|
133
|
+
isRefocusing = false;
|
|
142
134
|
}
|
|
143
135
|
|
|
144
|
-
return
|
|
136
|
+
return cleanup;
|
|
145
137
|
}
|
|
146
138
|
|
|
147
139
|
/**
|
package/src/utils/geometry.ts
CHANGED
|
@@ -23,12 +23,10 @@ export interface EventPoint {
|
|
|
23
23
|
* Checks if two rectangles overlap.
|
|
24
24
|
*/
|
|
25
25
|
export function areRectanglesOverlapping(a: Rect, b: Rect): boolean {
|
|
26
|
-
// Check if one rectangle is to the left of the other
|
|
27
26
|
if (a.left > b.right || b.left > a.right) {
|
|
28
27
|
return false;
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
// Check if one rectangle is above the other
|
|
32
30
|
if (a.top > b.bottom || b.top > a.bottom) {
|
|
33
31
|
return false;
|
|
34
32
|
}
|
|
@@ -44,7 +42,6 @@ export function getPointClientRect(point: EventPoint): Rect {
|
|
|
44
42
|
let offsetX = 0;
|
|
45
43
|
let offsetY = 0;
|
|
46
44
|
|
|
47
|
-
// Use width/height if available (PointerEvent)
|
|
48
45
|
if (point.width !== undefined && point.width > 0) {
|
|
49
46
|
offsetX = point.width / 2;
|
|
50
47
|
} else if (point.radiusX !== undefined && point.radiusX > 0) {
|
|
@@ -80,7 +77,7 @@ export function isPointOverTarget(point: EventPoint, target: Element): boolean {
|
|
|
80
77
|
bottom: rect.bottom,
|
|
81
78
|
left: rect.left,
|
|
82
79
|
},
|
|
83
|
-
pointRect
|
|
80
|
+
pointRect,
|
|
84
81
|
);
|
|
85
82
|
}
|
|
86
83
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* In SolidJS, we use onCleanup for automatic cleanup instead of useEffect return.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { onCleanup } from
|
|
8
|
+
import { onCleanup } from "solid-js";
|
|
9
9
|
|
|
10
10
|
export interface GlobalListenerOptions extends AddEventListenerOptions {
|
|
11
11
|
/** Whether to add the listener to the window instead of document */
|
|
@@ -31,17 +31,17 @@ export function createGlobalListeners() {
|
|
|
31
31
|
function addGlobalListener<K extends keyof DocumentEventMap>(
|
|
32
32
|
type: K,
|
|
33
33
|
handler: (ev: DocumentEventMap[K]) => void,
|
|
34
|
-
options?: GlobalListenerOptions
|
|
34
|
+
options?: GlobalListenerOptions,
|
|
35
35
|
): void;
|
|
36
36
|
function addGlobalListener<K extends keyof WindowEventMap>(
|
|
37
37
|
type: K,
|
|
38
38
|
handler: (ev: WindowEventMap[K]) => void,
|
|
39
|
-
options?: GlobalListenerOptions & { isWindow: true }
|
|
39
|
+
options?: GlobalListenerOptions & { isWindow: true },
|
|
40
40
|
): void;
|
|
41
41
|
function addGlobalListener(
|
|
42
42
|
type: string,
|
|
43
43
|
handler: EventListener,
|
|
44
|
-
options?: GlobalListenerOptions
|
|
44
|
+
options?: GlobalListenerOptions,
|
|
45
45
|
): void {
|
|
46
46
|
const target = options?.isWindow ? window : document;
|
|
47
47
|
const listenerOptions = options
|
|
@@ -62,17 +62,17 @@ export function createGlobalListeners() {
|
|
|
62
62
|
function removeGlobalListener<K extends keyof DocumentEventMap>(
|
|
63
63
|
type: K,
|
|
64
64
|
handler: (ev: DocumentEventMap[K]) => void,
|
|
65
|
-
options?: AddEventListenerOptions
|
|
65
|
+
options?: AddEventListenerOptions,
|
|
66
66
|
): void;
|
|
67
67
|
function removeGlobalListener<K extends keyof WindowEventMap>(
|
|
68
68
|
type: K,
|
|
69
69
|
handler: (ev: WindowEventMap[K]) => void,
|
|
70
|
-
options?: AddEventListenerOptions & { isWindow: true }
|
|
70
|
+
options?: AddEventListenerOptions & { isWindow: true },
|
|
71
71
|
): void;
|
|
72
72
|
function removeGlobalListener(
|
|
73
73
|
type: string,
|
|
74
74
|
handler: EventListener,
|
|
75
|
-
options?: AddEventListenerOptions & { isWindow?: boolean }
|
|
75
|
+
options?: AddEventListenerOptions & { isWindow?: boolean },
|
|
76
76
|
): void {
|
|
77
77
|
const target = options?.isWindow ? window : document;
|
|
78
78
|
const listenerOptions = options
|
|
@@ -89,7 +89,7 @@ export function createGlobalListeners() {
|
|
|
89
89
|
l.target === target &&
|
|
90
90
|
l.type === type &&
|
|
91
91
|
l.handler === handler &&
|
|
92
|
-
l.options?.capture === listenerOptions?.capture
|
|
92
|
+
l.options?.capture === listenerOptions?.capture,
|
|
93
93
|
);
|
|
94
94
|
if (index !== -1) {
|
|
95
95
|
listeners.splice(index, 1);
|
|
@@ -123,7 +123,7 @@ export function createGlobalListeners() {
|
|
|
123
123
|
export function addGlobalListenerOnce<K extends keyof DocumentEventMap>(
|
|
124
124
|
type: K,
|
|
125
125
|
handler: (ev: DocumentEventMap[K]) => void,
|
|
126
|
-
options?: GlobalListenerOptions
|
|
126
|
+
options?: GlobalListenerOptions,
|
|
127
127
|
): () => void {
|
|
128
128
|
const target = options?.isWindow ? window : document;
|
|
129
129
|
const listenerOptions = options
|
package/src/utils/index.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
export { mergeProps } from
|
|
2
|
-
export { filterDOMProps, type FilterDOMPropsOptions } from
|
|
1
|
+
export { mergeProps } from "./mergeProps";
|
|
2
|
+
export { filterDOMProps, type FilterDOMPropsOptions } from "./filterDOMProps";
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
export { access, isAccessor, type MaybeAccessor, type MaybeAccessorValue } from './reactivity';
|
|
4
|
+
export { access, isAccessor, type MaybeAccessor, type MaybeAccessorValue } from "./reactivity";
|
|
6
5
|
|
|
7
|
-
// Platform detection
|
|
8
6
|
export {
|
|
9
7
|
isMac,
|
|
10
8
|
isIPhone,
|
|
@@ -15,9 +13,8 @@ export {
|
|
|
15
13
|
isChrome,
|
|
16
14
|
isAndroid,
|
|
17
15
|
isFirefox,
|
|
18
|
-
} from
|
|
16
|
+
} from "./platform";
|
|
19
17
|
|
|
20
|
-
// DOM utilities
|
|
21
18
|
export {
|
|
22
19
|
getOwnerDocument,
|
|
23
20
|
getOwnerWindow,
|
|
@@ -33,9 +30,8 @@ export {
|
|
|
33
30
|
isScrollable,
|
|
34
31
|
getScrollParent,
|
|
35
32
|
willOpenKeyboard,
|
|
36
|
-
} from
|
|
33
|
+
} from "./dom";
|
|
37
34
|
|
|
38
|
-
// Geometry utilities
|
|
39
35
|
export {
|
|
40
36
|
areRectanglesOverlapping,
|
|
41
37
|
getPointClientRect,
|
|
@@ -44,37 +40,31 @@ export {
|
|
|
44
40
|
getTouchById,
|
|
45
41
|
type Rect,
|
|
46
42
|
type EventPoint,
|
|
47
|
-
} from
|
|
43
|
+
} from "./geometry";
|
|
48
44
|
|
|
49
|
-
// Event utilities
|
|
50
45
|
export {
|
|
51
46
|
isVirtualClick,
|
|
52
47
|
isVirtualPointerEvent,
|
|
53
48
|
createMouseEvent,
|
|
54
49
|
chain,
|
|
55
50
|
setEventTarget,
|
|
56
|
-
} from
|
|
51
|
+
} from "./events";
|
|
57
52
|
|
|
58
|
-
|
|
59
|
-
export { disableTextSelection, restoreTextSelection } from './textSelection';
|
|
53
|
+
export { disableTextSelection, restoreTextSelection } from "./textSelection";
|
|
60
54
|
|
|
61
|
-
|
|
62
|
-
export { focusWithoutScrolling, focusSafely, preventFocus } from './focus';
|
|
55
|
+
export { focusWithoutScrolling, focusSafely, preventFocus } from "./focus";
|
|
63
56
|
|
|
64
|
-
// Global listener management
|
|
65
57
|
export {
|
|
66
58
|
createGlobalListeners,
|
|
67
59
|
addGlobalListenerOnce,
|
|
68
60
|
type GlobalListenerOptions,
|
|
69
|
-
} from
|
|
61
|
+
} from "./globalListeners";
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
export { isTestEnv, isDevEnv, isProdEnv } from './env';
|
|
63
|
+
export { isTestEnv, isDevEnv, isProdEnv } from "./env";
|
|
73
64
|
|
|
74
|
-
// Description utility for aria-describedby
|
|
75
65
|
export {
|
|
76
66
|
createDescription,
|
|
77
67
|
type DescriptionProps,
|
|
78
68
|
getDescriptionNodeCount,
|
|
79
69
|
clearDescriptionNodes,
|
|
80
|
-
} from
|
|
70
|
+
} from "./createDescription";
|
package/src/utils/mergeProps.ts
CHANGED
|
@@ -9,30 +9,57 @@ type Props = { [key: string]: unknown };
|
|
|
9
9
|
* @param args - Props objects to merge
|
|
10
10
|
* @returns Merged props object. Use type parameter R to specify the result type.
|
|
11
11
|
*/
|
|
12
|
-
export function mergeProps<R extends object = Record<string, unknown>, T extends object = object>(
|
|
12
|
+
export function mergeProps<R extends object = Record<string, unknown>, T extends object = object>(
|
|
13
|
+
...args: T[]
|
|
14
|
+
): R {
|
|
13
15
|
const result: Props = {};
|
|
16
|
+
const setResultValue = (key: string, value: unknown) => {
|
|
17
|
+
const resultDescriptor = Object.getOwnPropertyDescriptor(result, key);
|
|
18
|
+
|
|
19
|
+
if (resultDescriptor?.get || resultDescriptor?.set) {
|
|
20
|
+
Object.defineProperty(result, key, {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value,
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
result[key] = value;
|
|
30
|
+
};
|
|
14
31
|
|
|
15
32
|
for (const props of args) {
|
|
16
33
|
for (const key in props) {
|
|
17
|
-
const
|
|
34
|
+
const descriptor = Object.getOwnPropertyDescriptor(props, key);
|
|
35
|
+
const hasGetter = typeof descriptor?.get === "function";
|
|
36
|
+
const getValue = () => (hasGetter ? descriptor.get!.call(props) : props[key]);
|
|
37
|
+
const value = getValue();
|
|
18
38
|
const existingValue = result[key];
|
|
19
39
|
|
|
20
40
|
if (
|
|
21
|
-
typeof existingValue ===
|
|
22
|
-
typeof value ===
|
|
23
|
-
key.startsWith(
|
|
41
|
+
typeof existingValue === "function" &&
|
|
42
|
+
typeof value === "function" &&
|
|
43
|
+
key.startsWith("on") &&
|
|
24
44
|
key[2] === key[2]?.toUpperCase()
|
|
25
45
|
) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
46
|
+
setResultValue(key, chainHandlers(existingValue as Function, value as Function));
|
|
47
|
+
} else if (key === "class" || key === "className") {
|
|
48
|
+
setResultValue(key, mergeClassNames(existingValue, value));
|
|
49
|
+
} else if (
|
|
50
|
+
key === "style" &&
|
|
51
|
+
typeof existingValue === "object" &&
|
|
52
|
+
typeof value === "object"
|
|
53
|
+
) {
|
|
54
|
+
setResultValue(key, { ...(existingValue as object), ...(value as object) });
|
|
55
|
+
} else if (hasGetter && (value !== undefined || !(key in result))) {
|
|
56
|
+
Object.defineProperty(result, key, {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
configurable: true,
|
|
59
|
+
get: getValue,
|
|
60
|
+
});
|
|
34
61
|
} else if (value !== undefined) {
|
|
35
|
-
|
|
62
|
+
setResultValue(key, value);
|
|
36
63
|
}
|
|
37
64
|
}
|
|
38
65
|
}
|
|
@@ -48,5 +75,5 @@ function chainHandlers(existingHandler: Function, newHandler: Function) {
|
|
|
48
75
|
}
|
|
49
76
|
|
|
50
77
|
function mergeClassNames(...classes: unknown[]): string {
|
|
51
|
-
return classes.filter(Boolean).join(
|
|
78
|
+
return classes.filter(Boolean).join(" ");
|
|
52
79
|
}
|
package/src/utils/platform.ts
CHANGED
|
@@ -10,14 +10,14 @@ interface NavigatorWithUserAgentData extends Navigator {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function getNavigator(): NavigatorWithUserAgentData | null {
|
|
13
|
-
if (typeof window ===
|
|
13
|
+
if (typeof window === "undefined" || window.navigator == null) return null;
|
|
14
14
|
return window.navigator as NavigatorWithUserAgentData;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
function testPlatform(re: RegExp): boolean {
|
|
18
18
|
const nav = getNavigator();
|
|
19
19
|
if (!nav) return false;
|
|
20
|
-
return re.test(nav.platform || nav.userAgentData?.platform ||
|
|
20
|
+
return re.test(nav.platform || nav.userAgentData?.platform || "");
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
function testUserAgent(re: RegExp): boolean {
|
package/src/utils/reactivity.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides type-safe utilities for working with SolidJS reactivity patterns.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Accessor } from
|
|
7
|
+
import { Accessor } from "solid-js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* A value that may be either a raw value or an accessor function.
|
|
@@ -20,7 +20,7 @@ export type MaybeAccessor<T> = T | Accessor<T>;
|
|
|
20
20
|
* @param value - The value or accessor to unwrap.
|
|
21
21
|
*/
|
|
22
22
|
export function access<T>(value: MaybeAccessor<T>): T {
|
|
23
|
-
return typeof value ===
|
|
23
|
+
return typeof value === "function" ? (value as Accessor<T>)() : value;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
@@ -32,5 +32,5 @@ export type MaybeAccessorValue<T> = T | undefined | Accessor<T | undefined>;
|
|
|
32
32
|
* Checks if a value is an accessor function.
|
|
33
33
|
*/
|
|
34
34
|
export function isAccessor<T>(value: MaybeAccessor<T>): value is Accessor<T> {
|
|
35
|
-
return typeof value ===
|
|
35
|
+
return typeof value === "function";
|
|
36
36
|
}
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
* we can just set it on the target element.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { isIOS } from
|
|
11
|
-
import { getOwnerDocument } from
|
|
10
|
+
import { isIOS } from "./platform";
|
|
11
|
+
import { getOwnerDocument } from "./dom";
|
|
12
12
|
|
|
13
|
-
type State =
|
|
13
|
+
type State = "default" | "disabled" | "restoring";
|
|
14
14
|
|
|
15
15
|
// Global state to manage text selection across multiple press interactions
|
|
16
|
-
let state: State =
|
|
17
|
-
let savedUserSelect =
|
|
16
|
+
let state: State = "default";
|
|
17
|
+
let savedUserSelect = "";
|
|
18
18
|
let modifiedElementMap = new WeakMap<HTMLElement, string>();
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -24,18 +24,18 @@ let modifiedElementMap = new WeakMap<HTMLElement, string>();
|
|
|
24
24
|
export function disableTextSelection(target?: HTMLElement): void {
|
|
25
25
|
if (isIOS()) {
|
|
26
26
|
// iOS requires disabling selection on the entire page
|
|
27
|
-
if (state ===
|
|
27
|
+
if (state === "default") {
|
|
28
28
|
const documentElement = getOwnerDocument(target).documentElement;
|
|
29
29
|
savedUserSelect = documentElement.style.webkitUserSelect;
|
|
30
|
-
documentElement.style.webkitUserSelect =
|
|
30
|
+
documentElement.style.webkitUserSelect = "none";
|
|
31
31
|
}
|
|
32
|
-
state =
|
|
32
|
+
state = "disabled";
|
|
33
33
|
} else if (target) {
|
|
34
34
|
// On other platforms, just disable on the target
|
|
35
35
|
const element = target as HTMLElement;
|
|
36
36
|
if (!modifiedElementMap.has(element)) {
|
|
37
37
|
modifiedElementMap.set(element, element.style.userSelect);
|
|
38
|
-
element.style.userSelect =
|
|
38
|
+
element.style.userSelect = "none";
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -47,11 +47,11 @@ export function disableTextSelection(target?: HTMLElement): void {
|
|
|
47
47
|
export function restoreTextSelection(target?: HTMLElement): void {
|
|
48
48
|
if (isIOS()) {
|
|
49
49
|
// Don't restore if another press is active
|
|
50
|
-
if (state !==
|
|
50
|
+
if (state !== "disabled") {
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
state =
|
|
54
|
+
state = "restoring";
|
|
55
55
|
|
|
56
56
|
// Wait for iOS to finish any pending selection actions
|
|
57
57
|
// 300ms is the iOS long-press delay
|
|
@@ -59,15 +59,15 @@ export function restoreTextSelection(target?: HTMLElement): void {
|
|
|
59
59
|
// Use runAfterTransition to avoid CSS recomputation during animation
|
|
60
60
|
runAfterTransition(() => {
|
|
61
61
|
// Only restore if still in 'restoring' state (no new press started)
|
|
62
|
-
if (state ===
|
|
62
|
+
if (state === "restoring") {
|
|
63
63
|
const documentElement = getOwnerDocument(target).documentElement;
|
|
64
64
|
if (savedUserSelect) {
|
|
65
65
|
documentElement.style.webkitUserSelect = savedUserSelect;
|
|
66
66
|
} else {
|
|
67
|
-
documentElement.style.removeProperty(
|
|
67
|
+
documentElement.style.removeProperty("-webkit-user-select");
|
|
68
68
|
}
|
|
69
|
-
savedUserSelect =
|
|
70
|
-
state =
|
|
69
|
+
savedUserSelect = "";
|
|
70
|
+
state = "default";
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
73
|
}, 300);
|
|
@@ -79,7 +79,7 @@ export function restoreTextSelection(target?: HTMLElement): void {
|
|
|
79
79
|
if (savedValue) {
|
|
80
80
|
element.style.userSelect = savedValue;
|
|
81
81
|
} else {
|
|
82
|
-
element.style.removeProperty(
|
|
82
|
+
element.style.removeProperty("user-select");
|
|
83
83
|
}
|
|
84
84
|
modifiedElementMap.delete(element);
|
|
85
85
|
}
|
|
@@ -7,14 +7,10 @@
|
|
|
7
7
|
* Port of react-aria's useVisuallyHidden.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { type Accessor, type JSX, createMemo, createSignal } from
|
|
11
|
-
import { createFocusWithin } from
|
|
12
|
-
import { access, type MaybeAccessor } from
|
|
13
|
-
import { mergeProps } from
|
|
14
|
-
|
|
15
|
-
// ============================================
|
|
16
|
-
// TYPES
|
|
17
|
-
// ============================================
|
|
10
|
+
import { type Accessor, type JSX, createMemo, createSignal } from "solid-js";
|
|
11
|
+
import { createFocusWithin } from "../interactions/createFocusWithin";
|
|
12
|
+
import { access, type MaybeAccessor } from "../utils";
|
|
13
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
18
14
|
|
|
19
15
|
export interface AriaVisuallyHiddenProps {
|
|
20
16
|
/** Inline styles to merge with the visually hidden styles. */
|
|
@@ -28,31 +24,23 @@ export interface VisuallyHiddenAria {
|
|
|
28
24
|
visuallyHiddenProps: Accessor<JSX.HTMLAttributes<HTMLElement>>;
|
|
29
25
|
}
|
|
30
26
|
|
|
31
|
-
// ============================================
|
|
32
|
-
// STYLES
|
|
33
|
-
// ============================================
|
|
34
|
-
|
|
35
27
|
/**
|
|
36
28
|
* CSS styles that visually hide an element while keeping it accessible.
|
|
37
29
|
* These styles ensure the element is read by screen readers but not visible on screen.
|
|
38
30
|
*/
|
|
39
31
|
export const visuallyHiddenStyles: JSX.CSSProperties = {
|
|
40
|
-
border:
|
|
41
|
-
clip:
|
|
42
|
-
|
|
43
|
-
height:
|
|
44
|
-
margin:
|
|
45
|
-
overflow:
|
|
46
|
-
padding:
|
|
47
|
-
position:
|
|
48
|
-
width:
|
|
49
|
-
|
|
32
|
+
border: "0",
|
|
33
|
+
clip: "rect(0 0 0 0)",
|
|
34
|
+
"clip-path": "inset(50%)",
|
|
35
|
+
height: "1px",
|
|
36
|
+
margin: "-1px",
|
|
37
|
+
overflow: "hidden",
|
|
38
|
+
padding: "0",
|
|
39
|
+
position: "absolute",
|
|
40
|
+
width: "1px",
|
|
41
|
+
"white-space": "nowrap",
|
|
50
42
|
};
|
|
51
43
|
|
|
52
|
-
// ============================================
|
|
53
|
-
// HOOK
|
|
54
|
-
// ============================================
|
|
55
|
-
|
|
56
44
|
/**
|
|
57
45
|
* Provides props for an element that hides its children visually
|
|
58
46
|
* but keeps content visible to assistive technology.
|
|
@@ -87,7 +75,7 @@ export const visuallyHiddenStyles: JSX.CSSProperties = {
|
|
|
87
75
|
* ```
|
|
88
76
|
*/
|
|
89
77
|
export function createVisuallyHidden(
|
|
90
|
-
props: MaybeAccessor<AriaVisuallyHiddenProps> = {}
|
|
78
|
+
props: MaybeAccessor<AriaVisuallyHiddenProps> = {},
|
|
91
79
|
): VisuallyHiddenAria {
|
|
92
80
|
const [isFocused, setIsFocused] = createSignal(false);
|
|
93
81
|
|
|
@@ -129,7 +117,7 @@ export function createVisuallyHidden(
|
|
|
129
117
|
},
|
|
130
118
|
}
|
|
131
119
|
: {},
|
|
132
|
-
{ style: combinedStyles() }
|
|
120
|
+
{ style: combinedStyles() },
|
|
133
121
|
),
|
|
134
122
|
}));
|
|
135
123
|
|