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

Function MenuItem

packages/@react-spectrum/s2/src/Menu.tsx:582–706  ·  view source on GitHub ↗
(props: MenuItemProps)

Source from the content-addressed store, hash-verified

580}
581
582export function MenuItem(props: MenuItemProps): ReactNode {
583 let ref = useRef(null);
584 let isLink = props.href != null;
585 let isLinkOut = isLink && props.target === '_blank';
586 let {size, hideLinkOutIcon} = useContext(InternalMenuContext);
587 let textValue =
588 props.textValue || (typeof props.children === 'string' ? props.children : undefined);
589 let {direction} = useLocale();
590 let isUnavailable = useContext(UnavailableContext);
591 let infoIconId = useId();
592
593 // oxlint-disable react/react-compiler
594 return (
595 <AriaMenuItem
596 {...props}
597 aria-describedby={isUnavailable ? infoIconId : undefined}
598 textValue={textValue}
599 ref={ref}
600 style={pressScale(ref, props.UNSAFE_style)}
601 className={renderProps =>
602 (props.UNSAFE_className || '') +
603 menuitem(
604 {
605 ...renderProps,
606 isFocused: (renderProps.hasSubmenu && renderProps.isOpen) || renderProps.isFocused,
607 size,
608 isLink
609 },
610 props.styles
611 )
612 }>
613 {renderProps => {
614 let {children} = props;
615 let checkboxRenderProps = {
616 ...renderProps,
617 size,
618 isFocused: false,
619 isFocusVisible: false,
620 isIndeterminate: false,
621 isReadOnly: false,
622 isInvalid: false,
623 isRequired: false
624 };
625 let isFocused = (renderProps.hasSubmenu && renderProps.isOpen) || renderProps.isFocused;
626 return (
627 <>
628 <Provider
629 values={[
630 [
631 IconContext,
632 {
633 slots: {
634 icon: {
635 render: centerBaseline({slot: 'icon', styles: iconCenterWrapper}),
636 styles: icon
637 },
638 descriptor: {render: centerBaseline({slot: 'descriptor', styles: descriptor})} // TODO: remove once we have default?
639 }

Callers

nothing calls this directly

Calls 5

useLocaleFunction · 0.90
useIdFunction · 0.90
pressScaleFunction · 0.90
centerBaselineFunction · 0.90
mergeStylesFunction · 0.90

Tested by

no test coverage detected