From 1f642f436af656ca2f0f07898e717e1fa0455c7e Mon Sep 17 00:00:00 2001 From: Zack Arnett Date: Wed, 17 Oct 2018 14:20:05 -0400 Subject: [PATCH] Adding Theme option to Glance and Button Cards (#1783) * Adding Theme option to Glance and Button Cards * Updateing Theme default to `default` * Prettier Update --- .../lovelace/cards/hui-entity-button-card.ts | 12 ++++++++---- src/panels/lovelace/cards/hui-glance-card.ts | 19 +++++-------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/panels/lovelace/cards/hui-entity-button-card.ts b/src/panels/lovelace/cards/hui-entity-button-card.ts index 18c56dc601..b33fec0f17 100644 --- a/src/panels/lovelace/cards/hui-entity-button-card.ts +++ b/src/panels/lovelace/cards/hui-entity-button-card.ts @@ -1,4 +1,4 @@ -import { html, LitElement } from "@polymer/lit-element"; +import { html, LitElement, PropertyDeclarations } from "@polymer/lit-element"; import { fireEvent } from "../../../common/dom/fire_event.js"; import "../../../components/ha-card.js"; @@ -8,6 +8,7 @@ import isValidEntityId from "../../../common/entity/valid_entity_id.js"; import stateIcon from "../../../common/entity/state_icon.js"; import computeStateDomain from "../../../common/entity/compute_state_domain.js"; import computeStateName from "../../../common/entity/compute_state_name.js"; +import applyThemesOnElement from "../../../common/dom/apply_themes_on_element.js"; import { styleMap } from "lit-html/directives/styleMap.js"; import { HomeAssistant } from "../../../types.js"; import { HassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; @@ -17,17 +18,18 @@ interface Config extends LovelaceConfig { entity: string; name?: string; icon?: string; + theme?: string; tap_action?: "toggle" | "call-service" | "more-info"; service?: string; service_data?: object; } -export class HuiEntityButtonCard extends HassLocalizeLitMixin(LitElement) +class HuiEntityButtonCard extends HassLocalizeLitMixin(LitElement) implements LovelaceCard { protected hass?: HomeAssistant; protected config?: Config; - static get properties() { + static get properties(): PropertyDeclarations { return { hass: {}, config: {}, @@ -43,7 +45,7 @@ export class HuiEntityButtonCard extends HassLocalizeLitMixin(LitElement) throw new Error("Invalid Entity"); } - this.config = config; + this.config = { theme: "default", ...config }; if (this.hass) { this.requestUpdate(); @@ -56,6 +58,8 @@ export class HuiEntityButtonCard extends HassLocalizeLitMixin(LitElement) } const stateObj = this.hass!.states[this.config.entity]; + applyThemesOnElement(this, this.hass!.themes, this.config.theme); + return html` ${this.renderStyle()} diff --git a/src/panels/lovelace/cards/hui-glance-card.ts b/src/panels/lovelace/cards/hui-glance-card.ts index 9256c4c115..9447cbac6f 100644 --- a/src/panels/lovelace/cards/hui-glance-card.ts +++ b/src/panels/lovelace/cards/hui-glance-card.ts @@ -5,6 +5,7 @@ import { repeat } from "lit-html/directives/repeat"; import computeStateDisplay from "../../../common/entity/compute_state_display.js"; import computeStateName from "../../../common/entity/compute_state_name.js"; import processConfigEntities from "../common/process-config-entities"; +import applyThemesOnElement from "../../../common/dom/apply_themes_on_element.js"; import toggleEntity from "../common/entity/toggle-entity.js"; @@ -31,7 +32,7 @@ interface Config extends LovelaceConfig { show_state?: boolean; title?: string; column_width?: string; - theming?: "primary"; + theme?: string; entities: EntityConfig[]; } @@ -53,7 +54,7 @@ export class HuiGlanceCard extends HassLocalizeLitMixin(LitElement) } public setConfig(config: Config) { - this.config = config; + this.config = { theme: "default", ...config }; const entities = processConfigEntities(config.entities); for (const entity of entities) { @@ -69,13 +70,6 @@ export class HuiGlanceCard extends HassLocalizeLitMixin(LitElement) config.column_width || "20%" ); - if (config.theming) { - if (typeof config.theming !== "string") { - throw new Error("Incorrect theming config."); - } - this.classList.add(`theme-${config.theming}`); - } - this.configEntities = entities; if (this.hass) { @@ -93,6 +87,8 @@ export class HuiGlanceCard extends HassLocalizeLitMixin(LitElement) (conf) => conf.entity in states ); + applyThemesOnElement(this, this.hass!.themes, this.config.theme); + return html` ${this.renderStyle()} @@ -110,11 +106,6 @@ export class HuiGlanceCard extends HassLocalizeLitMixin(LitElement) private renderStyle() { return html`