angular / angular/components

bug(style): Custom palette's text hue not propagated to MDC styles

Ouverte
#29,076 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area: material/form-field P4
Langage dominant
TypeScript
Étoiles
25k
Forks
6.8k
Merge moyen
1 j 8 h
PR mergées (30 j)
91

Description

### Is this a regression?

- [X] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

14.x

### Description

[Re-opening #26021 which was incorrectly closed as a duplicate of a similar but different issue]

[This is a regression insofar as the legacy non-MDC implementations do not have this problem]

Hi, after running the MDC schematic on one of my projects I have found that the MDC-based components do not use the `$text` hue specified in the theme config, which can cause accessibility issues for themes whose default hues do not provide sufficient contrast against a neutral background. In particular I have noticed this causes legibility issues for the floating placeholder on form fields and the label text on default-appearance buttons, but it might apply to other components as well.

My theme is configured as follows:

`$my-palette: mat.define-palette($greens, 600, 200, 900, 700);`
Note that the $text hue is overridden to `700` in the call to `define-palette`.

Here is a screenshot showing the 700 hue being correctly applied to the aforementioned text elements under the legacy components:

![image](https://github.com/angular/components/assets/4996462/2739e6f4-784d-41a3-81b6-4f4ee4741aa7)

And here is how the new MDC components look:

![image](https://github.com/angular/components/assets/4996462/a57571a7-f795-4c5a-8ba5-ba4d551d5b22)

I had a hard time reading the Angular Material => MDC SCSS theming code but it seems like the $text hue preference isn't being passed to the MDC mixins in any way.

### Reproduction

StackBlitz link:
Steps to reproduce:
1. https://stackblitz.com/edit/components-issue-9ugktp?file=src%2Fstyles.scss
2. Note that text hue is set to 900 but text button and form field label use 500

### Expected Behavior

MDC components should use specified text hue where applicable

### Actual Behavior

MDC components used primary hue regardless

### Environment

Environment
Angular: 15.0.0-18.0.1
CDK/Material: 15.0.0-18.0.1
Browser(s): Chrome
Operating System (e.g. Windows, macOS, Ubuntu): Windows 10

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par src/styles.scss dans le StackBlitz lié et suivez le code de thématisation SCSS d'Angular Material MDC autour de mat.define-palette et des mixins MDC. Comparez la sortie legacy et MDC pour la teinte $text configurée, puis vérifiez que les éléments de texte MDC concernés, notamment les libellés des champs de formulaire et les boutons par défaut, utilisent la teinte spécifiée dans la reproduction.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
angular, scss, typescript
Domaine
accessibility, frontend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.