maille
Version:
Component library for MithrilJS
54 lines (53 loc) • 2.25 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const mithril_1 = __importDefault(require("mithril")); // +standalone
class ThreeRowLayout {
view(vnode) {
const classes = new Set(["maille", "maille-three-row-layout"]);
// Build list of classes
if (vnode.attrs.className) {
vnode.attrs.className.split(" ").forEach(c => classes.add(c));
}
const className = [...classes].join(" ");
const children = [
this.buildHeader(vnode),
this.buildBody(vnode),
this.buildFooter(vnode),
];
return mithril_1.default("div", { className }, children);
}
buildHeader(vnode) {
if (!vnode.attrs.header) {
return null;
}
const header = vnode.attrs.header;
// Build header content
const headerAttrs = Object.assign({}, header.container && header.container.attrs ? header.container.attrs : {});
const headerContent = header.content ? header.content : [];
return mithril_1.default(".maille-three-row-layout-header-container", headerAttrs, headerContent);
}
buildBody(vnode) {
if (!vnode.attrs.body) {
return null;
}
const body = vnode.attrs.body;
// Build body content
const bodyAttrs = Object.assign({}, body.container && body.container.attrs ? body.container.attrs : {});
const bodyContent = body.content ? body.content : [];
return mithril_1.default(".maille-three-row-layout-body-container", bodyAttrs, bodyContent);
}
buildFooter(vnode) {
if (!vnode.attrs.footer) {
return null;
}
const footer = vnode.attrs.footer;
// Build footer content
const footerAttrs = Object.assign({}, footer.container && footer.container.attrs ? footer.container.attrs : {});
const footerContent = footer.content ? footer.content : [];
return mithril_1.default(".maille-three-row-layout-footer-container", footerAttrs, footerContent);
}
}
exports.default = ThreeRowLayout;