@proyecto-viviana/solidaria 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +29 -0
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
- package/dist/actiongroup/index.d.ts +2 -0
- package/dist/actiongroup/index.d.ts.map +1 -0
- package/dist/autocomplete/createAutocomplete.d.ts +16 -12
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +32 -0
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
- package/dist/button/index.d.ts +6 -4
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +8 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +5 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +12 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +6 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/collections/index.d.ts +56 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +16 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +57 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +42 -0
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
- package/dist/datepicker/createDateSegment.d.ts +11 -3
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +29 -0
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
- package/dist/datepicker/index.d.ts +7 -4
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +6 -2
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +55 -4
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +1 -1
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGrid.d.ts.map +1 -1
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +6 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +4 -4
- package/dist/gridlist/types.d.ts +11 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +52 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18089 -15690
- package/dist/index.js.map +1 -7
- package/dist/index.jsx +18242 -0
- package/dist/index.jsx.map +1 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -2
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -3
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/link/createLink.d.ts +23 -7
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +12 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +21 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/menu/createMenu.d.ts +8 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +16 -4
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/numberfield/createNumberField.d.ts +27 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +19 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/popover/calculatePosition.d.ts +4 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +3 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/radio/createRadio.d.ts +7 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +11 -11
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/index.d.ts +1 -1
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/ssr/index.d.ts +1 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/switch/createSwitch.d.ts +6 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/types.d.ts +15 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +28 -25
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tag/createTag.d.ts +2 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +6 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toggle/createToggle.d.ts +9 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tree/createTree.d.ts +3 -3
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/types.d.ts +13 -5
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +12 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/package.json +34 -32
- package/src/actiongroup/createActionGroup.ts +334 -0
- package/src/actiongroup/index.ts +8 -0
- package/src/autocomplete/createAutocomplete.ts +137 -131
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +121 -0
- package/src/button/index.ts +10 -4
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +102 -48
- package/src/calendar/createCalendarGrid.ts +78 -47
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +115 -37
- package/src/calendar/index.ts +5 -9
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +227 -0
- package/src/checkbox/createCheckbox.ts +13 -21
- package/src/checkbox/createCheckboxGroup.ts +86 -45
- package/src/checkbox/createCheckboxGroupItem.ts +16 -27
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +246 -0
- package/src/color/createColorArea.ts +458 -314
- package/src/color/createColorField.ts +186 -137
- package/src/color/createColorSlider.ts +444 -197
- package/src/color/createColorSwatch.ts +65 -40
- package/src/color/createColorWheel.ts +343 -208
- package/src/color/index.ts +24 -24
- package/src/color/types.ts +198 -116
- package/src/combobox/createComboBox.ts +727 -647
- package/src/combobox/index.ts +6 -6
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +294 -63
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +294 -0
- package/src/datepicker/createDateSegment.ts +316 -75
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +352 -0
- package/src/datepicker/index.ts +24 -11
- package/src/dialog/createDialog.ts +127 -120
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +19 -19
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -18
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +218 -209
- package/src/dnd/createDraggableCollection.ts +96 -63
- package/src/dnd/createDraggableItem.ts +260 -243
- package/src/dnd/createDrop.ts +313 -321
- package/src/dnd/createDroppableCollection.ts +799 -293
- package/src/dnd/createDroppableItem.ts +215 -213
- package/src/dnd/index.ts +66 -47
- package/src/dnd/types.ts +86 -89
- package/src/dnd/utils.ts +281 -294
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +305 -321
- package/src/focus/createFocusRestore.ts +300 -313
- package/src/focus/createVirtualFocus.ts +380 -396
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +201 -224
- package/src/form/index.ts +8 -11
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +38 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +45 -24
- package/src/gridlist/createGridListItem.ts +68 -23
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +4 -4
- package/src/gridlist/types.ts +11 -7
- package/src/i18n/createCollator.ts +66 -79
- package/src/i18n/createDateFormatter.ts +75 -83
- package/src/i18n/createFilter.ts +118 -131
- package/src/i18n/createNumberFormatter.ts +50 -52
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +37 -40
- package/src/i18n/locale.tsx +163 -188
- package/src/i18n/utils.ts +95 -99
- package/src/index.ts +114 -164
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +16 -11
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +24 -16
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +75 -82
- package/src/interactions/createKeyboard.ts +2 -2
- package/src/interactions/createLongPress.ts +174 -174
- package/src/interactions/createMove.ts +299 -289
- package/src/interactions/createPress.ts +168 -91
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +356 -377
- package/src/landmark/index.ts +8 -8
- package/src/link/createLink.ts +96 -54
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +319 -269
- package/src/listbox/createOption.ts +208 -151
- package/src/listbox/index.ts +8 -12
- package/src/live-announcer/announce.ts +295 -322
- package/src/live-announcer/index.ts +9 -9
- package/src/menu/createMenu.ts +434 -396
- package/src/menu/createMenuItem.ts +201 -149
- package/src/menu/createMenuTrigger.ts +88 -88
- package/src/menu/index.ts +9 -18
- package/src/meter/createMeter.ts +7 -20
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +368 -268
- package/src/numberfield/index.ts +5 -5
- package/src/overlays/ariaHideOutside.ts +223 -219
- package/src/overlays/createInteractOutside.ts +152 -149
- package/src/overlays/createModal.tsx +238 -202
- package/src/overlays/createOverlay.ts +195 -155
- package/src/overlays/createOverlayTrigger.ts +85 -85
- package/src/overlays/createPreventScroll.ts +288 -266
- package/src/overlays/index.ts +37 -44
- package/src/popover/calculatePosition.ts +117 -119
- package/src/popover/createOverlayPosition.ts +52 -43
- package/src/popover/createPopover.ts +63 -24
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +36 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +142 -62
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +269 -186
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +276 -236
- package/src/select/createSelect.ts +430 -395
- package/src/select/index.ts +9 -14
- package/src/selection/createTypeSelect.ts +11 -11
- package/src/selection/index.ts +1 -1
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +333 -349
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +331 -370
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +9 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +155 -86
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +149 -29
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +12 -11
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +15 -7
- package/src/tabs/createTabs.ts +138 -127
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +171 -40
- package/src/tag/createTagGroup.ts +50 -39
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +34 -26
- package/src/toast/createToastRegion.ts +169 -27
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +95 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +226 -169
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +66 -79
- package/src/tooltip/createTooltipTrigger.ts +238 -222
- package/src/tooltip/index.ts +6 -6
- package/src/tree/createTree.ts +259 -246
- package/src/tree/createTreeItem.ts +282 -233
- package/src/tree/createTreeSelectionCheckbox.ts +71 -68
- package/src/tree/index.ts +16 -16
- package/src/tree/types.ts +95 -87
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +53 -54
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +12 -22
- package/src/utils/mergeProps.ts +42 -15
- package/src/utils/platform.ts +16 -6
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +127 -124
- package/src/visually-hidden/index.ts +6 -6
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -15875
- package/dist/index.ssr.js.map +0 -7
- package/src/i18n/NumberFormatter.ts +0 -266
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type CalendarDate,
|
|
3
|
+
DateFormatter,
|
|
4
|
+
endOfMonth,
|
|
5
|
+
isSameDay,
|
|
6
|
+
startOfMonth,
|
|
7
|
+
} from "@internationalized/date";
|
|
8
|
+
import type { CalendarState, RangeCalendarState } from "@proyecto-viviana/solid-stately";
|
|
9
|
+
import { formatCalendarLabel } from "./intl";
|
|
10
|
+
|
|
11
|
+
export interface CalendarHookData {
|
|
12
|
+
errorMessageId?: string;
|
|
13
|
+
selectedDateDescription?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const hookData = new WeakMap<CalendarState | RangeCalendarState, CalendarHookData>();
|
|
17
|
+
|
|
18
|
+
export function setCalendarHookData(
|
|
19
|
+
state: CalendarState | RangeCalendarState,
|
|
20
|
+
data: CalendarHookData,
|
|
21
|
+
): void {
|
|
22
|
+
hookData.set(state, data);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function getCalendarHookData(
|
|
26
|
+
state: CalendarState | RangeCalendarState,
|
|
27
|
+
): CalendarHookData | undefined {
|
|
28
|
+
return hookData.get(state);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function getEraFormat(date: CalendarDate | undefined): "short" | undefined {
|
|
32
|
+
return date?.calendar.identifier === "gregory" && date.era === "BC" ? "short" : undefined;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function formatVisibleRangeDescription(
|
|
36
|
+
startDate: CalendarDate,
|
|
37
|
+
endDate: CalendarDate,
|
|
38
|
+
timeZone: string,
|
|
39
|
+
locale: string,
|
|
40
|
+
): string {
|
|
41
|
+
const era = getEraFormat(startDate) || getEraFormat(endDate);
|
|
42
|
+
const monthFormatter = new DateFormatter(locale, {
|
|
43
|
+
month: "long",
|
|
44
|
+
year: "numeric",
|
|
45
|
+
era,
|
|
46
|
+
calendar: startDate.calendar.identifier,
|
|
47
|
+
timeZone,
|
|
48
|
+
} as Intl.DateTimeFormatOptions);
|
|
49
|
+
const dateFormatter = new DateFormatter(locale, {
|
|
50
|
+
month: "long",
|
|
51
|
+
year: "numeric",
|
|
52
|
+
day: "numeric",
|
|
53
|
+
era,
|
|
54
|
+
calendar: startDate.calendar.identifier,
|
|
55
|
+
timeZone,
|
|
56
|
+
} as Intl.DateTimeFormatOptions);
|
|
57
|
+
|
|
58
|
+
if (isSameDay(startDate, startOfMonth(startDate))) {
|
|
59
|
+
const startMonth = startDate.calendar.getFormattableMonth?.(startDate) ?? startDate;
|
|
60
|
+
const endMonth = endDate.calendar.getFormattableMonth?.(endDate) ?? endDate;
|
|
61
|
+
|
|
62
|
+
if (isSameDay(endDate, endOfMonth(startDate))) {
|
|
63
|
+
return monthFormatter.format(startMonth.toDate(timeZone));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (isSameDay(endDate, endOfMonth(endDate))) {
|
|
67
|
+
return formatRange(monthFormatter, startMonth, endMonth, timeZone);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return formatRange(dateFormatter, startDate, endDate, timeZone);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function formatSelectedDateDescription(state: CalendarState | RangeCalendarState): string {
|
|
75
|
+
const locale = state.locale();
|
|
76
|
+
const timeZone = state.timeZone;
|
|
77
|
+
let start: CalendarDate | undefined;
|
|
78
|
+
let end: CalendarDate | undefined;
|
|
79
|
+
|
|
80
|
+
if ("highlightedRange" in state) {
|
|
81
|
+
const range = state.highlightedRange();
|
|
82
|
+
start = range?.start;
|
|
83
|
+
end = range?.end;
|
|
84
|
+
} else {
|
|
85
|
+
const value = state.value();
|
|
86
|
+
start = (value as CalendarDate | null) ?? undefined;
|
|
87
|
+
end = (value as CalendarDate | null) ?? undefined;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const anchorDate = "anchorDate" in state ? state.anchorDate() : null;
|
|
91
|
+
if (anchorDate || !start || !end) {
|
|
92
|
+
return "";
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const dateFormatter = new DateFormatter(locale, {
|
|
96
|
+
weekday: "long",
|
|
97
|
+
month: "long",
|
|
98
|
+
year: "numeric",
|
|
99
|
+
day: "numeric",
|
|
100
|
+
era: getEraFormat(start) || getEraFormat(end),
|
|
101
|
+
timeZone,
|
|
102
|
+
} as Intl.DateTimeFormatOptions);
|
|
103
|
+
|
|
104
|
+
if (isSameDay(start, end)) {
|
|
105
|
+
return formatCalendarLabel(locale, "selectedDateDescription", {
|
|
106
|
+
date: dateFormatter.format(start.toDate(timeZone)),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return formatCalendarLabel(locale, "selectedRangeDescription", {
|
|
111
|
+
dateRange: formatLabelRange(dateFormatter, start, end, timeZone, locale),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function formatRange(
|
|
116
|
+
dateFormatter: DateFormatter,
|
|
117
|
+
startDate: CalendarDate,
|
|
118
|
+
endDate: CalendarDate,
|
|
119
|
+
timeZone: string,
|
|
120
|
+
): string {
|
|
121
|
+
const formatter = dateFormatter as DateFormatter & {
|
|
122
|
+
formatRangeToParts?: (start: Date, end: Date) => Intl.DateTimeFormatPart[];
|
|
123
|
+
};
|
|
124
|
+
const start = startDate.toDate(timeZone);
|
|
125
|
+
const end = endDate.toDate(timeZone);
|
|
126
|
+
|
|
127
|
+
if (!formatter.formatRangeToParts) {
|
|
128
|
+
return `${dateFormatter.format(start)} to ${dateFormatter.format(end)}`;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const parts = formatter.formatRangeToParts(start, end) as Array<
|
|
132
|
+
Intl.DateTimeFormatPart & { source?: "startRange" | "shared" | "endRange" }
|
|
133
|
+
>;
|
|
134
|
+
let separatorIndex = -1;
|
|
135
|
+
|
|
136
|
+
for (let i = 0; i < parts.length; i++) {
|
|
137
|
+
const part = parts[i];
|
|
138
|
+
if (part?.source === "shared" && part.type === "literal") {
|
|
139
|
+
separatorIndex = i;
|
|
140
|
+
} else if (part?.source === "endRange") {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (separatorIndex < 0) {
|
|
146
|
+
return `${dateFormatter.format(start)} to ${dateFormatter.format(end)}`;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
let startValue = "";
|
|
150
|
+
let endValue = "";
|
|
151
|
+
for (let i = 0; i < parts.length; i++) {
|
|
152
|
+
const part = parts[i];
|
|
153
|
+
if (!part) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (i < separatorIndex) {
|
|
158
|
+
startValue += part.value;
|
|
159
|
+
} else if (i > separatorIndex) {
|
|
160
|
+
endValue += part.value;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return `${startValue} to ${endValue}`;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function formatLabelRange(
|
|
168
|
+
dateFormatter: DateFormatter,
|
|
169
|
+
startDate: CalendarDate,
|
|
170
|
+
endDate: CalendarDate,
|
|
171
|
+
timeZone: string,
|
|
172
|
+
locale: string,
|
|
173
|
+
): string {
|
|
174
|
+
const formatter = dateFormatter as DateFormatter & {
|
|
175
|
+
formatRangeToParts?: (start: Date, end: Date) => Intl.DateTimeFormatPart[];
|
|
176
|
+
};
|
|
177
|
+
const start = startDate.toDate(timeZone);
|
|
178
|
+
const end = endDate.toDate(timeZone);
|
|
179
|
+
|
|
180
|
+
if (!formatter.formatRangeToParts) {
|
|
181
|
+
return formatCalendarLabel(locale, "dateRange", {
|
|
182
|
+
startDate: dateFormatter.format(start),
|
|
183
|
+
endDate: dateFormatter.format(end),
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const parts = formatter.formatRangeToParts(start, end) as Array<
|
|
188
|
+
Intl.DateTimeFormatPart & { source?: "startRange" | "shared" | "endRange" }
|
|
189
|
+
>;
|
|
190
|
+
let separatorIndex = -1;
|
|
191
|
+
|
|
192
|
+
for (let i = 0; i < parts.length; i++) {
|
|
193
|
+
const part = parts[i];
|
|
194
|
+
if (part?.source === "shared" && part.type === "literal") {
|
|
195
|
+
separatorIndex = i;
|
|
196
|
+
} else if (part?.source === "endRange") {
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (separatorIndex < 0) {
|
|
202
|
+
return formatCalendarLabel(locale, "dateRange", {
|
|
203
|
+
startDate: dateFormatter.format(start),
|
|
204
|
+
endDate: dateFormatter.format(end),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
let startValue = "";
|
|
209
|
+
let endValue = "";
|
|
210
|
+
for (let i = 0; i < parts.length; i++) {
|
|
211
|
+
const part = parts[i];
|
|
212
|
+
if (!part) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (i < separatorIndex) {
|
|
217
|
+
startValue += part.value;
|
|
218
|
+
} else if (i > separatorIndex) {
|
|
219
|
+
endValue += part.value;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return formatCalendarLabel(locale, "dateRange", {
|
|
224
|
+
startDate: startValue,
|
|
225
|
+
endDate: endValue,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
@@ -8,16 +8,12 @@
|
|
|
8
8
|
* This is a 1:1 port of @react-aria/checkbox's useCheckbox hook.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { JSX, Accessor, createEffect } from
|
|
12
|
-
import { createToggle, type AriaToggleProps } from
|
|
13
|
-
import { type ToggleState } from
|
|
14
|
-
import { createPress } from
|
|
15
|
-
import { mergeProps } from
|
|
16
|
-
import { type MaybeAccessor, access } from
|
|
17
|
-
|
|
18
|
-
// ============================================
|
|
19
|
-
// TYPES
|
|
20
|
-
// ============================================
|
|
11
|
+
import { JSX, Accessor, createEffect } from "solid-js";
|
|
12
|
+
import { createToggle, type AriaToggleProps } from "../toggle";
|
|
13
|
+
import { type ToggleState } from "@proyecto-viviana/solid-stately";
|
|
14
|
+
import { createPress } from "../interactions/createPress";
|
|
15
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
16
|
+
import { type MaybeAccessor, access } from "../utils/reactivity";
|
|
21
17
|
|
|
22
18
|
export interface AriaCheckboxProps extends AriaToggleProps {
|
|
23
19
|
/**
|
|
@@ -31,9 +27,9 @@ export interface AriaCheckboxProps extends AriaToggleProps {
|
|
|
31
27
|
isRequired?: boolean;
|
|
32
28
|
/**
|
|
33
29
|
* The validation behavior for the checkbox.
|
|
34
|
-
* @default '
|
|
30
|
+
* @default 'native'
|
|
35
31
|
*/
|
|
36
|
-
validationBehavior?:
|
|
32
|
+
validationBehavior?: "aria" | "native";
|
|
37
33
|
}
|
|
38
34
|
|
|
39
35
|
export interface CheckboxAria {
|
|
@@ -53,10 +49,6 @@ export interface CheckboxAria {
|
|
|
53
49
|
isInvalid: boolean;
|
|
54
50
|
}
|
|
55
51
|
|
|
56
|
-
// ============================================
|
|
57
|
-
// IMPLEMENTATION
|
|
58
|
-
// ============================================
|
|
59
|
-
|
|
60
52
|
/**
|
|
61
53
|
* Provides the behavior and accessibility implementation for a checkbox component.
|
|
62
54
|
* Checkboxes allow users to select multiple items from a list of individual items,
|
|
@@ -69,7 +61,7 @@ export interface CheckboxAria {
|
|
|
69
61
|
export function createCheckbox(
|
|
70
62
|
props: MaybeAccessor<AriaCheckboxProps>,
|
|
71
63
|
state: ToggleState,
|
|
72
|
-
inputRef: () => HTMLInputElement | null
|
|
64
|
+
inputRef: () => HTMLInputElement | null,
|
|
73
65
|
): CheckboxAria {
|
|
74
66
|
const getProps = () => access(props);
|
|
75
67
|
|
|
@@ -114,16 +106,16 @@ export function createCheckbox(
|
|
|
114
106
|
// Prevent label from being focused when mouse down on it.
|
|
115
107
|
// Note, this does not prevent the input from being focused in the `click` event.
|
|
116
108
|
onMouseDown: (e: MouseEvent) => e.preventDefault(),
|
|
117
|
-
} as Record<string, unknown
|
|
109
|
+
} as Record<string, unknown>,
|
|
118
110
|
) as JSX.LabelHTMLAttributes<HTMLLabelElement>,
|
|
119
111
|
get inputProps() {
|
|
120
112
|
const p = getProps();
|
|
121
|
-
const { isRequired, validationBehavior =
|
|
113
|
+
const { isRequired, validationBehavior = "native" } = p;
|
|
122
114
|
|
|
123
115
|
return mergeProps(toggleResult.inputProps, {
|
|
124
116
|
checked: isSelected(),
|
|
125
|
-
|
|
126
|
-
required: isRequired && validationBehavior ===
|
|
117
|
+
"aria-required": (isRequired && validationBehavior === "aria") || undefined,
|
|
118
|
+
required: isRequired && validationBehavior === "native",
|
|
127
119
|
}) as JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
128
120
|
},
|
|
129
121
|
isSelected,
|
|
@@ -7,27 +7,27 @@
|
|
|
7
7
|
* This is a 1:1 port of @react-aria/checkbox's useCheckboxGroup hook.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { JSX } from
|
|
11
|
-
import { createField } from
|
|
12
|
-
import { createFocusWithin } from
|
|
13
|
-
import { filterDOMProps } from
|
|
14
|
-
import { mergeProps } from
|
|
15
|
-
import { type MaybeAccessor, access } from
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
import { JSX, createEffect } from "solid-js";
|
|
11
|
+
import { createField } from "../label";
|
|
12
|
+
import { createFocusWithin } from "../interactions/createFocusWithin";
|
|
13
|
+
import { filterDOMProps } from "../utils/filterDOMProps";
|
|
14
|
+
import { mergeProps } from "../utils/mergeProps";
|
|
15
|
+
import { type MaybeAccessor, access } from "../utils/reactivity";
|
|
16
|
+
import {
|
|
17
|
+
type CheckboxGroupState,
|
|
18
|
+
type CheckboxGroupProps,
|
|
19
|
+
type ValidityState,
|
|
20
|
+
} from "@proyecto-viviana/solid-stately";
|
|
21
21
|
|
|
22
22
|
export interface AriaCheckboxGroupProps extends CheckboxGroupProps {
|
|
23
23
|
/** Defines a string value that labels the current element. */
|
|
24
|
-
|
|
24
|
+
"aria-label"?: string;
|
|
25
25
|
/** Identifies the element (or elements) that labels the current element. */
|
|
26
|
-
|
|
26
|
+
"aria-labelledby"?: string;
|
|
27
27
|
/** Identifies the element (or elements) that describes the object. */
|
|
28
|
-
|
|
28
|
+
"aria-describedby"?: string;
|
|
29
29
|
/** Identifies the element (or elements) that provide a detailed, extended description for the object. */
|
|
30
|
-
|
|
30
|
+
"aria-details"?: string;
|
|
31
31
|
/** A description for the field. Provides a hint such as specific requirements for what to choose. */
|
|
32
32
|
description?: JSX.Element;
|
|
33
33
|
/** An error message for the field. */
|
|
@@ -45,6 +45,10 @@ export interface CheckboxGroupAria {
|
|
|
45
45
|
errorMessageProps: JSX.HTMLAttributes<HTMLElement>;
|
|
46
46
|
/** Whether the checkbox group is invalid. */
|
|
47
47
|
isInvalid: boolean;
|
|
48
|
+
/** Validation errors, if any. */
|
|
49
|
+
validationErrors: string[];
|
|
50
|
+
/** Validation details, if any. */
|
|
51
|
+
validationDetails: ValidityState;
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
// WeakMap to share data between checkbox group and checkbox group items
|
|
@@ -55,14 +59,10 @@ export const checkboxGroupData = new WeakMap<
|
|
|
55
59
|
form?: string;
|
|
56
60
|
descriptionId?: string;
|
|
57
61
|
errorMessageId?: string;
|
|
58
|
-
validationBehavior:
|
|
62
|
+
validationBehavior: "aria" | "native";
|
|
59
63
|
}
|
|
60
64
|
>();
|
|
61
65
|
|
|
62
|
-
// ============================================
|
|
63
|
-
// IMPLEMENTATION
|
|
64
|
-
// ============================================
|
|
65
|
-
|
|
66
66
|
/**
|
|
67
67
|
* Provides the behavior and accessibility implementation for a checkbox group component.
|
|
68
68
|
* Checkbox groups allow users to select multiple items from a list of options.
|
|
@@ -72,51 +72,86 @@ export const checkboxGroupData = new WeakMap<
|
|
|
72
72
|
*/
|
|
73
73
|
export function createCheckboxGroup(
|
|
74
74
|
props: MaybeAccessor<AriaCheckboxGroupProps>,
|
|
75
|
-
state: CheckboxGroupState
|
|
75
|
+
state: CheckboxGroupState,
|
|
76
76
|
): CheckboxGroupAria {
|
|
77
77
|
const getProps = () => access(props);
|
|
78
|
+
const displayValidation = () => state.displayValidation();
|
|
79
|
+
const validationErrors = () => displayValidation().validationErrors;
|
|
80
|
+
const validationDetails = () => displayValidation().validationDetails;
|
|
78
81
|
|
|
79
|
-
const isInvalid = () =>
|
|
82
|
+
const isInvalid = () => displayValidation().isInvalid;
|
|
83
|
+
const fallbackErrorMessage = () => {
|
|
84
|
+
const errors = validationErrors();
|
|
85
|
+
return errors.length > 0 ? errors : undefined;
|
|
86
|
+
};
|
|
80
87
|
|
|
81
88
|
// Use field for label association
|
|
82
89
|
const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField({
|
|
83
|
-
get label() {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
get
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
get
|
|
90
|
-
|
|
90
|
+
get label() {
|
|
91
|
+
return getProps().label;
|
|
92
|
+
},
|
|
93
|
+
get "aria-label"() {
|
|
94
|
+
return getProps()["aria-label"];
|
|
95
|
+
},
|
|
96
|
+
get "aria-labelledby"() {
|
|
97
|
+
return getProps()["aria-labelledby"];
|
|
98
|
+
},
|
|
99
|
+
get "aria-describedby"() {
|
|
100
|
+
return getProps()["aria-describedby"];
|
|
101
|
+
},
|
|
102
|
+
get "aria-details"() {
|
|
103
|
+
return getProps()["aria-details"];
|
|
104
|
+
},
|
|
105
|
+
get description() {
|
|
106
|
+
return getProps().description;
|
|
107
|
+
},
|
|
108
|
+
get errorMessage() {
|
|
109
|
+
return getProps().errorMessage ?? fallbackErrorMessage();
|
|
110
|
+
},
|
|
111
|
+
get isInvalid() {
|
|
112
|
+
return isInvalid();
|
|
113
|
+
},
|
|
91
114
|
// Checkbox group is not an HTML input element so it
|
|
92
115
|
// shouldn't be labeled by a <label> element.
|
|
93
|
-
labelElementType:
|
|
116
|
+
labelElementType: "span",
|
|
94
117
|
});
|
|
95
118
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
119
|
+
const updateCheckboxGroupData = () => {
|
|
120
|
+
checkboxGroupData.set(state, {
|
|
121
|
+
name: getProps().name,
|
|
122
|
+
form: getProps().form,
|
|
123
|
+
descriptionId: descriptionProps.id,
|
|
124
|
+
errorMessageId: errorMessageProps.id,
|
|
125
|
+
validationBehavior: getProps().validationBehavior ?? "native",
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// Store group metadata synchronously for first-render children, then keep it reactive.
|
|
130
|
+
updateCheckboxGroupData();
|
|
131
|
+
createEffect(updateCheckboxGroupData);
|
|
104
132
|
|
|
105
133
|
// Filter DOM props
|
|
106
|
-
const domProps = () =>
|
|
134
|
+
const domProps = () =>
|
|
135
|
+
filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
|
|
107
136
|
|
|
108
137
|
// Handle focus within
|
|
109
138
|
const { focusWithinProps } = createFocusWithin({
|
|
110
|
-
get onBlurWithin() {
|
|
111
|
-
|
|
112
|
-
|
|
139
|
+
get onBlurWithin() {
|
|
140
|
+
return getProps().onBlur;
|
|
141
|
+
},
|
|
142
|
+
get onFocusWithin() {
|
|
143
|
+
return getProps().onFocus;
|
|
144
|
+
},
|
|
145
|
+
get onFocusWithinChange() {
|
|
146
|
+
return getProps().onFocusChange;
|
|
147
|
+
},
|
|
113
148
|
});
|
|
114
149
|
|
|
115
150
|
return {
|
|
116
151
|
get groupProps() {
|
|
117
152
|
return mergeProps(domProps(), {
|
|
118
|
-
role:
|
|
119
|
-
|
|
153
|
+
role: "group",
|
|
154
|
+
"aria-disabled": state.isDisabled || undefined,
|
|
120
155
|
...fieldProps,
|
|
121
156
|
...focusWithinProps,
|
|
122
157
|
}) as JSX.HTMLAttributes<HTMLElement>;
|
|
@@ -133,5 +168,11 @@ export function createCheckboxGroup(
|
|
|
133
168
|
get isInvalid() {
|
|
134
169
|
return isInvalid();
|
|
135
170
|
},
|
|
171
|
+
get validationErrors() {
|
|
172
|
+
return validationErrors();
|
|
173
|
+
},
|
|
174
|
+
get validationDetails() {
|
|
175
|
+
return validationDetails();
|
|
176
|
+
},
|
|
136
177
|
};
|
|
137
178
|
}
|
|
@@ -7,25 +7,20 @@
|
|
|
7
7
|
* This is a 1:1 port of @react-aria/checkbox's useCheckboxGroupItem hook.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { JSX } from
|
|
11
|
-
import { createCheckbox, type AriaCheckboxProps, type CheckboxAria } from
|
|
12
|
-
import { type ToggleState, type CheckboxGroupState } from
|
|
13
|
-
import { checkboxGroupData } from
|
|
14
|
-
import { type MaybeAccessor, access } from
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export interface AriaCheckboxGroupItemProps extends Omit<AriaCheckboxProps, 'isSelected' | 'defaultSelected'> {
|
|
10
|
+
import { JSX } from "solid-js";
|
|
11
|
+
import { createCheckbox, type AriaCheckboxProps, type CheckboxAria } from "./createCheckbox";
|
|
12
|
+
import { type ToggleState, type CheckboxGroupState } from "@proyecto-viviana/solid-stately";
|
|
13
|
+
import { checkboxGroupData } from "./createCheckboxGroup";
|
|
14
|
+
import { type MaybeAccessor, access } from "../utils/reactivity";
|
|
15
|
+
|
|
16
|
+
export interface AriaCheckboxGroupItemProps extends Omit<
|
|
17
|
+
AriaCheckboxProps,
|
|
18
|
+
"isSelected" | "defaultSelected"
|
|
19
|
+
> {
|
|
21
20
|
/** The value of the checkbox. */
|
|
22
21
|
value: string;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
// ============================================
|
|
26
|
-
// IMPLEMENTATION
|
|
27
|
-
// ============================================
|
|
28
|
-
|
|
29
24
|
/**
|
|
30
25
|
* Provides the behavior and accessibility implementation for a checkbox component
|
|
31
26
|
* contained within a checkbox group.
|
|
@@ -37,7 +32,7 @@ export interface AriaCheckboxGroupItemProps extends Omit<AriaCheckboxProps, 'isS
|
|
|
37
32
|
export function createCheckboxGroupItem(
|
|
38
33
|
props: MaybeAccessor<AriaCheckboxGroupItemProps>,
|
|
39
34
|
state: CheckboxGroupState,
|
|
40
|
-
inputRef: () => HTMLInputElement | null
|
|
35
|
+
inputRef: () => HTMLInputElement | null,
|
|
41
36
|
): CheckboxAria {
|
|
42
37
|
const getProps = () => access(props);
|
|
43
38
|
|
|
@@ -59,10 +54,8 @@ export function createCheckboxGroupItem(
|
|
|
59
54
|
},
|
|
60
55
|
};
|
|
61
56
|
|
|
62
|
-
// Get group data
|
|
63
57
|
const getGroupData = () => checkboxGroupData.get(state);
|
|
64
58
|
|
|
65
|
-
// Build checkbox props
|
|
66
59
|
const checkboxProps = (): AriaCheckboxProps => {
|
|
67
60
|
const p = getProps();
|
|
68
61
|
const groupData = getGroupData();
|
|
@@ -71,17 +64,16 @@ export function createCheckboxGroupItem(
|
|
|
71
64
|
...p,
|
|
72
65
|
isReadOnly: p.isReadOnly ?? state.isReadOnly,
|
|
73
66
|
isDisabled: p.isDisabled ?? state.isDisabled,
|
|
67
|
+
isInvalid: p.isInvalid ?? state.isInvalid,
|
|
74
68
|
name: p.name ?? groupData?.name,
|
|
75
69
|
form: p.form ?? groupData?.form,
|
|
76
70
|
isRequired: p.isRequired ?? state.isRequired(),
|
|
77
|
-
validationBehavior: p.validationBehavior ?? groupData?.validationBehavior ??
|
|
71
|
+
validationBehavior: p.validationBehavior ?? groupData?.validationBehavior ?? "native",
|
|
78
72
|
};
|
|
79
73
|
};
|
|
80
74
|
|
|
81
|
-
// Use the checkbox hook
|
|
82
75
|
const result = createCheckbox(checkboxProps, toggleState, inputRef);
|
|
83
76
|
|
|
84
|
-
// Add group-level aria-describedby
|
|
85
77
|
return {
|
|
86
78
|
...result,
|
|
87
79
|
get inputProps() {
|
|
@@ -90,27 +82,24 @@ export function createCheckboxGroupItem(
|
|
|
90
82
|
|
|
91
83
|
const describedByIds: string[] = [];
|
|
92
84
|
|
|
93
|
-
|
|
94
|
-
const propsDescribedBy = getProps()['aria-describedby'];
|
|
85
|
+
const propsDescribedBy = getProps()["aria-describedby"];
|
|
95
86
|
if (propsDescribedBy) {
|
|
96
87
|
describedByIds.push(propsDescribedBy);
|
|
97
88
|
}
|
|
98
89
|
|
|
99
|
-
// Add error message ID if group is invalid
|
|
100
90
|
if (state.isInvalid && groupData?.errorMessageId) {
|
|
101
91
|
describedByIds.push(groupData.errorMessageId);
|
|
102
92
|
}
|
|
103
93
|
|
|
104
|
-
// Add description ID
|
|
105
94
|
if (groupData?.descriptionId) {
|
|
106
95
|
describedByIds.push(groupData.descriptionId);
|
|
107
96
|
}
|
|
108
97
|
|
|
109
|
-
const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(
|
|
98
|
+
const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(" ") : undefined;
|
|
110
99
|
|
|
111
100
|
return {
|
|
112
101
|
...baseInputProps,
|
|
113
|
-
|
|
102
|
+
"aria-describedby": ariaDescribedBy,
|
|
114
103
|
} as JSX.InputHTMLAttributes<HTMLInputElement>;
|
|
115
104
|
},
|
|
116
105
|
};
|