@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,28 @@
|
|
|
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 {TableLayout as BaseTableLayout, TableLayoutProps} from '@react-stately/layout';
|
|
14
|
+
import {LayoutOptionsDelegate} from './Virtualizer';
|
|
15
|
+
import {TableColumnResizeStateContext} from './Table';
|
|
16
|
+
import {useContext, useMemo} from 'react';
|
|
17
|
+
|
|
18
|
+
export class TableLayout<T, O extends TableLayoutProps = TableLayoutProps> extends BaseTableLayout<T, O> implements LayoutOptionsDelegate<TableLayoutProps> {
|
|
19
|
+
// Invalidate the layout whenever the column widths change.
|
|
20
|
+
useLayoutOptions(): TableLayoutProps {
|
|
21
|
+
// This is not a React class component, just a regular class.
|
|
22
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
23
|
+
let colResizeState = useContext(TableColumnResizeStateContext);
|
|
24
|
+
return useMemo(() => ({
|
|
25
|
+
columnWidths: colResizeState?.columnWidths
|
|
26
|
+
}), [colResizeState?.columnWidths]);
|
|
27
|
+
}
|
|
28
|
+
}
|
package/src/Tabs.tsx
ADDED
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {AriaLabelingProps, FocusEvents, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, PressEvents, RefObject} from '@react-types/shared';
|
|
14
|
+
import {AriaTabListProps, AriaTabPanelProps, mergeProps, Orientation, useFocusRing, useHover, useTab, useTabList, useTabPanel} from 'react-aria';
|
|
15
|
+
import {ClassNameOrFunction, ContextValue, dom, DOMRenderProps, PossibleLinkDOMRenderProps, Provider, RenderProps, SlotProps, StyleProps, StyleRenderProps, useContextProps, useRenderProps, useSlottedContext} from './utils';
|
|
16
|
+
import {Collection, CollectionBuilder, CollectionNode, createHideableComponent, createLeafComponent} from '@react-aria/collections';
|
|
17
|
+
import {CollectionProps, CollectionRendererContext, DefaultCollectionRenderer, usePersistedKeys} from './Collection';
|
|
18
|
+
import {filterDOMProps, inertValue, useEnterAnimation, useExitAnimation, useLayoutEffect, useObjectRef} from '@react-aria/utils';
|
|
19
|
+
import {Collection as ICollection, Node, TabListState, useTabListState} from 'react-stately';
|
|
20
|
+
import React, {createContext, ForwardedRef, forwardRef, JSX, useContext, useMemo, useRef, useState} from 'react';
|
|
21
|
+
import {SelectionIndicatorContext} from './SelectionIndicator';
|
|
22
|
+
import {SharedElementTransition} from './SharedElementTransition';
|
|
23
|
+
|
|
24
|
+
export interface TabsProps extends Omit<AriaTabListProps<any>, 'items' | 'children'>, RenderProps<TabsRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
|
|
25
|
+
/**
|
|
26
|
+
* 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.
|
|
27
|
+
* @default 'react-aria-Tabs'
|
|
28
|
+
*/
|
|
29
|
+
className?: ClassNameOrFunction<TabsRenderProps>
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface TabsRenderProps {
|
|
33
|
+
/**
|
|
34
|
+
* The orientation of the tabs.
|
|
35
|
+
* @selector [data-orientation="horizontal | vertical"]
|
|
36
|
+
*/
|
|
37
|
+
orientation: Orientation
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface TabListProps<T> extends StyleRenderProps<TabListRenderProps>, AriaLabelingProps, Omit<CollectionProps<T>, 'disabledKeys'>, GlobalDOMAttributes<HTMLDivElement> {
|
|
41
|
+
/**
|
|
42
|
+
* 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.
|
|
43
|
+
* @default 'react-aria-TabList'
|
|
44
|
+
*/
|
|
45
|
+
className?: ClassNameOrFunction<TabListRenderProps>
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface TabListRenderProps {
|
|
49
|
+
/**
|
|
50
|
+
* The orientation of the tab list.
|
|
51
|
+
* @selector [data-orientation="horizontal | vertical"]
|
|
52
|
+
*/
|
|
53
|
+
orientation: Orientation,
|
|
54
|
+
/**
|
|
55
|
+
* State of the tab list.
|
|
56
|
+
*/
|
|
57
|
+
state: TabListState<unknown>
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface TabProps extends Omit<RenderProps<TabRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', TabRenderProps>, AriaLabelingProps, LinkDOMProps, HoverEvents, FocusEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
|
|
61
|
+
/**
|
|
62
|
+
* 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.
|
|
63
|
+
* @default 'react-aria-Tab'
|
|
64
|
+
*/
|
|
65
|
+
className?: ClassNameOrFunction<TabRenderProps>,
|
|
66
|
+
/** The unique id of the tab. */
|
|
67
|
+
id?: Key,
|
|
68
|
+
/** Whether the tab is disabled. */
|
|
69
|
+
isDisabled?: boolean
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface TabRenderProps {
|
|
73
|
+
/**
|
|
74
|
+
* Whether the tab is currently hovered with a mouse.
|
|
75
|
+
* @selector [data-hovered]
|
|
76
|
+
*/
|
|
77
|
+
isHovered: boolean,
|
|
78
|
+
/**
|
|
79
|
+
* Whether the tab is currently in a pressed state.
|
|
80
|
+
* @selector [data-pressed]
|
|
81
|
+
*/
|
|
82
|
+
isPressed: boolean,
|
|
83
|
+
/**
|
|
84
|
+
* Whether the tab is currently selected.
|
|
85
|
+
* @selector [data-selected]
|
|
86
|
+
*/
|
|
87
|
+
isSelected: boolean,
|
|
88
|
+
/**
|
|
89
|
+
* Whether the tab is currently focused.
|
|
90
|
+
* @selector [data-focused]
|
|
91
|
+
*/
|
|
92
|
+
isFocused: boolean,
|
|
93
|
+
/**
|
|
94
|
+
* Whether the tab is currently keyboard focused.
|
|
95
|
+
* @selector [data-focus-visible]
|
|
96
|
+
*/
|
|
97
|
+
isFocusVisible: boolean,
|
|
98
|
+
/**
|
|
99
|
+
* Whether the tab is disabled.
|
|
100
|
+
* @selector [data-disabled]
|
|
101
|
+
*/
|
|
102
|
+
isDisabled: boolean
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface TabPanelProps extends AriaTabPanelProps, RenderProps<TabPanelRenderProps>, GlobalDOMAttributes<HTMLDivElement> {
|
|
106
|
+
/**
|
|
107
|
+
* 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.
|
|
108
|
+
* @default 'react-aria-TabPanel'
|
|
109
|
+
*/
|
|
110
|
+
className?: ClassNameOrFunction<TabPanelRenderProps>,
|
|
111
|
+
/**
|
|
112
|
+
* Whether to mount the tab panel in the DOM even when it is not currently selected.
|
|
113
|
+
* Inactive tab panels are inert and cannot be interacted with. They must be styled appropriately so this is clear to the user visually.
|
|
114
|
+
* @default false
|
|
115
|
+
*/
|
|
116
|
+
shouldForceMount?: boolean
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export interface TabPanelRenderProps {
|
|
120
|
+
/**
|
|
121
|
+
* Whether the tab panel is currently focused.
|
|
122
|
+
* @selector [data-focused]
|
|
123
|
+
*/
|
|
124
|
+
isFocused: boolean,
|
|
125
|
+
/**
|
|
126
|
+
* Whether the tab panel is currently keyboard focused.
|
|
127
|
+
* @selector [data-focus-visible]
|
|
128
|
+
*/
|
|
129
|
+
isFocusVisible: boolean,
|
|
130
|
+
/**
|
|
131
|
+
* Whether the tab panel is currently non-interactive. This occurs when the
|
|
132
|
+
* `shouldForceMount` prop is true, and the corresponding tab is not selected.
|
|
133
|
+
* @selector [data-inert]
|
|
134
|
+
*/
|
|
135
|
+
isInert: boolean,
|
|
136
|
+
/**
|
|
137
|
+
* Whether the tab panel is currently entering. Use this to apply animations.
|
|
138
|
+
* @selector [data-entering]
|
|
139
|
+
*/
|
|
140
|
+
isEntering: boolean,
|
|
141
|
+
/**
|
|
142
|
+
* Whether the tab panel is currently exiting. Use this to apply animations.
|
|
143
|
+
* @selector [data-exiting]
|
|
144
|
+
*/
|
|
145
|
+
isExiting: boolean,
|
|
146
|
+
/**
|
|
147
|
+
* State of the tab list.
|
|
148
|
+
*/
|
|
149
|
+
state: TabListState<unknown>
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export const TabsContext = createContext<ContextValue<TabsProps, HTMLDivElement>>(null);
|
|
153
|
+
export const TabListStateContext = createContext<TabListState<object> | null>(null);
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Tabs organize content into multiple sections and allow users to navigate between them.
|
|
157
|
+
*/
|
|
158
|
+
export const Tabs = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tabs(props: TabsProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
159
|
+
[props, ref] = useContextProps(props, ref, TabsContext);
|
|
160
|
+
let {children, orientation = 'horizontal'} = props;
|
|
161
|
+
children = useMemo(() => (
|
|
162
|
+
typeof children === 'function'
|
|
163
|
+
? children({orientation, defaultChildren: null})
|
|
164
|
+
: children
|
|
165
|
+
), [children, orientation]);
|
|
166
|
+
|
|
167
|
+
return (
|
|
168
|
+
<CollectionBuilder content={children}>
|
|
169
|
+
{collection => <TabsInner props={props} collection={collection} tabsRef={ref} />}
|
|
170
|
+
</CollectionBuilder>
|
|
171
|
+
);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
interface TabsInnerProps {
|
|
175
|
+
props: TabsProps,
|
|
176
|
+
collection: ICollection<Node<any>>,
|
|
177
|
+
tabsRef: RefObject<HTMLDivElement | null>
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function TabsInner({props, tabsRef: ref, collection}: TabsInnerProps) {
|
|
181
|
+
let {orientation = 'horizontal'} = props;
|
|
182
|
+
let state = useTabListState({
|
|
183
|
+
...props,
|
|
184
|
+
collection,
|
|
185
|
+
children: undefined
|
|
186
|
+
});
|
|
187
|
+
let {focusProps, isFocused, isFocusVisible} = useFocusRing({within: true});
|
|
188
|
+
let values = useMemo(() => ({
|
|
189
|
+
orientation,
|
|
190
|
+
isFocusWithin: isFocused,
|
|
191
|
+
isFocusVisible
|
|
192
|
+
}), [orientation, isFocused, isFocusVisible]);
|
|
193
|
+
let renderProps = useRenderProps({
|
|
194
|
+
...props,
|
|
195
|
+
defaultClassName: 'react-aria-Tabs',
|
|
196
|
+
values
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
let DOMProps = filterDOMProps(props, {global: true});
|
|
200
|
+
|
|
201
|
+
return (
|
|
202
|
+
<dom.div
|
|
203
|
+
{...mergeProps(DOMProps, renderProps, focusProps)}
|
|
204
|
+
ref={ref}
|
|
205
|
+
slot={props.slot || undefined}
|
|
206
|
+
data-focused={isFocused || undefined}
|
|
207
|
+
data-orientation={orientation}
|
|
208
|
+
data-focus-visible={isFocusVisible || undefined}
|
|
209
|
+
data-disabled={state.isDisabled || undefined}>
|
|
210
|
+
<Provider
|
|
211
|
+
values={[
|
|
212
|
+
[TabsContext, props],
|
|
213
|
+
[TabListStateContext, state]
|
|
214
|
+
]}>
|
|
215
|
+
{renderProps.children}
|
|
216
|
+
</Provider>
|
|
217
|
+
</dom.div>
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* A TabList is used within Tabs to group tabs that a user can switch between.
|
|
223
|
+
* The ids of the items within the <TabList> must match up with a corresponding item inside the <TabPanels>.
|
|
224
|
+
*/
|
|
225
|
+
export const TabList = /*#__PURE__*/ (forwardRef as forwardRefType)(function TabList<T extends object>(props: TabListProps<T>, ref: ForwardedRef<HTMLDivElement>): JSX.Element {
|
|
226
|
+
let state = useContext(TabListStateContext);
|
|
227
|
+
return state
|
|
228
|
+
? <TabListInner props={props} forwardedRef={ref} />
|
|
229
|
+
: <Collection {...props} />;
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
interface TabListInnerProps<T> {
|
|
233
|
+
props: TabListProps<T>,
|
|
234
|
+
forwardedRef: ForwardedRef<HTMLDivElement>
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function TabListInner<T extends object>({props, forwardedRef: ref}: TabListInnerProps<T>) {
|
|
238
|
+
let state = useContext(TabListStateContext)!;
|
|
239
|
+
let {CollectionRoot} = useContext(CollectionRendererContext);
|
|
240
|
+
let {orientation = 'horizontal', keyboardActivation = 'automatic'} = useSlottedContext(TabsContext)!;
|
|
241
|
+
let objectRef = useObjectRef(ref);
|
|
242
|
+
|
|
243
|
+
let {tabListProps} = useTabList({
|
|
244
|
+
...props,
|
|
245
|
+
orientation,
|
|
246
|
+
keyboardActivation
|
|
247
|
+
}, state, objectRef);
|
|
248
|
+
|
|
249
|
+
let renderProps = useRenderProps({
|
|
250
|
+
...props,
|
|
251
|
+
children: null,
|
|
252
|
+
defaultClassName: 'react-aria-TabList',
|
|
253
|
+
values: {
|
|
254
|
+
orientation,
|
|
255
|
+
state
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
let DOMProps = filterDOMProps(props, {global: true});
|
|
260
|
+
delete DOMProps.id;
|
|
261
|
+
|
|
262
|
+
return (
|
|
263
|
+
<dom.div
|
|
264
|
+
{...mergeProps(DOMProps, renderProps, tabListProps)}
|
|
265
|
+
ref={objectRef}
|
|
266
|
+
data-orientation={orientation || undefined}>
|
|
267
|
+
<SharedElementTransition>
|
|
268
|
+
<CollectionRoot collection={state.collection} persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)} />
|
|
269
|
+
</SharedElementTransition>
|
|
270
|
+
</dom.div>
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
class TabItemNode extends CollectionNode<unknown> {
|
|
275
|
+
static readonly type = 'item';
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* A Tab provides a title for an individual item within a TabList.
|
|
280
|
+
*/
|
|
281
|
+
export const Tab = /*#__PURE__*/ createLeafComponent(TabItemNode, (props: TabProps, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<unknown>) => {
|
|
282
|
+
let state = useContext(TabListStateContext)!;
|
|
283
|
+
let ref = useObjectRef<any>(forwardedRef);
|
|
284
|
+
let {tabProps, isSelected, isDisabled, isPressed} = useTab({key: item.key, ...props}, state, ref);
|
|
285
|
+
let {focusProps, isFocused, isFocusVisible} = useFocusRing();
|
|
286
|
+
let {hoverProps, isHovered} = useHover({
|
|
287
|
+
isDisabled,
|
|
288
|
+
onHoverStart: props.onHoverStart,
|
|
289
|
+
onHoverEnd: props.onHoverEnd,
|
|
290
|
+
onHoverChange: props.onHoverChange
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
let renderProps = useRenderProps<TabRenderProps, any>({
|
|
294
|
+
...props,
|
|
295
|
+
id: undefined,
|
|
296
|
+
children: item.rendered,
|
|
297
|
+
defaultClassName: 'react-aria-Tab',
|
|
298
|
+
values: {
|
|
299
|
+
isSelected,
|
|
300
|
+
isDisabled,
|
|
301
|
+
isFocused,
|
|
302
|
+
isFocusVisible,
|
|
303
|
+
isPressed,
|
|
304
|
+
isHovered
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
let ElementType = item.props.href ? dom.a : dom.div;
|
|
309
|
+
let DOMProps = filterDOMProps(props as any, {global: true});
|
|
310
|
+
delete DOMProps.id;
|
|
311
|
+
delete DOMProps.onClick;
|
|
312
|
+
|
|
313
|
+
return (
|
|
314
|
+
<ElementType
|
|
315
|
+
{...mergeProps(DOMProps, renderProps, tabProps, focusProps, hoverProps)}
|
|
316
|
+
ref={ref}
|
|
317
|
+
data-selected={isSelected || undefined}
|
|
318
|
+
data-disabled={isDisabled || undefined}
|
|
319
|
+
data-focused={isFocused || undefined}
|
|
320
|
+
data-focus-visible={isFocusVisible || undefined}
|
|
321
|
+
data-pressed={isPressed || undefined}
|
|
322
|
+
data-hovered={isHovered || undefined}>
|
|
323
|
+
<SelectionIndicatorContext.Provider value={{isSelected}}>
|
|
324
|
+
{renderProps.children}
|
|
325
|
+
</SelectionIndicatorContext.Provider>
|
|
326
|
+
</ElementType>
|
|
327
|
+
);
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
export interface TabPanelsProps<T> extends Omit<CollectionProps<T>, 'disabledKeys'>, StyleProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {
|
|
331
|
+
/**
|
|
332
|
+
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
|
|
333
|
+
* @default 'react-aria-TabPanels'
|
|
334
|
+
*/
|
|
335
|
+
className?: string
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Groups multiple `<TabPanel>` elements, and provides CSS variables for animated transitions.
|
|
340
|
+
*/
|
|
341
|
+
export const TabPanels = /*#__PURE__*/ createHideableComponent(function TabPanels<T extends object>(props: TabPanelsProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>) {
|
|
342
|
+
let state = useContext(TabListStateContext)!;
|
|
343
|
+
let ref = useObjectRef(forwardedRef);
|
|
344
|
+
|
|
345
|
+
let selectedKeyRef = useRef(state.selectedKey);
|
|
346
|
+
let prevSize = useRef<DOMRect | null>(null);
|
|
347
|
+
let hasTransition = useRef<boolean | null>(null);
|
|
348
|
+
useLayoutEffect(() => {
|
|
349
|
+
let el = ref.current;
|
|
350
|
+
if (!el) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (hasTransition.current == null) {
|
|
355
|
+
hasTransition.current = /width|height|all/.test(window.getComputedStyle(el).transition);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if (hasTransition.current && selectedKeyRef.current != null && selectedKeyRef.current !== state.selectedKey) {
|
|
359
|
+
// Measure auto size.
|
|
360
|
+
el.style.setProperty('--tab-panel-width', 'auto');
|
|
361
|
+
el.style.setProperty('--tab-panel-height', 'auto');
|
|
362
|
+
let {width, height} = el.getBoundingClientRect();
|
|
363
|
+
|
|
364
|
+
if (prevSize.current && (prevSize.current.width !== width || prevSize.current.height !== height)) {
|
|
365
|
+
// Revert to previous size.
|
|
366
|
+
el.style.setProperty('--tab-panel-width', prevSize.current.width + 'px');
|
|
367
|
+
el.style.setProperty('--tab-panel-height', prevSize.current.height + 'px');
|
|
368
|
+
|
|
369
|
+
// Force style re-calculation to trigger animations.
|
|
370
|
+
window.getComputedStyle(el).height;
|
|
371
|
+
|
|
372
|
+
// Animate to current pixel size.
|
|
373
|
+
el.style.setProperty('--tab-panel-width', width + 'px');
|
|
374
|
+
el.style.setProperty('--tab-panel-height', height + 'px');
|
|
375
|
+
|
|
376
|
+
// When animations complete, revert back to auto size.
|
|
377
|
+
Promise.all(el.getAnimations().map(a => a.finished))
|
|
378
|
+
.then(() => {
|
|
379
|
+
el.style.setProperty('--tab-panel-width', 'auto');
|
|
380
|
+
el.style.setProperty('--tab-panel-height', 'auto');
|
|
381
|
+
})
|
|
382
|
+
.catch(() => {});
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
selectedKeyRef.current = state.selectedKey;
|
|
387
|
+
}, [ref, state.selectedKey]);
|
|
388
|
+
|
|
389
|
+
// Store previous size before DOM updates occur.
|
|
390
|
+
// This breaks the rules of hooks because there is no effect that runs _before_ DOM updates.
|
|
391
|
+
// eslint-disable-next-line rulesdir/pure-render
|
|
392
|
+
if (state.selectedKey != null && state.selectedKey !== selectedKeyRef.current && ref.current && hasTransition.current) {
|
|
393
|
+
// eslint-disable-next-line rulesdir/pure-render
|
|
394
|
+
prevSize.current = ref.current.getBoundingClientRect();
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
let DOMProps = filterDOMProps(props, {labelable: true, global: true});
|
|
398
|
+
delete DOMProps.id;
|
|
399
|
+
|
|
400
|
+
return (
|
|
401
|
+
<dom.div
|
|
402
|
+
render={props.render}
|
|
403
|
+
{...DOMProps}
|
|
404
|
+
ref={ref}
|
|
405
|
+
style={props.style}
|
|
406
|
+
className={props.className || 'react-aria-TabPanels'}>
|
|
407
|
+
<Collection {...props} />
|
|
408
|
+
</dom.div>
|
|
409
|
+
);
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* A TabPanel provides the content for a tab.
|
|
414
|
+
*/
|
|
415
|
+
export const TabPanel = /*#__PURE__*/ createHideableComponent(function TabPanel(props: TabPanelProps, forwardedRef: ForwardedRef<HTMLDivElement>) {
|
|
416
|
+
const state = useContext(TabListStateContext)!;
|
|
417
|
+
let ref = useObjectRef<HTMLDivElement>(forwardedRef);
|
|
418
|
+
|
|
419
|
+
// Track if the tab panel was initially selected on mount (after extra render to populate the collection).
|
|
420
|
+
// In this case, we don't want to trigger animations.
|
|
421
|
+
let isSelected = state.selectedKey === props.id;
|
|
422
|
+
let [isInitiallySelected, setInitiallySelected] = useState<boolean | null>(state.selectedKey != null ? isSelected : null);
|
|
423
|
+
if (isInitiallySelected == null && state.selectedKey != null) {
|
|
424
|
+
setInitiallySelected(isSelected);
|
|
425
|
+
} else if (!isSelected && isInitiallySelected) {
|
|
426
|
+
setInitiallySelected(false);
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
let isExiting = useExitAnimation(ref, isSelected);
|
|
430
|
+
if (!isSelected && !props.shouldForceMount && !isExiting) {
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
return (
|
|
435
|
+
<TabPanelInner
|
|
436
|
+
{...props}
|
|
437
|
+
tabPanelRef={ref}
|
|
438
|
+
isInitiallySelected={isInitiallySelected || false}
|
|
439
|
+
isExiting={isExiting} />
|
|
440
|
+
);
|
|
441
|
+
});
|
|
442
|
+
|
|
443
|
+
function TabPanelInner(props: TabPanelProps & {tabPanelRef: RefObject<HTMLDivElement | null>, isInitiallySelected: boolean, isExiting: boolean}) {
|
|
444
|
+
let state = useContext(TabListStateContext)!;
|
|
445
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
446
|
+
let {id, tabPanelRef: ref, isInitiallySelected, isExiting, ...otherProps} = props;
|
|
447
|
+
let {tabPanelProps} = useTabPanel(props, state, ref);
|
|
448
|
+
let {focusProps, isFocused, isFocusVisible} = useFocusRing();
|
|
449
|
+
|
|
450
|
+
let isSelected = state.selectedKey === props.id;
|
|
451
|
+
let isEntering = useEnterAnimation(ref) && !isInitiallySelected;
|
|
452
|
+
let renderProps = useRenderProps({
|
|
453
|
+
...props,
|
|
454
|
+
defaultClassName: 'react-aria-TabPanel',
|
|
455
|
+
values: {
|
|
456
|
+
isFocused,
|
|
457
|
+
isFocusVisible,
|
|
458
|
+
// @ts-ignore - compatibility with React < 19
|
|
459
|
+
isInert: inertValue(!isSelected),
|
|
460
|
+
isEntering,
|
|
461
|
+
isExiting,
|
|
462
|
+
state
|
|
463
|
+
}
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
let DOMProps = filterDOMProps(otherProps, {global: true});
|
|
467
|
+
delete DOMProps.id;
|
|
468
|
+
|
|
469
|
+
let domProps = isSelected
|
|
470
|
+
? mergeProps(DOMProps, tabPanelProps, focusProps, renderProps)
|
|
471
|
+
: mergeProps(DOMProps, renderProps);
|
|
472
|
+
|
|
473
|
+
return (
|
|
474
|
+
<dom.div
|
|
475
|
+
{...domProps}
|
|
476
|
+
ref={ref}
|
|
477
|
+
data-focused={isFocused || undefined}
|
|
478
|
+
data-focus-visible={isFocusVisible || undefined}
|
|
479
|
+
// @ts-ignore
|
|
480
|
+
inert={inertValue(!isSelected || props.inert)}
|
|
481
|
+
data-inert={!isSelected ? 'true' : undefined}
|
|
482
|
+
data-entering={isEntering || undefined}
|
|
483
|
+
data-exiting={isExiting || undefined}>
|
|
484
|
+
<Provider
|
|
485
|
+
values={[
|
|
486
|
+
[TabsContext, null],
|
|
487
|
+
[TabListStateContext, null]
|
|
488
|
+
]}>
|
|
489
|
+
<CollectionRendererContext.Provider value={DefaultCollectionRenderer}>
|
|
490
|
+
{renderProps.children}
|
|
491
|
+
</CollectionRendererContext.Provider>
|
|
492
|
+
</Provider>
|
|
493
|
+
</dom.div>
|
|
494
|
+
);
|
|
495
|
+
}
|