UNPKG

@diyfr/base-component

Version:

A lightweight component for creating and manipulating DOM elements in typescript

87 lines 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class BaseComponent { constructor() { /** WIP */ this.onInit = () => { }; /** WIP */ this.resetTextEvent = (_text) => { }; } /** * * @param parent Si pas d'élément spécifié le body est pris par défaut * @returns */ render(parent) { return new Promise((resolve, _reject) => { setTimeout(() => { if (!parent) { parent = document.body; } if (parent instanceof BaseComponent) { parent.element.appendChild(this.element); } else { parent.appendChild(this.element); } resolve(); this.onInit(); }, 300); }); } remove(parent) { return new Promise((resolve, _reject) => { setTimeout(() => { if (!parent) { parent = document.body; } if (parent instanceof BaseComponent) { parent.element.removeChild(this.element); } else { parent.removeChild(this.element); } resolve(); }, 300); }); } /** WIP */ classListUpdate(element, className, add) { if (!element.classList.contains(className) && add) { element.classList.add(className); } else if (element.classList.contains(className) && !add) { element.classList.remove(className); } } /** * Permet d'attendre que l'élément HTML soit vraiment disponible dans le DOM * @param itemId Id de l'élément HTML * @returns HTMLElement */ waitForRendering(itemId) { return new Promise((resolve) => { if (document.getElementById(itemId)) { return resolve(document.getElementById(itemId)); } const observer = new MutationObserver((_mutations) => { if (document.getElementById(itemId)) { observer.disconnect(); resolve(document.getElementById(itemId)); } }); observer.observe(document.body, { childList: true, subtree: true, }); }); } } exports.default = BaseComponent; //# sourceMappingURL=index.js.map