2020-09-12 23:15:17 +02:00
|
|
|
import {FixedUiElement} from "./FixedUiElement";
|
|
|
|
import {Utils} from "../../Utils";
|
2021-06-10 01:36:20 +02:00
|
|
|
import BaseUIElement from "../BaseUIElement";
|
2020-07-21 01:37:48 +02:00
|
|
|
|
2021-06-10 01:36:20 +02:00
|
|
|
export default class Combine extends BaseUIElement {
|
|
|
|
private readonly uiElements: BaseUIElement[];
|
2020-07-21 01:37:48 +02:00
|
|
|
|
2021-06-10 01:36:20 +02:00
|
|
|
constructor(uiElements: (string | BaseUIElement)[]) {
|
2020-09-12 23:15:17 +02:00
|
|
|
super();
|
|
|
|
this.uiElements = Utils.NoNull(uiElements)
|
|
|
|
.map(el => {
|
|
|
|
if (typeof el === "string") {
|
|
|
|
return new FixedUiElement(el);
|
|
|
|
}
|
|
|
|
return el;
|
|
|
|
});
|
2020-07-21 01:37:48 +02:00
|
|
|
}
|
2021-06-10 01:36:20 +02:00
|
|
|
|
|
|
|
protected InnerConstructElement(): HTMLElement {
|
|
|
|
const el = document.createElement("span")
|
2020-07-21 01:37:48 +02:00
|
|
|
|
2021-06-16 14:23:53 +02:00
|
|
|
try{
|
|
|
|
|
|
|
|
|
2021-06-10 01:36:20 +02:00
|
|
|
for (const subEl of this.uiElements) {
|
|
|
|
if(subEl === undefined || subEl === null){
|
|
|
|
continue;
|
2020-09-27 20:51:37 +02:00
|
|
|
}
|
2021-06-10 01:36:20 +02:00
|
|
|
const subHtml = subEl.ConstructElement()
|
|
|
|
if(subHtml !== undefined){
|
|
|
|
el.appendChild(subHtml)
|
2020-09-27 20:51:37 +02:00
|
|
|
}
|
2021-06-10 01:36:20 +02:00
|
|
|
}
|
2021-06-16 14:23:53 +02:00
|
|
|
}catch(e){
|
|
|
|
const domExc = e as DOMException
|
|
|
|
console.error("DOMException: ", domExc.name)
|
|
|
|
el.appendChild(new FixedUiElement("Could not generate this combine!").SetClass("alert").ConstructElement())
|
|
|
|
}
|
2021-06-10 01:36:20 +02:00
|
|
|
|
|
|
|
return el;
|
2020-07-21 01:37:48 +02:00
|
|
|
}
|
2021-06-10 01:36:20 +02:00
|
|
|
|
2021-06-15 00:28:59 +02:00
|
|
|
AsMarkdown(): string {
|
|
|
|
return this.uiElements.map(el => el.AsMarkdown()).join(this.HasClass("flex-col") ? "\n\n" : " ");
|
|
|
|
}
|
|
|
|
|
2020-07-21 01:37:48 +02:00
|
|
|
}
|