import { html, LitElement, PropertyDeclarations } from "@polymer/lit-element";
import { TemplateResult } from "lit-html";
import { HomeAssistant } from "../../../types";
import { fireEvent } from "../../../common/dom/fire_event";
import { EntityConfig } from "../entity-rows/types";
import "../../../components/entity/ha-entity-picker";
import { EditorTarget } from "../editor/types";
export class HuiEntityEditor extends LitElement {
protected hass?: HomeAssistant;
protected entities?: EntityConfig[];
static get properties(): PropertyDeclarations {
return {
hass: {},
entities: {},
};
}
protected render(): TemplateResult {
if (!this.entities) {
return html``;
}
return html`
${this.renderStyle()}
Entities
${
this.entities.map((entityConf, index) => {
return html`
`;
})
}
`;
}
private _addEntity(ev: Event): void {
const target = ev.target! as EditorTarget;
if (target.value === "") {
return;
}
const newConfigEntities = this.entities!.concat({
entity: target.value as string,
});
target.value = "";
fireEvent(this, "entities-changed", { entities: newConfigEntities });
}
private _valueChanged(ev: Event): void {
const target = ev.target! as EditorTarget;
const newConfigEntities = this.entities!.concat();
if (target.value === "") {
newConfigEntities.splice(target.index!, 1);
} else {
newConfigEntities[target.index!] = {
...newConfigEntities[target.index!],
entity: target.value!,
};
}
fireEvent(this, "entities-changed", { entities: newConfigEntities });
}
private renderStyle(): TemplateResult {
return html`
`;
}
}
declare global {
interface HTMLElementTagNameMap {
"hui-entity-editor": HuiEntityEditor;
}
}
customElements.define("hui-entity-editor", HuiEntityEditor);