Files

62 lines
1.4 KiB
TypeScript

import m, { ClosureComponent, Component } from "mithril";
import menu from "./menu.ts";
import drawerComponent from "./drawer-component.ts";
import userMenu from "./user-menu.ts";
import adminMenu from "./admin-menu.ts";
import * as overlay from "./overlay.ts";
import { version as VERSION } from "../package.json";
import datalist from "./datalist.ts";
import { LOGO_SVG } from "../build/assets.ts";
const adminPages = [
"presets",
"provisions",
"virtualParameters",
"files",
"config",
"users",
"permissions",
];
const component: ClosureComponent = (): Component => {
return {
view: (vnode) => {
let sideMenu, group;
if (adminPages.includes(vnode.attrs["page"])) {
group = "admin";
const attrs = {};
attrs["page"] = vnode.attrs["page"];
sideMenu = m(adminMenu, attrs);
}
const attrs = {};
attrs["page"] = group || vnode.attrs["page"];
return [
m("#header", [
m(
"div.logo",
m("img", { src: LOGO_SVG }),
m("span.version", "v" + VERSION),
),
m(userMenu),
m(menu, attrs),
m(drawerComponent),
]),
m(
"#content-wrapper",
sideMenu,
m("#content", { class: `page-${vnode.attrs["page"]}` }, [
vnode.children,
]),
),
overlay.render(),
m(datalist),
];
},
};
};
export default component;