react-aria-components 1.17.0 → 1.18.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/dist/exports/Autocomplete.cjs.map +1 -1
- package/dist/exports/Autocomplete.js.map +1 -1
- package/dist/exports/Autocomplete.mjs.map +1 -1
- package/dist/exports/Calendar.cjs +3 -0
- package/dist/exports/Calendar.cjs.map +1 -1
- package/dist/exports/Calendar.js +2 -2
- package/dist/exports/Calendar.js.map +1 -1
- package/dist/exports/Calendar.mjs +2 -2
- package/dist/exports/Calendar.mjs.map +1 -1
- package/dist/exports/Checkbox.cjs +8 -0
- package/dist/exports/Checkbox.cjs.map +1 -1
- package/dist/exports/Checkbox.js +6 -2
- package/dist/exports/Checkbox.js.map +1 -1
- package/dist/exports/Checkbox.mjs +6 -2
- package/dist/exports/Checkbox.mjs.map +1 -1
- package/dist/exports/CheckboxGroup.cjs.map +1 -1
- package/dist/exports/CheckboxGroup.js.map +1 -1
- package/dist/exports/CheckboxGroup.mjs.map +1 -1
- package/dist/exports/CollectionBuilder.cjs.map +1 -1
- package/dist/exports/CollectionBuilder.js.map +1 -1
- package/dist/exports/CollectionBuilder.mjs.map +1 -1
- package/dist/exports/ColorArea.cjs.map +1 -1
- package/dist/exports/ColorArea.js.map +1 -1
- package/dist/exports/ColorArea.mjs.map +1 -1
- package/dist/exports/ColorField.cjs.map +1 -1
- package/dist/exports/ColorField.js.map +1 -1
- package/dist/exports/ColorField.mjs.map +1 -1
- package/dist/exports/ColorPicker.cjs.map +1 -1
- package/dist/exports/ColorPicker.js.map +1 -1
- package/dist/exports/ColorPicker.mjs.map +1 -1
- package/dist/exports/ColorSlider.cjs.map +1 -1
- package/dist/exports/ColorSlider.js.map +1 -1
- package/dist/exports/ColorSlider.mjs.map +1 -1
- package/dist/exports/ColorSwatch.cjs.map +1 -1
- package/dist/exports/ColorSwatch.js.map +1 -1
- package/dist/exports/ColorSwatch.mjs.map +1 -1
- package/dist/exports/ColorSwatchPicker.cjs.map +1 -1
- package/dist/exports/ColorSwatchPicker.js.map +1 -1
- package/dist/exports/ColorSwatchPicker.mjs.map +1 -1
- package/dist/exports/ColorThumb.cjs.map +1 -1
- package/dist/exports/ColorThumb.js.map +1 -1
- package/dist/exports/ColorThumb.mjs.map +1 -1
- package/dist/exports/ColorWheel.cjs.map +1 -1
- package/dist/exports/ColorWheel.js.map +1 -1
- package/dist/exports/ColorWheel.mjs.map +1 -1
- package/dist/exports/ComboBox.cjs.map +1 -1
- package/dist/exports/ComboBox.js.map +1 -1
- package/dist/exports/ComboBox.mjs.map +1 -1
- package/dist/exports/DateField.cjs.map +1 -1
- package/dist/exports/DateField.js.map +1 -1
- package/dist/exports/DateField.mjs.map +1 -1
- package/dist/exports/DatePicker.cjs.map +1 -1
- package/dist/exports/DatePicker.js.map +1 -1
- package/dist/exports/DatePicker.mjs.map +1 -1
- package/dist/exports/DateRangePicker.cjs.map +1 -1
- package/dist/exports/DateRangePicker.js.map +1 -1
- package/dist/exports/DateRangePicker.mjs.map +1 -1
- package/dist/exports/Disclosure.cjs.map +1 -1
- package/dist/exports/Disclosure.js.map +1 -1
- package/dist/exports/Disclosure.mjs.map +1 -1
- package/dist/exports/DisclosureGroup.cjs.map +1 -1
- package/dist/exports/DisclosureGroup.js.map +1 -1
- package/dist/exports/DisclosureGroup.mjs.map +1 -1
- package/dist/exports/GridList.cjs.map +1 -1
- package/dist/exports/GridList.js.map +1 -1
- package/dist/exports/GridList.mjs.map +1 -1
- package/dist/exports/ListBox.cjs.map +1 -1
- package/dist/exports/ListBox.js.map +1 -1
- package/dist/exports/ListBox.mjs.map +1 -1
- package/dist/exports/Menu.cjs.map +1 -1
- package/dist/exports/Menu.js.map +1 -1
- package/dist/exports/Menu.mjs.map +1 -1
- package/dist/exports/RadioGroup.cjs +3 -0
- package/dist/exports/RadioGroup.cjs.map +1 -1
- package/dist/exports/RadioGroup.js +2 -2
- package/dist/exports/RadioGroup.js.map +1 -1
- package/dist/exports/RadioGroup.mjs +2 -2
- package/dist/exports/RadioGroup.mjs.map +1 -1
- package/dist/exports/RangeCalendar.cjs +3 -0
- package/dist/exports/RangeCalendar.cjs.map +1 -1
- package/dist/exports/RangeCalendar.js +2 -2
- package/dist/exports/RangeCalendar.js.map +1 -1
- package/dist/exports/RangeCalendar.mjs +2 -2
- package/dist/exports/RangeCalendar.mjs.map +1 -1
- package/dist/exports/Select.cjs.map +1 -1
- package/dist/exports/Select.js.map +1 -1
- package/dist/exports/Select.mjs.map +1 -1
- package/dist/exports/SharedElementTransition.cjs.map +1 -1
- package/dist/exports/SharedElementTransition.js.map +1 -1
- package/dist/exports/SharedElementTransition.mjs.map +1 -1
- package/dist/exports/Slider.cjs +2 -0
- package/dist/exports/Slider.cjs.map +1 -1
- package/dist/exports/Slider.js +2 -2
- package/dist/exports/Slider.js.map +1 -1
- package/dist/exports/Slider.mjs +2 -2
- package/dist/exports/Slider.mjs.map +1 -1
- package/dist/exports/Switch.cjs +8 -0
- package/dist/exports/Switch.cjs.map +1 -1
- package/dist/exports/Switch.js +6 -2
- package/dist/exports/Switch.js.map +1 -1
- package/dist/exports/Switch.mjs +6 -2
- package/dist/exports/Switch.mjs.map +1 -1
- package/dist/exports/Table.cjs +1 -0
- package/dist/exports/Table.cjs.map +1 -1
- package/dist/exports/Table.js +2 -2
- package/dist/exports/Table.js.map +1 -1
- package/dist/exports/Table.mjs +2 -2
- package/dist/exports/Table.mjs.map +1 -1
- package/dist/exports/Tabs.cjs.map +1 -1
- package/dist/exports/Tabs.js.map +1 -1
- package/dist/exports/Tabs.mjs.map +1 -1
- package/dist/exports/TagGroup.cjs.map +1 -1
- package/dist/exports/TagGroup.js.map +1 -1
- package/dist/exports/TagGroup.mjs.map +1 -1
- package/dist/exports/TimeField.cjs.map +1 -1
- package/dist/exports/TimeField.js.map +1 -1
- package/dist/exports/TimeField.mjs.map +1 -1
- package/dist/exports/Toast.cjs.map +1 -1
- package/dist/exports/Toast.js.map +1 -1
- package/dist/exports/Toast.mjs.map +1 -1
- package/dist/exports/ToggleButtonGroup.cjs.map +1 -1
- package/dist/exports/ToggleButtonGroup.js.map +1 -1
- package/dist/exports/ToggleButtonGroup.mjs.map +1 -1
- package/dist/exports/Tree.cjs.map +1 -1
- package/dist/exports/Tree.js.map +1 -1
- package/dist/exports/Tree.mjs.map +1 -1
- package/dist/exports/Virtualizer.cjs.map +1 -1
- package/dist/exports/Virtualizer.js.map +1 -1
- package/dist/exports/Virtualizer.mjs.map +1 -1
- package/dist/exports/index.cjs +19 -1
- package/dist/exports/index.cjs.map +1 -1
- package/dist/exports/index.js +11 -8
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/index.mjs +11 -8
- package/dist/exports/index.mjs.map +1 -1
- package/dist/exports/useAsyncList.cjs.map +1 -1
- package/dist/exports/useAsyncList.js.map +1 -1
- package/dist/exports/useAsyncList.mjs.map +1 -1
- package/dist/exports/useDragAndDrop.cjs.map +1 -1
- package/dist/exports/useDragAndDrop.js.map +1 -1
- package/dist/exports/useDragAndDrop.mjs.map +1 -1
- package/dist/exports/useDrop.cjs.map +1 -1
- package/dist/exports/useDrop.js.map +1 -1
- package/dist/exports/useDrop.mjs.map +1 -1
- package/dist/private/Autocomplete.cjs.map +1 -1
- package/dist/private/Autocomplete.js.map +1 -1
- package/dist/private/Autocomplete.mjs.map +1 -1
- package/dist/private/Breadcrumbs.cjs.map +1 -1
- package/dist/private/Breadcrumbs.js.map +1 -1
- package/dist/private/Breadcrumbs.mjs.map +1 -1
- package/dist/private/Button.cjs.map +1 -1
- package/dist/private/Button.js.map +1 -1
- package/dist/private/Button.mjs.map +1 -1
- package/dist/private/Calendar.cjs +34 -2
- package/dist/private/Calendar.cjs.map +1 -1
- package/dist/private/Calendar.js +34 -5
- package/dist/private/Calendar.js.map +1 -1
- package/dist/private/Calendar.mjs +34 -5
- package/dist/private/Calendar.mjs.map +1 -1
- package/dist/private/Checkbox.cjs +104 -17
- package/dist/private/Checkbox.cjs.map +1 -1
- package/dist/private/Checkbox.js +102 -18
- package/dist/private/Checkbox.js.map +1 -1
- package/dist/private/Checkbox.mjs +102 -18
- package/dist/private/Checkbox.mjs.map +1 -1
- package/dist/private/Collection.cjs.map +1 -1
- package/dist/private/Collection.js.map +1 -1
- package/dist/private/Collection.mjs.map +1 -1
- package/dist/private/ColorArea.cjs.map +1 -1
- package/dist/private/ColorArea.js.map +1 -1
- package/dist/private/ColorArea.mjs.map +1 -1
- package/dist/private/ColorField.cjs.map +1 -1
- package/dist/private/ColorField.js.map +1 -1
- package/dist/private/ColorField.mjs.map +1 -1
- package/dist/private/ColorPicker.cjs.map +1 -1
- package/dist/private/ColorPicker.js.map +1 -1
- package/dist/private/ColorPicker.mjs.map +1 -1
- package/dist/private/ColorSlider.cjs.map +1 -1
- package/dist/private/ColorSlider.js.map +1 -1
- package/dist/private/ColorSlider.mjs.map +1 -1
- package/dist/private/ColorSwatch.cjs.map +1 -1
- package/dist/private/ColorSwatch.js.map +1 -1
- package/dist/private/ColorSwatch.mjs.map +1 -1
- package/dist/private/ColorSwatchPicker.cjs.map +1 -1
- package/dist/private/ColorSwatchPicker.js.map +1 -1
- package/dist/private/ColorSwatchPicker.mjs.map +1 -1
- package/dist/private/ColorThumb.cjs.map +1 -1
- package/dist/private/ColorThumb.js.map +1 -1
- package/dist/private/ColorThumb.mjs.map +1 -1
- package/dist/private/ColorWheel.cjs.map +1 -1
- package/dist/private/ColorWheel.js.map +1 -1
- package/dist/private/ColorWheel.mjs.map +1 -1
- package/dist/private/ComboBox.cjs +15 -3
- package/dist/private/ComboBox.cjs.map +1 -1
- package/dist/private/ComboBox.js +16 -4
- package/dist/private/ComboBox.js.map +1 -1
- package/dist/private/ComboBox.mjs +16 -4
- package/dist/private/ComboBox.mjs.map +1 -1
- package/dist/private/DateField.cjs.map +1 -1
- package/dist/private/DateField.js.map +1 -1
- package/dist/private/DateField.mjs.map +1 -1
- package/dist/private/DatePicker.cjs +0 -26
- package/dist/private/DatePicker.cjs.map +1 -1
- package/dist/private/DatePicker.js +1 -27
- package/dist/private/DatePicker.js.map +1 -1
- package/dist/private/DatePicker.mjs +1 -27
- package/dist/private/DatePicker.mjs.map +1 -1
- package/dist/private/Dialog.cjs +1 -17
- package/dist/private/Dialog.cjs.map +1 -1
- package/dist/private/Dialog.js +2 -18
- package/dist/private/Dialog.js.map +1 -1
- package/dist/private/Dialog.mjs +2 -18
- package/dist/private/Dialog.mjs.map +1 -1
- package/dist/private/Disclosure.cjs.map +1 -1
- package/dist/private/Disclosure.js.map +1 -1
- package/dist/private/Disclosure.mjs.map +1 -1
- package/dist/private/DragAndDrop.cjs +3 -3
- package/dist/private/DragAndDrop.cjs.map +1 -1
- package/dist/private/DragAndDrop.js +3 -3
- package/dist/private/DragAndDrop.js.map +1 -1
- package/dist/private/DragAndDrop.mjs +3 -3
- package/dist/private/DragAndDrop.mjs.map +1 -1
- package/dist/private/DropZone.cjs.map +1 -1
- package/dist/private/DropZone.js.map +1 -1
- package/dist/private/DropZone.mjs.map +1 -1
- package/dist/private/FieldError.cjs.map +1 -1
- package/dist/private/FieldError.js.map +1 -1
- package/dist/private/FieldError.mjs.map +1 -1
- package/dist/private/FileTrigger.cjs.map +1 -1
- package/dist/private/FileTrigger.js.map +1 -1
- package/dist/private/FileTrigger.mjs.map +1 -1
- package/dist/private/Form.cjs.map +1 -1
- package/dist/private/Form.js.map +1 -1
- package/dist/private/Form.mjs.map +1 -1
- package/dist/private/GridLayout.cjs +37 -0
- package/dist/private/GridLayout.cjs.map +1 -0
- package/dist/private/GridLayout.js +32 -0
- package/dist/private/GridLayout.js.map +1 -0
- package/dist/private/GridLayout.mjs +32 -0
- package/dist/private/GridLayout.mjs.map +1 -0
- package/dist/private/GridList.cjs +19 -2
- package/dist/private/GridList.cjs.map +1 -1
- package/dist/private/GridList.js +20 -3
- package/dist/private/GridList.js.map +1 -1
- package/dist/private/GridList.mjs +20 -3
- package/dist/private/GridList.mjs.map +1 -1
- package/dist/private/Group.cjs.map +1 -1
- package/dist/private/Group.js.map +1 -1
- package/dist/private/Group.mjs.map +1 -1
- package/dist/private/Header.cjs.map +1 -1
- package/dist/private/Header.js.map +1 -1
- package/dist/private/Header.mjs.map +1 -1
- package/dist/private/Heading.cjs.map +1 -1
- package/dist/private/Heading.js.map +1 -1
- package/dist/private/Heading.mjs.map +1 -1
- package/dist/private/HiddenDateInput.cjs +3 -3
- package/dist/private/HiddenDateInput.cjs.map +1 -1
- package/dist/private/HiddenDateInput.js +3 -3
- package/dist/private/HiddenDateInput.js.map +1 -1
- package/dist/private/HiddenDateInput.mjs +3 -3
- package/dist/private/HiddenDateInput.mjs.map +1 -1
- package/dist/private/Input.cjs.map +1 -1
- package/dist/private/Input.js.map +1 -1
- package/dist/private/Input.mjs.map +1 -1
- package/dist/private/Keyboard.cjs.map +1 -1
- package/dist/private/Keyboard.js.map +1 -1
- package/dist/private/Keyboard.mjs.map +1 -1
- package/dist/private/Label.cjs.map +1 -1
- package/dist/private/Label.js.map +1 -1
- package/dist/private/Label.mjs.map +1 -1
- package/dist/private/Link.cjs.map +1 -1
- package/dist/private/Link.js.map +1 -1
- package/dist/private/Link.mjs.map +1 -1
- package/dist/private/ListBox.cjs +6 -5
- package/dist/private/ListBox.cjs.map +1 -1
- package/dist/private/ListBox.js +6 -5
- package/dist/private/ListBox.js.map +1 -1
- package/dist/private/ListBox.mjs +6 -5
- package/dist/private/ListBox.mjs.map +1 -1
- package/dist/private/Menu.cjs +5 -15
- package/dist/private/Menu.cjs.map +1 -1
- package/dist/private/Menu.js +6 -16
- package/dist/private/Menu.js.map +1 -1
- package/dist/private/Menu.mjs +6 -16
- package/dist/private/Menu.mjs.map +1 -1
- package/dist/private/Meter.cjs.map +1 -1
- package/dist/private/Meter.js.map +1 -1
- package/dist/private/Meter.mjs.map +1 -1
- package/dist/private/Modal.cjs.map +1 -1
- package/dist/private/Modal.js.map +1 -1
- package/dist/private/Modal.mjs.map +1 -1
- package/dist/private/NumberField.cjs.map +1 -1
- package/dist/private/NumberField.js.map +1 -1
- package/dist/private/NumberField.mjs.map +1 -1
- package/dist/private/OverlayArrow.cjs.map +1 -1
- package/dist/private/OverlayArrow.js.map +1 -1
- package/dist/private/OverlayArrow.mjs.map +1 -1
- package/dist/private/Popover.cjs +17 -1
- package/dist/private/Popover.cjs.map +1 -1
- package/dist/private/Popover.js +19 -2
- package/dist/private/Popover.js.map +1 -1
- package/dist/private/Popover.mjs +18 -2
- package/dist/private/Popover.mjs.map +1 -1
- package/dist/private/ProgressBar.cjs.map +1 -1
- package/dist/private/ProgressBar.js.map +1 -1
- package/dist/private/ProgressBar.mjs.map +1 -1
- package/dist/private/RadioGroup.cjs +87 -7
- package/dist/private/RadioGroup.cjs.map +1 -1
- package/dist/private/RadioGroup.js +86 -9
- package/dist/private/RadioGroup.js.map +1 -1
- package/dist/private/RadioGroup.mjs +86 -9
- package/dist/private/RadioGroup.mjs.map +1 -1
- package/dist/private/SearchField.cjs.map +1 -1
- package/dist/private/SearchField.js.map +1 -1
- package/dist/private/SearchField.mjs.map +1 -1
- package/dist/private/Select.cjs +1 -17
- package/dist/private/Select.cjs.map +1 -1
- package/dist/private/Select.js +2 -18
- package/dist/private/Select.js.map +1 -1
- package/dist/private/Select.mjs +2 -18
- package/dist/private/Select.mjs.map +1 -1
- package/dist/private/SelectionIndicator.cjs.map +1 -1
- package/dist/private/SelectionIndicator.js.map +1 -1
- package/dist/private/SelectionIndicator.mjs.map +1 -1
- package/dist/private/Separator.cjs.map +1 -1
- package/dist/private/Separator.js.map +1 -1
- package/dist/private/Separator.mjs.map +1 -1
- package/dist/private/SharedElementTransition.cjs.map +1 -1
- package/dist/private/SharedElementTransition.js.map +1 -1
- package/dist/private/SharedElementTransition.mjs.map +1 -1
- package/dist/private/Slider.cjs +51 -1
- package/dist/private/Slider.cjs.map +1 -1
- package/dist/private/Slider.js +50 -2
- package/dist/private/Slider.js.map +1 -1
- package/dist/private/Slider.mjs +50 -2
- package/dist/private/Slider.mjs.map +1 -1
- package/dist/private/Switch.cjs +118 -4
- package/dist/private/Switch.cjs.map +1 -1
- package/dist/private/Switch.js +119 -7
- package/dist/private/Switch.js.map +1 -1
- package/dist/private/Switch.mjs +118 -7
- package/dist/private/Switch.mjs.map +1 -1
- package/dist/private/Table.cjs +115 -24
- package/dist/private/Table.cjs.map +1 -1
- package/dist/private/Table.js +116 -26
- package/dist/private/Table.js.map +1 -1
- package/dist/private/Table.mjs +116 -26
- package/dist/private/Table.mjs.map +1 -1
- package/dist/private/TableLayout.cjs.map +1 -1
- package/dist/private/TableLayout.js.map +1 -1
- package/dist/private/TableLayout.mjs.map +1 -1
- package/dist/private/Tabs.cjs +4 -3
- package/dist/private/Tabs.cjs.map +1 -1
- package/dist/private/Tabs.js +4 -3
- package/dist/private/Tabs.js.map +1 -1
- package/dist/private/Tabs.mjs +4 -3
- package/dist/private/Tabs.mjs.map +1 -1
- package/dist/private/TagGroup.cjs.map +1 -1
- package/dist/private/TagGroup.js.map +1 -1
- package/dist/private/TagGroup.mjs.map +1 -1
- package/dist/private/Text.cjs.map +1 -1
- package/dist/private/Text.js.map +1 -1
- package/dist/private/Text.mjs.map +1 -1
- package/dist/private/TextArea.cjs.map +1 -1
- package/dist/private/TextArea.js.map +1 -1
- package/dist/private/TextArea.mjs.map +1 -1
- package/dist/private/TextField.cjs.map +1 -1
- package/dist/private/TextField.js.map +1 -1
- package/dist/private/TextField.mjs.map +1 -1
- package/dist/private/Toast.cjs +2 -1
- package/dist/private/Toast.cjs.map +1 -1
- package/dist/private/Toast.js +2 -1
- package/dist/private/Toast.js.map +1 -1
- package/dist/private/Toast.mjs +2 -1
- package/dist/private/Toast.mjs.map +1 -1
- package/dist/private/ToggleButton.cjs.map +1 -1
- package/dist/private/ToggleButton.js.map +1 -1
- package/dist/private/ToggleButton.mjs.map +1 -1
- package/dist/private/ToggleButtonGroup.cjs.map +1 -1
- package/dist/private/ToggleButtonGroup.js.map +1 -1
- package/dist/private/ToggleButtonGroup.mjs.map +1 -1
- package/dist/private/Toolbar.cjs.map +1 -1
- package/dist/private/Toolbar.js.map +1 -1
- package/dist/private/Toolbar.mjs.map +1 -1
- package/dist/private/Tooltip.cjs.map +1 -1
- package/dist/private/Tooltip.js.map +1 -1
- package/dist/private/Tooltip.mjs.map +1 -1
- package/dist/private/Tree.cjs +18 -6
- package/dist/private/Tree.cjs.map +1 -1
- package/dist/private/Tree.js +19 -7
- package/dist/private/Tree.js.map +1 -1
- package/dist/private/Tree.mjs +19 -7
- package/dist/private/Tree.mjs.map +1 -1
- package/dist/private/TreeDropTargetDelegate.cjs +9 -4
- package/dist/private/TreeDropTargetDelegate.cjs.map +1 -1
- package/dist/private/TreeDropTargetDelegate.js +10 -4
- package/dist/private/TreeDropTargetDelegate.js.map +1 -1
- package/dist/private/TreeDropTargetDelegate.mjs +9 -4
- package/dist/private/TreeDropTargetDelegate.mjs.map +1 -1
- package/dist/private/Virtualizer.cjs.map +1 -1
- package/dist/private/Virtualizer.js.map +1 -1
- package/dist/private/Virtualizer.mjs.map +1 -1
- package/dist/private/useDragAndDrop.cjs.map +1 -1
- package/dist/private/useDragAndDrop.js.map +1 -1
- package/dist/private/useDragAndDrop.mjs.map +1 -1
- package/dist/private/utils.cjs.map +1 -1
- package/dist/private/utils.js.map +1 -1
- package/dist/private/utils.mjs.map +1 -1
- package/dist/types/exports/Calendar.d.ts +4 -3
- package/dist/types/exports/Checkbox.d.ts +7 -2
- package/dist/types/exports/RadioGroup.d.ts +2 -2
- package/dist/types/exports/RangeCalendar.d.ts +3 -2
- package/dist/types/exports/Slider.d.ts +2 -2
- package/dist/types/exports/Switch.d.ts +7 -2
- package/dist/types/exports/Table.d.ts +2 -2
- package/dist/types/exports/index.d.ts +15 -13
- package/dist/types/exports/useDragAndDrop.d.ts +1 -1
- package/dist/types/src/Autocomplete.d.ts +1 -1
- package/dist/types/src/Breadcrumbs.d.ts +13 -4
- package/dist/types/src/Button.d.ts +9 -1
- package/dist/types/src/Calendar.d.ts +93 -33
- package/dist/types/src/Checkbox.d.ts +93 -2
- package/dist/types/src/Collection.d.ts +17 -4
- package/dist/types/src/ColorArea.d.ts +6 -2
- package/dist/types/src/ColorField.d.ts +8 -1
- package/dist/types/src/ColorPicker.d.ts +4 -1
- package/dist/types/src/ColorSlider.d.ts +5 -1
- package/dist/types/src/ColorSwatch.d.ts +3 -1
- package/dist/types/src/ColorSwatchPicker.d.ts +7 -2
- package/dist/types/src/ColorThumb.d.ts +10 -2
- package/dist/types/src/ColorWheel.d.ts +7 -2
- package/dist/types/src/ComboBox.d.ts +24 -11
- package/dist/types/src/DateField.d.ts +29 -4
- package/dist/types/src/DatePicker.d.ts +15 -3
- package/dist/types/src/Dialog.d.ts +3 -1
- package/dist/types/src/Disclosure.d.ts +21 -5
- package/dist/types/src/DragAndDrop.d.ts +6 -2
- package/dist/types/src/DropZone.d.ts +8 -1
- package/dist/types/src/FieldError.d.ts +4 -1
- package/dist/types/src/FileTrigger.d.ts +2 -1
- package/dist/types/src/Form.d.ts +4 -1
- package/dist/types/src/GridLayout.d.ts +5 -0
- package/dist/types/src/GridList.d.ts +44 -13
- package/dist/types/src/Group.d.ts +9 -1
- package/dist/types/src/Heading.d.ts +12 -0
- package/dist/types/src/HiddenDateInput.d.ts +2 -1
- package/dist/types/src/Input.d.ts +8 -1
- package/dist/types/src/Link.d.ts +9 -1
- package/dist/types/src/ListBox.d.ts +35 -12
- package/dist/types/src/Menu.d.ts +22 -10
- package/dist/types/src/Meter.d.ts +4 -1
- package/dist/types/src/Modal.d.ts +9 -3
- package/dist/types/src/NumberField.d.ts +9 -2
- package/dist/types/src/OverlayArrow.d.ts +4 -1
- package/dist/types/src/Popover.d.ts +12 -3
- package/dist/types/src/ProgressBar.d.ts +5 -1
- package/dist/types/src/RadioGroup.d.ts +88 -2
- package/dist/types/src/SearchField.d.ts +8 -1
- package/dist/types/src/Select.d.ts +19 -6
- package/dist/types/src/SelectionIndicator.d.ts +7 -2
- package/dist/types/src/Separator.d.ts +5 -2
- package/dist/types/src/SharedElementTransition.d.ts +2 -0
- package/dist/types/src/Slider.d.ts +48 -4
- package/dist/types/src/Switch.d.ts +100 -3
- package/dist/types/src/Table.d.ts +138 -31
- package/dist/types/src/Tabs.d.ts +37 -12
- package/dist/types/src/TagGroup.d.ts +18 -7
- package/dist/types/src/TextArea.d.ts +3 -1
- package/dist/types/src/TextField.d.ts +7 -1
- package/dist/types/src/Toast.d.ts +13 -3
- package/dist/types/src/ToggleButton.d.ts +10 -3
- package/dist/types/src/ToggleButtonGroup.d.ts +7 -2
- package/dist/types/src/Toolbar.d.ts +6 -3
- package/dist/types/src/Tooltip.d.ts +13 -4
- package/dist/types/src/Tree.d.ts +52 -16
- package/dist/types/src/useDragAndDrop.d.ts +10 -4
- package/dist/types/src/utils.d.ts +109 -17
- package/package.json +9 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react-aria-components/src/ListBox.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n AriaListBoxOptions,\n AriaListBoxProps,\n useListBox,\n useListBoxSection,\n useOption\n} from 'react-aria/useListBox';\n\nimport {\n ClassNameOrFunction,\n ContextValue,\n DEFAULT_SLOT,\n dom,\n DOMRenderProps,\n PossibleLinkDOMRenderProps,\n Provider,\n RenderProps,\n SlotProps,\n StyleProps,\n StyleRenderProps,\n useContextProps,\n useRenderProps,\n useSlot\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {CollectionBuilder, createBranchComponent, createLeafComponent} from 'react-aria/CollectionBuilder';\nimport {CollectionProps, CollectionRendererContext, ItemRenderProps, SectionContext, SectionProps} from './Collection';\nimport {DragAndDropContext, DropIndicatorContext, DropIndicatorProps, useDndPersistedKeys, useRenderDropIndicator} from './DragAndDrop';\nimport {DragAndDropHooks} from './useDragAndDrop';\nimport {DraggableCollectionState} from 'react-stately/useDraggableCollectionState';\nimport {DraggableItemResult} from 'react-aria/useDraggableCollection';\nimport {DragPreviewRenderer} from '@react-types/shared';\nimport {DroppableCollectionResult, DroppableItemResult} from 'react-aria/useDroppableCollection';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusEvents, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, KeyboardEvents, LinkDOMProps, PressEvents, RefObject} from '@react-types/shared';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {HeaderContext} from './Header';\nimport {inertValue} from 'react-aria/private/utils/inertValue';\nimport {ItemNode, LoaderNode, SectionNode} from 'react-aria/private/collections/BaseCollection';\nimport {ListKeyboardDelegate} from 'react-aria/ListKeyboardDelegate';\nimport {ListState, UNSTABLE_useFilteredListState, useListState} from 'react-stately/useListState';\nimport {LoadMoreSentinelProps, useLoadMoreSentinel} from 'react-aria/private/utils/useLoadMoreSentinel';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {Node, Orientation, SelectionBehavior} from '@react-types/shared';\nimport React, {createContext, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useEffect, useMemo, useRef} from 'react';\nimport {SelectableCollectionContext, SelectableCollectionContextValue} from './Autocomplete';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SeparatorContext} from './Separator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {TextContext} from './Text';\nimport {useCollator} from 'react-aria/useCollator';\nimport {useFocus} from 'react-aria/useFocus';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useHover} from 'react-aria/useHover';\nimport {useKeyboard} from 'react-aria/useKeyboard';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useObjectRef} from 'react-aria/useObjectRef';\n\nexport interface ListBoxRenderProps {\n /**\n * Whether the listbox has no items and should display its empty state.\n * @selector [data-empty]\n */\n isEmpty: boolean,\n /**\n * Whether the listbox is currently focused.\n * @selector [data-focused]\n */\n isFocused: boolean,\n /**\n * Whether the listbox is currently keyboard focused.\n * @selector [data-focus-visible]\n */\n isFocusVisible: boolean,\n /**\n * Whether the listbox is currently the active drop target.\n * @selector [data-drop-target]\n */\n isDropTarget: boolean,\n /**\n * Whether the items are arranged in a stack or grid.\n * @selector [data-layout=\"stack | grid\"]\n */\n layout: 'stack' | 'grid',\n /**\n * The primary orientation of the items.\n * @selector [data-orientation=\"vertical | horizontal\"]\n */\n orientation: Orientation,\n /**\n * State of the listbox.\n */\n state: ListState<unknown>\n}\n\nexport interface ListBoxProps<T> extends Omit<AriaListBoxProps<T>, 'children' | 'label'>, CollectionProps<T>, StyleRenderProps<ListBoxRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {\n /**\n * 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.\n * @default 'react-aria-ListBox'\n */\n className?: ClassNameOrFunction<ListBoxRenderProps>,\n /**\n * How multiple selection should behave in the collection.\n * @default \"toggle\"\n */\n selectionBehavior?: SelectionBehavior,\n /** The drag and drop hooks returned by `useDragAndDrop` used to enable drag and drop behavior for the ListBox. */\n dragAndDropHooks?: DragAndDropHooks<NoInfer<T>>,\n /** Provides content to display when there are no items in the list. */\n renderEmptyState?: (props: ListBoxRenderProps) => ReactNode,\n /**\n * Whether the items are arranged in a stack or grid.\n * @default 'stack'\n */\n layout?: 'stack' | 'grid',\n /**\n * The primary orientation of the items. Usually this is the\n * direction that the collection scrolls.\n * @default 'vertical'\n */\n orientation?: Orientation\n}\n\nexport const ListBoxContext = createContext<ContextValue<ListBoxProps<any>, HTMLDivElement>>(null);\nexport const ListStateContext = createContext<ListState<any> | null>(null);\n\n/**\n * A listbox displays a list of options and allows a user to select one or more of them.\n */\nexport const ListBox = /*#__PURE__*/ (forwardRef as forwardRefType)(function ListBox<T extends object>(props: ListBoxProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, ListBoxContext);\n let state = useContext(ListStateContext);\n\n // The structure of ListBox is a bit strange because it needs to work inside other components like ComboBox and Select.\n // Those components render two copies of their children so that the collection can be built even when the popover is closed.\n // The first copy sends a collection document via context which we render the collection portal into.\n // The second copy sends a ListState object via context which we use to render the ListBox without rebuilding the state.\n // Otherwise, we have a standalone ListBox, so we need to create a collection and state ourselves.\n if (state) {\n return <ListBoxInner state={state} props={props} listBoxRef={ref} />;\n }\n\n return (\n <CollectionBuilder content={<Collection {...props} />}>\n {collection => <StandaloneListBox props={props} listBoxRef={ref} collection={collection} />}\n </CollectionBuilder>\n );\n});\n\nfunction StandaloneListBox({props, listBoxRef, collection}) {\n props = {...props, collection, children: null, items: null};\n let {layoutDelegate} = useContext(CollectionRendererContext);\n let state = useListState({...props, layoutDelegate});\n return <ListBoxInner state={state} props={props} listBoxRef={listBoxRef} />;\n}\n\ninterface ListBoxInnerProps<T> {\n state: ListState<T>,\n props: ListBoxProps<T> & AriaListBoxOptions<T> & {filter?: SelectableCollectionContextValue<T>['filter']},\n listBoxRef: RefObject<HTMLElement | null>\n}\n\nfunction ListBoxInner<T extends object>({state: inputState, props, listBoxRef}: ListBoxInnerProps<T>) {\n [props, listBoxRef] = useContextProps(props, listBoxRef, SelectableCollectionContext);\n let {dragAndDropHooks, layout = 'stack', orientation = 'vertical', filter} = props;\n let state = UNSTABLE_useFilteredListState(inputState, filter);\n let {collection, selectionManager} = state;\n let isListDraggable = !!dragAndDropHooks?.useDraggableCollectionState;\n let isListDroppable = !!dragAndDropHooks?.useDroppableCollectionState;\n let {direction} = useLocale();\n let {disabledBehavior, disabledKeys} = selectionManager;\n let collator = useCollator({usage: 'search', sensitivity: 'base'});\n let {isVirtualized, layoutDelegate, dropTargetDelegate: ctxDropTargetDelegate, CollectionRoot} = useContext(CollectionRendererContext);\n let keyboardDelegate = useMemo(() => (\n props.keyboardDelegate || new ListKeyboardDelegate({\n collection,\n collator,\n ref: listBoxRef,\n disabledKeys,\n disabledBehavior,\n layout,\n orientation,\n direction,\n layoutDelegate\n })\n ), [collection, collator, listBoxRef, disabledBehavior, disabledKeys, orientation, direction, props.keyboardDelegate, layout, layoutDelegate]);\n\n let {listBoxProps} = useListBox({\n ...props,\n shouldSelectOnPressUp: isListDraggable || props.shouldSelectOnPressUp,\n keyboardDelegate,\n isVirtualized\n }, state, listBoxRef);\n\n let dragHooksProvided = useRef(isListDraggable);\n let dropHooksProvided = useRef(isListDroppable);\n useEffect(() => {\n if (process.env.NODE_ENV === 'production') {\n return;\n }\n if (dragHooksProvided.current !== isListDraggable) {\n console.warn('Drag hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');\n }\n if (dropHooksProvided.current !== isListDroppable) {\n console.warn('Drop hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');\n }\n }, [isListDraggable, isListDroppable]);\n\n let dragState: DraggableCollectionState | undefined = undefined;\n let dropState: DroppableCollectionState | undefined = undefined;\n let droppableCollection: DroppableCollectionResult | undefined = undefined;\n let isRootDropTarget = false;\n let dragPreview: JSX.Element | null = null;\n let preview = useRef<DragPreviewRenderer>(null);\n\n if (isListDraggable && dragAndDropHooks) {\n dragState = dragAndDropHooks.useDraggableCollectionState!({\n collection,\n selectionManager,\n preview: dragAndDropHooks.renderDragPreview ? preview : undefined\n });\n dragAndDropHooks.useDraggableCollection!({}, dragState, listBoxRef);\n\n let DragPreview = dragAndDropHooks.DragPreview!;\n dragPreview = dragAndDropHooks.renderDragPreview\n ? <DragPreview ref={preview}>{dragAndDropHooks.renderDragPreview}</DragPreview>\n : null;\n }\n\n if (isListDroppable && dragAndDropHooks) {\n dropState = dragAndDropHooks.useDroppableCollectionState!({\n collection,\n selectionManager\n });\n\n let dropTargetDelegate = dragAndDropHooks.dropTargetDelegate || ctxDropTargetDelegate || new dragAndDropHooks.ListDropTargetDelegate(collection, listBoxRef, {orientation, layout, direction});\n droppableCollection = dragAndDropHooks.useDroppableCollection!({\n keyboardDelegate,\n dropTargetDelegate\n }, dropState, listBoxRef);\n\n isRootDropTarget = dropState.isDropTarget({type: 'root'});\n }\n\n let {focusProps, isFocused, isFocusVisible} = useFocusRing();\n let isEmpty = state.collection.size === 0;\n let renderValues = {\n isDropTarget: isRootDropTarget,\n isEmpty,\n isFocused,\n isFocusVisible,\n layout: props.layout || 'stack',\n orientation,\n state\n };\n let renderProps = useRenderProps({\n ...props,\n children: undefined,\n defaultClassName: 'react-aria-ListBox',\n values: renderValues\n });\n\n let emptyState: JSX.Element | null = null;\n if (isEmpty && props.renderEmptyState) {\n emptyState = (\n <div\n // eslint-disable-next-line\n role=\"option\"\n style={{display: 'contents'}}>\n {props.renderEmptyState(renderValues)}\n </div>\n );\n }\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <FocusScope>\n <dom.div\n {...mergeProps(DOMProps, renderProps, listBoxProps, focusProps, droppableCollection?.collectionProps)}\n ref={listBoxRef as RefObject<HTMLDivElement>}\n slot={props.slot || undefined}\n onScroll={props.onScroll}\n data-drop-target={isRootDropTarget || undefined}\n data-empty={isEmpty || undefined}\n data-focused={isFocused || undefined}\n data-focus-visible={isFocusVisible || undefined}\n data-layout={props.layout || 'stack'}\n data-orientation={orientation}>\n <Provider\n values={[\n [ListBoxContext, props],\n [ListStateContext, state],\n [DragAndDropContext, {dragAndDropHooks, dragState, dropState}],\n [SeparatorContext, {elementType: 'div'}],\n [DropIndicatorContext, {render: ListBoxDropIndicatorWrapper}],\n [SectionContext, {name: 'ListBoxSection', render: ListBoxSectionInner}]\n ]}>\n <SharedElementTransition>\n <CollectionRoot\n collection={collection}\n scrollRef={listBoxRef}\n persistedKeys={useDndPersistedKeys(selectionManager, dragAndDropHooks, dropState)}\n renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)} />\n </SharedElementTransition>\n </Provider>\n {emptyState}\n {dragPreview}\n </dom.div>\n </FocusScope>\n );\n}\n\nexport interface ListBoxSectionProps<T> extends SectionProps<T>, DOMRenderProps<'section', undefined> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.\n * @default 'react-aria-ListBoxSection'\n */\n className?: string\n}\n\nfunction ListBoxSectionInner<T extends object>(props: ListBoxSectionProps<T>, ref: ForwardedRef<HTMLElement>, section: Node<T>, className = 'react-aria-ListBoxSection') {\n let state = useContext(ListStateContext)!;\n let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let [headingRef, heading] = useSlot();\n let {headingProps, groupProps} = useListBoxSection({\n heading,\n 'aria-label': props['aria-label'] ?? undefined\n });\n let renderProps = useRenderProps({\n ...props,\n id: undefined,\n children: undefined,\n defaultClassName: className,\n values: undefined\n });\n\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n\n return (\n <dom.section\n {...mergeProps(DOMProps, renderProps, groupProps)}\n ref={ref}>\n <HeaderContext.Provider value={{...headingProps, ref: headingRef}}>\n <CollectionBranch\n collection={state.collection}\n parent={section}\n renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)} />\n </HeaderContext.Provider>\n </dom.section>\n );\n}\n\n/**\n * A ListBoxSection represents a section within a ListBox.\n */\nexport const ListBoxSection = /*#__PURE__*/ createBranchComponent(SectionNode, ListBoxSectionInner);\n\nexport interface ListBoxItemRenderProps extends ItemRenderProps {}\n\nexport interface ListBoxItemProps<T = object> extends Omit<RenderProps<ListBoxItemRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', ListBoxItemRenderProps>, LinkDOMProps, HoverEvents, PressEvents, KeyboardEvents, FocusEvents<HTMLDivElement>, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * 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.\n * @default 'react-aria-ListBoxItem'\n */\n className?: ClassNameOrFunction<ListBoxItemRenderProps>,\n /** The unique id of the item. */\n id?: Key,\n /** The object value that this item represents. When using dynamic collections, this is set automatically. */\n value?: T,\n /** A string representation of the item's contents, used for features like typeahead. */\n textValue?: string,\n /** An accessibility label for this item. */\n 'aria-label'?: string,\n /** Whether the item is disabled. */\n isDisabled?: boolean,\n /**\n * Handler that is called when a user performs an action on the item. The exact user event depends on\n * the collection's `selectionBehavior` prop and the interaction modality.\n */\n onAction?: () => void\n}\n\n/**\n * A ListBoxItem represents an individual option in a ListBox.\n */\nexport const ListBoxItem = /*#__PURE__*/ createLeafComponent(ItemNode, function ListBoxItem<T extends object>(props: ListBoxItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {\n let ref = useObjectRef<any>(forwardedRef);\n let state = useContext(ListStateContext)!;\n let {dragAndDropHooks, dragState, dropState} = useContext(DragAndDropContext)!;\n let {optionProps, labelProps, descriptionProps, ...states} = useOption(\n {key: item.key, 'aria-label': props?.['aria-label']},\n state,\n ref\n );\n\n let {hoverProps, isHovered} = useHover({\n isDisabled: !states.allowsSelection && !states.hasAction,\n onHoverStart: item.props.onHoverStart,\n onHoverChange: item.props.onHoverChange,\n onHoverEnd: item.props.onHoverEnd\n });\n\n let {keyboardProps} = useKeyboard(props);\n let {focusProps} = useFocus(props);\n\n let draggableItem: DraggableItemResult | null = null;\n if (dragState && dragAndDropHooks) {\n draggableItem = dragAndDropHooks.useDraggableItem!({key: item.key, hasAction: states.hasAction}, dragState);\n }\n\n let droppableItem: DroppableItemResult | null = null;\n if (dropState && dragAndDropHooks) {\n droppableItem = dragAndDropHooks.useDroppableItem!({\n target: {type: 'item', key: item.key, dropPosition: 'on'}\n }, dropState, ref);\n }\n\n let isDragging = dragState && dragState.isDragging(item.key);\n let renderProps = useRenderProps<ListBoxItemRenderProps, any>({\n ...props,\n id: undefined,\n children: props.children,\n defaultClassName: 'react-aria-ListBoxItem',\n values: {\n ...states,\n isHovered,\n selectionMode: state.selectionManager.selectionMode,\n selectionBehavior: state.selectionManager.selectionBehavior,\n allowsDragging: !!dragState,\n isDragging,\n isDropTarget: droppableItem?.isDropTarget\n }\n });\n\n useEffect(() => {\n if (!item.textValue && process.env.NODE_ENV !== 'production') {\n 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.');\n }\n }, [item.textValue]);\n\n let ElementType = props.href ? dom.a : dom.div;\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n delete DOMProps.onClick;\n\n if (props.href && optionProps.tabIndex == null) {\n optionProps.tabIndex = -1;\n }\n\n return (\n <ElementType\n {...mergeProps(DOMProps, renderProps, optionProps, hoverProps, keyboardProps, focusProps, draggableItem?.dragProps, droppableItem?.dropProps)}\n ref={ref}\n data-allows-dragging={!!dragState || undefined}\n data-selected={states.isSelected || undefined}\n data-disabled={states.isDisabled || undefined}\n data-hovered={isHovered || undefined}\n data-focused={states.isFocused || undefined}\n data-focus-visible={states.isFocusVisible || undefined}\n data-pressed={states.isPressed || undefined}\n data-dragging={isDragging || undefined}\n data-drop-target={droppableItem?.isDropTarget || undefined}\n data-selection-mode={state.selectionManager.selectionMode === 'none' ? undefined : state.selectionManager.selectionMode}>\n <Provider\n values={[\n [TextContext, {\n slots: {\n [DEFAULT_SLOT]: labelProps,\n label: labelProps,\n description: descriptionProps\n }\n }],\n [SelectionIndicatorContext, {isSelected: states.isSelected}]\n ]}>\n {renderProps.children}\n </Provider>\n </ElementType>\n );\n});\n\nfunction ListBoxDropIndicatorWrapper(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>) {\n ref = useObjectRef(ref);\n let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;\n let {dropIndicatorProps, isHidden, isDropTarget} = dragAndDropHooks!.useDropIndicator!(\n props,\n dropState!,\n ref\n );\n\n if (isHidden) {\n return null;\n }\n\n return (\n <ListBoxDropIndicatorForwardRef {...props} dropIndicatorProps={dropIndicatorProps} isDropTarget={isDropTarget} ref={ref} />\n );\n}\n\ninterface ListBoxDropIndicatorProps extends DropIndicatorProps {\n dropIndicatorProps: React.HTMLAttributes<HTMLElement>,\n isDropTarget: boolean\n}\n\nfunction ListBoxDropIndicator(props: ListBoxDropIndicatorProps, ref: ForwardedRef<HTMLElement>) {\n let {\n dropIndicatorProps,\n isDropTarget,\n ...otherProps\n } = props;\n\n let renderProps = useRenderProps({\n ...otherProps,\n defaultClassName: 'react-aria-DropIndicator',\n values: {\n isDropTarget\n }\n });\n\n return (\n <dom.div\n {...dropIndicatorProps}\n {...renderProps}\n role=\"option\"\n ref={ref as RefObject<HTMLDivElement | null>}\n data-drop-target={isDropTarget || undefined} />\n );\n}\n\nconst ListBoxDropIndicatorForwardRef = forwardRef(ListBoxDropIndicator);\n\nexport interface ListBoxLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, StyleProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.\n * @default 'react-aria-ListBoxLoadMoreItem'\n */\n className?: string,\n /**\n * The load more spinner to render when loading additional items.\n */\n children?: ReactNode,\n /**\n * Whether or not the loading spinner should be rendered or not.\n */\n isLoading?: boolean\n}\n\nexport const ListBoxLoadMoreItem = createLeafComponent(LoaderNode, function ListBoxLoadingIndicator(props: ListBoxLoadMoreItemProps, ref: ForwardedRef<HTMLDivElement>, item: Node<object>) {\n let state = useContext(ListStateContext)!;\n let {isLoading, onLoadMore, scrollOffset, ...otherProps} = props;\n\n let sentinelRef = useRef<HTMLDivElement>(null);\n let memoedLoadMoreProps = useMemo(() => ({\n onLoadMore,\n collection: state?.collection,\n sentinelRef,\n scrollOffset\n }), [onLoadMore, scrollOffset, state?.collection]);\n useLoadMoreSentinel(memoedLoadMoreProps, sentinelRef);\n let renderProps = useRenderProps({\n ...otherProps,\n id: undefined,\n children: item.rendered,\n defaultClassName: 'react-aria-ListBoxLoadingIndicator',\n values: undefined\n });\n\n let optionProps = {\n // For Android talkback\n tabIndex: -1\n // For now don't include aria-posinset and aria-setsize on loader since they aren't keyboard focusable\n // Arguably shouldn't include them ever since it might be confusing to the user to include the loaders as part of the\n // item count\n };\n\n return (\n <>\n {/* 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) */}\n {/* @ts-ignore - compatibility with React < 19 */}\n <div style={{position: 'relative', width: 0, height: 0}} inert={inertValue(true)} >\n <div data-testid=\"loadMoreSentinel\" ref={sentinelRef} style={{position: 'absolute', height: 1, width: 1}} />\n </div>\n {isLoading && renderProps.children && (\n <dom.div\n {...mergeProps(filterDOMProps(props, {global: true}), optionProps)}\n {...renderProps}\n // aria-selected isn't needed here since this option is not selectable.\n role=\"option\"\n ref={ref as ForwardedRef<HTMLDivElement>}>\n {renderProps.children}\n </dom.div>\n )}\n </>\n );\n});\n"],"names":[],"version":3,"file":"ListBox.mjs.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react-aria-components/src/ListBox.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n AriaListBoxOptions,\n AriaListBoxProps,\n useListBox,\n useListBoxSection,\n useOption\n} from 'react-aria/useListBox';\n\nimport {\n ClassNameOrFunction,\n ContextValue,\n DEFAULT_SLOT,\n dom,\n DOMRenderProps,\n PossibleLinkDOMRenderProps,\n Provider,\n RenderProps,\n SlotProps,\n StyleProps,\n StyleRenderProps,\n useContextProps,\n useRenderProps,\n useSlot\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {\n CollectionBuilder,\n createBranchComponent,\n createLeafComponent\n} from 'react-aria/CollectionBuilder';\nimport {\n CollectionProps,\n CollectionRendererContext,\n ItemRenderProps,\n SectionContext,\n SectionProps\n} from './Collection';\nimport {\n DragAndDropContext,\n DropIndicatorContext,\n DropIndicatorProps,\n useDndPersistedKeys,\n useRenderDropIndicator\n} from './DragAndDrop';\nimport {DragAndDropHooks} from './useDragAndDrop';\nimport {DraggableCollectionState} from 'react-stately/useDraggableCollectionState';\nimport {DraggableItemResult} from 'react-aria/useDraggableCollection';\nimport {DragPreviewRenderer} from '@react-types/shared';\nimport {DroppableCollectionResult, DroppableItemResult} from 'react-aria/useDroppableCollection';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {\n FocusEvents,\n forwardRefType,\n GlobalDOMAttributes,\n HoverEvents,\n Key,\n KeyboardEvents,\n LinkDOMProps,\n PressEvents,\n RefObject\n} from '@react-types/shared';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {HeaderContext} from './Header';\nimport {inertValue} from 'react-aria/private/utils/inertValue';\nimport {ItemNode, LoaderNode, SectionNode} from 'react-aria/private/collections/BaseCollection';\nimport {ListKeyboardDelegate} from 'react-aria/ListKeyboardDelegate';\nimport {ListState, UNSTABLE_useFilteredListState, useListState} from 'react-stately/useListState';\nimport {\n LoadMoreSentinelProps,\n useLoadMoreSentinel\n} from 'react-aria/private/utils/useLoadMoreSentinel';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {Node, Orientation, SelectionBehavior} from '@react-types/shared';\nimport React, {\n createContext,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef\n} from 'react';\nimport {SelectableCollectionContext, SelectableCollectionContextValue} from './Autocomplete';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SeparatorContext} from './Separator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {TextContext} from './Text';\nimport {useCollator} from 'react-aria/useCollator';\nimport {useFocus} from 'react-aria/useFocus';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useHover} from 'react-aria/useHover';\nimport {useKeyboard} from 'react-aria/useKeyboard';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useObjectRef} from 'react-aria/useObjectRef';\n\nexport interface ListBoxRenderProps {\n /**\n * Whether the listbox has no items and should display its empty state.\n *\n * @selector [data-empty]\n */\n isEmpty: boolean;\n /**\n * Whether the listbox is currently focused.\n *\n * @selector [data-focused]\n */\n isFocused: boolean;\n /**\n * Whether the listbox is currently keyboard focused.\n *\n * @selector [data-focus-visible]\n */\n isFocusVisible: boolean;\n /**\n * Whether the listbox is currently the active drop target.\n *\n * @selector [data-drop-target]\n */\n isDropTarget: boolean;\n /**\n * Whether the items are arranged in a stack or grid.\n *\n * @selector [data-layout=\"stack | grid\"]\n */\n layout: 'stack' | 'grid';\n /**\n * The primary orientation of the items.\n *\n * @selector [data-orientation=\"vertical | horizontal\"]\n */\n orientation: Orientation;\n /**\n * State of the listbox.\n */\n state: ListState<unknown>;\n}\n\nexport interface ListBoxProps<T>\n extends\n Omit<AriaListBoxProps<T>, 'children' | 'label'>,\n CollectionProps<T>,\n StyleRenderProps<ListBoxRenderProps>,\n SlotProps,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-ListBox'\n */\n className?: ClassNameOrFunction<ListBoxRenderProps>;\n /**\n * How multiple selection should behave in the collection.\n *\n * @default 'toggle'\n */\n selectionBehavior?: SelectionBehavior;\n /**\n * The drag and drop hooks returned by `useDragAndDrop` used to enable drag and drop behavior for\n * the ListBox.\n */\n dragAndDropHooks?: DragAndDropHooks<NoInfer<T>>;\n /** Provides content to display when there are no items in the list. */\n renderEmptyState?: (props: ListBoxRenderProps) => ReactNode;\n /**\n * Whether the items are arranged in a stack or grid.\n *\n * @default 'stack'\n */\n layout?: 'stack' | 'grid';\n /**\n * The primary orientation of the items. Usually this is the\n * direction that the collection scrolls.\n *\n * @default 'vertical'\n */\n orientation?: Orientation;\n}\n\nexport const ListBoxContext = createContext<ContextValue<ListBoxProps<any>, HTMLDivElement>>(null);\nexport const ListStateContext = createContext<ListState<any> | null>(null);\n\n/**\n * A listbox displays a list of options and allows a user to select one or more of them.\n */\nexport const ListBox = /*#__PURE__*/ (forwardRef as forwardRefType)(function ListBox<T>(\n props: ListBoxProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, ListBoxContext);\n let state = useContext(ListStateContext);\n\n // The structure of ListBox is a bit strange because it needs to work inside other components like ComboBox and Select.\n // Those components render two copies of their children so that the collection can be built even when the popover is closed.\n // The first copy sends a collection document via context which we render the collection portal into.\n // The second copy sends a ListState object via context which we use to render the ListBox without rebuilding the state.\n // Otherwise, we have a standalone ListBox, so we need to create a collection and state ourselves.\n if (state) {\n return <ListBoxInner state={state} props={props} listBoxRef={ref} />;\n }\n\n return (\n <CollectionBuilder content={<Collection {...props} />}>\n {collection => <StandaloneListBox props={props} listBoxRef={ref} collection={collection} />}\n </CollectionBuilder>\n );\n});\n\nfunction StandaloneListBox({props, listBoxRef, collection}) {\n props = {...props, collection, children: null, items: null};\n let {layoutDelegate} = useContext(CollectionRendererContext);\n let state = useListState({...props, layoutDelegate});\n return <ListBoxInner state={state} props={props} listBoxRef={listBoxRef} />;\n}\n\ninterface ListBoxInnerProps<T> {\n state: ListState<T>;\n props: ListBoxProps<T> &\n AriaListBoxOptions<T> & {filter?: SelectableCollectionContextValue<T>['filter']};\n listBoxRef: RefObject<HTMLElement | null>;\n}\n\nfunction ListBoxInner<T>({state: inputState, props, listBoxRef}: ListBoxInnerProps<T>) {\n [props, listBoxRef] = useContextProps(props, listBoxRef, SelectableCollectionContext);\n let {dragAndDropHooks, layout = 'stack', orientation = 'vertical', filter} = props;\n let state = UNSTABLE_useFilteredListState(inputState, filter);\n let {collection, selectionManager} = state;\n let isListDraggable = !!dragAndDropHooks?.useDraggableCollectionState;\n let isListDroppable = !!dragAndDropHooks?.useDroppableCollectionState;\n let {direction} = useLocale();\n let {disabledBehavior, disabledKeys} = selectionManager;\n let collator = useCollator({usage: 'search', sensitivity: 'base'});\n let {\n isVirtualized,\n layoutDelegate,\n dropTargetDelegate: ctxDropTargetDelegate,\n CollectionRoot\n } = useContext(CollectionRendererContext);\n let keyboardDelegate = useMemo(\n () =>\n props.keyboardDelegate ||\n new ListKeyboardDelegate({\n collection,\n collator,\n ref: listBoxRef,\n disabledKeys,\n disabledBehavior,\n layout,\n orientation,\n direction,\n layoutDelegate\n }),\n [\n collection,\n collator,\n listBoxRef,\n disabledBehavior,\n disabledKeys,\n orientation,\n direction,\n props.keyboardDelegate,\n layout,\n layoutDelegate\n ]\n );\n\n let {listBoxProps} = useListBox(\n {\n ...props,\n shouldSelectOnPressUp: isListDraggable || props.shouldSelectOnPressUp,\n keyboardDelegate,\n isVirtualized\n },\n state,\n listBoxRef\n );\n\n let dragHooksProvided = useRef(isListDraggable);\n let dropHooksProvided = useRef(isListDroppable);\n useEffect(() => {\n if (process.env.NODE_ENV === 'production') {\n return;\n }\n if (dragHooksProvided.current !== isListDraggable) {\n console.warn(\n 'Drag hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.'\n );\n }\n if (dropHooksProvided.current !== isListDroppable) {\n console.warn(\n 'Drop hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.'\n );\n }\n }, [isListDraggable, isListDroppable]);\n\n let dragState: DraggableCollectionState | undefined = undefined;\n let dropState: DroppableCollectionState | undefined = undefined;\n let droppableCollection: DroppableCollectionResult | undefined = undefined;\n let isRootDropTarget = false;\n let dragPreview: JSX.Element | null = null;\n let preview = useRef<DragPreviewRenderer>(null);\n\n if (isListDraggable && dragAndDropHooks) {\n dragState = dragAndDropHooks.useDraggableCollectionState!({\n collection,\n selectionManager,\n preview: dragAndDropHooks.renderDragPreview ? preview : undefined\n });\n dragAndDropHooks.useDraggableCollection!({}, dragState, listBoxRef);\n\n let DragPreview = dragAndDropHooks.DragPreview!;\n dragPreview = dragAndDropHooks.renderDragPreview ? (\n <DragPreview ref={preview}>{dragAndDropHooks.renderDragPreview}</DragPreview>\n ) : null;\n }\n\n if (isListDroppable && dragAndDropHooks) {\n dropState = dragAndDropHooks.useDroppableCollectionState!({\n collection,\n selectionManager\n });\n\n let dropTargetDelegate =\n dragAndDropHooks.dropTargetDelegate ||\n ctxDropTargetDelegate ||\n new dragAndDropHooks.ListDropTargetDelegate(collection, listBoxRef, {\n orientation,\n layout,\n direction\n });\n droppableCollection = dragAndDropHooks.useDroppableCollection!(\n {\n keyboardDelegate,\n dropTargetDelegate\n },\n dropState,\n listBoxRef\n );\n\n isRootDropTarget = dropState.isDropTarget({type: 'root'});\n }\n\n let {focusProps, isFocused, isFocusVisible} = useFocusRing();\n let isEmpty = state.collection.size === 0;\n let renderValues = {\n isDropTarget: isRootDropTarget,\n isEmpty,\n isFocused,\n isFocusVisible,\n layout: props.layout || 'stack',\n orientation,\n state\n };\n let renderProps = useRenderProps({\n ...props,\n children: undefined,\n defaultClassName: 'react-aria-ListBox',\n values: renderValues\n });\n\n let emptyState: JSX.Element | null = null;\n if (isEmpty && props.renderEmptyState) {\n emptyState = (\n <div\n // eslint-disable-next-line\n role=\"option\"\n style={{display: 'contents'}}>\n {props.renderEmptyState(renderValues)}\n </div>\n );\n }\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <FocusScope>\n <dom.div\n {...mergeProps(\n DOMProps,\n renderProps,\n listBoxProps,\n focusProps,\n droppableCollection?.collectionProps\n )}\n ref={listBoxRef as RefObject<HTMLDivElement>}\n slot={props.slot || undefined}\n onScroll={props.onScroll}\n data-drop-target={isRootDropTarget || undefined}\n data-empty={isEmpty || undefined}\n data-focused={isFocused || undefined}\n data-focus-visible={isFocusVisible || undefined}\n data-layout={props.layout || 'stack'}\n data-orientation={orientation}>\n <Provider\n values={[\n [ListBoxContext, props],\n [ListStateContext, state],\n [DragAndDropContext, {dragAndDropHooks, dragState, dropState}],\n [SeparatorContext, {elementType: 'div'}],\n [DropIndicatorContext, {render: ListBoxDropIndicatorWrapper}],\n [SectionContext, {name: 'ListBoxSection', render: ListBoxSectionInner}]\n ]}>\n <SharedElementTransition>\n <CollectionRoot\n collection={collection}\n scrollRef={listBoxRef}\n persistedKeys={useDndPersistedKeys(selectionManager, dragAndDropHooks, dropState)}\n renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)}\n />\n </SharedElementTransition>\n </Provider>\n {emptyState}\n {dragPreview}\n </dom.div>\n </FocusScope>\n );\n}\n\nexport interface ListBoxSectionProps<T>\n extends SectionProps<T>, DOMRenderProps<'section', undefined> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element.\n *\n * @default 'react-aria-ListBoxSection'\n */\n className?: string;\n}\n\nfunction ListBoxSectionInner<T>(\n props: ListBoxSectionProps<T>,\n ref: ForwardedRef<HTMLElement>,\n section: Node<T>,\n className = 'react-aria-ListBoxSection'\n) {\n let state = useContext(ListStateContext)!;\n let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let [headingRef, heading] = useSlot();\n let {headingProps, groupProps} = useListBoxSection({\n heading,\n 'aria-label': props['aria-label'] ?? undefined\n });\n let renderProps = useRenderProps({\n ...props,\n id: undefined,\n children: undefined,\n defaultClassName: className,\n values: undefined\n });\n\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n\n return (\n <dom.section {...mergeProps(DOMProps, renderProps, groupProps)} ref={ref}>\n <HeaderContext.Provider value={{...headingProps, ref: headingRef}}>\n <CollectionBranch\n collection={state.collection}\n parent={section}\n renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)}\n />\n </HeaderContext.Provider>\n </dom.section>\n );\n}\n\n/**\n * A ListBoxSection represents a section within a ListBox.\n */\nexport const ListBoxSection = /*#__PURE__*/ createBranchComponent(SectionNode, ListBoxSectionInner);\n\nexport interface ListBoxItemRenderProps extends ItemRenderProps {}\n\nexport interface ListBoxItemProps<T = object>\n extends\n Omit<RenderProps<ListBoxItemRenderProps>, 'render'>,\n PossibleLinkDOMRenderProps<'div', ListBoxItemRenderProps>,\n LinkDOMProps,\n HoverEvents,\n PressEvents,\n KeyboardEvents,\n FocusEvents<HTMLDivElement>,\n Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-ListBoxItem'\n */\n className?: ClassNameOrFunction<ListBoxItemRenderProps>;\n /** The unique id of the item. */\n id?: Key;\n /**\n * The object value that this item represents. When using dynamic collections, this is set\n * automatically.\n */\n value?: T;\n /** A string representation of the item's contents, used for features like typeahead. */\n textValue?: string;\n /** An accessibility label for this item. */\n 'aria-label'?: string;\n /** Whether the item is disabled. */\n isDisabled?: boolean;\n /**\n * Handler that is called when a user performs an action on the item. The exact user event depends\n * on the collection's `selectionBehavior` prop and the interaction modality.\n */\n onAction?: () => void;\n}\n\n/**\n * A ListBoxItem represents an individual option in a ListBox.\n */\nexport const ListBoxItem = /*#__PURE__*/ createLeafComponent(ItemNode, function ListBoxItem<\n T\n>(props: ListBoxItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {\n let ref = useObjectRef<any>(forwardedRef);\n let state = useContext(ListStateContext)!;\n let {dragAndDropHooks, dragState, dropState} = useContext(DragAndDropContext)!;\n let isDraggable =\n dragState && !(dragState.isDisabled || dragState.selectionManager.isDisabled(item.key));\n let {optionProps, labelProps, descriptionProps, ...states} = useOption(\n {key: item.key, 'aria-label': props?.['aria-label']},\n state,\n ref\n );\n\n let {hoverProps, isHovered} = useHover({\n isDisabled: !states.allowsSelection && !states.hasAction && !isDraggable,\n onHoverStart: item.props.onHoverStart,\n onHoverChange: item.props.onHoverChange,\n onHoverEnd: item.props.onHoverEnd\n });\n\n let {keyboardProps} = useKeyboard(props);\n let {focusProps} = useFocus(props);\n\n let draggableItem: DraggableItemResult | null = null;\n if (dragState && dragAndDropHooks) {\n draggableItem = dragAndDropHooks.useDraggableItem!(\n {key: item.key, hasAction: states.hasAction},\n dragState\n );\n }\n\n let droppableItem: DroppableItemResult | null = null;\n if (dropState && dragAndDropHooks) {\n droppableItem = dragAndDropHooks.useDroppableItem!(\n {\n target: {type: 'item', key: item.key, dropPosition: 'on'}\n },\n dropState,\n ref\n );\n }\n\n let isDragging = dragState && dragState.isDragging(item.key);\n let renderProps = useRenderProps<ListBoxItemRenderProps, any>({\n ...props,\n id: undefined,\n children: props.children,\n defaultClassName: 'react-aria-ListBoxItem',\n values: {\n ...states,\n isHovered,\n selectionMode: state.selectionManager.selectionMode,\n selectionBehavior: state.selectionManager.selectionBehavior,\n allowsDragging: !!dragState,\n isDragging,\n isDropTarget: droppableItem?.isDropTarget\n }\n });\n\n useEffect(() => {\n if (!item.textValue && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'A `textValue` prop is required for <ListBoxItem> elements with non-plain text children in order to support accessibility features such as type to select.'\n );\n }\n }, [item.textValue]);\n\n let ElementType = props.href ? dom.a : dom.div;\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n delete DOMProps.onClick;\n\n if (props.href && optionProps.tabIndex == null) {\n optionProps.tabIndex = -1;\n }\n\n return (\n <ElementType\n {...mergeProps(\n DOMProps,\n renderProps,\n optionProps,\n hoverProps,\n keyboardProps,\n focusProps,\n draggableItem?.dragProps,\n droppableItem?.dropProps\n )}\n ref={ref}\n data-allows-dragging={!!dragState || undefined}\n data-selected={states.isSelected || undefined}\n data-disabled={states.isDisabled || undefined}\n data-hovered={isHovered || undefined}\n data-focused={states.isFocused || undefined}\n data-focus-visible={states.isFocusVisible || undefined}\n data-pressed={states.isPressed || undefined}\n data-dragging={isDragging || undefined}\n data-drop-target={droppableItem?.isDropTarget || undefined}\n data-selection-mode={\n state.selectionManager.selectionMode === 'none'\n ? undefined\n : state.selectionManager.selectionMode\n }>\n <Provider\n values={[\n [\n TextContext,\n {\n slots: {\n [DEFAULT_SLOT]: labelProps,\n label: labelProps,\n description: descriptionProps\n }\n }\n ],\n [SelectionIndicatorContext, {isSelected: states.isSelected}]\n ]}>\n {renderProps.children}\n </Provider>\n </ElementType>\n );\n});\n\nfunction ListBoxDropIndicatorWrapper(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>) {\n ref = useObjectRef(ref);\n let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;\n let {dropIndicatorProps, isHidden, isDropTarget} = dragAndDropHooks!.useDropIndicator!(\n props,\n dropState!,\n ref\n );\n\n if (isHidden) {\n return null;\n }\n\n return (\n <ListBoxDropIndicatorForwardRef\n {...props}\n dropIndicatorProps={dropIndicatorProps}\n isDropTarget={isDropTarget}\n ref={ref}\n />\n );\n}\n\ninterface ListBoxDropIndicatorProps extends DropIndicatorProps {\n dropIndicatorProps: React.HTMLAttributes<HTMLElement>;\n isDropTarget: boolean;\n}\n\nfunction ListBoxDropIndicator(props: ListBoxDropIndicatorProps, ref: ForwardedRef<HTMLElement>) {\n let {dropIndicatorProps, isDropTarget, ...otherProps} = props;\n\n let renderProps = useRenderProps({\n ...otherProps,\n defaultClassName: 'react-aria-DropIndicator',\n values: {\n isDropTarget\n }\n });\n\n return (\n <>\n {/* oxlint-disable jsx-a11y/role-has-required-aria-props -- drop indicator is not selectable */}\n <dom.div\n {...dropIndicatorProps}\n {...renderProps}\n role=\"option\"\n ref={ref as RefObject<HTMLDivElement | null>}\n data-drop-target={isDropTarget || undefined}\n />\n {/* oxlint-enable jsx-a11y/role-has-required-aria-props */}\n </>\n );\n}\n\nconst ListBoxDropIndicatorForwardRef = forwardRef(ListBoxDropIndicator);\n\nexport interface ListBoxLoadMoreItemProps\n extends\n Omit<LoadMoreSentinelProps, 'collection'>,\n StyleProps,\n DOMRenderProps<'div', undefined>,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element.\n *\n * @default 'react-aria-ListBoxLoadMoreItem'\n */\n className?: string;\n /**\n * The load more spinner to render when loading additional items.\n */\n children?: ReactNode;\n /**\n * Whether or not the loading spinner should be rendered or not.\n */\n isLoading?: boolean;\n}\n\nexport const ListBoxLoadMoreItem = createLeafComponent(\n LoaderNode,\n function ListBoxLoadingIndicator(\n props: ListBoxLoadMoreItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n item: Node<object>\n ) {\n let state = useContext(ListStateContext)!;\n let {isLoading, onLoadMore, scrollOffset, ...otherProps} = props;\n\n let sentinelRef = useRef<HTMLDivElement>(null);\n let memoedLoadMoreProps = useMemo(\n () => ({\n onLoadMore,\n collection: state?.collection,\n sentinelRef,\n scrollOffset\n }),\n [onLoadMore, scrollOffset, state?.collection]\n );\n useLoadMoreSentinel(memoedLoadMoreProps, sentinelRef);\n let renderProps = useRenderProps({\n ...otherProps,\n id: undefined,\n children: item.rendered,\n defaultClassName: 'react-aria-ListBoxLoadingIndicator',\n values: undefined\n });\n\n let optionProps = {\n // For Android talkback\n tabIndex: -1\n // For now don't include aria-posinset and aria-setsize on loader since they aren't keyboard focusable\n // Arguably shouldn't include them ever since it might be confusing to the user to include the loaders as part of the\n // item count\n };\n\n return (\n <>\n {/* 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) */}\n {/* @ts-ignore - compatibility with React < 19 */}\n <div style={{position: 'relative', width: 0, height: 0}} inert={inertValue(true)}>\n <div\n data-testid=\"loadMoreSentinel\"\n ref={sentinelRef}\n style={{position: 'absolute', height: 1, width: 1}}\n />\n </div>\n {isLoading && renderProps.children && (\n <>\n {/* oxlint-disable jsx-a11y/role-has-required-aria-props -- loader row is not selectable */}\n <dom.div\n {...mergeProps(filterDOMProps(props, {global: true}), optionProps)}\n {...renderProps}\n // aria-selected isn't needed here since this option is not selectable.\n role=\"option\"\n ref={ref as ForwardedRef<HTMLDivElement>}>\n {renderProps.children}\n </dom.div>\n {/* oxlint-enable jsx-a11y/role-has-required-aria-props */}\n </>\n )}\n </>\n );\n }\n);\n"],"names":[],"version":3,"file":"ListBox.mjs.map"}
|
package/dist/private/Menu.cjs
CHANGED
|
@@ -22,9 +22,9 @@ var $fDx7A$react = require("react");
|
|
|
22
22
|
var $fDx7A$reactstatelyprivateselectionSelectionManager = require("react-stately/private/selection/SelectionManager");
|
|
23
23
|
var $fDx7A$reactstatelyuseTreeState = require("react-stately/useTreeState");
|
|
24
24
|
var $fDx7A$reactariauseHover = require("react-aria/useHover");
|
|
25
|
+
var $fDx7A$reactariaprivatecollectionsHidden = require("react-aria/private/collections/Hidden");
|
|
25
26
|
var $fDx7A$reactstatelyuseMultipleSelectionState = require("react-stately/useMultipleSelectionState");
|
|
26
27
|
var $fDx7A$reactariauseObjectRef = require("react-aria/useObjectRef");
|
|
27
|
-
var $fDx7A$reactariaprivateutilsuseResizeObserver = require("react-aria/private/utils/useResizeObserver");
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
function $parcel$interopDefault(a) {
|
|
@@ -91,18 +91,11 @@ function $76f9e98b4261ab43$export$27d2ad3c5815583e(props) {
|
|
|
91
91
|
...props,
|
|
92
92
|
type: 'menu'
|
|
93
93
|
}, state, ref);
|
|
94
|
-
// Allows menu width to match button
|
|
95
|
-
let [buttonWidth, setButtonWidth] = (0, $fDx7A$react.useState)(null);
|
|
96
|
-
let onResize = (0, $fDx7A$react.useCallback)(()=>{
|
|
97
|
-
if (ref.current) setButtonWidth(ref.current.offsetWidth + 'px');
|
|
98
|
-
}, [
|
|
99
|
-
ref
|
|
100
|
-
]);
|
|
101
|
-
(0, $fDx7A$reactariaprivateutilsuseResizeObserver.useResizeObserver)({
|
|
102
|
-
ref: ref,
|
|
103
|
-
onResize: onResize
|
|
104
|
-
});
|
|
105
94
|
let scrollRef = (0, $fDx7A$react.useRef)(null);
|
|
95
|
+
// If within a collection (e.g. Tabs), render nothing.
|
|
96
|
+
// Not using createHideableComponent for this because that also creates a forwardRef.
|
|
97
|
+
let isHidden = (0, $fDx7A$reactariaprivatecollectionsHidden.useIsHidden)();
|
|
98
|
+
if (isHidden) return null;
|
|
106
99
|
return /*#__PURE__*/ (0, ($parcel$interopDefault($fDx7A$react))).createElement((0, $048d76b84370f141$exports.Provider), {
|
|
107
100
|
values: [
|
|
108
101
|
[
|
|
@@ -127,9 +120,6 @@ function $76f9e98b4261ab43$export$27d2ad3c5815583e(props) {
|
|
|
127
120
|
triggerRef: ref,
|
|
128
121
|
scrollRef: scrollRef,
|
|
129
122
|
placement: 'bottom start',
|
|
130
|
-
style: {
|
|
131
|
-
'--trigger-width': buttonWidth
|
|
132
|
-
},
|
|
133
123
|
'aria-labelledby': menuProps['aria-labelledby']
|
|
134
124
|
}
|
|
135
125
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react-aria-components/src/Menu.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n AriaMenuProps,\n useMenu,\n useMenuItem,\n useMenuSection,\n useMenuTrigger,\n useSubmenuTrigger\n} from 'react-aria/useMenu';\n\nimport {BaseCollection, CollectionNode, ItemNode, SectionNode} from 'react-aria/private/collections/BaseCollection';\nimport {\n MenuTriggerProps as BaseMenuTriggerProps,\n RootMenuTriggerState,\n useMenuTriggerState,\n useSubmenuTriggerState\n} from 'react-stately/useMenuTriggerState';\nimport {\n ClassNameOrFunction,\n ContextValue,\n DEFAULT_SLOT,\n dom,\n DOMRenderProps,\n PossibleLinkDOMRenderProps,\n Provider,\n RenderProps,\n SlotProps,\n StyleRenderProps,\n useContextProps,\n useRenderProps,\n useSlot,\n useSlottedContext\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {CollectionBuilder, createBranchComponent, createLeafComponent} from 'react-aria/CollectionBuilder';\nimport {CollectionProps, CollectionRendererContext, ItemRenderProps, SectionContext, SectionProps, usePersistedKeys} from './Collection';\n\nimport {FieldInputContext, SelectableCollectionContext, SelectableCollectionContextValue} from './Autocomplete';\n\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusEvents, FocusStrategy, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, MultipleSelection, PressEvents} from '@react-types/shared';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {HeaderContext} from './Header';\nimport {Collection as ICollection, Node} from '@react-types/shared';\nimport {KeyboardContext} from './Keyboard';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {MultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {OverlayTriggerStateContext} from './Dialog';\nimport {PopoverContext} from './Popover';\nimport {PressResponder} from 'react-aria/private/interactions/PressResponder';\nimport React, {\n createContext,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactElement,\n ReactNode,\n RefObject,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SelectionManager} from 'react-stately/private/selection/SelectionManager';\nimport {SeparatorContext} from './Separator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {TextContext} from './Text';\nimport {TreeState, useTreeState} from 'react-stately/useTreeState';\nimport {useHover} from 'react-aria/useHover';\nimport {useMultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {useObjectRef} from 'react-aria/useObjectRef';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\n\nexport const MenuContext = createContext<ContextValue<MenuProps<any>, HTMLDivElement>>(null);\nexport const MenuStateContext = createContext<TreeState<any> | null>(null);\nexport const RootMenuTriggerStateContext = createContext<RootMenuTriggerState | null>(null);\nconst SelectionManagerContext = createContext<SelectionManager | null>(null);\n\nexport interface MenuTriggerProps extends BaseMenuTriggerProps {\n children: ReactNode\n}\n\nexport function MenuTrigger(props: MenuTriggerProps): JSX.Element {\n let state = useMenuTriggerState(props);\n let ref = useRef<HTMLButtonElement>(null);\n let {menuTriggerProps, menuProps} = useMenuTrigger({\n ...props,\n type: 'menu'\n }, state, ref);\n // Allows menu width to match button\n let [buttonWidth, setButtonWidth] = useState<string | null>(null);\n let onResize = useCallback(() => {\n if (ref.current) {\n setButtonWidth(ref.current.offsetWidth + 'px');\n }\n }, [ref]);\n\n useResizeObserver({\n ref: ref,\n onResize: onResize\n });\n let scrollRef = useRef(null);\n\n return (\n <Provider\n values={[\n [MenuContext, {...menuProps, ref: scrollRef}],\n [OverlayTriggerStateContext, state],\n [RootMenuTriggerStateContext, state],\n [PopoverContext, {\n trigger: 'MenuTrigger',\n triggerRef: ref,\n scrollRef,\n placement: 'bottom start',\n style: {'--trigger-width': buttonWidth} as React.CSSProperties,\n 'aria-labelledby': menuProps['aria-labelledby']\n }]\n ]}>\n <PressResponder {...menuTriggerProps} ref={ref} isPressed={state.isOpen}>\n {props.children}\n </PressResponder>\n </Provider>\n );\n}\n\nexport interface SubmenuTriggerProps {\n /**\n * The contents of the SubmenuTrigger. The first child should be an Item (the trigger) and the second child should be the Popover (for the submenu).\n */\n children: ReactElement[],\n /**\n * The delay time in milliseconds for the submenu to appear after hovering over the trigger.\n * @default 200\n */\n delay?: number\n}\n\nconst SubmenuTriggerContext = createContext<{parentMenuRef: RefObject<HTMLElement | null>, shouldUseVirtualFocus?: boolean} | null>(null);\n\nclass SubmenuTriggerNode<T> extends CollectionNode<T> {\n static readonly type = 'submenutrigger';\n\n filter(collection: BaseCollection<T>, newCollection: BaseCollection<T>, filterFn: (textValue: string, node: Node<T>) => boolean): CollectionNode<T> | null {\n let triggerNode = collection.getItem(this.firstChildKey!);\n if (triggerNode && filterFn(triggerNode.textValue, this)) {\n let clone = this.clone();\n newCollection.addDescendants(clone, collection);\n return clone;\n }\n\n return null;\n }\n}\n\n/**\n * A submenu trigger is used to wrap a submenu's trigger item and the submenu itself.\n *\n * @version alpha\n */\nexport const SubmenuTrigger = /*#__PURE__*/ createBranchComponent(SubmenuTriggerNode, (props: SubmenuTriggerProps, ref: ForwardedRef<HTMLDivElement>, item) => {\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let state = useContext(MenuStateContext)!;\n let rootMenuTriggerState = useContext(RootMenuTriggerStateContext)!;\n let submenuTriggerState = useSubmenuTriggerState({triggerKey: item.key}, rootMenuTriggerState);\n let submenuRef = useRef<HTMLDivElement>(null);\n let itemRef = useObjectRef(ref);\n let {parentMenuRef, shouldUseVirtualFocus} = useContext(SubmenuTriggerContext)!;\n let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger({\n parentMenuRef,\n submenuRef,\n delay: props.delay,\n shouldUseVirtualFocus\n }, submenuTriggerState, itemRef);\n\n return (\n <Provider\n values={[\n [MenuItemContext, {...submenuTriggerProps, onAction: undefined, ref: itemRef}],\n [MenuContext, {\n ref: submenuRef,\n ...submenuProps\n }],\n [OverlayTriggerStateContext, submenuTriggerState],\n [PopoverContext, {\n trigger: 'SubmenuTrigger',\n triggerRef: itemRef,\n placement: 'end top',\n 'aria-labelledby': submenuProps['aria-labelledby'],\n ...popoverProps\n }]\n ]}>\n <CollectionBranch collection={state.collection} parent={item} />\n {props.children[1]}\n </Provider>\n );\n}, props => props.children[0]);\n\nexport interface MenuRenderProps {\n /**\n * Whether the menu has no items and should display its empty state.\n * @selector [data-empty]\n */\n isEmpty: boolean\n}\n\nexport interface MenuProps<T> extends Omit<AriaMenuProps<T>, 'children'>, CollectionProps<T>, StyleRenderProps<MenuRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {\n /**\n * 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.\n * @default 'react-aria-Menu'\n */\n className?: ClassNameOrFunction<MenuRenderProps>,\n /** Provides content to display when there are no items in the list. */\n renderEmptyState?: () => ReactNode,\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean\n}\n\n/**\n * A menu displays a list of actions or options that a user can choose.\n */\nexport const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T extends object>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, MenuContext);\n\n // Delay rendering the actual menu until we have the collection so that auto focus works properly.\n return (\n <CollectionBuilder content={<Collection {...props} />}>\n {collection => <MenuInner props={props} collection={collection} menuRef={ref} />}\n </CollectionBuilder>\n );\n});\n\ninterface MenuInnerProps<T> {\n // For now we append filter and other autocomplete context props here for typescript, but eventually we can consider exposing these\n // as top level props for users to use with standalone Menus\n props: MenuProps<T> & {filter?: SelectableCollectionContextValue<object>['filter'], shouldUseVirtualFocus?: boolean},\n collection: BaseCollection<object>,\n menuRef: RefObject<HTMLElement | null>\n}\n\nfunction MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInnerProps<T>) {\n [props, ref] = useContextProps(props, ref, SelectableCollectionContext);\n let {filter, ...autocompleteMenuProps} = props;\n let filteredCollection = useMemo(() => filter ? collection.filter(filter) : collection, [collection, filter]);\n let state = useTreeState({\n ...props,\n collection: filteredCollection as ICollection<Node<object>>,\n children: undefined\n });\n let triggerState = useContext(RootMenuTriggerStateContext);\n let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);\n let {menuProps} = useMenu({...props, isVirtualized, onClose: props.onClose || triggerState?.close}, state, ref);\n let renderProps = useRenderProps({\n ...props,\n children: undefined,\n defaultClassName: 'react-aria-Menu',\n values: {\n isEmpty: state.collection.size === 0\n }\n });\n\n let emptyState: ReactElement | null = null;\n if (state.collection.size === 0 && props.renderEmptyState) {\n emptyState = (\n <div\n role=\"menuitem\"\n style={{display: 'contents'}}>\n {props.renderEmptyState()}\n </div>\n );\n }\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <FocusScope>\n <dom.div\n {...mergeProps(DOMProps, renderProps, menuProps)}\n ref={ref as RefObject<HTMLDivElement>}\n slot={props.slot || undefined}\n data-empty={state.collection.size === 0 || undefined}\n onScroll={props.onScroll}>\n <Provider\n values={[\n [MenuStateContext, state],\n [SeparatorContext, {elementType: 'div'}],\n [SectionContext, {name: 'MenuSection', render: MenuSectionInner}],\n [SubmenuTriggerContext, {parentMenuRef: ref, shouldUseVirtualFocus: autocompleteMenuProps?.shouldUseVirtualFocus}],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect}],\n [SelectableCollectionContext, null],\n [FieldInputContext, null],\n [SelectionManagerContext, state.selectionManager],\n /* Ensure root MenuTriggerState is defined, in case Menu is rendered outside a MenuTrigger. */\n /* We assume the context can never change between defined and undefined. */\n /* eslint-disable-next-line react-hooks/rules-of-hooks */\n [RootMenuTriggerStateContext, triggerState ?? useMenuTriggerState({})]\n ]}>\n <SharedElementTransition>\n <CollectionRoot\n collection={state.collection}\n persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)}\n scrollRef={ref} />\n </SharedElementTransition>\n </Provider>\n {emptyState}\n </dom.div>\n </FocusScope>\n );\n}\n\nexport interface MenuSectionProps<T> extends SectionProps<T>, MultipleSelection, DOMRenderProps<'section', undefined> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.\n * @default 'react-aria-MenuSection'\n */\n className?: string,\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean\n}\n\n// A subclass of SelectionManager that forwards focus-related properties to the parent,\n// but has its own local selection state.\nclass GroupSelectionManager extends SelectionManager {\n private parent: SelectionManager;\n\n constructor(parent: SelectionManager, state: MultipleSelectionState) {\n super(parent.collection, state);\n this.parent = parent;\n }\n\n get focusedKey() {\n return this.parent.focusedKey;\n }\n\n get isFocused() {\n return this.parent.isFocused;\n }\n\n setFocusedKey(key: Key | null, childFocusStrategy?: FocusStrategy): void {\n return this.parent.setFocusedKey(key, childFocusStrategy);\n }\n\n setFocused(isFocused: boolean): void {\n this.parent.setFocused(isFocused);\n }\n\n get childFocusStrategy() {\n return this.parent.childFocusStrategy;\n }\n}\n\nfunction MenuSectionInner<T extends object>(props: MenuSectionProps<T>, ref: ForwardedRef<HTMLElement>, section: Node<T>, className = 'react-aria-MenuSection') {\n let state = useContext(MenuStateContext)!;\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let [headingRef, heading] = useSlot();\n let {headingProps, groupProps} = useMenuSection({\n heading,\n 'aria-label': section.props['aria-label'] ?? undefined\n });\n let renderProps = useRenderProps({\n ...props,\n id: undefined,\n children: undefined,\n defaultClassName: className,\n className: section.props?.className,\n style: section.props?.style,\n values: undefined\n });\n\n let parent = useContext(SelectionManagerContext)!;\n let selectionState = useMultipleSelectionState(props);\n let manager = props.selectionMode != null ? new GroupSelectionManager(parent, selectionState) : parent;\n\n let closeOnSelect = useSlottedContext(MenuItemContext)?.shouldCloseOnSelect;\n\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n\n return (\n <dom.section\n {...mergeProps(DOMProps, renderProps, groupProps)}\n ref={ref}>\n <Provider\n values={[\n [HeaderContext, {...headingProps, ref: headingRef}],\n [SelectionManagerContext, manager],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect ?? closeOnSelect}]\n ]}>\n <CollectionBranch collection={state.collection} parent={section} />\n </Provider>\n </dom.section>\n );\n}\n\n/**\n * A MenuSection represents a section within a Menu.\n */\nexport const MenuSection = /*#__PURE__*/ createBranchComponent(SectionNode, MenuSectionInner);\n\nexport interface MenuItemRenderProps extends ItemRenderProps {\n /**\n * Whether the item has a submenu.\n *\n * @selector [data-has-submenu]\n */\n hasSubmenu: boolean,\n /**\n * Whether the item's submenu is open.\n *\n * @selector [data-open]\n */\n isOpen: boolean\n}\n\nexport interface MenuItemProps<T = object> extends Omit<RenderProps<MenuItemRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', MenuItemRenderProps>, LinkDOMProps, HoverEvents, FocusEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * 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.\n * @default 'react-aria-MenuItem'\n */\n className?: ClassNameOrFunction<MenuItemRenderProps>,\n /** The unique id of the item. */\n id?: Key,\n /** The object value that this item represents. When using dynamic collections, this is set automatically. */\n value?: T,\n /** A string representation of the item's contents, used for features like typeahead. */\n textValue?: string,\n /** An accessibility label for this item. */\n 'aria-label'?: string,\n /** Whether the item is disabled. */\n isDisabled?: boolean,\n /** Handler that is called when the item is selected. */\n onAction?: () => void,\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean\n}\n\nconst MenuItemContext = createContext<ContextValue<MenuItemProps, HTMLDivElement>>(null);\n\n/**\n * A MenuItem represents an individual action in a Menu.\n */\nexport const MenuItem = /*#__PURE__*/ createLeafComponent(ItemNode, function MenuItem<T extends object>(props: MenuItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {\n [props, forwardedRef] = useContextProps(props, forwardedRef, MenuItemContext);\n let id = useSlottedContext(MenuItemContext)?.id as string;\n let state = useContext(MenuStateContext)!;\n let ref = useObjectRef<any>(forwardedRef);\n let selectionManager = useContext(SelectionManagerContext)!;\n let {isVirtualized} = useContext(CollectionRendererContext);\n let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps, ...states} = useMenuItem({\n ...props,\n id,\n key: item.key,\n selectionManager,\n isVirtualized: isVirtualized\n }, state, ref);\n\n let {hoverProps, isHovered} = useHover({\n isDisabled: states.isDisabled\n });\n let renderProps = useRenderProps<MenuItemRenderProps, any>({\n ...props,\n id: undefined,\n children: item.rendered,\n defaultClassName: 'react-aria-MenuItem',\n values: {\n ...states,\n isHovered,\n isFocusVisible: states.isFocusVisible,\n selectionMode: selectionManager.selectionMode,\n selectionBehavior: selectionManager.selectionBehavior,\n hasSubmenu: !!props['aria-haspopup'],\n isOpen: props['aria-expanded'] === 'true'\n }\n });\n\n let ElementType = props.href ? dom.a : dom.div;\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n delete DOMProps.onClick;\n\n return (\n <ElementType\n {...mergeProps(DOMProps, renderProps, menuItemProps, hoverProps)}\n ref={ref}\n data-disabled={states.isDisabled || undefined}\n data-hovered={isHovered || undefined}\n data-focused={states.isFocused || undefined}\n data-focus-visible={states.isFocusVisible || undefined}\n data-pressed={states.isPressed || undefined}\n data-selected={states.isSelected || undefined}\n data-selection-mode={selectionManager.selectionMode === 'none' ? undefined : selectionManager.selectionMode}\n data-has-submenu={!!props['aria-haspopup'] || undefined}\n data-open={props['aria-expanded'] === 'true' || undefined}>\n <Provider\n values={[\n [TextContext, {\n slots: {\n [DEFAULT_SLOT]: labelProps,\n label: labelProps,\n description: descriptionProps\n }\n }],\n [KeyboardContext, keyboardShortcutProps],\n [SelectionIndicatorContext, {isSelected: states.isSelected}]\n ]}>\n {renderProps.children}\n </Provider>\n </ElementType>\n );\n});\n"],"names":[],"version":3,"file":"Menu.cjs.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react-aria-components/src/Menu.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n AriaMenuProps,\n useMenu,\n useMenuItem,\n useMenuSection,\n useMenuTrigger,\n useSubmenuTrigger\n} from 'react-aria/useMenu';\nimport {\n BaseCollection,\n CollectionNode,\n ItemNode,\n SectionNode\n} from 'react-aria/private/collections/BaseCollection';\nimport {\n MenuTriggerProps as BaseMenuTriggerProps,\n RootMenuTriggerState,\n useMenuTriggerState,\n useSubmenuTriggerState\n} from 'react-stately/useMenuTriggerState';\nimport {\n ClassNameOrFunction,\n ContextValue,\n DEFAULT_SLOT,\n dom,\n DOMRenderProps,\n PossibleLinkDOMRenderProps,\n Provider,\n RenderProps,\n SlotProps,\n StyleRenderProps,\n useContextProps,\n useRenderProps,\n useSlot,\n useSlottedContext\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {\n CollectionBuilder,\n createBranchComponent,\n createLeafComponent\n} from 'react-aria/CollectionBuilder';\nimport {\n CollectionProps,\n CollectionRendererContext,\n ItemRenderProps,\n SectionContext,\n SectionProps,\n usePersistedKeys\n} from './Collection';\nimport {\n FieldInputContext,\n SelectableCollectionContext,\n SelectableCollectionContextValue\n} from './Autocomplete';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {\n FocusEvents,\n FocusStrategy,\n forwardRefType,\n GlobalDOMAttributes,\n HoverEvents,\n Key,\n LinkDOMProps,\n MultipleSelection,\n PressEvents\n} from '@react-types/shared';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {HeaderContext} from './Header';\nimport {KeyboardContext} from './Keyboard';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {MultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {Node} from '@react-types/shared';\nimport {OverlayTriggerStateContext} from './Dialog';\nimport {PopoverContext} from './Popover';\nimport {PressResponder} from 'react-aria/private/interactions/PressResponder';\nimport React, {\n createContext,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactElement,\n ReactNode,\n RefObject,\n useContext,\n useMemo,\n useRef\n} from 'react';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SelectionManager} from 'react-stately/private/selection/SelectionManager';\nimport {SeparatorContext} from './Separator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {TextContext} from './Text';\nimport {TreeState, useTreeState} from 'react-stately/useTreeState';\nimport {useHover} from 'react-aria/useHover';\nimport {useIsHidden} from 'react-aria/private/collections/Hidden';\nimport {useMultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {useObjectRef} from 'react-aria/useObjectRef';\n\nexport const MenuContext = createContext<ContextValue<MenuProps<any>, HTMLDivElement>>(null);\nexport const MenuStateContext = createContext<TreeState<any> | null>(null);\nexport const RootMenuTriggerStateContext = createContext<RootMenuTriggerState | null>(null);\nconst SelectionManagerContext = createContext<SelectionManager | null>(null);\n\nexport interface MenuTriggerProps extends BaseMenuTriggerProps {\n children: ReactNode;\n}\n\nexport function MenuTrigger(props: MenuTriggerProps): JSX.Element | null {\n let state = useMenuTriggerState(props);\n let ref = useRef<HTMLButtonElement>(null);\n let {menuTriggerProps, menuProps} = useMenuTrigger(\n {\n ...props,\n type: 'menu'\n },\n state,\n ref\n );\n let scrollRef = useRef(null);\n\n // If within a collection (e.g. Tabs), render nothing.\n // Not using createHideableComponent for this because that also creates a forwardRef.\n let isHidden = useIsHidden();\n if (isHidden) {\n return null;\n }\n\n return (\n <Provider\n values={[\n [MenuContext, {...menuProps, ref: scrollRef}],\n [OverlayTriggerStateContext, state],\n [RootMenuTriggerStateContext, state],\n [\n PopoverContext,\n {\n trigger: 'MenuTrigger',\n triggerRef: ref,\n scrollRef,\n placement: 'bottom start',\n 'aria-labelledby': menuProps['aria-labelledby']\n }\n ]\n ]}>\n <PressResponder {...menuTriggerProps} ref={ref} isPressed={state.isOpen}>\n {props.children}\n </PressResponder>\n </Provider>\n );\n}\n\nexport interface SubmenuTriggerProps {\n /**\n * The contents of the SubmenuTrigger. The first child should be an Item (the trigger) and the\n * second child should be the Popover (for the submenu).\n */\n children: ReactElement[];\n /**\n * The delay time in milliseconds for the submenu to appear after hovering over the trigger.\n *\n * @default 200\n */\n delay?: number;\n}\n\nconst SubmenuTriggerContext = createContext<{\n parentMenuRef: RefObject<HTMLElement | null>;\n shouldUseVirtualFocus?: boolean;\n} | null>(null);\n\nclass SubmenuTriggerNode<T> extends CollectionNode<T> {\n static readonly type = 'submenutrigger';\n\n filter(\n collection: BaseCollection<T>,\n newCollection: BaseCollection<T>,\n filterFn: (textValue: string, node: Node<T>) => boolean\n ): CollectionNode<T> | null {\n let triggerNode = collection.getItem(this.firstChildKey!);\n if (triggerNode && filterFn(triggerNode.textValue, this)) {\n let clone = this.clone();\n newCollection.addDescendants(clone, collection);\n return clone;\n }\n\n return null;\n }\n}\n\n/**\n * A submenu trigger is used to wrap a submenu's trigger item and the submenu itself.\n *\n * @version alpha\n */\nexport const SubmenuTrigger = /*#__PURE__*/ createBranchComponent(\n SubmenuTriggerNode,\n (props: SubmenuTriggerProps, ref: ForwardedRef<HTMLDivElement>, item) => {\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let state = useContext(MenuStateContext)!;\n let rootMenuTriggerState = useContext(RootMenuTriggerStateContext)!;\n let submenuTriggerState = useSubmenuTriggerState({triggerKey: item.key}, rootMenuTriggerState);\n let submenuRef = useRef<HTMLDivElement>(null);\n let itemRef = useObjectRef(ref);\n let {parentMenuRef, shouldUseVirtualFocus} = useContext(SubmenuTriggerContext)!;\n let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger(\n {\n parentMenuRef,\n submenuRef,\n delay: props.delay,\n shouldUseVirtualFocus\n },\n submenuTriggerState,\n itemRef\n );\n\n return (\n <Provider\n values={[\n [MenuItemContext, {...submenuTriggerProps, onAction: undefined, ref: itemRef}],\n [\n MenuContext,\n {\n ref: submenuRef,\n ...submenuProps\n }\n ],\n [OverlayTriggerStateContext, submenuTriggerState],\n [\n PopoverContext,\n {\n trigger: 'SubmenuTrigger',\n triggerRef: itemRef,\n placement: 'end top',\n 'aria-labelledby': submenuProps['aria-labelledby'],\n ...popoverProps\n }\n ]\n ]}>\n <CollectionBranch collection={state.collection} parent={item} />\n {props.children[1]}\n </Provider>\n );\n },\n props => props.children[0]\n);\n\nexport interface MenuRenderProps {\n /**\n * Whether the menu has no items and should display its empty state.\n *\n * @selector [data-empty]\n */\n isEmpty: boolean;\n}\n\nexport interface MenuProps<T>\n extends\n Omit<AriaMenuProps<T>, 'children'>,\n CollectionProps<T>,\n StyleRenderProps<MenuRenderProps>,\n SlotProps,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Menu'\n */\n className?: ClassNameOrFunction<MenuRenderProps>;\n /** Provides content to display when there are no items in the list. */\n renderEmptyState?: () => ReactNode;\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean;\n}\n\n/**\n * A menu displays a list of actions or options that a user can choose.\n */\nexport const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T>(\n props: MenuProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, MenuContext);\n\n // Delay rendering the actual menu until we have the collection so that auto focus works properly.\n return (\n <CollectionBuilder content={<Collection {...props} />}>\n {collection => <MenuInner props={props} collection={collection} menuRef={ref} />}\n </CollectionBuilder>\n );\n});\n\ninterface MenuInnerProps<T> {\n // For now we append filter and other autocomplete context props here for typescript, but eventually we can consider exposing these\n // as top level props for users to use with standalone Menus\n props: MenuProps<T> & {\n filter?: SelectableCollectionContextValue<object>['filter'];\n shouldUseVirtualFocus?: boolean;\n };\n collection: BaseCollection<any>;\n menuRef: RefObject<HTMLElement | null>;\n}\n\nfunction MenuInner<T>({props, collection, menuRef: ref}: MenuInnerProps<T>) {\n [props, ref] = useContextProps(props, ref, SelectableCollectionContext);\n let {filter, ...autocompleteMenuProps} = props;\n let filteredCollection = useMemo(\n () => (filter ? collection.filter(filter) : collection),\n [collection, filter]\n );\n let state = useTreeState({\n ...props,\n collection: filteredCollection,\n children: undefined\n });\n let triggerState = useContext(RootMenuTriggerStateContext);\n let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);\n let {menuProps} = useMenu(\n {...props, isVirtualized, onClose: props.onClose || triggerState?.close},\n state,\n ref\n );\n let renderProps = useRenderProps({\n ...props,\n children: undefined,\n defaultClassName: 'react-aria-Menu',\n values: {\n isEmpty: state.collection.size === 0\n }\n });\n\n let emptyState: ReactElement | null = null;\n if (state.collection.size === 0 && props.renderEmptyState) {\n emptyState = (\n <div role=\"menuitem\" style={{display: 'contents'}}>\n {props.renderEmptyState()}\n </div>\n );\n }\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <FocusScope>\n <dom.div\n {...mergeProps(DOMProps, renderProps, menuProps)}\n ref={ref as RefObject<HTMLDivElement>}\n slot={props.slot || undefined}\n data-empty={state.collection.size === 0 || undefined}\n onScroll={props.onScroll}>\n <Provider\n values={[\n [MenuStateContext, state],\n [SeparatorContext, {elementType: 'div'}],\n [SectionContext, {name: 'MenuSection', render: MenuSectionInner}],\n [\n SubmenuTriggerContext,\n {\n parentMenuRef: ref,\n shouldUseVirtualFocus: autocompleteMenuProps?.shouldUseVirtualFocus\n }\n ],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect}],\n [SelectableCollectionContext, null],\n [FieldInputContext, null],\n [SelectionManagerContext, state.selectionManager],\n /* Ensure root MenuTriggerState is defined, in case Menu is rendered outside a MenuTrigger. */\n /* We assume the context can never change between defined and undefined. */\n /* eslint-disable-next-line react-hooks/rules-of-hooks */\n [RootMenuTriggerStateContext, triggerState ?? useMenuTriggerState({})]\n ]}>\n <SharedElementTransition>\n <CollectionRoot\n collection={state.collection}\n persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)}\n scrollRef={ref}\n />\n </SharedElementTransition>\n </Provider>\n {emptyState}\n </dom.div>\n </FocusScope>\n );\n}\n\nexport interface MenuSectionProps<T>\n extends\n SectionProps<T>,\n Omit<MultipleSelection, 'disabledKeys'>,\n DOMRenderProps<'section', undefined> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element.\n *\n * @default 'react-aria-MenuSection'\n */\n className?: string;\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean;\n}\n\n// A subclass of SelectionManager that forwards focus-related properties to the parent,\n// but has its own local selection state.\nclass GroupSelectionManager extends SelectionManager {\n private parent: SelectionManager;\n\n constructor(parent: SelectionManager, state: MultipleSelectionState) {\n super(parent.collection, state);\n this.parent = parent;\n }\n\n get focusedKey() {\n return this.parent.focusedKey;\n }\n\n get isFocused() {\n return this.parent.isFocused;\n }\n\n setFocusedKey(key: Key | null, childFocusStrategy?: FocusStrategy): void {\n return this.parent.setFocusedKey(key, childFocusStrategy);\n }\n\n setFocused(isFocused: boolean): void {\n this.parent.setFocused(isFocused);\n }\n\n get childFocusStrategy() {\n return this.parent.childFocusStrategy;\n }\n}\n\nfunction MenuSectionInner<T>(\n props: MenuSectionProps<T>,\n ref: ForwardedRef<HTMLElement>,\n section: Node<T>,\n className = 'react-aria-MenuSection'\n) {\n let state = useContext(MenuStateContext)!;\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let [headingRef, heading] = useSlot();\n let {headingProps, groupProps} = useMenuSection({\n heading,\n 'aria-label': section.props['aria-label'] ?? undefined\n });\n let renderProps = useRenderProps({\n ...props,\n id: undefined,\n children: undefined,\n defaultClassName: className,\n className: section.props?.className,\n style: section.props?.style,\n values: undefined\n });\n\n let parent = useContext(SelectionManagerContext)!;\n let selectionState = useMultipleSelectionState(props);\n let manager =\n props.selectionMode != null ? new GroupSelectionManager(parent, selectionState) : parent;\n\n let closeOnSelect = useSlottedContext(MenuItemContext)?.shouldCloseOnSelect;\n\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n\n return (\n <dom.section {...mergeProps(DOMProps, renderProps, groupProps)} ref={ref}>\n <Provider\n values={[\n [HeaderContext, {...headingProps, ref: headingRef}],\n [SelectionManagerContext, manager],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect ?? closeOnSelect}]\n ]}>\n <CollectionBranch collection={state.collection} parent={section} />\n </Provider>\n </dom.section>\n );\n}\n\n/**\n * A MenuSection represents a section within a Menu.\n */\nexport const MenuSection = /*#__PURE__*/ createBranchComponent(SectionNode, MenuSectionInner);\n\nexport interface MenuItemRenderProps extends ItemRenderProps {\n /**\n * Whether the item has a submenu.\n *\n * @selector [data-has-submenu]\n */\n hasSubmenu: boolean;\n /**\n * Whether the item's submenu is open.\n *\n * @selector [data-open]\n */\n isOpen: boolean;\n}\n\nexport interface MenuItemProps<T = object>\n extends\n Omit<RenderProps<MenuItemRenderProps>, 'render'>,\n PossibleLinkDOMRenderProps<'div', MenuItemRenderProps>,\n LinkDOMProps,\n HoverEvents,\n FocusEvents,\n PressEvents,\n Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-MenuItem'\n */\n className?: ClassNameOrFunction<MenuItemRenderProps>;\n /** The unique id of the item. */\n id?: Key;\n /**\n * The object value that this item represents. When using dynamic collections, this is set\n * automatically.\n */\n value?: T;\n /** A string representation of the item's contents, used for features like typeahead. */\n textValue?: string;\n /** An accessibility label for this item. */\n 'aria-label'?: string;\n /** Whether the item is disabled. */\n isDisabled?: boolean;\n /** Handler that is called when the item is selected. */\n onAction?: () => void;\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean;\n}\n\nconst MenuItemContext = createContext<ContextValue<MenuItemProps, HTMLDivElement>>(null);\n\n/**\n * A MenuItem represents an individual action in a Menu.\n */\nexport const MenuItem = /*#__PURE__*/ createLeafComponent(ItemNode, function MenuItem<\n T\n>(props: MenuItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {\n [props, forwardedRef] = useContextProps(props, forwardedRef, MenuItemContext);\n let id = useSlottedContext(MenuItemContext)?.id as string;\n let state = useContext(MenuStateContext)!;\n let ref = useObjectRef<any>(forwardedRef);\n let selectionManager = useContext(SelectionManagerContext)!;\n let {isVirtualized} = useContext(CollectionRendererContext);\n let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps, ...states} = useMenuItem(\n {\n ...props,\n id,\n key: item.key,\n selectionManager,\n isVirtualized: isVirtualized\n },\n state,\n ref\n );\n\n let {hoverProps, isHovered} = useHover({\n isDisabled: states.isDisabled\n });\n let renderProps = useRenderProps<MenuItemRenderProps, any>({\n ...props,\n id: undefined,\n children: item.rendered,\n defaultClassName: 'react-aria-MenuItem',\n values: {\n ...states,\n isHovered,\n isFocusVisible: states.isFocusVisible,\n selectionMode: selectionManager.selectionMode,\n selectionBehavior: selectionManager.selectionBehavior,\n hasSubmenu: !!props['aria-haspopup'],\n isOpen: props['aria-expanded'] === 'true'\n }\n });\n\n let ElementType = props.href ? dom.a : dom.div;\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n delete DOMProps.onClick;\n\n return (\n <ElementType\n {...mergeProps(DOMProps, renderProps, menuItemProps, hoverProps)}\n ref={ref}\n data-disabled={states.isDisabled || undefined}\n data-hovered={isHovered || undefined}\n data-focused={states.isFocused || undefined}\n data-focus-visible={states.isFocusVisible || undefined}\n data-pressed={states.isPressed || undefined}\n data-selected={states.isSelected || undefined}\n data-selection-mode={\n selectionManager.selectionMode === 'none' ? undefined : selectionManager.selectionMode\n }\n data-has-submenu={!!props['aria-haspopup'] || undefined}\n data-open={props['aria-expanded'] === 'true' || undefined}>\n <Provider\n values={[\n [\n TextContext,\n {\n slots: {\n [DEFAULT_SLOT]: labelProps,\n label: labelProps,\n description: descriptionProps\n }\n }\n ],\n [KeyboardContext, keyboardShortcutProps],\n [SelectionIndicatorContext, {isSelected: states.isSelected}]\n ]}>\n {renderProps.children}\n </Provider>\n </ElementType>\n );\n});\n"],"names":[],"version":3,"file":"Menu.cjs.map"}
|
package/dist/private/Menu.js
CHANGED
|
@@ -18,13 +18,13 @@ import {filterDOMProps as $gKmcL$filterDOMProps} from "react-aria/filterDOMProps
|
|
|
18
18
|
import {FocusScope as $gKmcL$FocusScope} from "react-aria/FocusScope";
|
|
19
19
|
import {mergeProps as $gKmcL$mergeProps} from "react-aria/mergeProps";
|
|
20
20
|
import {PressResponder as $gKmcL$PressResponder} from "react-aria/private/interactions/PressResponder";
|
|
21
|
-
import $gKmcL$react, {createContext as $gKmcL$createContext, useRef as $gKmcL$useRef,
|
|
21
|
+
import $gKmcL$react, {createContext as $gKmcL$createContext, useRef as $gKmcL$useRef, useContext as $gKmcL$useContext, forwardRef as $gKmcL$forwardRef, useMemo as $gKmcL$useMemo} from "react";
|
|
22
22
|
import {SelectionManager as $gKmcL$SelectionManager} from "react-stately/private/selection/SelectionManager";
|
|
23
23
|
import {useTreeState as $gKmcL$useTreeState} from "react-stately/useTreeState";
|
|
24
24
|
import {useHover as $gKmcL$useHover} from "react-aria/useHover";
|
|
25
|
+
import {useIsHidden as $gKmcL$useIsHidden} from "react-aria/private/collections/Hidden";
|
|
25
26
|
import {useMultipleSelectionState as $gKmcL$useMultipleSelectionState} from "react-stately/useMultipleSelectionState";
|
|
26
27
|
import {useObjectRef as $gKmcL$useObjectRef} from "react-aria/useObjectRef";
|
|
27
|
-
import {useResizeObserver as $gKmcL$useResizeObserver} from "react-aria/private/utils/useResizeObserver";
|
|
28
28
|
|
|
29
29
|
/*
|
|
30
30
|
* Copyright 2022 Adobe. All rights reserved.
|
|
@@ -74,18 +74,11 @@ function $113aa0613e727c6c$export$27d2ad3c5815583e(props) {
|
|
|
74
74
|
...props,
|
|
75
75
|
type: 'menu'
|
|
76
76
|
}, state, ref);
|
|
77
|
-
// Allows menu width to match button
|
|
78
|
-
let [buttonWidth, setButtonWidth] = (0, $gKmcL$useState)(null);
|
|
79
|
-
let onResize = (0, $gKmcL$useCallback)(()=>{
|
|
80
|
-
if (ref.current) setButtonWidth(ref.current.offsetWidth + 'px');
|
|
81
|
-
}, [
|
|
82
|
-
ref
|
|
83
|
-
]);
|
|
84
|
-
(0, $gKmcL$useResizeObserver)({
|
|
85
|
-
ref: ref,
|
|
86
|
-
onResize: onResize
|
|
87
|
-
});
|
|
88
77
|
let scrollRef = (0, $gKmcL$useRef)(null);
|
|
78
|
+
// If within a collection (e.g. Tabs), render nothing.
|
|
79
|
+
// Not using createHideableComponent for this because that also creates a forwardRef.
|
|
80
|
+
let isHidden = (0, $gKmcL$useIsHidden)();
|
|
81
|
+
if (isHidden) return null;
|
|
89
82
|
return /*#__PURE__*/ (0, $gKmcL$react).createElement((0, $b7b7a92703138c9b$export$2881499e37b75b9a), {
|
|
90
83
|
values: [
|
|
91
84
|
[
|
|
@@ -110,9 +103,6 @@ function $113aa0613e727c6c$export$27d2ad3c5815583e(props) {
|
|
|
110
103
|
triggerRef: ref,
|
|
111
104
|
scrollRef: scrollRef,
|
|
112
105
|
placement: 'bottom start',
|
|
113
|
-
style: {
|
|
114
|
-
'--trigger-width': buttonWidth
|
|
115
|
-
},
|
|
116
106
|
'aria-labelledby': menuProps['aria-labelledby']
|
|
117
107
|
}
|
|
118
108
|
]
|
package/dist/private/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react-aria-components/src/Menu.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n AriaMenuProps,\n useMenu,\n useMenuItem,\n useMenuSection,\n useMenuTrigger,\n useSubmenuTrigger\n} from 'react-aria/useMenu';\n\nimport {BaseCollection, CollectionNode, ItemNode, SectionNode} from 'react-aria/private/collections/BaseCollection';\nimport {\n MenuTriggerProps as BaseMenuTriggerProps,\n RootMenuTriggerState,\n useMenuTriggerState,\n useSubmenuTriggerState\n} from 'react-stately/useMenuTriggerState';\nimport {\n ClassNameOrFunction,\n ContextValue,\n DEFAULT_SLOT,\n dom,\n DOMRenderProps,\n PossibleLinkDOMRenderProps,\n Provider,\n RenderProps,\n SlotProps,\n StyleRenderProps,\n useContextProps,\n useRenderProps,\n useSlot,\n useSlottedContext\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {CollectionBuilder, createBranchComponent, createLeafComponent} from 'react-aria/CollectionBuilder';\nimport {CollectionProps, CollectionRendererContext, ItemRenderProps, SectionContext, SectionProps, usePersistedKeys} from './Collection';\n\nimport {FieldInputContext, SelectableCollectionContext, SelectableCollectionContextValue} from './Autocomplete';\n\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusEvents, FocusStrategy, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, MultipleSelection, PressEvents} from '@react-types/shared';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {HeaderContext} from './Header';\nimport {Collection as ICollection, Node} from '@react-types/shared';\nimport {KeyboardContext} from './Keyboard';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {MultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {OverlayTriggerStateContext} from './Dialog';\nimport {PopoverContext} from './Popover';\nimport {PressResponder} from 'react-aria/private/interactions/PressResponder';\nimport React, {\n createContext,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactElement,\n ReactNode,\n RefObject,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SelectionManager} from 'react-stately/private/selection/SelectionManager';\nimport {SeparatorContext} from './Separator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {TextContext} from './Text';\nimport {TreeState, useTreeState} from 'react-stately/useTreeState';\nimport {useHover} from 'react-aria/useHover';\nimport {useMultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {useObjectRef} from 'react-aria/useObjectRef';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\n\nexport const MenuContext = createContext<ContextValue<MenuProps<any>, HTMLDivElement>>(null);\nexport const MenuStateContext = createContext<TreeState<any> | null>(null);\nexport const RootMenuTriggerStateContext = createContext<RootMenuTriggerState | null>(null);\nconst SelectionManagerContext = createContext<SelectionManager | null>(null);\n\nexport interface MenuTriggerProps extends BaseMenuTriggerProps {\n children: ReactNode\n}\n\nexport function MenuTrigger(props: MenuTriggerProps): JSX.Element {\n let state = useMenuTriggerState(props);\n let ref = useRef<HTMLButtonElement>(null);\n let {menuTriggerProps, menuProps} = useMenuTrigger({\n ...props,\n type: 'menu'\n }, state, ref);\n // Allows menu width to match button\n let [buttonWidth, setButtonWidth] = useState<string | null>(null);\n let onResize = useCallback(() => {\n if (ref.current) {\n setButtonWidth(ref.current.offsetWidth + 'px');\n }\n }, [ref]);\n\n useResizeObserver({\n ref: ref,\n onResize: onResize\n });\n let scrollRef = useRef(null);\n\n return (\n <Provider\n values={[\n [MenuContext, {...menuProps, ref: scrollRef}],\n [OverlayTriggerStateContext, state],\n [RootMenuTriggerStateContext, state],\n [PopoverContext, {\n trigger: 'MenuTrigger',\n triggerRef: ref,\n scrollRef,\n placement: 'bottom start',\n style: {'--trigger-width': buttonWidth} as React.CSSProperties,\n 'aria-labelledby': menuProps['aria-labelledby']\n }]\n ]}>\n <PressResponder {...menuTriggerProps} ref={ref} isPressed={state.isOpen}>\n {props.children}\n </PressResponder>\n </Provider>\n );\n}\n\nexport interface SubmenuTriggerProps {\n /**\n * The contents of the SubmenuTrigger. The first child should be an Item (the trigger) and the second child should be the Popover (for the submenu).\n */\n children: ReactElement[],\n /**\n * The delay time in milliseconds for the submenu to appear after hovering over the trigger.\n * @default 200\n */\n delay?: number\n}\n\nconst SubmenuTriggerContext = createContext<{parentMenuRef: RefObject<HTMLElement | null>, shouldUseVirtualFocus?: boolean} | null>(null);\n\nclass SubmenuTriggerNode<T> extends CollectionNode<T> {\n static readonly type = 'submenutrigger';\n\n filter(collection: BaseCollection<T>, newCollection: BaseCollection<T>, filterFn: (textValue: string, node: Node<T>) => boolean): CollectionNode<T> | null {\n let triggerNode = collection.getItem(this.firstChildKey!);\n if (triggerNode && filterFn(triggerNode.textValue, this)) {\n let clone = this.clone();\n newCollection.addDescendants(clone, collection);\n return clone;\n }\n\n return null;\n }\n}\n\n/**\n * A submenu trigger is used to wrap a submenu's trigger item and the submenu itself.\n *\n * @version alpha\n */\nexport const SubmenuTrigger = /*#__PURE__*/ createBranchComponent(SubmenuTriggerNode, (props: SubmenuTriggerProps, ref: ForwardedRef<HTMLDivElement>, item) => {\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let state = useContext(MenuStateContext)!;\n let rootMenuTriggerState = useContext(RootMenuTriggerStateContext)!;\n let submenuTriggerState = useSubmenuTriggerState({triggerKey: item.key}, rootMenuTriggerState);\n let submenuRef = useRef<HTMLDivElement>(null);\n let itemRef = useObjectRef(ref);\n let {parentMenuRef, shouldUseVirtualFocus} = useContext(SubmenuTriggerContext)!;\n let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger({\n parentMenuRef,\n submenuRef,\n delay: props.delay,\n shouldUseVirtualFocus\n }, submenuTriggerState, itemRef);\n\n return (\n <Provider\n values={[\n [MenuItemContext, {...submenuTriggerProps, onAction: undefined, ref: itemRef}],\n [MenuContext, {\n ref: submenuRef,\n ...submenuProps\n }],\n [OverlayTriggerStateContext, submenuTriggerState],\n [PopoverContext, {\n trigger: 'SubmenuTrigger',\n triggerRef: itemRef,\n placement: 'end top',\n 'aria-labelledby': submenuProps['aria-labelledby'],\n ...popoverProps\n }]\n ]}>\n <CollectionBranch collection={state.collection} parent={item} />\n {props.children[1]}\n </Provider>\n );\n}, props => props.children[0]);\n\nexport interface MenuRenderProps {\n /**\n * Whether the menu has no items and should display its empty state.\n * @selector [data-empty]\n */\n isEmpty: boolean\n}\n\nexport interface MenuProps<T> extends Omit<AriaMenuProps<T>, 'children'>, CollectionProps<T>, StyleRenderProps<MenuRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {\n /**\n * 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.\n * @default 'react-aria-Menu'\n */\n className?: ClassNameOrFunction<MenuRenderProps>,\n /** Provides content to display when there are no items in the list. */\n renderEmptyState?: () => ReactNode,\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean\n}\n\n/**\n * A menu displays a list of actions or options that a user can choose.\n */\nexport const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T extends object>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, MenuContext);\n\n // Delay rendering the actual menu until we have the collection so that auto focus works properly.\n return (\n <CollectionBuilder content={<Collection {...props} />}>\n {collection => <MenuInner props={props} collection={collection} menuRef={ref} />}\n </CollectionBuilder>\n );\n});\n\ninterface MenuInnerProps<T> {\n // For now we append filter and other autocomplete context props here for typescript, but eventually we can consider exposing these\n // as top level props for users to use with standalone Menus\n props: MenuProps<T> & {filter?: SelectableCollectionContextValue<object>['filter'], shouldUseVirtualFocus?: boolean},\n collection: BaseCollection<object>,\n menuRef: RefObject<HTMLElement | null>\n}\n\nfunction MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInnerProps<T>) {\n [props, ref] = useContextProps(props, ref, SelectableCollectionContext);\n let {filter, ...autocompleteMenuProps} = props;\n let filteredCollection = useMemo(() => filter ? collection.filter(filter) : collection, [collection, filter]);\n let state = useTreeState({\n ...props,\n collection: filteredCollection as ICollection<Node<object>>,\n children: undefined\n });\n let triggerState = useContext(RootMenuTriggerStateContext);\n let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);\n let {menuProps} = useMenu({...props, isVirtualized, onClose: props.onClose || triggerState?.close}, state, ref);\n let renderProps = useRenderProps({\n ...props,\n children: undefined,\n defaultClassName: 'react-aria-Menu',\n values: {\n isEmpty: state.collection.size === 0\n }\n });\n\n let emptyState: ReactElement | null = null;\n if (state.collection.size === 0 && props.renderEmptyState) {\n emptyState = (\n <div\n role=\"menuitem\"\n style={{display: 'contents'}}>\n {props.renderEmptyState()}\n </div>\n );\n }\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <FocusScope>\n <dom.div\n {...mergeProps(DOMProps, renderProps, menuProps)}\n ref={ref as RefObject<HTMLDivElement>}\n slot={props.slot || undefined}\n data-empty={state.collection.size === 0 || undefined}\n onScroll={props.onScroll}>\n <Provider\n values={[\n [MenuStateContext, state],\n [SeparatorContext, {elementType: 'div'}],\n [SectionContext, {name: 'MenuSection', render: MenuSectionInner}],\n [SubmenuTriggerContext, {parentMenuRef: ref, shouldUseVirtualFocus: autocompleteMenuProps?.shouldUseVirtualFocus}],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect}],\n [SelectableCollectionContext, null],\n [FieldInputContext, null],\n [SelectionManagerContext, state.selectionManager],\n /* Ensure root MenuTriggerState is defined, in case Menu is rendered outside a MenuTrigger. */\n /* We assume the context can never change between defined and undefined. */\n /* eslint-disable-next-line react-hooks/rules-of-hooks */\n [RootMenuTriggerStateContext, triggerState ?? useMenuTriggerState({})]\n ]}>\n <SharedElementTransition>\n <CollectionRoot\n collection={state.collection}\n persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)}\n scrollRef={ref} />\n </SharedElementTransition>\n </Provider>\n {emptyState}\n </dom.div>\n </FocusScope>\n );\n}\n\nexport interface MenuSectionProps<T> extends SectionProps<T>, MultipleSelection, DOMRenderProps<'section', undefined> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.\n * @default 'react-aria-MenuSection'\n */\n className?: string,\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean\n}\n\n// A subclass of SelectionManager that forwards focus-related properties to the parent,\n// but has its own local selection state.\nclass GroupSelectionManager extends SelectionManager {\n private parent: SelectionManager;\n\n constructor(parent: SelectionManager, state: MultipleSelectionState) {\n super(parent.collection, state);\n this.parent = parent;\n }\n\n get focusedKey() {\n return this.parent.focusedKey;\n }\n\n get isFocused() {\n return this.parent.isFocused;\n }\n\n setFocusedKey(key: Key | null, childFocusStrategy?: FocusStrategy): void {\n return this.parent.setFocusedKey(key, childFocusStrategy);\n }\n\n setFocused(isFocused: boolean): void {\n this.parent.setFocused(isFocused);\n }\n\n get childFocusStrategy() {\n return this.parent.childFocusStrategy;\n }\n}\n\nfunction MenuSectionInner<T extends object>(props: MenuSectionProps<T>, ref: ForwardedRef<HTMLElement>, section: Node<T>, className = 'react-aria-MenuSection') {\n let state = useContext(MenuStateContext)!;\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let [headingRef, heading] = useSlot();\n let {headingProps, groupProps} = useMenuSection({\n heading,\n 'aria-label': section.props['aria-label'] ?? undefined\n });\n let renderProps = useRenderProps({\n ...props,\n id: undefined,\n children: undefined,\n defaultClassName: className,\n className: section.props?.className,\n style: section.props?.style,\n values: undefined\n });\n\n let parent = useContext(SelectionManagerContext)!;\n let selectionState = useMultipleSelectionState(props);\n let manager = props.selectionMode != null ? new GroupSelectionManager(parent, selectionState) : parent;\n\n let closeOnSelect = useSlottedContext(MenuItemContext)?.shouldCloseOnSelect;\n\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n\n return (\n <dom.section\n {...mergeProps(DOMProps, renderProps, groupProps)}\n ref={ref}>\n <Provider\n values={[\n [HeaderContext, {...headingProps, ref: headingRef}],\n [SelectionManagerContext, manager],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect ?? closeOnSelect}]\n ]}>\n <CollectionBranch collection={state.collection} parent={section} />\n </Provider>\n </dom.section>\n );\n}\n\n/**\n * A MenuSection represents a section within a Menu.\n */\nexport const MenuSection = /*#__PURE__*/ createBranchComponent(SectionNode, MenuSectionInner);\n\nexport interface MenuItemRenderProps extends ItemRenderProps {\n /**\n * Whether the item has a submenu.\n *\n * @selector [data-has-submenu]\n */\n hasSubmenu: boolean,\n /**\n * Whether the item's submenu is open.\n *\n * @selector [data-open]\n */\n isOpen: boolean\n}\n\nexport interface MenuItemProps<T = object> extends Omit<RenderProps<MenuItemRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', MenuItemRenderProps>, LinkDOMProps, HoverEvents, FocusEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * 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.\n * @default 'react-aria-MenuItem'\n */\n className?: ClassNameOrFunction<MenuItemRenderProps>,\n /** The unique id of the item. */\n id?: Key,\n /** The object value that this item represents. When using dynamic collections, this is set automatically. */\n value?: T,\n /** A string representation of the item's contents, used for features like typeahead. */\n textValue?: string,\n /** An accessibility label for this item. */\n 'aria-label'?: string,\n /** Whether the item is disabled. */\n isDisabled?: boolean,\n /** Handler that is called when the item is selected. */\n onAction?: () => void,\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean\n}\n\nconst MenuItemContext = createContext<ContextValue<MenuItemProps, HTMLDivElement>>(null);\n\n/**\n * A MenuItem represents an individual action in a Menu.\n */\nexport const MenuItem = /*#__PURE__*/ createLeafComponent(ItemNode, function MenuItem<T extends object>(props: MenuItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {\n [props, forwardedRef] = useContextProps(props, forwardedRef, MenuItemContext);\n let id = useSlottedContext(MenuItemContext)?.id as string;\n let state = useContext(MenuStateContext)!;\n let ref = useObjectRef<any>(forwardedRef);\n let selectionManager = useContext(SelectionManagerContext)!;\n let {isVirtualized} = useContext(CollectionRendererContext);\n let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps, ...states} = useMenuItem({\n ...props,\n id,\n key: item.key,\n selectionManager,\n isVirtualized: isVirtualized\n }, state, ref);\n\n let {hoverProps, isHovered} = useHover({\n isDisabled: states.isDisabled\n });\n let renderProps = useRenderProps<MenuItemRenderProps, any>({\n ...props,\n id: undefined,\n children: item.rendered,\n defaultClassName: 'react-aria-MenuItem',\n values: {\n ...states,\n isHovered,\n isFocusVisible: states.isFocusVisible,\n selectionMode: selectionManager.selectionMode,\n selectionBehavior: selectionManager.selectionBehavior,\n hasSubmenu: !!props['aria-haspopup'],\n isOpen: props['aria-expanded'] === 'true'\n }\n });\n\n let ElementType = props.href ? dom.a : dom.div;\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n delete DOMProps.onClick;\n\n return (\n <ElementType\n {...mergeProps(DOMProps, renderProps, menuItemProps, hoverProps)}\n ref={ref}\n data-disabled={states.isDisabled || undefined}\n data-hovered={isHovered || undefined}\n data-focused={states.isFocused || undefined}\n data-focus-visible={states.isFocusVisible || undefined}\n data-pressed={states.isPressed || undefined}\n data-selected={states.isSelected || undefined}\n data-selection-mode={selectionManager.selectionMode === 'none' ? undefined : selectionManager.selectionMode}\n data-has-submenu={!!props['aria-haspopup'] || undefined}\n data-open={props['aria-expanded'] === 'true' || undefined}>\n <Provider\n values={[\n [TextContext, {\n slots: {\n [DEFAULT_SLOT]: labelProps,\n label: labelProps,\n description: descriptionProps\n }\n }],\n [KeyboardContext, keyboardShortcutProps],\n [SelectionIndicatorContext, {isSelected: states.isSelected}]\n ]}>\n {renderProps.children}\n </Provider>\n </ElementType>\n );\n});\n"],"names":[],"version":3,"file":"Menu.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react-aria-components/src/Menu.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n AriaMenuProps,\n useMenu,\n useMenuItem,\n useMenuSection,\n useMenuTrigger,\n useSubmenuTrigger\n} from 'react-aria/useMenu';\nimport {\n BaseCollection,\n CollectionNode,\n ItemNode,\n SectionNode\n} from 'react-aria/private/collections/BaseCollection';\nimport {\n MenuTriggerProps as BaseMenuTriggerProps,\n RootMenuTriggerState,\n useMenuTriggerState,\n useSubmenuTriggerState\n} from 'react-stately/useMenuTriggerState';\nimport {\n ClassNameOrFunction,\n ContextValue,\n DEFAULT_SLOT,\n dom,\n DOMRenderProps,\n PossibleLinkDOMRenderProps,\n Provider,\n RenderProps,\n SlotProps,\n StyleRenderProps,\n useContextProps,\n useRenderProps,\n useSlot,\n useSlottedContext\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {\n CollectionBuilder,\n createBranchComponent,\n createLeafComponent\n} from 'react-aria/CollectionBuilder';\nimport {\n CollectionProps,\n CollectionRendererContext,\n ItemRenderProps,\n SectionContext,\n SectionProps,\n usePersistedKeys\n} from './Collection';\nimport {\n FieldInputContext,\n SelectableCollectionContext,\n SelectableCollectionContextValue\n} from './Autocomplete';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {\n FocusEvents,\n FocusStrategy,\n forwardRefType,\n GlobalDOMAttributes,\n HoverEvents,\n Key,\n LinkDOMProps,\n MultipleSelection,\n PressEvents\n} from '@react-types/shared';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {HeaderContext} from './Header';\nimport {KeyboardContext} from './Keyboard';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {MultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {Node} from '@react-types/shared';\nimport {OverlayTriggerStateContext} from './Dialog';\nimport {PopoverContext} from './Popover';\nimport {PressResponder} from 'react-aria/private/interactions/PressResponder';\nimport React, {\n createContext,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactElement,\n ReactNode,\n RefObject,\n useContext,\n useMemo,\n useRef\n} from 'react';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SelectionManager} from 'react-stately/private/selection/SelectionManager';\nimport {SeparatorContext} from './Separator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {TextContext} from './Text';\nimport {TreeState, useTreeState} from 'react-stately/useTreeState';\nimport {useHover} from 'react-aria/useHover';\nimport {useIsHidden} from 'react-aria/private/collections/Hidden';\nimport {useMultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {useObjectRef} from 'react-aria/useObjectRef';\n\nexport const MenuContext = createContext<ContextValue<MenuProps<any>, HTMLDivElement>>(null);\nexport const MenuStateContext = createContext<TreeState<any> | null>(null);\nexport const RootMenuTriggerStateContext = createContext<RootMenuTriggerState | null>(null);\nconst SelectionManagerContext = createContext<SelectionManager | null>(null);\n\nexport interface MenuTriggerProps extends BaseMenuTriggerProps {\n children: ReactNode;\n}\n\nexport function MenuTrigger(props: MenuTriggerProps): JSX.Element | null {\n let state = useMenuTriggerState(props);\n let ref = useRef<HTMLButtonElement>(null);\n let {menuTriggerProps, menuProps} = useMenuTrigger(\n {\n ...props,\n type: 'menu'\n },\n state,\n ref\n );\n let scrollRef = useRef(null);\n\n // If within a collection (e.g. Tabs), render nothing.\n // Not using createHideableComponent for this because that also creates a forwardRef.\n let isHidden = useIsHidden();\n if (isHidden) {\n return null;\n }\n\n return (\n <Provider\n values={[\n [MenuContext, {...menuProps, ref: scrollRef}],\n [OverlayTriggerStateContext, state],\n [RootMenuTriggerStateContext, state],\n [\n PopoverContext,\n {\n trigger: 'MenuTrigger',\n triggerRef: ref,\n scrollRef,\n placement: 'bottom start',\n 'aria-labelledby': menuProps['aria-labelledby']\n }\n ]\n ]}>\n <PressResponder {...menuTriggerProps} ref={ref} isPressed={state.isOpen}>\n {props.children}\n </PressResponder>\n </Provider>\n );\n}\n\nexport interface SubmenuTriggerProps {\n /**\n * The contents of the SubmenuTrigger. The first child should be an Item (the trigger) and the\n * second child should be the Popover (for the submenu).\n */\n children: ReactElement[];\n /**\n * The delay time in milliseconds for the submenu to appear after hovering over the trigger.\n *\n * @default 200\n */\n delay?: number;\n}\n\nconst SubmenuTriggerContext = createContext<{\n parentMenuRef: RefObject<HTMLElement | null>;\n shouldUseVirtualFocus?: boolean;\n} | null>(null);\n\nclass SubmenuTriggerNode<T> extends CollectionNode<T> {\n static readonly type = 'submenutrigger';\n\n filter(\n collection: BaseCollection<T>,\n newCollection: BaseCollection<T>,\n filterFn: (textValue: string, node: Node<T>) => boolean\n ): CollectionNode<T> | null {\n let triggerNode = collection.getItem(this.firstChildKey!);\n if (triggerNode && filterFn(triggerNode.textValue, this)) {\n let clone = this.clone();\n newCollection.addDescendants(clone, collection);\n return clone;\n }\n\n return null;\n }\n}\n\n/**\n * A submenu trigger is used to wrap a submenu's trigger item and the submenu itself.\n *\n * @version alpha\n */\nexport const SubmenuTrigger = /*#__PURE__*/ createBranchComponent(\n SubmenuTriggerNode,\n (props: SubmenuTriggerProps, ref: ForwardedRef<HTMLDivElement>, item) => {\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let state = useContext(MenuStateContext)!;\n let rootMenuTriggerState = useContext(RootMenuTriggerStateContext)!;\n let submenuTriggerState = useSubmenuTriggerState({triggerKey: item.key}, rootMenuTriggerState);\n let submenuRef = useRef<HTMLDivElement>(null);\n let itemRef = useObjectRef(ref);\n let {parentMenuRef, shouldUseVirtualFocus} = useContext(SubmenuTriggerContext)!;\n let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger(\n {\n parentMenuRef,\n submenuRef,\n delay: props.delay,\n shouldUseVirtualFocus\n },\n submenuTriggerState,\n itemRef\n );\n\n return (\n <Provider\n values={[\n [MenuItemContext, {...submenuTriggerProps, onAction: undefined, ref: itemRef}],\n [\n MenuContext,\n {\n ref: submenuRef,\n ...submenuProps\n }\n ],\n [OverlayTriggerStateContext, submenuTriggerState],\n [\n PopoverContext,\n {\n trigger: 'SubmenuTrigger',\n triggerRef: itemRef,\n placement: 'end top',\n 'aria-labelledby': submenuProps['aria-labelledby'],\n ...popoverProps\n }\n ]\n ]}>\n <CollectionBranch collection={state.collection} parent={item} />\n {props.children[1]}\n </Provider>\n );\n },\n props => props.children[0]\n);\n\nexport interface MenuRenderProps {\n /**\n * Whether the menu has no items and should display its empty state.\n *\n * @selector [data-empty]\n */\n isEmpty: boolean;\n}\n\nexport interface MenuProps<T>\n extends\n Omit<AriaMenuProps<T>, 'children'>,\n CollectionProps<T>,\n StyleRenderProps<MenuRenderProps>,\n SlotProps,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Menu'\n */\n className?: ClassNameOrFunction<MenuRenderProps>;\n /** Provides content to display when there are no items in the list. */\n renderEmptyState?: () => ReactNode;\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean;\n}\n\n/**\n * A menu displays a list of actions or options that a user can choose.\n */\nexport const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T>(\n props: MenuProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, MenuContext);\n\n // Delay rendering the actual menu until we have the collection so that auto focus works properly.\n return (\n <CollectionBuilder content={<Collection {...props} />}>\n {collection => <MenuInner props={props} collection={collection} menuRef={ref} />}\n </CollectionBuilder>\n );\n});\n\ninterface MenuInnerProps<T> {\n // For now we append filter and other autocomplete context props here for typescript, but eventually we can consider exposing these\n // as top level props for users to use with standalone Menus\n props: MenuProps<T> & {\n filter?: SelectableCollectionContextValue<object>['filter'];\n shouldUseVirtualFocus?: boolean;\n };\n collection: BaseCollection<any>;\n menuRef: RefObject<HTMLElement | null>;\n}\n\nfunction MenuInner<T>({props, collection, menuRef: ref}: MenuInnerProps<T>) {\n [props, ref] = useContextProps(props, ref, SelectableCollectionContext);\n let {filter, ...autocompleteMenuProps} = props;\n let filteredCollection = useMemo(\n () => (filter ? collection.filter(filter) : collection),\n [collection, filter]\n );\n let state = useTreeState({\n ...props,\n collection: filteredCollection,\n children: undefined\n });\n let triggerState = useContext(RootMenuTriggerStateContext);\n let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);\n let {menuProps} = useMenu(\n {...props, isVirtualized, onClose: props.onClose || triggerState?.close},\n state,\n ref\n );\n let renderProps = useRenderProps({\n ...props,\n children: undefined,\n defaultClassName: 'react-aria-Menu',\n values: {\n isEmpty: state.collection.size === 0\n }\n });\n\n let emptyState: ReactElement | null = null;\n if (state.collection.size === 0 && props.renderEmptyState) {\n emptyState = (\n <div role=\"menuitem\" style={{display: 'contents'}}>\n {props.renderEmptyState()}\n </div>\n );\n }\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <FocusScope>\n <dom.div\n {...mergeProps(DOMProps, renderProps, menuProps)}\n ref={ref as RefObject<HTMLDivElement>}\n slot={props.slot || undefined}\n data-empty={state.collection.size === 0 || undefined}\n onScroll={props.onScroll}>\n <Provider\n values={[\n [MenuStateContext, state],\n [SeparatorContext, {elementType: 'div'}],\n [SectionContext, {name: 'MenuSection', render: MenuSectionInner}],\n [\n SubmenuTriggerContext,\n {\n parentMenuRef: ref,\n shouldUseVirtualFocus: autocompleteMenuProps?.shouldUseVirtualFocus\n }\n ],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect}],\n [SelectableCollectionContext, null],\n [FieldInputContext, null],\n [SelectionManagerContext, state.selectionManager],\n /* Ensure root MenuTriggerState is defined, in case Menu is rendered outside a MenuTrigger. */\n /* We assume the context can never change between defined and undefined. */\n /* eslint-disable-next-line react-hooks/rules-of-hooks */\n [RootMenuTriggerStateContext, triggerState ?? useMenuTriggerState({})]\n ]}>\n <SharedElementTransition>\n <CollectionRoot\n collection={state.collection}\n persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)}\n scrollRef={ref}\n />\n </SharedElementTransition>\n </Provider>\n {emptyState}\n </dom.div>\n </FocusScope>\n );\n}\n\nexport interface MenuSectionProps<T>\n extends\n SectionProps<T>,\n Omit<MultipleSelection, 'disabledKeys'>,\n DOMRenderProps<'section', undefined> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element.\n *\n * @default 'react-aria-MenuSection'\n */\n className?: string;\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean;\n}\n\n// A subclass of SelectionManager that forwards focus-related properties to the parent,\n// but has its own local selection state.\nclass GroupSelectionManager extends SelectionManager {\n private parent: SelectionManager;\n\n constructor(parent: SelectionManager, state: MultipleSelectionState) {\n super(parent.collection, state);\n this.parent = parent;\n }\n\n get focusedKey() {\n return this.parent.focusedKey;\n }\n\n get isFocused() {\n return this.parent.isFocused;\n }\n\n setFocusedKey(key: Key | null, childFocusStrategy?: FocusStrategy): void {\n return this.parent.setFocusedKey(key, childFocusStrategy);\n }\n\n setFocused(isFocused: boolean): void {\n this.parent.setFocused(isFocused);\n }\n\n get childFocusStrategy() {\n return this.parent.childFocusStrategy;\n }\n}\n\nfunction MenuSectionInner<T>(\n props: MenuSectionProps<T>,\n ref: ForwardedRef<HTMLElement>,\n section: Node<T>,\n className = 'react-aria-MenuSection'\n) {\n let state = useContext(MenuStateContext)!;\n let {CollectionBranch} = useContext(CollectionRendererContext);\n let [headingRef, heading] = useSlot();\n let {headingProps, groupProps} = useMenuSection({\n heading,\n 'aria-label': section.props['aria-label'] ?? undefined\n });\n let renderProps = useRenderProps({\n ...props,\n id: undefined,\n children: undefined,\n defaultClassName: className,\n className: section.props?.className,\n style: section.props?.style,\n values: undefined\n });\n\n let parent = useContext(SelectionManagerContext)!;\n let selectionState = useMultipleSelectionState(props);\n let manager =\n props.selectionMode != null ? new GroupSelectionManager(parent, selectionState) : parent;\n\n let closeOnSelect = useSlottedContext(MenuItemContext)?.shouldCloseOnSelect;\n\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n\n return (\n <dom.section {...mergeProps(DOMProps, renderProps, groupProps)} ref={ref}>\n <Provider\n values={[\n [HeaderContext, {...headingProps, ref: headingRef}],\n [SelectionManagerContext, manager],\n [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect ?? closeOnSelect}]\n ]}>\n <CollectionBranch collection={state.collection} parent={section} />\n </Provider>\n </dom.section>\n );\n}\n\n/**\n * A MenuSection represents a section within a Menu.\n */\nexport const MenuSection = /*#__PURE__*/ createBranchComponent(SectionNode, MenuSectionInner);\n\nexport interface MenuItemRenderProps extends ItemRenderProps {\n /**\n * Whether the item has a submenu.\n *\n * @selector [data-has-submenu]\n */\n hasSubmenu: boolean;\n /**\n * Whether the item's submenu is open.\n *\n * @selector [data-open]\n */\n isOpen: boolean;\n}\n\nexport interface MenuItemProps<T = object>\n extends\n Omit<RenderProps<MenuItemRenderProps>, 'render'>,\n PossibleLinkDOMRenderProps<'div', MenuItemRenderProps>,\n LinkDOMProps,\n HoverEvents,\n FocusEvents,\n PressEvents,\n Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-MenuItem'\n */\n className?: ClassNameOrFunction<MenuItemRenderProps>;\n /** The unique id of the item. */\n id?: Key;\n /**\n * The object value that this item represents. When using dynamic collections, this is set\n * automatically.\n */\n value?: T;\n /** A string representation of the item's contents, used for features like typeahead. */\n textValue?: string;\n /** An accessibility label for this item. */\n 'aria-label'?: string;\n /** Whether the item is disabled. */\n isDisabled?: boolean;\n /** Handler that is called when the item is selected. */\n onAction?: () => void;\n /** Whether the menu should close when the menu item is selected. */\n shouldCloseOnSelect?: boolean;\n}\n\nconst MenuItemContext = createContext<ContextValue<MenuItemProps, HTMLDivElement>>(null);\n\n/**\n * A MenuItem represents an individual action in a Menu.\n */\nexport const MenuItem = /*#__PURE__*/ createLeafComponent(ItemNode, function MenuItem<\n T\n>(props: MenuItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {\n [props, forwardedRef] = useContextProps(props, forwardedRef, MenuItemContext);\n let id = useSlottedContext(MenuItemContext)?.id as string;\n let state = useContext(MenuStateContext)!;\n let ref = useObjectRef<any>(forwardedRef);\n let selectionManager = useContext(SelectionManagerContext)!;\n let {isVirtualized} = useContext(CollectionRendererContext);\n let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps, ...states} = useMenuItem(\n {\n ...props,\n id,\n key: item.key,\n selectionManager,\n isVirtualized: isVirtualized\n },\n state,\n ref\n );\n\n let {hoverProps, isHovered} = useHover({\n isDisabled: states.isDisabled\n });\n let renderProps = useRenderProps<MenuItemRenderProps, any>({\n ...props,\n id: undefined,\n children: item.rendered,\n defaultClassName: 'react-aria-MenuItem',\n values: {\n ...states,\n isHovered,\n isFocusVisible: states.isFocusVisible,\n selectionMode: selectionManager.selectionMode,\n selectionBehavior: selectionManager.selectionBehavior,\n hasSubmenu: !!props['aria-haspopup'],\n isOpen: props['aria-expanded'] === 'true'\n }\n });\n\n let ElementType = props.href ? dom.a : dom.div;\n let DOMProps = filterDOMProps(props as any, {global: true});\n delete DOMProps.id;\n delete DOMProps.onClick;\n\n return (\n <ElementType\n {...mergeProps(DOMProps, renderProps, menuItemProps, hoverProps)}\n ref={ref}\n data-disabled={states.isDisabled || undefined}\n data-hovered={isHovered || undefined}\n data-focused={states.isFocused || undefined}\n data-focus-visible={states.isFocusVisible || undefined}\n data-pressed={states.isPressed || undefined}\n data-selected={states.isSelected || undefined}\n data-selection-mode={\n selectionManager.selectionMode === 'none' ? undefined : selectionManager.selectionMode\n }\n data-has-submenu={!!props['aria-haspopup'] || undefined}\n data-open={props['aria-expanded'] === 'true' || undefined}>\n <Provider\n values={[\n [\n TextContext,\n {\n slots: {\n [DEFAULT_SLOT]: labelProps,\n label: labelProps,\n description: descriptionProps\n }\n }\n ],\n [KeyboardContext, keyboardShortcutProps],\n [SelectionIndicatorContext, {isSelected: states.isSelected}]\n ]}>\n {renderProps.children}\n </Provider>\n </ElementType>\n );\n});\n"],"names":[],"version":3,"file":"Menu.js.map"}
|
package/dist/private/Menu.mjs
CHANGED
|
@@ -18,13 +18,13 @@ import {filterDOMProps as $7xe5e$filterDOMProps} from "react-aria/filterDOMProps
|
|
|
18
18
|
import {FocusScope as $7xe5e$FocusScope} from "react-aria/FocusScope";
|
|
19
19
|
import {mergeProps as $7xe5e$mergeProps} from "react-aria/mergeProps";
|
|
20
20
|
import {PressResponder as $7xe5e$PressResponder} from "react-aria/private/interactions/PressResponder";
|
|
21
|
-
import $7xe5e$react, {createContext as $7xe5e$createContext, useRef as $7xe5e$useRef,
|
|
21
|
+
import $7xe5e$react, {createContext as $7xe5e$createContext, useRef as $7xe5e$useRef, useContext as $7xe5e$useContext, forwardRef as $7xe5e$forwardRef, useMemo as $7xe5e$useMemo} from "react";
|
|
22
22
|
import {SelectionManager as $7xe5e$SelectionManager} from "react-stately/private/selection/SelectionManager";
|
|
23
23
|
import {useTreeState as $7xe5e$useTreeState} from "react-stately/useTreeState";
|
|
24
24
|
import {useHover as $7xe5e$useHover} from "react-aria/useHover";
|
|
25
|
+
import {useIsHidden as $7xe5e$useIsHidden} from "react-aria/private/collections/Hidden";
|
|
25
26
|
import {useMultipleSelectionState as $7xe5e$useMultipleSelectionState} from "react-stately/useMultipleSelectionState";
|
|
26
27
|
import {useObjectRef as $7xe5e$useObjectRef} from "react-aria/useObjectRef";
|
|
27
|
-
import {useResizeObserver as $7xe5e$useResizeObserver} from "react-aria/private/utils/useResizeObserver";
|
|
28
28
|
|
|
29
29
|
/*
|
|
30
30
|
* Copyright 2022 Adobe. All rights reserved.
|
|
@@ -74,18 +74,11 @@ function $49319ee1285aa241$export$27d2ad3c5815583e(props) {
|
|
|
74
74
|
...props,
|
|
75
75
|
type: 'menu'
|
|
76
76
|
}, state, ref);
|
|
77
|
-
// Allows menu width to match button
|
|
78
|
-
let [buttonWidth, setButtonWidth] = (0, $7xe5e$useState)(null);
|
|
79
|
-
let onResize = (0, $7xe5e$useCallback)(()=>{
|
|
80
|
-
if (ref.current) setButtonWidth(ref.current.offsetWidth + 'px');
|
|
81
|
-
}, [
|
|
82
|
-
ref
|
|
83
|
-
]);
|
|
84
|
-
(0, $7xe5e$useResizeObserver)({
|
|
85
|
-
ref: ref,
|
|
86
|
-
onResize: onResize
|
|
87
|
-
});
|
|
88
77
|
let scrollRef = (0, $7xe5e$useRef)(null);
|
|
78
|
+
// If within a collection (e.g. Tabs), render nothing.
|
|
79
|
+
// Not using createHideableComponent for this because that also creates a forwardRef.
|
|
80
|
+
let isHidden = (0, $7xe5e$useIsHidden)();
|
|
81
|
+
if (isHidden) return null;
|
|
89
82
|
return /*#__PURE__*/ (0, $7xe5e$react).createElement((0, $7230ffa83bc0c2cf$export$2881499e37b75b9a), {
|
|
90
83
|
values: [
|
|
91
84
|
[
|
|
@@ -110,9 +103,6 @@ function $49319ee1285aa241$export$27d2ad3c5815583e(props) {
|
|
|
110
103
|
triggerRef: ref,
|
|
111
104
|
scrollRef: scrollRef,
|
|
112
105
|
placement: 'bottom start',
|
|
113
|
-
style: {
|
|
114
|
-
'--trigger-width': buttonWidth
|
|
115
|
-
},
|
|
116
106
|
'aria-labelledby': menuProps['aria-labelledby']
|
|
117
107
|
}
|
|
118
108
|
]
|