UNPKG

lovelace-timer-bar-card

Version:

Progress bar display for Home Assistant timers

59 lines (49 loc) 1.52 kB
/* Minimum code from Home Assistant to create the action handler used in hui-generic-entity-row. */ import { noChange } from "lit"; import { AttributePart, directive, Directive, DirectiveParameters, } from "lit/directive.js"; interface ActionHandler extends HTMLElement { holdTime: number; bind(element: Element, options?: ActionHandlerOptions): void; } interface ActionHandlerElement extends HTMLElement { actionHandler?: { options: ActionHandlerOptions; start?: (ev: Event) => void; end?: (ev: Event) => void; handleEnter?: (ev: KeyboardEvent) => void; }; } type ActionHandlerOptions = any; const getActionHandler = (): ActionHandler => { const body = document.body; if (body.querySelector("action-handler")) { return body.querySelector("action-handler") as ActionHandler; } const actionhandler = document.createElement("action-handler"); body.appendChild(actionhandler); return actionhandler as ActionHandler; }; export const actionHandlerBind = ( element: ActionHandlerElement, options?: ActionHandlerOptions ) => { const actionhandler: ActionHandler = getActionHandler(); if (!actionhandler) { return; } actionhandler.bind(element, options); }; export const actionHandler = directive( class extends Directive { update(part: AttributePart, [options]: DirectiveParameters<this>) { actionHandlerBind(part.element as ActionHandlerElement, options); return noChange; } render(_options?: ActionHandlerOptions) {} } );