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
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;
|
|
};
|