@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/ListBox.tsx
ADDED
|
@@ -0,0 +1,577 @@
|
|
|
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 {AriaListBoxOptions, AriaListBoxProps, DraggableItemResult, DragPreviewRenderer, DroppableCollectionResult, DroppableItemResult, FocusScope, ListKeyboardDelegate, mergeProps, useCollator, useFocus, useFocusRing, useHover, useKeyboard, useListBox, useListBoxSection, useLocale, useOption} from 'react-aria';
|
|
14
|
+
import {
|
|
15
|
+
ClassNameOrFunction,
|
|
16
|
+
ContextValue,
|
|
17
|
+
DEFAULT_SLOT,
|
|
18
|
+
dom,
|
|
19
|
+
DOMRenderProps,
|
|
20
|
+
PossibleLinkDOMRenderProps,
|
|
21
|
+
Provider,
|
|
22
|
+
RenderProps,
|
|
23
|
+
SlotProps,
|
|
24
|
+
StyleProps,
|
|
25
|
+
StyleRenderProps,
|
|
26
|
+
useContextProps,
|
|
27
|
+
useRenderProps,
|
|
28
|
+
useSlot
|
|
29
|
+
} from './utils';
|
|
30
|
+
import {Collection, CollectionBuilder, createBranchComponent, createLeafComponent, ItemNode, LoaderNode, SectionNode} from '@react-aria/collections';
|
|
31
|
+
import {CollectionProps, CollectionRendererContext, ItemRenderProps, SectionContext, SectionProps} from './Collection';
|
|
32
|
+
import {DragAndDropContext, DropIndicatorContext, DropIndicatorProps, useDndPersistedKeys, useRenderDropIndicator} from './DragAndDrop';
|
|
33
|
+
import {DragAndDropHooks} from './useDragAndDrop';
|
|
34
|
+
import {DraggableCollectionState, DroppableCollectionState, ListState, Node, Orientation, SelectionBehavior, UNSTABLE_useFilteredListState, useListState} from 'react-stately';
|
|
35
|
+
import {filterDOMProps, inertValue, LoadMoreSentinelProps, useLoadMoreSentinel, useObjectRef} from '@react-aria/utils';
|
|
36
|
+
import {FocusEvents, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, KeyboardEvents, LinkDOMProps, PressEvents, RefObject} from '@react-types/shared';
|
|
37
|
+
import {HeaderContext} from './Header';
|
|
38
|
+
import React, {createContext, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useEffect, useMemo, useRef} from 'react';
|
|
39
|
+
import {SelectableCollectionContext, SelectableCollectionContextValue} from './RSPContexts';
|
|
40
|
+
import {SelectionIndicatorContext} from './SelectionIndicator';
|
|
41
|
+
import {SeparatorContext} from './Separator';
|
|
42
|
+
import {SharedElementTransition} from './SharedElementTransition';
|
|
43
|
+
import {TextContext} from './Text';
|
|
44
|
+
|
|
45
|
+
export interface ListBoxRenderProps {
|
|
46
|
+
/**
|
|
47
|
+
* Whether the listbox has no items and should display its empty state.
|
|
48
|
+
* @selector [data-empty]
|
|
49
|
+
*/
|
|
50
|
+
isEmpty: boolean,
|
|
51
|
+
/**
|
|
52
|
+
* Whether the listbox is currently focused.
|
|
53
|
+
* @selector [data-focused]
|
|
54
|
+
*/
|
|
55
|
+
isFocused: boolean,
|
|
56
|
+
/**
|
|
57
|
+
* Whether the listbox is currently keyboard focused.
|
|
58
|
+
* @selector [data-focus-visible]
|
|
59
|
+
*/
|
|
60
|
+
isFocusVisible: boolean,
|
|
61
|
+
/**
|
|
62
|
+
* Whether the listbox is currently the active drop target.
|
|
63
|
+
* @selector [data-drop-target]
|
|
64
|
+
*/
|
|
65
|
+
isDropTarget: boolean,
|
|
66
|
+
/**
|
|
67
|
+
* Whether the items are arranged in a stack or grid.
|
|
68
|
+
* @selector [data-layout="stack | grid"]
|
|
69
|
+
*/
|
|
70
|
+
layout: 'stack' | 'grid',
|
|
71
|
+
/**
|
|
72
|
+
* State of the listbox.
|
|
73
|
+
*/
|
|
74
|
+
state: ListState<unknown>
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface ListBoxProps<T> extends Omit<AriaListBoxProps<T>, 'children' | 'label'>, CollectionProps<T>, StyleRenderProps<ListBoxRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
78
|
+
/**
|
|
79
|
+
* 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.
|
|
80
|
+
* @default 'react-aria-ListBox'
|
|
81
|
+
*/
|
|
82
|
+
className?: ClassNameOrFunction<ListBoxRenderProps>,
|
|
83
|
+
/**
|
|
84
|
+
* How multiple selection should behave in the collection.
|
|
85
|
+
* @default "toggle"
|
|
86
|
+
*/
|
|
87
|
+
selectionBehavior?: SelectionBehavior,
|
|
88
|
+
/** The drag and drop hooks returned by `useDragAndDrop` used to enable drag and drop behavior for the ListBox. */
|
|
89
|
+
dragAndDropHooks?: DragAndDropHooks<NoInfer<T>>,
|
|
90
|
+
/** Provides content to display when there are no items in the list. */
|
|
91
|
+
renderEmptyState?: (props: ListBoxRenderProps) => ReactNode,
|
|
92
|
+
/**
|
|
93
|
+
* Whether the items are arranged in a stack or grid.
|
|
94
|
+
* @default 'stack'
|
|
95
|
+
*/
|
|
96
|
+
layout?: 'stack' | 'grid',
|
|
97
|
+
/**
|
|
98
|
+
* The primary orientation of the items. Usually this is the
|
|
99
|
+
* direction that the collection scrolls.
|
|
100
|
+
* @default 'vertical'
|
|
101
|
+
*/
|
|
102
|
+
orientation?: Orientation
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const ListBoxContext = createContext<ContextValue<ListBoxProps<any>, HTMLDivElement>>(null);
|
|
106
|
+
export const ListStateContext = createContext<ListState<any> | null>(null);
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* A listbox displays a list of options and allows a user to select one or more of them.
|
|
110
|
+
*/
|
|
111
|
+
export const ListBox = /*#__PURE__*/ (forwardRef as forwardRefType)(function ListBox<T extends object>(props: ListBoxProps<T>, ref: ForwardedRef<HTMLDivElement>) {
|
|
112
|
+
[props, ref] = useContextProps(props, ref, ListBoxContext);
|
|
113
|
+
let state = useContext(ListStateContext);
|
|
114
|
+
|
|
115
|
+
// The structure of ListBox is a bit strange because it needs to work inside other components like ComboBox and Select.
|
|
116
|
+
// Those components render two copies of their children so that the collection can be built even when the popover is closed.
|
|
117
|
+
// The first copy sends a collection document via context which we render the collection portal into.
|
|
118
|
+
// The second copy sends a ListState object via context which we use to render the ListBox without rebuilding the state.
|
|
119
|
+
// Otherwise, we have a standalone ListBox, so we need to create a collection and state ourselves.
|
|
120
|
+
if (state) {
|
|
121
|
+
return <ListBoxInner state={state} props={props} listBoxRef={ref} />;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<CollectionBuilder content={<Collection {...props} />}>
|
|
126
|
+
{collection => <StandaloneListBox props={props} listBoxRef={ref} collection={collection} />}
|
|
127
|
+
</CollectionBuilder>
|
|
128
|
+
);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
function StandaloneListBox({props, listBoxRef, collection}) {
|
|
132
|
+
props = {...props, collection, children: null, items: null};
|
|
133
|
+
let {layoutDelegate} = useContext(CollectionRendererContext);
|
|
134
|
+
let state = useListState({...props, layoutDelegate});
|
|
135
|
+
return <ListBoxInner state={state} props={props} listBoxRef={listBoxRef} />;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
interface ListBoxInnerProps<T> {
|
|
139
|
+
state: ListState<T>,
|
|
140
|
+
props: ListBoxProps<T> & AriaListBoxOptions<T> & {filter?: SelectableCollectionContextValue<T>['filter']},
|
|
141
|
+
listBoxRef: RefObject<HTMLElement | null>
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function ListBoxInner<T extends object>({state: inputState, props, listBoxRef}: ListBoxInnerProps<T>) {
|
|
145
|
+
[props, listBoxRef] = useContextProps(props, listBoxRef, SelectableCollectionContext);
|
|
146
|
+
let {dragAndDropHooks, layout = 'stack', orientation = 'vertical', filter} = props;
|
|
147
|
+
let state = UNSTABLE_useFilteredListState(inputState, filter);
|
|
148
|
+
let {collection, selectionManager} = state;
|
|
149
|
+
let isListDraggable = !!dragAndDropHooks?.useDraggableCollectionState;
|
|
150
|
+
let isListDroppable = !!dragAndDropHooks?.useDroppableCollectionState;
|
|
151
|
+
let {direction} = useLocale();
|
|
152
|
+
let {disabledBehavior, disabledKeys} = selectionManager;
|
|
153
|
+
let collator = useCollator({usage: 'search', sensitivity: 'base'});
|
|
154
|
+
let {isVirtualized, layoutDelegate, dropTargetDelegate: ctxDropTargetDelegate, CollectionRoot} = useContext(CollectionRendererContext);
|
|
155
|
+
let keyboardDelegate = useMemo(() => (
|
|
156
|
+
props.keyboardDelegate || new ListKeyboardDelegate({
|
|
157
|
+
collection,
|
|
158
|
+
collator,
|
|
159
|
+
ref: listBoxRef,
|
|
160
|
+
disabledKeys,
|
|
161
|
+
disabledBehavior,
|
|
162
|
+
layout,
|
|
163
|
+
orientation,
|
|
164
|
+
direction,
|
|
165
|
+
layoutDelegate
|
|
166
|
+
})
|
|
167
|
+
), [collection, collator, listBoxRef, disabledBehavior, disabledKeys, orientation, direction, props.keyboardDelegate, layout, layoutDelegate]);
|
|
168
|
+
|
|
169
|
+
let {listBoxProps} = useListBox({
|
|
170
|
+
...props,
|
|
171
|
+
shouldSelectOnPressUp: isListDraggable || props.shouldSelectOnPressUp,
|
|
172
|
+
keyboardDelegate,
|
|
173
|
+
isVirtualized
|
|
174
|
+
}, state, listBoxRef);
|
|
175
|
+
|
|
176
|
+
let dragHooksProvided = useRef(isListDraggable);
|
|
177
|
+
let dropHooksProvided = useRef(isListDroppable);
|
|
178
|
+
useEffect(() => {
|
|
179
|
+
if (process.env.NODE_ENV === 'production') {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (dragHooksProvided.current !== isListDraggable) {
|
|
183
|
+
console.warn('Drag hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');
|
|
184
|
+
}
|
|
185
|
+
if (dropHooksProvided.current !== isListDroppable) {
|
|
186
|
+
console.warn('Drop hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');
|
|
187
|
+
}
|
|
188
|
+
}, [isListDraggable, isListDroppable]);
|
|
189
|
+
|
|
190
|
+
let dragState: DraggableCollectionState | undefined = undefined;
|
|
191
|
+
let dropState: DroppableCollectionState | undefined = undefined;
|
|
192
|
+
let droppableCollection: DroppableCollectionResult | undefined = undefined;
|
|
193
|
+
let isRootDropTarget = false;
|
|
194
|
+
let dragPreview: JSX.Element | null = null;
|
|
195
|
+
let preview = useRef<DragPreviewRenderer>(null);
|
|
196
|
+
|
|
197
|
+
if (isListDraggable && dragAndDropHooks) {
|
|
198
|
+
dragState = dragAndDropHooks.useDraggableCollectionState!({
|
|
199
|
+
collection,
|
|
200
|
+
selectionManager,
|
|
201
|
+
preview: dragAndDropHooks.renderDragPreview ? preview : undefined
|
|
202
|
+
});
|
|
203
|
+
dragAndDropHooks.useDraggableCollection!({}, dragState, listBoxRef);
|
|
204
|
+
|
|
205
|
+
let DragPreview = dragAndDropHooks.DragPreview!;
|
|
206
|
+
dragPreview = dragAndDropHooks.renderDragPreview
|
|
207
|
+
? <DragPreview ref={preview}>{dragAndDropHooks.renderDragPreview}</DragPreview>
|
|
208
|
+
: null;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (isListDroppable && dragAndDropHooks) {
|
|
212
|
+
dropState = dragAndDropHooks.useDroppableCollectionState!({
|
|
213
|
+
collection,
|
|
214
|
+
selectionManager
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
let dropTargetDelegate = dragAndDropHooks.dropTargetDelegate || ctxDropTargetDelegate || new dragAndDropHooks.ListDropTargetDelegate(collection, listBoxRef, {orientation, layout, direction});
|
|
218
|
+
droppableCollection = dragAndDropHooks.useDroppableCollection!({
|
|
219
|
+
keyboardDelegate,
|
|
220
|
+
dropTargetDelegate
|
|
221
|
+
}, dropState, listBoxRef);
|
|
222
|
+
|
|
223
|
+
isRootDropTarget = dropState.isDropTarget({type: 'root'});
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
let {focusProps, isFocused, isFocusVisible} = useFocusRing();
|
|
227
|
+
let isEmpty = state.collection.size === 0;
|
|
228
|
+
let renderValues = {
|
|
229
|
+
isDropTarget: isRootDropTarget,
|
|
230
|
+
isEmpty,
|
|
231
|
+
isFocused,
|
|
232
|
+
isFocusVisible,
|
|
233
|
+
layout: props.layout || 'stack',
|
|
234
|
+
state
|
|
235
|
+
};
|
|
236
|
+
let renderProps = useRenderProps({
|
|
237
|
+
...props,
|
|
238
|
+
children: undefined,
|
|
239
|
+
defaultClassName: 'react-aria-ListBox',
|
|
240
|
+
values: renderValues
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
let emptyState: JSX.Element | null = null;
|
|
244
|
+
if (isEmpty && props.renderEmptyState) {
|
|
245
|
+
emptyState = (
|
|
246
|
+
<div
|
|
247
|
+
// eslint-disable-next-line
|
|
248
|
+
role="option"
|
|
249
|
+
style={{display: 'contents'}}>
|
|
250
|
+
{props.renderEmptyState(renderValues)}
|
|
251
|
+
</div>
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
let DOMProps = filterDOMProps(props, {global: true});
|
|
256
|
+
|
|
257
|
+
return (
|
|
258
|
+
<FocusScope>
|
|
259
|
+
<dom.div
|
|
260
|
+
{...mergeProps(DOMProps, renderProps, listBoxProps, focusProps, droppableCollection?.collectionProps)}
|
|
261
|
+
ref={listBoxRef as RefObject<HTMLDivElement>}
|
|
262
|
+
slot={props.slot || undefined}
|
|
263
|
+
onScroll={props.onScroll}
|
|
264
|
+
data-drop-target={isRootDropTarget || undefined}
|
|
265
|
+
data-empty={isEmpty || undefined}
|
|
266
|
+
data-focused={isFocused || undefined}
|
|
267
|
+
data-focus-visible={isFocusVisible || undefined}
|
|
268
|
+
data-layout={props.layout || 'stack'}
|
|
269
|
+
data-orientation={props.orientation || 'vertical'}>
|
|
270
|
+
<Provider
|
|
271
|
+
values={[
|
|
272
|
+
[ListBoxContext, props],
|
|
273
|
+
[ListStateContext, state],
|
|
274
|
+
[DragAndDropContext, {dragAndDropHooks, dragState, dropState}],
|
|
275
|
+
[SeparatorContext, {elementType: 'div'}],
|
|
276
|
+
[DropIndicatorContext, {render: ListBoxDropIndicatorWrapper}],
|
|
277
|
+
[SectionContext, {name: 'ListBoxSection', render: ListBoxSectionInner}]
|
|
278
|
+
]}>
|
|
279
|
+
<SharedElementTransition>
|
|
280
|
+
<CollectionRoot
|
|
281
|
+
collection={collection}
|
|
282
|
+
scrollRef={listBoxRef}
|
|
283
|
+
persistedKeys={useDndPersistedKeys(selectionManager, dragAndDropHooks, dropState)}
|
|
284
|
+
renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)} />
|
|
285
|
+
</SharedElementTransition>
|
|
286
|
+
</Provider>
|
|
287
|
+
{emptyState}
|
|
288
|
+
{dragPreview}
|
|
289
|
+
</dom.div>
|
|
290
|
+
</FocusScope>
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export interface ListBoxSectionProps<T> extends SectionProps<T>, DOMRenderProps<'section', undefined> {
|
|
295
|
+
/**
|
|
296
|
+
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
|
|
297
|
+
* @default 'react-aria-ListBoxSection'
|
|
298
|
+
*/
|
|
299
|
+
className?: string
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
function ListBoxSectionInner<T extends object>(props: ListBoxSectionProps<T>, ref: ForwardedRef<HTMLElement>, section: Node<T>, className = 'react-aria-ListBoxSection') {
|
|
303
|
+
let state = useContext(ListStateContext)!;
|
|
304
|
+
let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;
|
|
305
|
+
let {CollectionBranch} = useContext(CollectionRendererContext);
|
|
306
|
+
let [headingRef, heading] = useSlot();
|
|
307
|
+
let {headingProps, groupProps} = useListBoxSection({
|
|
308
|
+
heading,
|
|
309
|
+
'aria-label': props['aria-label'] ?? undefined
|
|
310
|
+
});
|
|
311
|
+
let renderProps = useRenderProps({
|
|
312
|
+
...props,
|
|
313
|
+
id: undefined,
|
|
314
|
+
children: undefined,
|
|
315
|
+
defaultClassName: className,
|
|
316
|
+
values: undefined
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
let DOMProps = filterDOMProps(props as any, {global: true});
|
|
320
|
+
delete DOMProps.id;
|
|
321
|
+
|
|
322
|
+
return (
|
|
323
|
+
<dom.section
|
|
324
|
+
{...mergeProps(DOMProps, renderProps, groupProps)}
|
|
325
|
+
ref={ref}>
|
|
326
|
+
<HeaderContext.Provider value={{...headingProps, ref: headingRef}}>
|
|
327
|
+
<CollectionBranch
|
|
328
|
+
collection={state.collection}
|
|
329
|
+
parent={section}
|
|
330
|
+
renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)} />
|
|
331
|
+
</HeaderContext.Provider>
|
|
332
|
+
</dom.section>
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* A ListBoxSection represents a section within a ListBox.
|
|
338
|
+
*/
|
|
339
|
+
export const ListBoxSection = /*#__PURE__*/ createBranchComponent(SectionNode, ListBoxSectionInner);
|
|
340
|
+
|
|
341
|
+
export interface ListBoxItemRenderProps extends ItemRenderProps {}
|
|
342
|
+
|
|
343
|
+
export interface ListBoxItemProps<T = object> extends Omit<RenderProps<ListBoxItemRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', ListBoxItemRenderProps>, LinkDOMProps, HoverEvents, PressEvents, KeyboardEvents, FocusEvents<HTMLDivElement>, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
|
|
344
|
+
/**
|
|
345
|
+
* 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.
|
|
346
|
+
* @default 'react-aria-ListBoxItem'
|
|
347
|
+
*/
|
|
348
|
+
className?: ClassNameOrFunction<ListBoxItemRenderProps>,
|
|
349
|
+
/** The unique id of the item. */
|
|
350
|
+
id?: Key,
|
|
351
|
+
/** The object value that this item represents. When using dynamic collections, this is set automatically. */
|
|
352
|
+
value?: T,
|
|
353
|
+
/** A string representation of the item's contents, used for features like typeahead. */
|
|
354
|
+
textValue?: string,
|
|
355
|
+
/** An accessibility label for this item. */
|
|
356
|
+
'aria-label'?: string,
|
|
357
|
+
/** Whether the item is disabled. */
|
|
358
|
+
isDisabled?: boolean,
|
|
359
|
+
/**
|
|
360
|
+
* Handler that is called when a user performs an action on the item. The exact user event depends on
|
|
361
|
+
* the collection's `selectionBehavior` prop and the interaction modality.
|
|
362
|
+
*/
|
|
363
|
+
onAction?: () => void
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* A ListBoxItem represents an individual option in a ListBox.
|
|
368
|
+
*/
|
|
369
|
+
export const ListBoxItem = /*#__PURE__*/ createLeafComponent(ItemNode, function ListBoxItem<T extends object>(props: ListBoxItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {
|
|
370
|
+
let ref = useObjectRef<any>(forwardedRef);
|
|
371
|
+
let state = useContext(ListStateContext)!;
|
|
372
|
+
let {dragAndDropHooks, dragState, dropState} = useContext(DragAndDropContext)!;
|
|
373
|
+
let {optionProps, labelProps, descriptionProps, ...states} = useOption(
|
|
374
|
+
{key: item.key, 'aria-label': props?.['aria-label']},
|
|
375
|
+
state,
|
|
376
|
+
ref
|
|
377
|
+
);
|
|
378
|
+
|
|
379
|
+
let {hoverProps, isHovered} = useHover({
|
|
380
|
+
isDisabled: !states.allowsSelection && !states.hasAction,
|
|
381
|
+
onHoverStart: item.props.onHoverStart,
|
|
382
|
+
onHoverChange: item.props.onHoverChange,
|
|
383
|
+
onHoverEnd: item.props.onHoverEnd
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
let {keyboardProps} = useKeyboard(props);
|
|
387
|
+
let {focusProps} = useFocus(props);
|
|
388
|
+
|
|
389
|
+
let draggableItem: DraggableItemResult | null = null;
|
|
390
|
+
if (dragState && dragAndDropHooks) {
|
|
391
|
+
draggableItem = dragAndDropHooks.useDraggableItem!({key: item.key, hasAction: states.hasAction}, dragState);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
let droppableItem: DroppableItemResult | null = null;
|
|
395
|
+
if (dropState && dragAndDropHooks) {
|
|
396
|
+
droppableItem = dragAndDropHooks.useDroppableItem!({
|
|
397
|
+
target: {type: 'item', key: item.key, dropPosition: 'on'}
|
|
398
|
+
}, dropState, ref);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
let isDragging = dragState && dragState.isDragging(item.key);
|
|
402
|
+
let renderProps = useRenderProps<ListBoxItemRenderProps, any>({
|
|
403
|
+
...props,
|
|
404
|
+
id: undefined,
|
|
405
|
+
children: props.children,
|
|
406
|
+
defaultClassName: 'react-aria-ListBoxItem',
|
|
407
|
+
values: {
|
|
408
|
+
...states,
|
|
409
|
+
isHovered,
|
|
410
|
+
selectionMode: state.selectionManager.selectionMode,
|
|
411
|
+
selectionBehavior: state.selectionManager.selectionBehavior,
|
|
412
|
+
allowsDragging: !!dragState,
|
|
413
|
+
isDragging,
|
|
414
|
+
isDropTarget: droppableItem?.isDropTarget
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
|
|
418
|
+
useEffect(() => {
|
|
419
|
+
if (!item.textValue && process.env.NODE_ENV !== 'production') {
|
|
420
|
+
console.warn('A `textValue` prop is required for <ListBoxItem> elements with non-plain text children in order to support accessibility features such as type to select.');
|
|
421
|
+
}
|
|
422
|
+
}, [item.textValue]);
|
|
423
|
+
|
|
424
|
+
let ElementType = props.href ? dom.a : dom.div;
|
|
425
|
+
let DOMProps = filterDOMProps(props as any, {global: true});
|
|
426
|
+
delete DOMProps.id;
|
|
427
|
+
delete DOMProps.onClick;
|
|
428
|
+
|
|
429
|
+
if (props.href && optionProps.tabIndex == null) {
|
|
430
|
+
optionProps.tabIndex = -1;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
return (
|
|
434
|
+
<ElementType
|
|
435
|
+
{...mergeProps(DOMProps, renderProps, optionProps, hoverProps, keyboardProps, focusProps, draggableItem?.dragProps, droppableItem?.dropProps)}
|
|
436
|
+
ref={ref}
|
|
437
|
+
data-allows-dragging={!!dragState || undefined}
|
|
438
|
+
data-selected={states.isSelected || undefined}
|
|
439
|
+
data-disabled={states.isDisabled || undefined}
|
|
440
|
+
data-hovered={isHovered || undefined}
|
|
441
|
+
data-focused={states.isFocused || undefined}
|
|
442
|
+
data-focus-visible={states.isFocusVisible || undefined}
|
|
443
|
+
data-pressed={states.isPressed || undefined}
|
|
444
|
+
data-dragging={isDragging || undefined}
|
|
445
|
+
data-drop-target={droppableItem?.isDropTarget || undefined}
|
|
446
|
+
data-selection-mode={state.selectionManager.selectionMode === 'none' ? undefined : state.selectionManager.selectionMode}>
|
|
447
|
+
<Provider
|
|
448
|
+
values={[
|
|
449
|
+
[TextContext, {
|
|
450
|
+
slots: {
|
|
451
|
+
[DEFAULT_SLOT]: labelProps,
|
|
452
|
+
label: labelProps,
|
|
453
|
+
description: descriptionProps
|
|
454
|
+
}
|
|
455
|
+
}],
|
|
456
|
+
[SelectionIndicatorContext, {isSelected: states.isSelected}]
|
|
457
|
+
]}>
|
|
458
|
+
{renderProps.children}
|
|
459
|
+
</Provider>
|
|
460
|
+
</ElementType>
|
|
461
|
+
);
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
function ListBoxDropIndicatorWrapper(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>) {
|
|
465
|
+
ref = useObjectRef(ref);
|
|
466
|
+
let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;
|
|
467
|
+
let {dropIndicatorProps, isHidden, isDropTarget} = dragAndDropHooks!.useDropIndicator!(
|
|
468
|
+
props,
|
|
469
|
+
dropState!,
|
|
470
|
+
ref
|
|
471
|
+
);
|
|
472
|
+
|
|
473
|
+
if (isHidden) {
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
return (
|
|
478
|
+
<ListBoxDropIndicatorForwardRef {...props} dropIndicatorProps={dropIndicatorProps} isDropTarget={isDropTarget} ref={ref} />
|
|
479
|
+
);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
interface ListBoxDropIndicatorProps extends DropIndicatorProps {
|
|
483
|
+
dropIndicatorProps: React.HTMLAttributes<HTMLElement>,
|
|
484
|
+
isDropTarget: boolean
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
function ListBoxDropIndicator(props: ListBoxDropIndicatorProps, ref: ForwardedRef<HTMLElement>) {
|
|
488
|
+
let {
|
|
489
|
+
dropIndicatorProps,
|
|
490
|
+
isDropTarget,
|
|
491
|
+
...otherProps
|
|
492
|
+
} = props;
|
|
493
|
+
|
|
494
|
+
let renderProps = useRenderProps({
|
|
495
|
+
...otherProps,
|
|
496
|
+
defaultClassName: 'react-aria-DropIndicator',
|
|
497
|
+
values: {
|
|
498
|
+
isDropTarget
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
|
|
502
|
+
return (
|
|
503
|
+
<dom.div
|
|
504
|
+
{...dropIndicatorProps}
|
|
505
|
+
{...renderProps}
|
|
506
|
+
role="option"
|
|
507
|
+
ref={ref as RefObject<HTMLDivElement | null>}
|
|
508
|
+
data-drop-target={isDropTarget || undefined} />
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
const ListBoxDropIndicatorForwardRef = forwardRef(ListBoxDropIndicator);
|
|
513
|
+
|
|
514
|
+
export interface ListBoxLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {
|
|
515
|
+
/**
|
|
516
|
+
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
|
|
517
|
+
* @default 'react-aria-ListBoxLoadMoreItem'
|
|
518
|
+
*/
|
|
519
|
+
className?: string,
|
|
520
|
+
/**
|
|
521
|
+
* The load more spinner to render when loading additional items.
|
|
522
|
+
*/
|
|
523
|
+
children?: ReactNode,
|
|
524
|
+
/**
|
|
525
|
+
* Whether or not the loading spinner should be rendered or not.
|
|
526
|
+
*/
|
|
527
|
+
isLoading?: boolean
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
export const ListBoxLoadMoreItem = createLeafComponent(LoaderNode, function ListBoxLoadingIndicator(props: ListBoxLoadMoreItemProps, ref: ForwardedRef<HTMLDivElement>, item: Node<object>) {
|
|
531
|
+
let state = useContext(ListStateContext)!;
|
|
532
|
+
let {isLoading, onLoadMore, scrollOffset, ...otherProps} = props;
|
|
533
|
+
|
|
534
|
+
let sentinelRef = useRef<HTMLDivElement>(null);
|
|
535
|
+
let memoedLoadMoreProps = useMemo(() => ({
|
|
536
|
+
onLoadMore,
|
|
537
|
+
collection: state?.collection,
|
|
538
|
+
sentinelRef,
|
|
539
|
+
scrollOffset
|
|
540
|
+
}), [onLoadMore, scrollOffset, state?.collection]);
|
|
541
|
+
useLoadMoreSentinel(memoedLoadMoreProps, sentinelRef);
|
|
542
|
+
let renderProps = useRenderProps({
|
|
543
|
+
...otherProps,
|
|
544
|
+
id: undefined,
|
|
545
|
+
children: item.rendered,
|
|
546
|
+
defaultClassName: 'react-aria-ListBoxLoadingIndicator',
|
|
547
|
+
values: undefined
|
|
548
|
+
});
|
|
549
|
+
|
|
550
|
+
let optionProps = {
|
|
551
|
+
// For Android talkback
|
|
552
|
+
tabIndex: -1
|
|
553
|
+
// For now don't include aria-posinset and aria-setsize on loader since they aren't keyboard focusable
|
|
554
|
+
// Arguably shouldn't include them ever since it might be confusing to the user to include the loaders as part of the
|
|
555
|
+
// item count
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
return (
|
|
559
|
+
<>
|
|
560
|
+
{/* Alway render the sentinel. For now onus is on the user for styling when using flex + gap (this would introduce a gap even though it doesn't take room) */}
|
|
561
|
+
{/* @ts-ignore - compatibility with React < 19 */}
|
|
562
|
+
<div style={{position: 'relative', width: 0, height: 0}} inert={inertValue(true)} >
|
|
563
|
+
<div data-testid="loadMoreSentinel" ref={sentinelRef} style={{position: 'absolute', height: 1, width: 1}} />
|
|
564
|
+
</div>
|
|
565
|
+
{isLoading && renderProps.children && (
|
|
566
|
+
<dom.div
|
|
567
|
+
{...mergeProps(filterDOMProps(props, {global: true}), optionProps)}
|
|
568
|
+
{...renderProps}
|
|
569
|
+
// aria-selected isn't needed here since this option is not selectable.
|
|
570
|
+
role="option"
|
|
571
|
+
ref={ref as ForwardedRef<HTMLDivElement>}>
|
|
572
|
+
{renderProps.children}
|
|
573
|
+
</dom.div>
|
|
574
|
+
)}
|
|
575
|
+
</>
|
|
576
|
+
);
|
|
577
|
+
});
|