@depup/react-aria-components 1.20.0-depup.0 → 1.21.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/NavigationTree/package.json +5 -0
  2. package/README.md +2 -2
  3. package/changes.json +1 -1
  4. package/dist/exports/Menu.cjs +1 -0
  5. package/dist/exports/Menu.cjs.map +1 -1
  6. package/dist/exports/Menu.js +2 -2
  7. package/dist/exports/Menu.js.map +1 -1
  8. package/dist/exports/Menu.mjs +2 -2
  9. package/dist/exports/Menu.mjs.map +1 -1
  10. package/dist/exports/NavigationTree.cjs +37 -0
  11. package/dist/exports/NavigationTree.cjs.map +1 -0
  12. package/dist/exports/NavigationTree.js +25 -0
  13. package/dist/exports/NavigationTree.js.map +1 -0
  14. package/dist/exports/NavigationTree.mjs +25 -0
  15. package/dist/exports/NavigationTree.mjs.map +1 -0
  16. package/dist/exports/index.cjs +13 -0
  17. package/dist/exports/index.cjs.map +1 -1
  18. package/dist/exports/index.js +6 -2
  19. package/dist/exports/index.js.map +1 -1
  20. package/dist/exports/index.mjs +6 -2
  21. package/dist/exports/index.mjs.map +1 -1
  22. package/dist/private/Checkbox.cjs.map +1 -1
  23. package/dist/private/Checkbox.js.map +1 -1
  24. package/dist/private/Checkbox.mjs.map +1 -1
  25. package/dist/private/Dialog.cjs +6 -0
  26. package/dist/private/Dialog.cjs.map +1 -1
  27. package/dist/private/Dialog.js +6 -0
  28. package/dist/private/Dialog.js.map +1 -1
  29. package/dist/private/Dialog.mjs +6 -0
  30. package/dist/private/Dialog.mjs.map +1 -1
  31. package/dist/private/GridList.cjs.map +1 -1
  32. package/dist/private/GridList.js.map +1 -1
  33. package/dist/private/GridList.mjs.map +1 -1
  34. package/dist/private/ListBox.cjs.map +1 -1
  35. package/dist/private/ListBox.js.map +1 -1
  36. package/dist/private/ListBox.mjs.map +1 -1
  37. package/dist/private/Menu.cjs +55 -0
  38. package/dist/private/Menu.cjs.map +1 -1
  39. package/dist/private/Menu.js +56 -2
  40. package/dist/private/Menu.js.map +1 -1
  41. package/dist/private/Menu.mjs +56 -2
  42. package/dist/private/Menu.mjs.map +1 -1
  43. package/dist/private/NavigationTree.cjs +272 -0
  44. package/dist/private/NavigationTree.cjs.map +1 -0
  45. package/dist/private/NavigationTree.js +258 -0
  46. package/dist/private/NavigationTree.js.map +1 -0
  47. package/dist/private/NavigationTree.mjs +257 -0
  48. package/dist/private/NavigationTree.mjs.map +1 -0
  49. package/dist/private/RadioGroup.cjs.map +1 -1
  50. package/dist/private/RadioGroup.js.map +1 -1
  51. package/dist/private/RadioGroup.mjs.map +1 -1
  52. package/dist/private/Switch.cjs +8 -2
  53. package/dist/private/Switch.cjs.map +1 -1
  54. package/dist/private/Switch.js +9 -3
  55. package/dist/private/Switch.js.map +1 -1
  56. package/dist/private/Switch.mjs +9 -3
  57. package/dist/private/Switch.mjs.map +1 -1
  58. package/dist/private/Table.cjs.map +1 -1
  59. package/dist/private/Table.js.map +1 -1
  60. package/dist/private/Table.mjs.map +1 -1
  61. package/dist/private/Text.cjs +3 -1
  62. package/dist/private/Text.cjs.map +1 -1
  63. package/dist/private/Text.js +4 -2
  64. package/dist/private/Text.js.map +1 -1
  65. package/dist/private/Text.mjs +4 -2
  66. package/dist/private/Text.mjs.map +1 -1
  67. package/dist/private/TokenField.cjs +30 -2
  68. package/dist/private/TokenField.cjs.map +1 -1
  69. package/dist/private/TokenField.js +30 -2
  70. package/dist/private/TokenField.js.map +1 -1
  71. package/dist/private/TokenField.mjs +30 -2
  72. package/dist/private/TokenField.mjs.map +1 -1
  73. package/dist/private/Tree.cjs.map +1 -1
  74. package/dist/private/Tree.js.map +1 -1
  75. package/dist/private/Tree.mjs.map +1 -1
  76. package/dist/private/TreeDropTargetDelegate.cjs +11 -6
  77. package/dist/private/TreeDropTargetDelegate.cjs.map +1 -1
  78. package/dist/private/TreeDropTargetDelegate.js +11 -6
  79. package/dist/private/TreeDropTargetDelegate.js.map +1 -1
  80. package/dist/private/TreeDropTargetDelegate.mjs +11 -6
  81. package/dist/private/TreeDropTargetDelegate.mjs.map +1 -1
  82. package/dist/types/exports/Menu.d.ts +2 -2
  83. package/dist/types/exports/NavigationTree.d.ts +8 -0
  84. package/dist/types/exports/index.d.ts +7 -3
  85. package/dist/types/src/Breadcrumbs.d.ts +2 -2
  86. package/dist/types/src/Button.d.ts +1 -1
  87. package/dist/types/src/Calendar.d.ts +6 -6
  88. package/dist/types/src/Checkbox.d.ts +8 -8
  89. package/dist/types/src/Collection.d.ts +1 -1
  90. package/dist/types/src/ComboBox.d.ts +2 -2
  91. package/dist/types/src/DateField.d.ts +4 -4
  92. package/dist/types/src/DatePicker.d.ts +2 -2
  93. package/dist/types/src/Dialog.d.ts +2 -2
  94. package/dist/types/src/Disclosure.d.ts +2 -2
  95. package/dist/types/src/GridList.d.ts +6 -6
  96. package/dist/types/src/Group.d.ts +1 -1
  97. package/dist/types/src/Header.d.ts +1 -1
  98. package/dist/types/src/Input.d.ts +1 -1
  99. package/dist/types/src/Label.d.ts +1 -1
  100. package/dist/types/src/Link.d.ts +1 -1
  101. package/dist/types/src/ListBox.d.ts +5 -5
  102. package/dist/types/src/Menu.d.ts +25 -6
  103. package/dist/types/src/Meter.d.ts +1 -1
  104. package/dist/types/src/Modal.d.ts +2 -2
  105. package/dist/types/src/NavigationTree.d.ts +80 -0
  106. package/dist/types/src/NumberField.d.ts +1 -1
  107. package/dist/types/src/OverlayArrow.d.ts +1 -1
  108. package/dist/types/src/Popover.d.ts +1 -1
  109. package/dist/types/src/RadioGroup.d.ts +8 -8
  110. package/dist/types/src/SearchField.d.ts +1 -1
  111. package/dist/types/src/Select.d.ts +2 -2
  112. package/dist/types/src/Separator.d.ts +1 -1
  113. package/dist/types/src/Slider.d.ts +5 -5
  114. package/dist/types/src/Switch.d.ts +7 -7
  115. package/dist/types/src/Table.d.ts +8 -8
  116. package/dist/types/src/Tabs.d.ts +5 -5
  117. package/dist/types/src/TagGroup.d.ts +3 -3
  118. package/dist/types/src/Text.d.ts +1 -1
  119. package/dist/types/src/TextField.d.ts +1 -1
  120. package/dist/types/src/Toast.d.ts +3 -3
  121. package/dist/types/src/ToggleButton.d.ts +1 -1
  122. package/dist/types/src/ToggleButtonGroup.d.ts +1 -1
  123. package/dist/types/src/TokenField.d.ts +2 -2
  124. package/dist/types/src/Toolbar.d.ts +1 -1
  125. package/dist/types/src/Tooltip.d.ts +1 -1
  126. package/dist/types/src/Tree.d.ts +6 -6
  127. package/package.json +8 -7
