@@ -243,8 +243,8 @@ class MenuItem extends AutoControlledComponent<Extendable<MenuItemProps>, MenuIt
243
243
protected actionHandlers : AccessibilityActionHandlers = {
244
244
performClick : event => this . handleClick ( event ) ,
245
245
openMenu : event => this . openMenu ( event ) ,
246
- closeAllMenus : event => this . closeAllMenus ( event ) ,
247
- closeMenuAndFocusNextParentItem : event => this . closeMenuAndFocusNextParentItem ( event ) ,
246
+ closeAllMenus : event => this . closeAllMenus ( event , false ) ,
247
+ closeAllMenusAndFocusNextParentItem : event => this . closeAllMenus ( event , true ) ,
248
248
closeMenu : event => this . closeMenu ( event ) ,
249
249
}
250
250
@@ -259,11 +259,12 @@ class MenuItem extends AutoControlledComponent<Extendable<MenuItemProps>, MenuIt
259
259
}
260
260
261
261
private outsideClickHandler = e => {
262
+ if ( ! this . state . menuOpen ) return
262
263
if (
263
264
! doesNodeContainClick ( this . itemRef . current , e ) &&
264
265
! doesNodeContainClick ( this . menuRef . current , e )
265
266
) {
266
- this . state . menuOpen && this . trySetState ( { menuOpen : false } )
267
+ this . trySetState ( { menuOpen : false } )
267
268
}
268
269
}
269
270
@@ -298,25 +299,15 @@ class MenuItem extends AutoControlledComponent<Extendable<MenuItemProps>, MenuIt
298
299
_ . invoke ( this . props , 'onFocus' , e , this . props )
299
300
}
300
301
301
- private closeAllMenus = e => {
302
+ private closeAllMenus = ( e , focusNextParent : boolean ) => {
302
303
const { menu, inSubmenu } = this . props
303
304
const { menuOpen } = this . state
304
305
if ( menu && menuOpen ) {
305
- this . setState ( { menuOpen : false } )
306
- if ( ! inSubmenu ) {
307
- focusAsync ( this . itemRef . current )
308
- }
309
- }
310
- }
311
-
312
- private closeMenuAndFocusNextParentItem = e => {
313
- const { menu, inSubmenu } = this . props
314
- const { menuOpen } = this . state
315
- if ( menu && menuOpen ) {
316
- this . setState ( { menuOpen : false } )
317
- if ( ! inSubmenu && this . props . vertical ) {
318
- focusAsync ( this . itemRef . current )
319
- }
306
+ this . setState ( { menuOpen : false } , ( ) => {
307
+ if ( ! inSubmenu && ( ! focusNextParent || this . props . vertical ) ) {
308
+ focusAsync ( this . itemRef . current )
309
+ }
310
+ } )
320
311
}
321
312
}
322
313
0 commit comments