@@ -47,6 +47,7 @@ const TooltipWrapperContext = createContext({
4747 setDropdownVisible : ( _visible : boolean ) => { } ,
4848} ) ;
4949
50+ // Ribbon dropdowns share one open key; disabled items must only clear it when they own it.
5051const ToolbarDropdownContext = createContext < {
5152 openDropdownKey : string | null ;
5253 setOpenDropdownKey : ( key : string | null ) => void ;
@@ -158,10 +159,10 @@ export function DropdownWrapper(props: Omit<Partial<IDropdownProps>, 'overlay'>
158159 const overlayRef = useRef < HTMLDivElement > ( null ) ;
159160
160161 useEffect ( ( ) => {
161- if ( disabled ) {
162+ if ( disabled && dropdownVisible ) {
162163 setDropdownVisible ( false ) ;
163164 }
164- } , [ disabled , setDropdownVisible ] ) ;
165+ } , [ disabled , dropdownVisible , setDropdownVisible ] ) ;
165166
166167 useEffect ( ( ) => {
167168 const ownerDocument = triggerRef . current ?. ownerDocument ;
@@ -268,10 +269,10 @@ export function DropdownMenuWrapper({
268269 const { dropdownVisible, setDropdownVisible } = useContext ( TooltipWrapperContext ) ;
269270
270271 useEffect ( ( ) => {
271- if ( disabled ) {
272+ if ( disabled && dropdownVisible ) {
272273 setDropdownVisible ( false ) ;
273274 }
274- } , [ disabled , setDropdownVisible ] ) ;
275+ } , [ disabled , dropdownVisible , setDropdownVisible ] ) ;
275276
276277 const menuManagerService = useDependency ( IMenuManagerService ) ;
277278 const resolveMenuItems = ( ) => menuId ? menuManagerService . getMenuByPositionKey ( menuId ) : [ ] ;
0 commit comments