@@ -16,6 +16,8 @@ var $fDx7A$reactariaCollection = require("react-aria/Collection");
16
16
  var $fDx7A$reactariaCollectionBuilder = require("react-aria/CollectionBuilder");
17
17
  var $fDx7A$reactariafilterDOMProps = require("react-aria/filterDOMProps");
18
18
  var $fDx7A$reactariaFocusScope = require("react-aria/FocusScope");
19
+ var $fDx7A$reactariaprivateutilsinertValue = require("react-aria/private/utils/inertValue");
20
+ var $fDx7A$reactariaprivateutilsuseLoadMoreSentinel = require("react-aria/private/utils/useLoadMoreSentinel");
19
21
  var $fDx7A$reactariamergeProps = require("react-aria/mergeProps");
20
22
  var $fDx7A$reactariaprivateinteractionsPressResponder = require("react-aria/private/interactions/PressResponder");
21
23
  var $fDx7A$react = require("react");
@@ -43,6 +45,7 @@ $parcel$export(module.exports, "SubmenuTrigger", function () { return $76f9e98b4
43
45
  $parcel$export(module.exports, "Menu", function () { return $76f9e98b4261ab43$export$d9b273488cd8ce6f; });
44
46
  $parcel$export(module.exports, "MenuSection", function () { return $76f9e98b4261ab43$export$4b1545b4f2016d26; });
45
47
  $parcel$export(module.exports, "MenuItem", function () { return $76f9e98b4261ab43$export$2ce376c2cc3355c8; });
48
+ $parcel$export(module.exports, "MenuLoadMoreItem", function () { return $76f9e98b4261ab43$export$93aba29d3a678058; });
46
49
  /*
47
50
  * Copyright 2022 Adobe. All rights reserved.
48
51
  * This file is licensed to you under the Apache License, Version 2.0 (the "License");
@@ -77,6 +80,8 @@ $parcel$export(module.exports, "MenuItem", function () { return $76f9e98b4261ab4
77
80
 
78
81
 
79
82
 
83
+
84
+
80
85
 
81
86
 
82
87
 
@@ -462,6 +467,56 @@ const $76f9e98b4261ab43$export$2ce376c2cc3355c8 = /*#__PURE__*/ (0, $fDx7A$react
462
467
  ]
463
468
  }, renderProps.children));
