You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
749 B
TypeScript

import { swel, type Renderable } from "./deps/swel.ts";
export const showModal = (p: { content: Renderable; onClose?: () => void }) => {
const close = (doOnClose = true) => {
if (doOnClose) {
p.onClose?.();
}
modal.remove();
};
const modalContainer = swel(
"div",
{
className: "modalContainer",
on: {
click: (e) => e.stopPropagation(),
},
},
[
swel("div", { className: "modalControls" }, [
swel("button", { on: { click: () => close() } }, "X"),
]),
swel("div", { className: "modalContent" }, p.content),
],
);
const modal = swel(
"div",
{
className: "modalOverlay",
on: {
click: () => close(),
},
},
modalContainer,
);
document.body.appendChild(modal);
return close;
};