Skip to content

Commit ee624c9

Browse files
committed
adding feature : feat(MENU): Native material way to maintain MatMenuTrigger pressed state angular#31014
angular#31014, by adding css to class 'stay-open-while-press' and receive attributes input [pressedWhileOpen]="true" on triiger button
1 parent 0e39170 commit ee624c9

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/material/menu/menu-trigger.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,18 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy {
187187

188188
this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu());
189189
}
190+
private _pressedWhileOpen: boolean = false;
191+
@Input()
192+
set pressedWhileOpen(value: boolean) {
193+
this._pressedWhileOpen = value;
194+
if (value) {
195+
this._element.nativeElement.classList.add('stay-open-while-press');
196+
}
197+
}
198+
get pressedWhileOpen(): boolean {
199+
return this._pressedWhileOpen;
200+
}
201+
190202
private _menu: MatMenuPanel | null;
191203

192204
/** Data to be passed along to any lazily-rendered content. */

src/material/menu/menu.scss

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@ mat-menu {
1313
display: none;
1414
}
1515

16+
.mat-mdc-menu-trigger.stay-open-while-press[aria-expanded='true'] {
17+
.mat-mdc-button-persistent-ripple:before {
18+
opacity: var(--mat-icon-button-pressed-state-layer-opacity);
19+
}
20+
}
21+
1622
.mat-mdc-menu-content {
1723
margin: 0;
1824
padding: 8px 0;
1925
outline: 0;
20-
2126
&,
2227
.mat-mdc-menu-item .mat-mdc-menu-item-text {
2328
@include vendor-prefixes.smooth-font();
@@ -165,7 +170,9 @@ mat-menu {
165170
// The class selector isn't specific enough to overide the link pseudo selectors so we need
166171
// to target them specifically, otherwise the item color might be overwritten by the user
167172
// agent resets of the app.
168-
&, &:visited, &:link {
173+
&,
174+
&:visited,
175+
&:link {
169176
color: token-utils.slot(item-label-text-color);
170177
}
171178

0 commit comments

Comments
 (0)