464
469
  });
470
+ const $76f9e98b4261ab43$export$93aba29d3a678058 = (0, $fDx7A$reactariaCollectionBuilder.createLeafComponent)((0, $fDx7A$reactariaprivatecollectionsBaseCollection.LoaderNode), function MenuLoadingIndicator(props, ref, item) {
471
+ let state = (0, $fDx7A$react.useContext)($76f9e98b4261ab43$export$24aad8519b95b41b);
472
+ let { isLoading: isLoading, onLoadMore: onLoadMore, scrollOffset: scrollOffset, ...otherProps } = props;
473
+ let sentinelRef = (0, $fDx7A$react.useRef)(null);
474
+ let memoedLoadMoreProps = (0, $fDx7A$react.useMemo)(()=>({
475
+ onLoadMore: onLoadMore,
476
+ collection: state?.collection,
477
+ sentinelRef: sentinelRef,
478
+ scrollOffset: scrollOffset
479
+ }), [
480
+ onLoadMore,
481
+ scrollOffset,
482
+ state?.collection
483
+ ]);
484
+ (0, $fDx7A$reactariaprivateutilsuseLoadMoreSentinel.useLoadMoreSentinel)(memoedLoadMoreProps, sentinelRef);
485
+ let renderProps = (0, $048d76b84370f141$exports.useRenderProps)({
486
+ ...otherProps,
487
+ id: undefined,
488
+ children: item.rendered,
489
+ defaultClassName: 'react-aria-MenuLoadingIndicator',
490
+ values: undefined
491
+ });
492
+ let itemProps = {
493
+ // For Android talkback
494
+ tabIndex: -1
495
+ };
496
+ return /*#__PURE__*/ (0, ($parcel$interopDefault($fDx7A$react))).createElement((0, ($parcel$interopDefault($fDx7A$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($fDx7A$react))).createElement("div", {
497
+ style: {
498
+ position: 'relative',
499
+ width: 0,
500
+ height: 0
501
+ },
502
+ inert: (0, $fDx7A$reactariaprivateutilsinertValue.inertValue)(true)
503
+ }, /*#__PURE__*/ (0, ($parcel$interopDefault($fDx7A$react))).createElement("div", {
504
+ "data-testid": "loadMoreSentinel",
505
+ ref: sentinelRef,
506
+ style: {
507
+ position: 'absolute',
508
+ height: 1,
509
+ width: 1
510
+ }
511
+ })), isLoading && renderProps.children && /*#__PURE__*/ (0, ($parcel$interopDefault($fDx7A$react))).createElement((0, ($parcel$interopDefault($fDx7A$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($fDx7A$react))).createElement((0, $048d76b84370f141$exports.dom).div, {
512
+ ...(0, $fDx7A$reactariamergeProps.mergeProps)((0, $fDx7A$reactariafilterDOMProps.filterDOMProps)(props, {
513
+ global: true
514
+ }), itemProps),
515
+ ...renderProps,
516
+ role: "menuitem",
517
+ ref: ref
518
+ }, renderProps.children)));
519
+ });
465
520
 
466
521
 
467
522
  //# sourceMappingURL=Menu.cjs.map
@@ -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';\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 offset: props.trigger === 'contextMenu' ? 0 : undefined\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 // oxlint-disable-next-line react/react-compiler, 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"}
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 LoaderNode,\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 StyleProps,\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 {inertValue} from 'react-aria/private/utils/inertValue';\nimport {KeyboardContext} from './Keyboard';\nimport {\n LoadMoreSentinelProps,\n useLoadMoreSentinel\n} from 'react-aria/private/utils/useLoadMoreSentinel';\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 offset: props.trigger === 'contextMenu' ? 0 : undefined\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 menu. */\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 // oxlint-disable-next-line react/react-compiler, 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\nexport interface MenuLoadMoreItemProps\n extends\n Omit<LoadMoreSentinelProps, 'collection' | 'direction'>,\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-MenuLoadingIndicator'\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 MenuLoadMoreItem = createLeafComponent(\n LoaderNode,\n function MenuLoadingIndicator(\n props: MenuLoadMoreItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n item: Node<object>\n ) {\n let state = useContext(MenuStateContext)!;\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-MenuLoadingIndicator',\n values: undefined\n });\n\n let itemProps = {\n // For Android talkback\n tabIndex: -1\n };\n\n return (\n <>\n {/* Always 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}), itemProps)}\n {...renderProps}\n role=\"menuitem\"\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":"Menu.cjs.map"}
@@ -10,12 +10,14 @@ import {SeparatorContext as $469f9b725520971a$export$6615d83f6de245ce} from "./S
10
10
  import {SharedElementTransition as $347bc273c4058e94$export$758399f318e6385a} from "./SharedElementTransition.js";
11
11
  import {TextContext as $20d769b1e2b13352$export$9afb8bc826b033ea} from "./Text.js";
12
12
  import {useMenuTrigger as $gKmcL$useMenuTrigger, useSubmenuTrigger as $gKmcL$useSubmenuTrigger, useMenu as $gKmcL$useMenu, useMenuSection as $gKmcL$useMenuSection, useMenuItem as $gKmcL$useMenuItem} from "react-aria/useMenu";
13
- import {CollectionNode as $gKmcL$CollectionNode, SectionNode as $gKmcL$SectionNode, ItemNode as $gKmcL$ItemNode} from "react-aria/private/collections/BaseCollection";
13
+ import {CollectionNode as $gKmcL$CollectionNode, SectionNode as $gKmcL$SectionNode, ItemNode as $gKmcL$ItemNode, LoaderNode as $gKmcL$LoaderNode} from "react-aria/private/collections/BaseCollection";
14
14
  import {useMenuTriggerState as $gKmcL$useMenuTriggerState, useSubmenuTriggerState as $gKmcL$useSubmenuTriggerState} from "react-stately/useMenuTriggerState";
15
15
  import {Collection as $gKmcL$Collection} from "react-aria/Collection";
16
16
  import {createBranchComponent as $gKmcL$createBranchComponent, CollectionBuilder as $gKmcL$CollectionBuilder, createLeafComponent as $gKmcL$createLeafComponent} from "react-aria/CollectionBuilder";
17
17
  import {filterDOMProps as $gKmcL$filterDOMProps} from "react-aria/filterDOMProps";
18
18
  import {FocusScope as $gKmcL$FocusScope} from "react-aria/FocusScope";
19
+ import {inertValue as $gKmcL$inertValue} from "react-aria/private/utils/inertValue";
20
+ import {useLoadMoreSentinel as $gKmcL$useLoadMoreSentinel} from "react-aria/private/utils/useLoadMoreSentinel";
19
21
  import {mergeProps as $gKmcL$mergeProps} from "react-aria/mergeProps";
20
22
  import {PressResponder as $gKmcL$PressResponder} from "react-aria/private/interactions/PressResponder";
21
23
  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";
@@ -60,6 +62,8 @@ import {useObjectRef as $gKmcL$useObjectRef} from "react-aria/useObjectRef";
60
62
 
61
63
 
62
64
 
65
+
66
+
63
67
 
64
68
 
65
69
 
@@ -447,7 +451,57 @@ const $113aa0613e727c6c$export$2ce376c2cc3355c8 = /*#__PURE__*/ (0, $gKmcL$creat
447
451
  ]
448
452
  }, renderProps.children));
