in src/helper/dom.ts [292:335]
update = function (domToUpdate: ExtendedHTMLElement, domBuilderObject: DomBuilderObjectFilled): ExtendedHTMLElement {
if (domToUpdate.builderObject) {
if (domBuilderObject.classNames !== undefined) {
domToUpdate.classList.remove(...(domToUpdate.builderObject.classNames as string[]));
domToUpdate.classList.add(...domBuilderObject.classNames.filter(className => className !== ''));
}
(Object.keys(domBuilderObject.events ?? {}) as Array<Partial<GenericEvents>>).forEach(eventName => {
if (domToUpdate.builderObject.events !== undefined && domToUpdate.builderObject.events[eventName]) {
domToUpdate.removeEventListener(
eventName,
(domToUpdate.builderObject.events[eventName] as DomBuilderEventHandlerWithOptions).handler ?? domToUpdate.builderObject.events[eventName]
);
}
if (domBuilderObject.events !== undefined && domBuilderObject.events[eventName] !== undefined) {
domToUpdate.addEventListener(eventName, domBuilderObject.events[eventName]);
}
});
Object.keys(domBuilderObject.attributes ?? {}).forEach(attributeName => {
if (domBuilderObject.attributes !== undefined && domBuilderObject.attributes[attributeName] === undefined) {
domToUpdate.removeAttribute(attributeName);
} else if (domBuilderObject.attributes !== undefined) {
domToUpdate.setAttribute(attributeName, domBuilderObject.attributes[attributeName] as string);
}
});
if (domBuilderObject.testId != null && Config.getInstance().config.test) {
domToUpdate.setAttribute(testIds.selector, domBuilderObject.testId);
}
if (typeof domBuilderObject.innerHTML === 'string') {
domToUpdate.innerHTML = domBuilderObject.innerHTML;
} else if (domBuilderObject.children !== undefined && domBuilderObject.children.length > 0) {
domToUpdate.clear();
domToUpdate.insertChild('beforeend', domBuilderObject.children);
}
domToUpdate.builderObject = { ...EmptyDomBuilderObject, ...domBuilderObject } as DomBuilderObject;
} else {
console.warn('element was not created with dom builder');
}
return domToUpdate;
};