Fire custom LL event (#4361)

This commit is contained in:
Ian Richardson 2019-12-18 00:40:26 -06:00 committed by Paulus Schoutsen
parent c2d551bb7c
commit dd17a153d2
2 changed files with 16 additions and 3 deletions

View File

@ -69,6 +69,10 @@ export interface NoActionConfig extends BaseActionConfig {
action: "none"; action: "none";
} }
export interface CustomActionConfig extends BaseActionConfig {
action: "fire-dom-event";
}
export interface BaseActionConfig { export interface BaseActionConfig {
confirmation?: ConfirmationRestrictionConfig; confirmation?: ConfirmationRestrictionConfig;
} }
@ -88,7 +92,8 @@ export type ActionConfig =
| NavigateActionConfig | NavigateActionConfig
| UrlActionConfig | UrlActionConfig
| MoreInfoActionConfig | MoreInfoActionConfig
| NoActionConfig; | NoActionConfig
| CustomActionConfig;
export const fetchConfig = ( export const fetchConfig = (
conn: Connection, conn: Connection,

View File

@ -5,6 +5,12 @@ import { toggleEntity } from "./entity/toggle-entity";
import { ActionConfig } from "../../../data/lovelace"; import { ActionConfig } from "../../../data/lovelace";
import { forwardHaptic } from "../../../data/haptics"; import { forwardHaptic } from "../../../data/haptics";
declare global {
interface HASSDomEvents {
"ll-custom": ActionConfig;
}
}
export const handleAction = ( export const handleAction = (
node: HTMLElement, node: HTMLElement,
hass: HomeAssistant, hass: HomeAssistant,
@ -76,7 +82,7 @@ export const handleAction = (
forwardHaptic("light"); forwardHaptic("light");
} }
break; break;
case "call-service": { case "call-service":
if (!actionConfig.service) { if (!actionConfig.service) {
forwardHaptic("failure"); forwardHaptic("failure");
return; return;
@ -84,6 +90,8 @@ export const handleAction = (
const [domain, service] = actionConfig.service.split(".", 2); const [domain, service] = actionConfig.service.split(".", 2);
hass.callService(domain, service, actionConfig.service_data); hass.callService(domain, service, actionConfig.service_data);
forwardHaptic("light"); forwardHaptic("light");
} break;
case "fire-dom-event":
fireEvent(node, "ll-custom", actionConfig);
} }
}; };