From be4d431dc3019c10a202f47fefc337e1445dbbbb Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Fri, 18 Oct 2019 14:55:53 -0500 Subject: [PATCH] more-info dialog for counter (#4038) * more-info dialog for counter * address comments --- src/common/const.ts | 1 + src/common/entity/domain_icon.ts | 1 + .../more-info/controls/more-info-content.ts | 1 + .../more-info/controls/more-info-counter.ts | 70 +++++++++++++++++++ src/translations/en.json | 7 ++ 5 files changed, 80 insertions(+) create mode 100644 src/dialogs/more-info/controls/more-info-counter.ts diff --git a/src/common/const.ts b/src/common/const.ts index c1f27c4e9d..3abe76e91b 100644 --- a/src/common/const.ts +++ b/src/common/const.ts @@ -35,6 +35,7 @@ export const DOMAINS_WITH_MORE_INFO = [ "camera", "climate", "configurator", + "counter", "cover", "fan", "group", diff --git a/src/common/entity/domain_icon.ts b/src/common/entity/domain_icon.ts index 9942a6d963..0bb2535a77 100644 --- a/src/common/entity/domain_icon.ts +++ b/src/common/entity/domain_icon.ts @@ -14,6 +14,7 @@ const fixedIcons = { climate: "hass:thermostat", configurator: "hass:settings", conversation: "hass:text-to-speech", + counter: "hass:counter", device_tracker: "hass:account", fan: "hass:fan", google_assistant: "hass:google-assistant", diff --git a/src/dialogs/more-info/controls/more-info-content.ts b/src/dialogs/more-info/controls/more-info-content.ts index 1d76bb1cc5..e6fc6d2cfe 100644 --- a/src/dialogs/more-info/controls/more-info-content.ts +++ b/src/dialogs/more-info/controls/more-info-content.ts @@ -10,6 +10,7 @@ import "./more-info-automation"; import "./more-info-camera"; import "./more-info-climate"; import "./more-info-configurator"; +import "./more-info-counter"; import "./more-info-cover"; import "./more-info-default"; import "./more-info-fan"; diff --git a/src/dialogs/more-info/controls/more-info-counter.ts b/src/dialogs/more-info/controls/more-info-counter.ts new file mode 100644 index 0000000000..3253dd272a --- /dev/null +++ b/src/dialogs/more-info/controls/more-info-counter.ts @@ -0,0 +1,70 @@ +import { + LitElement, + html, + TemplateResult, + CSSResult, + css, + property, + customElement, +} from "lit-element"; +import "@material/mwc-button"; +import { HassEntity } from "home-assistant-js-websocket"; + +import { HomeAssistant } from "../../../types"; + +@customElement("more-info-counter") +class MoreInfoCounter extends LitElement { + @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; + + protected render(): TemplateResult | void { + if (!this.hass || !this.stateObj) { + return html``; + } + + return html` +
+ + ${this.hass!.localize("ui.card.counter.actions.increment")} + + + ${this.hass!.localize("ui.card.counter.actions.decrement")} + + + ${this.hass!.localize("ui.card.counter.actions.reset")} + +
+ `; + } + + private _handleActionClick(e: MouseEvent): void { + const action = (e.currentTarget as any).action; + this.hass.callService("counter", action, { + entity_id: this.stateObj!.entity_id, + }); + } + + static get styles(): CSSResult { + return css` + .actions { + margin: 0 8px; + padding-top: 20px; + display: flex; + flex-wrap: wrap; + justify-content: center; + } + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "more-info-counter": MoreInfoCounter; + } +} diff --git a/src/translations/en.json b/src/translations/en.json index 8e1b7c7714..98027077e5 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -417,6 +417,13 @@ "away_mode": "Away mode", "aux_heat": "Aux heat" }, + "counter": { + "actions": { + "increment": "increment", + "decrement": "decrement", + "reset": "reset" + } + }, "cover": { "position": "Position", "tilt_position": "Tilt position"