From 88f9d05336a457edac7979c449af5f34ee888f98 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 23 Feb 2022 13:18:27 +0100 Subject: [PATCH 1/5] Migrate more-info configurator --- .../controls/more-info-configurator.js | 148 ------------------ .../controls/more-info-configurator.ts | 124 +++++++++++++++ 2 files changed, 124 insertions(+), 148 deletions(-) delete mode 100644 src/dialogs/more-info/controls/more-info-configurator.js create mode 100644 src/dialogs/more-info/controls/more-info-configurator.ts diff --git a/src/dialogs/more-info/controls/more-info-configurator.js b/src/dialogs/more-info/controls/more-info-configurator.js deleted file mode 100644 index 52f7ce6406a4..000000000000 --- a/src/dialogs/more-info/controls/more-info-configurator.js +++ /dev/null @@ -1,148 +0,0 @@ -import "@material/mwc-button"; -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; -import "@polymer/paper-input/paper-input"; -import { html } from "@polymer/polymer/lib/utils/html-tag"; -/* eslint-plugin-disable lit */ -import { PolymerElement } from "@polymer/polymer/polymer-element"; -import "../../../components/ha-circular-progress"; -import "../../../components/ha-markdown"; - -class MoreInfoConfigurator extends PolymerElement { - static get template() { - return html` - - - -
- -
- `; - } - - static get properties() { - return { - stateObj: { - type: Object, - }, - - action: { - type: String, - value: "display", - }, - - isConfigurable: { - type: Boolean, - computed: "computeIsConfigurable(stateObj)", - }, - - isConfiguring: { - type: Boolean, - value: false, - }, - - fieldInput: { - type: Object, - value: function () { - return {}; - }, - }, - }; - } - - computeIsConfigurable(stateObj) { - return stateObj.state === "configure"; - } - - fieldChanged(ev) { - const el = ev.target; - this.fieldInput[el.name] = el.value; - } - - submitClicked() { - const data = { - configure_id: this.stateObj.attributes.configure_id, - fields: this.fieldInput, - }; - - this.isConfiguring = true; - - this.hass.callService("configurator", "configure", data).then( - () => { - this.isConfiguring = false; - }, - () => { - this.isConfiguring = false; - } - ); - } -} - -customElements.define("more-info-configurator", MoreInfoConfigurator); diff --git a/src/dialogs/more-info/controls/more-info-configurator.ts b/src/dialogs/more-info/controls/more-info-configurator.ts new file mode 100644 index 000000000000..dc17a143c086 --- /dev/null +++ b/src/dialogs/more-info/controls/more-info-configurator.ts @@ -0,0 +1,124 @@ +import "@material/mwc-button"; +import { HassEntity } from "home-assistant-js-websocket"; +import { css, html, LitElement } from "lit"; +import { customElement, property, state } from "lit/decorators"; +import "../../../components/ha-alert"; +import "../../../components/ha-circular-progress"; +import "../../../components/ha-markdown"; +import "../../../components/ha-textfield"; +import { HomeAssistant } from "../../../types"; + +@customElement("more-info-configurator") +export class MoreInfoConfigurator extends LitElement { + @property({ attribute: false }) public hass!: HomeAssistant; + + @property({ attribute: false }) public stateObj?: HassEntity; + + @state() private _isConfiguring = false; + + private _fieldInput = {}; + + render() { + if (this.stateObj?.state !== "configure") { + return html``; + } + + return html` +
+ + + ${this.stateObj.attributes.errors + ? html` + ${this.stateObj.attributes.errors} + ` + : ""} + ${this.stateObj.attributes.fields.map( + (field) => html`` + )} + ${this.stateObj.attributes.submit_caption + ? html`

+ + ${this._isConfiguring + ? html`` + : ""} + ${this.stateObj.attributes.submit_caption} + +

` + : ""} +
+ `; + } + + private _fieldChanged(ev) { + const el = ev.target; + this._fieldInput[el.name] = el.value; + } + + private _submitClicked() { + const data = { + configure_id: this.stateObj!.attributes.configure_id, + fields: this._fieldInput, + }; + + this._isConfiguring = true; + + this.hass.callService("configurator", "configure", data).then( + () => { + this._isConfiguring = false; + }, + () => { + this._isConfiguring = false; + } + ); + } + + static styles = css` + p { + margin: 8px 0; + } + + a { + color: var(--primary-color); + } + + p > img { + max-width: 100%; + } + + p.center { + text-align: center; + } + + p.submit { + text-align: center; + height: 41px; + } + + ha-circular-progress { + width: 14px; + height: 14px; + margin-right: 20px; + } + `; +} + +declare global { + interface HTMLElementTagNameMap { + "more-info-configurator": MoreInfoConfigurator; + } +} From d6f39c302c67cb0e3e797338f0942bb6528a3a27 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 23 Feb 2022 13:26:32 +0100 Subject: [PATCH 2/5] Update more-info-configurator.ts --- src/dialogs/more-info/controls/more-info-configurator.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/dialogs/more-info/controls/more-info-configurator.ts b/src/dialogs/more-info/controls/more-info-configurator.ts index dc17a143c086..7abbd66b3e67 100644 --- a/src/dialogs/more-info/controls/more-info-configurator.ts +++ b/src/dialogs/more-info/controls/more-info-configurator.ts @@ -24,7 +24,7 @@ export class MoreInfoConfigurator extends LitElement { } return html` -
+
Date: Wed, 23 Feb 2022 06:29:33 -0600 Subject: [PATCH 3/5] Update src/dialogs/more-info/controls/more-info-configurator.ts --- src/dialogs/more-info/controls/more-info-configurator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dialogs/more-info/controls/more-info-configurator.ts b/src/dialogs/more-info/controls/more-info-configurator.ts index 7abbd66b3e67..5b9a691c4107 100644 --- a/src/dialogs/more-info/controls/more-info-configurator.ts +++ b/src/dialogs/more-info/controls/more-info-configurator.ts @@ -6,7 +6,7 @@ import "../../../components/ha-alert"; import "../../../components/ha-circular-progress"; import "../../../components/ha-markdown"; import "../../../components/ha-textfield"; -import { HomeAssistant } from "../../../types"; +import type { HomeAssistant } from "../../../types"; @customElement("more-info-configurator") export class MoreInfoConfigurator extends LitElement { From 29972c0706bb5459fe0a2f04ea9eeea29329ce6d Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 23 Feb 2022 13:44:19 +0100 Subject: [PATCH 4/5] Update src/dialogs/more-info/controls/more-info-configurator.ts Co-authored-by: Zack Barett --- src/dialogs/more-info/controls/more-info-configurator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dialogs/more-info/controls/more-info-configurator.ts b/src/dialogs/more-info/controls/more-info-configurator.ts index 5b9a691c4107..7f1142fd131a 100644 --- a/src/dialogs/more-info/controls/more-info-configurator.ts +++ b/src/dialogs/more-info/controls/more-info-configurator.ts @@ -18,7 +18,7 @@ export class MoreInfoConfigurator extends LitElement { private _fieldInput = {}; - render() { + protected render(): TemplateResult { if (this.stateObj?.state !== "configure") { return html``; } From 176c77cf364139015065046583caeac743ec85be Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 23 Feb 2022 13:47:09 +0100 Subject: [PATCH 5/5] Import --- src/dialogs/more-info/controls/more-info-configurator.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dialogs/more-info/controls/more-info-configurator.ts b/src/dialogs/more-info/controls/more-info-configurator.ts index 7f1142fd131a..f6f77f451b82 100644 --- a/src/dialogs/more-info/controls/more-info-configurator.ts +++ b/src/dialogs/more-info/controls/more-info-configurator.ts @@ -1,6 +1,6 @@ import "@material/mwc-button"; -import { HassEntity } from "home-assistant-js-websocket"; -import { css, html, LitElement } from "lit"; +import type { HassEntity } from "home-assistant-js-websocket"; +import { css, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import "../../../components/ha-alert"; import "../../../components/ha-circular-progress";