449
453
  });
454
+ const $113aa0613e727c6c$export$93aba29d3a678058 = (0, $gKmcL$createLeafComponent)((0, $gKmcL$LoaderNode), function MenuLoadingIndicator(props, ref, item) {
455
+ let state = (0, $gKmcL$useContext)($113aa0613e727c6c$export$24aad8519b95b41b);
456
+ let { isLoading: isLoading, onLoadMore: onLoadMore, scrollOffset: scrollOffset, ...otherProps } = props;
457
+ let sentinelRef = (0, $gKmcL$useRef)(null);
458
+ let memoedLoadMoreProps = (0, $gKmcL$useMemo)(()=>({
459
+ onLoadMore: onLoadMore,
460
+ collection: state === null || state === void 0 ? void 0 : state.collection,
461
+ sentinelRef: sentinelRef,
462
+ scrollOffset: scrollOffset
463
+ }), [
464
+ onLoadMore,
465
+ scrollOffset,
466
+ state === null || state === void 0 ? void 0 : state.collection
467
+ ]);
468
+ (0, $gKmcL$useLoadMoreSentinel)(memoedLoadMoreProps, sentinelRef);
469
+ let renderProps = (0, $b7b7a92703138c9b$export$4d86445c2cf5e3)({
470
+ ...otherProps,
471
+ id: undefined,
472
+ children: item.rendered,
473
+ defaultClassName: 'react-aria-MenuLoadingIndicator',
474
+ values: undefined
475
+ });
476
+ let itemProps = {
477
+ // For Android talkback
478
+ tabIndex: -1
479
+ };
480
+ return /*#__PURE__*/ (0, $gKmcL$react).createElement((0, $gKmcL$react).Fragment, null, /*#__PURE__*/ (0, $gKmcL$react).createElement("div", {
481
+ style: {
482
+ position: 'relative',
483
+ width: 0,
484
+ height: 0
485
+ },
486
+ inert: (0, $gKmcL$inertValue)(true)
487
+ }, /*#__PURE__*/ (0, $gKmcL$react).createElement("div", {
488
+ "data-testid": "loadMoreSentinel",
489
+ ref: sentinelRef,
490
+ style: {
491
+ position: 'absolute',
492
+ height: 1,
493
+ width: 1
494
+ }
495
+ })), isLoading && renderProps.children && /*#__PURE__*/ (0, $gKmcL$react).createElement((0, $gKmcL$react).Fragment, null, /*#__PURE__*/ (0, $gKmcL$react).createElement((0, $b7b7a92703138c9b$export$df3a06d6289f983e).div, {
496
+ ...(0, $gKmcL$mergeProps)((0, $gKmcL$filterDOMProps)(props, {
497
+ global: true
498
+ }), itemProps),
499
+ ...renderProps,
500
+ role: "menuitem",
501
+ ref: ref
502
+ }, renderProps.children)));
503
+ });
450
504
 
