diff --git a/src/components/entity/ha-badge-group.ts b/src/components/entity/ha-badge-group.ts
new file mode 100644
index 000000000000..f5d074035b14
--- /dev/null
+++ b/src/components/entity/ha-badge-group.ts
@@ -0,0 +1,35 @@
+import {
+ css,
+ CSSResult,
+ customElement,
+ html,
+ LitElement,
+ TemplateResult,
+} from "lit-element";
+import "../ha-label-badge";
+
+@customElement("ha-badge-group")
+export class HaBadgeGroup extends LitElement {
+ protected render(): TemplateResult | void {
+ return html`
+
+ `;
+ }
+
+ static get styles(): CSSResult {
+ return css`
+ :host {
+ display: block;
+ margin: 8px 16px;
+ font-size: 85%;
+ text-align: center;
+ }
+ `;
+ }
+}
+
+declare global {
+ interface HTMLElementTagNameMap {
+ "ha-badge-group": HaBadgeGroup;
+ }
+}
diff --git a/src/components/entity/ha-state-label-badge.ts b/src/components/entity/ha-state-label-badge.ts
index 2d82e820955a..380ef69184c9 100644
--- a/src/components/entity/ha-state-label-badge.ts
+++ b/src/components/entity/ha-state-label-badge.ts
@@ -35,6 +35,8 @@ export class HaStateLabelBadge extends LitElement {
@property() public image?: string;
+ @property() public disabled: boolean = false;
+
@property() private _timerTimeRemaining?: number;
private _connected?: boolean;
@@ -92,8 +94,12 @@ export class HaStateLabelBadge extends LitElement {
protected firstUpdated(changedProperties: PropertyValues): void {
super.firstUpdated(changedProperties);
+
this.addEventListener("click", (ev) => {
ev.stopPropagation();
+ if (this.disabled) {
+ return;
+ }
if (this.state) {
fireEvent(this, "hass-more-info", { entityId: this.state.entity_id });
}
@@ -220,6 +226,10 @@ export class HaStateLabelBadge extends LitElement {
cursor: pointer;
}
+ :host([disabled]) {
+ cursor: initial;
+ }
+
ha-label-badge {
--ha-label-badge-color: var(--label-badge-red, #df4c1e);
}
diff --git a/src/panels/lovelace/components/hui-entity-editor.ts b/src/panels/lovelace/components/hui-entity-editor.ts
index c7fc17e00b9c..c96be29f6be6 100644
--- a/src/panels/lovelace/components/hui-entity-editor.ts
+++ b/src/panels/lovelace/components/hui-entity-editor.ts
@@ -14,6 +14,7 @@ import { fireEvent } from "../../../common/dom/fire_event";
import { EntityConfig } from "../entity-rows/types";
import "../../../components/entity/ha-entity-picker";
+import "../../../components/entity/ha-badge-group";
import { EditorTarget } from "../editor/types";
@customElement("hui-entity-editor")
@@ -30,6 +31,27 @@ export class HuiEntityEditor extends LitElement {
}
return html`
+
+ ${this.entities.map((entity) => {
+ const state = this.hass!.states[entity.entity];
+ const name = entity.name;
+ const icon = entity.icon;
+ const image = entity.image;
+
+ return html`
+
+
+
+ `;
+ })}
+
+
${this.label ||
this.hass!.localize(
diff --git a/src/panels/lovelace/views/hui-view.ts b/src/panels/lovelace/views/hui-view.ts
index 1edcd41d7bc9..9d14d678ab3f 100644
--- a/src/panels/lovelace/views/hui-view.ts
+++ b/src/panels/lovelace/views/hui-view.ts
@@ -7,6 +7,7 @@ import {
} from "lit-element";
import "../../../components/entity/ha-state-label-badge";
+import "../../../components/entity/ha-badge-group";
// This one is for types
// tslint:disable-next-line
import { HaStateLabelBadge } from "../../../components/entity/ha-state-label-badge";
@@ -91,7 +92,7 @@ export class HUIView extends LitElement {
protected render(): TemplateResult | void {
return html`
${this.renderStyles()}
-
+
${this.lovelace!.editMode
? html`
@@ -122,12 +123,6 @@ export class HUIView extends LitElement {
background: var(--lovelace-background);
}
- #badges {
- margin: 8px 16px;
- font-size: 85%;
- text-align: center;
- }
-
#columns {
display: flex;
flex-direction: row;