From dd17a153d2513f9fdcc743687a8ea4471aabdbca Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Wed, 18 Dec 2019 00:40:26 -0600 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Fire=20custom=20LL=20event=20(#4361?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/lovelace.ts | 7 ++++++- src/panels/lovelace/common/handle-action.ts | 12 ++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/data/lovelace.ts b/src/data/lovelace.ts index 8781959b07..368f814e15 100644 --- a/src/data/lovelace.ts +++ b/src/data/lovelace.ts @@ -69,6 +69,10 @@ export interface NoActionConfig extends BaseActionConfig { action: "none"; } +export interface CustomActionConfig extends BaseActionConfig { + action: "fire-dom-event"; +} + export interface BaseActionConfig { confirmation?: ConfirmationRestrictionConfig; } @@ -88,7 +92,8 @@ export type ActionConfig = | NavigateActionConfig | UrlActionConfig | MoreInfoActionConfig - | NoActionConfig; + | NoActionConfig + | CustomActionConfig; export const fetchConfig = ( conn: Connection, diff --git a/src/panels/lovelace/common/handle-action.ts b/src/panels/lovelace/common/handle-action.ts index 80e6287a45..dd577c1d63 100644 --- a/src/panels/lovelace/common/handle-action.ts +++ b/src/panels/lovelace/common/handle-action.ts @@ -5,6 +5,12 @@ import { toggleEntity } from "./entity/toggle-entity"; import { ActionConfig } from "../../../data/lovelace"; import { forwardHaptic } from "../../../data/haptics"; +declare global { + interface HASSDomEvents { + "ll-custom": ActionConfig; + } +} + export const handleAction = ( node: HTMLElement, hass: HomeAssistant, @@ -76,7 +82,7 @@ export const handleAction = ( forwardHaptic("light"); } break; - case "call-service": { + case "call-service": if (!actionConfig.service) { forwardHaptic("failure"); return; @@ -84,6 +90,8 @@ export const handleAction = ( const [domain, service] = actionConfig.service.split(".", 2); hass.callService(domain, service, actionConfig.service_data); forwardHaptic("light"); - } + break; + case "fire-dom-event": + fireEvent(node, "ll-custom", actionConfig); } };