-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathGauge.tsx
53 lines (51 loc) · 1.62 KB
/
Gauge.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import * as React from 'react';
import { useDraggable } from './useDraggable';
export const Gauge = ({ step }) => {
const [draggableRef, dx, dy, percentX, percentY] = useDraggable({
step,
});
return (
<div className="gauge">
<div
className="gauge__marker"
ref={draggableRef}
style={{
transform: `translateY(${dy}px)`,
}}
/>
<div
className="gauge__progress"
style={{
height: `${percentY}%`,
}}
/>
{
Array(21).fill(0)
.map((_, index) => index * 5)
.map((v) => (
v % 20 === 0
? (
<div
className="gauge__tick"
key={v}
style={{
top: `${v}%`,
}}
>
<div className="gauge__label">{v}</div>
</div>
)
: (
<div
className="gauge__tick gauge__tick--minor"
key={v}
style={{
top: `${v}%`,
}}
/>
)
))
}
</div>
);
};