Multicolumn Bluesky client powered by Angular
1import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy} from '@angular/core';
2
3@Component({
4 selector: 'spinner',
5 imports: [],
6 template: `
7 <div
8 class="flex h-[1em] w-[1em] items-center justify-center"
9 >
10 <span
11 class="-translate-y-[0.1em] font-bold"
12 >{{chars[index]}}</span>
13 </div>
14 `,
15 changeDetection: ChangeDetectionStrategy.OnPush
16})
17export class SpinnerComponent implements OnDestroy {
18 chars = ['|', '/', '–', '\\'];
19 index = 0;
20 loop = setInterval(() => {
21 this.index = this.index == 3 ? 0 : this.index + 1;
22 this.cdRef.markForCheck();
23 }, 250);
24
25 constructor(
26 private cdRef: ChangeDetectorRef
27 ) {}
28
29 ngOnDestroy() {
30 clearInterval(this.loop);
31 }
32}