mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-27 03:06:41 +00:00
Add Color Temp Selector (#12041)
This commit is contained in:
parent
641003bb2a
commit
b8d3c68a7a
@ -173,6 +173,10 @@ const SCHEMAS: {
|
|||||||
name: "Location with radius",
|
name: "Location with radius",
|
||||||
selector: { location: { radius: true, icon: "mdi:home" } },
|
selector: { location: { radius: true, icon: "mdi:home" } },
|
||||||
},
|
},
|
||||||
|
"color-temp": {
|
||||||
|
name: "Color Temperature",
|
||||||
|
selector: { color_temp: {} },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
58
src/components/ha-selector/ha-selector-color-temp.ts
Normal file
58
src/components/ha-selector/ha-selector-color-temp.ts
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import { css, html, LitElement } from "lit";
|
||||||
|
import { customElement, property } from "lit/decorators";
|
||||||
|
import type { HomeAssistant } from "../../types";
|
||||||
|
import type { ColorTempSelector } from "../../data/selector";
|
||||||
|
import { fireEvent } from "../../common/dom/fire_event";
|
||||||
|
import "../ha-labeled-slider";
|
||||||
|
|
||||||
|
@customElement("ha-selector-color_temp")
|
||||||
|
export class HaColorTempSelector extends LitElement {
|
||||||
|
@property() public hass!: HomeAssistant;
|
||||||
|
|
||||||
|
@property() public selector!: ColorTempSelector;
|
||||||
|
|
||||||
|
@property() public value?: string;
|
||||||
|
|
||||||
|
@property() public label?: string;
|
||||||
|
|
||||||
|
@property({ type: Boolean, reflect: true }) public disabled = false;
|
||||||
|
|
||||||
|
protected render() {
|
||||||
|
return html`
|
||||||
|
<ha-labeled-slider
|
||||||
|
pin
|
||||||
|
icon="hass:thermometer"
|
||||||
|
.caption=${this.label}
|
||||||
|
.min=${this.selector.color_temp.min_mireds ?? 153}
|
||||||
|
.max=${this.selector.color_temp.max_mireds ?? 500}
|
||||||
|
.value=${this.value}
|
||||||
|
@change=${this._valueChanged}
|
||||||
|
></ha-labeled-slider>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _valueChanged(ev: CustomEvent) {
|
||||||
|
fireEvent(this, "value-changed", {
|
||||||
|
value: Number((ev.target as any).value),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static styles = css`
|
||||||
|
ha-labeled-slider {
|
||||||
|
--ha-slider-background: -webkit-linear-gradient(
|
||||||
|
right,
|
||||||
|
rgb(255, 160, 0) 0%,
|
||||||
|
white 50%,
|
||||||
|
rgb(166, 209, 255) 100%
|
||||||
|
);
|
||||||
|
/* The color temp minimum value shouldn't be rendered differently. It's not "off". */
|
||||||
|
--paper-slider-knob-start-border-color: var(--primary-color);
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface HTMLElementTagNameMap {
|
||||||
|
"ha-selector-color_temp": HaColorTempSelector;
|
||||||
|
}
|
||||||
|
}
|
@ -21,6 +21,7 @@ import "./ha-selector-icon";
|
|||||||
import "./ha-selector-media";
|
import "./ha-selector-media";
|
||||||
import "./ha-selector-theme";
|
import "./ha-selector-theme";
|
||||||
import "./ha-selector-location";
|
import "./ha-selector-location";
|
||||||
|
import "./ha-selector-color-temp";
|
||||||
|
|
||||||
@customElement("ha-selector")
|
@customElement("ha-selector")
|
||||||
export class HaSelector extends LitElement {
|
export class HaSelector extends LitElement {
|
||||||
|
@ -16,7 +16,8 @@ export type Selector =
|
|||||||
| IconSelector
|
| IconSelector
|
||||||
| MediaSelector
|
| MediaSelector
|
||||||
| ThemeSelector
|
| ThemeSelector
|
||||||
| LocationSelector;
|
| LocationSelector
|
||||||
|
| ColorTempSelector;
|
||||||
|
|
||||||
export interface EntitySelector {
|
export interface EntitySelector {
|
||||||
entity: {
|
entity: {
|
||||||
@ -97,6 +98,13 @@ export interface NumberSelector {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ColorTempSelector {
|
||||||
|
color_temp: {
|
||||||
|
min_mireds?: number;
|
||||||
|
max_mireds?: number;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export interface BooleanSelector {
|
export interface BooleanSelector {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||||
boolean: {};
|
boolean: {};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user