From 23a9b79320d8fdb7e4b7b70a75d64899029d92e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Fri, 11 Sep 2020 15:46:41 +0200 Subject: [PATCH] Expand groups in entitry row to check toggle (#6930) --- .../entity-rows/hui-group-entity-row.ts | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/panels/lovelace/entity-rows/hui-group-entity-row.ts b/src/panels/lovelace/entity-rows/hui-group-entity-row.ts index 04d1f817a0..8982640a61 100644 --- a/src/panels/lovelace/entity-rows/hui-group-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-group-entity-row.ts @@ -1,13 +1,14 @@ import { customElement, html, + internalProperty, LitElement, property, - internalProperty, PropertyValues, TemplateResult, } from "lit-element"; import { DOMAINS_TOGGLE } from "../../../common/const"; +import { computeDomain } from "../../../common/entity/compute_domain"; import { computeStateDisplay } from "../../../common/entity/compute_state_display"; import "../../../components/entity/ha-entity-toggle"; import { HomeAssistant } from "../../../types"; @@ -22,6 +23,19 @@ class HuiGroupEntityRow extends LitElement implements LovelaceRow { @internalProperty() private _config?: EntityConfig; + private _computeCanToggle(hass: HomeAssistant, entityIds: string[]): boolean { + return entityIds.some((entityId) => { + const domain = computeDomain(entityId); + if (domain === "group") { + return this._computeCanToggle( + hass, + this.hass?.states[entityId].attributes["entity_id"] + ); + } + return DOMAINS_TOGGLE.has(domain); + }); + } + public setConfig(config: EntityConfig): void { if (!config) { throw new Error("Configuration error"); @@ -50,7 +64,7 @@ class HuiGroupEntityRow extends LitElement implements LovelaceRow { return html` - ${this._computeCanToggle(stateObj.attributes.entity_id) + ${this._computeCanToggle(this.hass, stateObj.attributes.entity_id) ? html` `; } - - private _computeCanToggle(entityIds): boolean { - return entityIds.some((entityId) => - DOMAINS_TOGGLE.has(entityId.split(".", 1)[0]) - ); - } } declare global {