451
505
 
452
- export {$113aa0613e727c6c$export$c7e742effb1c51e2 as MenuContext, $113aa0613e727c6c$export$24aad8519b95b41b as MenuStateContext, $113aa0613e727c6c$export$795aec4671cbae19 as RootMenuTriggerStateContext, $113aa0613e727c6c$export$27d2ad3c5815583e as MenuTrigger, $113aa0613e727c6c$export$ecabc99eeffab7ca as SubmenuTrigger, $113aa0613e727c6c$export$d9b273488cd8ce6f as Menu, $113aa0613e727c6c$export$4b1545b4f2016d26 as MenuSection, $113aa0613e727c6c$export$2ce376c2cc3355c8 as MenuItem};
506
+ export {$113aa0613e727c6c$export$c7e742effb1c51e2 as MenuContext, $113aa0613e727c6c$export$24aad8519b95b41b as MenuStateContext, $113aa0613e727c6c$export$795aec4671cbae19 as RootMenuTriggerStateContext, $113aa0613e727c6c$export$27d2ad3c5815583e as MenuTrigger, $113aa0613e727c6c$export$ecabc99eeffab7ca as SubmenuTrigger, $113aa0613e727c6c$export$d9b273488cd8ce6f as Menu, $113aa0613e727c6c$export$4b1545b4f2016d26 as MenuSection, $113aa0613e727c6c$export$2ce376c2cc3355c8 as MenuItem, $113aa0613e727c6c$export$93aba29d3a678058 as MenuLoadMoreItem};
453
507
  //# sourceMappingURL=Menu.js.map
