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

Function MenuItem

packages/@react-spectrum/s2/src/Menu.tsx:582–704  ·  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 return (
594 <AriaMenuItem
595 {...props}
596 aria-describedby={isUnavailable ? infoIconId : undefined}
597 textValue={textValue}
598 ref={ref}
599 style={pressScale(ref, props.UNSAFE_style)}
600 className={renderProps =>
601 (props.UNSAFE_className || '') +
602 menuitem(
603 {
604 ...renderProps,
605 isFocused: (renderProps.hasSubmenu && renderProps.isOpen) || renderProps.isFocused,
606 size,
607 isLink
608 },
609 props.styles
610 )
611 }>
612 {renderProps => {
613 let {children} = props;
614 let checkboxRenderProps = {
615 ...renderProps,
616 size,
617 isFocused: false,
618 isFocusVisible: false,
619 isIndeterminate: false,
620 isReadOnly: false,
621 isInvalid: false,
622 isRequired: false
623 };
624 let isFocused = (renderProps.hasSubmenu && renderProps.isOpen) || renderProps.isFocused;
625 return (
626 <>
627 <Provider
628 values={[
629 [
630 IconContext,
631 {
632 slots: {
633 icon: {
634 render: centerBaseline({slot: 'icon', styles: iconCenterWrapper}),
635 styles: icon
636 },
637 descriptor: {render: centerBaseline({slot: 'descriptor', styles: descriptor})} // TODO: remove once we have default?
638 }
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