Sha256: f7a3216f5ccfbcee47e2c5705eb2d035489be91a6338e69bc8e5051d4eb9b2b5
Contents?: true
Size: 1.46 KB
Versions: 13
Compression:
Stored size: 1.46 KB
Contents
import { splitActionAttribute } from "../html/split-action-attribute"; import { handleAction } from "./handle-action"; import { debounce } from "../utils/debounce"; export const initializeActions = () => { const actionElements = document.querySelectorAll("[data-action]"); actionElements.forEach((element) => initializeActionsForElement(element as HTMLElement)); }; const initializeActionsForElement = (element: HTMLElement) => { if (element.getAttribute("data-set-event-handler")) return; const actions = element.getAttribute("data-action")?.split(" ") || []; actions.forEach(action => { const { eventType, componentName, stateName, fnName, bounceTime } = splitActionAttribute(action); if (!eventType || !componentName || !fnName) return; if (eventType === "render") { const interval = setInterval(() => { if ((window as any).actionCableConnected === true) { handleAction(element, stateName, fnName); clearInterval(interval); } }, 10); element.setAttribute("data-render-event-handler", "true"); return; } if (bounceTime > 0) { element.addEventListener(eventType, debounce((event) => handleAction(event.target as HTMLElement, stateName, fnName), bounceTime) ); } else { element.addEventListener(eventType, (event) => handleAction(event.target as HTMLElement, stateName, fnName) ); } element.setAttribute("data-set-event-handler", "true"); }); };
Version data entries
13 entries across 13 versions & 1 rubygems