mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-27 19:26:36 +00:00
parent
b3f9432ae1
commit
1d24b83e5c
@ -10,17 +10,17 @@ import {
|
||||
} from "lit-element";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
|
||||
import "../../../components/ha-card";
|
||||
import "../../../components/ha-label-badge";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import { LovelaceCard } from "../types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import {
|
||||
callAlarmAction,
|
||||
FORMAT_NUMBER,
|
||||
} from "../../../data/alarm_control_panel";
|
||||
|
||||
import "../../../components/ha-card";
|
||||
import "../../../components/ha-label-badge";
|
||||
import "../components/hui-warning";
|
||||
import { AlarmPanelCardConfig } from "./types";
|
||||
|
||||
const ICONS = {
|
||||
armed_away: "hass:shield-lock",
|
||||
@ -34,12 +34,6 @@ const ICONS = {
|
||||
|
||||
const BUTTONS = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "", "0", "clear"];
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
states?: string[];
|
||||
}
|
||||
|
||||
@customElement("hui-alarm-panel-card")
|
||||
class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
|
||||
public static async getConfigElement() {
|
||||
@ -53,7 +47,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: AlarmPanelCardConfig;
|
||||
|
||||
@property() private _code?: string;
|
||||
|
||||
@ -69,7 +63,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
|
||||
: 8;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: AlarmPanelCardConfig): void {
|
||||
if (
|
||||
!config ||
|
||||
!config.entity ||
|
||||
|
@ -1,22 +1,16 @@
|
||||
import { createCardElement } from "../common/create-card-element";
|
||||
import { computeCardSize } from "../common/compute-card-size";
|
||||
import {
|
||||
Condition,
|
||||
checkConditionsMet,
|
||||
validateConditionalConfig,
|
||||
} from "../../lovelace/common/validate-condition";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
|
||||
interface Config extends LovelaceCardConfig {
|
||||
card: LovelaceCardConfig;
|
||||
conditions: Condition[];
|
||||
}
|
||||
import { ConditionalCardConfig } from "./types";
|
||||
|
||||
class HuiConditionalCard extends HTMLElement implements LovelaceCard {
|
||||
private _hass?: HomeAssistant;
|
||||
private _config?: Config;
|
||||
private _config?: ConditionalCardConfig;
|
||||
private _card?: LovelaceCard;
|
||||
|
||||
public setConfig(config) {
|
||||
|
@ -11,13 +11,8 @@ import {
|
||||
import "@polymer/paper-card/paper-card";
|
||||
|
||||
import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
content: string;
|
||||
title?: string;
|
||||
}
|
||||
import { EmptyStateCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-empty-state-card")
|
||||
export class HuiEmptyStateCard extends LitElement implements LovelaceCard {
|
||||
@ -27,7 +22,7 @@ export class HuiEmptyStateCard extends LitElement implements LovelaceCard {
|
||||
return 2;
|
||||
}
|
||||
|
||||
public setConfig(_config: Config): void {
|
||||
public setConfig(_config: EmptyStateCardConfig): void {
|
||||
// tslint:disable-next-line
|
||||
}
|
||||
|
||||
|
@ -15,30 +15,15 @@ import "../components/hui-entities-toggle";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { DOMAINS_HIDE_MORE_INFO } from "../../../common/const";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { EntityConfig, EntityRow } from "../entity-rows/types";
|
||||
import { EntityRow } from "../entity-rows/types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { processConfigEntities } from "../common/process-config-entities";
|
||||
import { createRowElement } from "../common/create-row-element";
|
||||
import { EntitiesCardConfig, EntitiesCardEntityConfig } from "./types";
|
||||
|
||||
import computeDomain from "../../../common/entity/compute_domain";
|
||||
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
|
||||
|
||||
export interface EntitiesCardEntityConfig extends EntityConfig {
|
||||
type?: string;
|
||||
secondary_info?: "entity-id" | "last-changed";
|
||||
action_name?: string;
|
||||
service?: string;
|
||||
service_data?: object;
|
||||
url?: string;
|
||||
}
|
||||
|
||||
export interface EntitiesCardConfig extends LovelaceCardConfig {
|
||||
show_header_toggle?: boolean;
|
||||
title?: string;
|
||||
entities: EntitiesCardEntityConfig[];
|
||||
theme?: string;
|
||||
}
|
||||
|
||||
@customElement("hui-entities-card")
|
||||
class HuiEntitiesCard extends LitElement implements LovelaceCard {
|
||||
public static async getConfigElement(): Promise<LovelaceCardEditor> {
|
||||
|
@ -21,23 +21,13 @@ import computeStateDomain from "../../../common/entity/compute_state_domain";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
|
||||
import computeDomain from "../../../common/entity/compute_domain";
|
||||
|
||||
import { HomeAssistant, LightEntity } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig, ActionConfig } from "../../../data/lovelace";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { DOMAINS_TOGGLE } from "../../../common/const";
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
snow_name?: boolean;
|
||||
icon?: string;
|
||||
show_icon?: boolean;
|
||||
theme?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
import { EntityButtonCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-entity-button-card")
|
||||
class HuiEntityButtonCard extends LitElement implements LovelaceCard {
|
||||
@ -57,13 +47,13 @@ class HuiEntityButtonCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: EntityButtonCardConfig;
|
||||
|
||||
public getCardSize(): number {
|
||||
return 2;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: EntityButtonCardConfig): void {
|
||||
if (!isValidEntityId(config.entity)) {
|
||||
throw new Error("Invalid Entity");
|
||||
}
|
||||
|
@ -4,14 +4,7 @@ import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { EntityConfig } from "../entity-rows/types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
|
||||
export interface EntityFilterCardConfig extends LovelaceCardConfig {
|
||||
type: "entity-filter";
|
||||
entities: Array<EntityConfig | string>;
|
||||
state_filter: string[];
|
||||
card: Partial<LovelaceCardConfig>;
|
||||
show_empty?: boolean;
|
||||
}
|
||||
import { EntityFilterCardConfig } from "./types";
|
||||
|
||||
class EntityFilterCard extends HTMLElement implements LovelaceCard {
|
||||
public isPanel?: boolean;
|
||||
|
@ -11,11 +11,7 @@ import {
|
||||
import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
|
||||
interface Config extends LovelaceCardConfig {
|
||||
error: string;
|
||||
origConfig: LovelaceCardConfig;
|
||||
}
|
||||
import { ErrorCardConfig } from "./types";
|
||||
|
||||
export const createErrorCardElement = (config) => {
|
||||
const el = document.createElement("hui-error-card");
|
||||
@ -33,13 +29,13 @@ export const createErrorCardConfig = (error, origConfig) => ({
|
||||
export class HuiErrorCard extends LitElement implements LovelaceCard {
|
||||
public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: ErrorCardConfig;
|
||||
|
||||
public getCardSize(): number {
|
||||
return 4;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ErrorCardConfig): void {
|
||||
this._config = config;
|
||||
}
|
||||
|
||||
|
@ -13,31 +13,15 @@ import { styleMap } from "lit-html/directives/style-map";
|
||||
import "../../../components/ha-card";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
|
||||
import isValidEntityId from "../../../common/entity/valid_entity_id";
|
||||
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
|
||||
export interface SeverityConfig {
|
||||
green?: number;
|
||||
yellow?: number;
|
||||
red?: number;
|
||||
}
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
unit?: string;
|
||||
min?: number;
|
||||
max?: number;
|
||||
severity?: SeverityConfig;
|
||||
theme?: string;
|
||||
}
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { GaugeCardConfig } from "./types";
|
||||
|
||||
export const severityMap = {
|
||||
red: "var(--label-badge-red)",
|
||||
@ -58,7 +42,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: GaugeCardConfig;
|
||||
|
||||
private _updated?: boolean;
|
||||
|
||||
@ -66,7 +50,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
||||
return 2;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: GaugeCardConfig): void {
|
||||
if (!config || !config.entity) {
|
||||
throw new Error("Invalid card configuration");
|
||||
}
|
||||
|
@ -10,14 +10,6 @@ import {
|
||||
} from "lit-element";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig, ActionConfig } from "../../../data/lovelace";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { EntityConfig } from "../entity-rows/types";
|
||||
import { processConfigEntities } from "../common/process-config-entities";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
|
||||
import computeStateDisplay from "../../../common/entity/compute_state_display";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
|
||||
@ -27,20 +19,12 @@ import "../../../components/ha-card";
|
||||
import "../../../components/ha-icon";
|
||||
import "../components/hui-warning-element";
|
||||
|
||||
export interface ConfigEntity extends EntityConfig {
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
export interface GlanceCardConfig extends LovelaceCardConfig {
|
||||
show_name?: boolean;
|
||||
show_state?: boolean;
|
||||
show_icon?: boolean;
|
||||
title?: string;
|
||||
theme?: string;
|
||||
entities: ConfigEntity[];
|
||||
columns?: number;
|
||||
}
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { processConfigEntities } from "../common/process-config-entities";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { GlanceCardConfig, ConfigEntity } from "./types";
|
||||
|
||||
@customElement("hui-glance-card")
|
||||
export class HuiGlanceCard extends LitElement implements LovelaceCard {
|
||||
|
@ -11,14 +11,8 @@ import {
|
||||
import "../../../components/ha-card";
|
||||
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { styleMap } from "lit-html/directives/style-map";
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
aspect_ratio?: string;
|
||||
title?: string;
|
||||
url: string;
|
||||
}
|
||||
import { IframeCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-iframe-card")
|
||||
export class HuiIframeCard extends LitElement implements LovelaceCard {
|
||||
@ -30,7 +24,7 @@ export class HuiIframeCard extends LitElement implements LovelaceCard {
|
||||
return { url: "https://www.home-assistant.io", aspect_ratio: "50%" };
|
||||
}
|
||||
|
||||
@property() protected _config?: Config;
|
||||
@property() protected _config?: IframeCardConfig;
|
||||
|
||||
public getCardSize(): number {
|
||||
if (!this._config) {
|
||||
@ -42,7 +36,7 @@ export class HuiIframeCard extends LitElement implements LovelaceCard {
|
||||
return 1 + aspectRatio / 25;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: IframeCardConfig): void {
|
||||
if (!config.url) {
|
||||
throw new Error("URL required");
|
||||
}
|
||||
|
@ -8,15 +8,6 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-icon-button/paper-icon-button";
|
||||
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { styleMap } from "lit-html/directives/style-map";
|
||||
import { HomeAssistant, LightEntity } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
import { loadRoundslider } from "../../../resources/jquery.roundslider.ondemand";
|
||||
import { toggleEntity } from "../common/entity/toggle-entity";
|
||||
|
||||
import stateIcon from "../../../common/entity/state_icon";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
|
||||
@ -25,6 +16,15 @@ import "../../../components/ha-card";
|
||||
import "../../../components/ha-icon";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { styleMap } from "lit-html/directives/style-map";
|
||||
import { HomeAssistant, LightEntity } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
import { loadRoundslider } from "../../../resources/jquery.roundslider.ondemand";
|
||||
import { toggleEntity } from "../common/entity/toggle-entity";
|
||||
import { LightCardConfig } from "./types";
|
||||
|
||||
const lightConfig = {
|
||||
radius: 80,
|
||||
step: 1,
|
||||
@ -40,12 +40,6 @@ const lightConfig = {
|
||||
animation: false,
|
||||
};
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
theme?: string;
|
||||
}
|
||||
|
||||
@customElement("hui-light-card")
|
||||
export class HuiLightCard extends LitElement implements LovelaceCard {
|
||||
public static async getConfigElement(): Promise<LovelaceCardEditor> {
|
||||
@ -58,7 +52,7 @@ export class HuiLightCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: LightCardConfig;
|
||||
|
||||
@property() private _roundSliderStyle?: TemplateResult;
|
||||
|
||||
@ -70,7 +64,7 @@ export class HuiLightCard extends LitElement implements LovelaceCard {
|
||||
return 2;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: LightCardConfig): void {
|
||||
if (!config.entity || config.entity.split(".")[0] !== "light") {
|
||||
throw new Error("Specify an entity from within the light domain.");
|
||||
}
|
||||
|
@ -21,20 +21,13 @@ import computeStateDomain from "../../../common/entity/compute_state_domain";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import debounce from "../../../common/util/debounce";
|
||||
import parseAspectRatio from "../../../common/util/parse-aspect-ratio";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import computeDomain from "../../../common/entity/compute_domain";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { EntityConfig } from "../entity-rows/types";
|
||||
import { processConfigEntities } from "../common/process-config-entities";
|
||||
|
||||
export interface MapCardConfig extends LovelaceCardConfig {
|
||||
title: string;
|
||||
aspect_ratio: string;
|
||||
default_zoom?: number;
|
||||
entities?: Array<EntityConfig | string>;
|
||||
geo_location_sources?: string[];
|
||||
}
|
||||
import { MapCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-map-card")
|
||||
class HuiMapCard extends LitElement implements LovelaceCard {
|
||||
|
@ -13,12 +13,7 @@ import "../../../components/ha-card";
|
||||
import "../../../components/ha-markdown";
|
||||
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
content: string;
|
||||
title?: string;
|
||||
}
|
||||
import { MarkdownCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-markdown-card")
|
||||
export class HuiMarkdownCard extends LitElement implements LovelaceCard {
|
||||
@ -31,13 +26,13 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {
|
||||
return { content: " " };
|
||||
}
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: MarkdownCardConfig;
|
||||
|
||||
public getCardSize(): number {
|
||||
return this._config!.content.split("\n").length;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: MarkdownCardConfig): void {
|
||||
if (!config.content) {
|
||||
throw new Error("Invalid Configuration: Content Required");
|
||||
}
|
||||
|
@ -2,11 +2,6 @@ import "../../../cards/ha-media_player-card";
|
||||
|
||||
import LegacyWrapperCard from "./hui-legacy-wrapper-card";
|
||||
|
||||
// should be interface when converted to TS
|
||||
export const Config = {
|
||||
entity: "",
|
||||
};
|
||||
|
||||
class HuiMediaControlCard extends LegacyWrapperCard {
|
||||
static async getConfigElement() {
|
||||
await import(/* webpackChunkName: "hui-media-control-card-editor" */ "../editor/config-elements/hui-media-control-card-editor");
|
||||
|
@ -11,17 +11,11 @@ import {
|
||||
import "../../../components/ha-card";
|
||||
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig, ActionConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
image?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
import { PictureCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-picture-card")
|
||||
export class HuiPictureCard extends LitElement implements LovelaceCard {
|
||||
@ -40,13 +34,13 @@ export class HuiPictureCard extends LitElement implements LovelaceCard {
|
||||
|
||||
public hass?: HomeAssistant;
|
||||
|
||||
@property() protected _config?: Config;
|
||||
@property() protected _config?: PictureCardConfig;
|
||||
|
||||
public getCardSize(): number {
|
||||
return 3;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: PictureCardConfig): void {
|
||||
if (!config || !config.image) {
|
||||
throw new Error("Invalid Configuration: 'image' required");
|
||||
}
|
||||
|
@ -9,25 +9,14 @@ import {
|
||||
} from "lit-element";
|
||||
|
||||
import { createStyledHuiElement } from "./picture-elements/create-styled-hui-element";
|
||||
|
||||
import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceElementConfig, LovelaceElement } from "../elements/types";
|
||||
|
||||
interface Config extends LovelaceCardConfig {
|
||||
title?: string;
|
||||
image?: string;
|
||||
camera_image?: string;
|
||||
state_image?: {};
|
||||
aspect_ratio?: string;
|
||||
entity?: string;
|
||||
elements: LovelaceElementConfig[];
|
||||
}
|
||||
import { PictureElementsCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-picture-elements-card")
|
||||
class HuiPictureElementsCard extends LitElement implements LovelaceCard {
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: PictureElementsCardConfig;
|
||||
|
||||
private _hass?: HomeAssistant;
|
||||
|
||||
@ -43,7 +32,7 @@ class HuiPictureElementsCard extends LitElement implements LovelaceCard {
|
||||
return 4;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: PictureElementsCardConfig): void {
|
||||
if (!config) {
|
||||
throw new Error("Invalid Configuration");
|
||||
} else if (
|
||||
|
@ -20,36 +20,23 @@ import computeStateName from "../../../common/entity/compute_state_name";
|
||||
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCardConfig, ActionConfig } from "../../../data/lovelace";
|
||||
import { LovelaceCard } from "../types";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { UNAVAILABLE } from "../../../data/entity";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
|
||||
interface Config extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
image?: string;
|
||||
camera_image?: string;
|
||||
state_image?: {};
|
||||
aspect_ratio?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
show_name?: boolean;
|
||||
show_state?: boolean;
|
||||
}
|
||||
import { PictureEntityCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-picture-entity-card")
|
||||
class HuiPictureEntityCard extends LitElement implements LovelaceCard {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: PictureEntityCardConfig;
|
||||
|
||||
public getCardSize(): number {
|
||||
return 3;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: PictureEntityCardConfig): void {
|
||||
if (!config || !config.entity) {
|
||||
throw new Error("Invalid Configuration: 'entity' required");
|
||||
}
|
||||
|
@ -10,13 +10,6 @@ import {
|
||||
} from "lit-element";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
|
||||
import { DOMAINS_TOGGLE } from "../../../common/const";
|
||||
import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig, ActionConfig } from "../../../data/lovelace";
|
||||
import { EntityConfig } from "../entity-rows/types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { processConfigEntities } from "../common/process-config-entities";
|
||||
import computeStateDisplay from "../../../common/entity/compute_state_display";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import computeDomain from "../../../common/entity/compute_domain";
|
||||
@ -27,29 +20,24 @@ import "../../../components/ha-icon";
|
||||
import "../components/hui-image";
|
||||
import "../components/hui-warning-element";
|
||||
|
||||
import { DOMAINS_TOGGLE } from "../../../common/const";
|
||||
import { LovelaceCard } from "../types";
|
||||
import { EntityConfig } from "../entity-rows/types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { processConfigEntities } from "../common/process-config-entities";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { toggleEntity } from "../common/entity/toggle-entity";
|
||||
import { PictureGlanceCardConfig } from "./types";
|
||||
|
||||
const STATES_OFF = new Set(["closed", "locked", "not_home", "off"]);
|
||||
|
||||
interface Config extends LovelaceCardConfig {
|
||||
entities: EntityConfig[];
|
||||
title?: string;
|
||||
image?: string;
|
||||
camera_image?: string;
|
||||
state_image?: {};
|
||||
aspect_ratio?: string;
|
||||
entity?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
@customElement("hui-picture-glance-card")
|
||||
class HuiPictureGlanceCard extends LitElement implements LovelaceCard {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: PictureGlanceCardConfig;
|
||||
|
||||
private _entitiesDialog?: EntityConfig[];
|
||||
|
||||
@ -59,7 +47,7 @@ class HuiPictureGlanceCard extends LitElement implements LovelaceCard {
|
||||
return 3;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: PictureGlanceCardConfig): void {
|
||||
if (
|
||||
!config ||
|
||||
!config.entities ||
|
||||
|
@ -8,18 +8,18 @@ import {
|
||||
customElement,
|
||||
PropertyValues,
|
||||
} from "lit-element";
|
||||
import { HassEntity } from "home-assistant-js-websocket";
|
||||
|
||||
import "../../../components/ha-card";
|
||||
import "../../../components/ha-icon";
|
||||
|
||||
import { HassEntity } from "home-assistant-js-websocket";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
|
||||
import { LovelaceCardEditor, LovelaceCard } from "../types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
import { PlantStatusCardConfig, PlantAttributeTarget } from "./types";
|
||||
|
||||
const SENSORS = {
|
||||
moisture: "hass:water",
|
||||
@ -29,15 +29,6 @@ const SENSORS = {
|
||||
battery: "hass:battery",
|
||||
};
|
||||
|
||||
export interface PlantAttributeTarget extends EventTarget {
|
||||
value?: string;
|
||||
}
|
||||
|
||||
export interface PlantStatusConfig extends LovelaceCardConfig {
|
||||
name?: string;
|
||||
entity: string;
|
||||
}
|
||||
|
||||
@customElement("hui-plant-status-card")
|
||||
class HuiPlantStatusCard extends LitElement implements LovelaceCard {
|
||||
public static async getConfigElement(): Promise<LovelaceCardEditor> {
|
||||
@ -51,13 +42,13 @@ class HuiPlantStatusCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: PlantStatusConfig;
|
||||
@property() private _config?: PlantStatusCardConfig;
|
||||
|
||||
public getCardSize(): number {
|
||||
return 3;
|
||||
}
|
||||
|
||||
public setConfig(config: PlantStatusConfig): void {
|
||||
public setConfig(config: PlantStatusCardConfig): void {
|
||||
if (!config.entity || config.entity.split(".")[0] !== "plant") {
|
||||
throw new Error("Specify an entity from within the plant domain.");
|
||||
}
|
||||
|
@ -11,13 +11,6 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-spinner/paper-spinner";
|
||||
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { fetchRecent } from "../../../data/history";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
|
||||
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import stateIcon from "../../../common/entity/state_icon";
|
||||
@ -26,6 +19,13 @@ import "../../../components/ha-card";
|
||||
import "../../../components/ha-icon";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { fetchRecent } from "../../../data/history";
|
||||
import { SensorCardConfig } from "./types";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
|
||||
const midPoint = (
|
||||
_Ax: number,
|
||||
_Ay: number,
|
||||
@ -138,17 +138,6 @@ const coordinates = (
|
||||
return calcPoints(history, hours, width, detail, min, max);
|
||||
};
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
icon?: string;
|
||||
graph?: string;
|
||||
unit?: string;
|
||||
detail?: number;
|
||||
theme?: string;
|
||||
hours_to_show?: number;
|
||||
}
|
||||
|
||||
@customElement("hui-sensor-card")
|
||||
class HuiSensorCard extends LitElement implements LovelaceCard {
|
||||
public static async getConfigElement(): Promise<LovelaceCardEditor> {
|
||||
@ -162,13 +151,13 @@ class HuiSensorCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: SensorCardConfig;
|
||||
|
||||
@property() private _history?: any;
|
||||
|
||||
private _date?: Date;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: SensorCardConfig): void {
|
||||
if (!config.entity || config.entity.split(".")[0] !== "sensor") {
|
||||
throw new Error("Specify an entity from within the sensor domain.");
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ import "../../../components/ha-icon";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import {
|
||||
fetchItems,
|
||||
updateItem,
|
||||
@ -24,10 +23,7 @@ import {
|
||||
clearItems,
|
||||
addItem,
|
||||
} from "../../../data/shopping-list";
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
title?: string;
|
||||
}
|
||||
import { ShoppingListCardConfig } from "./types";
|
||||
|
||||
@customElement("hui-shopping-list-card")
|
||||
class HuiShoppingListCard extends LitElement implements LovelaceCard {
|
||||
@ -42,7 +38,7 @@ class HuiShoppingListCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: ShoppingListCardConfig;
|
||||
|
||||
@property() private _uncheckedItems?: ShoppingListItem[];
|
||||
|
||||
@ -54,7 +50,7 @@ class HuiShoppingListCard extends LitElement implements LovelaceCard {
|
||||
return (this._config ? (this._config.title ? 1 : 0) : 0) + 3;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ShoppingListCardConfig): void {
|
||||
this._config = config;
|
||||
this._uncheckedItems = [];
|
||||
this._checkedItems = [];
|
||||
|
@ -1,14 +1,10 @@
|
||||
import { html, LitElement, TemplateResult } from "lit-element";
|
||||
|
||||
import { createCardElement } from "../common/create-card-element";
|
||||
|
||||
import { LovelaceCard } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
|
||||
interface Config extends LovelaceCardConfig {
|
||||
cards: LovelaceCardConfig[];
|
||||
}
|
||||
import { StackCardConfig } from "./types";
|
||||
|
||||
export abstract class HuiStackCard extends LitElement implements LovelaceCard {
|
||||
static get properties() {
|
||||
@ -29,12 +25,12 @@ export abstract class HuiStackCard extends LitElement implements LovelaceCard {
|
||||
}
|
||||
}
|
||||
protected _cards?: LovelaceCard[];
|
||||
private _config?: Config;
|
||||
private _config?: StackCardConfig;
|
||||
private _hass?: HomeAssistant;
|
||||
|
||||
public abstract getCardSize(): number;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: StackCardConfig): void {
|
||||
if (!config || !config.cards || !Array.isArray(config.cards)) {
|
||||
throw new Error("Card config incorrect");
|
||||
}
|
||||
|
@ -19,10 +19,10 @@ import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
import { HomeAssistant, ClimateEntity } from "../../../types";
|
||||
import { LovelaceCard, LovelaceCardEditor } from "../types";
|
||||
import { LovelaceCardConfig } from "../../../data/lovelace";
|
||||
import { loadRoundslider } from "../../../resources/jquery.roundslider.ondemand";
|
||||
import { UNIT_F } from "../../../common/const";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { ThermostatCardConfig } from "./types";
|
||||
|
||||
const thermostatConfig = {
|
||||
radius: 150,
|
||||
@ -47,12 +47,6 @@ const modeIcons = {
|
||||
idle: "hass:power-sleep",
|
||||
};
|
||||
|
||||
export interface Config extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
theme?: string;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
@customElement("hui-thermostat-card")
|
||||
export class HuiThermostatCard extends LitElement implements LovelaceCard {
|
||||
public static async getConfigElement(): Promise<LovelaceCardEditor> {
|
||||
@ -66,7 +60,7 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
|
||||
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: ThermostatCardConfig;
|
||||
|
||||
@property() private _roundSliderStyle?: TemplateResult;
|
||||
|
||||
@ -82,7 +76,7 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
|
||||
return 4;
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ThermostatCardConfig): void {
|
||||
if (!config.entity || config.entity.split(".")[0] !== "climate") {
|
||||
throw new Error("Specify an entity from within the climate domain.");
|
||||
}
|
||||
|
@ -2,12 +2,6 @@ import "../../../cards/ha-weather-card";
|
||||
|
||||
import LegacyWrapperCard from "./hui-legacy-wrapper-card";
|
||||
|
||||
// should be interface when converted to TS
|
||||
export const Config = {
|
||||
entity: "",
|
||||
name: "",
|
||||
};
|
||||
|
||||
class HuiWeatherForecastCard extends LegacyWrapperCard {
|
||||
static async getConfigElement() {
|
||||
await import(/* webpackChunkName: "hui-weather-forecast-card-editor" */ "../editor/config-elements/hui-weather-forecast-card-editor");
|
||||
|
200
src/panels/lovelace/cards/types.ts
Normal file
200
src/panels/lovelace/cards/types.ts
Normal file
@ -0,0 +1,200 @@
|
||||
import { LovelaceCardConfig, ActionConfig } from "../../../data/lovelace";
|
||||
import { Condition } from "../common/validate-condition";
|
||||
import { EntityConfig } from "../entity-rows/types";
|
||||
import { LovelaceElementConfig } from "../elements/types";
|
||||
|
||||
export interface AlarmPanelCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
states?: string[];
|
||||
}
|
||||
|
||||
export interface ConditionalCardConfig extends LovelaceCardConfig {
|
||||
card: LovelaceCardConfig;
|
||||
conditions: Condition[];
|
||||
}
|
||||
|
||||
export interface EmptyStateCardConfig extends LovelaceCardConfig {
|
||||
content: string;
|
||||
title?: string;
|
||||
}
|
||||
|
||||
export interface EntitiesCardEntityConfig extends EntityConfig {
|
||||
type?: string;
|
||||
secondary_info?: "entity-id" | "last-changed";
|
||||
action_name?: string;
|
||||
service?: string;
|
||||
service_data?: object;
|
||||
url?: string;
|
||||
}
|
||||
|
||||
export interface EntitiesCardConfig extends LovelaceCardConfig {
|
||||
show_header_toggle?: boolean;
|
||||
title?: string;
|
||||
entities: EntitiesCardEntityConfig[];
|
||||
theme?: string;
|
||||
}
|
||||
|
||||
export interface EntityButtonCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
snow_name?: boolean;
|
||||
icon?: string;
|
||||
show_icon?: boolean;
|
||||
theme?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
export interface EntityFilterCardConfig extends LovelaceCardConfig {
|
||||
type: "entity-filter";
|
||||
entities: Array<EntityConfig | string>;
|
||||
state_filter: string[];
|
||||
card: Partial<LovelaceCardConfig>;
|
||||
show_empty?: boolean;
|
||||
}
|
||||
|
||||
export interface ErrorCardConfig extends LovelaceCardConfig {
|
||||
error: string;
|
||||
origConfig: LovelaceCardConfig;
|
||||
}
|
||||
|
||||
export interface SeverityConfig {
|
||||
green?: number;
|
||||
yellow?: number;
|
||||
red?: number;
|
||||
}
|
||||
|
||||
export interface GaugeCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
unit?: string;
|
||||
min?: number;
|
||||
max?: number;
|
||||
severity?: SeverityConfig;
|
||||
theme?: string;
|
||||
}
|
||||
|
||||
export interface ConfigEntity extends EntityConfig {
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
export interface GlanceCardConfig extends LovelaceCardConfig {
|
||||
show_name?: boolean;
|
||||
show_state?: boolean;
|
||||
show_icon?: boolean;
|
||||
title?: string;
|
||||
theme?: string;
|
||||
entities: ConfigEntity[];
|
||||
columns?: number;
|
||||
}
|
||||
|
||||
export interface IframeCardConfig extends LovelaceCardConfig {
|
||||
aspect_ratio?: string;
|
||||
title?: string;
|
||||
url: string;
|
||||
}
|
||||
|
||||
export interface LightCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
theme?: string;
|
||||
}
|
||||
|
||||
export interface MapCardConfig extends LovelaceCardConfig {
|
||||
title: string;
|
||||
aspect_ratio: string;
|
||||
default_zoom?: number;
|
||||
entities?: Array<EntityConfig | string>;
|
||||
geo_location_sources?: string[];
|
||||
}
|
||||
|
||||
export interface MarkdownCardConfig extends LovelaceCardConfig {
|
||||
content: string;
|
||||
title?: string;
|
||||
}
|
||||
|
||||
export interface MediaControlCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
}
|
||||
|
||||
export interface PictureCardConfig extends LovelaceCardConfig {
|
||||
image?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
export interface PictureElementsCardConfig extends LovelaceCardConfig {
|
||||
title?: string;
|
||||
image?: string;
|
||||
camera_image?: string;
|
||||
state_image?: {};
|
||||
aspect_ratio?: string;
|
||||
entity?: string;
|
||||
elements: LovelaceElementConfig[];
|
||||
}
|
||||
|
||||
export interface PictureEntityCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
image?: string;
|
||||
camera_image?: string;
|
||||
state_image?: {};
|
||||
aspect_ratio?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
show_name?: boolean;
|
||||
show_state?: boolean;
|
||||
}
|
||||
|
||||
export interface PictureGlanceCardConfig extends LovelaceCardConfig {
|
||||
entities: EntityConfig[];
|
||||
title?: string;
|
||||
image?: string;
|
||||
camera_image?: string;
|
||||
state_image?: {};
|
||||
aspect_ratio?: string;
|
||||
entity?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
export interface PlantAttributeTarget extends EventTarget {
|
||||
value?: string;
|
||||
}
|
||||
|
||||
export interface PlantStatusCardConfig extends LovelaceCardConfig {
|
||||
name?: string;
|
||||
entity: string;
|
||||
}
|
||||
|
||||
export interface SensorCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
icon?: string;
|
||||
graph?: string;
|
||||
unit?: string;
|
||||
detail?: number;
|
||||
theme?: string;
|
||||
hours_to_show?: number;
|
||||
}
|
||||
|
||||
export interface ShoppingListCardConfig extends LovelaceCardConfig {
|
||||
title?: string;
|
||||
}
|
||||
|
||||
export interface StackCardConfig extends LovelaceCardConfig {
|
||||
cards: LovelaceCardConfig[];
|
||||
}
|
||||
|
||||
export interface ThermostatCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
theme?: string;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
export interface WeatherForecastCardConfig extends LovelaceCardConfig {
|
||||
entity: string;
|
||||
name?: string;
|
||||
}
|
@ -5,6 +5,7 @@ import {
|
||||
LovelaceViewConfig,
|
||||
} from "../../../data/lovelace";
|
||||
import { HassEntity, HassEntities } from "home-assistant-js-websocket";
|
||||
|
||||
import extractViews from "../../../common/entity/extract_views";
|
||||
import getViewEntities from "../../../common/entity/get_view_entities";
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
@ -12,9 +13,10 @@ import splitByGroups from "../../../common/entity/split_by_groups";
|
||||
import computeObjectId from "../../../common/entity/compute_object_id";
|
||||
import computeStateDomain from "../../../common/entity/compute_state_domain";
|
||||
import computeDomain from "../../../common/entity/compute_domain";
|
||||
|
||||
import { EntityRowConfig, WeblinkConfig } from "../entity-rows/types";
|
||||
import { EntitiesCardConfig } from "../cards/hui-entities-card";
|
||||
import { LocalizeFunc } from "../../../common/translations/localize";
|
||||
import { EntitiesCardConfig } from "../cards/types";
|
||||
|
||||
const DEFAULT_VIEW_ENTITY_ID = "group.default_view";
|
||||
const DOMAINS_BADGES = [
|
||||
|
@ -9,15 +9,15 @@ import {
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { EntitiesCardEntityConfig } from "../cards/hui-entities-card";
|
||||
import { computeRTL } from "../../../common/util/compute_rtl";
|
||||
|
||||
import "../../../components/entity/state-badge";
|
||||
import "../../../components/ha-relative-time";
|
||||
import "../../../components/ha-icon";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { computeRTL } from "../../../common/util/compute_rtl";
|
||||
import { EntitiesCardEntityConfig } from "../cards/types";
|
||||
|
||||
class HuiGenericEntityRow extends LitElement {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
|
@ -16,11 +16,11 @@ import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-alarm-panel-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
import "../../../../components/ha-icon";
|
||||
import { AlarmPanelCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -34,9 +34,9 @@ export class HuiAlarmPanelCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: AlarmPanelCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: AlarmPanelCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -10,23 +10,23 @@ import "@polymer/paper-item/paper-item";
|
||||
import "@polymer/paper-listbox/paper-listbox";
|
||||
import "@polymer/paper-toggle-button/paper-toggle-button";
|
||||
|
||||
import "../../../../components/entity/state-badge";
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
import "../../../../components/ha-card";
|
||||
import "../../../../components/ha-icon";
|
||||
|
||||
import { processEditorEntities } from "../process-editor-entities";
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
import {
|
||||
EntitiesCardConfig,
|
||||
EntitiesCardEntityConfig,
|
||||
} from "../../cards/hui-entities-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../../../components/entity/state-badge";
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
import "../../../../components/ha-card";
|
||||
import "../../../../components/ha-icon";
|
||||
} from "../../cards/types";
|
||||
|
||||
const entitiesConfigStruct = struct.union([
|
||||
{
|
||||
|
@ -7,6 +7,10 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
|
||||
import "../../components/hui-action-editor";
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import {
|
||||
EntitiesEditorEvent,
|
||||
@ -16,13 +20,9 @@ import {
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-entity-button-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
import { ActionConfig } from "../../../../data/lovelace";
|
||||
|
||||
import "../../components/hui-action-editor";
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
import { EntityButtonCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -41,9 +41,9 @@ export class HuiEntityButtonCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: EntityButtonCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: EntityButtonCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -10,16 +10,16 @@ import {
|
||||
import "@polymer/paper-input/paper-input";
|
||||
import "@polymer/paper-toggle-button/paper-toggle-button";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config, SeverityConfig } from "../../cards/hui-gauge-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
import { GaugeCardConfig, SeverityConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -37,11 +37,11 @@ export class HuiGaugeCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: GaugeCardConfig;
|
||||
|
||||
private _useSeverity?: boolean;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: GaugeCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._useSeverity = !!config.severity;
|
||||
this._config = config;
|
||||
|
@ -10,20 +10,20 @@ import "@polymer/paper-item/paper-item";
|
||||
import "@polymer/paper-listbox/paper-listbox";
|
||||
import "@polymer/paper-toggle-button/paper-toggle-button";
|
||||
|
||||
import "../../../../components/entity/state-badge";
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
import "../../../../components/ha-card";
|
||||
import "../../../../components/ha-icon";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { processEditorEntities } from "../process-editor-entities";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { GlanceCardConfig, ConfigEntity } from "../../cards/hui-glance-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../../../components/entity/state-badge";
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
import "../../../../components/ha-card";
|
||||
import "../../../../components/ha-icon";
|
||||
import { GlanceCardConfig, ConfigEntity } from "../../cards/types";
|
||||
|
||||
const entitiesConfigStruct = struct.union([
|
||||
{
|
||||
|
@ -12,8 +12,8 @@ import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-iframe-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
import { IframeCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -27,9 +27,9 @@ export class HuiIframeCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: IframeCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: IframeCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -7,16 +7,16 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-light-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../components/hui-entity-editor";
|
||||
import { LightCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -30,9 +30,9 @@ export class HuiLightCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: LightCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: LightCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -9,19 +9,19 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
|
||||
import "../../components/hui-entity-editor";
|
||||
import "../../components/hui-input-list-editor";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { MapCardConfig } from "../../cards/hui-map-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
import { processEditorEntities } from "../process-editor-entities";
|
||||
import { EntityConfig } from "../../entity-rows/types";
|
||||
import { PolymerChangedEvent } from "../../../../polymer-types";
|
||||
|
||||
import "../../components/hui-entity-editor";
|
||||
import "../../components/hui-input-list-editor";
|
||||
import { MapCardConfig } from "../../cards/types";
|
||||
|
||||
const entitiesConfigStruct = struct.union([
|
||||
{
|
||||
|
@ -13,8 +13,8 @@ import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-markdown-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
import { MarkdownCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -27,9 +27,9 @@ export class HuiMarkdownCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: MarkdownCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: MarkdownCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-media-control-card";
|
||||
import { MediaControlCardConfig } from "../../cards/hui-media-control-card";
|
||||
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
|
||||
@ -25,9 +25,9 @@ export class HuiMediaControlCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: MediaControlCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: MediaControlCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
|
||||
import "../../components/hui-action-editor";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import {
|
||||
EntitiesEditorEvent,
|
||||
@ -16,11 +18,9 @@ import {
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-picture-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
import { ActionConfig } from "../../../../data/lovelace";
|
||||
|
||||
import "../../components/hui-action-editor";
|
||||
import { PictureCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -34,9 +34,9 @@ export class HuiPictureCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: PictureCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: PictureCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -7,16 +7,16 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
import "../../../../components/ha-icon";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-alarm-panel-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
import "../../../../components/ha-icon";
|
||||
import { PlantStatusCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -29,9 +29,9 @@ export class HuiPlantStatusCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: PlantStatusCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: PlantStatusCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -10,16 +10,16 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu";
|
||||
import "@polymer/paper-item/paper-item";
|
||||
import "@polymer/paper-listbox/paper-listbox";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-sensor-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
import { SensorCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -38,9 +38,9 @@ export class HuiSensorCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: SensorCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: SensorCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-shopping-list-card";
|
||||
import { ShoppingListCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -24,9 +24,9 @@ export class HuiShoppingListEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: ShoppingListCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ShoppingListCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -7,16 +7,16 @@ import {
|
||||
} from "lit-element";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-thermostat-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../components/hui-theme-select-editor";
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
import { ThermostatCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -30,9 +30,9 @@ export class HuiThermostatCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: ThermostatCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ThermostatCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -6,15 +6,15 @@ import {
|
||||
property,
|
||||
} from "lit-element";
|
||||
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
|
||||
import { struct } from "../../common/structs/struct";
|
||||
import { EntitiesEditorEvent, EditorTarget } from "../types";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { LovelaceCardEditor } from "../../types";
|
||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||
import { Config } from "../../cards/hui-weather-forecast-card";
|
||||
import { configElementStyle } from "./config-elements-style";
|
||||
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
import { WeatherForecastCardConfig } from "../../cards/types";
|
||||
|
||||
const cardConfigStruct = struct({
|
||||
type: "string",
|
||||
@ -27,9 +27,9 @@ export class HuiWeatherForecastCardEditor extends LitElement
|
||||
implements LovelaceCardEditor {
|
||||
@property() public hass?: HomeAssistant;
|
||||
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: WeatherForecastCardConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: WeatherForecastCardConfig): void {
|
||||
config = cardConfigStruct(config);
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -1,24 +1,21 @@
|
||||
import {
|
||||
Condition,
|
||||
checkConditionsMet,
|
||||
validateConditionalConfig,
|
||||
} from "../../lovelace/common/validate-condition";
|
||||
import { createStyledHuiElement } from "../cards/picture-elements/create-styled-hui-element";
|
||||
|
||||
import { LovelaceElement, LovelaceElementConfig } from "./types";
|
||||
import {
|
||||
LovelaceElement,
|
||||
LovelaceElementConfig,
|
||||
ConditionalElementConfig,
|
||||
} from "./types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
|
||||
interface Config extends LovelaceElementConfig {
|
||||
conditions: Condition[];
|
||||
elements: LovelaceElementConfig[];
|
||||
}
|
||||
|
||||
class HuiConditionalElement extends HTMLElement implements LovelaceElement {
|
||||
public _hass?: HomeAssistant;
|
||||
private _config?: Config;
|
||||
private _config?: ConditionalElementConfig;
|
||||
private _elements: LovelaceElement[] = [];
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ConditionalElementConfig): void {
|
||||
if (
|
||||
!config.conditions ||
|
||||
!Array.isArray(config.conditions) ||
|
||||
|
@ -13,24 +13,15 @@ import "../../../components/ha-icon";
|
||||
import { computeTooltip } from "../common/compute-tooltip";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { LovelaceElement, LovelaceElementConfig } from "./types";
|
||||
import { LovelaceElement, IconElementConfig } from "./types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { ActionConfig } from "../../../data/lovelace";
|
||||
|
||||
export interface Config extends LovelaceElementConfig {
|
||||
entity?: string;
|
||||
name?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
icon: string;
|
||||
}
|
||||
|
||||
@customElement("hui-icon-element")
|
||||
export class HuiIconElement extends LitElement implements LovelaceElement {
|
||||
public hass?: HomeAssistant;
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: IconElementConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: IconElementConfig): void {
|
||||
if (!config.icon) {
|
||||
throw Error("Invalid Configuration: 'icon' required");
|
||||
}
|
||||
|
@ -13,28 +13,15 @@ import "../components/hui-image";
|
||||
import { computeTooltip } from "../common/compute-tooltip";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { LovelaceElement, LovelaceElementConfig } from "./types";
|
||||
import { LovelaceElement, ImageElementConfig } from "./types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { ActionConfig } from "../../../data/lovelace";
|
||||
|
||||
export interface Config extends LovelaceElementConfig {
|
||||
entity?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
image?: string;
|
||||
state_image?: string;
|
||||
camera_image?: string;
|
||||
filter?: string;
|
||||
state_filter?: string;
|
||||
aspect_ratio?: string;
|
||||
}
|
||||
|
||||
@customElement("hui-image-element")
|
||||
export class HuiImageElement extends LitElement implements LovelaceElement {
|
||||
@property() public hass?: HomeAssistant;
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: ImageElementConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ImageElementConfig): void {
|
||||
if (!config) {
|
||||
throw Error("Error in element configuration");
|
||||
}
|
||||
|
@ -10,20 +10,14 @@ import {
|
||||
|
||||
import "../../../components/buttons/ha-call-service-button";
|
||||
|
||||
import { LovelaceElement, LovelaceElementConfig } from "./types";
|
||||
import { LovelaceElement, ServiceButtonElementConfig } from "./types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
|
||||
export interface Config extends LovelaceElementConfig {
|
||||
title?: string;
|
||||
service?: string;
|
||||
service_data?: object;
|
||||
}
|
||||
|
||||
@customElement("hui-service-button-element")
|
||||
export class HuiServiceButtonElement extends LitElement
|
||||
implements LovelaceElement {
|
||||
public hass?: HomeAssistant;
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: ServiceButtonElementConfig;
|
||||
private _domain?: string;
|
||||
private _service?: string;
|
||||
|
||||
@ -31,7 +25,7 @@ export class HuiServiceButtonElement extends LitElement
|
||||
return { _config: {} };
|
||||
}
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: ServiceButtonElementConfig): void {
|
||||
if (!config || !config.service) {
|
||||
throw Error("Invalid Configuration: 'service' required");
|
||||
}
|
||||
|
@ -11,21 +11,17 @@ import "../../../components/entity/ha-state-label-badge";
|
||||
import "../components/hui-warning-element";
|
||||
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
import { LovelaceElement, LovelaceElementConfig } from "./types";
|
||||
import { LovelaceElement, StateBadgeElementConfig } from "./types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
|
||||
export interface Config extends LovelaceElementConfig {
|
||||
entity: string;
|
||||
}
|
||||
|
||||
@customElement("hui-state-badge-element")
|
||||
export class HuiStateBadgeElement extends LitElement
|
||||
implements LovelaceElement {
|
||||
@property() public hass?: HomeAssistant;
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: StateBadgeElementConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: StateBadgeElementConfig): void {
|
||||
if (!config.entity) {
|
||||
throw Error("Invalid Configuration: 'entity' required");
|
||||
}
|
||||
|
@ -15,23 +15,16 @@ import "../components/hui-warning-element";
|
||||
import { computeTooltip } from "../common/compute-tooltip";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { LovelaceElement, LovelaceElementConfig } from "./types";
|
||||
import { LovelaceElement, StateIconElementConfig } from "./types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { ActionConfig } from "../../../data/lovelace";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
|
||||
export interface Config extends LovelaceElementConfig {
|
||||
entity: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
@customElement("hui-state-icon-element")
|
||||
export class HuiStateIconElement extends LitElement implements LovelaceElement {
|
||||
@property() public hass?: HomeAssistant;
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: StateIconElementConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: StateIconElementConfig): void {
|
||||
if (!config.entity) {
|
||||
throw Error("Invalid Configuration: 'entity' required");
|
||||
}
|
||||
|
@ -16,25 +16,16 @@ import computeStateDisplay from "../../../common/entity/compute_state_display";
|
||||
import { computeTooltip } from "../common/compute-tooltip";
|
||||
import { handleClick } from "../common/handle-click";
|
||||
import { longPress } from "../common/directives/long-press-directive";
|
||||
import { LovelaceElement, LovelaceElementConfig } from "./types";
|
||||
import { LovelaceElement, StateLabelElementConfig } from "./types";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { ActionConfig } from "../../../data/lovelace";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
|
||||
interface Config extends LovelaceElementConfig {
|
||||
entity: string;
|
||||
prefix?: string;
|
||||
suffix?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
@customElement("hui-state-label-element")
|
||||
class HuiStateLabelElement extends LitElement implements LovelaceElement {
|
||||
@property() public hass?: HomeAssistant;
|
||||
@property() private _config?: Config;
|
||||
@property() private _config?: StateLabelElementConfig;
|
||||
|
||||
public setConfig(config: Config): void {
|
||||
public setConfig(config: StateLabelElementConfig): void {
|
||||
if (!config.entity) {
|
||||
throw Error("Invalid Configuration: 'entity' required");
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { Condition } from "../common/validate-condition";
|
||||
import { ActionConfig } from "../../../data/lovelace";
|
||||
|
||||
export interface LovelaceElementConfig {
|
||||
type: string;
|
||||
@ -9,3 +11,52 @@ export interface LovelaceElement extends HTMLElement {
|
||||
hass?: HomeAssistant;
|
||||
setConfig(config: LovelaceElementConfig): void;
|
||||
}
|
||||
|
||||
export interface ConditionalElementConfig extends LovelaceElementConfig {
|
||||
conditions: Condition[];
|
||||
elements: LovelaceElementConfig[];
|
||||
}
|
||||
|
||||
export interface IconElementConfig extends LovelaceElementConfig {
|
||||
entity?: string;
|
||||
name?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
icon: string;
|
||||
}
|
||||
|
||||
export interface ImageElementConfig extends LovelaceElementConfig {
|
||||
entity?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
image?: string;
|
||||
state_image?: string;
|
||||
camera_image?: string;
|
||||
filter?: string;
|
||||
state_filter?: string;
|
||||
aspect_ratio?: string;
|
||||
}
|
||||
|
||||
export interface ServiceButtonElementConfig extends LovelaceElementConfig {
|
||||
title?: string;
|
||||
service?: string;
|
||||
service_data?: object;
|
||||
}
|
||||
|
||||
export interface StateBadgeElementConfig extends LovelaceElementConfig {
|
||||
entity: string;
|
||||
}
|
||||
|
||||
export interface StateIconElementConfig extends LovelaceElementConfig {
|
||||
entity: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
||||
export interface StateLabelElementConfig extends LovelaceElementConfig {
|
||||
entity: string;
|
||||
prefix?: string;
|
||||
suffix?: string;
|
||||
tap_action?: ActionConfig;
|
||||
hold_action?: ActionConfig;
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import "../../../components/entity/ha-entity-toggle";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import computeStateDisplay from "../../../common/entity/compute_state_display";
|
||||
|
||||
import { DOMAINS_TOGGLE } from "../../../common/const";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { EntityRow, EntityConfig } from "./types";
|
||||
|
@ -17,6 +17,7 @@ import "../../../components/entity/state-badge";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import computeStateName from "../../../common/entity/compute_state_name";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { EntityRow, EntityConfig } from "./types";
|
||||
import { setOption } from "../../../data/input-select";
|
||||
|
@ -13,6 +13,7 @@ import "../components/hui-generic-entity-row";
|
||||
import "../components/hui-warning";
|
||||
|
||||
import computeStateDisplay from "../../../common/entity/compute_state_display";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { EntityRow, EntityConfig } from "./types";
|
||||
import { hasConfigOrEntityChanged } from "../common/has-changed";
|
||||
|
@ -12,6 +12,7 @@ import "../components/hui-warning";
|
||||
|
||||
import timerTimeRemaining from "../../../common/entity/timer_time_remaining";
|
||||
import secondsToDuration from "../../../common/datetime/seconds_to_duration";
|
||||
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { EntityConfig } from "./types";
|
||||
import { HassEntity } from "home-assistant-js-websocket";
|
||||
|
Loading…
x
Reference in New Issue
Block a user