mapcomplete/UI/UIElement.ts

33 lines
917 B
TypeScript

import BaseUIElement from "./BaseUIElement";
export abstract class UIElement extends BaseUIElement {
/**
* Should be overridden for specific HTML functionality
*/
protected InnerConstructElement(): HTMLElement {
// Uses the old fashioned way to construct an element using 'InnerRender'
const innerRender = this.InnerRender();
if (innerRender === undefined || innerRender === "") {
return undefined;
}
const el = document.createElement("span")
if (typeof innerRender === "string") {
el.innerHTML = innerRender
} else {
const subElement = innerRender.ConstructElement();
if (subElement === undefined) {
return undefined;
}
el.appendChild(subElement)
}
return el;
}
protected abstract InnerRender(): string | BaseUIElement;
}