MCPcopy Create free account
hub / github.com/adobe/react-spectrum / MenuTrigger

Function MenuTrigger

packages/react-aria-components/src/Menu.tsx:121–163  ·  view source on GitHub ↗
(props: MenuTriggerProps)

Source from the content-addressed store, hash-verified

119}
120
121export function MenuTrigger(props: MenuTriggerProps): JSX.Element | null {
122 let state = useMenuTriggerState(props);
123 let ref = useRef<HTMLButtonElement>(null);
124 let {menuTriggerProps, menuProps} = useMenuTrigger(
125 {
126 ...props,
127 type: 'menu'
128 },
129 state,
130 ref
131 );
132 let scrollRef = useRef(null);
133
134 // If within a collection (e.g. Tabs), render nothing.
135 // Not using createHideableComponent for this because that also creates a forwardRef.
136 let isHidden = useIsHidden();
137 if (isHidden) {
138 return null;
139 }
140
141 return (
142 <Provider
143 values={[
144 [MenuContext, {...menuProps, ref: scrollRef}],
145 [OverlayTriggerStateContext, state],
146 [RootMenuTriggerStateContext, state],
147 [
148 PopoverContext,
149 {
150 trigger: 'MenuTrigger',
151 triggerRef: ref,
152 scrollRef,
153 placement: 'bottom start',
154 'aria-labelledby': menuProps['aria-labelledby']
155 }
156 ]
157 ]}>
158 <PressResponder {...menuTriggerProps} ref={ref} isPressed={state.isOpen}>
159 {props.children}
160 </PressResponder>
161 </Provider>
162 );
163}
164
165export interface SubmenuTriggerProps {
166 /**

Callers

nothing calls this directly

Calls 3

useMenuTriggerStateFunction · 0.90
useMenuTriggerFunction · 0.90
useIsHiddenFunction · 0.90

Tested by

no test coverage detected