mirror of
https://github.com/home-assistant/frontend.git
synced 2025-04-23 04:47:19 +00:00
62 lines
1.3 KiB
TypeScript
62 lines
1.3 KiB
TypeScript
import { css, CSSResultGroup, LitElement, svg, TemplateResult } from "lit";
|
|
import { customElement, property } from "lit/decorators";
|
|
import {
|
|
getValueInPercentage,
|
|
normalize,
|
|
roundWithOneDecimal,
|
|
} from "../util/calculate";
|
|
|
|
@customElement("ha-bar")
|
|
export class HaBar extends LitElement {
|
|
@property({ type: Number }) public min = 0;
|
|
|
|
@property({ type: Number }) public max = 100;
|
|
|
|
@property({ type: Number }) public value!: number;
|
|
|
|
protected render(): TemplateResult {
|
|
const valuePrecentage = roundWithOneDecimal(
|
|
getValueInPercentage(
|
|
normalize(this.value, this.min, this.max),
|
|
this.min,
|
|
this.max
|
|
)
|
|
);
|
|
|
|
return svg`
|
|
<svg>
|
|
<g>
|
|
<rect/>
|
|
<rect width="${valuePrecentage}%"/>
|
|
</g>
|
|
</svg>
|
|
`;
|
|
}
|
|
|
|
static get styles(): CSSResultGroup {
|
|
return css`
|
|
rect {
|
|
height: 100%;
|
|
}
|
|
rect:first-child {
|
|
width: 100%;
|
|
fill: var(--ha-bar-background-color, var(--secondary-background-color));
|
|
}
|
|
rect:last-child {
|
|
fill: var(--ha-bar-primary-color, var(--primary-color));
|
|
}
|
|
svg {
|
|
border-radius: var(--ha-bar-border-radius, 4px);
|
|
height: 12px;
|
|
width: 100%;
|
|
}
|
|
`;
|
|
}
|
|
}
|
|
|
|
declare global {
|
|
interface HTMLElementTagNameMap {
|
|
"ha-bar": HaBar;
|
|
}
|
|
}
|