From dd64fa228c3c68b09a3500bf261eb9fdada88428 Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Tue, 24 Jun 2025 07:23:58 +0200 Subject: [PATCH] Add color options to area card (#25881) * Add color options to area card * Color all controls with the same color * Clean area card --- .../card-features/hui-area-controls-card-feature.ts | 9 ++------- src/panels/lovelace/cards/hui-area-card.ts | 12 +++++++++++- src/panels/lovelace/cards/types.ts | 1 + .../editor/config-elements/hui-area-card-editor.ts | 9 ++------- src/translations/en.json | 1 + 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts b/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts index ff6a8366a7..2c75e2303c 100644 --- a/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts +++ b/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts @@ -2,7 +2,6 @@ import { mdiFan, mdiLightbulb, mdiToggleSwitch } from "@mdi/js"; import { callService, type HassEntity } from "home-assistant-js-websocket"; import { LitElement, css, html, nothing } from "lit"; import { customElement, property, state } from "lit/decorators"; -import { styleMap } from "lit/directives/style-map"; import memoizeOne from "memoize-one"; import { generateEntityFilter, @@ -25,7 +24,6 @@ import { AREA_CONTROLS } from "./types"; interface AreaControlsButton { iconPath: string; - activeColor: string; onService: string; offService: string; filter: EntityFilter; @@ -37,7 +35,6 @@ export const AREA_CONTROLS_BUTTONS: Record = { filter: { domain: "light", }, - activeColor: "var(--state-light-active-color)", onService: "light.turn_on", offService: "light.turn_off", }, @@ -46,7 +43,6 @@ export const AREA_CONTROLS_BUTTONS: Record = { filter: { domain: "fan", }, - activeColor: "var(--state-fan-active-color)", onService: "fan.turn_on", offService: "fan.turn_off", }, @@ -55,7 +51,6 @@ export const AREA_CONTROLS_BUTTONS: Record = { filter: { domain: "switch", }, - activeColor: "var(--state-switch-active-color)", onService: "switch.turn_on", offService: "switch.turn_off", }, @@ -223,7 +218,6 @@ class HuiAreaControlsCardFeature return html` @@ -240,7 +234,8 @@ class HuiAreaControlsCardFeature cardFeatureStyles, css` ha-control-button { - --active-color: var(--primary-color); + --active-color: var(--state-active-color); + --control-button-focus-color: var(--state-active-color); } ha-control-button.active { --control-button-background-color: var(--active-color); diff --git a/src/panels/lovelace/cards/hui-area-card.ts b/src/panels/lovelace/cards/hui-area-card.ts index 5c8eb2888e..f91dc6bec0 100644 --- a/src/panels/lovelace/cards/hui-area-card.ts +++ b/src/panels/lovelace/cards/hui-area-card.ts @@ -10,7 +10,9 @@ import { } from "lit"; import { customElement, property, state } from "lit/decorators"; import { ifDefined } from "lit/directives/if-defined"; +import { styleMap } from "lit/directives/style-map"; import memoizeOne from "memoize-one"; +import { computeCssColor } from "../../../common/color/compute-color"; import { BINARY_STATE_ON } from "../../../common/const"; import { computeAreaName } from "../../../common/entity/compute_area_name"; import { generateEntityFilter } from "../../../common/entity/entity_filter"; @@ -428,8 +430,16 @@ export class HuiAreaCard extends LitElement implements LovelaceCard { const ignoreAspectRatio = this.layout === "grid" || this.layout === "panel"; + const color = this._config.color + ? computeCssColor(this._config.color) + : undefined; + + const style = { + "--tile-color": color, + }; + return html` - +