From de142e33a1c68175702eb02cd5f37ea267ef0038 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Fri, 12 Dec 2025 07:30:07 +0000 Subject: [PATCH] Use entity picker for heading card entities editor (#28463) * Use entity picker for heading card entities editor * Use space tokens * Pass index * Lint * Set undefined * Iterate * Spread * Fixes * Fixes --- .../hui-heading-badges-editor.ts | 97 +++++++++++++------ .../hui-heading-card-editor.ts | 2 +- 2 files changed, 70 insertions(+), 29 deletions(-) diff --git a/src/panels/lovelace/editor/config-elements/hui-heading-badges-editor.ts b/src/panels/lovelace/editor/config-elements/hui-heading-badges-editor.ts index 78a1984366..bbbfd20b52 100644 --- a/src/panels/lovelace/editor/config-elements/hui-heading-badges-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-heading-badges-editor.ts @@ -5,14 +5,17 @@ import { customElement, property } from "lit/decorators"; import { repeat } from "lit/directives/repeat"; import { fireEvent } from "../../../../common/dom/fire_event"; import { preventDefault } from "../../../../common/dom/prevent_default"; -import { computeStateName } from "../../../../common/entity/compute_state_name"; import "../../../../components/entity/ha-entity-picker"; +import type { HaEntityPicker } from "../../../../components/entity/ha-entity-picker"; import "../../../../components/ha-button"; import "../../../../components/ha-icon-button"; import "../../../../components/ha-sortable"; import "../../../../components/ha-svg-icon"; import type { HomeAssistant } from "../../../../types"; -import type { LovelaceHeadingBadgeConfig } from "../../heading-badges/types"; +import type { + EntityHeadingBadgeConfig, + LovelaceHeadingBadgeConfig, +} from "../../heading-badges/types"; declare global { interface HASSDomEvents { @@ -38,20 +41,8 @@ export class HuiHeadingBadgesEditor extends LitElement { return this._badgesKeys.get(badge)!; } - private _computeBadgeLabel(badge: LovelaceHeadingBadgeConfig) { - const type = badge.type ?? "entity"; - - if (type === "entity") { - const entityId = "entity" in badge ? (badge.entity as string) : undefined; - const stateObj = entityId ? this.hass.states[entityId] : undefined; - return ( - (stateObj && computeStateName(stateObj)) || - entityId || - type || - "Unknown badge" - ); - } - return type; + private _createValueChangedHandler(index: number) { + return (ev: CustomEvent) => this._valueChanged(ev, index); } protected render() { @@ -71,7 +62,12 @@ export class HuiHeadingBadgesEditor extends LitElement { this.badges, (badge) => this._getKey(badge), (badge, index) => { - const label = this._computeBadgeLabel(badge); + const type = badge.type ?? "entity"; + const isEntityBadge = + type === "entity" && "entity" in badge; + const entityBadge = isEntityBadge + ? (badge as EntityHeadingBadgeConfig) + : undefined; return html`
@@ -79,9 +75,23 @@ export class HuiHeadingBadgesEditor extends LitElement { .path=${mdiDragHorizontalVariant} >
-
- ${label} -
+ ${isEntityBadge && entityBadge + ? html` + + ` + : html` +
+ ${type} +
+ `}