@@ -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';\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 offset: props.trigger === 'contextMenu' ? 0 : undefined\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 // oxlint-disable-next-line react/react-compiler, 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"}
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 LoaderNode,\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 StyleProps,\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 {inertValue} from 'react-aria/private/utils/inertValue';\nimport {KeyboardContext} from './Keyboard';\nimport {\n LoadMoreSentinelProps,\n useLoadMoreSentinel\n} from 'react-aria/private/utils/useLoadMoreSentinel';\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 offset: props.trigger === 'contextMenu' ? 0 : undefined\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 menu. */\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 // oxlint-disable-next-line react/react-compiler, 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\nexport interface MenuLoadMoreItemProps\n extends\n Omit<LoadMoreSentinelProps, 'collection' | 'direction'>,\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-MenuLoadingIndicator'\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 MenuLoadMoreItem = createLeafComponent(\n LoaderNode,\n function MenuLoadingIndicator(\n props: MenuLoadMoreItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n item: Node<object>\n ) {\n let state = useContext(MenuStateContext)!;\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-MenuLoadingIndicator',\n values: undefined\n });\n\n let itemProps = {\n // For Android talkback\n tabIndex: -1\n };\n\n return (\n <>\n {/* Always 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}), itemProps)}\n {...renderProps}\n role=\"menuitem\"\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":"Menu.js.map"}
@@ -10,12 +10,14 @@ import {SeparatorContext as $e28ab3efe3e87743$export$6615d83f6de245ce} from "./S
10
10
  import {SharedElementTransition as $792f28e438b9ad5f$export$758399f318e6385a} from "./SharedElementTransition.mjs";
