MCPcopy Index your code
hub / github.com/adobe/react-spectrum / MenuInner

Function MenuInner

packages/react-aria-components/src/Menu.tsx:317–397  ·  view source on GitHub ↗
({props, collection, menuRef: ref}: MenuInnerProps<T>)

Source from the content-addressed store, hash-verified

315}
316
317function MenuInner<T>({props, collection, menuRef: ref}: MenuInnerProps<T>) {
318 [props, ref] = useContextProps(props, ref, SelectableCollectionContext);
319 let {filter, ...autocompleteMenuProps} = props;
320 let filteredCollection = useMemo(
321 () => (filter ? collection.filter(filter) : collection),
322 [collection, filter]
323 );
324 let state = useTreeState({
325 ...props,
326 collection: filteredCollection,
327 children: undefined
328 });
329 let triggerState = useContext(RootMenuTriggerStateContext);
330 let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);
331 let {menuProps} = useMenu(
332 {...props, isVirtualized, onClose: props.onClose || triggerState?.close},
333 state,
334 ref
335 );
336 let renderProps = useRenderProps({
337 ...props,
338 children: undefined,
339 defaultClassName: 'react-aria-Menu',
340 values: {
341 isEmpty: state.collection.size === 0
342 }
343 });
344
345 let emptyState: ReactElement | null = null;
346 if (state.collection.size === 0 && props.renderEmptyState) {
347 emptyState = (
348 <div role="menuitem" style={{display: 'contents'}}>
349 {props.renderEmptyState()}
350 </div>
351 );
352 }
353
354 let DOMProps = filterDOMProps(props, {global: true});
355
356 return (
357 <FocusScope>
358 <dom.div
359 {...mergeProps(DOMProps, renderProps, menuProps)}
360 ref={ref as RefObject<HTMLDivElement>}
361 slot={props.slot || undefined}
362 data-empty={state.collection.size === 0 || undefined}
363 onScroll={props.onScroll}>
364 <Provider
365 values={[
366 [MenuStateContext, state],
367 [SeparatorContext, {elementType: 'div'}],
368 [SectionContext, {name: 'MenuSection', render: MenuSectionInner}],
369 [
370 SubmenuTriggerContext,
371 {
372 parentMenuRef: ref,
373 shouldUseVirtualFocus: autocompleteMenuProps?.shouldUseVirtualFocus
374 }

Callers

nothing calls this directly

Calls 9

useContextPropsFunction · 0.90
useTreeStateFunction · 0.90
useMenuFunction · 0.90
useRenderPropsFunction · 0.90
filterDOMPropsFunction · 0.90
mergePropsFunction · 0.90
useMenuTriggerStateFunction · 0.90
usePersistedKeysFunction · 0.90
filterMethod · 0.65

Tested by

no test coverage detected