Skip to content

Commit 9370134

Browse files
mart-sessmanm2rt
andauthored
fix(spinner): fixed rendering on safari and firefox #360 (#361)
Co-authored-by: m2rt <mart@bitweb.ee>
1 parent 14512b6 commit 9370134

3 files changed

Lines changed: 14 additions & 4 deletions

File tree

tedi/components/loader/spinner/spinner.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
class="tedi-spinner--inner"
44
cx="22"
55
cy="22"
6+
[attr.r]="r()"
67
fill="none"
78
></circle>
89
</svg>

tedi/components/loader/spinner/spinner.component.scss

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ $spinner-sizes: (
1616
animation: 1.4s linear 0s infinite normal none running tedi-spinner-outer;
1717

1818
&--inner {
19-
// Convert stroke size in px to viewBox units: stroke px × (viewbox / size px)
20-
stroke-width: calc(var(--tedi-spinner-stroke, 2) * #{$spinner-viewbox} / var(--tedi-spinner-size, 16));
21-
r: calc(#{$spinner-viewbox / 2} - var(--tedi-spinner-stroke, 2) * #{$spinner-viewbox} / var(--tedi-spinner-size, 16) / 2);
19+
stroke-width: var(--tedi-spinner-stroke-width);
2220
stroke-dasharray: 80, 200;
2321
stroke-dashoffset: 0;
2422
animation: 1.4s ease-in-out 0s infinite normal none running tedi-spinner-inner;
@@ -35,9 +33,11 @@ $spinner-sizes: (
3533
}
3634

3735
@each $size, $stroke in $spinner-sizes {
36+
$stroke-width: $stroke * $spinner-viewbox / $size;
37+
3838
&--size-#{$size} {
3939
--tedi-spinner-size: #{$size};
40-
--tedi-spinner-stroke: #{$stroke};
40+
--tedi-spinner-stroke-width: #{$stroke-width};
4141
}
4242
}
4343

tedi/components/loader/spinner/spinner.component.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ export class SpinnerComponent {
4141
*/
4242
label = input<string>();
4343

44+
private readonly sizeConfig: Record<SpinnerSize, { strokeWidth: number; r: number }> = {
45+
10: { strokeWidth: 4.4, r: 19.8 },
46+
16: { strokeWidth: 5.5, r: 19.25 },
47+
48: { strokeWidth: 3.6667, r: 20.1667 },
48+
};
49+
50+
strokeWidth = computed(() => this.sizeConfig[this.size()].strokeWidth);
51+
r = computed(() => this.sizeConfig[this.size()].r);
52+
4453
classes = computed(() => {
4554
const classList = [
4655
"tedi-spinner",

0 commit comments

Comments
 (0)