@proyecto-viviana/solidaria-components 0.5.0 → 0.7.0-rc.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-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/README.md +4 -7
- 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 +25 -17
- package/dist/Alert.js.map +1 -1
- package/dist/Alert.jsx +9 -5
- 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 +18 -5
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Autocomplete.jsx +20 -7
- package/dist/Autocomplete.jsx.map +1 -1
- package/dist/Breadcrumbs.d.ts +2 -7
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +71 -51
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Breadcrumbs.jsx +25 -12
- 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 +125 -72
- package/dist/Button.js.map +1 -1
- package/dist/Button.jsx +105 -43
- package/dist/Button.jsx.map +1 -1
- package/dist/Calendar.d.ts +1 -7
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +297 -221
- package/dist/Calendar.js.map +1 -1
- package/dist/Calendar.jsx +52 -32
- 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 +2 -7
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +332 -270
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.jsx +70 -77
- package/dist/Checkbox.jsx.map +1 -1
- package/dist/Collection.d.ts +33 -7
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +128 -74
- package/dist/Collection.js.map +1 -1
- package/dist/Collection.jsx +46 -7
- package/dist/Collection.jsx.map +1 -1
- package/dist/Color.d.ts +15 -20
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +572 -334
- package/dist/Color.js.map +1 -1
- package/dist/Color.jsx +205 -85
- package/dist/Color.jsx.map +1 -1
- package/dist/ColorEditor.d.ts +3 -1
- package/dist/ColorEditor.d.ts.map +1 -1
- package/dist/ColorEditor.js +147 -124
- package/dist/ColorEditor.js.map +1 -1
- package/dist/ColorEditor.jsx +4 -1
- package/dist/ColorEditor.jsx.map +1 -1
- package/dist/ComboBox.d.ts +31 -10
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +539 -274
- package/dist/ComboBox.js.map +1 -1
- package/dist/ComboBox.jsx +213 -70
- 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 +102 -72
- package/dist/ContextualHelpTrigger.js.map +1 -1
- package/dist/ContextualHelpTrigger.jsx +36 -16
- package/dist/ContextualHelpTrigger.jsx.map +1 -1
- package/dist/DateField.d.ts +2 -7
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +0 -2
- package/dist/DateField.jsx +0 -2
- package/dist/DateField2.js +194 -179
- package/dist/DateField2.js.map +1 -1
- package/dist/DateField2.jsx +58 -55
- package/dist/DateField2.jsx.map +1 -1
- package/dist/DatePicker.d.ts +7 -7
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +2 -2
- package/dist/DatePicker.jsx +2 -2
- package/dist/DatePicker2.js +357 -435
- package/dist/DatePicker2.js.map +1 -1
- package/dist/DatePicker2.jsx +109 -178
- 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 +4 -9
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +168 -101
- package/dist/Dialog.js.map +1 -1
- package/dist/Dialog.jsx +75 -27
- 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 +121 -79
- package/dist/Disclosure.js.map +1 -1
- package/dist/Disclosure.jsx +32 -19
- 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 +37 -22
- package/dist/DragAndDrop.js.map +1 -1
- package/dist/DragAndDrop.jsx +20 -4
- 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 +1 -7
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +74 -40
- package/dist/DropZone.js.map +1 -1
- package/dist/DropZone.jsx +24 -8
- 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 +30 -12
- package/dist/FileTrigger.js.map +1 -1
- package/dist/FileTrigger.jsx +15 -2
- 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 +66 -43
- package/dist/Form.js.map +1 -1
- package/dist/Form.jsx +36 -16
- package/dist/Form.jsx.map +1 -1
- package/dist/GridList.d.ts +5 -10
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +372 -243
- package/dist/GridList.js.map +1 -1
- package/dist/GridList.jsx +177 -99
- package/dist/GridList.jsx.map +1 -1
- 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 +41 -37
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.jsx +7 -3
- 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 +2 -7
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +56 -36
- package/dist/Link.js.map +1 -1
- package/dist/Link.jsx +52 -10
- package/dist/Link.jsx.map +1 -1
- package/dist/ListBox.d.ts +17 -13
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +647 -348
- package/dist/ListBox.js.map +1 -1
- package/dist/ListBox.jsx +339 -236
- 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 +39 -30
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +547 -368
- package/dist/Menu.js.map +1 -1
- package/dist/Menu.jsx +328 -230
- 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 +104 -56
- package/dist/Modal.js.map +1 -1
- package/dist/Modal.jsx +68 -38
- package/dist/Modal.jsx.map +1 -1
- package/dist/NumberField.d.ts +4 -7
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +243 -124
- package/dist/NumberField.js.map +1 -1
- package/dist/NumberField.jsx +115 -26
- package/dist/NumberField.jsx.map +1 -1
- package/dist/Popover.d.ts +15 -7
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +370 -181
- package/dist/Popover.js.map +1 -1
- package/dist/Popover.jsx +215 -82
- 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 +34 -14
- package/dist/ProgressBar.js.map +1 -1
- package/dist/ProgressBar.jsx +17 -3
- package/dist/ProgressBar.jsx.map +1 -1
- package/dist/RadioGroup.d.ts +2 -7
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +388 -269
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioGroup.jsx +110 -99
- package/dist/RadioGroup.jsx.map +1 -1
- package/dist/RangeCalendar.d.ts +3 -7
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +271 -202
- package/dist/RangeCalendar.js.map +1 -1
- package/dist/RangeCalendar.jsx +56 -37
- package/dist/RangeCalendar.jsx.map +1 -1
- package/dist/RouterProvider.d.ts +3 -9
- package/dist/RouterProvider.d.ts.map +1 -1
- package/dist/RouterProvider.js +15 -14
- package/dist/RouterProvider.js.map +1 -1
- package/dist/RouterProvider.jsx +14 -13
- package/dist/RouterProvider.jsx.map +1 -1
- package/dist/SearchField.d.ts +4 -7
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +191 -164
- package/dist/SearchField.js.map +1 -1
- package/dist/SearchField.jsx +69 -62
- package/dist/SearchField.jsx.map +1 -1
- package/dist/Select.d.ts +5 -10
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +565 -359
- package/dist/Select.js.map +1 -1
- package/dist/Select.jsx +281 -161
- 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 +1 -7
- package/dist/Separator.d.ts.map +1 -1
- package/dist/Separator.js +22 -6
- package/dist/Separator.js.map +1 -1
- package/dist/Separator.jsx +16 -3
- 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 +2 -8
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +155 -97
- package/dist/Slider.js.map +1 -1
- package/dist/Slider.jsx +25 -12
- package/dist/Slider.jsx.map +1 -1
- package/dist/StepList.d.ts +1 -7
- package/dist/StepList.d.ts.map +1 -1
- package/dist/StepList.js +112 -68
- package/dist/StepList.js.map +1 -1
- package/dist/StepList.jsx +58 -20
- package/dist/StepList.jsx.map +1 -1
- package/dist/Switch.d.ts +2 -9
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +164 -114
- package/dist/Switch.js.map +1 -1
- package/dist/Switch.jsx +26 -13
- package/dist/Switch.jsx.map +1 -1
- package/dist/Table.d.ts +2 -1
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +689 -592
- package/dist/Table.js.map +1 -1
- package/dist/Table.jsx +317 -237
- 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 +278 -293
- package/dist/Tabs.js.map +1 -1
- package/dist/Tabs.jsx +68 -66
- package/dist/Tabs.jsx.map +1 -1
- package/dist/TagGroup.d.ts +4 -11
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +153 -115
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagGroup.jsx +37 -24
- 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 +24 -7
- package/dist/Text.js.map +1 -1
- package/dist/Text.jsx +17 -5
- package/dist/Text.jsx.map +1 -1
- package/dist/TextField.d.ts +3 -16
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +104 -129
- package/dist/TextField.js.map +1 -1
- package/dist/TextField.jsx +76 -102
- package/dist/TextField.jsx.map +1 -1
- package/dist/TimeField.d.ts +2 -15
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +86 -102
- package/dist/TimeField.js.map +1 -1
- package/dist/TimeField.jsx +32 -49
- package/dist/TimeField.jsx.map +1 -1
- package/dist/Toast.d.ts +10 -13
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +209 -108
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.jsx +127 -22
- 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 +57 -35
- package/dist/ToggleButton.js.map +1 -1
- package/dist/ToggleButton.jsx +26 -12
- 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 +52 -0
- package/dist/TokenField.d.ts.map +1 -0
- package/dist/TokenField.js +301 -0
- package/dist/TokenField.js.map +1 -0
- package/dist/TokenField.jsx +197 -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 +35 -16
- package/dist/Toolbar.js.map +1 -1
- package/dist/Toolbar.jsx +15 -2
- 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 +105 -68
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.jsx +60 -36
- package/dist/Tooltip.jsx.map +1 -1
- package/dist/Tree.d.ts +8 -11
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +486 -339
- package/dist/Tree.js.map +1 -1
- package/dist/Tree.jsx +155 -107
- package/dist/Tree.jsx.map +1 -1
- package/dist/Virtualizer.d.ts +39 -9
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -2
- package/dist/Virtualizer.jsx +2 -2
- package/dist/Virtualizer2.js +491 -136
- package/dist/Virtualizer2.js.map +1 -1
- package/dist/Virtualizer2.jsx +455 -122
- 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/contexts.d.ts +25 -0
- package/dist/contexts.d.ts.map +1 -1
- package/dist/contexts.js +3 -0
- package/dist/contexts.js.map +1 -1
- package/dist/contexts.jsx +3 -0
- package/dist/contexts.jsx.map +1 -1
- package/dist/index.d.ts +11 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -11
- package/dist/index.jsx +14 -11
- 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/useDragAndDrop.d.ts +4 -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 +28 -9
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +96 -24
- package/dist/utils.js.map +1 -1
- package/dist/utils.jsx +81 -24
- package/dist/utils.jsx.map +1 -1
- package/dist/virtualizer/Layout.d.ts +9 -0
- 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 +29 -10
- package/src/ActionBar.tsx +50 -24
- package/src/ActionGroup.tsx +31 -19
- package/src/Alert.tsx +10 -4
- package/src/Autocomplete.tsx +24 -15
- package/src/Breadcrumbs.tsx +32 -16
- package/src/Button.tsx +182 -67
- package/src/Calendar.tsx +65 -47
- package/src/CalendarPicker.tsx +16 -1
- package/src/Checkbox.tsx +84 -116
- package/src/Collection.tsx +84 -3
- package/src/Color.tsx +282 -104
- package/src/ColorEditor.tsx +5 -1
- package/src/ComboBox.tsx +384 -109
- package/src/ContextualHelpTrigger.tsx +47 -41
- package/src/DateField.tsx +74 -106
- package/src/DatePicker.tsx +156 -352
- package/src/DateRangePickerContext.tsx +8 -0
- package/src/Dialog.tsx +105 -38
- package/src/Disclosure.tsx +29 -19
- package/src/DragAndDrop.tsx +43 -8
- package/src/DragPreview.tsx +20 -1
- package/src/DropZone.tsx +32 -18
- package/src/ElementTag.tsx +14 -104
- package/src/FieldError.tsx +39 -7
- package/src/FileTrigger.tsx +18 -3
- package/src/Focusable.tsx +27 -6
- package/src/Form.tsx +57 -11
- package/src/GridList.tsx +233 -141
- package/src/HiddenDateInput.tsx +19 -3
- package/src/Icon.tsx +8 -2
- package/src/Keyboard.tsx +18 -2
- package/src/Label.tsx +77 -0
- package/src/Landmark.tsx +6 -1
- package/src/Link.tsx +65 -19
- package/src/ListBox.tsx +645 -468
- package/src/ListDropTargetDelegate.ts +4 -0
- package/src/Menu.tsx +512 -349
- package/src/Meter.tsx +42 -8
- package/src/Modal.tsx +85 -42
- package/src/NumberField.tsx +161 -48
- package/src/Popover.tsx +424 -148
- package/src/Pressable.tsx +27 -6
- package/src/PreviewTrigger.tsx +171 -0
- package/src/ProgressBar.tsx +25 -3
- package/src/RadioGroup.tsx +230 -161
- package/src/RangeCalendar.tsx +75 -63
- package/src/RouterProvider.tsx +24 -14
- package/src/SearchField.tsx +118 -121
- package/src/Select.tsx +454 -274
- package/src/SelectionIndicator.tsx +21 -3
- package/src/Separator.tsx +17 -1
- package/src/SharedElementTransition.tsx +115 -97
- package/src/Slider.tsx +35 -17
- package/src/StepList.tsx +71 -32
- package/src/Switch.tsx +45 -29
- package/src/Table.tsx +446 -380
- package/src/Tabs.tsx +132 -155
- package/src/TagGroup.tsx +53 -40
- package/src/Text.tsx +23 -6
- package/src/TextField.tsx +118 -159
- package/src/TimeField.tsx +34 -95
- package/src/Toast.tsx +141 -67
- package/src/ToggleButton.tsx +33 -15
- package/src/ToggleButtonGroup.tsx +27 -9
- package/src/TokenField.tsx +379 -0
- package/src/Toolbar.tsx +19 -9
- package/src/Tooltip.tsx +126 -84
- package/src/Tree.tsx +233 -173
- package/src/Virtualizer.tsx +400 -138
- package/src/VirtualizerLayouts.ts +211 -26
- package/src/VisuallyHidden.tsx +22 -8
- package/src/contexts.ts +13 -0
- package/src/index.ts +32 -11
- 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/useDragAndDrop.ts +30 -32
- package/src/utils.tsx +124 -68
- package/src/virtualizer/Layout.ts +29 -0
package/dist/StepList.js
CHANGED
|
@@ -1,16 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 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
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepList.ts
|
|
13
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepListItem.ts
|
|
14
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/steplist/useStepListState.ts
|
|
15
|
+
import { attrTrue, dataAttr, filterDOMProps, useRenderProps } from "./utils.js";
|
|
16
|
+
import { createComponent, delegateEvents, effect, getNextElement, insert, runHydrationEvents, scope, setAttribute, spread, template } from "@solidjs/web";
|
|
17
|
+
import { For, createContext, createMemo, useContext } from "solid-js";
|
|
4
18
|
import { createStepList } from "@proyecto-viviana/solidaria";
|
|
19
|
+
import { splitProps } from "@proyecto-viviana/solidaria/utils";
|
|
5
20
|
import { createStepListState } from "@proyecto-viviana/solid-stately";
|
|
6
21
|
//#region src/StepList.tsx
|
|
7
22
|
/**
|
|
8
23
|
* StepList component for solidaria-components
|
|
9
24
|
*
|
|
10
25
|
* A pre-wired headless step list component that combines state + aria hooks.
|
|
11
|
-
* Renders an ordered list of steps with completion tracking.
|
|
26
|
+
* Renders an ordered list of steps with completion tracking. Based on:
|
|
27
|
+
* - packages/react-aria/src/steplist/useStepList.ts
|
|
28
|
+
* - packages/react-aria/src/steplist/useStepListItem.ts
|
|
29
|
+
* - packages/react-stately/src/steplist/useStepListState.ts
|
|
12
30
|
*/
|
|
13
|
-
var _tmpl$ =
|
|
31
|
+
var _tmpl$ = /* @__PURE__ */ template(`<ol>`);
|
|
32
|
+
var _tmpl$2 = /* @__PURE__ */ template(`<li><a role=link>`);
|
|
14
33
|
const StepListStateContext = createContext(null);
|
|
15
34
|
const StepListContext = createContext(null);
|
|
16
35
|
function useStepListState() {
|
|
@@ -37,18 +56,38 @@ function StepList(props) {
|
|
|
37
56
|
"class",
|
|
38
57
|
"style"
|
|
39
58
|
], ["aria-label", "aria-labelledby"]);
|
|
40
|
-
const state = createStepListState(
|
|
41
|
-
items
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
59
|
+
const state = createStepListState({
|
|
60
|
+
get items() {
|
|
61
|
+
return local.items;
|
|
62
|
+
},
|
|
63
|
+
get selectedKey() {
|
|
64
|
+
return local.selectedKey;
|
|
65
|
+
},
|
|
66
|
+
get defaultSelectedKey() {
|
|
67
|
+
return local.defaultSelectedKey;
|
|
68
|
+
},
|
|
69
|
+
get onSelectionChange() {
|
|
70
|
+
return local.onSelectionChange;
|
|
71
|
+
},
|
|
72
|
+
get lastCompletedStep() {
|
|
73
|
+
return local.lastCompletedStep;
|
|
74
|
+
},
|
|
75
|
+
get defaultLastCompletedStep() {
|
|
76
|
+
return local.defaultLastCompletedStep;
|
|
77
|
+
},
|
|
78
|
+
get onLastCompletedStepChange() {
|
|
79
|
+
return local.onLastCompletedStepChange;
|
|
80
|
+
},
|
|
81
|
+
get isDisabled() {
|
|
82
|
+
return local.isDisabled;
|
|
83
|
+
},
|
|
84
|
+
get isReadOnly() {
|
|
85
|
+
return local.isReadOnly;
|
|
86
|
+
},
|
|
87
|
+
get disabledKeys() {
|
|
88
|
+
return local.disabledKeys;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
52
91
|
const { stepListProps } = createStepList({
|
|
53
92
|
get "aria-label"() {
|
|
54
93
|
return ariaProps["aria-label"];
|
|
@@ -64,21 +103,25 @@ function StepList(props) {
|
|
|
64
103
|
defaultClassName: "solidaria-StepList"
|
|
65
104
|
}, renderValues);
|
|
66
105
|
const domProps = createMemo(() => filterDOMProps(domRest, { global: true }));
|
|
67
|
-
return createComponent(StepListStateContext
|
|
106
|
+
return createComponent(StepListStateContext, {
|
|
68
107
|
value: state,
|
|
69
108
|
get children() {
|
|
70
109
|
var _el$ = getNextElement(_tmpl$);
|
|
71
|
-
spread(_el$,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
110
|
+
spread(_el$, [
|
|
111
|
+
stepListProps,
|
|
112
|
+
domProps,
|
|
113
|
+
{
|
|
114
|
+
get "class"() {
|
|
115
|
+
return renderProps.class();
|
|
116
|
+
},
|
|
117
|
+
get style() {
|
|
118
|
+
return renderProps.style();
|
|
119
|
+
},
|
|
120
|
+
get "data-disabled"() {
|
|
121
|
+
return dataAttr(state.isDisabled());
|
|
122
|
+
}
|
|
80
123
|
}
|
|
81
|
-
|
|
124
|
+
], true);
|
|
82
125
|
insert(_el$, createComponent(For, {
|
|
83
126
|
get each() {
|
|
84
127
|
return local.items;
|
|
@@ -144,47 +187,48 @@ function Step(props) {
|
|
|
144
187
|
if (selectable()) state.setSelectedKey(local.item.key);
|
|
145
188
|
}
|
|
146
189
|
};
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
190
|
+
var _el$2 = getNextElement(_tmpl$2);
|
|
191
|
+
var _el$3 = _el$2.firstChild;
|
|
192
|
+
spread(_el$2, [domProps, {
|
|
193
|
+
get "class"() {
|
|
194
|
+
return local.class;
|
|
195
|
+
},
|
|
196
|
+
get style() {
|
|
197
|
+
return local.style;
|
|
198
|
+
},
|
|
199
|
+
get "data-selected"() {
|
|
200
|
+
return dataAttr(isSelected());
|
|
201
|
+
},
|
|
202
|
+
get "data-completed"() {
|
|
203
|
+
return dataAttr(isCompleted());
|
|
204
|
+
},
|
|
205
|
+
get "data-disabled"() {
|
|
206
|
+
return dataAttr(!selectable());
|
|
207
|
+
},
|
|
208
|
+
get "data-selectable"() {
|
|
209
|
+
return dataAttr(selectable());
|
|
210
|
+
}
|
|
211
|
+
}], true);
|
|
212
|
+
_el$3._$$keydown = handleKeyDown;
|
|
213
|
+
_el$3._$$click = handleClick;
|
|
214
|
+
insert(_el$3, scope(() => {
|
|
215
|
+
return local.children;
|
|
216
|
+
}));
|
|
217
|
+
effect(() => {
|
|
218
|
+
return {
|
|
219
|
+
e: isSelected() ? "step" : void 0,
|
|
220
|
+
t: attrTrue(!selectable()),
|
|
221
|
+
a: selectable() ? 0 : void 0
|
|
222
|
+
};
|
|
223
|
+
}, ({ e, t, a }, _p$) => {
|
|
224
|
+
e !== _p$?.e && setAttribute(_el$3, "aria-current", e);
|
|
225
|
+
t !== _p$?.t && setAttribute(_el$3, "aria-disabled", t);
|
|
226
|
+
a !== _p$?.a && setAttribute(_el$3, "tabindex", a);
|
|
227
|
+
});
|
|
228
|
+
runHydrationEvents();
|
|
229
|
+
return _el$2;
|
|
186
230
|
}
|
|
187
|
-
delegateEvents(["click"]);
|
|
231
|
+
delegateEvents(["click", "keydown"]);
|
|
188
232
|
//#endregion
|
|
189
233
|
export { Step, StepList, StepListContext, StepListStateContext, useStepListState };
|
|
190
234
|
|
package/dist/StepList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepList.js","names":["JSX","createContext","createMemo","splitProps","useContext","For","createStepListState","StepListState","StepListStateProps","Key","createStepList","AriaStepListProps","ClassNameOrFunction","StyleOrFunction","useRenderProps","filterDOMProps","StepListItemRenderProps","isSelected","isCompleted","isDisabled","isSelectable","stepNumber","stepStateText","StepListRenderProps","StepListProps","key","label","items","T","selectedKey","defaultSelectedKey","onSelectionChange","lastCompletedStep","defaultLastCompletedStep","onLastCompletedStepChange","isReadOnly","disabledKeys","Iterable","children","item","state","Element","class","style","StepProps","CSSProperties","StepListStateContext","StepListContext","useStepListState","ctx","Error","StepList","props","local","ariaProps","domRest","stateProps","stepListProps","aria-label","aria-labelledby","renderValues","renderProps","defaultClassName","domProps","Record","global","_$createComponent","Provider","value","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","data-disabled","undefined","_$insert","each","index","_$runHydrationEvents","Step","selectable","handleClick","e","MouseEvent","preventDefault","setSelectedKey","handleKeyDown","KeyboardEvent","_el$2","_tmpl$2","_el$3","firstChild","data-selected","data-completed","data-selectable","_$addEventListener","$$click","_$effect","_p$","_v$","_v$2","_v$3","_$setAttribute","t","a","_$delegateEvents"],"sources":["../src/StepList.tsx"],"sourcesContent":["/**\n * StepList component for solidaria-components\n *\n * A pre-wired headless step list component that combines state + aria hooks.\n * Renders an ordered list of steps with completion tracking.\n */\n\nimport { type JSX, createContext, createMemo, splitProps, useContext, For } from \"solid-js\";\nimport {\n createStepListState,\n type StepListState,\n type StepListStateProps,\n type Key,\n} from \"@proyecto-viviana/solid-stately\";\nimport { createStepList, type AriaStepListProps } from \"@proyecto-viviana/solidaria\";\nimport {\n type ClassNameOrFunction,\n type StyleOrFunction,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\nexport interface StepListItemRenderProps {\n /** Whether this step is currently selected. */\n isSelected: boolean;\n /** Whether this step is completed. */\n isCompleted: boolean;\n /** Whether this step is disabled. */\n isDisabled: boolean;\n /** Whether this step can be selected. */\n isSelectable: boolean;\n /** The 1-based step number. */\n stepNumber: number;\n /** Accessible text describing the step state. */\n stepStateText: string;\n}\n\nexport interface StepListRenderProps {\n /** Whether the step list is disabled. */\n isDisabled: boolean;\n}\n\nexport interface StepListProps<T extends { key: Key; label: string }> extends AriaStepListProps {\n /** The step items. */\n items: T[];\n /** The currently selected step key (controlled). */\n selectedKey?: Key;\n /** The default selected step key (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Called when the selected step changes. */\n onSelectionChange?: (key: Key) => void;\n /** The last completed step key (controlled). */\n lastCompletedStep?: Key;\n /** The default last completed step key (uncontrolled). */\n defaultLastCompletedStep?: Key;\n /** Called when last completed step changes. */\n onLastCompletedStepChange?: (key: Key | null) => void;\n /** Whether all steps are disabled. */\n isDisabled?: boolean;\n /** Whether all steps are read-only. */\n isReadOnly?: boolean;\n /** Keys of individually disabled steps. */\n disabledKeys?: Iterable<Key>;\n /** Render function for each step item. */\n children: (item: T, state: StepListItemRenderProps) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<StepListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<StepListRenderProps>;\n}\n\nexport interface StepProps {\n /** The step item. */\n item: { key: Key; label: string };\n /** The 1-based step number. */\n stepNumber: number;\n /** The children to render inside the step. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\nexport const StepListStateContext = createContext<StepListState | null>(null);\nexport const StepListContext = createContext<{} | null>(null);\n\nexport function useStepListState(): StepListState {\n const ctx = useContext(StepListStateContext);\n if (!ctx) throw new Error(\"useStepListState must be used within a StepList\");\n return ctx;\n}\n\n/**\n * StepList displays a sequence of steps with completion tracking and selection.\n */\nexport function StepList<T extends { key: Key; label: string }>(\n props: StepListProps<T>,\n): JSX.Element {\n const [local, ariaProps, domRest] = splitProps(\n props,\n [\n \"items\",\n \"selectedKey\",\n \"defaultSelectedKey\",\n \"onSelectionChange\",\n \"lastCompletedStep\",\n \"defaultLastCompletedStep\",\n \"onLastCompletedStepChange\",\n \"isDisabled\",\n \"isReadOnly\",\n \"disabledKeys\",\n \"children\",\n \"class\",\n \"style\",\n ],\n [\"aria-label\", \"aria-labelledby\"],\n );\n\n const stateProps = createMemo<StepListStateProps>(() => ({\n items: local.items,\n selectedKey: local.selectedKey,\n defaultSelectedKey: local.defaultSelectedKey,\n onSelectionChange: local.onSelectionChange,\n lastCompletedStep: local.lastCompletedStep,\n defaultLastCompletedStep: local.defaultLastCompletedStep,\n onLastCompletedStepChange: local.onLastCompletedStepChange,\n isDisabled: local.isDisabled,\n isReadOnly: local.isReadOnly,\n disabledKeys: local.disabledKeys,\n }));\n\n const state = createStepListState(stateProps());\n\n // Create ARIA props\n const { stepListProps } = createStepList(\n {\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n },\n state,\n );\n\n const renderValues = createMemo<StepListRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-StepList\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() =>\n filterDOMProps(domRest as Record<string, unknown>, { global: true }),\n );\n\n return (\n <StepListStateContext.Provider value={state}>\n <ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={state.isDisabled() || undefined}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>\n </StepListStateContext.Provider>\n );\n}\n\n/**\n * Step represents an individual step within a StepList.\n * Renders as an `<li>` wrapping an `<a>` with accessible step props.\n */\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"item\", \"stepNumber\", \"children\", \"class\", \"style\"]);\n\n const state = useStepListState();\n\n const isSelected = () => state.selectedKey() === local.item.key;\n const isCompleted = () => state.isCompleted(local.item.key);\n const selectable = () => state.isSelectable(local.item.key);\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n }\n };\n\n return (\n <li\n {...domProps}\n class={local.class}\n style={local.style}\n data-selected={isSelected() || undefined}\n data-completed={isCompleted() || undefined}\n data-disabled={!selectable() || undefined}\n data-selectable={selectable() || undefined}\n >\n <a\n role=\"link\"\n aria-current={isSelected() ? \"step\" : undefined}\n aria-disabled={!selectable() ? true : undefined}\n tabIndex={selectable() ? 0 : undefined}\n onClick={handleClick}\n on:keydown={handleKeyDown}\n >\n {local.children}\n </a>\n </li>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StepList.js","names":["<StepListStateContext value={state}>\n <ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state.isDisabled())}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>\n </StepListStateContext>","value={state}","<For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>","<ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state.isDisabled())}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>","{local.children}","aria-disabled={attrTrue(!selectable())}","tabindex={selectable() ? 0 : undefined}","<li\n {...domProps}\n class={local.class}\n style={local.style}\n data-selected={dataAttr(isSelected())}\n data-completed={dataAttr(isCompleted())}\n data-disabled={dataAttr(!selectable())}\n data-selectable={dataAttr(selectable())}\n >\n <a\n role=\"link\"\n aria-current={isSelected() ? \"step\" : undefined}\n aria-disabled={attrTrue(!selectable())}\n tabindex={selectable() ? 0 : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {local.children}\n </a>\n </li>"],"sources":["../src/StepList.tsx"],"sourcesContent":["/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepList.ts\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepListItem.ts\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/steplist/useStepListState.ts\n\n/**\n * StepList component for solidaria-components\n *\n * A pre-wired headless step list component that combines state + aria hooks.\n * Renders an ordered list of steps with completion tracking. Based on:\n * - packages/react-aria/src/steplist/useStepList.ts\n * - packages/react-aria/src/steplist/useStepListItem.ts\n * - packages/react-stately/src/steplist/useStepListState.ts\n */\n\nimport { createContext, createMemo, useContext, For } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createStepListState, type StepListState, type Key } from \"@proyecto-viviana/solid-stately\";\nimport { createStepList, type AriaStepListProps } from \"@proyecto-viviana/solidaria\";\nimport { splitProps } from \"@proyecto-viviana/solidaria/utils\";\nimport {\n type ClassNameOrFunction,\n type StyleOrFunction,\n useRenderProps,\n filterDOMProps,\n dataAttr,\n attrTrue,\n} from \"./utils\";\n\nexport interface StepListItemRenderProps {\n /** Whether this step is currently selected. */\n isSelected: boolean;\n /** Whether this step is completed. */\n isCompleted: boolean;\n /** Whether this step is disabled. */\n isDisabled: boolean;\n /** Whether this step can be selected. */\n isSelectable: boolean;\n /** The 1-based step number. */\n stepNumber: number;\n /** Accessible text describing the step state. */\n stepStateText: string;\n}\n\nexport interface StepListRenderProps {\n /** Whether the step list is disabled. */\n isDisabled: boolean;\n}\n\nexport interface StepListProps<T extends { key: Key; label: string }> extends AriaStepListProps {\n /** The step items. */\n items: T[];\n /** The currently selected step key (controlled). */\n selectedKey?: Key;\n /** The default selected step key (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Called when the selected step changes. */\n onSelectionChange?: (key: Key) => void;\n /** The last completed step key (controlled). */\n lastCompletedStep?: Key;\n /** The default last completed step key (uncontrolled). */\n defaultLastCompletedStep?: Key;\n /** Called when last completed step changes. */\n onLastCompletedStepChange?: (key: Key | null) => void;\n /** Whether all steps are disabled. */\n isDisabled?: boolean;\n /** Whether all steps are read-only. */\n isReadOnly?: boolean;\n /** Keys of individually disabled steps. */\n disabledKeys?: Iterable<Key>;\n /** Render function for each step item. */\n children: (item: T, state: StepListItemRenderProps) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<StepListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<StepListRenderProps>;\n}\n\nexport interface StepProps {\n /** The step item. */\n item: { key: Key; label: string };\n /** The 1-based step number. */\n stepNumber: number;\n /** The children to render inside the step. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\nexport const StepListStateContext = createContext<StepListState | null>(null);\nexport const StepListContext = createContext<{} | null>(null);\n\nexport function useStepListState(): StepListState {\n const ctx = useContext(StepListStateContext);\n if (!ctx) throw new Error(\"useStepListState must be used within a StepList\");\n return ctx;\n}\n\n/**\n * StepList displays a sequence of steps with completion tracking and selection.\n */\nexport function StepList<T extends { key: Key; label: string }>(\n props: StepListProps<T>,\n): JSX.Element {\n const [local, ariaProps, domRest] = splitProps(\n props,\n [\n \"items\",\n \"selectedKey\",\n \"defaultSelectedKey\",\n \"onSelectionChange\",\n \"lastCompletedStep\",\n \"defaultLastCompletedStep\",\n \"onLastCompletedStepChange\",\n \"isDisabled\",\n \"isReadOnly\",\n \"disabledKeys\",\n \"children\",\n \"class\",\n \"style\",\n ],\n [\"aria-label\", \"aria-labelledby\"],\n );\n\n // Staying-mounted getters. `createMemo(() => ({ isDisabled: local.isDisabled }))`\n // then `stateProps()` is a one-shot snapshot; createStepListState re-reads\n // props.isDisabled / isReadOnly / disabledKeys only if those names stay live.\n const state = createStepListState({\n get items() {\n return local.items;\n },\n get selectedKey() {\n return local.selectedKey;\n },\n get defaultSelectedKey() {\n return local.defaultSelectedKey;\n },\n get onSelectionChange() {\n return local.onSelectionChange;\n },\n get lastCompletedStep() {\n return local.lastCompletedStep;\n },\n get defaultLastCompletedStep() {\n return local.defaultLastCompletedStep;\n },\n get onLastCompletedStepChange() {\n return local.onLastCompletedStepChange;\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get isReadOnly() {\n return local.isReadOnly;\n },\n get disabledKeys() {\n return local.disabledKeys;\n },\n });\n\n // Create ARIA props\n const { stepListProps } = createStepList(\n {\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n },\n state,\n );\n\n const renderValues = createMemo<StepListRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-StepList\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() =>\n filterDOMProps(domRest as Record<string, unknown>, { global: true }),\n );\n\n return (\n <StepListStateContext value={state}>\n <ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state.isDisabled())}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>\n </StepListStateContext>\n );\n}\n\n/**\n * Step represents an individual step within a StepList.\n * Renders as an `<li>` wrapping an `<a>` with accessible step props.\n */\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"item\", \"stepNumber\", \"children\", \"class\", \"style\"]);\n\n const state = useStepListState();\n\n const isSelected = () => state.selectedKey() === local.item.key;\n const isCompleted = () => state.isCompleted(local.item.key);\n const selectable = () => state.isSelectable(local.item.key);\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n }\n };\n\n return (\n <li\n {...domProps}\n class={local.class}\n style={local.style}\n data-selected={dataAttr(isSelected())}\n data-completed={dataAttr(isCompleted())}\n data-disabled={dataAttr(!selectable())}\n data-selectable={dataAttr(selectable())}\n >\n <a\n role=\"link\"\n aria-current={isSelected() ? \"step\" : undefined}\n aria-disabled={attrTrue(!selectable())}\n tabindex={selectable() ? 0 : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {local.children}\n </a>\n </li>\n );\n}\n"],"mappings":"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"}
|
package/dist/StepList.jsx
CHANGED
|
@@ -1,13 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 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
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepList.ts
|
|
13
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepListItem.ts
|
|
14
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/steplist/useStepListState.ts
|
|
15
|
+
import { attrTrue, dataAttr, filterDOMProps, useRenderProps } from "./utils.jsx";
|
|
16
|
+
import { For, createContext, createMemo, useContext } from "solid-js";
|
|
3
17
|
import { createStepList } from "@proyecto-viviana/solidaria";
|
|
18
|
+
import { splitProps } from "@proyecto-viviana/solidaria/utils";
|
|
4
19
|
import { createStepListState } from "@proyecto-viviana/solid-stately";
|
|
5
20
|
//#region src/StepList.tsx
|
|
6
21
|
/**
|
|
7
22
|
* StepList component for solidaria-components
|
|
8
23
|
*
|
|
9
24
|
* A pre-wired headless step list component that combines state + aria hooks.
|
|
10
|
-
* Renders an ordered list of steps with completion tracking.
|
|
25
|
+
* Renders an ordered list of steps with completion tracking. Based on:
|
|
26
|
+
* - packages/react-aria/src/steplist/useStepList.ts
|
|
27
|
+
* - packages/react-aria/src/steplist/useStepListItem.ts
|
|
28
|
+
* - packages/react-stately/src/steplist/useStepListState.ts
|
|
11
29
|
*/
|
|
12
30
|
const StepListStateContext = createContext(null);
|
|
13
31
|
const StepListContext = createContext(null);
|
|
@@ -35,18 +53,38 @@ function StepList(props) {
|
|
|
35
53
|
"class",
|
|
36
54
|
"style"
|
|
37
55
|
], ["aria-label", "aria-labelledby"]);
|
|
38
|
-
const state = createStepListState(
|
|
39
|
-
items
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
const state = createStepListState({
|
|
57
|
+
get items() {
|
|
58
|
+
return local.items;
|
|
59
|
+
},
|
|
60
|
+
get selectedKey() {
|
|
61
|
+
return local.selectedKey;
|
|
62
|
+
},
|
|
63
|
+
get defaultSelectedKey() {
|
|
64
|
+
return local.defaultSelectedKey;
|
|
65
|
+
},
|
|
66
|
+
get onSelectionChange() {
|
|
67
|
+
return local.onSelectionChange;
|
|
68
|
+
},
|
|
69
|
+
get lastCompletedStep() {
|
|
70
|
+
return local.lastCompletedStep;
|
|
71
|
+
},
|
|
72
|
+
get defaultLastCompletedStep() {
|
|
73
|
+
return local.defaultLastCompletedStep;
|
|
74
|
+
},
|
|
75
|
+
get onLastCompletedStepChange() {
|
|
76
|
+
return local.onLastCompletedStepChange;
|
|
77
|
+
},
|
|
78
|
+
get isDisabled() {
|
|
79
|
+
return local.isDisabled;
|
|
80
|
+
},
|
|
81
|
+
get isReadOnly() {
|
|
82
|
+
return local.isReadOnly;
|
|
83
|
+
},
|
|
84
|
+
get disabledKeys() {
|
|
85
|
+
return local.disabledKeys;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
50
88
|
const { stepListProps } = createStepList({
|
|
51
89
|
get "aria-label"() {
|
|
52
90
|
return ariaProps["aria-label"];
|
|
@@ -62,8 +100,8 @@ function StepList(props) {
|
|
|
62
100
|
defaultClassName: "solidaria-StepList"
|
|
63
101
|
}, renderValues);
|
|
64
102
|
const domProps = createMemo(() => filterDOMProps(domRest, { global: true }));
|
|
65
|
-
return <StepListStateContext
|
|
66
|
-
<ol {...stepListProps} {...domProps()} class={renderProps.class()} style={renderProps.style()} data-disabled={state.isDisabled()
|
|
103
|
+
return <StepListStateContext value={state}>
|
|
104
|
+
<ol {...stepListProps} {...domProps()} class={renderProps.class()} style={renderProps.style()} data-disabled={dataAttr(state.isDisabled())}>
|
|
67
105
|
<For each={local.items}>
|
|
68
106
|
{(item, index) => {
|
|
69
107
|
const stepNumber = () => index() + 1;
|
|
@@ -92,7 +130,7 @@ function StepList(props) {
|
|
|
92
130
|
}}
|
|
93
131
|
</For>
|
|
94
132
|
</ol>
|
|
95
|
-
</StepListStateContext
|
|
133
|
+
</StepListStateContext>;
|
|
96
134
|
}
|
|
97
135
|
/**
|
|
98
136
|
* Step represents an individual step within a StepList.
|
|
@@ -124,8 +162,8 @@ function Step(props) {
|
|
|
124
162
|
if (selectable()) state.setSelectedKey(local.item.key);
|
|
125
163
|
}
|
|
126
164
|
};
|
|
127
|
-
return <li {...domProps} class={local.class} style={local.style} data-selected={isSelected()
|
|
128
|
-
<a role="link" aria-current={isSelected() ? "step" : void 0} aria-disabled={!selectable()
|
|
165
|
+
return <li {...domProps} class={local.class} style={local.style} data-selected={dataAttr(isSelected())} data-completed={dataAttr(isCompleted())} data-disabled={dataAttr(!selectable())} data-selectable={dataAttr(selectable())}>
|
|
166
|
+
<a role="link" aria-current={isSelected() ? "step" : void 0} aria-disabled={attrTrue(!selectable())} tabindex={selectable() ? 0 : void 0} onClick={handleClick} onKeyDown={handleKeyDown}>
|
|
129
167
|
{local.children}
|
|
130
168
|
</a>
|
|
131
169
|
</li>;
|
package/dist/StepList.jsx.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepList.jsx","names":[],"sources":["../src/StepList.tsx"],"sourcesContent":["/**\n * StepList component for solidaria-components\n *\n * A pre-wired headless step list component that combines state + aria hooks.\n * Renders an ordered list of steps with completion tracking.\n */\n\nimport { type JSX, createContext, createMemo, splitProps, useContext, For } from \"solid-js\";\nimport {\n createStepListState,\n type StepListState,\n type StepListStateProps,\n type Key,\n} from \"@proyecto-viviana/solid-stately\";\nimport { createStepList, type AriaStepListProps } from \"@proyecto-viviana/solidaria\";\nimport {\n type ClassNameOrFunction,\n type StyleOrFunction,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\nexport interface StepListItemRenderProps {\n /** Whether this step is currently selected. */\n isSelected: boolean;\n /** Whether this step is completed. */\n isCompleted: boolean;\n /** Whether this step is disabled. */\n isDisabled: boolean;\n /** Whether this step can be selected. */\n isSelectable: boolean;\n /** The 1-based step number. */\n stepNumber: number;\n /** Accessible text describing the step state. */\n stepStateText: string;\n}\n\nexport interface StepListRenderProps {\n /** Whether the step list is disabled. */\n isDisabled: boolean;\n}\n\nexport interface StepListProps<T extends { key: Key; label: string }> extends AriaStepListProps {\n /** The step items. */\n items: T[];\n /** The currently selected step key (controlled). */\n selectedKey?: Key;\n /** The default selected step key (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Called when the selected step changes. */\n onSelectionChange?: (key: Key) => void;\n /** The last completed step key (controlled). */\n lastCompletedStep?: Key;\n /** The default last completed step key (uncontrolled). */\n defaultLastCompletedStep?: Key;\n /** Called when last completed step changes. */\n onLastCompletedStepChange?: (key: Key | null) => void;\n /** Whether all steps are disabled. */\n isDisabled?: boolean;\n /** Whether all steps are read-only. */\n isReadOnly?: boolean;\n /** Keys of individually disabled steps. */\n disabledKeys?: Iterable<Key>;\n /** Render function for each step item. */\n children: (item: T, state: StepListItemRenderProps) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<StepListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<StepListRenderProps>;\n}\n\nexport interface StepProps {\n /** The step item. */\n item: { key: Key; label: string };\n /** The 1-based step number. */\n stepNumber: number;\n /** The children to render inside the step. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\nexport const StepListStateContext = createContext<StepListState | null>(null);\nexport const StepListContext = createContext<{} | null>(null);\n\nexport function useStepListState(): StepListState {\n const ctx = useContext(StepListStateContext);\n if (!ctx) throw new Error(\"useStepListState must be used within a StepList\");\n return ctx;\n}\n\n/**\n * StepList displays a sequence of steps with completion tracking and selection.\n */\nexport function StepList<T extends { key: Key; label: string }>(\n props: StepListProps<T>,\n): JSX.Element {\n const [local, ariaProps, domRest] = splitProps(\n props,\n [\n \"items\",\n \"selectedKey\",\n \"defaultSelectedKey\",\n \"onSelectionChange\",\n \"lastCompletedStep\",\n \"defaultLastCompletedStep\",\n \"onLastCompletedStepChange\",\n \"isDisabled\",\n \"isReadOnly\",\n \"disabledKeys\",\n \"children\",\n \"class\",\n \"style\",\n ],\n [\"aria-label\", \"aria-labelledby\"],\n );\n\n const stateProps = createMemo<StepListStateProps>(() => ({\n items: local.items,\n selectedKey: local.selectedKey,\n defaultSelectedKey: local.defaultSelectedKey,\n onSelectionChange: local.onSelectionChange,\n lastCompletedStep: local.lastCompletedStep,\n defaultLastCompletedStep: local.defaultLastCompletedStep,\n onLastCompletedStepChange: local.onLastCompletedStepChange,\n isDisabled: local.isDisabled,\n isReadOnly: local.isReadOnly,\n disabledKeys: local.disabledKeys,\n }));\n\n const state = createStepListState(stateProps());\n\n // Create ARIA props\n const { stepListProps } = createStepList(\n {\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n },\n state,\n );\n\n const renderValues = createMemo<StepListRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-StepList\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() =>\n filterDOMProps(domRest as Record<string, unknown>, { global: true }),\n );\n\n return (\n <StepListStateContext.Provider value={state}>\n <ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={state.isDisabled() || undefined}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>\n </StepListStateContext.Provider>\n );\n}\n\n/**\n * Step represents an individual step within a StepList.\n * Renders as an `<li>` wrapping an `<a>` with accessible step props.\n */\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"item\", \"stepNumber\", \"children\", \"class\", \"style\"]);\n\n const state = useStepListState();\n\n const isSelected = () => state.selectedKey() === local.item.key;\n const isCompleted = () => state.isCompleted(local.item.key);\n const selectable = () => state.isSelectable(local.item.key);\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n }\n };\n\n return (\n <li\n {...domProps}\n class={local.class}\n style={local.style}\n data-selected={isSelected() || undefined}\n data-completed={isCompleted() || undefined}\n data-disabled={!selectable() || undefined}\n data-selectable={selectable() || undefined}\n >\n <a\n role=\"link\"\n aria-current={isSelected() ? \"step\" : undefined}\n aria-disabled={!selectable() ? true : undefined}\n tabIndex={selectable() ? 0 : undefined}\n onClick={handleClick}\n on:keydown={handleKeyDown}\n >\n {local.children}\n </a>\n </li>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StepList.jsx","names":[],"sources":["../src/StepList.tsx"],"sourcesContent":["/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepList.ts\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/steplist/useStepListItem.ts\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/steplist/useStepListState.ts\n\n/**\n * StepList component for solidaria-components\n *\n * A pre-wired headless step list component that combines state + aria hooks.\n * Renders an ordered list of steps with completion tracking. Based on:\n * - packages/react-aria/src/steplist/useStepList.ts\n * - packages/react-aria/src/steplist/useStepListItem.ts\n * - packages/react-stately/src/steplist/useStepListState.ts\n */\n\nimport { createContext, createMemo, useContext, For } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createStepListState, type StepListState, type Key } from \"@proyecto-viviana/solid-stately\";\nimport { createStepList, type AriaStepListProps } from \"@proyecto-viviana/solidaria\";\nimport { splitProps } from \"@proyecto-viviana/solidaria/utils\";\nimport {\n type ClassNameOrFunction,\n type StyleOrFunction,\n useRenderProps,\n filterDOMProps,\n dataAttr,\n attrTrue,\n} from \"./utils\";\n\nexport interface StepListItemRenderProps {\n /** Whether this step is currently selected. */\n isSelected: boolean;\n /** Whether this step is completed. */\n isCompleted: boolean;\n /** Whether this step is disabled. */\n isDisabled: boolean;\n /** Whether this step can be selected. */\n isSelectable: boolean;\n /** The 1-based step number. */\n stepNumber: number;\n /** Accessible text describing the step state. */\n stepStateText: string;\n}\n\nexport interface StepListRenderProps {\n /** Whether the step list is disabled. */\n isDisabled: boolean;\n}\n\nexport interface StepListProps<T extends { key: Key; label: string }> extends AriaStepListProps {\n /** The step items. */\n items: T[];\n /** The currently selected step key (controlled). */\n selectedKey?: Key;\n /** The default selected step key (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Called when the selected step changes. */\n onSelectionChange?: (key: Key) => void;\n /** The last completed step key (controlled). */\n lastCompletedStep?: Key;\n /** The default last completed step key (uncontrolled). */\n defaultLastCompletedStep?: Key;\n /** Called when last completed step changes. */\n onLastCompletedStepChange?: (key: Key | null) => void;\n /** Whether all steps are disabled. */\n isDisabled?: boolean;\n /** Whether all steps are read-only. */\n isReadOnly?: boolean;\n /** Keys of individually disabled steps. */\n disabledKeys?: Iterable<Key>;\n /** Render function for each step item. */\n children: (item: T, state: StepListItemRenderProps) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<StepListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<StepListRenderProps>;\n}\n\nexport interface StepProps {\n /** The step item. */\n item: { key: Key; label: string };\n /** The 1-based step number. */\n stepNumber: number;\n /** The children to render inside the step. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\nexport const StepListStateContext = createContext<StepListState | null>(null);\nexport const StepListContext = createContext<{} | null>(null);\n\nexport function useStepListState(): StepListState {\n const ctx = useContext(StepListStateContext);\n if (!ctx) throw new Error(\"useStepListState must be used within a StepList\");\n return ctx;\n}\n\n/**\n * StepList displays a sequence of steps with completion tracking and selection.\n */\nexport function StepList<T extends { key: Key; label: string }>(\n props: StepListProps<T>,\n): JSX.Element {\n const [local, ariaProps, domRest] = splitProps(\n props,\n [\n \"items\",\n \"selectedKey\",\n \"defaultSelectedKey\",\n \"onSelectionChange\",\n \"lastCompletedStep\",\n \"defaultLastCompletedStep\",\n \"onLastCompletedStepChange\",\n \"isDisabled\",\n \"isReadOnly\",\n \"disabledKeys\",\n \"children\",\n \"class\",\n \"style\",\n ],\n [\"aria-label\", \"aria-labelledby\"],\n );\n\n // Staying-mounted getters. `createMemo(() => ({ isDisabled: local.isDisabled }))`\n // then `stateProps()` is a one-shot snapshot; createStepListState re-reads\n // props.isDisabled / isReadOnly / disabledKeys only if those names stay live.\n const state = createStepListState({\n get items() {\n return local.items;\n },\n get selectedKey() {\n return local.selectedKey;\n },\n get defaultSelectedKey() {\n return local.defaultSelectedKey;\n },\n get onSelectionChange() {\n return local.onSelectionChange;\n },\n get lastCompletedStep() {\n return local.lastCompletedStep;\n },\n get defaultLastCompletedStep() {\n return local.defaultLastCompletedStep;\n },\n get onLastCompletedStepChange() {\n return local.onLastCompletedStepChange;\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get isReadOnly() {\n return local.isReadOnly;\n },\n get disabledKeys() {\n return local.disabledKeys;\n },\n });\n\n // Create ARIA props\n const { stepListProps } = createStepList(\n {\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n },\n state,\n );\n\n const renderValues = createMemo<StepListRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-StepList\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() =>\n filterDOMProps(domRest as Record<string, unknown>, { global: true }),\n );\n\n return (\n <StepListStateContext value={state}>\n <ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state.isDisabled())}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>\n </StepListStateContext>\n );\n}\n\n/**\n * Step represents an individual step within a StepList.\n * Renders as an `<li>` wrapping an `<a>` with accessible step props.\n */\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"item\", \"stepNumber\", \"children\", \"class\", \"style\"]);\n\n const state = useStepListState();\n\n const isSelected = () => state.selectedKey() === local.item.key;\n const isCompleted = () => state.isCompleted(local.item.key);\n const selectable = () => state.isSelectable(local.item.key);\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n }\n };\n\n return (\n <li\n {...domProps}\n class={local.class}\n style={local.style}\n data-selected={dataAttr(isSelected())}\n data-completed={dataAttr(isCompleted())}\n data-disabled={dataAttr(!selectable())}\n data-selectable={dataAttr(selectable())}\n >\n <a\n role=\"link\"\n aria-current={isSelected() ? \"step\" : undefined}\n aria-disabled={attrTrue(!selectable())}\n tabindex={selectable() ? 0 : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {local.children}\n </a>\n </li>\n );\n}\n"],"mappings":"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"}
|
package/dist/Switch.d.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* A pre-wired headless switch that combines state + aria hooks.
|
|
5
|
-
* Port of react-aria-components/src/Switch.tsx
|
|
6
|
-
*
|
|
7
|
-
* Named "ToggleSwitch" to avoid conflict with SolidJS's built-in Switch component.
|
|
8
|
-
*/
|
|
9
|
-
import { type JSX, type Context } from "solid-js";
|
|
1
|
+
import type { Context } from "solid-js";
|
|
2
|
+
import type { JSX } from "@solidjs/web";
|
|
10
3
|
import { type AriaSwitchProps } from "@proyecto-viviana/solidaria";
|
|
11
4
|
import { type ToggleState } from "@proyecto-viviana/solid-stately";
|
|
12
5
|
import { type RenderChildren, type ClassNameOrFunction, type StyleOrFunction, type SlotProps } from "./utils";
|
package/dist/Switch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../src/Switch.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../src/Switch.tsx"],"names":[],"mappings":"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"}
|