(props: AriaMeterProps)
| 5 | import './Form.css'; |
| 6 | |
| 7 | export function Meter(props: AriaMeterProps) { |
| 8 | let {label, value = 0, minValue = 0, maxValue = 100} = props; |
| 9 | /*- begin highlight -*/ |
| 10 | let {meterProps, labelProps} = useMeter(props); |
| 11 | /*- end highlight -*/ |
| 12 | |
| 13 | // Calculate the width of the meter fill as a percentage. |
| 14 | let percentage = ((value - minValue) / (maxValue - minValue)) * 100; |
| 15 | |
| 16 | return ( |
| 17 | <div {...meterProps} className="react-aria-Meter"> |
| 18 | <label className="react-aria-Label" {...labelProps}> |
| 19 | {label} |
| 20 | </label> |
| 21 | <span className="value">{meterProps['aria-valuetext']}</span> |
| 22 | <div className="track inset"> |
| 23 | <div |
| 24 | className="fill" |
| 25 | style={ |
| 26 | { |
| 27 | width: percentage + '%', |
| 28 | '--fill-color': |
| 29 | percentage < 70 ? 'var(--green)' : percentage < 90 ? 'var(--orange)' : 'var(--red)' |
| 30 | } as CSSProperties & {'--fill-color': string} |
| 31 | } |
| 32 | /> |
| 33 | </div> |
| 34 | </div> |
| 35 | ); |
| 36 | } |
nothing calls this directly
no test coverage detected