UNPKG

lovelace-timer-bar-card

Version:

Progress bar display for Home Assistant timers

85 lines (69 loc) 2.16 kB
/** Action Handling Code. From both https://github.com/custom-cards/custom-card-helpers/blob/master/src/handle-action.ts and https://github.com/home-assistant/frontend/blob/dev/src/panels/lovelace/common/handle-action.ts */ import { HassServiceTarget } from "home-assistant-js-websocket"; import { fireEvent } from "custom-card-helpers"; type HomeAssistant = any; // Hack since the custom-card-helpers HomeAssistant type is out of date export interface ToggleActionConfig extends BaseActionConfig { action: "toggle"; } export interface CallServiceActionConfig extends BaseActionConfig { action: "call-service"; service: string; target?: HassServiceTarget; // "service_data" is kept for backwards compatibility. Replaced by "data". service_data?: Record<string, unknown>; data?: Record<string, unknown>; } export interface NavigateActionConfig extends BaseActionConfig { action: "navigate"; navigation_path: string; } export interface UrlActionConfig extends BaseActionConfig { action: "url"; url_path: string; } export interface MoreInfoActionConfig extends BaseActionConfig { action: "more-info"; } export interface NoActionConfig extends BaseActionConfig { action: "none"; } export interface CustomActionConfig extends BaseActionConfig { action: "fire-dom-event"; } export interface BaseActionConfig { action: string; confirmation?: ConfirmationRestrictionConfig; } export interface ConfirmationRestrictionConfig { text?: string; exemptions?: RestrictionConfig[]; } export interface RestrictionConfig { user: string; } export type ActionConfig = | ToggleActionConfig | CallServiceActionConfig | NavigateActionConfig | UrlActionConfig | MoreInfoActionConfig | NoActionConfig | CustomActionConfig; export const handleAction = ( node: HTMLElement, _hass: HomeAssistant, config: { entity?: string; camera_image?: string; hold_action?: ActionConfig; tap_action?: ActionConfig; double_tap_action?: ActionConfig; }, action: string ): void => { // @ts-ignore: hass-action isn't in custom-card-helpers fireEvent(node, "hass-action", { config, action }); };