@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
|
@@ -7,13 +7,9 @@
|
|
|
7
7
|
* This is a 1:1 port of @react-stately/radio's useRadioGroupState.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { createSignal, Accessor, untrack } from
|
|
11
|
-
import { type MaybeAccessor, access } from
|
|
12
|
-
import { createId } from
|
|
13
|
-
|
|
14
|
-
// ============================================
|
|
15
|
-
// TYPES
|
|
16
|
-
// ============================================
|
|
10
|
+
import { createSignal, Accessor, untrack } from "solid-js";
|
|
11
|
+
import { type MaybeAccessor, access } from "../utils/reactivity";
|
|
12
|
+
import { createId } from "../ssr";
|
|
17
13
|
|
|
18
14
|
export interface RadioGroupProps {
|
|
19
15
|
/** The current selected value (controlled). */
|
|
@@ -37,7 +33,7 @@ export interface RadioGroupProps {
|
|
|
37
33
|
/** The label for the radio group. */
|
|
38
34
|
label?: string;
|
|
39
35
|
/** Orientation of the radio group. */
|
|
40
|
-
orientation?:
|
|
36
|
+
orientation?: "horizontal" | "vertical";
|
|
41
37
|
/** Handler that is called when the radio group receives focus. */
|
|
42
38
|
onFocus?: (e: FocusEvent) => void;
|
|
43
39
|
/** Handler that is called when the radio group loses focus. */
|
|
@@ -78,10 +74,6 @@ export interface RadioGroupState {
|
|
|
78
74
|
setLastFocusedValue(value: string | null): void;
|
|
79
75
|
}
|
|
80
76
|
|
|
81
|
-
// ============================================
|
|
82
|
-
// INTERNAL: SolidJS-specific sync mechanism
|
|
83
|
-
// ============================================
|
|
84
|
-
|
|
85
77
|
/**
|
|
86
78
|
* Internal WeakMap to store sync version accessors for each radio group state.
|
|
87
79
|
* This is used by createRadio to trigger DOM sync when native radio behavior
|
|
@@ -92,31 +84,23 @@ export interface RadioGroupState {
|
|
|
92
84
|
*/
|
|
93
85
|
export const radioGroupSyncVersion: WeakMap<RadioGroupState, Accessor<number>> = new WeakMap();
|
|
94
86
|
|
|
95
|
-
// ============================================
|
|
96
|
-
// IMPLEMENTATION
|
|
97
|
-
// ============================================
|
|
98
|
-
|
|
99
87
|
/**
|
|
100
88
|
* Provides state management for a radio group component.
|
|
101
89
|
* Provides a name for the group, and manages selection and focus state.
|
|
102
90
|
*/
|
|
103
|
-
export function createRadioGroupState(
|
|
104
|
-
props: MaybeAccessor<RadioGroupProps> = {}
|
|
105
|
-
): RadioGroupState {
|
|
91
|
+
export function createRadioGroupState(props: MaybeAccessor<RadioGroupProps> = {}): RadioGroupState {
|
|
106
92
|
const getProps = () => access(props);
|
|
107
93
|
|
|
108
94
|
// Get initial props using untrack to avoid setting up dependencies
|
|
109
95
|
// This ensures we capture the initial defaultValue without reactivity issues
|
|
110
96
|
const initialProps = untrack(() => getProps());
|
|
111
97
|
|
|
112
|
-
//
|
|
113
|
-
// React Aria now generates the name instead of stately
|
|
98
|
+
// Preserved for backward compatibility. React Aria now generates the name instead of stately.
|
|
114
99
|
const name = initialProps.name || `radio-group-${createId()}`;
|
|
115
100
|
|
|
116
|
-
// Create internal signal for uncontrolled mode
|
|
117
101
|
// Initialize with defaultValue only (not value, which is for controlled mode)
|
|
118
102
|
const [internalValue, setInternalValue] = createSignal<string | null>(
|
|
119
|
-
initialProps.defaultValue ?? null
|
|
103
|
+
initialProps.defaultValue ?? null,
|
|
120
104
|
);
|
|
121
105
|
const [lastFocusedValue, setLastFocusedValueInternal] = createSignal<string | null>(null);
|
|
122
106
|
|
|
@@ -125,26 +109,20 @@ export function createRadioGroupState(
|
|
|
125
109
|
// from our reactive state (e.g., clicking a radio unchecks siblings in the DOM)
|
|
126
110
|
const [syncVersion, setSyncVersion] = createSignal(0);
|
|
127
111
|
|
|
128
|
-
// Determine if controlled - must be reactive to handle dynamic props
|
|
129
112
|
const isControlled = () => getProps().value !== undefined;
|
|
130
113
|
|
|
131
|
-
// Get current value - reactive for both controlled and uncontrolled modes
|
|
132
114
|
const selectedValue: Accessor<string | null> = () => {
|
|
133
115
|
const p = getProps();
|
|
134
|
-
// In controlled mode, always read from props.value reactively
|
|
135
|
-
// In uncontrolled mode, read from internal signal
|
|
136
116
|
if (p.value !== undefined) {
|
|
137
117
|
return p.value ?? null;
|
|
138
118
|
}
|
|
139
119
|
return internalValue();
|
|
140
120
|
};
|
|
141
121
|
|
|
142
|
-
// Check if invalid
|
|
143
122
|
const isInvalid = () => {
|
|
144
123
|
return getProps().isInvalid ?? false;
|
|
145
124
|
};
|
|
146
125
|
|
|
147
|
-
// Set value
|
|
148
126
|
function setSelectedValue(value: string | null): void {
|
|
149
127
|
const p = getProps();
|
|
150
128
|
if (p.isReadOnly || p.isDisabled) {
|
|
@@ -167,7 +145,6 @@ export function createRadioGroupState(
|
|
|
167
145
|
}
|
|
168
146
|
}
|
|
169
147
|
|
|
170
|
-
// Set last focused value
|
|
171
148
|
function setLastFocusedValue(value: string | null): void {
|
|
172
149
|
setLastFocusedValueInternal(value);
|
|
173
150
|
}
|
|
@@ -193,7 +170,6 @@ export function createRadioGroupState(
|
|
|
193
170
|
},
|
|
194
171
|
};
|
|
195
172
|
|
|
196
|
-
// Store syncVersion in internal WeakMap (not part of public API)
|
|
197
173
|
// This maintains API parity with React-Aria while supporting SolidJS's reactivity needs
|
|
198
174
|
radioGroupSyncVersion.set(state, syncVersion);
|
|
199
175
|
|
package/src/radio/index.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
// Re-export state from solid-stately
|
|
2
1
|
export {
|
|
3
2
|
createRadioGroupState,
|
|
4
3
|
radioGroupSyncVersion,
|
|
5
4
|
type RadioGroupProps,
|
|
6
5
|
type RadioGroupState,
|
|
7
|
-
} from
|
|
6
|
+
} from "@proyecto-viviana/solid-stately";
|
|
8
7
|
|
|
9
8
|
// ARIA hooks (solidaria-specific)
|
|
10
9
|
// Radio Group
|
|
@@ -13,11 +12,7 @@ export {
|
|
|
13
12
|
radioGroupData,
|
|
14
13
|
type AriaRadioGroupProps,
|
|
15
14
|
type RadioGroupAria,
|
|
16
|
-
} from
|
|
15
|
+
} from "./createRadioGroup";
|
|
17
16
|
|
|
18
17
|
// Radio
|
|
19
|
-
export {
|
|
20
|
-
createRadio,
|
|
21
|
-
type AriaRadioProps,
|
|
22
|
-
type RadioAria,
|
|
23
|
-
} from './createRadio';
|
|
18
|
+
export { createRadio, type AriaRadioProps, type RadioAria } from "./createRadio";
|
|
@@ -4,25 +4,25 @@
|
|
|
4
4
|
* Based on @react-aria/searchfield useSearchField.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { type JSX } from
|
|
8
|
-
import { createTextField, type AriaTextFieldProps, type TextFieldAria } from
|
|
9
|
-
import { mergeProps } from
|
|
10
|
-
import { type MaybeAccessor, access } from
|
|
11
|
-
import type { SearchFieldState } from
|
|
7
|
+
import { type JSX } from "solid-js";
|
|
8
|
+
import { createTextField, type AriaTextFieldProps, type TextFieldAria } from "../textfield";
|
|
9
|
+
import { mergeProps } from "../utils";
|
|
10
|
+
import { type MaybeAccessor, access } from "../utils/reactivity";
|
|
11
|
+
import type { SearchFieldState } from "@proyecto-viviana/solid-stately";
|
|
12
12
|
|
|
13
|
-
export interface AriaSearchFieldProps extends
|
|
13
|
+
export interface AriaSearchFieldProps extends AriaTextFieldProps {
|
|
14
14
|
/** Handler that is called when the user submits the search (pressing Enter). */
|
|
15
15
|
onSubmit?: (value: string) => void;
|
|
16
16
|
/** Handler that is called when the clear button is pressed or Escape clears the field. */
|
|
17
17
|
onClear?: () => void;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export interface SearchFieldAria extends Omit<TextFieldAria,
|
|
20
|
+
export interface SearchFieldAria extends Omit<TextFieldAria, "inputProps"> {
|
|
21
21
|
/** Props for the input element. */
|
|
22
22
|
inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
23
23
|
/** Props for the clear button. */
|
|
24
24
|
clearButtonProps: {
|
|
25
|
-
|
|
25
|
+
"aria-label": string;
|
|
26
26
|
tabIndex: number;
|
|
27
27
|
disabled?: boolean;
|
|
28
28
|
onMouseDown: (e: MouseEvent) => void;
|
|
@@ -36,10 +36,19 @@ export interface SearchFieldAria extends Omit<TextFieldAria, 'inputProps'> {
|
|
|
36
36
|
export function createSearchField(
|
|
37
37
|
props: MaybeAccessor<AriaSearchFieldProps>,
|
|
38
38
|
state: SearchFieldState,
|
|
39
|
-
inputRef?: () => HTMLInputElement | null
|
|
39
|
+
inputRef?: () => HTMLInputElement | null,
|
|
40
40
|
): SearchFieldAria {
|
|
41
41
|
const getProps = () => access(props);
|
|
42
42
|
|
|
43
|
+
const setValue = (value: string) => {
|
|
44
|
+
if (state.value() === value) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
state.setValue(value);
|
|
49
|
+
getProps().onChange?.(value);
|
|
50
|
+
};
|
|
51
|
+
|
|
43
52
|
// Use createTextField for the base implementation
|
|
44
53
|
const textFieldAria = createTextField({
|
|
45
54
|
get value() {
|
|
@@ -60,14 +69,14 @@ export function createSearchField(
|
|
|
60
69
|
get label() {
|
|
61
70
|
return getProps().label;
|
|
62
71
|
},
|
|
63
|
-
get
|
|
64
|
-
return getProps()[
|
|
72
|
+
get "aria-label"() {
|
|
73
|
+
return getProps()["aria-label"];
|
|
65
74
|
},
|
|
66
|
-
get
|
|
67
|
-
return getProps()[
|
|
75
|
+
get "aria-labelledby"() {
|
|
76
|
+
return getProps()["aria-labelledby"];
|
|
68
77
|
},
|
|
69
|
-
get
|
|
70
|
-
return getProps()[
|
|
78
|
+
get "aria-describedby"() {
|
|
79
|
+
return getProps()["aria-describedby"];
|
|
71
80
|
},
|
|
72
81
|
get description() {
|
|
73
82
|
return getProps().description;
|
|
@@ -81,15 +90,30 @@ export function createSearchField(
|
|
|
81
90
|
get name() {
|
|
82
91
|
return getProps().name;
|
|
83
92
|
},
|
|
93
|
+
get form() {
|
|
94
|
+
return getProps().form;
|
|
95
|
+
},
|
|
96
|
+
get validationBehavior() {
|
|
97
|
+
return getProps().validationBehavior ?? "native";
|
|
98
|
+
},
|
|
99
|
+
get type() {
|
|
100
|
+
return getProps().type ?? "search";
|
|
101
|
+
},
|
|
84
102
|
get autoFocus() {
|
|
85
103
|
return getProps().autoFocus;
|
|
86
104
|
},
|
|
105
|
+
get excludeFromTabOrder() {
|
|
106
|
+
return getProps().excludeFromTabOrder;
|
|
107
|
+
},
|
|
87
108
|
get autoComplete() {
|
|
88
109
|
return getProps().autoComplete;
|
|
89
110
|
},
|
|
90
111
|
get inputMode() {
|
|
91
112
|
return getProps().inputMode;
|
|
92
113
|
},
|
|
114
|
+
get enterKeyHint() {
|
|
115
|
+
return getProps().enterKeyHint;
|
|
116
|
+
},
|
|
93
117
|
get autoCorrect() {
|
|
94
118
|
return getProps().autoCorrect;
|
|
95
119
|
},
|
|
@@ -150,11 +174,7 @@ export function createSearchField(
|
|
|
150
174
|
get onInput() {
|
|
151
175
|
return getProps().onInput;
|
|
152
176
|
},
|
|
153
|
-
|
|
154
|
-
onChange: (value: string) => {
|
|
155
|
-
state.setValue(value);
|
|
156
|
-
getProps().onChange?.(value);
|
|
157
|
-
},
|
|
177
|
+
onChange: setValue,
|
|
158
178
|
});
|
|
159
179
|
|
|
160
180
|
// Handle keyboard events for search field
|
|
@@ -162,26 +182,30 @@ export function createSearchField(
|
|
|
162
182
|
const p = getProps();
|
|
163
183
|
|
|
164
184
|
if (p.isDisabled || p.isReadOnly) {
|
|
165
|
-
if (e.key ===
|
|
185
|
+
if (e.key === "Enter") {
|
|
166
186
|
e.preventDefault();
|
|
167
187
|
}
|
|
168
188
|
return;
|
|
169
189
|
}
|
|
170
190
|
|
|
171
|
-
if (e.key ===
|
|
191
|
+
if (e.key === "Enter" && p.onSubmit) {
|
|
172
192
|
e.preventDefault();
|
|
173
193
|
p.onSubmit(state.value());
|
|
174
194
|
}
|
|
175
195
|
|
|
176
|
-
if (e.key ===
|
|
196
|
+
if (e.key === "Escape") {
|
|
177
197
|
const currentValue = state.value();
|
|
178
|
-
const inputValue = inputRef?.()?.value ??
|
|
198
|
+
const inputValue = inputRef?.()?.value ?? "";
|
|
179
199
|
|
|
180
200
|
// Only clear if there's a value
|
|
181
|
-
if (currentValue !==
|
|
201
|
+
if (currentValue !== "" || inputValue !== "") {
|
|
182
202
|
e.preventDefault();
|
|
183
203
|
e.stopPropagation();
|
|
184
|
-
|
|
204
|
+
const input = inputRef?.();
|
|
205
|
+
if (input) {
|
|
206
|
+
input.value = "";
|
|
207
|
+
}
|
|
208
|
+
setValue("");
|
|
185
209
|
p.onClear?.();
|
|
186
210
|
}
|
|
187
211
|
}
|
|
@@ -191,7 +215,11 @@ export function createSearchField(
|
|
|
191
215
|
const onClearButtonClick = () => {
|
|
192
216
|
const p = getProps();
|
|
193
217
|
if (p.isDisabled || p.isReadOnly) return;
|
|
194
|
-
|
|
218
|
+
const input = inputRef?.();
|
|
219
|
+
if (input) {
|
|
220
|
+
input.value = "";
|
|
221
|
+
}
|
|
222
|
+
setValue("");
|
|
195
223
|
p.onClear?.();
|
|
196
224
|
// Focus the input after clearing
|
|
197
225
|
inputRef?.()?.focus();
|
|
@@ -213,7 +241,7 @@ export function createSearchField(
|
|
|
213
241
|
// Clear defaultValue since it's handled by state
|
|
214
242
|
defaultValue: undefined,
|
|
215
243
|
} as Record<string, unknown>,
|
|
216
|
-
textFieldAria.inputProps as Record<string, unknown
|
|
244
|
+
textFieldAria.inputProps as Record<string, unknown>,
|
|
217
245
|
) as JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
218
246
|
},
|
|
219
247
|
get clearButtonProps() {
|
|
@@ -221,7 +249,7 @@ export function createSearchField(
|
|
|
221
249
|
const isDisabled = p.isDisabled || p.isReadOnly;
|
|
222
250
|
|
|
223
251
|
return {
|
|
224
|
-
|
|
252
|
+
"aria-label": "Clear search",
|
|
225
253
|
tabIndex: -1, // Exclude from tab order
|
|
226
254
|
disabled: isDisabled,
|
|
227
255
|
onMouseDown: onClearButtonMouseDown,
|
package/src/searchfield/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createSearchField } from
|
|
2
|
-
export type { AriaSearchFieldProps, SearchFieldAria } from
|
|
1
|
+
export { createSearchField } from "./createSearchField";
|
|
2
|
+
export type { AriaSearchFieldProps, SearchFieldAria } from "./createSearchField";
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Based on @react-aria/select useHiddenSelect.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { type JSX, type Accessor, For, createEffect, onCleanup } from
|
|
7
|
-
import { access, type MaybeAccessor } from
|
|
8
|
-
import { createFormValidation } from
|
|
9
|
-
import type { SelectState, Key, FormValidationState } from
|
|
6
|
+
import { type JSX, type Accessor, For, createEffect, onCleanup } from "solid-js";
|
|
7
|
+
import { access, type MaybeAccessor } from "../utils/reactivity";
|
|
8
|
+
import { createFormValidation } from "../form/createFormValidation";
|
|
9
|
+
import type { SelectState, Key, FormValidationState } from "@proyecto-viviana/solid-stately";
|
|
10
10
|
|
|
11
|
-
export type ValidationBehavior =
|
|
11
|
+
export type ValidationBehavior = "aria" | "native";
|
|
12
12
|
|
|
13
13
|
export interface AriaHiddenSelectProps<T> {
|
|
14
14
|
/** The state object for the select. */
|
|
@@ -45,7 +45,7 @@ export interface HiddenSelectAria {
|
|
|
45
45
|
* This is used for native form submission and accessibility on mobile devices.
|
|
46
46
|
*/
|
|
47
47
|
export function createHiddenSelect<T>(
|
|
48
|
-
props: MaybeAccessor<AriaHiddenSelectProps<T
|
|
48
|
+
props: MaybeAccessor<AriaHiddenSelectProps<T>>,
|
|
49
49
|
): HiddenSelectAria {
|
|
50
50
|
const getProps = () => access(props);
|
|
51
51
|
|
|
@@ -66,17 +66,17 @@ export function createHiddenSelect<T>(
|
|
|
66
66
|
p.state.setSelectedKey(defaultKey);
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
form.addEventListener(
|
|
69
|
+
form.addEventListener("reset", handleReset);
|
|
70
70
|
|
|
71
71
|
onCleanup(() => {
|
|
72
|
-
form.removeEventListener(
|
|
72
|
+
form.removeEventListener("reset", handleReset);
|
|
73
73
|
});
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
// Set up form validation handler for native validation
|
|
77
77
|
createEffect(() => {
|
|
78
78
|
const p = getProps();
|
|
79
|
-
if (!selectRef || p.validationBehavior !==
|
|
79
|
+
if (!selectRef || p.validationBehavior !== "native" || !p.validationState) return;
|
|
80
80
|
|
|
81
81
|
createFormValidation(
|
|
82
82
|
{
|
|
@@ -84,31 +84,39 @@ export function createHiddenSelect<T>(
|
|
|
84
84
|
focus: () => p.triggerRef?.()?.focus(),
|
|
85
85
|
},
|
|
86
86
|
p.validationState,
|
|
87
|
-
() => selectRef
|
|
87
|
+
() => selectRef,
|
|
88
88
|
);
|
|
89
89
|
});
|
|
90
90
|
|
|
91
91
|
return {
|
|
92
92
|
get containerProps() {
|
|
93
93
|
return {
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
"aria-hidden": true,
|
|
95
|
+
"data-a11y-ignore": "aria-hidden-focus",
|
|
96
96
|
} as JSX.HTMLAttributes<HTMLDivElement>;
|
|
97
97
|
},
|
|
98
98
|
get selectProps() {
|
|
99
99
|
const p = getProps();
|
|
100
100
|
const state = p.state;
|
|
101
101
|
const selectedKey = state.selectedKey();
|
|
102
|
-
const selectedKeys =
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
const selectedKeys =
|
|
103
|
+
typeof state.selectedKeys === "function"
|
|
104
|
+
? state.selectedKeys()
|
|
105
|
+
: selectedKey != null
|
|
106
|
+
? new Set([selectedKey])
|
|
107
|
+
: new Set<Key>();
|
|
108
|
+
const validationBehavior = p.validationBehavior ?? "aria";
|
|
109
|
+
const isMultiple =
|
|
110
|
+
typeof state.selectionMode === "function" && state.selectionMode() === "multiple";
|
|
107
111
|
const multipleValue =
|
|
108
|
-
selectedKeys ===
|
|
112
|
+
selectedKeys === "all"
|
|
113
|
+
? Array.from(state.collection()).map((item) => String(item.key))
|
|
114
|
+
: Array.from(selectedKeys).map(String);
|
|
109
115
|
|
|
110
116
|
return {
|
|
111
|
-
ref: (el: HTMLSelectElement) => {
|
|
117
|
+
ref: (el: HTMLSelectElement) => {
|
|
118
|
+
selectRef = el;
|
|
119
|
+
},
|
|
112
120
|
tabIndex: -1,
|
|
113
121
|
autoComplete: p.autoComplete,
|
|
114
122
|
disabled: p.isDisabled ?? state.isDisabled,
|
|
@@ -116,12 +124,12 @@ export function createHiddenSelect<T>(
|
|
|
116
124
|
name: p.name,
|
|
117
125
|
form: p.form,
|
|
118
126
|
// Add required attribute for native form validation
|
|
119
|
-
required: validationBehavior ===
|
|
120
|
-
value: isMultiple ? multipleValue :
|
|
127
|
+
required: validationBehavior === "native" && p.isRequired,
|
|
128
|
+
value: isMultiple ? multipleValue : selectedKey != null ? String(selectedKey) : "",
|
|
121
129
|
onChange: (e: Event) => {
|
|
122
130
|
const target = e.target as HTMLSelectElement;
|
|
123
131
|
if (isMultiple) {
|
|
124
|
-
if (typeof state.setSelectedKeys ===
|
|
132
|
+
if (typeof state.setSelectedKeys === "function") {
|
|
125
133
|
state.setSelectedKeys(Array.from(target.selectedOptions).map((o) => o.value as Key));
|
|
126
134
|
} else {
|
|
127
135
|
const first = target.selectedOptions[0]?.value;
|
|
@@ -132,18 +140,18 @@ export function createHiddenSelect<T>(
|
|
|
132
140
|
}
|
|
133
141
|
},
|
|
134
142
|
style: {
|
|
135
|
-
position:
|
|
143
|
+
position: "absolute",
|
|
136
144
|
top: 0,
|
|
137
145
|
left: 0,
|
|
138
|
-
width:
|
|
139
|
-
height:
|
|
146
|
+
width: "100%",
|
|
147
|
+
height: "100%",
|
|
140
148
|
opacity: 0,
|
|
141
|
-
|
|
142
|
-
border:
|
|
143
|
-
cursor:
|
|
149
|
+
"font-size": "16px", // Prevents zoom on iOS
|
|
150
|
+
border: "none",
|
|
151
|
+
cursor: "default",
|
|
144
152
|
margin: 0,
|
|
145
153
|
padding: 0,
|
|
146
|
-
|
|
154
|
+
"pointer-events": "none",
|
|
147
155
|
},
|
|
148
156
|
} as JSX.SelectHTMLAttributes<HTMLSelectElement>;
|
|
149
157
|
},
|
|
@@ -151,20 +159,20 @@ export function createHiddenSelect<T>(
|
|
|
151
159
|
const p = getProps();
|
|
152
160
|
const state = p.state;
|
|
153
161
|
const selectedKey = state.selectedKey();
|
|
154
|
-
const validationBehavior = p.validationBehavior ??
|
|
162
|
+
const validationBehavior = p.validationBehavior ?? "aria";
|
|
155
163
|
|
|
156
164
|
// For native validation with required, use type="text" with display:none
|
|
157
165
|
// so the browser will validate it on form submit
|
|
158
|
-
const useTextInput = validationBehavior ===
|
|
166
|
+
const useTextInput = validationBehavior === "native" && p.isRequired;
|
|
159
167
|
|
|
160
168
|
return {
|
|
161
|
-
type: useTextInput ?
|
|
169
|
+
type: useTextInput ? "text" : "hidden",
|
|
162
170
|
name: p.name,
|
|
163
171
|
form: p.form,
|
|
164
|
-
value: selectedKey != null ? String(selectedKey) :
|
|
172
|
+
value: selectedKey != null ? String(selectedKey) : "",
|
|
165
173
|
disabled: p.isDisabled ?? state.isDisabled,
|
|
166
174
|
required: useTextInput ? p.isRequired : undefined,
|
|
167
|
-
style: useTextInput ? { display:
|
|
175
|
+
style: useTextInput ? { display: "none" } : undefined,
|
|
168
176
|
} as JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
169
177
|
},
|
|
170
178
|
};
|
|
@@ -230,11 +238,14 @@ export function HiddenSelect<T>(props: HiddenSelectProps<T>): JSX.Element {
|
|
|
230
238
|
|
|
231
239
|
const collection = () => props.state.collection();
|
|
232
240
|
const selectedKey = () => props.state.selectedKey();
|
|
233
|
-
const selectedKeys = () =>
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
241
|
+
const selectedKeys = () =>
|
|
242
|
+
typeof props.state.selectedKeys === "function"
|
|
243
|
+
? props.state.selectedKeys()
|
|
244
|
+
: selectedKey() != null
|
|
245
|
+
? new Set([selectedKey() as Key])
|
|
246
|
+
: new Set<Key>();
|
|
247
|
+
const isMultiple = () =>
|
|
248
|
+
typeof props.state.selectionMode === "function" && props.state.selectionMode() === "multiple";
|
|
238
249
|
|
|
239
250
|
return (
|
|
240
251
|
<div {...containerProps}>
|
|
@@ -246,11 +257,13 @@ export function HiddenSelect<T>(props: HiddenSelectProps<T>): JSX.Element {
|
|
|
246
257
|
{(item) => (
|
|
247
258
|
<option
|
|
248
259
|
value={String(item.key)}
|
|
249
|
-
selected={
|
|
250
|
-
|
|
251
|
-
?
|
|
252
|
-
|
|
253
|
-
|
|
260
|
+
selected={
|
|
261
|
+
isMultiple()
|
|
262
|
+
? selectedKeys() === "all"
|
|
263
|
+
? true
|
|
264
|
+
: (selectedKeys() as Set<Key>).has(item.key)
|
|
265
|
+
: item.key === selectedKey()
|
|
266
|
+
}
|
|
254
267
|
>
|
|
255
268
|
{item.textValue}
|
|
256
269
|
</option>
|