Skip to content

Commit c8eb797

Browse files
committed
fix(cdk-experimental/menu): refocus trigger after closeAll
1 parent f384cb5 commit c8eb797

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

src/cdk-experimental/menu/menu-item-trigger.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export class CdkMenuItemTrigger extends MenuTrigger implements OnDestroy {
9595
) {
9696
super(injector, menuStack);
9797
this._registerCloseHandler();
98+
this._subscribeToMenuStackClosed();
9899
this._subscribeToMouseEnter();
99100
this._subscribeToHasFocus();
100101
}
@@ -321,4 +322,14 @@ export class CdkMenuItemTrigger extends MenuTrigger implements OnDestroy {
321322
this.menuStack.setHasFocus(hasFocus);
322323
}
323324
}
325+
326+
private _subscribeToMenuStackClosed() {
327+
if (!this._parentMenu) {
328+
this.menuStack.closed.subscribe(({focusParentMenu}) => {
329+
if (focusParentMenu && !this.menuStack.length()) {
330+
this._elementRef.nativeElement.focus();
331+
}
332+
});
333+
}
334+
}
324335
}

src/cdk-experimental/menu/menu-item.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler,
140140
trigger() {
141141
if (!this.disabled && !this.hasMenu()) {
142142
this.triggered.next();
143-
this._menuStack.closeAll();
143+
this._menuStack.closeAll(undefined, true);
144144
}
145145
}
146146

@@ -219,7 +219,7 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler,
219219
private _forwardArrowPressed(event: KeyboardEvent) {
220220
if (!this.hasMenu() && this._menuStack.hasInlineMenu()) {
221221
event.preventDefault();
222-
this._menuStack.closeAll(FocusNext.nextItem);
222+
this._menuStack.closeAll(FocusNext.nextItem, true);
223223
}
224224
}
225225

src/cdk-experimental/menu/menu-stack.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ export class MenuStack {
148148
this._close.next({item: menuStackItem, focusParentMenu});
149149
}
150150
}
151-
152151
this._empty.next(focusNext);
153152
}
154153
}

0 commit comments

Comments
 (0)