bug(mat-dialog): mat-dialog-title adds a space in front of the header text when HTML is formatted
- 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
### Description
When using a header tag as a mat-dialog-title, there is a space at the beginning of the title, resulting in the dialog title not being aligned with the content:

This only happens if the content of the header tag in the HTML file is placed on a new line.
When using a header tag that contains a long expression, the default formatting (by Prettier, for example) puts the content of the header tag on the next line (as header tags are block elements), like so:
```
{{ getTitleThisFunctionHasAVeryLongNameSoPrettierPutsItOnANewLine() }}
```
This results in a space being inserted in the HTML. However, since the browser ignores whitespace at the beginning of the element, the space is not visible (cf. HTML spec).
Sinde Material 15 however, elements containing `mat-dialog-title` have a `::before` element. This element causes the browser to render the whitespace, which is inconsistent with default browser behavior and default formatting for block elements.
### Reproduction
Steps to reproduce:
1. Create a mat-dialog
2. Add a header tag with mat-dialog-title
3. As a header text, insert an expression that is quite long, causing Prettier to put it on the next line
The problem is illustrated in [this Stackblitz](https://stackblitz.com/edit/angular-copgcv?file=src/app/dialog-content-example-dialog.html).
Removing the `::before` element of the `mat-dialog-title`, removes the whitespace, but causes the header height to be too small.
### Expected Behavior
No whitespace should be visible, according to default behavior of both the browser and block element formatting.
### Actual Behavior
Whitespace is visible at the beginning of the title.
### Environment
- Angular: 15.1
- CDK/Material: 15.1.2
- Browser(s): Chrome
- Operating System (e.g. Windows, macOS, Ubuntu): macOS Ventura
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par le StackBlitz lié et sa reproduction dans src/app/dialog-content-example-dialog.html, puis examinez les styles de mat-dialog-title impliquant l’élément ::before. La correction est terminée lorsqu’un en-tête formaté sur plusieurs lignes n’affiche aucun espace blanc en début de ligne tout en conservant la hauteur correcte du titre.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- angular, typescript
- Domaine
- frontend
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100