@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/Button.js
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
|
|
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
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/Button.tsx
|
|
13
|
+
import { coerceDomBoolean, filterDOMProps, useRenderProps } from "./utils.js";
|
|
2
14
|
import { r as PopoverTriggerContext, t as DialogTriggerContext } from "./contexts.js";
|
|
3
15
|
import { ProgressBarContext } from "./ProgressBar.js";
|
|
4
|
-
import { createComponent,
|
|
5
|
-
import { createContext, createEffect, createMemo, createSignal,
|
|
6
|
-
import { announce, createButton, createFocusRing, createHover, createId, mergeProps as mergeProps$
|
|
16
|
+
import { createComponent, getNextElement, insert, memo, ref, runHydrationEvents, scope, spread, template } from "@solidjs/web";
|
|
17
|
+
import { createContext, createEffect, createMemo, createSignal, untrack, useContext } from "solid-js";
|
|
18
|
+
import { announce, createButton, createFocusRing, createHover, createId, mergeProps as mergeProps$1 } from "@proyecto-viviana/solidaria";
|
|
19
|
+
import { splitProps } from "@proyecto-viviana/solidaria/utils";
|
|
7
20
|
//#region src/Button.tsx
|
|
8
21
|
/**
|
|
9
22
|
* Button component for solidaria-components
|
|
@@ -11,9 +24,9 @@ import { announce, createButton, createFocusRing, createHover, createId, mergePr
|
|
|
11
24
|
* A pre-wired headless button that combines state + aria hooks.
|
|
12
25
|
* Port of react-aria-components/src/Button.tsx
|
|
13
26
|
*/
|
|
14
|
-
var _tmpl$ =
|
|
27
|
+
var _tmpl$ = /* @__PURE__ */ template(`<button>`);
|
|
15
28
|
const pendingPreservedEventPattern = /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;
|
|
16
|
-
function assignRef(ref, el) {
|
|
29
|
+
function assignRef$1(ref, el) {
|
|
17
30
|
if (!ref) return;
|
|
18
31
|
if (typeof ref === "function") ref(el);
|
|
19
32
|
else ref.current = el;
|
|
@@ -42,8 +55,8 @@ function createLiveButtonRenderProps(values) {
|
|
|
42
55
|
}
|
|
43
56
|
function createLiveCustomRootProps(getProps, getChildren, ref) {
|
|
44
57
|
const props = {};
|
|
45
|
-
const keys = new Set([
|
|
46
|
-
...Object.keys(getProps
|
|
58
|
+
const keys = /* @__PURE__ */ new Set([
|
|
59
|
+
...Object.keys(untrack(getProps)),
|
|
47
60
|
"children",
|
|
48
61
|
"ref"
|
|
49
62
|
]);
|
|
@@ -72,7 +85,8 @@ const buttonAriaOverrideProps = [
|
|
|
72
85
|
];
|
|
73
86
|
function createForwardedAriaButtonProps(source, overrides) {
|
|
74
87
|
const result = {};
|
|
75
|
-
|
|
88
|
+
const sourceKeys = untrack(() => Object.keys(source));
|
|
89
|
+
for (const key of sourceKeys) Object.defineProperty(result, key, {
|
|
76
90
|
enumerable: true,
|
|
77
91
|
configurable: true,
|
|
78
92
|
get() {
|
|
@@ -110,13 +124,14 @@ const ButtonContext = createContext(null);
|
|
|
110
124
|
*/
|
|
111
125
|
function Button(props) {
|
|
112
126
|
const contextProps = useContext(ButtonContext);
|
|
113
|
-
const contextSlotProps = contextProps?.slots?.[props.slot
|
|
127
|
+
const contextSlotProps = untrack(() => contextProps?.slots?.[typeof props.slot === "string" ? props.slot : "default"]);
|
|
114
128
|
const contextBaseProps = createMemo(() => {
|
|
115
129
|
if (!contextProps) return {};
|
|
116
130
|
const { slots: _slots, ...rest } = contextProps;
|
|
117
131
|
return rest;
|
|
118
132
|
});
|
|
119
|
-
const
|
|
133
|
+
const mergedProps = contextProps ? mergeProps$1(contextBaseProps(), contextSlotProps ?? {}, props) : props;
|
|
134
|
+
const [local, ariaProps] = splitProps(mergedProps, [
|
|
120
135
|
"children",
|
|
121
136
|
"class",
|
|
122
137
|
"style",
|
|
@@ -131,28 +146,39 @@ function Button(props) {
|
|
|
131
146
|
]);
|
|
132
147
|
const dialogTriggerContext = useContext(DialogTriggerContext);
|
|
133
148
|
const popoverTriggerContext = useContext(PopoverTriggerContext);
|
|
149
|
+
const menuTriggerProps = () => isPopoverTrigger() && popoverTriggerContext?.trigger === "MenuTrigger" ? popoverTriggerContext.triggerProps : void 0;
|
|
134
150
|
const resolveDisabled = () => {
|
|
135
151
|
const disabled = ariaProps.isDisabled;
|
|
136
|
-
if (typeof disabled === "function"
|
|
137
|
-
|
|
152
|
+
if (typeof disabled === "function" ? disabled() : !!disabled) return true;
|
|
153
|
+
const triggerProps = menuTriggerProps();
|
|
154
|
+
return Boolean(triggerProps?.["aria-disabled"] || triggerProps?.isDisabled);
|
|
138
155
|
};
|
|
139
|
-
const resolvePending = () => !!local.isPending;
|
|
156
|
+
const resolvePending = createMemo(() => !!local.isPending);
|
|
140
157
|
const isPendingFocusable = () => local.isPendingFocusable !== false;
|
|
141
|
-
const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null);
|
|
142
|
-
const buttonId = createId(ariaProps.id);
|
|
158
|
+
const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null, { ownedWrite: true });
|
|
159
|
+
const buttonId = createId(untrack(() => ariaProps.id));
|
|
143
160
|
const progressId = createId();
|
|
144
161
|
const isDialogTrigger = () => !!dialogTriggerContext && !!resolvedButtonEl() && dialogTriggerContext.triggerRef() === resolvedButtonEl();
|
|
145
162
|
const isPopoverTrigger = () => !!popoverTriggerContext && !!resolvedButtonEl() && popoverTriggerContext.triggerRef() === resolvedButtonEl();
|
|
146
163
|
const handlePress = (e) => {
|
|
147
164
|
if (resolvePending()) return;
|
|
148
165
|
if (typeof ariaProps.onPress === "function") ariaProps.onPress(e);
|
|
149
|
-
if (isDialogTrigger()) dialogTriggerContext.state.toggle();
|
|
150
|
-
if (isPopoverTrigger())
|
|
166
|
+
if (isDialogTrigger() && local.slot !== "close") dialogTriggerContext.state.toggle();
|
|
167
|
+
if (isPopoverTrigger()) {
|
|
168
|
+
const triggerOnPress = popoverTriggerContext.triggerProps?.onPress;
|
|
169
|
+
if (typeof triggerOnPress === "function") triggerOnPress(e);
|
|
170
|
+
else if (popoverTriggerContext.trigger !== "MenuTrigger") popoverTriggerContext.state.toggle();
|
|
171
|
+
}
|
|
151
172
|
};
|
|
152
173
|
const buttonAria = createButton(createForwardedAriaButtonProps(ariaProps, {
|
|
153
174
|
onPress: handlePress,
|
|
154
175
|
get onPressStart() {
|
|
155
|
-
|
|
176
|
+
if (resolvePending()) return void 0;
|
|
177
|
+
return (event) => {
|
|
178
|
+
const triggerStart = popoverTriggerContext?.triggerProps?.onPressStart;
|
|
179
|
+
triggerStart?.(event);
|
|
180
|
+
ariaProps.onPressStart?.(event);
|
|
181
|
+
};
|
|
156
182
|
},
|
|
157
183
|
get onPressEnd() {
|
|
158
184
|
return resolvePending() ? void 0 : ariaProps.onPressEnd;
|
|
@@ -166,6 +192,9 @@ function Button(props) {
|
|
|
166
192
|
get onClick() {
|
|
167
193
|
return resolvePending() ? void 0 : ariaProps.onClick;
|
|
168
194
|
},
|
|
195
|
+
get preventFocusOnPress() {
|
|
196
|
+
return menuTriggerProps()?.preventFocusOnPress ?? ariaProps.preventFocusOnPress;
|
|
197
|
+
},
|
|
169
198
|
get isDisabled() {
|
|
170
199
|
return resolveDisabled();
|
|
171
200
|
}
|
|
@@ -175,9 +204,15 @@ function Button(props) {
|
|
|
175
204
|
get isDisabled() {
|
|
176
205
|
return resolveDisabled() || resolvePending();
|
|
177
206
|
},
|
|
178
|
-
onHoverStart
|
|
179
|
-
|
|
180
|
-
|
|
207
|
+
get onHoverStart() {
|
|
208
|
+
return local.onHoverStart;
|
|
209
|
+
},
|
|
210
|
+
get onHoverEnd() {
|
|
211
|
+
return local.onHoverEnd;
|
|
212
|
+
},
|
|
213
|
+
get onHoverChange() {
|
|
214
|
+
return local.onHoverChange;
|
|
215
|
+
}
|
|
181
216
|
});
|
|
182
217
|
const renderValues = createMemo(() => ({
|
|
183
218
|
isHovered: isHovered(),
|
|
@@ -191,18 +226,23 @@ function Button(props) {
|
|
|
191
226
|
get children() {
|
|
192
227
|
return local.children;
|
|
193
228
|
},
|
|
194
|
-
class
|
|
195
|
-
|
|
229
|
+
get class() {
|
|
230
|
+
return local.class;
|
|
231
|
+
},
|
|
232
|
+
get style() {
|
|
233
|
+
return local.style;
|
|
234
|
+
},
|
|
196
235
|
defaultClassName: "solidaria-Button"
|
|
197
236
|
}, renderValues);
|
|
198
|
-
const domProps =
|
|
237
|
+
const domProps = () => {
|
|
199
238
|
const filtered = filterDOMProps(ariaProps, { global: true });
|
|
200
239
|
delete filtered.onClick;
|
|
240
|
+
for (const key in ariaProps) if (key.startsWith("data-")) filtered[key] = ariaProps[key];
|
|
201
241
|
return filtered;
|
|
202
|
-
}
|
|
203
|
-
const buttonPropsRef = buttonAria.buttonProps.ref;
|
|
204
|
-
const focusPropsRef = focusProps.ref;
|
|
205
|
-
const hoverPropsRef = hoverProps.ref;
|
|
242
|
+
};
|
|
243
|
+
const buttonPropsRef = untrack(() => buttonAria.buttonProps.ref);
|
|
244
|
+
const focusPropsRef = untrack(() => focusProps.ref);
|
|
245
|
+
const hoverPropsRef = untrack(() => hoverProps.ref);
|
|
206
246
|
const cleanButtonProps = () => {
|
|
207
247
|
const { ref: _ref1, ...rest } = buttonAria.buttonProps;
|
|
208
248
|
return rest;
|
|
@@ -224,11 +264,11 @@ function Button(props) {
|
|
|
224
264
|
});
|
|
225
265
|
const handleRef = (el) => {
|
|
226
266
|
setResolvedButtonEl(el);
|
|
227
|
-
assignRef(local.ref, el);
|
|
267
|
+
assignRef$1(local.ref, el);
|
|
228
268
|
buttonPropsRef?.(el);
|
|
229
269
|
focusPropsRef?.(el);
|
|
230
270
|
hoverPropsRef?.(el);
|
|
231
|
-
if (dialogTriggerContext?.setTriggerRef) {
|
|
271
|
+
if (dialogTriggerContext?.setTriggerRef && local.slot !== "close") {
|
|
232
272
|
if (!el.id) el.id = dialogTriggerContext.triggerId;
|
|
233
273
|
dialogTriggerContext.setTriggerRef(el);
|
|
234
274
|
}
|
|
@@ -256,9 +296,15 @@ function Button(props) {
|
|
|
256
296
|
]) if (triggerProps[name] != null) next[name] = triggerProps[name];
|
|
257
297
|
return next;
|
|
258
298
|
};
|
|
299
|
+
const triggerDomProps = () => {
|
|
300
|
+
const triggerProps = menuTriggerProps();
|
|
301
|
+
if (!triggerProps) return {};
|
|
302
|
+
const { onPress: _onPress, onPressStart: _onPressStart, preventFocusOnPress: _preventFocusOnPress, "aria-haspopup": _ariaHasPopup, "aria-expanded": _ariaExpanded, "aria-controls": _ariaControls, "aria-disabled": _ariaDisabled, id: _id, ref: _ref, onKeyDown: _onKeyDown, ...rest } = triggerProps;
|
|
303
|
+
return rest;
|
|
304
|
+
};
|
|
259
305
|
const directAriaProps = () => {
|
|
260
306
|
const next = {};
|
|
261
|
-
for (const name of buttonAriaOverrideProps) next[name] = ariaProps[name];
|
|
307
|
+
for (const name of buttonAriaOverrideProps) next[name] = coerceDomBoolean(name, ariaProps[name]);
|
|
262
308
|
return next;
|
|
263
309
|
};
|
|
264
310
|
const disablePendingInteractions = (props) => {
|
|
@@ -271,29 +317,45 @@ function Button(props) {
|
|
|
271
317
|
};
|
|
272
318
|
const dataState = (value) => value ? "true" : void 0;
|
|
273
319
|
const buttonChildren = () => renderProps.renderChildren();
|
|
274
|
-
const buttonContent = () => createComponent(ProgressBarContext
|
|
320
|
+
const buttonContent = () => createComponent(ProgressBarContext, {
|
|
275
321
|
value: { id: progressId },
|
|
276
322
|
get children() {
|
|
277
323
|
return buttonChildren();
|
|
278
324
|
}
|
|
279
325
|
});
|
|
280
|
-
let wasPending =
|
|
326
|
+
let wasPending = false;
|
|
327
|
+
let pendingAnnounceReady = false;
|
|
281
328
|
createEffect(() => {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
329
|
+
return {
|
|
330
|
+
pending: resolvePending(),
|
|
331
|
+
focused: isFocused(),
|
|
332
|
+
labelledBy: ariaLabelledBy() || buttonId
|
|
333
|
+
};
|
|
334
|
+
}, ({ pending, focused, labelledBy }) => {
|
|
335
|
+
if (!pendingAnnounceReady) {
|
|
336
|
+
wasPending = pending;
|
|
337
|
+
pendingAnnounceReady = true;
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
const message = { "aria-labelledby": labelledBy };
|
|
341
|
+
if (!wasPending && focused && pending) announce(message, "assertive");
|
|
342
|
+
else if (wasPending && focused && !pending) announce(message, "assertive");
|
|
286
343
|
wasPending = pending;
|
|
287
344
|
});
|
|
288
345
|
const rootProps = () => ({
|
|
289
346
|
...domProps(),
|
|
347
|
+
...triggerDomProps(),
|
|
290
348
|
...disablePendingInteractions(cleanButtonProps()),
|
|
291
349
|
...directAriaProps(),
|
|
292
350
|
...triggerAriaProps(),
|
|
293
351
|
...cleanFocusProps(),
|
|
294
352
|
...cleanHoverProps(),
|
|
353
|
+
onKeyDown: (event) => {
|
|
354
|
+
(menuTriggerProps()?.onKeyDown)?.(event);
|
|
355
|
+
if (!resolvePending()) cleanButtonProps().onKeyDown?.(event);
|
|
356
|
+
},
|
|
295
357
|
type: buttonType(),
|
|
296
|
-
id: buttonId,
|
|
358
|
+
id: ariaProps.id || menuTriggerProps()?.id || buttonId,
|
|
297
359
|
class: renderProps.class(),
|
|
298
360
|
style: renderProps.style(),
|
|
299
361
|
slot: local.slot,
|
|
@@ -307,40 +369,31 @@ function Button(props) {
|
|
|
307
369
|
"data-disabled": dataState(resolveDisabled()),
|
|
308
370
|
"data-pending": dataState(resolvePending())
|
|
309
371
|
});
|
|
310
|
-
const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);
|
|
311
372
|
const customRenderValues = createLiveButtonRenderProps(renderValues);
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
a: void 0,
|
|
337
|
-
o: void 0,
|
|
338
|
-
i: void 0,
|
|
339
|
-
n: void 0
|
|
340
|
-
});
|
|
341
|
-
runHydrationEvents();
|
|
342
|
-
return _el$;
|
|
343
|
-
})();
|
|
373
|
+
const customRender = createMemo(() => local.render);
|
|
374
|
+
return memo(() => {
|
|
375
|
+
return memo(() => {
|
|
376
|
+
return !!customRender();
|
|
377
|
+
})() ? customRender()(createLiveCustomRootProps(rootProps, buttonContent, handleRef), customRenderValues) : (() => {
|
|
378
|
+
var _el$ = getNextElement(_tmpl$);
|
|
379
|
+
ref(() => {
|
|
380
|
+
return handleRef;
|
|
381
|
+
}, _el$);
|
|
382
|
+
spread(_el$, [rootProps, {
|
|
383
|
+
get "class"() {
|
|
384
|
+
return renderProps.class();
|
|
385
|
+
},
|
|
386
|
+
get style() {
|
|
387
|
+
return renderProps.style();
|
|
388
|
+
}
|
|
389
|
+
}], true);
|
|
390
|
+
insert(_el$, scope(() => {
|
|
391
|
+
return buttonContent();
|
|
392
|
+
}));
|
|
393
|
+
runHydrationEvents();
|
|
394
|
+
return _el$;
|
|
395
|
+
})();
|
|
396
|
+
});
|
|
344
397
|
}
|
|
345
398
|
//#endregion
|
|
346
399
|
export { Button, ButtonContext };
|
package/dist/Button.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","names":["JSX","createContext","createEffect","createMemo","createSignal","splitProps","useContext","announce","createButton","createFocusRing","createHover","createId","mergeProps","AriaButtonProps","HoverEvent","PressEvent","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","filterDOMProps","DialogTriggerContext","PopoverTriggerContext","ProgressBarContext","pendingPreservedEventPattern","RefLike","el","T","current","assignRef","ref","createLiveButtonRenderProps","values","ButtonRenderProps","isHovered","isPressed","isFocused","isFocusVisible","isDisabled","isPending","createLiveCustomRootProps","getProps","ButtonHTMLAttributes","HTMLButtonElement","getChildren","Element","props","keys","Set","Object","key","defineProperty","enumerable","configurable","get","Record","buttonAriaOverrideProps","const","createForwardedAriaButtonProps","source","overrides","result","descriptor","getOwnPropertyDescriptor","ButtonProps","Omit","children","class","style","render","renderProps","isPendingFocusable","onHoverStart","e","onHoverEnd","onHoverChange","ButtonContextValue","slots","ButtonContext","Button","contextProps","contextSlotProps","slot","contextBaseProps","_slots","rest","mergedProps","local","ariaProps","dialogTriggerContext","popoverTriggerContext","resolveDisabled","disabled","resolvePending","resolvedButtonEl","setResolvedButtonEl","buttonId","id","progressId","isDialogTrigger","triggerRef","isPopoverTrigger","handlePress","onPress","state","toggle","buttonAria","onPressStart","undefined","onPressEnd","onPressUp","onPressChange","onClick","focusProps","hoverProps","renderValues","defaultClassName","domProps","filtered","global","buttonPropsRef","buttonProps","HTMLElement","focusPropsRef","hoverPropsRef","cleanButtonProps","_ref1","cleanFocusProps","_ref2","cleanHoverProps","_ref3","ariaLabelledBy","labelledBy","handleRef","setTriggerRef","triggerId","buttonType","type","triggerAriaProps","dialogTriggerProps","triggerProps","next","name","directAriaProps","disablePendingInteractions","startsWith","test","href","target","dataState","value","buttonChildren","renderChildren","buttonContent","_$createComponent","Provider","wasPending","pending","message","rootProps","customRootProps","customRenderValues","_el$","_$getNextElement","_tmpl$","_$use","_$spread","_$mergeProps","_$insert","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_$setAttribute","t","a","o","i","n","_$runHydrationEvents"],"sources":["../src/Button.tsx"],"sourcesContent":["/**\n * Button component for solidaria-components\n *\n * A pre-wired headless button that combines state + aria hooks.\n * Port of react-aria-components/src/Button.tsx\n */\n\nimport {\n type JSX,\n createContext,\n createEffect,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport {\n announce,\n createButton,\n createFocusRing,\n createHover,\n createId,\n mergeProps,\n type AriaButtonProps,\n type HoverEvent,\n type PressEvent,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\nimport { DialogTriggerContext, PopoverTriggerContext } from \"./contexts\";\nimport { ProgressBarContext } from \"./ProgressBar\";\n\n// Events preserved when `isPending` is true (for tooltips and other overlays),\n// mirroring RAC Button's `PRESERVED_EVENT_PATTERN`. Every other `on*` handler\n// is stripped so a pending-but-focusable button cannot be activated.\nconst pendingPreservedEventPattern =\n /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nfunction createLiveButtonRenderProps(values: () => ButtonRenderProps): ButtonRenderProps {\n return {\n get isHovered() {\n return values().isHovered;\n },\n get isPressed() {\n return values().isPressed;\n },\n get isFocused() {\n return values().isFocused;\n },\n get isFocusVisible() {\n return values().isFocusVisible;\n },\n get isDisabled() {\n return values().isDisabled;\n },\n get isPending() {\n return values().isPending;\n },\n };\n}\n\nfunction createLiveCustomRootProps(\n getProps: () => JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n getChildren: () => JSX.Element,\n ref: (el: HTMLButtonElement) => void,\n): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const props = {} as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const keys = new Set([...Object.keys(getProps()), \"children\", \"ref\"]);\n\n for (const key of keys) {\n Object.defineProperty(props, key, {\n enumerable: true,\n configurable: true,\n get() {\n if (key === \"children\") {\n return getChildren();\n }\n if (key === \"ref\") {\n return ref;\n }\n return (getProps() as Record<string, unknown>)[key];\n },\n });\n }\n\n return props;\n}\n\nconst buttonAriaOverrideProps = [\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-details\",\n \"aria-haspopup\",\n \"aria-expanded\",\n \"aria-controls\",\n \"aria-pressed\",\n \"aria-current\",\n \"aria-disabled\",\n] as const;\n\nfunction createForwardedAriaButtonProps(\n source: AriaButtonProps,\n overrides: AriaButtonProps,\n): AriaButtonProps {\n const result = {} as AriaButtonProps;\n\n for (const key in source) {\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get() {\n return (source as Record<string, unknown>)[key];\n },\n });\n }\n\n for (const key in overrides) {\n const descriptor = Object.getOwnPropertyDescriptor(overrides, key);\n if (!descriptor) continue;\n Object.defineProperty(result, key, { ...descriptor, enumerable: true, configurable: true });\n }\n\n return result;\n}\n\nexport interface ButtonRenderProps {\n /** Whether the button is currently hovered with a mouse. */\n isHovered: boolean;\n /** Whether the button is currently in a pressed state. */\n isPressed: boolean;\n /** Whether the button is focused, either via a mouse or keyboard. */\n isFocused: boolean;\n /** Whether the button is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the button is disabled. */\n isDisabled: boolean;\n /** Whether the button is currently in a pending state. */\n isPending: boolean;\n}\n\nexport interface ButtonProps extends Omit<AriaButtonProps, \"children\">, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<ButtonRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<ButtonRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<ButtonRenderProps>;\n /** Custom renderer for the outer button element. */\n render?: (\n props: JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n renderProps: ButtonRenderProps,\n ) => JSX.Element;\n /** Ref for the underlying button element. */\n ref?: RefLike<HTMLButtonElement>;\n /** Whether the button is in a pending state. */\n isPending?: boolean;\n /** Keeps pending buttons focusable by using aria-disabled without a native disabled attribute. */\n isPendingFocusable?: boolean;\n /** Handler called when hover starts. */\n onHoverStart?: (e: HoverEvent) => void;\n /** Handler called when hover ends. */\n onHoverEnd?: (e: HoverEvent) => void;\n /** Handler called when hover state changes. */\n onHoverChange?: (isHovered: boolean) => void;\n}\n\nexport interface ButtonContextValue extends ButtonProps {\n slots?: Record<string, ButtonProps>;\n}\n\nexport const ButtonContext = createContext<ButtonContextValue | null>(null);\n\n/**\n * A button allows a user to perform an action.\n *\n * This is a headless component that provides accessibility and state management.\n * Style it using the render props pattern or data attributes.\n *\n * @example\n * ```tsx\n * <Button onPress={() => alert('Pressed!')}>\n * {({ isPressed, isHovered }) => (\n * <span class={isPressed ? 'bg-blue-700' : isHovered ? 'bg-blue-600' : 'bg-blue-500'}>\n * Click me\n * </span>\n * )}\n * </Button>\n * ```\n */\nexport function Button(props: ButtonProps): JSX.Element {\n const contextProps = useContext(ButtonContext);\n const contextSlotProps = contextProps?.slots?.[props.slot ?? \"default\"];\n const contextBaseProps = createMemo<ButtonProps>(() => {\n if (!contextProps) return {};\n const { slots: _slots, ...rest } = contextProps;\n return rest;\n });\n const mergedProps = (\n contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props\n ) as ButtonProps;\n\n const [local, ariaProps] = splitProps(mergedProps, [\n \"children\",\n \"class\",\n \"style\",\n \"render\",\n \"ref\",\n \"slot\",\n \"isPending\",\n \"isPendingFocusable\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onHoverChange\",\n ]);\n\n // Check if inside a DialogTrigger or PopoverTrigger - if so, toggle on press\n // NOTE: Context is captured at component creation time. For Buttons inside a Modal,\n // the Modal provides OverlayTriggerStateContext, but due to SolidJS's eager JSX evaluation,\n // components inside Modal children are created before the Modal's Show renders.\n // So we can't reliably use context here to determine if we're inside a Modal.\n const dialogTriggerContext = useContext(DialogTriggerContext);\n const popoverTriggerContext = useContext(PopoverTriggerContext);\n\n // Helper to resolve isDisabled (handles both boolean and Accessor<boolean>)\n const resolveDisabled = (): boolean => {\n const disabled = ariaProps.isDisabled;\n if (typeof disabled === \"function\") {\n return disabled();\n }\n return !!disabled;\n };\n\n const resolvePending = (): boolean => !!local.isPending;\n const isPendingFocusable = () => local.isPendingFocusable !== false;\n\n const [resolvedButtonEl, setResolvedButtonEl] = createSignal<HTMLButtonElement | null>(null);\n const buttonId = createId((ariaProps as Record<string, unknown>).id as string | undefined);\n const progressId = createId();\n\n // Explicit trigger ownership: a button toggles overlays only when it is the\n // registered trigger element for the surrounding trigger context.\n const isDialogTrigger = () =>\n !!dialogTriggerContext &&\n !!resolvedButtonEl() &&\n dialogTriggerContext.triggerRef() === resolvedButtonEl();\n const isPopoverTrigger = () =>\n !!popoverTriggerContext &&\n !!resolvedButtonEl() &&\n popoverTriggerContext.triggerRef() === resolvedButtonEl();\n\n const handlePress = (e: PressEvent) => {\n if (resolvePending()) {\n return;\n }\n if (typeof ariaProps.onPress === \"function\") {\n ariaProps.onPress(e);\n }\n // Toggle only when this exact button is the registered trigger element.\n if (isDialogTrigger()) {\n dialogTriggerContext!.state.toggle();\n }\n if (isPopoverTrigger()) {\n popoverTriggerContext!.state.toggle();\n }\n };\n\n const buttonAria = createButton(\n createForwardedAriaButtonProps(ariaProps, {\n onPress: handlePress,\n get onPressStart() {\n return resolvePending() ? undefined : ariaProps.onPressStart;\n },\n get onPressEnd() {\n return resolvePending() ? undefined : ariaProps.onPressEnd;\n },\n get onPressUp() {\n return resolvePending() ? undefined : ariaProps.onPressUp;\n },\n get onPressChange() {\n return resolvePending() ? undefined : ariaProps.onPressChange;\n },\n get onClick() {\n return resolvePending() ? undefined : ariaProps.onClick;\n },\n // Mirror React Aria's RAC `Button`: `useButton` is called with the base\n // `isDisabled` WITHOUT `isPending`, so a pending-focusable button stays a\n // non-disabled native `<button>` — keeping `useFocusable`'s always-on\n // `tabIndex={0}` (the Safari focus workaround) and no native `disabled`\n // attribute. The pending \"disabled\" semantics are layered ON TOP:\n // `aria-disabled=\"true\"` below and `disablePendingInteractions` stripping\n // the press handlers post-hoc (RAC's `useDisableInteractions`). Folding\n // `isPending` in here instead would make the focusable hook drop\n // `tabIndex`, diverging from upstream's pending button (D4).\n get isDisabled() {\n return resolveDisabled();\n },\n }),\n );\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return resolveDisabled() || resolvePending();\n },\n onHoverStart: local.onHoverStart,\n onHoverEnd: local.onHoverEnd,\n onHoverChange: local.onHoverChange,\n });\n\n const renderValues = createMemo<ButtonRenderProps>(() => ({\n isHovered: isHovered(),\n isPressed: buttonAria.isPressed() && !resolvePending(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: resolveDisabled(),\n isPending: resolvePending(),\n }));\n\n const renderProps = useRenderProps(\n {\n // Use merged children so ButtonContext can supply slot/default content.\n get children() {\n return local.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Button\",\n },\n renderValues,\n );\n\n // Remove onClick from DOM props - it's already handled by createPress\n // This matches React Aria Components behavior (Button.tsx line 144: delete DOMProps.onClick)\n const domProps = createMemo(() => {\n const filtered = filterDOMProps(ariaProps, { global: true });\n // onClick is handled by createPress, not passed directly to DOM\n delete (filtered as Record<string, unknown>).onClick;\n return filtered;\n });\n\n const buttonPropsRef = (buttonAria.buttonProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n const focusPropsRef = (focusProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n const hoverPropsRef = (hoverProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n\n const cleanButtonProps = () => {\n const { ref: _ref1, ...rest } = buttonAria.buttonProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref2, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref3, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const ariaLabelledBy = createMemo(() => {\n const labelledBy = cleanButtonProps()[\"aria-labelledby\"] as string | undefined;\n if (!resolvePending()) {\n return labelledBy;\n }\n\n if (labelledBy) {\n return `${labelledBy} ${progressId}`;\n }\n\n if (cleanButtonProps()[\"aria-label\"]) {\n return `${buttonId} ${progressId}`;\n }\n\n return labelledBy;\n });\n\n const handleRef = (el: HTMLButtonElement) => {\n setResolvedButtonEl(el);\n assignRef(local.ref, el);\n\n buttonPropsRef?.(el);\n focusPropsRef?.(el);\n hoverPropsRef?.(el);\n\n // Register trigger ownership for surrounding trigger contexts.\n if (dialogTriggerContext?.setTriggerRef) {\n if (!el.id) {\n el.id = dialogTriggerContext.triggerId;\n }\n dialogTriggerContext.setTriggerRef(el);\n }\n if (popoverTriggerContext?.setTriggerRef) {\n popoverTriggerContext.setTriggerRef(el);\n }\n };\n const buttonType = () =>\n (buttonAria.buttonProps as Record<string, unknown>).type === \"submit\" && resolvePending()\n ? \"button\"\n : ((buttonAria.buttonProps as Record<string, unknown>).type as\n | \"button\"\n | \"submit\"\n | \"reset\"\n | undefined);\n const triggerAriaProps = () => {\n const dialogTriggerProps = dialogTriggerContext?.triggerProps;\n if (dialogTriggerProps && isDialogTrigger()) {\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (dialogTriggerProps[name] != null) {\n next[name] = dialogTriggerProps[name];\n }\n }\n return next;\n }\n\n const triggerProps = popoverTriggerContext?.triggerProps;\n if (!triggerProps || !isPopoverTrigger()) {\n return {};\n }\n\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (triggerProps[name] != null) {\n next[name] = triggerProps[name];\n }\n }\n return next;\n };\n const directAriaProps = () => {\n const next: Record<string, unknown> = {};\n for (const name of buttonAriaOverrideProps) {\n next[name] = (ariaProps as Record<string, unknown>)[name];\n }\n return next;\n };\n const disablePendingInteractions = (props: Record<string, unknown>) => {\n if (!resolvePending()) {\n return props;\n }\n\n const next = { ...props };\n for (const key of Object.keys(next)) {\n // Mirror RAC's `useDisableInteractions`: when pending, strip every event\n // handler except the ones overlays/tooltips still need — focus/blur,\n // hover, and pointer/mouse enter-leave-over-out. Press handlers\n // (click/pointerdown/keydown/…) are removed so the focusable button\n // cannot be activated while pending.\n if (key.startsWith(\"on\") && !pendingPreservedEventPattern.test(key)) {\n next[key] = undefined;\n }\n }\n next.href = undefined;\n next.target = undefined;\n return next;\n };\n const dataState = (value: boolean) => (value ? \"true\" : undefined);\n const buttonChildren = () => renderProps.renderChildren();\n const buttonContent = () => (\n <ProgressBarContext.Provider value={{ id: progressId }}>\n {buttonChildren()}\n </ProgressBarContext.Provider>\n );\n let wasPending = resolvePending();\n createEffect(() => {\n const pending = resolvePending();\n const message = { \"aria-labelledby\": ariaLabelledBy() || buttonId };\n\n if (!wasPending && isFocused() && pending) {\n announce(message, \"assertive\");\n } else if (wasPending && isFocused() && !pending) {\n announce(message, \"assertive\");\n }\n\n wasPending = pending;\n });\n const rootProps = () =>\n ({\n ...domProps(),\n ...disablePendingInteractions(cleanButtonProps()),\n ...directAriaProps(),\n ...triggerAriaProps(),\n ...cleanFocusProps(),\n ...cleanHoverProps(),\n type: buttonType(),\n id: buttonId,\n class: renderProps.class(),\n style: renderProps.style(),\n slot: local.slot,\n disabled: resolvePending() && isPendingFocusable() ? undefined : cleanButtonProps().disabled,\n \"aria-labelledby\": ariaLabelledBy(),\n \"aria-disabled\": resolvePending()\n ? \"true\"\n : (cleanButtonProps()[\"aria-disabled\"] ?? ariaProps[\"aria-disabled\"]),\n \"data-pressed\": dataState(buttonAria.isPressed() && !resolvePending()),\n \"data-hovered\": dataState(isHovered()),\n \"data-focused\": dataState(isFocused()),\n \"data-focus-visible\": dataState(isFocusVisible()),\n \"data-disabled\": dataState(resolveDisabled()),\n \"data-pending\": dataState(resolvePending()),\n }) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);\n const customRenderValues = createLiveButtonRenderProps(renderValues);\n\n return local.render ? (\n local.render(customRootProps, customRenderValues)\n ) : (\n <button\n ref={handleRef}\n {...rootProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n attr:data-pressed={(rootProps() as Record<string, unknown>)[\"data-pressed\"] as string}\n attr:data-hovered={(rootProps() as Record<string, unknown>)[\"data-hovered\"] as string}\n attr:data-focused={(rootProps() as Record<string, unknown>)[\"data-focused\"] as string}\n attr:data-focus-visible={\n (rootProps() as Record<string, unknown>)[\"data-focus-visible\"] as string\n }\n attr:data-disabled={(rootProps() as Record<string, unknown>)[\"data-disabled\"] as string}\n attr:data-pending={(rootProps() as Record<string, unknown>)[\"data-pending\"] as string}\n >\n {buttonContent()}\n </button>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Button.js","names":["<ProgressBarContext value={{ id: progressId }}>{buttonChildren()}</ProgressBarContext>","value={{ id: progressId }}","{customRender() ? (\n customRender()!(\n createLiveCustomRootProps(rootProps, buttonContent, handleRef),\n customRenderValues,\n )\n ) : (\n <button\n ref={handleRef}\n {...rootProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n >\n {buttonContent()}\n </button>\n )}","ref={handleRef}","{buttonContent()}"],"sources":["../src/Button.tsx"],"sourcesContent":["/*\n * Copyright 2022 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-components/src/Button.tsx\n\n/**\n * Button component for solidaria-components\n *\n * A pre-wired headless button that combines state + aria hooks.\n * Port of react-aria-components/src/Button.tsx\n */\n\nimport {\n createContext,\n createEffect,\n createMemo,\n createSignal,\n untrack,\n useContext,\n} from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n announce,\n createButton,\n createFocusRing,\n createHover,\n createId,\n mergeProps,\n type AriaButtonProps,\n type HoverEvent,\n type PressEvent,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n coerceDomBoolean,\n} from \"./utils\";\nimport { DialogTriggerContext, PopoverTriggerContext } from \"./contexts\";\nimport { ProgressBarContext } from \"./ProgressBar\";\nimport { splitProps } from \"@proyecto-viviana/solidaria/utils\";\n\n// Events preserved when `isPending` is true (for tooltips and other overlays),\n// mirroring RAC Button's `PRESERVED_EVENT_PATTERN`. Every other `on*` handler\n// is stripped so a pending-but-focusable button cannot be activated.\nconst pendingPreservedEventPattern =\n /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nfunction createLiveButtonRenderProps(values: () => ButtonRenderProps): ButtonRenderProps {\n return {\n get isHovered() {\n return values().isHovered;\n },\n get isPressed() {\n return values().isPressed;\n },\n get isFocused() {\n return values().isFocused;\n },\n get isFocusVisible() {\n return values().isFocusVisible;\n },\n get isDisabled() {\n return values().isDisabled;\n },\n get isPending() {\n return values().isPending;\n },\n };\n}\n\nfunction createLiveCustomRootProps(\n getProps: () => JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n getChildren: () => JSX.Element,\n ref: (el: HTMLButtonElement) => void,\n): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const props = {} as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n // Snapshot keys once. Reading getProps() in the component body is\n // STRICT_READ_UNTRACKED; getters re-read live values on later access.\n const keys = new Set([...Object.keys(untrack(getProps)), \"children\", \"ref\"]);\n\n for (const key of keys) {\n Object.defineProperty(props, key, {\n enumerable: true,\n configurable: true,\n get() {\n if (key === \"children\") {\n return getChildren();\n }\n if (key === \"ref\") {\n return ref;\n }\n return (getProps() as Record<string, unknown>)[key];\n },\n });\n }\n\n return props;\n}\n\nconst buttonAriaOverrideProps = [\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-details\",\n \"aria-haspopup\",\n \"aria-expanded\",\n \"aria-controls\",\n \"aria-pressed\",\n \"aria-current\",\n \"aria-disabled\",\n] as const;\n\nfunction createForwardedAriaButtonProps(\n source: AriaButtonProps,\n overrides: AriaButtonProps,\n): AriaButtonProps {\n const result = {} as AriaButtonProps;\n\n // Enumerating an omit/merge proxy can read reactive leaves (descriptor\n // value snapshots). Snapshot keys once, untracked; getters re-read live.\n const sourceKeys = untrack(() => Object.keys(source as Record<string, unknown>));\n for (const key of sourceKeys) {\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get() {\n return (source as Record<string, unknown>)[key];\n },\n });\n }\n\n for (const key in overrides) {\n const descriptor = Object.getOwnPropertyDescriptor(overrides, key);\n if (!descriptor) continue;\n Object.defineProperty(result, key, { ...descriptor, enumerable: true, configurable: true });\n }\n\n return result;\n}\n\nexport interface ButtonRenderProps {\n /** Whether the button is currently hovered with a mouse. */\n isHovered: boolean;\n /** Whether the button is currently in a pressed state. */\n isPressed: boolean;\n /** Whether the button is focused, either via a mouse or keyboard. */\n isFocused: boolean;\n /** Whether the button is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the button is disabled. */\n isDisabled: boolean;\n /** Whether the button is currently in a pending state. */\n isPending: boolean;\n}\n\nexport interface ButtonProps extends Omit<AriaButtonProps, \"children\">, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<ButtonRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<ButtonRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<ButtonRenderProps>;\n /** Custom renderer for the outer button element. */\n render?: (\n props: JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n renderProps: ButtonRenderProps,\n ) => JSX.Element;\n /** Ref for the underlying button element. */\n ref?: RefLike<HTMLButtonElement>;\n /** Whether the button is in a pending state. */\n isPending?: boolean;\n /** Keeps pending buttons focusable by using aria-disabled without a native disabled attribute. */\n isPendingFocusable?: boolean;\n /** Handler called when hover starts. */\n onHoverStart?: (e: HoverEvent) => void;\n /** Handler called when hover ends. */\n onHoverEnd?: (e: HoverEvent) => void;\n /** Handler called when hover state changes. */\n onHoverChange?: (isHovered: boolean) => void;\n}\n\nexport interface ButtonContextValue extends ButtonProps {\n slots?: Record<string, ButtonProps>;\n}\n\nexport const ButtonContext = createContext<ButtonContextValue | null>(null);\n\n/**\n * A button allows a user to perform an action.\n *\n * This is a headless component that provides accessibility and state management.\n * Style it using the render props pattern or data attributes.\n *\n * @example\n * ```tsx\n * <Button onPress={() => alert('Pressed!')}>\n * {({ isPressed, isHovered }) => (\n * <span class={isPressed ? 'bg-blue-700' : isHovered ? 'bg-blue-600' : 'bg-blue-500'}>\n * Click me\n * </span>\n * )}\n * </Button>\n * ```\n */\nexport function Button(props: ButtonProps): JSX.Element {\n const contextProps = useContext(ButtonContext);\n const contextSlotProps = untrack(\n () => contextProps?.slots?.[typeof props.slot === \"string\" ? props.slot : \"default\"],\n );\n const contextBaseProps = createMemo<ButtonProps>(() => {\n if (!contextProps) return {};\n const { slots: _slots, ...rest } = contextProps;\n return rest;\n });\n const mergedProps = (\n contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props\n ) as ButtonProps;\n\n const [local, ariaProps] = splitProps(mergedProps, [\n \"children\",\n \"class\",\n \"style\",\n \"render\",\n \"ref\",\n \"slot\",\n \"isPending\",\n \"isPendingFocusable\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onHoverChange\",\n ]);\n\n // Check if inside a DialogTrigger or PopoverTrigger - if so, toggle on press\n // NOTE: Context is captured at component creation time. For Buttons inside a Modal,\n // the Modal provides OverlayTriggerStateContext, but due to SolidJS's eager JSX evaluation,\n // components inside Modal children are created before the Modal's Show renders.\n // So we can't reliably use context here to determine if we're inside a Modal.\n const dialogTriggerContext = useContext(DialogTriggerContext);\n const popoverTriggerContext = useContext(PopoverTriggerContext);\n\n // Helper to resolve isDisabled (handles both boolean and Accessor<boolean>)\n const menuTriggerProps = () =>\n isPopoverTrigger() && popoverTriggerContext?.trigger === \"MenuTrigger\"\n ? popoverTriggerContext.triggerProps\n : undefined;\n\n const resolveDisabled = (): boolean => {\n const disabled = ariaProps.isDisabled;\n if (typeof disabled === \"function\" ? disabled() : !!disabled) {\n return true;\n }\n const triggerProps = menuTriggerProps();\n return Boolean(triggerProps?.[\"aria-disabled\"] || triggerProps?.isDisabled);\n };\n\n // Owned at setup. Solid compiles a compound `isPending={a() && b()}` prop into\n // a getter that calls `memo()` on every read, so reading it lazily from a native\n // press or hover handler creates that computation with no owner: it warns and is\n // never disposed. A memo pins the read to this component's owner.\n const resolvePending = createMemo((): boolean => !!local.isPending);\n const isPendingFocusable = () => local.isPendingFocusable !== false;\n\n const [resolvedButtonEl, setResolvedButtonEl] = createSignal<HTMLButtonElement | null>(null, {\n ownedWrite: true,\n });\n const buttonId = createId(\n untrack(() => (ariaProps as Record<string, unknown>).id as string | undefined),\n );\n const progressId = createId();\n\n // Explicit trigger ownership: a button toggles overlays only when it is the\n // registered trigger element for the surrounding trigger context.\n const isDialogTrigger = () =>\n !!dialogTriggerContext &&\n !!resolvedButtonEl() &&\n dialogTriggerContext.triggerRef() === resolvedButtonEl();\n const isPopoverTrigger = () =>\n !!popoverTriggerContext &&\n !!resolvedButtonEl() &&\n popoverTriggerContext.triggerRef() === resolvedButtonEl();\n\n const handlePress = (e: PressEvent) => {\n if (resolvePending()) {\n return;\n }\n if (typeof ariaProps.onPress === \"function\") {\n ariaProps.onPress(e);\n }\n // Toggle only when this exact button is the registered trigger element.\n if (isDialogTrigger() && local.slot !== \"close\") {\n dialogTriggerContext!.state.toggle();\n }\n if (isPopoverTrigger()) {\n const triggerOnPress = popoverTriggerContext!.triggerProps?.onPress as\n | ((event: PressEvent) => void)\n | undefined;\n if (typeof triggerOnPress === \"function\") {\n triggerOnPress(e);\n } else if (popoverTriggerContext!.trigger !== \"MenuTrigger\") {\n popoverTriggerContext!.state.toggle();\n }\n }\n };\n\n const buttonAria = createButton(\n createForwardedAriaButtonProps(ariaProps, {\n onPress: handlePress,\n get onPressStart() {\n if (resolvePending()) return undefined;\n return (event: PressEvent) => {\n const triggerStart = popoverTriggerContext?.triggerProps?.onPressStart as\n | ((event: PressEvent) => void)\n | undefined;\n triggerStart?.(event);\n ariaProps.onPressStart?.(event);\n };\n },\n get onPressEnd() {\n return resolvePending() ? undefined : ariaProps.onPressEnd;\n },\n get onPressUp() {\n return resolvePending() ? undefined : ariaProps.onPressUp;\n },\n get onPressChange() {\n return resolvePending() ? undefined : ariaProps.onPressChange;\n },\n get onClick() {\n return resolvePending() ? undefined : ariaProps.onClick;\n },\n get preventFocusOnPress() {\n return (menuTriggerProps()?.preventFocusOnPress ?? ariaProps.preventFocusOnPress) as\n | boolean\n | undefined;\n },\n // Mirror React Aria's RAC `Button`: `useButton` is called with the base\n // `isDisabled` WITHOUT `isPending`, so a pending-focusable button stays a\n // non-disabled native `<button>` — keeping `useFocusable`'s always-on\n // `tabindex={0}` (the Safari focus workaround) and no native `disabled`\n // attribute. The pending \"disabled\" semantics are layered ON TOP:\n // `aria-disabled=\"true\"` below and `disablePendingInteractions` stripping\n // the press handlers post-hoc (RAC's `useDisableInteractions`). Folding\n // `isPending` in here instead would make the focusable hook drop\n // `tabIndex`, diverging from upstream's pending button (D4).\n get isDisabled() {\n return resolveDisabled();\n },\n }),\n );\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return resolveDisabled() || resolvePending();\n },\n get onHoverStart() {\n return local.onHoverStart;\n },\n get onHoverEnd() {\n return local.onHoverEnd;\n },\n get onHoverChange() {\n return local.onHoverChange;\n },\n });\n\n const renderValues = createMemo<ButtonRenderProps>(() => ({\n isHovered: isHovered(),\n isPressed: buttonAria.isPressed() && !resolvePending(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: resolveDisabled(),\n isPending: resolvePending(),\n }));\n\n const renderProps = useRenderProps(\n {\n // Use merged children so ButtonContext can supply slot/default content.\n get children() {\n return local.children;\n },\n get class() {\n return local.class;\n },\n get style() {\n return local.style;\n },\n defaultClassName: \"solidaria-Button\",\n },\n renderValues,\n );\n\n // Remove onClick from DOM props - it's already handled by createPress\n // This matches React Aria Components behavior (Button.tsx line 144: delete DOMProps.onClick)\n const domProps = () => {\n const filtered = filterDOMProps(ariaProps, { global: true }) as Record<string, unknown>;\n // onClick is handled by createPress, not passed directly to DOM\n delete filtered.onClick;\n // Read data-* now so `{...rootProps()}` re-applies when a trigger attr changes.\n for (const key in ariaProps) {\n if (key.startsWith(\"data-\")) {\n filtered[key] = (ariaProps as Record<string, unknown>)[key];\n }\n }\n return filtered;\n };\n\n const buttonPropsRef = untrack(() => (buttonAria.buttonProps as Record<string, unknown>).ref) as\n | ((el: HTMLElement) => void)\n | undefined;\n const focusPropsRef = untrack(() => (focusProps as Record<string, unknown>).ref) as\n | ((el: HTMLElement) => void)\n | undefined;\n const hoverPropsRef = untrack(() => (hoverProps as Record<string, unknown>).ref) as\n | ((el: HTMLElement) => void)\n | undefined;\n\n const cleanButtonProps = () => {\n const { ref: _ref1, ...rest } = buttonAria.buttonProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref2, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref3, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const ariaLabelledBy = createMemo(() => {\n const labelledBy = cleanButtonProps()[\"aria-labelledby\"] as string | undefined;\n if (!resolvePending()) {\n return labelledBy;\n }\n\n if (labelledBy) {\n return `${labelledBy} ${progressId}`;\n }\n\n if (cleanButtonProps()[\"aria-label\"]) {\n return `${buttonId} ${progressId}`;\n }\n\n return labelledBy;\n });\n\n const handleRef = (el: HTMLButtonElement) => {\n setResolvedButtonEl(el);\n assignRef(local.ref, el);\n\n buttonPropsRef?.(el);\n focusPropsRef?.(el);\n hoverPropsRef?.(el);\n\n // Register trigger ownership for surrounding trigger contexts.\n // Close buttons live inside the overlay and must not steal trigger identity.\n if (dialogTriggerContext?.setTriggerRef && local.slot !== \"close\") {\n if (!el.id) {\n el.id = dialogTriggerContext.triggerId;\n }\n dialogTriggerContext.setTriggerRef(el);\n }\n if (popoverTriggerContext?.setTriggerRef) {\n popoverTriggerContext.setTriggerRef(el);\n }\n };\n const buttonType = () =>\n (buttonAria.buttonProps as Record<string, unknown>).type === \"submit\" && resolvePending()\n ? \"button\"\n : ((buttonAria.buttonProps as Record<string, unknown>).type as\n | \"button\"\n | \"submit\"\n | \"reset\"\n | undefined);\n const triggerAriaProps = () => {\n const dialogTriggerProps = dialogTriggerContext?.triggerProps;\n if (dialogTriggerProps && isDialogTrigger()) {\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (dialogTriggerProps[name] != null) {\n next[name] = dialogTriggerProps[name];\n }\n }\n return next;\n }\n\n const triggerProps = popoverTriggerContext?.triggerProps;\n if (!triggerProps || !isPopoverTrigger()) {\n return {};\n }\n\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (triggerProps[name] != null) {\n next[name] = triggerProps[name];\n }\n }\n return next;\n };\n const triggerDomProps = () => {\n const triggerProps = menuTriggerProps();\n if (!triggerProps) {\n return {};\n }\n\n const {\n onPress: _onPress,\n onPressStart: _onPressStart,\n preventFocusOnPress: _preventFocusOnPress,\n \"aria-haspopup\": _ariaHasPopup,\n \"aria-expanded\": _ariaExpanded,\n \"aria-controls\": _ariaControls,\n \"aria-disabled\": _ariaDisabled,\n id: _id,\n ref: _ref,\n onKeyDown: _onKeyDown,\n ...rest\n } = triggerProps;\n return rest;\n };\n const directAriaProps = () => {\n const next: Record<string, unknown> = {};\n for (const name of buttonAriaOverrideProps) {\n next[name] = coerceDomBoolean(name, (ariaProps as Record<string, unknown>)[name]);\n }\n return next;\n };\n const disablePendingInteractions = (props: Record<string, unknown>) => {\n if (!resolvePending()) {\n return props;\n }\n\n const next = { ...props };\n for (const key of Object.keys(next)) {\n // Mirror RAC's `useDisableInteractions`: when pending, strip every event\n // handler except the ones overlays/tooltips still need — focus/blur,\n // hover, and pointer/mouse enter-leave-over-out. Press handlers\n // (click/pointerdown/keydown/…) are removed so the focusable button\n // cannot be activated while pending.\n if (key.startsWith(\"on\") && !pendingPreservedEventPattern.test(key)) {\n next[key] = undefined;\n }\n }\n next.href = undefined;\n next.target = undefined;\n return next;\n };\n const dataState = (value: boolean) => (value ? \"true\" : undefined);\n const buttonChildren = () => renderProps.renderChildren();\n const buttonContent = () => (\n <ProgressBarContext value={{ id: progressId }}>{buttonChildren()}</ProgressBarContext>\n );\n let wasPending = false;\n let pendingAnnounceReady = false;\n createEffect(\n () => {\n const pending = resolvePending();\n const focused = isFocused();\n const labelledBy = ariaLabelledBy() || buttonId;\n return { pending, focused, labelledBy };\n },\n ({ pending, focused, labelledBy }) => {\n if (!pendingAnnounceReady) {\n wasPending = pending;\n pendingAnnounceReady = true;\n return;\n }\n const message = { \"aria-labelledby\": labelledBy };\n if (!wasPending && focused && pending) {\n announce(message, \"assertive\");\n } else if (wasPending && focused && !pending) {\n announce(message, \"assertive\");\n }\n wasPending = pending;\n },\n );\n const rootProps = () =>\n ({\n ...domProps(),\n ...triggerDomProps(),\n ...disablePendingInteractions(cleanButtonProps()),\n ...directAriaProps(),\n ...triggerAriaProps(),\n ...cleanFocusProps(),\n ...cleanHoverProps(),\n // RAC pending strips usePress keydown. Keep this wrapper so MenuTrigger\n // still peels onto the host; skip createPress while pending so Enter/Space\n // are not preventDefault'd and the native trusted click can fire.\n onKeyDown: (event: KeyboardEvent) => {\n (menuTriggerProps()?.onKeyDown as ((event: KeyboardEvent) => void) | undefined)?.(event);\n if (!resolvePending()) {\n (cleanButtonProps().onKeyDown as ((event: KeyboardEvent) => void) | undefined)?.(event);\n }\n },\n type: buttonType(),\n id:\n ((ariaProps as { id?: string }).id as string | undefined) ||\n (menuTriggerProps()?.id as string | undefined) ||\n buttonId,\n class: renderProps.class(),\n style: renderProps.style(),\n slot: local.slot,\n disabled: resolvePending() && isPendingFocusable() ? undefined : cleanButtonProps().disabled,\n \"aria-labelledby\": ariaLabelledBy(),\n \"aria-disabled\": resolvePending()\n ? \"true\"\n : (cleanButtonProps()[\"aria-disabled\"] ?? ariaProps[\"aria-disabled\"]),\n \"data-pressed\": dataState(buttonAria.isPressed() && !resolvePending()),\n \"data-hovered\": dataState(isHovered()),\n \"data-focused\": dataState(isFocused()),\n \"data-focus-visible\": dataState(isFocusVisible()),\n \"data-disabled\": dataState(resolveDisabled()),\n \"data-pending\": dataState(resolvePending()),\n }) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const customRenderValues = createLiveButtonRenderProps(renderValues);\n const customRender = createMemo(() => local.render);\n\n return (\n <>\n {customRender() ? (\n customRender()!(\n createLiveCustomRootProps(rootProps, buttonContent, handleRef),\n customRenderValues,\n )\n ) : (\n <button\n ref={handleRef}\n {...rootProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n >\n {buttonContent()}\n </button>\n )}\n </>\n );\n}\n"],"mappings":"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"}
|