Skip to content

Commit d4e7a70

Browse files
committed
check events
1 parent 697d655 commit d4e7a70

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

src/cdk/menu/menu-bar.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export class CdkMenuBar extends CdkMenuBase implements AfterContentInit {
6464
_handleKeyEvent(event: KeyboardEvent) {
6565
const keyManager = this.keyManager;
6666

67+
// Now that menu overlays can be inlined, need to verify triggering on own events.
6768
const element = this._elementRef.nativeElement;
6869
const target = _getEventTarget(event) as HTMLElement;
6970
if (target !== element && target.parentElement !== element) {

src/cdk/menu/menu.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,17 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import {AfterContentInit, Directive, EventEmitter, inject, OnDestroy, Output} from '@angular/core';
9+
import {
10+
AfterContentInit,
11+
Directive,
12+
ElementRef,
13+
EventEmitter,
14+
inject,
15+
OnDestroy,
16+
Output,
17+
} from '@angular/core';
1018
import {ESCAPE, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, TAB} from '../keycodes';
19+
import {_getEventTarget} from '../platform';
1120
import {takeUntil} from 'rxjs/operators';
1221
import {CdkMenuGroup} from './menu-group';
1322
import {CDK_MENU} from './menu-interface';
@@ -38,6 +47,7 @@ import {CdkMenuBase} from './menu-base';
3847
],
3948
})
4049
export class CdkMenu extends CdkMenuBase implements AfterContentInit, OnDestroy {
50+
private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);
4151
private _parentTrigger = inject(MENU_TRIGGER, {optional: true});
4252

4353
/** Event emitted when the menu is closed. */
@@ -71,6 +81,14 @@ export class CdkMenu extends CdkMenuBase implements AfterContentInit, OnDestroy
7181
*/
7282
_handleKeyEvent(event: KeyboardEvent) {
7383
const keyManager = this.keyManager;
84+
85+
// Now that menu overlays can be inlined, need to verify triggering on own events.
86+
const element = this._elementRef.nativeElement;
87+
const target = _getEventTarget(event) as HTMLElement;
88+
if (target !== element && target.parentElement !== element) {
89+
return;
90+
}
91+
7492
switch (event.keyCode) {
7593
case LEFT_ARROW:
7694
case RIGHT_ARROW:

0 commit comments

Comments
 (0)