J'utilise mat-menu de Angular Material with different mat-menu-item and I would like the list of menu items to be the same size as the button.
Voilà ce que j'ai:
Et ce que je souhaite:
J'ai essayé de changer la taille du menu avec le css, mais cela ne fonctionne pas correctement.
CSS:
.cdk-overlay-pane {width: 100%;}
.mat-menu-panel {width: 100%;}
HTML:
<button mat-raised-button [matMenuTriggerFor]="menu" class="btn-block btn-blue">
<div fxLayout="row" fxLayoutAlign="center center">
<mat-icon>more_vert</mat-icon>
<span fxFlex>OPTION</span>
</div>
</button>
<mat-menu #menu="matMenu">
<button mat-menu-item>
<mat-icon>unarchive</mat-icon>
<span>First</span>
</button>
<button mat-menu-item>
<mat-icon>file_copy</mat-icon>
<span>Second</span>
</button>
</mat-menu>
J'ai fait un StackBlitz ICI pour mon menu mat.
Merci d'avance!
EDIT: J'ai changé mon code parce que j'utilise un bouton réactif avec la classe bootstrap "btn-block" .
J'ai trouvé une solution vraiment pas propre, mais la voici: StackBlitz ICI
Si quelqu'un avait une solution CSS, je suis intéressé.
HTML:
<button mat-raised-button [matMenuTriggerFor]="menu" class="btn-block btn-blue" id="button">
<div fxLayout="row" fxLayoutAlign="center center">
<mat-icon>more_vert</mat-icon>
<span fxFlex>OPTION</span>
</div>
</button>
TS:
export class AppComponent implements DoCheck{
ngDoCheck(){
var widthButton=document.getElementById("button").offsetWidth;
var elems = document.getElementsByClassName('mat-menu-panel');
for(var i = 0; i < elems.length; i++) {
elems[i].style.width = widthButton+"px";
}
}
}
CSS:
.cdk-overlay-pane {width: 100%!important;}
.mat-menu-panel {max-width: 100%!important; min-width: 64px!important;}
DEMO: