From 24f3db3e3f7c76f99575887c3c17042981689656 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 18 Sep 2020 17:20:31 +0200 Subject: [PATCH] Add hold action to buttons (#7051) --- src/panels/lovelace/components/hui-buttons-base.ts | 7 +------ .../header-footer/hui-buttons-header-footer.ts | 12 +++++++++--- src/panels/lovelace/special-rows/hui-buttons-row.ts | 12 +++++++++--- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/panels/lovelace/components/hui-buttons-base.ts b/src/panels/lovelace/components/hui-buttons-base.ts index 9a745c0322..0a616df12c 100644 --- a/src/panels/lovelace/components/hui-buttons-base.ts +++ b/src/panels/lovelace/components/hui-buttons-base.ts @@ -85,12 +85,7 @@ export class HuiButtonsBase extends LitElement { private _handleAction(ev: ActionHandlerEvent) { const config = (ev.currentTarget as any).config as EntitiesCardEntityConfig; - handleAction( - this, - this._hass!, - { tap_action: { action: "toggle" }, ...config }, - ev.detail.action! - ); + handleAction(this, this._hass!, config, ev.detail.action!); } static get styles(): CSSResult { diff --git a/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts b/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts index 8364a33e9c..19f8be82be 100644 --- a/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts +++ b/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts @@ -4,6 +4,7 @@ import { LitElement, property, TemplateResult, + internalProperty, } from "lit-element"; import { HomeAssistant } from "../../../types"; import { processConfigEntities } from "../common/process-config-entities"; @@ -21,15 +22,20 @@ export class HuiButtonsHeaderFooter extends LitElement @property({ attribute: false }) public hass?: HomeAssistant; - private _configEntities?: EntityConfig[]; + @internalProperty() private _configEntities?: EntityConfig[]; public getCardSize(): number { return 1; } public setConfig(config: ButtonsHeaderFooterConfig): void { - this._configEntities = processConfigEntities(config.entities); - this.requestUpdate(); + this._configEntities = processConfigEntities(config.entities).map( + (entityConfig) => ({ + tap_action: { action: "toggle" }, + hold_action: { action: "more-info" }, + ...entityConfig, + }) + ); } protected render(): TemplateResult | void { diff --git a/src/panels/lovelace/special-rows/hui-buttons-row.ts b/src/panels/lovelace/special-rows/hui-buttons-row.ts index 67ba91fb58..574ffd0bf4 100644 --- a/src/panels/lovelace/special-rows/hui-buttons-row.ts +++ b/src/panels/lovelace/special-rows/hui-buttons-row.ts @@ -4,6 +4,7 @@ import { LitElement, property, TemplateResult, + internalProperty, } from "lit-element"; import { HomeAssistant } from "../../../types"; import { processConfigEntities } from "../common/process-config-entities"; @@ -22,11 +23,16 @@ export class HuiButtonsRow extends LitElement implements LovelaceRow { @property({ attribute: false }) public hass?: HomeAssistant; - private _configEntities?: EntityConfig[]; + @internalProperty() private _configEntities?: EntityConfig[]; public setConfig(config: ButtonsRowConfig): void { - this._configEntities = processConfigEntities(config.entities); - this.requestUpdate(); + this._configEntities = processConfigEntities(config.entities).map( + (entityConfig) => ({ + tap_action: { action: "toggle" }, + hold_action: { action: "more-info" }, + ...entityConfig, + }) + ); } protected render(): TemplateResult | void {