mapcomplete/UI/Base/List.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

53 lines
1.6 KiB
TypeScript
Raw Normal View History

2021-06-14 02:39:23 +02:00
import { Utils } from "../../Utils"
import BaseUIElement from "../BaseUIElement"
import Translations from "../i18n/Translations"
export default class List extends BaseUIElement {
private readonly uiElements: BaseUIElement[]
private readonly _ordered: boolean
constructor(uiElements: (string | BaseUIElement)[], ordered = false) {
super()
this._ordered = ordered
this.uiElements = Utils.NoNull(uiElements).map((s) => Translations.W(s))
}
AsMarkdown(): string {
if (this._ordered) {
return (
"\n\n" +
this.uiElements
.map((el, i) => " " + i + ". " + el.AsMarkdown().replace(/\n/g, " \n"))
.join("\n") +
"\n"
2022-09-08 21:40:48 +02:00
)
} else {
return (
"\n\n" +
this.uiElements
.map((el) => " - " + el.AsMarkdown().replace(/\n/g, " \n"))
.join("\n") +
"\n"
2022-09-08 21:40:48 +02:00
)
}
}
2021-06-14 02:39:23 +02:00
protected InnerConstructElement(): HTMLElement {
const el = document.createElement(this._ordered ? "ol" : "ul")
for (const subEl of this.uiElements) {
if (subEl === undefined || subEl === null) {
2021-06-14 02:39:23 +02:00
continue
}
const subHtml = subEl.ConstructElement()
if (subHtml !== undefined) {
2021-06-14 02:39:23 +02:00
const item = document.createElement("li")
item.appendChild(subHtml)
el.appendChild(item)
}
}
return el
}
}