@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
|
@@ -0,0 +1,259 @@
|
|
|
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 {AriaDisclosureProps, LabelAriaProps, useDisclosure, useFocusRing} from 'react-aria';
|
|
14
|
+
import {ButtonContext} from './Button';
|
|
15
|
+
import {
|
|
16
|
+
ClassNameOrFunction,
|
|
17
|
+
ContextValue,
|
|
18
|
+
DEFAULT_SLOT,
|
|
19
|
+
dom,
|
|
20
|
+
Provider,
|
|
21
|
+
RenderProps,
|
|
22
|
+
SlotProps,
|
|
23
|
+
useContextProps,
|
|
24
|
+
useRenderProps
|
|
25
|
+
} from './utils';
|
|
26
|
+
import {DisclosureGroupState, DisclosureState, DisclosureGroupProps as StatelyDisclosureGroupProps, useDisclosureGroupState, useDisclosureState} from 'react-stately';
|
|
27
|
+
import {DOMProps, forwardRefType, GlobalDOMAttributes, Key} from '@react-types/shared';
|
|
28
|
+
import {filterDOMProps, mergeProps, mergeRefs, useId} from '@react-aria/utils';
|
|
29
|
+
import React, {createContext, DOMAttributes, ForwardedRef, forwardRef, ReactNode, useContext} from 'react';
|
|
30
|
+
|
|
31
|
+
export interface DisclosureGroupProps extends StatelyDisclosureGroupProps, RenderProps<DisclosureGroupRenderProps>, DOMProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
32
|
+
/**
|
|
33
|
+
* 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.
|
|
34
|
+
* @default 'react-aria-DisclosureGroup'
|
|
35
|
+
*/
|
|
36
|
+
className?: ClassNameOrFunction<DisclosureGroupRenderProps>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface DisclosureGroupRenderProps {
|
|
40
|
+
/**
|
|
41
|
+
* Whether the disclosure group is disabled.
|
|
42
|
+
* @selector [data-disabled]
|
|
43
|
+
*/
|
|
44
|
+
isDisabled: boolean,
|
|
45
|
+
/**
|
|
46
|
+
* State of the disclosure group.
|
|
47
|
+
*/
|
|
48
|
+
state: DisclosureGroupState
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const DisclosureGroupStateContext = createContext<DisclosureGroupState | null>(null);
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* A DisclosureGroup is a grouping of related disclosures, sometimes called an accordion.
|
|
55
|
+
* It supports both single and multiple expanded items.
|
|
56
|
+
*/
|
|
57
|
+
export const DisclosureGroup = forwardRef(function DisclosureGroup(props: DisclosureGroupProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
58
|
+
let state = useDisclosureGroupState(props);
|
|
59
|
+
|
|
60
|
+
let renderProps = useRenderProps({
|
|
61
|
+
...props,
|
|
62
|
+
defaultClassName: 'react-aria-DisclosureGroup',
|
|
63
|
+
values: {
|
|
64
|
+
isDisabled: state.isDisabled,
|
|
65
|
+
state
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
let domProps = filterDOMProps(props, {global: true});
|
|
70
|
+
|
|
71
|
+
return (
|
|
72
|
+
<dom.div
|
|
73
|
+
{...domProps}
|
|
74
|
+
{...renderProps}
|
|
75
|
+
ref={ref}
|
|
76
|
+
data-disabled={props.isDisabled || undefined}>
|
|
77
|
+
<DisclosureGroupStateContext.Provider value={state}>
|
|
78
|
+
{renderProps.children}
|
|
79
|
+
</DisclosureGroupStateContext.Provider>
|
|
80
|
+
</dom.div>
|
|
81
|
+
);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
export interface DisclosureProps extends Omit<AriaDisclosureProps, 'children'>, RenderProps<DisclosureRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
85
|
+
/**
|
|
86
|
+
* 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.
|
|
87
|
+
* @default 'react-aria-Disclosure'
|
|
88
|
+
*/
|
|
89
|
+
className?: ClassNameOrFunction<DisclosureRenderProps>,
|
|
90
|
+
/** An id for the disclosure when used within a DisclosureGroup, matching the id used in `expandedKeys`. */
|
|
91
|
+
id?: Key
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface DisclosureRenderProps {
|
|
95
|
+
/**
|
|
96
|
+
* Whether the disclosure is expanded.
|
|
97
|
+
* @selector [data-expanded]
|
|
98
|
+
*/
|
|
99
|
+
isExpanded: boolean,
|
|
100
|
+
/**
|
|
101
|
+
* Whether the disclosure has keyboard focus.
|
|
102
|
+
* @selector [data-focus-visible-within]
|
|
103
|
+
*/
|
|
104
|
+
isFocusVisibleWithin: boolean,
|
|
105
|
+
/**
|
|
106
|
+
* Whether the disclosure is disabled.
|
|
107
|
+
* @selector [data-disabled]
|
|
108
|
+
*/
|
|
109
|
+
isDisabled: boolean,
|
|
110
|
+
/**
|
|
111
|
+
* State of the disclosure.
|
|
112
|
+
*/
|
|
113
|
+
state: DisclosureState
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export const DisclosureContext = createContext<ContextValue<DisclosureProps, HTMLDivElement>>(null);
|
|
117
|
+
export const DisclosureStateContext = createContext<DisclosureState | null>(null);
|
|
118
|
+
|
|
119
|
+
interface InternalDisclosureContextValue {
|
|
120
|
+
panelProps: DOMAttributes<HTMLElement>,
|
|
121
|
+
panelRef: React.RefObject<HTMLDivElement | null>
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const InternalDisclosureContext = createContext<InternalDisclosureContextValue | null>(null);
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* A disclosure is a collapsible section of content. It is composed of a a header with a heading and trigger button, and a panel that contains the content.
|
|
128
|
+
*/
|
|
129
|
+
export const Disclosure = /*#__PURE__*/ (forwardRef as forwardRefType)(function Disclosure(props: DisclosureProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
130
|
+
[props, ref] = useContextProps(props, ref, DisclosureContext);
|
|
131
|
+
let groupState = useContext(DisclosureGroupStateContext)!;
|
|
132
|
+
let {id, ...otherProps} = props;
|
|
133
|
+
|
|
134
|
+
// Generate an id if one wasn't provided.
|
|
135
|
+
// (can't pass id into useId since it can also be a number)
|
|
136
|
+
let defaultId = useId();
|
|
137
|
+
id ||= defaultId;
|
|
138
|
+
|
|
139
|
+
let isExpanded = groupState ? groupState.expandedKeys.has(id) : props.isExpanded;
|
|
140
|
+
let state = useDisclosureState({
|
|
141
|
+
...props,
|
|
142
|
+
isExpanded,
|
|
143
|
+
onExpandedChange(isExpanded) {
|
|
144
|
+
if (groupState) {
|
|
145
|
+
groupState.toggleKey(id);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
props.onExpandedChange?.(isExpanded);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
let panelRef = React.useRef<HTMLDivElement | null>(null);
|
|
153
|
+
let isDisabled = props.isDisabled || groupState?.isDisabled || false;
|
|
154
|
+
let {buttonProps, panelProps} = useDisclosure({
|
|
155
|
+
...props,
|
|
156
|
+
isExpanded,
|
|
157
|
+
isDisabled
|
|
158
|
+
}, state, panelRef);
|
|
159
|
+
let {
|
|
160
|
+
isFocusVisible: isFocusVisibleWithin,
|
|
161
|
+
focusProps: focusWithinProps
|
|
162
|
+
} = useFocusRing({within: true});
|
|
163
|
+
|
|
164
|
+
let renderProps = useRenderProps({
|
|
165
|
+
...props,
|
|
166
|
+
id: undefined,
|
|
167
|
+
defaultClassName: 'react-aria-Disclosure',
|
|
168
|
+
values: {
|
|
169
|
+
isExpanded: state.isExpanded,
|
|
170
|
+
isDisabled,
|
|
171
|
+
isFocusVisibleWithin,
|
|
172
|
+
state
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
let domProps = filterDOMProps(otherProps, {global: true});
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<Provider
|
|
180
|
+
values={[
|
|
181
|
+
[ButtonContext, {
|
|
182
|
+
slots: {
|
|
183
|
+
[DEFAULT_SLOT]: {},
|
|
184
|
+
trigger: buttonProps
|
|
185
|
+
}
|
|
186
|
+
}],
|
|
187
|
+
[InternalDisclosureContext, {panelProps, panelRef}],
|
|
188
|
+
[DisclosureStateContext, state]
|
|
189
|
+
]}>
|
|
190
|
+
<dom.div
|
|
191
|
+
{...mergeProps(domProps, renderProps, focusWithinProps)}
|
|
192
|
+
ref={ref}
|
|
193
|
+
data-expanded={state.isExpanded || undefined}
|
|
194
|
+
data-disabled={isDisabled || undefined}
|
|
195
|
+
data-focus-visible-within={isFocusVisibleWithin || undefined}>
|
|
196
|
+
{renderProps.children}
|
|
197
|
+
</dom.div>
|
|
198
|
+
</Provider>
|
|
199
|
+
);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
export interface DisclosurePanelRenderProps {
|
|
203
|
+
/**
|
|
204
|
+
* Whether keyboard focus is within the disclosure panel.
|
|
205
|
+
* @selector [data-focus-visible-within]
|
|
206
|
+
*/
|
|
207
|
+
isFocusVisibleWithin: boolean
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export interface DisclosurePanelProps extends RenderProps<DisclosurePanelRenderProps>, DOMProps, LabelAriaProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
211
|
+
/**
|
|
212
|
+
* 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.
|
|
213
|
+
* @default 'react-aria-DisclosurePanel'
|
|
214
|
+
*/
|
|
215
|
+
className?: ClassNameOrFunction<DisclosurePanelRenderProps>,
|
|
216
|
+
/**
|
|
217
|
+
* The accessibility role for the disclosure's panel.
|
|
218
|
+
* @default 'group'
|
|
219
|
+
*/
|
|
220
|
+
role?: 'group' | 'region',
|
|
221
|
+
/**
|
|
222
|
+
* The children of the component.
|
|
223
|
+
*/
|
|
224
|
+
children: ReactNode
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* A DisclosurePanel provides the content for a disclosure.
|
|
229
|
+
*/
|
|
230
|
+
export const DisclosurePanel = /*#__PURE__*/ (forwardRef as forwardRefType)(function DisclosurePanel(props: DisclosurePanelProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
231
|
+
let {role = 'group'} = props;
|
|
232
|
+
let {panelProps, panelRef} = useContext(InternalDisclosureContext)!;
|
|
233
|
+
let {
|
|
234
|
+
isFocusVisible: isFocusVisibleWithin,
|
|
235
|
+
focusProps: focusWithinProps
|
|
236
|
+
} = useFocusRing({within: true});
|
|
237
|
+
let renderProps = useRenderProps({
|
|
238
|
+
...props,
|
|
239
|
+
defaultClassName: 'react-aria-DisclosurePanel',
|
|
240
|
+
values: {
|
|
241
|
+
isFocusVisibleWithin
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
let DOMProps = filterDOMProps(props, {global: true, labelable: true});
|
|
245
|
+
return (
|
|
246
|
+
<dom.div
|
|
247
|
+
{...mergeProps(DOMProps, renderProps, panelProps, focusWithinProps)}
|
|
248
|
+
ref={mergeRefs(ref, panelRef)}
|
|
249
|
+
role={role}
|
|
250
|
+
data-focus-visible-within={isFocusVisibleWithin || undefined}>
|
|
251
|
+
<Provider
|
|
252
|
+
values={[
|
|
253
|
+
[ButtonContext, null]
|
|
254
|
+
]}>
|
|
255
|
+
{props.children}
|
|
256
|
+
</Provider>
|
|
257
|
+
</dom.div>
|
|
258
|
+
);
|
|
259
|
+
});
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
import type {DropIndicatorProps as AriaDropIndicatorProps, ItemDropTarget, Key} from 'react-aria';
|
|
13
|
+
import type {ClassNameOrFunction, RenderProps} from './utils';
|
|
14
|
+
import type {DragAndDropHooks} from './useDragAndDrop';
|
|
15
|
+
import type {DraggableCollectionState, DroppableCollectionState, MultipleSelectionManager} from 'react-stately';
|
|
16
|
+
import React, {createContext, ForwardedRef, forwardRef, JSX, ReactNode, useCallback, useContext, useMemo} from 'react';
|
|
17
|
+
|
|
18
|
+
export interface DragAndDropContextValue {
|
|
19
|
+
dragAndDropHooks?: DragAndDropHooks,
|
|
20
|
+
dragState?: DraggableCollectionState,
|
|
21
|
+
dropState?: DroppableCollectionState
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const DragAndDropContext = createContext<DragAndDropContextValue>({});
|
|
25
|
+
export const DropIndicatorContext = createContext<DropIndicatorContextValue | null>(null);
|
|
26
|
+
|
|
27
|
+
export interface DropIndicatorRenderProps {
|
|
28
|
+
/**
|
|
29
|
+
* Whether the drop indicator is currently the active drop target.
|
|
30
|
+
* @selector [data-drop-target]
|
|
31
|
+
*/
|
|
32
|
+
isDropTarget: boolean
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface DropIndicatorProps extends Omit<AriaDropIndicatorProps, 'activateButtonRef'>, RenderProps<DropIndicatorRenderProps> {
|
|
36
|
+
/**
|
|
37
|
+
* 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.
|
|
38
|
+
* @default 'react-aria-DropIndicator'
|
|
39
|
+
*/
|
|
40
|
+
className?: ClassNameOrFunction<DropIndicatorRenderProps>
|
|
41
|
+
}
|
|
42
|
+
interface DropIndicatorContextValue {
|
|
43
|
+
render: (props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>) => ReactNode
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* A DropIndicator is rendered between items in a collection to indicate where dropped data will be inserted.
|
|
48
|
+
*/
|
|
49
|
+
export const DropIndicator = forwardRef(function DropIndicator(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>): JSX.Element {
|
|
50
|
+
let {render} = useContext(DropIndicatorContext)!;
|
|
51
|
+
return <>{render(props, ref)}</>;
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
type RenderDropIndicatorRetValue = ((target: ItemDropTarget) => ReactNode | undefined) | undefined
|
|
55
|
+
|
|
56
|
+
export function useRenderDropIndicator(dragAndDropHooks?: DragAndDropHooks, dropState?: DroppableCollectionState): RenderDropIndicatorRetValue {
|
|
57
|
+
let renderDropIndicator = dragAndDropHooks?.renderDropIndicator;
|
|
58
|
+
let isVirtualDragging = dragAndDropHooks?.isVirtualDragging?.();
|
|
59
|
+
let fn = useCallback((target: ItemDropTarget) => {
|
|
60
|
+
// Only show drop indicators when virtual dragging or this is the current drop target.
|
|
61
|
+
if (isVirtualDragging || dropState?.isDropTarget(target)) {
|
|
62
|
+
return renderDropIndicator ? renderDropIndicator(target) : <DropIndicator target={target} />;
|
|
63
|
+
}
|
|
64
|
+
// We invalidate whenever the target changes.
|
|
65
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
66
|
+
}, [dropState?.target, isVirtualDragging, renderDropIndicator]);
|
|
67
|
+
return dragAndDropHooks?.useDropIndicator ? fn : undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function useDndPersistedKeys(selectionManager: MultipleSelectionManager, dragAndDropHooks?: DragAndDropHooks, dropState?: DroppableCollectionState): Set<Key> {
|
|
71
|
+
// Persist the focused key and the drop target key.
|
|
72
|
+
let focusedKey = selectionManager.focusedKey;
|
|
73
|
+
let dropTargetKey: Key | null | undefined = null;
|
|
74
|
+
if (dragAndDropHooks?.isVirtualDragging?.() && dropState?.target?.type === 'item') {
|
|
75
|
+
dropTargetKey = dropState.target.key;
|
|
76
|
+
if (dropState.target.dropPosition === 'after') {
|
|
77
|
+
// Normalize to the "before" drop position since we only render those to the DOM.
|
|
78
|
+
let nextKey = dropState.collection.getKeyAfter(dropTargetKey);
|
|
79
|
+
let lastDescendantKey: Key | null = null;
|
|
80
|
+
if (nextKey != null) {
|
|
81
|
+
let targetLevel = dropState.collection.getItem(dropTargetKey)?.level ?? 0;
|
|
82
|
+
// Skip over any rows that are descendants of the target ("after" position should be after all children)
|
|
83
|
+
while (nextKey) {
|
|
84
|
+
let node = dropState.collection.getItem(nextKey);
|
|
85
|
+
// eslint-disable-next-line max-depth
|
|
86
|
+
if (!node) {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
// Skip over non-item nodes (e.g., loaders) since they can't be drop targets.
|
|
90
|
+
// eslint-disable-next-line max-depth
|
|
91
|
+
if (node.type !== 'item') {
|
|
92
|
+
nextKey = dropState.collection.getKeyAfter(nextKey);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Stop once we find an item at the same level or higher
|
|
97
|
+
// eslint-disable-next-line max-depth
|
|
98
|
+
if ((node.level ?? 0) <= targetLevel) {
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
lastDescendantKey = nextKey;
|
|
103
|
+
nextKey = dropState.collection.getKeyAfter(nextKey);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// If nextKey is null (end of collection), use the last descendant
|
|
108
|
+
dropTargetKey = nextKey ?? lastDescendantKey ?? dropTargetKey;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return useMemo(() => {
|
|
113
|
+
return new Set([focusedKey, dropTargetKey].filter(k => k != null));
|
|
114
|
+
}, [focusedKey, dropTargetKey]);
|
|
115
|
+
}
|
package/src/DropZone.tsx
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {AriaLabelingProps, GlobalDOMAttributes, HoverEvents} from '@react-types/shared';
|
|
14
|
+
import {
|
|
15
|
+
ClassNameOrFunction,
|
|
16
|
+
ContextValue,
|
|
17
|
+
dom,
|
|
18
|
+
Provider,
|
|
19
|
+
RenderProps,
|
|
20
|
+
SlotProps,
|
|
21
|
+
useContextProps,
|
|
22
|
+
useRenderProps
|
|
23
|
+
} from './utils';
|
|
24
|
+
import {DropOptions, mergeProps, useButton, useClipboard, useDrop, useFocusRing, useHover, useLocalizedStringFormatter, VisuallyHidden} from 'react-aria';
|
|
25
|
+
import {filterDOMProps, getEventTarget, isFocusable, nodeContains, useLabels, useObjectRef, useSlotId} from '@react-aria/utils';
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
import intlMessages from '../intl/*.json';
|
|
28
|
+
import React, {createContext, ForwardedRef, forwardRef, useRef} from 'react';
|
|
29
|
+
import {TextContext} from './Text';
|
|
30
|
+
|
|
31
|
+
export interface DropZoneRenderProps {
|
|
32
|
+
/**
|
|
33
|
+
* Whether the dropzone is currently hovered with a mouse.
|
|
34
|
+
* @selector [data-hovered]
|
|
35
|
+
*/
|
|
36
|
+
isHovered: boolean,
|
|
37
|
+
/**
|
|
38
|
+
* Whether the dropzone is focused, either via a mouse or keyboard.
|
|
39
|
+
* @selector [data-focused]
|
|
40
|
+
*/
|
|
41
|
+
isFocused: boolean,
|
|
42
|
+
/**
|
|
43
|
+
* Whether the dropzone is keyboard focused.
|
|
44
|
+
* @selector [data-focus-visible]
|
|
45
|
+
*/
|
|
46
|
+
isFocusVisible: boolean,
|
|
47
|
+
/**
|
|
48
|
+
* Whether the dropzone is the drop target.
|
|
49
|
+
* @selector [data-drop-target]
|
|
50
|
+
*/
|
|
51
|
+
isDropTarget: boolean,
|
|
52
|
+
/**
|
|
53
|
+
* Whether the dropzone is disabled.
|
|
54
|
+
* @selector [data-disabled]
|
|
55
|
+
*/
|
|
56
|
+
isDisabled: boolean
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface DropZoneProps extends Omit<DropOptions, 'getDropOperationForPoint' | 'ref' | 'hasDropButton'>, HoverEvents, RenderProps<DropZoneRenderProps>, SlotProps, AriaLabelingProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
60
|
+
/**
|
|
61
|
+
* 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.
|
|
62
|
+
* @default 'react-aria-DropZone'
|
|
63
|
+
*/
|
|
64
|
+
className?: ClassNameOrFunction<DropZoneRenderProps>
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const DropZoneContext = createContext<ContextValue<DropZoneProps, HTMLDivElement>>(null);
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* A drop zone is an area into which one or multiple objects can be dragged and dropped.
|
|
71
|
+
*/
|
|
72
|
+
export const DropZone = forwardRef(function DropZone(props: DropZoneProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
73
|
+
let {isDisabled = false} = props;
|
|
74
|
+
[props, ref] = useContextProps(props, ref, DropZoneContext);
|
|
75
|
+
let dropzoneRef = useObjectRef(ref);
|
|
76
|
+
let buttonRef = useRef<HTMLButtonElement>(null);
|
|
77
|
+
let {dropProps, dropButtonProps, isDropTarget} = useDrop({...props, ref: buttonRef, hasDropButton: true});
|
|
78
|
+
let {buttonProps} = useButton(dropButtonProps || {}, buttonRef);
|
|
79
|
+
let {hoverProps, isHovered} = useHover(props);
|
|
80
|
+
let {focusProps, isFocused, isFocusVisible} = useFocusRing();
|
|
81
|
+
let stringFormatter = useLocalizedStringFormatter(intlMessages, 'react-aria-components');
|
|
82
|
+
|
|
83
|
+
let textId = useSlotId();
|
|
84
|
+
let ariaLabel = props['aria-label'] || stringFormatter.format('dropzoneLabel');
|
|
85
|
+
let messageId = props['aria-labelledby'];
|
|
86
|
+
let ariaLabelledby = [textId, messageId].filter(Boolean).join(' ');
|
|
87
|
+
let labelProps = useLabels({'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby});
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
let {clipboardProps} = useClipboard({
|
|
91
|
+
isDisabled,
|
|
92
|
+
onPaste: (items) => props.onDrop?.({
|
|
93
|
+
type: 'drop',
|
|
94
|
+
items,
|
|
95
|
+
x: 0,
|
|
96
|
+
y: 0,
|
|
97
|
+
dropOperation: 'copy'
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
let renderProps = useRenderProps({
|
|
102
|
+
...props,
|
|
103
|
+
values: {isHovered, isFocused, isFocusVisible, isDropTarget, isDisabled},
|
|
104
|
+
defaultClassName: 'react-aria-DropZone'
|
|
105
|
+
});
|
|
106
|
+
let DOMProps = filterDOMProps(props, {global: true});
|
|
107
|
+
delete DOMProps.id;
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<Provider
|
|
111
|
+
values={[
|
|
112
|
+
[TextContext, {id: textId, slot: 'label'}]
|
|
113
|
+
]}>
|
|
114
|
+
<dom.div
|
|
115
|
+
{...mergeProps(DOMProps, renderProps, dropProps, hoverProps)}
|
|
116
|
+
slot={props.slot || undefined}
|
|
117
|
+
ref={dropzoneRef}
|
|
118
|
+
onClick={(e) => {
|
|
119
|
+
let target = getEventTarget(e) as HTMLElement | null;
|
|
120
|
+
while (target && nodeContains(dropzoneRef.current, target)) {
|
|
121
|
+
if (isFocusable(target)) {
|
|
122
|
+
break;
|
|
123
|
+
} else if (target === dropzoneRef.current) {
|
|
124
|
+
buttonRef.current?.focus();
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
target = target.parentElement;
|
|
129
|
+
}
|
|
130
|
+
}}
|
|
131
|
+
data-hovered={isHovered || undefined}
|
|
132
|
+
data-focused={isFocused || undefined}
|
|
133
|
+
data-focus-visible={isFocusVisible || undefined}
|
|
134
|
+
data-drop-target={isDropTarget || undefined}
|
|
135
|
+
data-disabled={isDisabled || undefined}>
|
|
136
|
+
<VisuallyHidden>
|
|
137
|
+
<button
|
|
138
|
+
{...mergeProps(buttonProps, focusProps, clipboardProps, labelProps)}
|
|
139
|
+
ref={buttonRef} />
|
|
140
|
+
</VisuallyHidden>
|
|
141
|
+
{renderProps.children}
|
|
142
|
+
</dom.div>
|
|
143
|
+
</Provider>
|
|
144
|
+
);
|
|
145
|
+
});
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {ClassNameOrFunction, RenderProps, useRenderProps} from './utils';
|
|
14
|
+
import {DOMProps, GlobalDOMAttributes, ValidationResult} from '@react-types/shared';
|
|
15
|
+
import {filterDOMProps} from '@react-aria/utils';
|
|
16
|
+
import React, {createContext, ForwardedRef, forwardRef, useContext} from 'react';
|
|
17
|
+
import {Text} from './Text';
|
|
18
|
+
|
|
19
|
+
export const FieldErrorContext = createContext<ValidationResult | null>(null);
|
|
20
|
+
|
|
21
|
+
export interface FieldErrorRenderProps extends ValidationResult {}
|
|
22
|
+
export interface FieldErrorProps extends RenderProps<FieldErrorRenderProps>, DOMProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
23
|
+
/**
|
|
24
|
+
* 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.
|
|
25
|
+
* @default 'react-aria-FieldError'
|
|
26
|
+
*/
|
|
27
|
+
className?: ClassNameOrFunction<FieldErrorRenderProps>
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A FieldError displays validation errors for a form field.
|
|
32
|
+
*/
|
|
33
|
+
export const FieldError = forwardRef(function FieldError(props: FieldErrorProps, ref: ForwardedRef<HTMLElement>) {
|
|
34
|
+
let validation = useContext(FieldErrorContext);
|
|
35
|
+
if (!validation?.isInvalid) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return <FieldErrorInner {...props} ref={ref} />;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const FieldErrorInner = forwardRef((props: FieldErrorProps, ref: ForwardedRef<HTMLElement>) => {
|
|
43
|
+
let validation = useContext(FieldErrorContext)!;
|
|
44
|
+
let domProps = filterDOMProps(props, {global: true})!;
|
|
45
|
+
let renderProps = useRenderProps({
|
|
46
|
+
...props,
|
|
47
|
+
defaultClassName: 'react-aria-FieldError',
|
|
48
|
+
defaultChildren: validation.validationErrors.length === 0 ? undefined : validation.validationErrors.join(' '),
|
|
49
|
+
values: validation
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
if (renderProps.children == null) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return <Text slot="errorMessage" {...domProps} {...renderProps} ref={ref} />;
|
|
57
|
+
});
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {filterDOMProps, getEventTarget, useObjectRef} from '@react-aria/utils';
|
|
14
|
+
import {GlobalDOMAttributes} from '@react-types/shared';
|
|
15
|
+
import {Input} from './Input';
|
|
16
|
+
import {PressResponder} from '@react-aria/interactions';
|
|
17
|
+
import React, {ForwardedRef, forwardRef, ReactNode} from 'react';
|
|
18
|
+
|
|
19
|
+
export interface FileTriggerProps extends GlobalDOMAttributes<HTMLInputElement> {
|
|
20
|
+
/**
|
|
21
|
+
* Specifies what mime type of files are allowed.
|
|
22
|
+
*/
|
|
23
|
+
acceptedFileTypes?: ReadonlyArray<string>,
|
|
24
|
+
/**
|
|
25
|
+
* Whether multiple files can be selected.
|
|
26
|
+
*/
|
|
27
|
+
allowsMultiple?: boolean,
|
|
28
|
+
/**
|
|
29
|
+
* Specifies the use of a media capture mechanism to capture the media on the spot.
|
|
30
|
+
*/
|
|
31
|
+
defaultCamera?: 'user' | 'environment',
|
|
32
|
+
/**
|
|
33
|
+
* Handler when a user selects a file.
|
|
34
|
+
*/
|
|
35
|
+
onSelect?: (files: FileList | null) => void,
|
|
36
|
+
/**
|
|
37
|
+
* The children of the component.
|
|
38
|
+
*/
|
|
39
|
+
children?: ReactNode,
|
|
40
|
+
/**
|
|
41
|
+
* Enables the selection of directories instead of individual files.
|
|
42
|
+
*/
|
|
43
|
+
acceptDirectory?: boolean
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* A FileTrigger allows a user to access the file system with any pressable React Aria or React Spectrum component, or custom components built with usePress.
|
|
48
|
+
*/
|
|
49
|
+
export const FileTrigger = forwardRef(function FileTrigger(props: FileTriggerProps, ref: ForwardedRef<HTMLInputElement>) {
|
|
50
|
+
let {onSelect, acceptedFileTypes, allowsMultiple, defaultCamera, children, acceptDirectory, ...rest} = props;
|
|
51
|
+
let inputRef = useObjectRef(ref);
|
|
52
|
+
let domProps = filterDOMProps(rest, {global: true});
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<>
|
|
56
|
+
<PressResponder
|
|
57
|
+
onPress={() => {
|
|
58
|
+
if (inputRef.current?.value) {
|
|
59
|
+
inputRef.current.value = '';
|
|
60
|
+
}
|
|
61
|
+
inputRef.current?.click();
|
|
62
|
+
}}>
|
|
63
|
+
{children}
|
|
64
|
+
</PressResponder>
|
|
65
|
+
<Input
|
|
66
|
+
{...domProps}
|
|
67
|
+
className=""
|
|
68
|
+
type="file"
|
|
69
|
+
ref={inputRef}
|
|
70
|
+
style={{display: 'none'}}
|
|
71
|
+
accept={acceptedFileTypes?.toString()}
|
|
72
|
+
onChange={(e) => onSelect?.(getEventTarget(e).files)}
|
|
73
|
+
capture={defaultCamera}
|
|
74
|
+
multiple={allowsMultiple}
|
|
75
|
+
// @ts-expect-error
|
|
76
|
+
webkitdirectory={acceptDirectory ? '' : undefined} />
|
|
77
|
+
</>
|
|
78
|
+
);
|
|
79
|
+
});
|