+ ${
+ !title && !show_header_toggle
+ ? html``
+ : html`
+ `
+ }
+
+ ${this.configEntities!.map((entityConf) =>
+ this.renderEntity(entityConf)
+ )}
+
+
+ `;
+ }
+
+ private renderStyle() {
+ return html`
+
+ `;
+ }
+
+ private renderEntity(entityConf) {
+ const element = createRowElement(entityConf);
+ element.hass = this._hass;
+ if (
+ entityConf.entity &&
+ !DOMAINS_HIDE_MORE_INFO.includes(computeDomain(entityConf.entity))
+ ) {
+ element.classList.add("state-card-dialog");
+ element.addEventListener("click", () => this._handleClick(entityConf));
+ }
+
+ return element;
+ }
+
+ private _handleClick(entityConf: ConfigEntity) {
+ const entityId = entityConf.entity;
+
+ fireEvent(this, "hass-more-info", { entityId });
+ }
+}
+
+declare global {
+ interface HTMLElementTagNameMap {
+ "hui-entities-card": HuiEntitiesCard;
+ }
+}
+
+customElements.define("hui-entities-card", HuiEntitiesCard);
diff --git a/src/panels/lovelace/common/create-card-element.js b/src/panels/lovelace/common/create-card-element.js
index 73ee2bf8af..c7d1a876ee 100644
--- a/src/panels/lovelace/common/create-card-element.js
+++ b/src/panels/lovelace/common/create-card-element.js
@@ -2,7 +2,7 @@ import { fireEvent } from "../../../common/dom/fire_event.js";
import "../cards/hui-alarm-panel-card.js";
import "../cards/hui-conditional-card.ts";
-import "../cards/hui-entities-card.js";
+import "../cards/hui-entities-card.ts";
import "../cards/hui-entity-button-card.ts";
import "../cards/hui-entity-filter-card.js";
import "../cards/hui-error-card.js";
diff --git a/src/panels/lovelace/entity-rows/types.ts b/src/panels/lovelace/entity-rows/types.ts
new file mode 100644
index 0000000000..6d145f2698
--- /dev/null
+++ b/src/panels/lovelace/entity-rows/types.ts
@@ -0,0 +1,28 @@
+import { HomeAssistant } from "../../../types";
+
+export interface EntityConfig {
+ entity: string;
+ name: string;
+ icon: string;
+}
+export interface DividerConfig {
+ style: string;
+}
+export interface SectionConfig {
+ label: string;
+}
+export interface WeblinkConfig {
+ name: string;
+ icon: string;
+ url: string;
+}
+export type EntityRowConfig =
+ | EntityConfig
+ | DividerConfig
+ | SectionConfig
+ | WeblinkConfig;
+
+export interface EntityRow {
+ hass: HomeAssistant;
+ setConfig(config: EntityRowConfig);
+}
diff --git a/src/panels/lovelace/hui-unused-entities.js b/src/panels/lovelace/hui-unused-entities.js
index 196d464b48..9b9e318954 100644
--- a/src/panels/lovelace/hui-unused-entities.js
+++ b/src/panels/lovelace/hui-unused-entities.js
@@ -4,7 +4,7 @@ import { PolymerElement } from "@polymer/polymer/polymer-element.js";
import computeUnusedEntities from "./common/compute-unused-entities.js";
import createCardElement from "./common/create-card-element.js";
-import "./cards/hui-entities-card.js";
+import "./cards/hui-entities-card.ts";
class HuiUnusedEntities extends PolymerElement {
static get template() {
diff --git a/src/panels/lovelace/types.ts b/src/panels/lovelace/types.ts
index 7583734616..def084c78b 100644
--- a/src/panels/lovelace/types.ts
+++ b/src/panels/lovelace/types.ts
@@ -1,4 +1,4 @@
-import { HomeAssistant } from "../../types.js";
+import { HomeAssistant } from "../../types";
export interface LovelaceConfig {
type: string;