J'essaie de remplacer la largeur maximale par défaut du composant snackbar dans Angular Material).
Le CSS appliqué par Angular Material est illustré ci-dessous:
.mat-snack-bar-container {
border-radius: 2px;
box-sizing: border-box;
display: block;
margin: 24px;
max-width: 568px;
min-width: 288px;
padding: 14px 24px;
transform: translateY(100%) translateY(24px);
}
J'ai essayé de remplacer le même style dans mon fichier style.css mais ce style est remplacé par le style par défaut.
.mat-snack-bar-container {
max-width: 800px;
}
J'ai trouvé une réponse à une question similaire mais je sais que la réponse à cette question est maintenant obsolète (/ deep/est obsolète).
Existe-t-il une solution de meilleures pratiques à cela?
Pour ce faire correctement, vous devez définir l'encapsulation de la vue sur Aucun sur votre composant:
@Component({
templateUrl: './my.component.html' ,
styleUrls: ['./my.component.css'],
encapsulation: ViewEncapsulation.None,
})
Ensuite, dans votre composant css, vous pouvez simplement faire ceci:
.mat-snack-bar-container {
max-width: 800px;
}
De la documentation officielle:
View Encapsulation = None signifie que Angular ne fait pas d'encapsulation de vue. Angular ajoute le CSS aux styles globaux. Les règles de portée, les isolations et les protections discutées plus haut don ne s'applique pas. Cela revient essentiellement à coller les styles du composant dans le code HTML.
Vérifié pour @ angular/material v7.0.x:
CSS ! Modificateur important fait l'affaire.
Mettez ceci est src/styles.scss (le css global de l'application):
.mat-snack-bar-container {
max-width: 100% !important;
}
Nous ajustons également sa police:
/* Overrides SnackBar CSS in Material Design's .mat-simple-snackbar class */
/* Original sizes: font: 24px, height: 47.952px */
.mat-simple-snackbar {
display: flex;
font-size: 28px !important; // 28px is double, 42px for triple
min-height: 70px !important; // 70px for double, 90px for triple
align-items: center !important;
justify-content: center !important;
}
Au 30 juin 2019, en utilisant Angular Material 8.0.1 avec Angular 8.0.3, les SCSS et TypeScript suivants semblent fonctionner pour remplacer la couleur de le bouton d'action dans un Angular Material snackbar * sans utiliser! important *:
styles.scss (pas la durée extrêmement longue, qui m'a permis d'inspecter le style avant qu'il ne disparaisse):
$snackBarTextColor: white;
$snackBarBackgroundNormal: #087a51;
$snackBarActionColor: lightgray;
.snackBarInfo {
background-color: $snackBarBackgroundNormal;
color: $snackBarTextColor;
}
.mat-simple-snackbar > span {
font-weight: bold;
}
.mat-simple-snackbar-action {
.mat-button {
.mat-button-wrapper {
color: $snackBarActionColor;
}
}
}
app.module.ts:
import { MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';
providers: [
{
provide: MAT_SNACK_BAR_DEFAULT_OPTIONS,
useValue: {
duration: 41000,
horizontalPosition: 'center',
verticalPosition: 'bottom',
panelClass: 'snackBarInfo'
}
}
]