@@ -465,6 +465,22 @@ describe('MenuTrigger', () => {
465
465
expect ( secondEvent . defaultPrevented ) . toBe ( false ) ;
466
466
} ) ;
467
467
468
+ it ( 'should prevent the default action on enter presses on non-button/non-link triggers' , ( ) => {
469
+ fixture . componentInstance . useButtonTrigger = false ;
470
+ fixture . changeDetectorRef . markForCheck ( ) ;
471
+ detectChanges ( ) ;
472
+
473
+ const firstEvent = dispatchKeyboardEvent ( nativeTrigger , 'keydown' , ENTER ) ;
474
+ detectChanges ( ) ;
475
+ expect ( firstEvent . defaultPrevented ) . toBe ( true ) ;
476
+ expect ( nativeMenus . length ) . toBe ( 2 ) ;
477
+
478
+ const secondEvent = dispatchKeyboardEvent ( nativeTrigger , 'keydown' , ENTER ) ;
479
+ detectChanges ( ) ;
480
+ expect ( nativeMenus . length ) . toBe ( 1 ) ;
481
+ expect ( secondEvent . defaultPrevented ) . toBe ( true ) ;
482
+ } ) ;
483
+
468
484
it ( 'should close the open menu on background click' , ( ) => {
469
485
nativeTrigger . click ( ) ;
470
486
detectChanges ( ) ;
@@ -674,7 +690,11 @@ class TriggerOpensItsMenu {
674
690
675
691
@Component ( {
676
692
template : `
677
- <button cdkMenuItem [cdkMenuTriggerFor]="sub1">First</button>
693
+ @if (useButtonTrigger) {
694
+ <button cdkMenuItem [cdkMenuTriggerFor]="sub1">First</button>
695
+ } @else {
696
+ <div cdkMenuItem [cdkMenuTriggerFor]="sub1">First</div>
697
+ }
678
698
679
699
<ng-template #sub1>
680
700
<div cdkMenu>
@@ -693,6 +713,7 @@ class StandaloneTriggerWithInlineMenu {
693
713
@ViewChild ( 'submenu_item' , { read : ElementRef } ) submenuItem ?: ElementRef < HTMLElement > ;
694
714
@ViewChild ( 'inline_item' , { read : ElementRef } ) nativeInlineItem : ElementRef < HTMLElement > ;
695
715
@ViewChildren ( CdkMenu , { read : ElementRef } ) nativeMenus : QueryList < ElementRef > ;
716
+ useButtonTrigger = true ;
696
717
}
697
718
698
719
@Component ( {
0 commit comments