@proyecto-viviana/solidaria-components 0.5.1 → 0.7.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/README.md +57 -34
- package/dist/ActionBar.d.ts +2 -10
- package/dist/ActionBar.d.ts.map +1 -1
- package/dist/ActionBar.js +95 -59
- package/dist/ActionBar.js.map +1 -1
- package/dist/ActionBar.jsx +42 -15
- package/dist/ActionBar.jsx.map +1 -1
- package/dist/ActionGroup.d.ts +1 -12
- package/dist/ActionGroup.d.ts.map +1 -1
- package/dist/ActionGroup.js +66 -44
- package/dist/ActionGroup.js.map +1 -1
- package/dist/ActionGroup.jsx +25 -10
- package/dist/ActionGroup.jsx.map +1 -1
- package/dist/Alert.d.ts +4 -1
- package/dist/Alert.d.ts.map +1 -1
- package/dist/Alert.js +20 -17
- package/dist/Alert.js.map +1 -1
- package/dist/Alert.jsx +10 -6
- package/dist/Alert.jsx.map +1 -1
- package/dist/Autocomplete.d.ts +2 -9
- package/dist/Autocomplete.d.ts.map +1 -1
- package/dist/Autocomplete.js +19 -6
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Autocomplete.jsx +21 -8
- package/dist/Autocomplete.jsx.map +1 -1
- package/dist/Breadcrumbs.d.ts +2 -1
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +152 -59
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Breadcrumbs.jsx +99 -19
- package/dist/Breadcrumbs.jsx.map +1 -1
- package/dist/Button.d.ts +1 -7
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +144 -79
- package/dist/Button.js.map +1 -1
- package/dist/Button.jsx +124 -50
- package/dist/Button.jsx.map +1 -1
- package/dist/Calendar.d.ts +9 -7
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +321 -228
- package/dist/Calendar.js.map +1 -1
- package/dist/Calendar.jsx +74 -41
- package/dist/Calendar.jsx.map +1 -1
- package/dist/CalendarPicker.d.ts +1 -10
- package/dist/CalendarPicker.d.ts.map +1 -1
- package/dist/CalendarPicker.js +12 -0
- package/dist/CalendarPicker.js.map +1 -1
- package/dist/CalendarPicker.jsx +12 -0
- package/dist/CalendarPicker.jsx.map +1 -1
- package/dist/Checkbox.d.ts +3 -19
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +422 -317
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.jsx +150 -131
- package/dist/Checkbox.jsx.map +1 -1
- package/dist/Collection.d.ts +152 -6
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +245 -78
- package/dist/Collection.js.map +1 -1
- package/dist/Collection.jsx +150 -12
- package/dist/Collection.jsx.map +1 -1
- package/dist/Color.d.ts +8 -572
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +8 -1717
- package/dist/Color.jsx +8 -1340
- package/dist/ColorArea.d.ts +104 -0
- package/dist/ColorArea.d.ts.map +1 -0
- package/dist/ColorArea.js +382 -0
- package/dist/ColorArea.js.map +1 -0
- package/dist/ColorArea.jsx +286 -0
- package/dist/ColorArea.jsx.map +1 -0
- package/dist/ColorEditor.d.ts +3 -1
- package/dist/ColorEditor.d.ts.map +1 -1
- package/dist/ColorEditor.js +147 -125
- package/dist/ColorEditor.js.map +1 -1
- package/dist/ColorEditor.jsx +12 -6
- package/dist/ColorEditor.jsx.map +1 -1
- package/dist/ColorField.d.ts +89 -0
- package/dist/ColorField.d.ts.map +1 -0
- package/dist/ColorField.js +395 -0
- package/dist/ColorField.js.map +1 -0
- package/dist/ColorField.jsx +280 -0
- package/dist/ColorField.jsx.map +1 -0
- package/dist/ColorPicker.d.ts +33 -0
- package/dist/ColorPicker.d.ts.map +1 -0
- package/dist/ColorPicker.js +86 -0
- package/dist/ColorPicker.js.map +1 -0
- package/dist/ColorPicker.jsx +67 -0
- package/dist/ColorPicker.jsx.map +1 -0
- package/dist/ColorSlider.d.ts +145 -0
- package/dist/ColorSlider.d.ts.map +1 -0
- package/dist/ColorSlider.js +444 -0
- package/dist/ColorSlider.js.map +1 -0
- package/dist/ColorSlider.jsx +319 -0
- package/dist/ColorSlider.jsx.map +1 -0
- package/dist/ColorSwatch.d.ts +37 -0
- package/dist/ColorSwatch.d.ts.map +1 -0
- package/dist/ColorSwatch.js +101 -0
- package/dist/ColorSwatch.js.map +1 -0
- package/dist/ColorSwatch.jsx +84 -0
- package/dist/ColorSwatch.jsx.map +1 -0
- package/dist/ColorSwatchPicker.d.ts +82 -0
- package/dist/ColorSwatchPicker.d.ts.map +1 -0
- package/dist/ColorSwatchPicker.js +364 -0
- package/dist/ColorSwatchPicker.js.map +1 -0
- package/dist/ColorSwatchPicker.jsx +314 -0
- package/dist/ColorSwatchPicker.jsx.map +1 -0
- package/dist/ColorThumb.d.ts +16 -0
- package/dist/ColorThumb.d.ts.map +1 -0
- package/dist/ColorThumb.js +14 -0
- package/dist/ColorThumb.jsx +14 -0
- package/dist/ColorWheel.d.ts +103 -0
- package/dist/ColorWheel.d.ts.map +1 -0
- package/dist/ColorWheel.js +312 -0
- package/dist/ColorWheel.js.map +1 -0
- package/dist/ColorWheel.jsx +224 -0
- package/dist/ColorWheel.jsx.map +1 -0
- package/dist/ComboBox.d.ts +68 -32
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +564 -292
- package/dist/ComboBox.js.map +1 -1
- package/dist/ComboBox.jsx +235 -89
- package/dist/ComboBox.jsx.map +1 -1
- package/dist/ContextualHelpTrigger.d.ts +1 -7
- package/dist/ContextualHelpTrigger.d.ts.map +1 -1
- package/dist/ContextualHelpTrigger.js +104 -86
- package/dist/ContextualHelpTrigger.js.map +1 -1
- package/dist/ContextualHelpTrigger.jsx +38 -30
- package/dist/ContextualHelpTrigger.jsx.map +1 -1
- package/dist/DateField.d.ts +15 -9
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +0 -2
- package/dist/DateField.jsx +0 -2
- package/dist/DateField2.js +262 -196
- package/dist/DateField2.js.map +1 -1
- package/dist/DateField2.jsx +114 -74
- package/dist/DateField2.jsx.map +1 -1
- package/dist/DatePicker.d.ts +13 -34
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +3 -2
- package/dist/DatePicker.jsx +3 -2
- package/dist/DatePicker2.js +671 -512
- package/dist/DatePicker2.js.map +1 -1
- package/dist/DatePicker2.jsx +342 -222
- package/dist/DatePicker2.jsx.map +1 -1
- package/dist/DateRangePickerContext.d.ts +7 -0
- package/dist/DateRangePickerContext.d.ts.map +1 -1
- package/dist/Dialog.d.ts +6 -25
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +181 -232
- package/dist/Dialog.js.map +1 -1
- package/dist/Dialog.jsx +138 -98
- package/dist/Dialog.jsx.map +1 -1
- package/dist/Disclosure.d.ts +1 -9
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +167 -92
- package/dist/Disclosure.js.map +1 -1
- package/dist/Disclosure.jsx +62 -22
- package/dist/Disclosure.jsx.map +1 -1
- package/dist/DragAndDrop.d.ts +9 -6
- package/dist/DragAndDrop.d.ts.map +1 -1
- package/dist/DragAndDrop.js +40 -23
- package/dist/DragAndDrop.js.map +1 -1
- package/dist/DragAndDrop.jsx +23 -5
- package/dist/DragAndDrop.jsx.map +1 -1
- package/dist/DragPreview.d.ts +1 -1
- package/dist/DragPreview.d.ts.map +1 -1
- package/dist/DropZone.d.ts +4 -3
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +107 -57
- package/dist/DropZone.js.map +1 -1
- package/dist/DropZone.jsx +49 -13
- package/dist/DropZone.jsx.map +1 -1
- package/dist/ElementTag.d.ts +9 -20
- package/dist/ElementTag.d.ts.map +1 -1
- package/dist/ElementTag.js +8 -210
- package/dist/ElementTag.js.map +1 -1
- package/dist/ElementTag.jsx +8 -57
- package/dist/ElementTag.jsx.map +1 -1
- package/dist/FieldError.d.ts +8 -7
- package/dist/FieldError.d.ts.map +1 -1
- package/dist/FieldError.js +33 -13
- package/dist/FieldError.js.map +1 -1
- package/dist/FieldError.jsx +20 -5
- package/dist/FieldError.jsx.map +1 -1
- package/dist/FileTrigger.d.ts +1 -7
- package/dist/FileTrigger.d.ts.map +1 -1
- package/dist/FileTrigger.js +69 -17
- package/dist/FileTrigger.js.map +1 -1
- package/dist/FileTrigger.jsx +49 -3
- package/dist/FileTrigger.jsx.map +1 -1
- package/dist/Focusable.d.ts +2 -8
- package/dist/Focusable.d.ts.map +1 -1
- package/dist/Focusable.js +23 -6
- package/dist/Focusable.js.map +1 -1
- package/dist/Focusable.jsx +22 -5
- package/dist/Focusable.jsx.map +1 -1
- package/dist/Form.d.ts +9 -8
- package/dist/Form.d.ts.map +1 -1
- package/dist/Form.js +82 -42
- package/dist/Form.js.map +1 -1
- package/dist/Form.jsx +52 -17
- package/dist/Form.jsx.map +1 -1
- package/dist/GridList.d.ts +65 -37
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +512 -277
- package/dist/GridList.js.map +1 -1
- package/dist/GridList.jsx +307 -134
- package/dist/GridList.jsx.map +1 -1
- package/dist/Heading.d.ts +15 -0
- package/dist/Heading.d.ts.map +1 -0
- package/dist/Heading.js +55 -0
- package/dist/Heading.js.map +1 -0
- package/dist/Heading.jsx +40 -0
- package/dist/Heading.jsx.map +1 -0
- package/dist/HiddenDateInput.d.ts +1 -7
- package/dist/HiddenDateInput.d.ts.map +1 -1
- package/dist/Icon.d.ts +4 -1
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +55 -38
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.jsx +12 -4
- package/dist/Icon.jsx.map +1 -1
- package/dist/Keyboard.d.ts +1 -7
- package/dist/Keyboard.d.ts.map +1 -1
- package/dist/Keyboard.js +24 -11
- package/dist/Keyboard.js.map +1 -1
- package/dist/Keyboard.jsx +15 -2
- package/dist/Keyboard.jsx.map +1 -1
- package/dist/Label.d.ts +20 -0
- package/dist/Label.d.ts.map +1 -0
- package/dist/Label.js +60 -0
- package/dist/Label.js.map +1 -0
- package/dist/Label.jsx +47 -0
- package/dist/Label.jsx.map +1 -0
- package/dist/Landmark.d.ts +4 -1
- package/dist/Landmark.d.ts.map +1 -1
- package/dist/Landmark.js +10 -4
- package/dist/Landmark.js.map +1 -1
- package/dist/Landmark.jsx +5 -1
- package/dist/Landmark.jsx.map +1 -1
- package/dist/Link.d.ts +4 -7
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +80 -47
- package/dist/Link.js.map +1 -1
- package/dist/Link.jsx +76 -21
- package/dist/Link.jsx.map +1 -1
- package/dist/ListBox.d.ts +62 -33
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +858 -411
- package/dist/ListBox.js.map +1 -1
- package/dist/ListBox.jsx +478 -268
- package/dist/ListBox.jsx.map +1 -1
- package/dist/ListDropTargetDelegate.d.ts +3 -0
- package/dist/ListDropTargetDelegate.d.ts.map +1 -1
- package/dist/Menu.d.ts +51 -34
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +808 -427
- package/dist/Menu.js.map +1 -1
- package/dist/Menu.jsx +570 -296
- package/dist/Menu.jsx.map +1 -1
- package/dist/Meter.d.ts +6 -13
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +55 -18
- package/dist/Meter.js.map +1 -1
- package/dist/Meter.jsx +33 -8
- package/dist/Meter.jsx.map +1 -1
- package/dist/Modal.d.ts +1 -7
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +106 -74
- package/dist/Modal.js.map +1 -1
- package/dist/Modal.jsx +68 -57
- package/dist/Modal.jsx.map +1 -1
- package/dist/NumberField.d.ts +6 -9
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +344 -136
- package/dist/NumberField.js.map +1 -1
- package/dist/NumberField.jsx +194 -38
- package/dist/NumberField.jsx.map +1 -1
- package/dist/Popover.d.ts +21 -7
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +392 -192
- package/dist/Popover.js.map +1 -1
- package/dist/Popover.jsx +237 -93
- package/dist/Popover.jsx.map +1 -1
- package/dist/Pressable.d.ts +2 -8
- package/dist/Pressable.d.ts.map +1 -1
- package/dist/Pressable.js +23 -6
- package/dist/Pressable.js.map +1 -1
- package/dist/Pressable.jsx +22 -5
- package/dist/Pressable.jsx.map +1 -1
- package/dist/PreviewTrigger.d.ts +24 -0
- package/dist/PreviewTrigger.d.ts.map +1 -0
- package/dist/PreviewTrigger.js +128 -0
- package/dist/PreviewTrigger.js.map +1 -0
- package/dist/PreviewTrigger.jsx +117 -0
- package/dist/PreviewTrigger.jsx.map +1 -0
- package/dist/ProgressBar.d.ts +1 -7
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar.js +49 -16
- package/dist/ProgressBar.js.map +1 -1
- package/dist/ProgressBar.jsx +30 -6
- package/dist/ProgressBar.jsx.map +1 -1
- package/dist/RadioGroup.d.ts +4 -20
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +459 -338
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioGroup.jsx +186 -153
- package/dist/RadioGroup.jsx.map +1 -1
- package/dist/RangeCalendar.d.ts +11 -7
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +299 -208
- package/dist/RangeCalendar.js.map +1 -1
- package/dist/RangeCalendar.jsx +79 -47
- package/dist/RangeCalendar.jsx.map +1 -1
- package/dist/RouterProvider.d.ts +17 -69
- package/dist/RouterProvider.d.ts.map +1 -1
- package/dist/RouterProvider.js +12 -116
- package/dist/RouterProvider.jsx +12 -110
- package/dist/SearchField.d.ts +5 -8
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +212 -181
- package/dist/SearchField.js.map +1 -1
- package/dist/SearchField.jsx +94 -78
- package/dist/SearchField.jsx.map +1 -1
- package/dist/Select.d.ts +73 -36
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +700 -453
- package/dist/Select.js.map +1 -1
- package/dist/Select.jsx +356 -237
- package/dist/Select.jsx.map +1 -1
- package/dist/SelectionIndicator.d.ts +1 -4
- package/dist/SelectionIndicator.d.ts.map +1 -1
- package/dist/SelectionIndicator.js +29 -13
- package/dist/SelectionIndicator.js.map +1 -1
- package/dist/SelectionIndicator.jsx +18 -4
- package/dist/SelectionIndicator.jsx.map +1 -1
- package/dist/Separator.d.ts +3 -9
- package/dist/Separator.d.ts.map +1 -1
- package/dist/Separator.js +24 -12
- package/dist/Separator.js.map +1 -1
- package/dist/Separator.jsx +18 -9
- package/dist/Separator.jsx.map +1 -1
- package/dist/SharedElementTransition.d.ts +1 -10
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +68 -40
- package/dist/SharedElementTransition.js.map +1 -1
- package/dist/SharedElementTransition.jsx +49 -25
- package/dist/SharedElementTransition.jsx.map +1 -1
- package/dist/Slider.d.ts +25 -26
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +324 -167
- package/dist/Slider.js.map +1 -1
- package/dist/Slider.jsx +195 -93
- package/dist/Slider.jsx.map +1 -1
- package/dist/StepList.d.ts +2 -8
- package/dist/StepList.d.ts.map +1 -1
- package/dist/StepList.js +121 -75
- package/dist/StepList.js.map +1 -1
- package/dist/StepList.jsx +67 -27
- package/dist/StepList.jsx.map +1 -1
- package/dist/Switch.d.ts +17 -11
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +213 -128
- package/dist/Switch.js.map +1 -1
- package/dist/Switch.jsx +68 -31
- package/dist/Switch.jsx.map +1 -1
- package/dist/Table.d.ts +21 -2
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +938 -638
- package/dist/Table.js.map +1 -1
- package/dist/Table.jsx +537 -259
- package/dist/Table.jsx.map +1 -1
- package/dist/Tabs.d.ts +2 -7
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +322 -300
- package/dist/Tabs.js.map +1 -1
- package/dist/Tabs.jsx +106 -67
- package/dist/Tabs.jsx.map +1 -1
- package/dist/TagGroup.d.ts +32 -22
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +377 -136
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagGroup.jsx +220 -53
- package/dist/TagGroup.jsx.map +1 -1
- package/dist/Text.d.ts +3 -3
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +38 -8
- package/dist/Text.js.map +1 -1
- package/dist/Text.jsx +27 -5
- package/dist/Text.jsx.map +1 -1
- package/dist/TextField.d.ts +4 -17
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +116 -142
- package/dist/TextField.js.map +1 -1
- package/dist/TextField.jsx +88 -115
- package/dist/TextField.jsx.map +1 -1
- package/dist/TimeField.d.ts +3 -16
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +121 -107
- package/dist/TimeField.js.map +1 -1
- package/dist/TimeField.jsx +67 -54
- package/dist/TimeField.jsx.map +1 -1
- package/dist/Toast.d.ts +27 -14
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +273 -113
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.jsx +182 -32
- package/dist/Toast.jsx.map +1 -1
- package/dist/ToggleButton.d.ts +1 -7
- package/dist/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton.js +75 -35
- package/dist/ToggleButton.js.map +1 -1
- package/dist/ToggleButton.jsx +39 -13
- package/dist/ToggleButton.jsx.map +1 -1
- package/dist/ToggleButtonGroup.d.ts +1 -7
- package/dist/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButtonGroup.js +59 -44
- package/dist/ToggleButtonGroup.js.map +1 -1
- package/dist/ToggleButtonGroup.jsx +25 -12
- package/dist/ToggleButtonGroup.jsx.map +1 -1
- package/dist/TokenField.d.ts +54 -0
- package/dist/TokenField.d.ts.map +1 -0
- package/dist/TokenField.js +374 -0
- package/dist/TokenField.js.map +1 -0
- package/dist/TokenField.jsx +272 -0
- package/dist/TokenField.jsx.map +1 -0
- package/dist/Toolbar.d.ts +2 -7
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar.js +37 -22
- package/dist/Toolbar.js.map +1 -1
- package/dist/Toolbar.jsx +17 -8
- package/dist/Toolbar.jsx.map +1 -1
- package/dist/Tooltip.d.ts +2 -7
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip.js +128 -78
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.jsx +83 -46
- package/dist/Tooltip.jsx.map +1 -1
- package/dist/Tree.d.ts +85 -39
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +926 -414
- package/dist/Tree.js.map +1 -1
- package/dist/Tree.jsx +450 -195
- package/dist/Tree.jsx.map +1 -1
- package/dist/Virtualizer.d.ts +41 -10
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -2
- package/dist/Virtualizer.jsx +2 -2
- package/dist/Virtualizer2.js +554 -144
- package/dist/Virtualizer2.js.map +1 -1
- package/dist/Virtualizer2.jsx +516 -124
- package/dist/Virtualizer2.jsx.map +1 -1
- package/dist/VirtualizerLayouts.d.ts +55 -2
- package/dist/VirtualizerLayouts.d.ts.map +1 -1
- package/dist/VisuallyHidden.d.ts +4 -3
- package/dist/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +18 -11
- package/dist/VisuallyHidden.js.map +1 -1
- package/dist/VisuallyHidden.jsx +15 -9
- package/dist/VisuallyHidden.jsx.map +1 -1
- package/dist/calendarHeadingTitle.d.ts +14 -0
- package/dist/calendarHeadingTitle.d.ts.map +1 -0
- package/dist/calendarHeadingTitle.js +23 -0
- package/dist/calendarHeadingTitle.js.map +1 -0
- package/dist/calendarHeadingTitle.jsx +23 -0
- package/dist/calendarHeadingTitle.jsx.map +1 -0
- package/dist/contexts.d.ts +31 -1
- package/dist/contexts.d.ts.map +1 -1
- package/dist/contexts.js +9 -1
- package/dist/contexts.js.map +1 -1
- package/dist/contexts.jsx +9 -1
- package/dist/contexts.jsx.map +1 -1
- package/dist/fileTriggerContext.d.ts +5 -0
- package/dist/fileTriggerContext.d.ts.map +1 -0
- package/dist/fileTriggerContext.js +7 -0
- package/dist/fileTriggerContext.js.map +1 -0
- package/dist/fileTriggerContext.jsx +7 -0
- package/dist/fileTriggerContext.jsx.map +1 -0
- package/dist/index.d.ts +27 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -18
- package/dist/index.jsx +30 -18
- package/dist/intl/index.d.ts +16 -0
- package/dist/intl/index.d.ts.map +1 -0
- package/dist/intl.js +212 -0
- package/dist/intl.js.map +1 -0
- package/dist/intl.jsx +212 -0
- package/dist/intl.jsx.map +1 -0
- package/dist/loadMoreSentinel.d.ts +7 -0
- package/dist/loadMoreSentinel.d.ts.map +1 -0
- package/dist/loadMoreSentinel.js +30 -0
- package/dist/loadMoreSentinel.js.map +1 -0
- package/dist/loadMoreSentinel.jsx +30 -0
- package/dist/loadMoreSentinel.jsx.map +1 -0
- package/dist/slots.d.ts +35 -0
- package/dist/slots.d.ts.map +1 -0
- package/dist/slots.js +66 -0
- package/dist/slots.js.map +1 -0
- package/dist/slots.jsx +66 -0
- package/dist/slots.jsx.map +1 -0
- package/dist/staticSelectCollection.d.ts +2 -0
- package/dist/staticSelectCollection.d.ts.map +1 -0
- package/dist/staticSelectCollection.js +2 -0
- package/dist/staticSelectCollection.jsx +2 -0
- package/dist/useDragAndDrop.d.ts +6 -2
- package/dist/useDragAndDrop.d.ts.map +1 -1
- package/dist/useDragAndDrop2.js +39 -21
- package/dist/useDragAndDrop2.js.map +1 -1
- package/dist/useDragAndDrop2.jsx +39 -21
- package/dist/useDragAndDrop2.jsx.map +1 -1
- package/dist/utils.d.ts +49 -9
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +119 -24
- package/dist/utils.js.map +1 -1
- package/dist/utils.jsx +110 -24
- package/dist/utils.jsx.map +1 -1
- package/dist/virtualizer/Layout.d.ts +12 -2
- package/dist/virtualizer/Layout.d.ts.map +1 -1
- package/dist/virtualizer/Layout.js +23 -2
- package/dist/virtualizer/Layout.js.map +1 -1
- package/dist/virtualizer/Layout.jsx +23 -2
- package/dist/virtualizer/Layout.jsx.map +1 -1
- package/package.json +87 -10
- package/src/ActionBar.tsx +50 -24
- package/src/ActionGroup.tsx +30 -19
- package/src/Alert.tsx +12 -7
- package/src/Autocomplete.tsx +25 -16
- package/src/Breadcrumbs.tsx +139 -24
- package/src/Button.tsx +214 -76
- package/src/Calendar.tsx +120 -61
- package/src/CalendarPicker.tsx +16 -1
- package/src/Checkbox.tsx +205 -227
- package/src/Collection.tsx +334 -12
- package/src/Color.tsx +8 -2454
- package/src/ColorArea.tsx +479 -0
- package/src/ColorEditor.tsx +9 -9
- package/src/ColorField.tsx +471 -0
- package/src/ColorPicker.tsx +126 -0
- package/src/ColorSlider.tsx +562 -0
- package/src/ColorSwatch.tsx +129 -0
- package/src/ColorSwatchPicker.tsx +623 -0
- package/src/ColorThumb.tsx +19 -0
- package/src/ColorWheel.tsx +398 -0
- package/src/ComboBox.tsx +471 -173
- package/src/ContextualHelpTrigger.tsx +49 -65
- package/src/DateField.tsx +174 -131
- package/src/DatePicker.tsx +501 -376
- package/src/DateRangePickerContext.tsx +8 -0
- package/src/Dialog.tsx +224 -162
- package/src/Disclosure.tsx +85 -34
- package/src/DragAndDrop.tsx +51 -9
- package/src/DragPreview.tsx +20 -1
- package/src/DropZone.tsx +77 -42
- package/src/ElementTag.tsx +14 -104
- package/src/FieldError.tsx +39 -7
- package/src/FileTrigger.tsx +71 -4
- package/src/Focusable.tsx +27 -11
- package/src/Form.tsx +64 -15
- package/src/GridList.tsx +478 -214
- package/src/Heading.tsx +59 -0
- package/src/HiddenDateInput.tsx +19 -3
- package/src/Icon.tsx +19 -4
- package/src/Keyboard.tsx +18 -2
- package/src/Label.tsx +77 -0
- package/src/Landmark.tsx +6 -1
- package/src/Link.tsx +103 -30
- package/src/ListBox.tsx +924 -530
- package/src/ListDropTargetDelegate.ts +4 -0
- package/src/Menu.tsx +883 -465
- package/src/Meter.tsx +42 -8
- package/src/Modal.tsx +89 -80
- package/src/NumberField.tsx +267 -66
- package/src/Popover.tsx +454 -156
- package/src/Pressable.tsx +27 -11
- package/src/PreviewTrigger.tsx +171 -0
- package/src/ProgressBar.tsx +41 -5
- package/src/RadioGroup.tsx +358 -278
- package/src/RangeCalendar.tsx +130 -77
- package/src/RouterProvider.tsx +33 -215
- package/src/SearchField.tsx +157 -136
- package/src/Select.tsx +689 -453
- package/src/SelectionIndicator.tsx +21 -3
- package/src/Separator.tsx +22 -14
- package/src/SharedElementTransition.tsx +67 -46
- package/src/Slider.tsx +296 -120
- package/src/StepList.tsx +88 -38
- package/src/Switch.tsx +127 -51
- package/src/Table.tsx +842 -479
- package/src/Tabs.tsx +186 -156
- package/src/TagGroup.tsx +377 -90
- package/src/Text.tsx +39 -7
- package/src/TextField.tsx +136 -173
- package/src/TimeField.tsx +90 -93
- package/src/Toast.tsx +238 -82
- package/src/ToggleButton.tsx +60 -17
- package/src/ToggleButtonGroup.tsx +27 -9
- package/src/TokenField.tsx +502 -0
- package/src/Toolbar.tsx +21 -17
- package/src/Tooltip.tsx +157 -99
- package/src/Tree.tsx +888 -360
- package/src/Virtualizer.tsx +501 -148
- package/src/VirtualizerLayouts.ts +211 -26
- package/src/VisuallyHidden.tsx +22 -8
- package/src/calendarHeadingTitle.ts +37 -0
- package/src/contexts.ts +23 -1
- package/src/fileTriggerContext.ts +8 -0
- package/src/index.ts +98 -22
- package/src/intl/ar-AE.json +6 -0
- package/src/intl/bg-BG.json +6 -0
- package/src/intl/cs-CZ.json +6 -0
- package/src/intl/da-DK.json +6 -0
- package/src/intl/de-DE.json +6 -0
- package/src/intl/el-GR.json +6 -0
- package/src/intl/en-US.json +6 -0
- package/src/intl/es-ES.json +6 -0
- package/src/intl/et-EE.json +6 -0
- package/src/intl/fi-FI.json +6 -0
- package/src/intl/fr-FR.json +6 -0
- package/src/intl/he-IL.json +6 -0
- package/src/intl/hr-HR.json +6 -0
- package/src/intl/hu-HU.json +6 -0
- package/src/intl/index.ts +125 -0
- package/src/intl/it-IT.json +6 -0
- package/src/intl/ja-JP.json +6 -0
- package/src/intl/ko-KR.json +6 -0
- package/src/intl/lt-LT.json +6 -0
- package/src/intl/lv-LV.json +6 -0
- package/src/intl/nb-NO.json +6 -0
- package/src/intl/nl-NL.json +6 -0
- package/src/intl/pl-PL.json +6 -0
- package/src/intl/pt-BR.json +6 -0
- package/src/intl/pt-PT.json +6 -0
- package/src/intl/ro-RO.json +6 -0
- package/src/intl/ru-RU.json +6 -0
- package/src/intl/sk-SK.json +6 -0
- package/src/intl/sl-SI.json +6 -0
- package/src/intl/sr-SP.json +6 -0
- package/src/intl/sv-SE.json +6 -0
- package/src/intl/tr-TR.json +6 -0
- package/src/intl/uk-UA.json +6 -0
- package/src/intl/zh-CN.json +6 -0
- package/src/intl/zh-TW.json +6 -0
- package/src/loadMoreSentinel.ts +31 -0
- package/src/slots.tsx +103 -0
- package/src/staticSelectCollection.tsx +25 -0
- package/src/useDragAndDrop.ts +35 -33
- package/src/utils.tsx +178 -67
- package/src/virtualizer/Layout.ts +32 -2
- package/dist/Color.js.map +0 -1
- package/dist/Color.jsx.map +0 -1
- package/dist/RouterProvider.js.map +0 -1
- package/dist/RouterProvider.jsx.map +0 -1
package/src/TagGroup.tsx
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/TagGroup.tsx
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* TagGroup component for solidaria-components
|
|
3
17
|
*
|
|
@@ -8,17 +22,15 @@
|
|
|
8
22
|
* with support for keyboard navigation, selection, and removal.
|
|
9
23
|
*/
|
|
10
24
|
|
|
25
|
+
import { createContext, createMemo, createSignal, useContext, For, Show } from "solid-js";
|
|
26
|
+
import type { Context } from "solid-js";
|
|
27
|
+
import type { JSX } from "@solidjs/web";
|
|
11
28
|
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
useContext,
|
|
18
|
-
For,
|
|
19
|
-
Show,
|
|
20
|
-
} from "solid-js";
|
|
21
|
-
import {
|
|
29
|
+
createButton,
|
|
30
|
+
createFocusRing,
|
|
31
|
+
createHover,
|
|
32
|
+
createId,
|
|
33
|
+
createSlotId,
|
|
22
34
|
createTagGroup,
|
|
23
35
|
createTag,
|
|
24
36
|
useLocale,
|
|
@@ -41,8 +53,15 @@ import {
|
|
|
41
53
|
filterDOMProps,
|
|
42
54
|
dataAttr,
|
|
43
55
|
mergeRefs,
|
|
56
|
+
assignRef,
|
|
57
|
+
useSlot,
|
|
58
|
+
Provider,
|
|
44
59
|
} from "./utils";
|
|
60
|
+
import { LabelContext } from "./Label";
|
|
61
|
+
import { TextContext } from "./Text";
|
|
62
|
+
import { ButtonContext, type ButtonProps } from "./Button";
|
|
45
63
|
import { SharedElementTransition } from "./SharedElementTransition";
|
|
64
|
+
import { splitProps } from "@proyecto-viviana/solidaria/utils";
|
|
46
65
|
import {
|
|
47
66
|
SelectionIndicatorContext,
|
|
48
67
|
type SelectionIndicatorContextValue,
|
|
@@ -59,7 +78,10 @@ export interface TagGroupProps
|
|
|
59
78
|
extends
|
|
60
79
|
Omit<AriaTagGroupProps, "id">,
|
|
61
80
|
SlotProps,
|
|
62
|
-
Omit<
|
|
81
|
+
Omit<
|
|
82
|
+
JSX.HTMLAttributes<HTMLDivElement>,
|
|
83
|
+
"class" | "style" | "children" | "aria-label" | "aria-labelledby" | "aria-describedby"
|
|
84
|
+
> {
|
|
63
85
|
/** The children of the component. */
|
|
64
86
|
children?: JSX.Element;
|
|
65
87
|
/** The CSS className for the element. */
|
|
@@ -71,8 +93,10 @@ export interface TagGroupProps
|
|
|
71
93
|
export interface TagListRenderProps {
|
|
72
94
|
/** Whether the tag list is empty. */
|
|
73
95
|
isEmpty: boolean;
|
|
74
|
-
/** Whether the tag list is focused. */
|
|
96
|
+
/** Whether the tag list itself is focused. */
|
|
75
97
|
isFocused: boolean;
|
|
98
|
+
/** Whether the tag list itself is keyboard focused. */
|
|
99
|
+
isFocusVisible: boolean;
|
|
76
100
|
}
|
|
77
101
|
|
|
78
102
|
export interface TagListProps<T>
|
|
@@ -124,6 +148,8 @@ export interface TagRenderProps {
|
|
|
124
148
|
isDisabled: boolean;
|
|
125
149
|
/** Whether the tag is focused. */
|
|
126
150
|
isFocused: boolean;
|
|
151
|
+
/** Whether the tag is keyboard focused. */
|
|
152
|
+
isFocusVisible: boolean;
|
|
127
153
|
/** Whether the tag is pressed. */
|
|
128
154
|
isPressed: boolean;
|
|
129
155
|
/** Whether the tag allows removal. */
|
|
@@ -168,6 +194,19 @@ export const TagGroupContext = createContext<TagGroupContextValue | null>(null);
|
|
|
168
194
|
export const TagListStateContext = createContext<ListState | null>(null);
|
|
169
195
|
export const TagContext = createContext<TagContextValue | null>(null);
|
|
170
196
|
|
|
197
|
+
// Label and help text are siblings of TagList, so the group mints their ids
|
|
198
|
+
// and the list points the grid at them. Remove-button text, aria-live, and
|
|
199
|
+
// focusing the list when the last tag disappears stay out of this path (#54).
|
|
200
|
+
interface TagGroupFieldContextValue {
|
|
201
|
+
descriptionId: () => string | undefined;
|
|
202
|
+
errorMessageId: () => string | undefined;
|
|
203
|
+
labelledBy: () => string | undefined;
|
|
204
|
+
ariaLabel: () => string | undefined;
|
|
205
|
+
describedBy: () => string | undefined;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const TagGroupFieldContext = createContext<TagGroupFieldContextValue | null>(null);
|
|
209
|
+
|
|
171
210
|
export function useTagGroupContext(): TagGroupContextValue | null {
|
|
172
211
|
return useContext(TagGroupContext);
|
|
173
212
|
}
|
|
@@ -186,9 +225,51 @@ export function useTagGroupContext(): TagGroupContextValue | null {
|
|
|
186
225
|
* ```
|
|
187
226
|
*/
|
|
188
227
|
export function TagGroup(props: TagGroupProps): JSX.Element {
|
|
189
|
-
const [local, domProps] = splitProps(props, [
|
|
228
|
+
const [local, domProps] = splitProps(props, [
|
|
229
|
+
"class",
|
|
230
|
+
"style",
|
|
231
|
+
"slot",
|
|
232
|
+
"children",
|
|
233
|
+
"label",
|
|
234
|
+
"aria-label",
|
|
235
|
+
"aria-labelledby",
|
|
236
|
+
"aria-describedby",
|
|
237
|
+
"description",
|
|
238
|
+
"errorMessage",
|
|
239
|
+
]);
|
|
240
|
+
|
|
241
|
+
// Start true when nothing else names the group, matching useSlot: a Label
|
|
242
|
+
// child confirms it, and onSettled clears it when that child is absent.
|
|
243
|
+
const [labelRef, hasLabel] = useSlot(
|
|
244
|
+
!local["aria-label"] && !local["aria-labelledby"] && !local.label,
|
|
245
|
+
);
|
|
246
|
+
const labelId = createId();
|
|
247
|
+
const descriptionId = createSlotId([
|
|
248
|
+
() => Boolean(local.description),
|
|
249
|
+
() => Boolean(local.errorMessage),
|
|
250
|
+
]);
|
|
251
|
+
const errorMessageId = createSlotId([
|
|
252
|
+
() => Boolean(local.description),
|
|
253
|
+
() => Boolean(local.errorMessage),
|
|
254
|
+
]);
|
|
255
|
+
const field: TagGroupFieldContextValue = {
|
|
256
|
+
descriptionId,
|
|
257
|
+
errorMessageId,
|
|
258
|
+
labelledBy: () => local["aria-labelledby"] ?? (hasLabel() ? labelId : undefined),
|
|
259
|
+
ariaLabel: () => local["aria-label"],
|
|
260
|
+
describedBy: () => local["aria-describedby"],
|
|
261
|
+
};
|
|
262
|
+
const textSlots = {
|
|
263
|
+
slots: {
|
|
264
|
+
get description() {
|
|
265
|
+
return { id: descriptionId() };
|
|
266
|
+
},
|
|
267
|
+
get errorMessage() {
|
|
268
|
+
return { id: errorMessageId() };
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
};
|
|
190
272
|
|
|
191
|
-
// We need TagList to provide the state, so TagGroup just provides context
|
|
192
273
|
return (
|
|
193
274
|
<div
|
|
194
275
|
{...domProps}
|
|
@@ -196,7 +277,19 @@ export function TagGroup(props: TagGroupProps): JSX.Element {
|
|
|
196
277
|
style={typeof local.style === "object" ? local.style : undefined}
|
|
197
278
|
slot={local.slot}
|
|
198
279
|
>
|
|
199
|
-
{
|
|
280
|
+
<TagGroupFieldContext value={field}>
|
|
281
|
+
<LabelContext
|
|
282
|
+
value={{
|
|
283
|
+
ref: labelRef,
|
|
284
|
+
elementType: "span",
|
|
285
|
+
get id() {
|
|
286
|
+
return labelId;
|
|
287
|
+
},
|
|
288
|
+
}}
|
|
289
|
+
>
|
|
290
|
+
<TextContext value={textSlots}>{local.children}</TextContext>
|
|
291
|
+
</LabelContext>
|
|
292
|
+
</TagGroupFieldContext>
|
|
200
293
|
</div>
|
|
201
294
|
);
|
|
202
295
|
}
|
|
@@ -267,24 +360,47 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
|
|
|
267
360
|
// under RTL. Thread the resolved layout direction into the hook (mirrors
|
|
268
361
|
// ListBox, and useTagGroup passing `direction` to the ListKeyboardDelegate).
|
|
269
362
|
const locale = useLocale();
|
|
363
|
+
const field = useContext(TagGroupFieldContext);
|
|
364
|
+
|
|
365
|
+
// Callback-valued props must not go through createMemo — a memo that
|
|
366
|
+
// stores a function is easy to unwrap/call, and the live getter
|
|
367
|
+
// `onRemove={handler()}` must re-read on each access.
|
|
368
|
+
const onRemove = () => local.onRemove;
|
|
369
|
+
|
|
370
|
+
const labelledBy = () => local["aria-labelledby"] ?? field?.labelledBy();
|
|
371
|
+
const describedBy = () => {
|
|
372
|
+
const ids = [
|
|
373
|
+
field?.descriptionId(),
|
|
374
|
+
field?.errorMessageId(),
|
|
375
|
+
local["aria-describedby"] ?? field?.describedBy(),
|
|
376
|
+
].filter((id): id is string => !!id);
|
|
377
|
+
return ids.length > 0 ? ids.join(" ") : undefined;
|
|
378
|
+
};
|
|
270
379
|
|
|
271
|
-
// Create tag group accessibility props
|
|
272
380
|
const tagGroupAria = createTagGroup(
|
|
273
381
|
{
|
|
274
382
|
get "aria-label"() {
|
|
275
|
-
|
|
383
|
+
if (local["aria-label"] != null) {
|
|
384
|
+
return local["aria-label"];
|
|
385
|
+
}
|
|
386
|
+
// A real label id suppresses the string fallback; the grid is named
|
|
387
|
+
// by aria-labelledby. TagList's own label still wins when no id is set.
|
|
388
|
+
if (labelledBy()) {
|
|
389
|
+
return field?.ariaLabel();
|
|
390
|
+
}
|
|
391
|
+
return local.label ?? field?.ariaLabel();
|
|
276
392
|
},
|
|
277
393
|
get "aria-labelledby"() {
|
|
278
|
-
return
|
|
394
|
+
return labelledBy();
|
|
279
395
|
},
|
|
280
396
|
get "aria-describedby"() {
|
|
281
|
-
return
|
|
397
|
+
return describedBy();
|
|
282
398
|
},
|
|
283
399
|
get isDisabled() {
|
|
284
400
|
return local.isDisabled;
|
|
285
401
|
},
|
|
286
402
|
get onRemove() {
|
|
287
|
-
return
|
|
403
|
+
return onRemove();
|
|
288
404
|
},
|
|
289
405
|
get direction() {
|
|
290
406
|
return locale().direction;
|
|
@@ -294,11 +410,14 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
|
|
|
294
410
|
gridRef,
|
|
295
411
|
);
|
|
296
412
|
|
|
297
|
-
|
|
413
|
+
// Self ring: a focused row must not mark the list. Solid onFocus does not
|
|
414
|
+
// bubble, which matches useFocusRing() with no `within`.
|
|
415
|
+
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
298
416
|
|
|
299
417
|
const renderValues = createMemo<TagListRenderProps>(() => ({
|
|
300
418
|
isEmpty: local.items.length === 0,
|
|
301
419
|
isFocused: isFocused(),
|
|
420
|
+
isFocusVisible: isFocusVisible(),
|
|
302
421
|
}));
|
|
303
422
|
|
|
304
423
|
const renderProps = useRenderProps(
|
|
@@ -313,7 +432,7 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
|
|
|
313
432
|
const contextValue: TagGroupContextValue = {
|
|
314
433
|
state,
|
|
315
434
|
get onRemove() {
|
|
316
|
-
return
|
|
435
|
+
return onRemove();
|
|
317
436
|
},
|
|
318
437
|
get isDisabled() {
|
|
319
438
|
return local.isDisabled;
|
|
@@ -321,31 +440,27 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
|
|
|
321
440
|
};
|
|
322
441
|
|
|
323
442
|
return (
|
|
324
|
-
<TagGroupContext
|
|
325
|
-
<TagListStateContext
|
|
443
|
+
<TagGroupContext value={contextValue}>
|
|
444
|
+
<TagListStateContext value={state}>
|
|
326
445
|
<div
|
|
327
446
|
ref={setGridRef}
|
|
328
447
|
{...domProps}
|
|
329
448
|
{...tagGroupAria.gridProps}
|
|
330
449
|
class={renderProps.class()}
|
|
331
450
|
style={renderProps.style()}
|
|
332
|
-
//
|
|
333
|
-
//
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
setIsFocused(true);
|
|
451
|
+
// Chain after the grid trampoline. Replacing gridProps.onFocus would
|
|
452
|
+
// skip the move onto the first or last row.
|
|
453
|
+
onFocus={(event) => {
|
|
454
|
+
tagGroupAria.gridProps.onFocus?.(event);
|
|
455
|
+
focusProps.onFocus?.(event);
|
|
338
456
|
}}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
return;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
setIsFocused(false);
|
|
457
|
+
onBlur={(event) => {
|
|
458
|
+
tagGroupAria.gridProps.onBlur?.(event);
|
|
459
|
+
focusProps.onBlur?.(event);
|
|
346
460
|
}}
|
|
347
461
|
data-empty={dataAttr(local.items.length === 0)}
|
|
348
462
|
data-focused={dataAttr(isFocused())}
|
|
463
|
+
data-focus-visible={dataAttr(isFocusVisible())}
|
|
349
464
|
>
|
|
350
465
|
<SharedElementTransition>
|
|
351
466
|
<Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>
|
|
@@ -353,8 +468,8 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
|
|
|
353
468
|
</Show>
|
|
354
469
|
</SharedElementTransition>
|
|
355
470
|
</div>
|
|
356
|
-
</TagListStateContext
|
|
357
|
-
</TagGroupContext
|
|
471
|
+
</TagListStateContext>
|
|
472
|
+
</TagGroupContext>
|
|
358
473
|
);
|
|
359
474
|
}
|
|
360
475
|
|
|
@@ -392,6 +507,9 @@ export function Tag(props: TagProps): JSX.Element {
|
|
|
392
507
|
get textValue() {
|
|
393
508
|
return local.textValue;
|
|
394
509
|
},
|
|
510
|
+
get onAction() {
|
|
511
|
+
return local.onAction ? () => local.onAction?.(local.id) : undefined;
|
|
512
|
+
},
|
|
395
513
|
},
|
|
396
514
|
state!,
|
|
397
515
|
tagRef,
|
|
@@ -403,21 +521,21 @@ export function Tag(props: TagProps): JSX.Element {
|
|
|
403
521
|
return {
|
|
404
522
|
...raw,
|
|
405
523
|
onPress: () => {
|
|
406
|
-
if (!tagAria.isDisabled && groupContext?.onRemove) {
|
|
407
|
-
groupContext.onRemove(new Set([local.id]));
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
410
524
|
rawHandler?.();
|
|
411
525
|
},
|
|
412
526
|
};
|
|
413
527
|
});
|
|
414
528
|
|
|
529
|
+
const allowsRemoving = createMemo(
|
|
530
|
+
() => Boolean(tagAria.allowsRemoving) || Boolean(groupContext?.onRemove),
|
|
531
|
+
);
|
|
415
532
|
const renderValues = createMemo<TagRenderProps>(() => ({
|
|
416
533
|
isSelected: tagAria.isSelected,
|
|
417
534
|
isDisabled: tagAria.isDisabled,
|
|
418
535
|
isFocused: tagAria.isFocused,
|
|
536
|
+
isFocusVisible: tagAria.isFocusVisible,
|
|
419
537
|
isPressed: tagAria.isPressed,
|
|
420
|
-
allowsRemoving:
|
|
538
|
+
allowsRemoving: allowsRemoving(),
|
|
421
539
|
selectionMode: state?.selectionMode() ?? "none",
|
|
422
540
|
removeButtonProps: normalizedRemoveButtonProps(),
|
|
423
541
|
}));
|
|
@@ -440,15 +558,42 @@ export function Tag(props: TagProps): JSX.Element {
|
|
|
440
558
|
|
|
441
559
|
const domProps = createMemo(() => filterDOMProps(rest, { global: true }));
|
|
442
560
|
|
|
561
|
+
// Pin remove props carry no tabIndex. #318 keeps tabIndex -1 on TagRemoveButton.
|
|
562
|
+
const removeButtonSlot: ButtonProps = {
|
|
563
|
+
get id() {
|
|
564
|
+
return tagAria.removeButtonProps.id as string;
|
|
565
|
+
},
|
|
566
|
+
get "aria-label"() {
|
|
567
|
+
return tagAria.removeButtonProps["aria-label"] as string;
|
|
568
|
+
},
|
|
569
|
+
get "aria-labelledby"() {
|
|
570
|
+
return tagAria.removeButtonProps["aria-labelledby"] as string;
|
|
571
|
+
},
|
|
572
|
+
get isDisabled() {
|
|
573
|
+
return Boolean(tagAria.removeButtonProps.isDisabled);
|
|
574
|
+
},
|
|
575
|
+
onPress() {
|
|
576
|
+
const handler = tagAria.removeButtonProps.onPress;
|
|
577
|
+
if (typeof handler === "function") {
|
|
578
|
+
handler();
|
|
579
|
+
}
|
|
580
|
+
},
|
|
581
|
+
};
|
|
582
|
+
const buttonContextValue = {
|
|
583
|
+
slots: {
|
|
584
|
+
remove: removeButtonSlot,
|
|
585
|
+
},
|
|
586
|
+
};
|
|
587
|
+
|
|
443
588
|
return (
|
|
444
|
-
<SelectionIndicatorContext
|
|
445
|
-
<TagContext
|
|
589
|
+
<SelectionIndicatorContext value={selectionIndicatorContext()}>
|
|
590
|
+
<TagContext
|
|
446
591
|
value={{
|
|
447
592
|
get removeButtonProps() {
|
|
448
593
|
return normalizedRemoveButtonProps();
|
|
449
594
|
},
|
|
450
595
|
get allowsRemoving() {
|
|
451
|
-
return
|
|
596
|
+
return allowsRemoving();
|
|
452
597
|
},
|
|
453
598
|
}}
|
|
454
599
|
>
|
|
@@ -458,40 +603,56 @@ export function Tag(props: TagProps): JSX.Element {
|
|
|
458
603
|
{...tagAria.rowProps}
|
|
459
604
|
class={renderProps.class()}
|
|
460
605
|
style={renderProps.style()}
|
|
461
|
-
onClick={(event) => {
|
|
462
|
-
const rowClick = tagAria.rowProps.onClick;
|
|
463
|
-
if (typeof rowClick === "function") {
|
|
464
|
-
(rowClick as JSX.EventHandler<HTMLDivElement, MouseEvent>)(event);
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
if (!tagAria.isDisabled && !(event.target as Element | null)?.closest("button")) {
|
|
468
|
-
local.onAction?.(local.id);
|
|
469
|
-
}
|
|
470
|
-
}}
|
|
471
606
|
data-selected={dataAttr(tagAria.isSelected)}
|
|
472
607
|
data-disabled={dataAttr(tagAria.isDisabled)}
|
|
473
608
|
data-focused={dataAttr(tagAria.isFocused)}
|
|
609
|
+
data-focus-visible={dataAttr(tagAria.isFocusVisible)}
|
|
474
610
|
data-pressed={dataAttr(tagAria.isPressed)}
|
|
475
|
-
data-allows-removing={dataAttr(
|
|
611
|
+
data-allows-removing={dataAttr(allowsRemoving())}
|
|
476
612
|
>
|
|
477
613
|
<div {...tagAria.gridCellProps} style={{ display: "contents" }}>
|
|
478
|
-
|
|
614
|
+
<Provider
|
|
615
|
+
values={[[ButtonContext, buttonContextValue]] as Array<[Context<unknown>, unknown]>}
|
|
616
|
+
>
|
|
617
|
+
{renderProps.renderChildrenStable()}
|
|
618
|
+
</Provider>
|
|
479
619
|
</div>
|
|
480
620
|
</div>
|
|
481
|
-
</TagContext
|
|
482
|
-
</SelectionIndicatorContext
|
|
621
|
+
</TagContext>
|
|
622
|
+
</SelectionIndicatorContext>
|
|
483
623
|
);
|
|
484
624
|
}
|
|
485
625
|
|
|
486
|
-
export interface
|
|
487
|
-
/**
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
|
|
491
|
-
/**
|
|
492
|
-
|
|
626
|
+
export interface TagRemoveButtonRenderProps {
|
|
627
|
+
/** Whether the remove button is pressed. */
|
|
628
|
+
isPressed: boolean;
|
|
629
|
+
/** Whether the remove button is disabled. */
|
|
630
|
+
isDisabled: boolean;
|
|
631
|
+
/** Whether the remove button is hovered. */
|
|
632
|
+
isHovered: boolean;
|
|
633
|
+
/** Whether the remove button is focused. */
|
|
634
|
+
isFocused: boolean;
|
|
635
|
+
/** Whether the remove button has focus visible. */
|
|
636
|
+
isFocusVisible: boolean;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
export interface TagRemoveButtonProps
|
|
640
|
+
extends
|
|
641
|
+
SlotProps,
|
|
642
|
+
Omit<
|
|
643
|
+
JSX.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
644
|
+
"children" | "class" | "style" | "disabled" | "ref"
|
|
645
|
+
> {
|
|
646
|
+
/** The children of the button (usually an X icon) or a render function. */
|
|
647
|
+
children?: RenderChildren<TagRemoveButtonRenderProps>;
|
|
648
|
+
/** The CSS className for the element or a function. */
|
|
649
|
+
class?: ClassNameOrFunction<TagRemoveButtonRenderProps>;
|
|
650
|
+
/** The inline style for the element or a function. */
|
|
651
|
+
style?: StyleOrFunction<TagRemoveButtonRenderProps>;
|
|
493
652
|
/** Explicit button props from Tag render props. */
|
|
494
653
|
buttonProps?: Record<string, unknown>;
|
|
654
|
+
/** Ref to the button element. */
|
|
655
|
+
ref?: RefLike<HTMLButtonElement>;
|
|
495
656
|
}
|
|
496
657
|
|
|
497
658
|
/**
|
|
@@ -499,42 +660,168 @@ export interface TagRemoveButtonProps {
|
|
|
499
660
|
* It should be placed inside a Tag component.
|
|
500
661
|
*/
|
|
501
662
|
export function TagRemoveButton(props: TagRemoveButtonProps): JSX.Element {
|
|
663
|
+
const [local, domProps] = splitProps(props, ["children", "class", "style", "buttonProps", "ref"]);
|
|
664
|
+
|
|
502
665
|
const tagContext = useContext(TagContext);
|
|
503
|
-
const getRemoveButtonProps = () =>
|
|
504
|
-
|
|
505
|
-
const
|
|
506
|
-
const
|
|
507
|
-
const
|
|
508
|
-
const
|
|
509
|
-
const
|
|
510
|
-
|
|
511
|
-
|
|
666
|
+
const getRemoveButtonProps = () =>
|
|
667
|
+
(local.buttonProps ?? tagContext?.removeButtonProps ?? {}) as Record<string, unknown>;
|
|
668
|
+
const isDisabled = () => Boolean(getRemoveButtonProps().isDisabled);
|
|
669
|
+
const rawId = () => getRemoveButtonProps().id;
|
|
670
|
+
const rawAriaLabel = () => getRemoveButtonProps()["aria-label"];
|
|
671
|
+
const rawAriaLabelledBy = () => getRemoveButtonProps()["aria-labelledby"];
|
|
672
|
+
const rawTabIndex = () => getRemoveButtonProps().tabIndex;
|
|
673
|
+
|
|
674
|
+
const buttonId = () => (typeof rawId() === "string" ? (rawId() as string) : undefined);
|
|
675
|
+
const ariaLabel = () =>
|
|
676
|
+
typeof rawAriaLabel() === "string" ? (rawAriaLabel() as string) : "Remove";
|
|
677
|
+
const ariaLabelledBy = () =>
|
|
678
|
+
typeof rawAriaLabelledBy() === "string" ? (rawAriaLabelledBy() as string) : undefined;
|
|
679
|
+
const tabIndex = () =>
|
|
680
|
+
typeof rawTabIndex() === "number" ? (rawTabIndex() as number) : undefined;
|
|
681
|
+
|
|
682
|
+
const { buttonProps, isPressed } = createButton({
|
|
683
|
+
get id() {
|
|
684
|
+
return buttonId();
|
|
685
|
+
},
|
|
686
|
+
get "aria-label"() {
|
|
687
|
+
return ariaLabel();
|
|
688
|
+
},
|
|
689
|
+
get "aria-labelledby"() {
|
|
690
|
+
return ariaLabelledBy();
|
|
691
|
+
},
|
|
692
|
+
get isDisabled() {
|
|
693
|
+
return isDisabled();
|
|
694
|
+
},
|
|
695
|
+
get excludeFromTabOrder() {
|
|
696
|
+
return tabIndex() === -1;
|
|
697
|
+
},
|
|
698
|
+
onPress: (e) => {
|
|
699
|
+
const handler = getRemoveButtonProps().onPress;
|
|
700
|
+
if (typeof handler === "function" && !isDisabled()) {
|
|
701
|
+
(handler as (e: unknown) => void)(e);
|
|
702
|
+
}
|
|
703
|
+
},
|
|
704
|
+
});
|
|
512
705
|
|
|
513
|
-
const
|
|
706
|
+
const { isHovered, hoverProps } = createHover({
|
|
707
|
+
get isDisabled() {
|
|
708
|
+
return isDisabled();
|
|
709
|
+
},
|
|
710
|
+
});
|
|
711
|
+
|
|
712
|
+
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
713
|
+
|
|
714
|
+
const renderValues = createMemo<TagRemoveButtonRenderProps>(() => ({
|
|
715
|
+
isPressed: isPressed(),
|
|
716
|
+
isDisabled: isDisabled(),
|
|
717
|
+
isHovered: isHovered(),
|
|
718
|
+
isFocused: isFocused(),
|
|
719
|
+
isFocusVisible: isFocusVisible(),
|
|
720
|
+
}));
|
|
721
|
+
|
|
722
|
+
const renderProps = useRenderProps(
|
|
723
|
+
{
|
|
724
|
+
get children() {
|
|
725
|
+
return local.children ?? "×";
|
|
726
|
+
},
|
|
727
|
+
get class() {
|
|
728
|
+
return local.class;
|
|
729
|
+
},
|
|
730
|
+
get style() {
|
|
731
|
+
return local.style;
|
|
732
|
+
},
|
|
733
|
+
defaultClassName: "solidaria-TagRemoveButton",
|
|
734
|
+
},
|
|
735
|
+
renderValues,
|
|
736
|
+
);
|
|
737
|
+
|
|
738
|
+
const cleanButtonProps = () => {
|
|
739
|
+
const { ref: _ref, ...rest } = buttonProps as Record<string, unknown>;
|
|
740
|
+
return rest;
|
|
741
|
+
};
|
|
742
|
+
const cleanHoverProps = () => {
|
|
743
|
+
const { ref: _ref, ...rest } = hoverProps as Record<string, unknown>;
|
|
744
|
+
return rest;
|
|
745
|
+
};
|
|
746
|
+
const cleanFocusProps = () => {
|
|
747
|
+
const { ref: _ref, ...rest } = focusProps as Record<string, unknown>;
|
|
748
|
+
return rest;
|
|
749
|
+
};
|
|
750
|
+
|
|
751
|
+
const handlePointerDown: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {
|
|
752
|
+
event.stopPropagation();
|
|
753
|
+
const handler = cleanButtonProps().onPointerDown;
|
|
754
|
+
if (typeof handler === "function") {
|
|
755
|
+
(handler as JSX.EventHandler<HTMLButtonElement, PointerEvent>)(event);
|
|
756
|
+
}
|
|
757
|
+
};
|
|
758
|
+
|
|
759
|
+
const handleMouseDown: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {
|
|
514
760
|
event.stopPropagation();
|
|
515
|
-
const handler =
|
|
516
|
-
if (typeof handler === "function"
|
|
517
|
-
(handler as
|
|
761
|
+
const handler = cleanButtonProps().onMouseDown;
|
|
762
|
+
if (typeof handler === "function") {
|
|
763
|
+
(handler as JSX.EventHandler<HTMLButtonElement, MouseEvent>)(event);
|
|
518
764
|
}
|
|
519
765
|
};
|
|
520
|
-
|
|
766
|
+
|
|
767
|
+
const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {
|
|
521
768
|
event.stopPropagation();
|
|
769
|
+
const handler = cleanButtonProps().onClick;
|
|
770
|
+
if (typeof handler === "function") {
|
|
771
|
+
(handler as JSX.EventHandler<HTMLButtonElement, MouseEvent>)(event);
|
|
772
|
+
}
|
|
773
|
+
};
|
|
774
|
+
|
|
775
|
+
const handleKeyDown: JSX.EventHandler<HTMLButtonElement, KeyboardEvent> = (event) => {
|
|
776
|
+
const handler = cleanButtonProps().onKeyDown;
|
|
777
|
+
if (typeof handler === "function") {
|
|
778
|
+
(handler as JSX.EventHandler<HTMLButtonElement, KeyboardEvent>)(event);
|
|
779
|
+
}
|
|
780
|
+
if (event.key === "Enter" || event.key === " " || event.key === "Spacebar") {
|
|
781
|
+
event.stopPropagation();
|
|
782
|
+
}
|
|
783
|
+
};
|
|
784
|
+
|
|
785
|
+
const handleKeyUp: JSX.EventHandler<HTMLButtonElement, KeyboardEvent> = (event) => {
|
|
786
|
+
const handler = cleanButtonProps().onKeyUp;
|
|
787
|
+
if (typeof handler === "function") {
|
|
788
|
+
(handler as JSX.EventHandler<HTMLButtonElement, KeyboardEvent>)(event);
|
|
789
|
+
}
|
|
790
|
+
if (event.key === "Enter" || event.key === " " || event.key === "Spacebar") {
|
|
791
|
+
event.stopPropagation();
|
|
792
|
+
}
|
|
522
793
|
};
|
|
523
794
|
|
|
524
795
|
return (
|
|
525
796
|
<button
|
|
797
|
+
{...domProps}
|
|
798
|
+
{...cleanButtonProps()}
|
|
799
|
+
{...cleanFocusProps()}
|
|
800
|
+
{...cleanHoverProps()}
|
|
801
|
+
ref={(el) => {
|
|
802
|
+
assignRef(local.ref, el);
|
|
803
|
+
}}
|
|
526
804
|
type="button"
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
805
|
+
id={buttonId()}
|
|
806
|
+
aria-label={ariaLabel()}
|
|
807
|
+
aria-labelledby={ariaLabelledBy()}
|
|
808
|
+
tabindex={tabIndex()}
|
|
809
|
+
disabled={isDisabled()}
|
|
810
|
+
class={renderProps.class()}
|
|
811
|
+
style={renderProps.style()}
|
|
533
812
|
data-allows-removing={dataAttr(tagContext?.allowsRemoving ?? false)}
|
|
534
|
-
|
|
813
|
+
data-pressed={dataAttr(isPressed())}
|
|
814
|
+
data-disabled={dataAttr(isDisabled())}
|
|
815
|
+
data-hovered={dataAttr(isHovered())}
|
|
816
|
+
data-focused={dataAttr(isFocused())}
|
|
817
|
+
data-focus-visible={dataAttr(isFocusVisible())}
|
|
818
|
+
onPointerDown={handlePointerDown}
|
|
819
|
+
onMouseDown={handleMouseDown}
|
|
535
820
|
onClick={handleClick}
|
|
821
|
+
onKeyDown={handleKeyDown}
|
|
822
|
+
onKeyUp={handleKeyUp}
|
|
536
823
|
>
|
|
537
|
-
{
|
|
824
|
+
{renderProps.renderChildrenStable()}
|
|
538
825
|
</button>
|
|
539
826
|
);
|
|
540
827
|
}
|