angular / angular/components

bug(core): define-palette loops on hues and contrast map

Ouverte
#28,070 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area: theming P3
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?

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

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

_No response_

### Description

define-palette function from @angular/material/core/theming/_theming.scss is iterating through colors in a palette.
**Issue:** It also iterates on "contrast" map defined in the palette, resulting in a "contrast-contrast: null" entry in the returned value.

https://github.com/angular/components/blob/6057512de333046517c5f64a2ce6cf0a889447e9/src/material/core/theming/_theming.scss#L78-L85

### Reproduction

Reproduction link: https://github.com/guillaumerochelle/scss-exp
Steps to reproduce:
1. Run `npm install`
2. Add `@debug $result` in node_modules/@angular/material/core/theming/_theming.scss line 86
3. Run `npm run build`

### Expected Behavior

Compilation logs show $result variable without `"contrast-contrast": null`

node_modules\@angular\material\core\theming\_theming.scss:87 DEBUG: (50: #ffebee, 100: #ffcdd2, 200: #ef9a9a, 300: #e57373, 400: #ef5350, 500: #f44336, 600: #e53935, 700: #d32f2f, 800: #c62828, 900: #b71c1c, A100: #ff8a80, A200: #ff5252, A400: #ff1744, A700: #d50000, contrast: (50: rgba(0, 0, 0, 0.87), 100: rgba(0, 0, 0, 0.87), 200: rgba(0, 0, 0, 0.87), 300: rgba(0, 0, 0, 0.87), 400: rgba(0, 0, 0, 0.87), 500: white, 600: white, 700: white, 800: white, 900: white, A100: rgba(0, 0, 0, 0.87), A200: white, A400: white, A700: white), default: #f44336, lighter: #ffcdd2, darker: #d32f2f, text: #f44336, default-contrast: white, lighter-contrast: rgba(0, 0, 0, 0.87), darker-contrast: white, "50-contrast": rgba(0, 0, 0, 0.87), "100-contrast": rgba(0, 0, 0, 0.87), "200-contrast": rgba(0, 0, 0, 0.87), "300-contrast": rgba(0, 0, 0, 0.87), "400-contrast": rgba(0, 0, 0, 0.87), "500-contrast": white, "600-contrast": white, "700-contrast": white, "800-contrast": white, "900-contrast": white, "A100-contrast": rgba(0, 0, 0, 0.87), "A200-contrast": white, "A400-contrast": white, "A700-contrast": white)

### Actual Behavior

Compilation logs show $result variable with `"contrast-contrast": null`

node_modules\@angular\material\core\theming\_theming.scss:87 DEBUG: (50: #ffebee, 100: #ffcdd2, 200: #ef9a9a, 300: #e57373, 400: #ef5350, 500: #f44336, 600: #e53935, 700: #d32f2f, 800: #c62828, 900: #b71c1c, A100: #ff8a80, A200: #ff5252, A400: #ff1744, A700: #d50000, contrast: (50: rgba(0, 0, 0, 0.87), 100: rgba(0, 0, 0, 0.87), 200: rgba(0, 0, 0, 0.87), 300: rgba(0, 0, 0, 0.87), 400: rgba(0, 0, 0, 0.87), 500: white, 600: white, 700: white, 800: white, 900: white, A100: rgba(0, 0, 0, 0.87), A200: white, A400: white, A700: white), default: #f44336, lighter: #ffcdd2, darker: #d32f2f, text: #f44336, default-contrast: white, lighter-contrast: rgba(0, 0, 0, 0.87), darker-contrast: white, "50-contrast": rgba(0, 0, 0, 0.87), "100-contrast": rgba(0, 0, 0, 0.87), "200-contrast": rgba(0, 0, 0, 0.87), "300-contrast": rgba(0, 0, 0, 0.87), "400-contrast": rgba(0, 0, 0, 0.87), "500-contrast": white, "600-contrast": white, "700-contrast": white, "800-contrast": white, "900-contrast": white, "A100-contrast": rgba(0, 0, 0, 0.87), "A200-contrast": white, "A400-contrast": white, "A700-contrast": white, **"contrast-contrast": null**)

### Environment

Angular CLI: 16.2.9
Node: 18.15.0
Package Manager: npm 9.7.2
OS: win32 x64

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Inspectez src/material/core/theming/_theming.scss, en particulier la logique de define-palette autour des lignes 78-85. Utilisez la reproduction liée : exécutez npm install, ajoutez la sortie de débogage indiquée et exécutez npm run build. C’est terminé lorsque le résultat compilé ne contient plus "contrast-contrast": null.

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

Évaluation

Stack technique
angular, scss
Domaine
frontend
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

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