diff --git a/src/material/menu/menu-trigger.ts b/src/material/menu/menu-trigger.ts index 753ec907c611..8fb06b282b07 100644 --- a/src/material/menu/menu-trigger.ts +++ b/src/material/menu/menu-trigger.ts @@ -187,6 +187,17 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy { this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu()); } + private _pressedWhileOpen: boolean = false; + @Input() + set pressedWhileOpen(value: boolean) { + this._pressedWhileOpen = value; + if (value) { + this._element.nativeElement.classList.add('stay-open-while-press'); + } + } + get pressedWhileOpen(): boolean { + return this._pressedWhileOpen; + } private _menu: MatMenuPanel | null; /** Data to be passed along to any lazily-rendered content. */ diff --git a/src/material/menu/menu.scss b/src/material/menu/menu.scss index 517f0626b524..b49c1df2fbd6 100644 --- a/src/material/menu/menu.scss +++ b/src/material/menu/menu.scss @@ -12,7 +12,12 @@ $token-slots: m2-menu.get-token-slots(); mat-menu { display: none; } - +.mat-mdc-menu-trigger.stay-open-while-press[aria-expanded='true'] { + .mat-mdc-button-persistent-ripple:before { + opacity: var(--mat-icon-button-pressed-state-layer-opacity); + } +} + .mat-mdc-menu-content { margin: 0; padding: 8px 0;