angular / angular/components

bug(mat-progress-spinner): stroke-width of svg circle not calculated properly for some diameter + strokeWidth values

Ouverte
#28,376 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area: material/progress-spinner 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

The `circle` element of the `mat-progress-spinner`'s SVG does not fill up to the whole space of it's container. This only occurs for some combinations of `strokeWidth` and `diameter` inputs and only if the `stokeWidth` is smaller than 10.

E.g. for the values of `diameter=10` and `strokeWidth=5` the circle's `stroke-width` style is calculated to be `20.8333%` which is not filling up to the edge of the SVG container:
![image](https://github.com/angular/components/assets/25979251/3b88b29a-5d6e-4cea-965f-237c41f3b03c)

If the value of the circle's `stroke-width` is manually set to ~26%, it fits:
![image](https://github.com/angular/components/assets/25979251/19f5cd26-8cfe-4236-88c3-30003d960ea0)

### Reproduction

[StackBlitz link](https://stackblitz.com/edit/cxwm1t?file=src%2Fexample%2Fprogress-spinner-configurable-example.html,src%2Fexample%2Fprogress-spinner-configurable-example.html)

Steps to reproduce:
1. Use mat-progress-spinner
2. Set strokeWidth to value < 10
3. Set diameter to e.g. 24

### Expected Behavior

The SVG's `circle` element should fill up the whole space of its container element

### Actual Behavior

The SVG's `circle` element does not fill up the whole space of its container element and leaves some space in between

### Environment

- Angular: 17.0.7
- CDK/Material: 17.0.4
- Browser(s): Chrome
- Operating System (e.g. Windows, macOS, Ubuntu): Ubuntu

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par l’implémentation de mat-progress-spinner et reproduisez le problème à l’aide du StackBlitz lié, en faisant varier diameter et strokeWidth en dessous de 10. Comparez le stroke-width calculé du cercle SVG avec les limites du conteneur pour les valeurs signalées, puis vérifiez que le cercle remplit son conteneur sans laisser d’espace.

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
35/100

Recevez les nouvelles issues par e-mail

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