@depup/react-aria-components 1.16.0-depup.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 +201 -0
- package/README.md +31 -0
- package/changes.json +10 -0
- package/dist/Autocomplete.main.js +78 -0
- package/dist/Autocomplete.main.js.map +1 -0
- package/dist/Autocomplete.mjs +67 -0
- package/dist/Autocomplete.module.js +67 -0
- package/dist/Autocomplete.module.js.map +1 -0
- package/dist/Breadcrumbs.main.js +103 -0
- package/dist/Breadcrumbs.main.js.map +1 -0
- package/dist/Breadcrumbs.mjs +92 -0
- package/dist/Breadcrumbs.module.js +92 -0
- package/dist/Breadcrumbs.module.js.map +1 -0
- package/dist/Button.main.js +123 -0
- package/dist/Button.main.js.map +1 -0
- package/dist/Button.mjs +113 -0
- package/dist/Button.module.js +113 -0
- package/dist/Button.module.js.map +1 -0
- package/dist/Calendar.main.js +364 -0
- package/dist/Calendar.main.js.map +1 -0
- package/dist/Calendar.mjs +345 -0
- package/dist/Calendar.module.js +345 -0
- package/dist/Calendar.module.js.map +1 -0
- package/dist/Checkbox.main.js +188 -0
- package/dist/Checkbox.main.js.map +1 -0
- package/dist/Checkbox.mjs +176 -0
- package/dist/Checkbox.module.js +176 -0
- package/dist/Checkbox.module.js.map +1 -0
- package/dist/Collection.main.js +105 -0
- package/dist/Collection.main.js.map +1 -0
- package/dist/Collection.mjs +91 -0
- package/dist/Collection.module.js +91 -0
- package/dist/Collection.module.js.map +1 -0
- package/dist/ColorArea.main.js +80 -0
- package/dist/ColorArea.main.js.map +1 -0
- package/dist/ColorArea.mjs +70 -0
- package/dist/ColorArea.module.js +70 -0
- package/dist/ColorArea.module.js.map +1 -0
- package/dist/ColorField.main.js +168 -0
- package/dist/ColorField.main.js.map +1 -0
- package/dist/ColorField.mjs +158 -0
- package/dist/ColorField.module.js +158 -0
- package/dist/ColorField.module.js.map +1 -0
- package/dist/ColorPicker.main.js +102 -0
- package/dist/ColorPicker.main.js.map +1 -0
- package/dist/ColorPicker.mjs +91 -0
- package/dist/ColorPicker.module.js +91 -0
- package/dist/ColorPicker.module.js.map +1 -0
- package/dist/ColorSlider.main.js +112 -0
- package/dist/ColorSlider.main.js.map +1 -0
- package/dist/ColorSlider.mjs +102 -0
- package/dist/ColorSlider.module.js +102 -0
- package/dist/ColorSlider.module.js.map +1 -0
- package/dist/ColorSwatch.main.js +44 -0
- package/dist/ColorSwatch.main.js.map +1 -0
- package/dist/ColorSwatch.mjs +34 -0
- package/dist/ColorSwatch.module.js +34 -0
- package/dist/ColorSwatch.module.js.map +1 -0
- package/dist/ColorSwatchPicker.main.js +102 -0
- package/dist/ColorSwatchPicker.main.js.map +1 -0
- package/dist/ColorSwatchPicker.mjs +95 -0
- package/dist/ColorSwatchPicker.module.js +95 -0
- package/dist/ColorSwatchPicker.module.js.map +1 -0
- package/dist/ColorThumb.main.js +67 -0
- package/dist/ColorThumb.main.js.map +1 -0
- package/dist/ColorThumb.mjs +57 -0
- package/dist/ColorThumb.module.js +57 -0
- package/dist/ColorThumb.module.js.map +1 -0
- package/dist/ColorWheel.main.js +102 -0
- package/dist/ColorWheel.main.js.map +1 -0
- package/dist/ColorWheel.mjs +90 -0
- package/dist/ColorWheel.module.js +90 -0
- package/dist/ColorWheel.module.js.map +1 -0
- package/dist/ComboBox.main.js +322 -0
- package/dist/ComboBox.main.js.map +1 -0
- package/dist/ComboBox.mjs +309 -0
- package/dist/ComboBox.module.js +309 -0
- package/dist/ComboBox.module.js.map +1 -0
- package/dist/DateField.main.js +361 -0
- package/dist/DateField.main.js.map +1 -0
- package/dist/DateField.mjs +345 -0
- package/dist/DateField.module.js +345 -0
- package/dist/DateField.module.js.map +1 -0
- package/dist/DatePicker.main.js +342 -0
- package/dist/DatePicker.main.js.map +1 -0
- package/dist/DatePicker.mjs +328 -0
- package/dist/DatePicker.module.js +328 -0
- package/dist/DatePicker.module.js.map +1 -0
- package/dist/Dialog.main.js +167 -0
- package/dist/Dialog.main.js.map +1 -0
- package/dist/Dialog.mjs +155 -0
- package/dist/Dialog.module.js +155 -0
- package/dist/Dialog.module.js.map +1 -0
- package/dist/Disclosure.main.js +171 -0
- package/dist/Disclosure.main.js.map +1 -0
- package/dist/Disclosure.mjs +157 -0
- package/dist/Disclosure.module.js +157 -0
- package/dist/Disclosure.module.js.map +1 -0
- package/dist/DragAndDrop.main.js +103 -0
- package/dist/DragAndDrop.main.js.map +1 -0
- package/dist/DragAndDrop.mjs +90 -0
- package/dist/DragAndDrop.module.js +90 -0
- package/dist/DragAndDrop.module.js.map +1 -0
- package/dist/DropZone.main.js +127 -0
- package/dist/DropZone.main.js.map +1 -0
- package/dist/DropZone.mjs +121 -0
- package/dist/DropZone.module.js +121 -0
- package/dist/DropZone.module.js.map +1 -0
- package/dist/FieldError.main.js +61 -0
- package/dist/FieldError.main.js.map +1 -0
- package/dist/FieldError.mjs +51 -0
- package/dist/FieldError.module.js +51 -0
- package/dist/FieldError.module.js.map +1 -0
- package/dist/FileTrigger.main.js +60 -0
- package/dist/FileTrigger.main.js.map +1 -0
- package/dist/FileTrigger.mjs +51 -0
- package/dist/FileTrigger.module.js +51 -0
- package/dist/FileTrigger.module.js.map +1 -0
- package/dist/Form.main.js +49 -0
- package/dist/Form.main.js.map +1 -0
- package/dist/Form.mjs +39 -0
- package/dist/Form.module.js +39 -0
- package/dist/Form.module.js.map +1 -0
- package/dist/GridList.main.js +589 -0
- package/dist/GridList.main.js.map +1 -0
- package/dist/GridList.mjs +573 -0
- package/dist/GridList.module.js +573 -0
- package/dist/GridList.module.js.map +1 -0
- package/dist/Group.main.js +72 -0
- package/dist/Group.main.js.map +1 -0
- package/dist/Group.mjs +62 -0
- package/dist/Group.module.js +62 -0
- package/dist/Group.module.js.map +1 -0
- package/dist/Header.main.js +40 -0
- package/dist/Header.main.js.map +1 -0
- package/dist/Header.mjs +30 -0
- package/dist/Header.module.js +30 -0
- package/dist/Header.module.js.map +1 -0
- package/dist/Heading.main.js +40 -0
- package/dist/Heading.main.js.map +1 -0
- package/dist/Heading.mjs +31 -0
- package/dist/Heading.module.js +31 -0
- package/dist/Heading.module.js.map +1 -0
- package/dist/HiddenDateInput.main.js +126 -0
- package/dist/HiddenDateInput.main.js.map +1 -0
- package/dist/HiddenDateInput.mjs +117 -0
- package/dist/HiddenDateInput.module.js +117 -0
- package/dist/HiddenDateInput.module.js.map +1 -0
- package/dist/Input.main.js +72 -0
- package/dist/Input.main.js.map +1 -0
- package/dist/Input.mjs +62 -0
- package/dist/Input.module.js +62 -0
- package/dist/Input.module.js.map +1 -0
- package/dist/Keyboard.main.js +38 -0
- package/dist/Keyboard.main.js.map +1 -0
- package/dist/Keyboard.mjs +28 -0
- package/dist/Keyboard.module.js +28 -0
- package/dist/Keyboard.module.js.map +1 -0
- package/dist/Label.main.js +43 -0
- package/dist/Label.main.js.map +1 -0
- package/dist/Label.mjs +33 -0
- package/dist/Label.module.js +33 -0
- package/dist/Label.module.js.map +1 -0
- package/dist/Link.main.js +72 -0
- package/dist/Link.main.js.map +1 -0
- package/dist/Link.mjs +62 -0
- package/dist/Link.module.js +62 -0
- package/dist/Link.module.js.map +1 -0
- package/dist/ListBox.main.js +477 -0
- package/dist/ListBox.main.js.map +1 -0
- package/dist/ListBox.mjs +463 -0
- package/dist/ListBox.module.js +463 -0
- package/dist/ListBox.module.js.map +1 -0
- package/dist/Menu.main.js +459 -0
- package/dist/Menu.main.js.map +1 -0
- package/dist/Menu.mjs +443 -0
- package/dist/Menu.module.js +443 -0
- package/dist/Menu.module.js.map +1 -0
- package/dist/Meter.main.js +72 -0
- package/dist/Meter.main.js.map +1 -0
- package/dist/Meter.mjs +62 -0
- package/dist/Meter.module.js +62 -0
- package/dist/Meter.module.js.map +1 -0
- package/dist/Modal.main.js +191 -0
- package/dist/Modal.main.js.map +1 -0
- package/dist/Modal.mjs +180 -0
- package/dist/Modal.module.js +180 -0
- package/dist/Modal.module.js.map +1 -0
- package/dist/NumberField.main.js +147 -0
- package/dist/NumberField.main.js.map +1 -0
- package/dist/NumberField.mjs +136 -0
- package/dist/NumberField.module.js +136 -0
- package/dist/NumberField.module.js.map +1 -0
- package/dist/OverlayArrow.main.js +64 -0
- package/dist/OverlayArrow.main.js.map +1 -0
- package/dist/OverlayArrow.mjs +54 -0
- package/dist/OverlayArrow.module.js +54 -0
- package/dist/OverlayArrow.module.js.map +1 -0
- package/dist/Popover.main.js +196 -0
- package/dist/Popover.main.js.map +1 -0
- package/dist/Popover.mjs +186 -0
- package/dist/Popover.module.js +186 -0
- package/dist/Popover.module.js.map +1 -0
- package/dist/ProgressBar.main.js +73 -0
- package/dist/ProgressBar.main.js.map +1 -0
- package/dist/ProgressBar.mjs +63 -0
- package/dist/ProgressBar.module.js +63 -0
- package/dist/ProgressBar.module.js.map +1 -0
- package/dist/RSPContexts.main.js +37 -0
- package/dist/RSPContexts.main.js.map +1 -0
- package/dist/RSPContexts.mjs +25 -0
- package/dist/RSPContexts.module.js +25 -0
- package/dist/RSPContexts.module.js.map +1 -0
- package/dist/RadioGroup.main.js +184 -0
- package/dist/RadioGroup.main.js.map +1 -0
- package/dist/RadioGroup.mjs +171 -0
- package/dist/RadioGroup.module.js +171 -0
- package/dist/RadioGroup.module.js.map +1 -0
- package/dist/SearchField.main.js +140 -0
- package/dist/SearchField.main.js.map +1 -0
- package/dist/SearchField.mjs +130 -0
- package/dist/SearchField.module.js +130 -0
- package/dist/SearchField.module.js.map +1 -0
- package/dist/Select.main.js +324 -0
- package/dist/Select.main.js.map +1 -0
- package/dist/Select.mjs +315 -0
- package/dist/Select.module.js +315 -0
- package/dist/Select.module.js.map +1 -0
- package/dist/SelectionIndicator.main.js +45 -0
- package/dist/SelectionIndicator.main.js.map +1 -0
- package/dist/SelectionIndicator.mjs +35 -0
- package/dist/SelectionIndicator.module.js +35 -0
- package/dist/SelectionIndicator.module.js.map +1 -0
- package/dist/Separator.main.js +71 -0
- package/dist/Separator.main.js.map +1 -0
- package/dist/Separator.mjs +61 -0
- package/dist/Separator.module.js +61 -0
- package/dist/Separator.module.js.map +1 -0
- package/dist/SharedElementTransition.main.js +140 -0
- package/dist/SharedElementTransition.main.js.map +1 -0
- package/dist/SharedElementTransition.mjs +130 -0
- package/dist/SharedElementTransition.module.js +130 -0
- package/dist/SharedElementTransition.module.js.map +1 -0
- package/dist/Slider.main.js +220 -0
- package/dist/Slider.main.js.map +1 -0
- package/dist/Slider.mjs +204 -0
- package/dist/Slider.module.js +204 -0
- package/dist/Slider.module.js.map +1 -0
- package/dist/Switch.main.js +89 -0
- package/dist/Switch.main.js.map +1 -0
- package/dist/Switch.mjs +79 -0
- package/dist/Switch.module.js +79 -0
- package/dist/Switch.module.js.map +1 -0
- package/dist/Table.main.js +1171 -0
- package/dist/Table.main.js.map +1 -0
- package/dist/Table.mjs +1154 -0
- package/dist/Table.module.js +1154 -0
- package/dist/Table.module.js.map +1 -0
- package/dist/TableLayout.main.js +38 -0
- package/dist/TableLayout.main.js.map +1 -0
- package/dist/TableLayout.mjs +33 -0
- package/dist/TableLayout.module.js +33 -0
- package/dist/TableLayout.module.js.map +1 -0
- package/dist/Tabs.main.js +330 -0
- package/dist/Tabs.main.js.map +1 -0
- package/dist/Tabs.mjs +315 -0
- package/dist/Tabs.module.js +315 -0
- package/dist/Tabs.module.js.map +1 -0
- package/dist/TagGroup.main.js +255 -0
- package/dist/TagGroup.main.js.map +1 -0
- package/dist/TagGroup.mjs +242 -0
- package/dist/TagGroup.module.js +242 -0
- package/dist/TagGroup.module.js.map +1 -0
- package/dist/Text.main.js +41 -0
- package/dist/Text.main.js.map +1 -0
- package/dist/Text.mjs +31 -0
- package/dist/Text.module.js +31 -0
- package/dist/Text.module.js.map +1 -0
- package/dist/TextArea.main.js +57 -0
- package/dist/TextArea.main.js.map +1 -0
- package/dist/TextArea.mjs +47 -0
- package/dist/TextArea.module.js +47 -0
- package/dist/TextArea.module.js.map +1 -0
- package/dist/TextField.main.js +145 -0
- package/dist/TextField.main.js.map +1 -0
- package/dist/TextField.mjs +135 -0
- package/dist/TextField.module.js +135 -0
- package/dist/TextField.module.js.map +1 -0
- package/dist/Toast.main.js +183 -0
- package/dist/Toast.main.js.map +1 -0
- package/dist/Toast.mjs +170 -0
- package/dist/Toast.module.js +170 -0
- package/dist/Toast.module.js.map +1 -0
- package/dist/ToggleButton.main.js +96 -0
- package/dist/ToggleButton.main.js.map +1 -0
- package/dist/ToggleButton.mjs +86 -0
- package/dist/ToggleButton.module.js +86 -0
- package/dist/ToggleButton.module.js.map +1 -0
- package/dist/ToggleButtonGroup.main.js +66 -0
- package/dist/ToggleButtonGroup.main.js.map +1 -0
- package/dist/ToggleButtonGroup.mjs +55 -0
- package/dist/ToggleButtonGroup.module.js +55 -0
- package/dist/ToggleButtonGroup.module.js.map +1 -0
- package/dist/Toolbar.main.js +55 -0
- package/dist/Toolbar.main.js.map +1 -0
- package/dist/Toolbar.mjs +45 -0
- package/dist/Toolbar.module.js +45 -0
- package/dist/Toolbar.module.js.map +1 -0
- package/dist/Tooltip.main.js +132 -0
- package/dist/Tooltip.main.js.map +1 -0
- package/dist/Tooltip.mjs +120 -0
- package/dist/Tooltip.module.js +120 -0
- package/dist/Tooltip.module.js.map +1 -0
- package/dist/Tree.main.js +834 -0
- package/dist/Tree.main.js.map +1 -0
- package/dist/Tree.mjs +818 -0
- package/dist/Tree.module.js +818 -0
- package/dist/Tree.module.js.map +1 -0
- package/dist/TreeDropTargetDelegate.main.js +216 -0
- package/dist/TreeDropTargetDelegate.main.js.map +1 -0
- package/dist/TreeDropTargetDelegate.mjs +211 -0
- package/dist/TreeDropTargetDelegate.module.js +211 -0
- package/dist/TreeDropTargetDelegate.module.js.map +1 -0
- package/dist/Virtualizer.main.js +135 -0
- package/dist/Virtualizer.main.js.map +1 -0
- package/dist/Virtualizer.mjs +126 -0
- package/dist/Virtualizer.module.js +126 -0
- package/dist/Virtualizer.module.js.map +1 -0
- package/dist/ar-AE.main.js +9 -0
- package/dist/ar-AE.main.js.map +1 -0
- package/dist/ar-AE.mjs +11 -0
- package/dist/ar-AE.module.js +11 -0
- package/dist/ar-AE.module.js.map +1 -0
- package/dist/bg-BG.main.js +9 -0
- package/dist/bg-BG.main.js.map +1 -0
- package/dist/bg-BG.mjs +11 -0
- package/dist/bg-BG.module.js +11 -0
- package/dist/bg-BG.module.js.map +1 -0
- package/dist/cs-CZ.main.js +9 -0
- package/dist/cs-CZ.main.js.map +1 -0
- package/dist/cs-CZ.mjs +11 -0
- package/dist/cs-CZ.module.js +11 -0
- package/dist/cs-CZ.module.js.map +1 -0
- package/dist/da-DK.main.js +9 -0
- package/dist/da-DK.main.js.map +1 -0
- package/dist/da-DK.mjs +11 -0
- package/dist/da-DK.module.js +11 -0
- package/dist/da-DK.module.js.map +1 -0
- package/dist/de-DE.main.js +9 -0
- package/dist/de-DE.main.js.map +1 -0
- package/dist/de-DE.mjs +11 -0
- package/dist/de-DE.module.js +11 -0
- package/dist/de-DE.module.js.map +1 -0
- package/dist/el-GR.main.js +9 -0
- package/dist/el-GR.main.js.map +1 -0
- package/dist/el-GR.mjs +11 -0
- package/dist/el-GR.module.js +11 -0
- package/dist/el-GR.module.js.map +1 -0
- package/dist/en-US.main.js +9 -0
- package/dist/en-US.main.js.map +1 -0
- package/dist/en-US.mjs +11 -0
- package/dist/en-US.module.js +11 -0
- package/dist/en-US.module.js.map +1 -0
- package/dist/es-ES.main.js +9 -0
- package/dist/es-ES.main.js.map +1 -0
- package/dist/es-ES.mjs +11 -0
- package/dist/es-ES.module.js +11 -0
- package/dist/es-ES.module.js.map +1 -0
- package/dist/et-EE.main.js +9 -0
- package/dist/et-EE.main.js.map +1 -0
- package/dist/et-EE.mjs +11 -0
- package/dist/et-EE.module.js +11 -0
- package/dist/et-EE.module.js.map +1 -0
- package/dist/fi-FI.main.js +9 -0
- package/dist/fi-FI.main.js.map +1 -0
- package/dist/fi-FI.mjs +11 -0
- package/dist/fi-FI.module.js +11 -0
- package/dist/fi-FI.module.js.map +1 -0
- package/dist/fr-FR.main.js +9 -0
- package/dist/fr-FR.main.js.map +1 -0
- package/dist/fr-FR.mjs +11 -0
- package/dist/fr-FR.module.js +11 -0
- package/dist/fr-FR.module.js.map +1 -0
- package/dist/he-IL.main.js +9 -0
- package/dist/he-IL.main.js.map +1 -0
- package/dist/he-IL.mjs +11 -0
- package/dist/he-IL.module.js +11 -0
- package/dist/he-IL.module.js.map +1 -0
- package/dist/hr-HR.main.js +9 -0
- package/dist/hr-HR.main.js.map +1 -0
- package/dist/hr-HR.mjs +11 -0
- package/dist/hr-HR.module.js +11 -0
- package/dist/hr-HR.module.js.map +1 -0
- package/dist/hu-HU.main.js +9 -0
- package/dist/hu-HU.main.js.map +1 -0
- package/dist/hu-HU.mjs +11 -0
- package/dist/hu-HU.module.js +11 -0
- package/dist/hu-HU.module.js.map +1 -0
- package/dist/import.mjs +161 -0
- package/dist/intlStrings.main.js +108 -0
- package/dist/intlStrings.main.js.map +1 -0
- package/dist/intlStrings.mjs +110 -0
- package/dist/intlStrings.module.js +110 -0
- package/dist/intlStrings.module.js.map +1 -0
- package/dist/it-IT.main.js +9 -0
- package/dist/it-IT.main.js.map +1 -0
- package/dist/it-IT.mjs +11 -0
- package/dist/it-IT.module.js +11 -0
- package/dist/it-IT.module.js.map +1 -0
- package/dist/ja-JP.main.js +9 -0
- package/dist/ja-JP.main.js.map +1 -0
- package/dist/ja-JP.mjs +11 -0
- package/dist/ja-JP.module.js +11 -0
- package/dist/ja-JP.module.js.map +1 -0
- package/dist/ko-KR.main.js +9 -0
- package/dist/ko-KR.main.js.map +1 -0
- package/dist/ko-KR.mjs +11 -0
- package/dist/ko-KR.module.js +11 -0
- package/dist/ko-KR.module.js.map +1 -0
- package/dist/lt-LT.main.js +9 -0
- package/dist/lt-LT.main.js.map +1 -0
- package/dist/lt-LT.mjs +11 -0
- package/dist/lt-LT.module.js +11 -0
- package/dist/lt-LT.module.js.map +1 -0
- package/dist/lv-LV.main.js +9 -0
- package/dist/lv-LV.main.js.map +1 -0
- package/dist/lv-LV.mjs +11 -0
- package/dist/lv-LV.module.js +11 -0
- package/dist/lv-LV.module.js.map +1 -0
- package/dist/main.js +430 -0
- package/dist/main.js.map +1 -0
- package/dist/module.js +161 -0
- package/dist/module.js.map +1 -0
- package/dist/nb-NO.main.js +9 -0
- package/dist/nb-NO.main.js.map +1 -0
- package/dist/nb-NO.mjs +11 -0
- package/dist/nb-NO.module.js +11 -0
- package/dist/nb-NO.module.js.map +1 -0
- package/dist/nl-NL.main.js +9 -0
- package/dist/nl-NL.main.js.map +1 -0
- package/dist/nl-NL.mjs +11 -0
- package/dist/nl-NL.module.js +11 -0
- package/dist/nl-NL.module.js.map +1 -0
- package/dist/pl-PL.main.js +9 -0
- package/dist/pl-PL.main.js.map +1 -0
- package/dist/pl-PL.mjs +11 -0
- package/dist/pl-PL.module.js +11 -0
- package/dist/pl-PL.module.js.map +1 -0
- package/dist/pt-BR.main.js +9 -0
- package/dist/pt-BR.main.js.map +1 -0
- package/dist/pt-BR.mjs +11 -0
- package/dist/pt-BR.module.js +11 -0
- package/dist/pt-BR.module.js.map +1 -0
- package/dist/pt-PT.main.js +9 -0
- package/dist/pt-PT.main.js.map +1 -0
- package/dist/pt-PT.mjs +11 -0
- package/dist/pt-PT.module.js +11 -0
- package/dist/pt-PT.module.js.map +1 -0
- package/dist/ro-RO.main.js +9 -0
- package/dist/ro-RO.main.js.map +1 -0
- package/dist/ro-RO.mjs +11 -0
- package/dist/ro-RO.module.js +11 -0
- package/dist/ro-RO.module.js.map +1 -0
- package/dist/ru-RU.main.js +9 -0
- package/dist/ru-RU.main.js.map +1 -0
- package/dist/ru-RU.mjs +11 -0
- package/dist/ru-RU.module.js +11 -0
- package/dist/ru-RU.module.js.map +1 -0
- package/dist/sk-SK.main.js +9 -0
- package/dist/sk-SK.main.js.map +1 -0
- package/dist/sk-SK.mjs +11 -0
- package/dist/sk-SK.module.js +11 -0
- package/dist/sk-SK.module.js.map +1 -0
- package/dist/sl-SI.main.js +9 -0
- package/dist/sl-SI.main.js.map +1 -0
- package/dist/sl-SI.mjs +11 -0
- package/dist/sl-SI.module.js +11 -0
- package/dist/sl-SI.module.js.map +1 -0
- package/dist/sr-SP.main.js +9 -0
- package/dist/sr-SP.main.js.map +1 -0
- package/dist/sr-SP.mjs +11 -0
- package/dist/sr-SP.module.js +11 -0
- package/dist/sr-SP.module.js.map +1 -0
- package/dist/sv-SE.main.js +9 -0
- package/dist/sv-SE.main.js.map +1 -0
- package/dist/sv-SE.mjs +11 -0
- package/dist/sv-SE.module.js +11 -0
- package/dist/sv-SE.module.js.map +1 -0
- package/dist/tr-TR.main.js +9 -0
- package/dist/tr-TR.main.js.map +1 -0
- package/dist/tr-TR.mjs +11 -0
- package/dist/tr-TR.module.js +11 -0
- package/dist/tr-TR.module.js.map +1 -0
- package/dist/types.d.ts +3764 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/uk-UA.main.js +9 -0
- package/dist/uk-UA.main.js.map +1 -0
- package/dist/uk-UA.mjs +11 -0
- package/dist/uk-UA.module.js +11 -0
- package/dist/uk-UA.module.js.map +1 -0
- package/dist/useDragAndDrop.main.js +74 -0
- package/dist/useDragAndDrop.main.js.map +1 -0
- package/dist/useDragAndDrop.mjs +69 -0
- package/dist/useDragAndDrop.module.js +69 -0
- package/dist/useDragAndDrop.module.js.map +1 -0
- package/dist/utils.main.js +205 -0
- package/dist/utils.main.js.map +1 -0
- package/dist/utils.mjs +188 -0
- package/dist/utils.module.js +188 -0
- package/dist/utils.module.js.map +1 -0
- package/dist/zh-CN.main.js +9 -0
- package/dist/zh-CN.main.js.map +1 -0
- package/dist/zh-CN.mjs +11 -0
- package/dist/zh-CN.module.js +11 -0
- package/dist/zh-CN.module.js.map +1 -0
- package/dist/zh-TW.main.js +9 -0
- package/dist/zh-TW.main.js.map +1 -0
- package/dist/zh-TW.mjs +11 -0
- package/dist/zh-TW.module.js +11 -0
- package/dist/zh-TW.module.js.map +1 -0
- package/i18n/ar-AE.js +1 -0
- package/i18n/ar-AE.mjs +1 -0
- package/i18n/bg-BG.js +1 -0
- package/i18n/bg-BG.mjs +1 -0
- package/i18n/cs-CZ.js +1 -0
- package/i18n/cs-CZ.mjs +1 -0
- package/i18n/da-DK.js +1 -0
- package/i18n/da-DK.mjs +1 -0
- package/i18n/de-DE.js +1 -0
- package/i18n/de-DE.mjs +1 -0
- package/i18n/el-GR.js +1 -0
- package/i18n/el-GR.mjs +1 -0
- package/i18n/en-US.js +1 -0
- package/i18n/en-US.mjs +1 -0
- package/i18n/es-ES.js +1 -0
- package/i18n/es-ES.mjs +1 -0
- package/i18n/et-EE.js +1 -0
- package/i18n/et-EE.mjs +1 -0
- package/i18n/fi-FI.js +1 -0
- package/i18n/fi-FI.mjs +1 -0
- package/i18n/fr-FR.js +1 -0
- package/i18n/fr-FR.mjs +1 -0
- package/i18n/he-IL.js +1 -0
- package/i18n/he-IL.mjs +1 -0
- package/i18n/hr-HR.js +1 -0
- package/i18n/hr-HR.mjs +1 -0
- package/i18n/hu-HU.js +1 -0
- package/i18n/hu-HU.mjs +1 -0
- package/i18n/index.d.ts +13 -0
- package/i18n/index.js +118 -0
- package/i18n/index.mjs +115 -0
- package/i18n/it-IT.js +1 -0
- package/i18n/it-IT.mjs +1 -0
- package/i18n/ja-JP.js +1 -0
- package/i18n/ja-JP.mjs +1 -0
- package/i18n/ko-KR.js +1 -0
- package/i18n/ko-KR.mjs +1 -0
- package/i18n/lang.d.ts +7 -0
- package/i18n/lt-LT.js +1 -0
- package/i18n/lt-LT.mjs +1 -0
- package/i18n/lv-LV.js +1 -0
- package/i18n/lv-LV.mjs +1 -0
- package/i18n/nb-NO.js +1 -0
- package/i18n/nb-NO.mjs +1 -0
- package/i18n/nl-NL.js +1 -0
- package/i18n/nl-NL.mjs +1 -0
- package/i18n/pl-PL.js +1 -0
- package/i18n/pl-PL.mjs +1 -0
- package/i18n/pt-BR.js +1 -0
- package/i18n/pt-BR.mjs +1 -0
- package/i18n/pt-PT.js +1 -0
- package/i18n/pt-PT.mjs +1 -0
- package/i18n/ro-RO.js +1 -0
- package/i18n/ro-RO.mjs +1 -0
- package/i18n/ru-RU.js +1 -0
- package/i18n/ru-RU.mjs +1 -0
- package/i18n/sk-SK.js +1 -0
- package/i18n/sk-SK.mjs +1 -0
- package/i18n/sl-SI.js +1 -0
- package/i18n/sl-SI.mjs +1 -0
- package/i18n/sr-SP.js +1 -0
- package/i18n/sr-SP.mjs +1 -0
- package/i18n/sv-SE.js +1 -0
- package/i18n/sv-SE.mjs +1 -0
- package/i18n/tr-TR.js +1 -0
- package/i18n/tr-TR.mjs +1 -0
- package/i18n/uk-UA.js +1 -0
- package/i18n/uk-UA.mjs +1 -0
- package/i18n/zh-CN.js +1 -0
- package/i18n/zh-CN.mjs +1 -0
- package/i18n/zh-TW.js +1 -0
- package/i18n/zh-TW.mjs +1 -0
- package/package.json +105 -0
- package/src/Autocomplete.tsx +64 -0
- package/src/Breadcrumbs.tsx +137 -0
- package/src/Button.tsx +185 -0
- package/src/Calendar.tsx +620 -0
- package/src/Checkbox.tsx +282 -0
- package/src/Collection.tsx +225 -0
- package/src/ColorArea.tsx +89 -0
- package/src/ColorField.tsx +243 -0
- package/src/ColorPicker.tsx +63 -0
- package/src/ColorSlider.tsx +110 -0
- package/src/ColorSwatch.tsx +54 -0
- package/src/ColorSwatchPicker.tsx +125 -0
- package/src/ColorThumb.tsx +108 -0
- package/src/ColorWheel.tsx +122 -0
- package/src/ComboBox.tsx +325 -0
- package/src/DateField.tsx +425 -0
- package/src/DatePicker.tsx +334 -0
- package/src/Dialog.tsx +159 -0
- package/src/Disclosure.tsx +259 -0
- package/src/DragAndDrop.tsx +115 -0
- package/src/DropZone.tsx +145 -0
- package/src/FieldError.tsx +57 -0
- package/src/FileTrigger.tsx +79 -0
- package/src/Form.tsx +52 -0
- package/src/GridList.tsx +678 -0
- package/src/Group.tsx +114 -0
- package/src/Header.tsx +28 -0
- package/src/Heading.tsx +31 -0
- package/src/HiddenDateInput.tsx +152 -0
- package/src/Input.tsx +113 -0
- package/src/Keyboard.tsx +23 -0
- package/src/Label.tsx +29 -0
- package/src/Link.tsx +115 -0
- package/src/ListBox.tsx +577 -0
- package/src/Menu.tsx +496 -0
- package/src/Meter.tsx +93 -0
- package/src/Modal.tsx +262 -0
- package/src/NumberField.tsx +152 -0
- package/src/OverlayArrow.tsx +91 -0
- package/src/Popover.tsx +267 -0
- package/src/ProgressBar.tsx +101 -0
- package/src/RSPContexts.ts +52 -0
- package/src/RadioGroup.tsx +273 -0
- package/src/SearchField.tsx +152 -0
- package/src/Select.tsx +356 -0
- package/src/SelectionIndicator.tsx +46 -0
- package/src/Separator.tsx +76 -0
- package/src/SharedElementTransition.tsx +186 -0
- package/src/Slider.tsx +310 -0
- package/src/Switch.tsx +146 -0
- package/src/Table.tsx +1597 -0
- package/src/TableLayout.ts +28 -0
- package/src/Tabs.tsx +495 -0
- package/src/TagGroup.tsx +310 -0
- package/src/Text.tsx +28 -0
- package/src/TextArea.tsx +65 -0
- package/src/TextField.tsx +148 -0
- package/src/Toast.tsx +248 -0
- package/src/ToggleButton.tsx +103 -0
- package/src/ToggleButtonGroup.tsx +90 -0
- package/src/Toolbar.tsx +69 -0
- package/src/Tooltip.tsx +187 -0
- package/src/Tree.tsx +1066 -0
- package/src/TreeDropTargetDelegate.ts +308 -0
- package/src/Virtualizer.tsx +174 -0
- package/src/index.ts +160 -0
- package/src/useDragAndDrop.tsx +150 -0
- package/src/utils.tsx +351 -0
package/src/Popover.tsx
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {AriaLabelingProps, forwardRefType, GlobalDOMAttributes, RefObject} from '@react-types/shared';
|
|
14
|
+
import {AriaPopoverProps, DismissButton, Overlay, PlacementAxis, PositionProps, useLocale, usePopover} from 'react-aria';
|
|
15
|
+
import {
|
|
16
|
+
ClassNameOrFunction,
|
|
17
|
+
ContextValue,
|
|
18
|
+
dom,
|
|
19
|
+
RenderProps,
|
|
20
|
+
SlotProps,
|
|
21
|
+
useContextProps,
|
|
22
|
+
useRenderProps
|
|
23
|
+
} from './utils';
|
|
24
|
+
import {filterDOMProps, isFocusWithin, mergeProps, useEnterAnimation, useExitAnimation, useLayoutEffect} from '@react-aria/utils';
|
|
25
|
+
import {focusSafely, getInteractionModality} from '@react-aria/interactions';
|
|
26
|
+
import {OverlayArrowContext} from './OverlayArrow';
|
|
27
|
+
import {OverlayTriggerProps, OverlayTriggerState, useOverlayTriggerState} from 'react-stately';
|
|
28
|
+
import {OverlayTriggerStateContext} from './Dialog';
|
|
29
|
+
import React, {Context, createContext, ForwardedRef, forwardRef, useContext, useEffect, useMemo, useRef, useState} from 'react';
|
|
30
|
+
import {useIsHidden} from '@react-aria/collections';
|
|
31
|
+
|
|
32
|
+
export interface PopoverProps extends Omit<PositionProps, 'isOpen'>, Omit<AriaPopoverProps, 'popoverRef' | 'triggerRef' | 'groupRef' | 'offset' | 'arrowSize'>, OverlayTriggerProps, RenderProps<PopoverRenderProps>, SlotProps, AriaLabelingProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
33
|
+
/**
|
|
34
|
+
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
35
|
+
* @default 'react-aria-Popover'
|
|
36
|
+
*/
|
|
37
|
+
className?: ClassNameOrFunction<PopoverRenderProps>,
|
|
38
|
+
/**
|
|
39
|
+
* The name of the component that triggered the popover. This is reflected on the element
|
|
40
|
+
* as the `data-trigger` attribute, and can be used to provide specific
|
|
41
|
+
* styles for the popover depending on which element triggered it.
|
|
42
|
+
*/
|
|
43
|
+
trigger?: string,
|
|
44
|
+
/**
|
|
45
|
+
* The ref for the element which the popover positions itself with respect to.
|
|
46
|
+
*
|
|
47
|
+
* When used within a trigger component such as DialogTrigger, MenuTrigger, Select, etc.,
|
|
48
|
+
* this is set automatically. It is only required when used standalone.
|
|
49
|
+
*/
|
|
50
|
+
triggerRef?: RefObject<Element | null>,
|
|
51
|
+
/**
|
|
52
|
+
* Whether the popover is currently performing an entry animation.
|
|
53
|
+
*/
|
|
54
|
+
isEntering?: boolean,
|
|
55
|
+
/**
|
|
56
|
+
* Whether the popover is currently performing an exit animation.
|
|
57
|
+
*/
|
|
58
|
+
isExiting?: boolean,
|
|
59
|
+
/**
|
|
60
|
+
* The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.
|
|
61
|
+
* @default document.body
|
|
62
|
+
* @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.
|
|
63
|
+
*/
|
|
64
|
+
UNSTABLE_portalContainer?: Element,
|
|
65
|
+
/**
|
|
66
|
+
* The additional offset applied along the main axis between the element and its
|
|
67
|
+
* anchor element.
|
|
68
|
+
* @default 8
|
|
69
|
+
*/
|
|
70
|
+
offset?: number
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface PopoverRenderProps {
|
|
74
|
+
/**
|
|
75
|
+
* The name of the component that triggered the popover, e.g. "DialogTrigger" or "ComboBox".
|
|
76
|
+
* @selector [data-trigger="..."]
|
|
77
|
+
*/
|
|
78
|
+
trigger: string | null,
|
|
79
|
+
/**
|
|
80
|
+
* The placement of the popover relative to the trigger.
|
|
81
|
+
* @selector [data-placement="left | right | top | bottom"]
|
|
82
|
+
*/
|
|
83
|
+
placement: PlacementAxis | null,
|
|
84
|
+
/**
|
|
85
|
+
* Whether the popover is currently entering. Use this to apply animations.
|
|
86
|
+
* @selector [data-entering]
|
|
87
|
+
*/
|
|
88
|
+
isEntering: boolean,
|
|
89
|
+
/**
|
|
90
|
+
* Whether the popover is currently exiting. Use this to apply animations.
|
|
91
|
+
* @selector [data-exiting]
|
|
92
|
+
*/
|
|
93
|
+
isExiting: boolean
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
interface PopoverContextValue extends PopoverProps {
|
|
97
|
+
/** Contexts to clear. */
|
|
98
|
+
clearContexts?: Context<any>[]
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export const PopoverContext = createContext<ContextValue<PopoverContextValue, HTMLElement>>(null);
|
|
102
|
+
|
|
103
|
+
// Stores a ref for the portal container for a group of popovers (e.g. submenus).
|
|
104
|
+
const PopoverGroupContext = createContext<RefObject<Element | null> | null>(null);
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* A popover is an overlay element positioned relative to a trigger.
|
|
108
|
+
*/
|
|
109
|
+
export const Popover = /*#__PURE__*/ (forwardRef as forwardRefType)(function Popover(props: PopoverProps, ref: ForwardedRef<HTMLElement>) {
|
|
110
|
+
[props, ref] = useContextProps(props, ref, PopoverContext);
|
|
111
|
+
let contextState = useContext(OverlayTriggerStateContext);
|
|
112
|
+
let localState = useOverlayTriggerState(props);
|
|
113
|
+
let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;
|
|
114
|
+
let isExiting = useExitAnimation(ref, state.isOpen) || props.isExiting || false;
|
|
115
|
+
let isHidden = useIsHidden();
|
|
116
|
+
let {direction} = useLocale();
|
|
117
|
+
|
|
118
|
+
// If we are in a hidden tree, we still need to preserve our children.
|
|
119
|
+
if (isHidden) {
|
|
120
|
+
let children = props.children;
|
|
121
|
+
if (typeof children === 'function') {
|
|
122
|
+
children = children({
|
|
123
|
+
trigger: props.trigger || null,
|
|
124
|
+
placement: 'bottom',
|
|
125
|
+
isEntering: false,
|
|
126
|
+
isExiting: false,
|
|
127
|
+
defaultChildren: null
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return <>{children}</>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (state && !state.isOpen && !isExiting) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return (
|
|
139
|
+
<PopoverInner
|
|
140
|
+
{...props}
|
|
141
|
+
triggerRef={props.triggerRef!}
|
|
142
|
+
state={state}
|
|
143
|
+
popoverRef={ref}
|
|
144
|
+
isExiting={isExiting}
|
|
145
|
+
dir={direction} />
|
|
146
|
+
);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
interface PopoverInnerProps extends AriaPopoverProps, RenderProps<PopoverRenderProps>, SlotProps {
|
|
150
|
+
state: OverlayTriggerState,
|
|
151
|
+
isEntering?: boolean,
|
|
152
|
+
isExiting: boolean,
|
|
153
|
+
UNSTABLE_portalContainer?: Element,
|
|
154
|
+
trigger?: string,
|
|
155
|
+
dir?: 'ltr' | 'rtl',
|
|
156
|
+
clearContexts?: Context<any>[]
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function PopoverInner({state, isExiting, UNSTABLE_portalContainer, clearContexts, ...props}: PopoverInnerProps) {
|
|
160
|
+
// Calculate the arrow size internally (and remove props.arrowSize from PopoverProps)
|
|
161
|
+
// Referenced from: packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx
|
|
162
|
+
let arrowRef = useRef<HTMLDivElement>(null);
|
|
163
|
+
let containerRef = useRef<HTMLDivElement | null>(null);
|
|
164
|
+
let groupCtx = useContext(PopoverGroupContext);
|
|
165
|
+
let isSubPopover = groupCtx && props.trigger === 'SubmenuTrigger';
|
|
166
|
+
|
|
167
|
+
let {popoverProps, underlayProps, arrowProps, placement, triggerAnchorPoint} = usePopover({
|
|
168
|
+
...props,
|
|
169
|
+
offset: props.offset ?? 8,
|
|
170
|
+
arrowRef,
|
|
171
|
+
// If this is a submenu/subdialog, use the root popover's container
|
|
172
|
+
// to detect outside interaction and add aria-hidden.
|
|
173
|
+
groupRef: isSubPopover ? groupCtx! : containerRef
|
|
174
|
+
}, state);
|
|
175
|
+
|
|
176
|
+
let ref = props.popoverRef as RefObject<HTMLDivElement | null>;
|
|
177
|
+
let isEntering = useEnterAnimation(ref, !!placement) || props.isEntering || false;
|
|
178
|
+
let renderProps = useRenderProps({
|
|
179
|
+
...props,
|
|
180
|
+
defaultClassName: 'react-aria-Popover',
|
|
181
|
+
values: {
|
|
182
|
+
trigger: props.trigger || null,
|
|
183
|
+
placement,
|
|
184
|
+
isEntering,
|
|
185
|
+
isExiting
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Automatically render Popover with role=dialog except when isNonModal is true,
|
|
190
|
+
// or a dialog is already nested inside the popover.
|
|
191
|
+
let shouldBeDialog = !props.isNonModal || props.trigger === 'SubmenuTrigger';
|
|
192
|
+
let [isDialog, setDialog] = useState(false);
|
|
193
|
+
useLayoutEffect(() => {
|
|
194
|
+
if (ref.current) {
|
|
195
|
+
setDialog(shouldBeDialog && !ref.current.querySelector('[role=dialog]'));
|
|
196
|
+
}
|
|
197
|
+
}, [ref, shouldBeDialog]);
|
|
198
|
+
|
|
199
|
+
// Focus the popover itself on mount, unless a child element is already focused.
|
|
200
|
+
// Skip this for submenus since hovering a submenutrigger should keep focus on the trigger
|
|
201
|
+
useEffect(() => {
|
|
202
|
+
if (isDialog && (props.trigger !== 'SubmenuTrigger' || getInteractionModality() !== 'pointer') && ref.current && !isFocusWithin(ref.current)) {
|
|
203
|
+
focusSafely(ref.current);
|
|
204
|
+
}
|
|
205
|
+
}, [isDialog, ref, props.trigger]);
|
|
206
|
+
|
|
207
|
+
let children = useMemo(() => {
|
|
208
|
+
let children = renderProps.children;
|
|
209
|
+
if (clearContexts) {
|
|
210
|
+
for (let Context of clearContexts) {
|
|
211
|
+
children = <Context.Provider value={null}>{children}</Context.Provider>;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return children;
|
|
215
|
+
}, [renderProps.children, clearContexts]);
|
|
216
|
+
|
|
217
|
+
let style = {
|
|
218
|
+
...popoverProps.style,
|
|
219
|
+
'--trigger-anchor-point': triggerAnchorPoint ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px` : undefined,
|
|
220
|
+
...renderProps.style
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
let overlay = (
|
|
224
|
+
<dom.div
|
|
225
|
+
{...mergeProps(filterDOMProps(props, {global: true}), popoverProps)}
|
|
226
|
+
{...renderProps}
|
|
227
|
+
role={isDialog ? 'dialog' : undefined}
|
|
228
|
+
tabIndex={isDialog ? -1 : undefined}
|
|
229
|
+
aria-label={props['aria-label']}
|
|
230
|
+
aria-labelledby={props['aria-labelledby']}
|
|
231
|
+
ref={ref}
|
|
232
|
+
slot={props.slot || undefined}
|
|
233
|
+
style={style}
|
|
234
|
+
dir={props.dir}
|
|
235
|
+
data-trigger={props.trigger}
|
|
236
|
+
data-placement={placement}
|
|
237
|
+
data-entering={isEntering || undefined}
|
|
238
|
+
data-exiting={isExiting || undefined}>
|
|
239
|
+
{!props.isNonModal && <DismissButton onDismiss={state.close} />}
|
|
240
|
+
<OverlayArrowContext.Provider value={{...arrowProps, placement, ref: arrowRef}}>
|
|
241
|
+
{children}
|
|
242
|
+
</OverlayArrowContext.Provider>
|
|
243
|
+
<DismissButton onDismiss={state.close} />
|
|
244
|
+
</dom.div>
|
|
245
|
+
);
|
|
246
|
+
|
|
247
|
+
// If this is a root popover, render an extra div to act as the portal container for submenus/subdialogs.
|
|
248
|
+
if (!isSubPopover) {
|
|
249
|
+
return (
|
|
250
|
+
<Overlay {...props} shouldContainFocus={isDialog} isExiting={isExiting} portalContainer={UNSTABLE_portalContainer}>
|
|
251
|
+
{!props.isNonModal && state.isOpen && <div data-testid="underlay" {...underlayProps} style={{position: 'fixed', inset: 0}} />}
|
|
252
|
+
<div ref={containerRef} style={{display: 'contents'}}>
|
|
253
|
+
<PopoverGroupContext.Provider value={containerRef}>
|
|
254
|
+
{overlay}
|
|
255
|
+
</PopoverGroupContext.Provider>
|
|
256
|
+
</div>
|
|
257
|
+
</Overlay>
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Submenus/subdialogs are mounted into the root popover's container.
|
|
262
|
+
return (
|
|
263
|
+
<Overlay {...props} shouldContainFocus={isDialog} isExiting={isExiting} portalContainer={UNSTABLE_portalContainer ?? groupCtx?.current ?? undefined}>
|
|
264
|
+
{overlay}
|
|
265
|
+
</Overlay>
|
|
266
|
+
);
|
|
267
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {AriaProgressBarProps, useProgressBar} from 'react-aria';
|
|
14
|
+
import {clamp} from '@react-stately/utils';
|
|
15
|
+
import {
|
|
16
|
+
ClassNameOrFunction,
|
|
17
|
+
ContextValue,
|
|
18
|
+
dom,
|
|
19
|
+
RenderProps,
|
|
20
|
+
SlotProps,
|
|
21
|
+
useContextProps,
|
|
22
|
+
useRenderProps,
|
|
23
|
+
useSlot
|
|
24
|
+
} from './utils';
|
|
25
|
+
import {filterDOMProps, mergeProps} from '@react-aria/utils';
|
|
26
|
+
import {GlobalDOMAttributes} from '@react-types/shared';
|
|
27
|
+
import {LabelContext} from './Label';
|
|
28
|
+
import React, {createContext, ForwardedRef, forwardRef} from 'react';
|
|
29
|
+
|
|
30
|
+
export interface ProgressBarProps extends Omit<AriaProgressBarProps, 'label'>, RenderProps<ProgressBarRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
31
|
+
/**
|
|
32
|
+
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
33
|
+
* @default 'react-aria-ProgressBar'
|
|
34
|
+
*/
|
|
35
|
+
className?: ClassNameOrFunction<ProgressBarRenderProps>
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface ProgressBarRenderProps {
|
|
39
|
+
/**
|
|
40
|
+
* The value as a percentage between the minimum and maximum.
|
|
41
|
+
*/
|
|
42
|
+
percentage: number | undefined,
|
|
43
|
+
/**
|
|
44
|
+
* A formatted version of the value.
|
|
45
|
+
* @selector [aria-valuetext]
|
|
46
|
+
*/
|
|
47
|
+
valueText: string | undefined,
|
|
48
|
+
/**
|
|
49
|
+
* Whether the progress bar is indeterminate.
|
|
50
|
+
* @selector :not([aria-valuenow])
|
|
51
|
+
*/
|
|
52
|
+
isIndeterminate: boolean
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export const ProgressBarContext = createContext<ContextValue<ProgressBarProps, HTMLDivElement>>(null);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Progress bars show either determinate or indeterminate progress of an operation
|
|
59
|
+
* over time.
|
|
60
|
+
*/
|
|
61
|
+
export const ProgressBar = forwardRef(function ProgressBar(props: ProgressBarProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
62
|
+
[props, ref] = useContextProps(props, ref, ProgressBarContext);
|
|
63
|
+
let {
|
|
64
|
+
value = 0,
|
|
65
|
+
minValue = 0,
|
|
66
|
+
maxValue = 100,
|
|
67
|
+
isIndeterminate = false
|
|
68
|
+
} = props;
|
|
69
|
+
value = clamp(value, minValue, maxValue);
|
|
70
|
+
|
|
71
|
+
let [labelRef, label] = useSlot(
|
|
72
|
+
!props['aria-label'] && !props['aria-labelledby']
|
|
73
|
+
);
|
|
74
|
+
let {
|
|
75
|
+
progressBarProps,
|
|
76
|
+
labelProps
|
|
77
|
+
} = useProgressBar({...props, label});
|
|
78
|
+
|
|
79
|
+
// Calculate the width of the progress bar as a percentage
|
|
80
|
+
let percentage = isIndeterminate ? undefined : (value - minValue) / (maxValue - minValue) * 100;
|
|
81
|
+
|
|
82
|
+
let renderProps = useRenderProps({
|
|
83
|
+
...props,
|
|
84
|
+
defaultClassName: 'react-aria-ProgressBar',
|
|
85
|
+
values: {
|
|
86
|
+
percentage,
|
|
87
|
+
valueText: progressBarProps['aria-valuetext'],
|
|
88
|
+
isIndeterminate
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
let DOMProps = filterDOMProps(props, {global: true});
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<dom.div {...mergeProps(DOMProps, renderProps, progressBarProps)} ref={ref} slot={props.slot || undefined}>
|
|
96
|
+
<LabelContext.Provider value={{...labelProps, ref: labelRef, elementType: 'span'}}>
|
|
97
|
+
{renderProps.children}
|
|
98
|
+
</LabelContext.Provider>
|
|
99
|
+
</dom.div>
|
|
100
|
+
);
|
|
101
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the 'License');
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {AriaLabelingProps, DOMProps, FocusableElement, FocusEvents, KeyboardEvents, Node, ValueBase} from '@react-types/shared';
|
|
14
|
+
import {AriaTextFieldProps} from '@react-aria/textfield';
|
|
15
|
+
import {CheckboxProps} from './Checkbox';
|
|
16
|
+
import {ColorAreaProps} from './ColorArea';
|
|
17
|
+
import {ColorFieldProps} from './ColorField';
|
|
18
|
+
import {ColorSliderProps} from './ColorSlider';
|
|
19
|
+
import {ColorWheelProps} from './ColorWheel';
|
|
20
|
+
import {ContextValue} from './utils';
|
|
21
|
+
import {createContext} from 'react';
|
|
22
|
+
import {HeadingProps} from './Heading';
|
|
23
|
+
|
|
24
|
+
// This file is a temporary workaround for a tree shaking issue in SWC (the minifier used by Parcel).
|
|
25
|
+
// These are the contexts consumed by React Spectrum components that don't use the implementation from RAC
|
|
26
|
+
// (they use hooks). When included in the same file as the implementation, Parcel includes both the context
|
|
27
|
+
// and implementation even if only the context is imported. We moved these contexts to a separate file so
|
|
28
|
+
// that the implementation does not get included in the bundle. This will be removed once the tree shaking
|
|
29
|
+
// issue is fixed.
|
|
30
|
+
export const CheckboxContext = createContext<ContextValue<CheckboxProps, HTMLLabelElement>>(null);
|
|
31
|
+
export const ColorAreaContext = createContext<ContextValue<Partial<ColorAreaProps>, HTMLDivElement>>(null);
|
|
32
|
+
export const ColorFieldContext = createContext<ContextValue<ColorFieldProps, HTMLDivElement>>(null);
|
|
33
|
+
export const ColorSliderContext = createContext<ContextValue<Partial<ColorSliderProps>, HTMLDivElement>>(null);
|
|
34
|
+
export const ColorWheelContext = createContext<ContextValue<Partial<ColorWheelProps>, HTMLDivElement>>(null);
|
|
35
|
+
export const HeadingContext = createContext<ContextValue<HeadingProps, HTMLHeadingElement>>({});
|
|
36
|
+
|
|
37
|
+
export interface SelectableCollectionContextValue<T> extends DOMProps, AriaLabelingProps {
|
|
38
|
+
filter?: (nodeTextValue: string, node: Node<T>) => boolean,
|
|
39
|
+
/** Whether the collection items should use virtual focus instead of being focused directly. */
|
|
40
|
+
shouldUseVirtualFocus?: boolean,
|
|
41
|
+
/** Whether typeahead is disabled. */
|
|
42
|
+
disallowTypeAhead?: boolean
|
|
43
|
+
}
|
|
44
|
+
interface FieldInputContextValue<T = FocusableElement> extends
|
|
45
|
+
DOMProps,
|
|
46
|
+
FocusEvents<T>,
|
|
47
|
+
KeyboardEvents,
|
|
48
|
+
Pick<ValueBase<string>, 'onChange' | 'value'>,
|
|
49
|
+
Pick<AriaTextFieldProps, 'enterKeyHint' | 'aria-controls' | 'aria-autocomplete' | 'aria-activedescendant' | 'spellCheck' | 'autoCorrect' | 'autoComplete'> {}
|
|
50
|
+
|
|
51
|
+
export const SelectableCollectionContext = createContext<ContextValue<SelectableCollectionContextValue<any>, HTMLElement>>(null);
|
|
52
|
+
export const FieldInputContext = createContext<ContextValue<FieldInputContextValue, FocusableElement>>(null);
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {AriaRadioGroupProps, AriaRadioProps, HoverEvents, Orientation, useFocusRing, useHover, useRadio, useRadioGroup, VisuallyHidden} from 'react-aria';
|
|
14
|
+
import {
|
|
15
|
+
ClassNameOrFunction,
|
|
16
|
+
ContextValue,
|
|
17
|
+
dom,
|
|
18
|
+
Provider,
|
|
19
|
+
RACValidation,
|
|
20
|
+
removeDataAttributes,
|
|
21
|
+
RenderProps,
|
|
22
|
+
SlotProps,
|
|
23
|
+
useContextProps,
|
|
24
|
+
useRenderProps,
|
|
25
|
+
useSlot,
|
|
26
|
+
useSlottedContext
|
|
27
|
+
} from './utils';
|
|
28
|
+
import {FieldErrorContext} from './FieldError';
|
|
29
|
+
import {filterDOMProps, mergeProps, mergeRefs, useObjectRef} from '@react-aria/utils';
|
|
30
|
+
import {FormContext} from './Form';
|
|
31
|
+
import {forwardRefType, GlobalDOMAttributes, RefObject} from '@react-types/shared';
|
|
32
|
+
import {LabelContext} from './Label';
|
|
33
|
+
import {RadioGroupState, useRadioGroupState} from 'react-stately';
|
|
34
|
+
import React, {createContext, ForwardedRef, forwardRef, useMemo} from 'react';
|
|
35
|
+
import {SelectionIndicatorContext} from './SelectionIndicator';
|
|
36
|
+
import {SharedElementTransition} from './SharedElementTransition';
|
|
37
|
+
import {TextContext} from './Text';
|
|
38
|
+
|
|
39
|
+
export interface RadioGroupProps extends Omit<AriaRadioGroupProps, 'children' | 'label' | 'description' | 'errorMessage' | 'validationState' | 'validationBehavior'>, RACValidation, RenderProps<RadioGroupRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
40
|
+
/**
|
|
41
|
+
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
42
|
+
* @default 'react-aria-RadioGroup'
|
|
43
|
+
*/
|
|
44
|
+
className?: ClassNameOrFunction<RadioGroupRenderProps>
|
|
45
|
+
}
|
|
46
|
+
export interface RadioProps extends Omit<AriaRadioProps, 'children'>, HoverEvents, RenderProps<RadioRenderProps, 'label'>, SlotProps, Omit<GlobalDOMAttributes<HTMLLabelElement>, 'onClick'> {
|
|
47
|
+
/**
|
|
48
|
+
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
49
|
+
* @default 'react-aria-Radio'
|
|
50
|
+
*/
|
|
51
|
+
className?: ClassNameOrFunction<RadioRenderProps>,
|
|
52
|
+
/**
|
|
53
|
+
* A ref for the HTML input element.
|
|
54
|
+
*/
|
|
55
|
+
inputRef?: RefObject<HTMLInputElement | null>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface RadioGroupRenderProps {
|
|
59
|
+
/**
|
|
60
|
+
* The orientation of the radio group.
|
|
61
|
+
* @selector [data-orientation="horizontal | vertical"]
|
|
62
|
+
*/
|
|
63
|
+
orientation: Orientation,
|
|
64
|
+
/**
|
|
65
|
+
* Whether the radio group is disabled.
|
|
66
|
+
* @selector [data-disabled]
|
|
67
|
+
*/
|
|
68
|
+
isDisabled: boolean,
|
|
69
|
+
/**
|
|
70
|
+
* Whether the radio group is read only.
|
|
71
|
+
* @selector [data-readonly]
|
|
72
|
+
*/
|
|
73
|
+
isReadOnly: boolean,
|
|
74
|
+
/**
|
|
75
|
+
* Whether the radio group is required.
|
|
76
|
+
* @selector [data-required]
|
|
77
|
+
*/
|
|
78
|
+
isRequired: boolean,
|
|
79
|
+
/**
|
|
80
|
+
* Whether the radio group is invalid.
|
|
81
|
+
* @selector [data-invalid]
|
|
82
|
+
*/
|
|
83
|
+
isInvalid: boolean,
|
|
84
|
+
/**
|
|
85
|
+
* State of the radio group.
|
|
86
|
+
*/
|
|
87
|
+
state: RadioGroupState
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface RadioRenderProps {
|
|
91
|
+
/**
|
|
92
|
+
* Whether the radio is selected.
|
|
93
|
+
* @selector [data-selected]
|
|
94
|
+
*/
|
|
95
|
+
isSelected: boolean,
|
|
96
|
+
/**
|
|
97
|
+
* Whether the radio is currently hovered with a mouse.
|
|
98
|
+
* @selector [data-hovered]
|
|
99
|
+
*/
|
|
100
|
+
isHovered: boolean,
|
|
101
|
+
/**
|
|
102
|
+
* Whether the radio is currently in a pressed state.
|
|
103
|
+
* @selector [data-pressed]
|
|
104
|
+
*/
|
|
105
|
+
isPressed: boolean,
|
|
106
|
+
/**
|
|
107
|
+
* Whether the radio is focused, either via a mouse or keyboard.
|
|
108
|
+
* @selector [data-focused]
|
|
109
|
+
*/
|
|
110
|
+
isFocused: boolean,
|
|
111
|
+
/**
|
|
112
|
+
* Whether the radio is keyboard focused.
|
|
113
|
+
* @selector [data-focus-visible]
|
|
114
|
+
*/
|
|
115
|
+
isFocusVisible: boolean,
|
|
116
|
+
/**
|
|
117
|
+
* Whether the radio is disabled.
|
|
118
|
+
* @selector [data-disabled]
|
|
119
|
+
*/
|
|
120
|
+
isDisabled: boolean,
|
|
121
|
+
/**
|
|
122
|
+
* Whether the radio is read only.
|
|
123
|
+
* @selector [data-readonly]
|
|
124
|
+
*/
|
|
125
|
+
isReadOnly: boolean,
|
|
126
|
+
/**
|
|
127
|
+
* Whether the radio is invalid.
|
|
128
|
+
* @selector [data-invalid]
|
|
129
|
+
*/
|
|
130
|
+
isInvalid: boolean,
|
|
131
|
+
/**
|
|
132
|
+
* Whether the checkbox is required.
|
|
133
|
+
* @selector [data-required]
|
|
134
|
+
*/
|
|
135
|
+
isRequired: boolean
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export const RadioGroupContext = createContext<ContextValue<RadioGroupProps, HTMLDivElement>>(null);
|
|
139
|
+
export const RadioContext = createContext<ContextValue<Partial<RadioProps>, HTMLLabelElement>>(null);
|
|
140
|
+
export const RadioGroupStateContext = createContext<RadioGroupState | null>(null);
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* A radio group allows a user to select a single item from a list of mutually exclusive options.
|
|
144
|
+
*/
|
|
145
|
+
export const RadioGroup = /*#__PURE__*/ (forwardRef as forwardRefType)(function RadioGroup(props: RadioGroupProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
146
|
+
[props, ref] = useContextProps(props, ref, RadioGroupContext);
|
|
147
|
+
let {validationBehavior: formValidationBehavior} = useSlottedContext(FormContext) || {};
|
|
148
|
+
let validationBehavior = props.validationBehavior ?? formValidationBehavior ?? 'native';
|
|
149
|
+
let state = useRadioGroupState({
|
|
150
|
+
...props,
|
|
151
|
+
validationBehavior
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
let [labelRef, label] = useSlot(
|
|
155
|
+
!props['aria-label'] && !props['aria-labelledby']
|
|
156
|
+
);
|
|
157
|
+
let {radioGroupProps, labelProps, descriptionProps, errorMessageProps, ...validation} = useRadioGroup({
|
|
158
|
+
...props,
|
|
159
|
+
label,
|
|
160
|
+
validationBehavior
|
|
161
|
+
}, state);
|
|
162
|
+
|
|
163
|
+
let renderProps = useRenderProps({
|
|
164
|
+
...props,
|
|
165
|
+
values: {
|
|
166
|
+
orientation: props.orientation || 'vertical',
|
|
167
|
+
isDisabled: state.isDisabled,
|
|
168
|
+
isReadOnly: state.isReadOnly,
|
|
169
|
+
isRequired: state.isRequired,
|
|
170
|
+
isInvalid: state.isInvalid,
|
|
171
|
+
state
|
|
172
|
+
},
|
|
173
|
+
defaultClassName: 'react-aria-RadioGroup'
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
let DOMProps = filterDOMProps(props, {global: true});
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<dom.div
|
|
180
|
+
{...mergeProps(DOMProps, renderProps, radioGroupProps)}
|
|
181
|
+
ref={ref}
|
|
182
|
+
slot={props.slot || undefined}
|
|
183
|
+
data-orientation={props.orientation || 'vertical'}
|
|
184
|
+
data-invalid={state.isInvalid || undefined}
|
|
185
|
+
data-disabled={state.isDisabled || undefined}
|
|
186
|
+
data-readonly={state.isReadOnly || undefined}
|
|
187
|
+
data-required={state.isRequired || undefined}>
|
|
188
|
+
<Provider
|
|
189
|
+
values={[
|
|
190
|
+
[RadioGroupStateContext, state],
|
|
191
|
+
[LabelContext, {...labelProps, ref: labelRef, elementType: 'span'}],
|
|
192
|
+
[TextContext, {
|
|
193
|
+
slots: {
|
|
194
|
+
description: descriptionProps,
|
|
195
|
+
errorMessage: errorMessageProps
|
|
196
|
+
}
|
|
197
|
+
}],
|
|
198
|
+
[FieldErrorContext, validation]
|
|
199
|
+
]}>
|
|
200
|
+
<SharedElementTransition>
|
|
201
|
+
{renderProps.children}
|
|
202
|
+
</SharedElementTransition>
|
|
203
|
+
</Provider>
|
|
204
|
+
</dom.div>
|
|
205
|
+
);
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* A radio represents an individual option within a radio group.
|
|
210
|
+
*/
|
|
211
|
+
export const Radio = /*#__PURE__*/ (forwardRef as forwardRefType)(function Radio(props: RadioProps, ref: ForwardedRef<HTMLLabelElement>) {
|
|
212
|
+
let {
|
|
213
|
+
inputRef: userProvidedInputRef = null,
|
|
214
|
+
...otherProps
|
|
215
|
+
} = props;
|
|
216
|
+
[props, ref] = useContextProps(otherProps, ref, RadioContext);
|
|
217
|
+
let state = React.useContext(RadioGroupStateContext)!;
|
|
218
|
+
let inputRef = useObjectRef(useMemo(() => mergeRefs(userProvidedInputRef, props.inputRef !== undefined ? props.inputRef : null), [userProvidedInputRef, props.inputRef]));
|
|
219
|
+
let {labelProps, inputProps, isSelected, isDisabled, isPressed} = useRadio({
|
|
220
|
+
...removeDataAttributes<RadioProps>(props),
|
|
221
|
+
// ReactNode type doesn't allow function children.
|
|
222
|
+
children: typeof props.children === 'function' ? true : props.children
|
|
223
|
+
}, state, inputRef);
|
|
224
|
+
let {isFocused, isFocusVisible, focusProps} = useFocusRing();
|
|
225
|
+
let interactionDisabled = isDisabled || state.isReadOnly;
|
|
226
|
+
|
|
227
|
+
let {hoverProps, isHovered} = useHover({
|
|
228
|
+
...props,
|
|
229
|
+
isDisabled: interactionDisabled
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
let renderProps = useRenderProps({
|
|
233
|
+
...props,
|
|
234
|
+
defaultClassName: 'react-aria-Radio',
|
|
235
|
+
values: {
|
|
236
|
+
isSelected,
|
|
237
|
+
isPressed,
|
|
238
|
+
isHovered,
|
|
239
|
+
isFocused,
|
|
240
|
+
isFocusVisible,
|
|
241
|
+
isDisabled,
|
|
242
|
+
isReadOnly: state.isReadOnly,
|
|
243
|
+
isInvalid: state.isInvalid,
|
|
244
|
+
isRequired: state.isRequired
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
let DOMProps = filterDOMProps(props, {global: true});
|
|
249
|
+
delete DOMProps.id;
|
|
250
|
+
delete DOMProps.onClick;
|
|
251
|
+
|
|
252
|
+
return (
|
|
253
|
+
<dom.label
|
|
254
|
+
{...mergeProps(DOMProps, labelProps, hoverProps, renderProps)}
|
|
255
|
+
ref={ref}
|
|
256
|
+
data-selected={isSelected || undefined}
|
|
257
|
+
data-pressed={isPressed || undefined}
|
|
258
|
+
data-hovered={isHovered || undefined}
|
|
259
|
+
data-focused={isFocused || undefined}
|
|
260
|
+
data-focus-visible={isFocusVisible || undefined}
|
|
261
|
+
data-disabled={isDisabled || undefined}
|
|
262
|
+
data-readonly={state.isReadOnly || undefined}
|
|
263
|
+
data-invalid={state.isInvalid || undefined}
|
|
264
|
+
data-required={state.isRequired || undefined}>
|
|
265
|
+
<VisuallyHidden elementType="span">
|
|
266
|
+
<input {...mergeProps(inputProps, focusProps)} ref={inputRef} />
|
|
267
|
+
</VisuallyHidden>
|
|
268
|
+
<SelectionIndicatorContext.Provider value={{isSelected}}>
|
|
269
|
+
{renderProps.children}
|
|
270
|
+
</SelectionIndicatorContext.Provider>
|
|
271
|
+
</dom.label>
|
|
272
|
+
);
|
|
273
|
+
});
|