42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import { DomList } from "./dom-list.js";
|
|
import { addEventToElement, setText } from "./dom-utils.js";
|
|
import { emitEvent, listenTo } from "./events.js";
|
|
import { registerLoadCallback } from "./main.js";
|
|
|
|
registerLoadCallback(() => {
|
|
listenTo("fileLoad:chooseDesign", designChoiceDialog);
|
|
})
|
|
|
|
function designChoiceDialog(e) {
|
|
const dialog = document.querySelector('[data-dialog="fileLoad:chooseDesign"]');
|
|
|
|
const dismiss = (data) => {
|
|
dialog.classList.add("hidden");
|
|
emitEvent("fileLoad:chooseDesign:choice", data);
|
|
}
|
|
|
|
addEventToElement(
|
|
"dialog-action", "cancel", "click",
|
|
() => dismiss(-1),
|
|
{ element: dialog },
|
|
);
|
|
dialog.addEventListener("click", e => {
|
|
if (e.target !== e.currentTarget) return;
|
|
dismiss(-1);
|
|
});
|
|
|
|
const list = new DomList(dialog.querySelector(":scope > section > main"));
|
|
list.clear();
|
|
|
|
for (const designIndex in e.detail.designs) {
|
|
const design = e.detail.designs[designIndex];
|
|
const button = list.makeItem();
|
|
setText("Name", design.modules["plannerator:metadata"].Name, { element: button });
|
|
setText("Author", design.modules["plannerator:metadata"].Author, { element: button });
|
|
button.addEventListener("click", () => dismiss(designIndex));
|
|
list.addItem(button);
|
|
}
|
|
|
|
dialog.classList.remove("hidden");
|
|
}
|