14
14
import { AriaMenuProps , FocusScope , mergeProps , useFocusRing , useMenu , useMenuItem , useMenuSection , useMenuTrigger } from 'react-aria' ;
15
15
import { BaseCollection , CollectionProps , ItemRenderProps , useCachedChildren , useCollection , useSSRCollectionNode } from './Collection' ;
16
16
import { MenuTriggerProps as BaseMenuTriggerProps , Node , TreeState , useMenuTriggerState , useTreeState } from 'react-stately' ;
17
- import { ContextValue , forwardRefType , Provider , RenderProps , ScrollableProps , SlotProps , StyleProps , useContextProps , useRenderProps , useSlot } from './utils' ;
17
+ import { ContextValue , forwardRefType , Provider , RenderProps , ScrollableProps , SlotProps , StyleProps , useContextProps , useRenderProps , useSlot , useSlottedContext } from './utils' ;
18
18
import { filterDOMProps , mergeRefs , useObjectRef , useResizeObserver } from '@react-aria/utils' ;
19
19
import { Header } from './Header' ;
20
20
import { Key , LinkDOMProps } from '@react-types/shared' ;
@@ -31,7 +31,6 @@ import {UNSTABLE_useSubmenuTrigger} from '@react-aria/menu';
31
31
export const MenuContext = createContext < ContextValue < MenuProps < any > , HTMLDivElement > > ( null ) ;
32
32
export const MenuStateContext = createContext < TreeState < unknown > | null > ( null ) ;
33
33
export const RootMenuTriggerStateContext = createContext < RootMenuTriggerState | null > ( null ) ;
34
- export const SubmenuContext = createContext < { popoverContainer : Element | null } | null > ( null ) ;
35
34
36
35
export interface MenuTriggerProps extends BaseMenuTriggerProps {
37
36
children ?: ReactNode
@@ -181,7 +180,7 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
181
180
values = { [
182
181
[ MenuStateContext , state ] ,
183
182
[ SeparatorContext , { elementType : 'div' } ] ,
184
- [ SubmenuContext , { popoverContainer} ]
183
+ [ PopoverContext , { UNSTABLE_portalContainer : popoverContainer || undefined } ]
185
184
] } >
186
185
{ children }
187
186
</ Provider >
@@ -347,9 +346,9 @@ interface MenuItemTriggerInnerProps<T> {
347
346
348
347
function MenuItemTriggerInner < T > ( { item, popover, parentMenuRef, delay} : MenuItemTriggerInnerProps < T > ) {
349
348
let state = useContext ( MenuStateContext ) ! ;
349
+ let popoverContext = useSlottedContext ( PopoverContext ) ! ;
350
350
let ref = useObjectRef < any > ( item . props . ref ) ;
351
351
let rootMenuTriggerState = useContext ( RootMenuTriggerStateContext ) ! ;
352
- let submenuContext = useContext ( SubmenuContext ) ! ;
353
352
let submenuTriggerState = UNSTABLE_useSubmenuTriggerState ( { triggerKey : item . key } , rootMenuTriggerState ) ;
354
353
let submenuRef = useRef < HTMLDivElement > ( null ) ;
355
354
let { submenuTriggerProps, submenuProps, popoverProps} = UNSTABLE_useSubmenuTrigger ( {
@@ -398,7 +397,7 @@ function MenuItemTriggerInner<T>({item, popover, parentMenuRef, delay}: MenuItem
398
397
trigger : 'SubmenuTrigger' ,
399
398
triggerRef : ref ,
400
399
placement : 'end top' ,
401
- UNSTABLE_portalContainer : submenuContext . popoverContainer || undefined ,
400
+ UNSTABLE_portalContainer : popoverContext . UNSTABLE_portalContainer || undefined ,
402
401
...popoverProps
403
402
} ]
404
403
] } >
0 commit comments