angular / angular/components

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

Đang mở
#28,376 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
area: material/progress-spinner P3
Ngôn ngữ chính
TypeScript
Star
25k
Fork
6.8k
Merge trung bình
1 ngày 8 giờ
Pull request đã merge (30 ngày)
91

Mô tả

### 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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với phần triển khai mat-progress-spinner và tái hiện vấn đề bằng StackBlitz được liên kết, thay đổi diameter và strokeWidth dưới 10. So sánh stroke-width được tính toán của hình tròn SVG với các giới hạn của container đối với các giá trị được báo cáo, sau đó xác minh rằng hình tròn lấp đầy container mà không để lại khoảng trống.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
angular, typescript
Lĩnh vực
frontend
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.