11
11
  import {TextContext as $efe09c6d1c304b50$export$9afb8bc826b033ea} from "./Text.mjs";
12
12
  import {useMenuTrigger as $7xe5e$useMenuTrigger, useSubmenuTrigger as $7xe5e$useSubmenuTrigger, useMenu as $7xe5e$useMenu, useMenuSection as $7xe5e$useMenuSection, useMenuItem as $7xe5e$useMenuItem} from "react-aria/useMenu";
13
- import {CollectionNode as $7xe5e$CollectionNode, SectionNode as $7xe5e$SectionNode, ItemNode as $7xe5e$ItemNode} from "react-aria/private/collections/BaseCollection";
13
+ import {CollectionNode as $7xe5e$CollectionNode, SectionNode as $7xe5e$SectionNode, ItemNode as $7xe5e$ItemNode, LoaderNode as $7xe5e$LoaderNode} from "react-aria/private/collections/BaseCollection";
14
14
  import {useMenuTriggerState as $7xe5e$useMenuTriggerState, useSubmenuTriggerState as $7xe5e$useSubmenuTriggerState} from "react-stately/useMenuTriggerState";
15
15
  import {Collection as $7xe5e$Collection} from "react-aria/Collection";
16
16
  import {createBranchComponent as $7xe5e$createBranchComponent, CollectionBuilder as $7xe5e$CollectionBuilder, createLeafComponent as $7xe5e$createLeafComponent} from "react-aria/CollectionBuilder";
17
17
  import {filterDOMProps as $7xe5e$filterDOMProps} from "react-aria/filterDOMProps";
18
18
  import {FocusScope as $7xe5e$FocusScope} from "react-aria/FocusScope";
19
+ import {inertValue as $7xe5e$inertValue} from "react-aria/private/utils/inertValue";
20
+ import {useLoadMoreSentinel as $7xe5e$useLoadMoreSentinel} from "react-aria/private/utils/useLoadMoreSentinel";
19
21
  import {mergeProps as $7xe5e$mergeProps} from "react-aria/mergeProps";
20
22
  import {PressResponder as $7xe5e$PressResponder} from "react-aria/private/interactions/PressResponder";
21
23
  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";
@@ -60,6 +62,8 @@ import {useObjectRef as $7xe5e$useObjectRef} from "react-aria/useObjectRef";
60
62
 
61
63
 
62
64
 
65
+
66
+
63
67
 
64
68
 
65
69
 
@@ -445,7 +449,57 @@ const $49319ee1285aa241$export$2ce376c2cc3355c8 = /*#__PURE__*/ (0, $7xe5e$creat
445
449
  ]
446
450
  }, renderProps.children));
447
451
  });
