@@ -39,49 +39,48 @@ type MenuItemProps = Omit<
3939 icon ?: LucideIcon ;
4040 disabledReason ?: string ;
4141} ;
42- export const MenuItem = ( {
43- children,
44- shortcut,
45- icon : Icon ,
46- disabled,
47- disabledReason,
48- ...restProps
49- } : MenuItemProps ) => {
50- const isSubMenuTrigger = useContext ( SubMenuTriggerContext ) ;
42+ export const MenuItem = forwardRef < HTMLButtonElement , MenuItemProps > (
43+ (
44+ { children, shortcut, icon : Icon , disabled, disabledReason, ...restProps } ,
45+ ref
46+ ) => {
47+ const isSubMenuTrigger = useContext ( SubMenuTriggerContext ) ;
5148
52- const item = (
53- < BaseUIMenu . Item
54- className = { styles . item }
55- disabled = { disabled }
56- closeOnClick = { isSubMenuTrigger ? false : undefined }
57- { ...restProps }
58- >
59- < span className = { styles . itemLeft } >
60- { Icon ? < Icon size = { menuIconSize } /> : null }
61- < Text tone = { disabled ? 'secondary' : undefined } truncate >
62- { children }
63- </ Text >
64- </ span >
65- { shortcut && (
66- < Text tone = "secondary" >
67- < KeyboardShortcut shortcut = { shortcut } />
68- </ Text >
69- ) }
70- { isSubMenuTrigger && ! disabled ? < ChevronRight size = { 12 } /> : null }
71- </ BaseUIMenu . Item >
72- ) ;
49+ const item = (
50+ < BaseUIMenu . Item
51+ ref = { ref }
52+ className = { styles . item }
53+ disabled = { disabled }
54+ closeOnClick = { isSubMenuTrigger ? false : undefined }
55+ { ...restProps }
56+ >
57+ < span className = { styles . itemLeft } >
58+ { Icon ? < Icon size = { menuIconSize } /> : null }
59+ < Text tone = { disabled ? 'secondary' : undefined } truncate >
60+ { children }
61+ </ Text >
62+ </ span >
63+ { shortcut && (
64+ < Text tone = "secondary" >
65+ < KeyboardShortcut shortcut = { shortcut } />
66+ </ Text >
67+ ) }
68+ { isSubMenuTrigger && ! disabled ? < ChevronRight size = { 12 } /> : null }
69+ </ BaseUIMenu . Item >
70+ ) ;
7371
74- return disabled && disabledReason ? (
75- < Tooltip
76- label = { disabledReason }
77- announceAsDescription
78- side = "right"
79- trigger = { item }
80- />
81- ) : (
82- item
83- ) ;
84- } ;
72+ return disabled && disabledReason ? (
73+ < Tooltip
74+ label = { disabledReason }
75+ announceAsDescription
76+ side = "right"
77+ trigger = { item }
78+ />
79+ ) : (
80+ item
81+ ) ;
82+ }
83+ ) ;
8584
8685export const linkArrowSize = 12 ;
8786
0 commit comments