@diyfr/base-component
Version:
A lightweight component for creating and manipulating DOM elements in typescript
87 lines • 2.58 kB
JavaScript
;
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