452
+ const $49319ee1285aa241$export$93aba29d3a678058 = (0, $7xe5e$createLeafComponent)((0, $7xe5e$LoaderNode), function MenuLoadingIndicator(props, ref, item) {
453
+ let state = (0, $7xe5e$useContext)($49319ee1285aa241$export$24aad8519b95b41b);
454
+ let { isLoading: isLoading, onLoadMore: onLoadMore, scrollOffset: scrollOffset, ...otherProps } = props;
455
+ let sentinelRef = (0, $7xe5e$useRef)(null);
456
+ let memoedLoadMoreProps = (0, $7xe5e$useMemo)(()=>({
457
+ onLoadMore: onLoadMore,
458
+ collection: state?.collection,
459
+ sentinelRef: sentinelRef,
460
+ scrollOffset: scrollOffset
461
+ }), [
462
+ onLoadMore,
463
+ scrollOffset,
464
+ state?.collection
465
+ ]);
466
+ (0, $7xe5e$useLoadMoreSentinel)(memoedLoadMoreProps, sentinelRef);
467
+ let renderProps = (0, $7230ffa83bc0c2cf$export$4d86445c2cf5e3)({
468
+ ...otherProps,
469
+ id: undefined,
470
+ children: item.rendered,
471
+ defaultClassName: 'react-aria-MenuLoadingIndicator',
472
+ values: undefined
473
+ });
474
+ let itemProps = {
475
+ // For Android talkback
476
+ tabIndex: -1
477
+ };
478
+ return /*#__PURE__*/ (0, $7xe5e$react).createElement((0, $7xe5e$react).Fragment, null, /*#__PURE__*/ (0, $7xe5e$react).createElement("div", {
479
+ style: {
480
+ position: 'relative',
481
+ width: 0,
482
+ height: 0
483
+ },
484
+ inert: (0, $7xe5e$inertValue)(true)
485
+ }, /*#__PURE__*/ (0, $7xe5e$react).createElement("div", {
486
+ "data-testid": "loadMoreSentinel",
487
+ ref: sentinelRef,
488
+ style: {
489
+ position: 'absolute',
490
+ height: 1,
491
+ width: 1
492
+ }
493
+ })), isLoading && renderProps.children && /*#__PURE__*/ (0, $7xe5e$react).createElement((0, $7xe5e$react).Fragment, null, /*#__PURE__*/ (0, $7xe5e$react).createElement((0, $7230ffa83bc0c2cf$export$df3a06d6289f983e).div, {
494
+ ...(0, $7xe5e$mergeProps)((0, $7xe5e$filterDOMProps)(props, {
495
+ global: true
496
+ }), itemProps),
497
+ ...renderProps,
498
+ role: "menuitem",
499
+ ref: ref
500
+ }, renderProps.children)));
501
+ });
448
502
 
449
503
 
450
- export {$49319ee1285aa241$export$c7e742effb1c51e2 as MenuContext, $49319ee1285aa241$export$24aad8519b95b41b as MenuStateContext, $49319ee1285aa241$export$795aec4671cbae19 as RootMenuTriggerStateContext, $49319ee1285aa241$export$27d2ad3c5815583e as MenuTrigger, $49319ee1285aa241$export$ecabc99eeffab7ca as SubmenuTrigger, $49319ee1285aa241$export$d9b273488cd8ce6f as Menu, $49319ee1285aa241$export$4b1545b4f2016d26 as MenuSection, $49319ee1285aa241$export$2ce376c2cc3355c8 as MenuItem};
504
+ export {$49319ee1285aa241$export$c7e742effb1c51e2 as MenuContext, $49319ee1285aa241$export$24aad8519b95b41b as MenuStateContext, $49319ee1285aa241$export$795aec4671cbae19 as RootMenuTriggerStateContext, $49319ee1285aa241$export$27d2ad3c5815583e as MenuTrigger, $49319ee1285aa241$export$ecabc99eeffab7ca as SubmenuTrigger, $49319ee1285aa241$export$d9b273488cd8ce6f as Menu, $49319ee1285aa241$export$4b1545b4f2016d26 as MenuSection, $49319ee1285aa241$export$2ce376c2cc3355c8 as MenuItem, $49319ee1285aa241$export$93aba29d3a678058 as MenuLoadMoreItem};
451
505
  //# sourceMappingURL=Menu.mjs.map