UNPKG

maille

Version:

Component library for MithrilJS

50 lines (49 loc) 2.19 kB
"use strict"; 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 const types_1 = require("../../types"); class Alert { view(vnode) { // Retrieve relevant attributes const { title, closeOptions, description, footer, rounded } = vnode.attrs; const alertType = vnode.attrs.type || types_1.AlertType.Default; // Build list of classes, combine with vnode const classes = new Set(["maille", "maille-alert"]); // If outlined, add the outline class if (rounded) { classes.add("rounded"); } // Add the alert type classes.add(alertType); // Add in className classes provided by vnode if (vnode.attrs.className) { vnode.attrs.className.split(" ").forEach(c => classes.add(c)); } // Build classname const className = [...classes].join(" "); // Build header elements const headerElements = [ mithril_1.default(".maille-alert-title", title), description ? mithril_1.default(".maille-alert-description", description) : null, ]; // Add close options if configured if (closeOptions) { const closeHandler = () => { if (closeOptions.fn) { closeOptions.fn(closeOptions.key); } }; const closeElement = closeOptions.elements || mithril_1.default.trust("×"); headerElements.push(mithril_1.default("span.maille-alert-close-container", { onclick: closeHandler }, closeElement)); } return mithril_1.default(".maille.maille-alert", Object.assign(Object.assign({}, vnode.attrs), { className }), [ mithril_1.default(".maille-alert-header", headerElements), mithril_1.default(".maille-alert-body", vnode.children), footer ? mithril_1.default(".maille-alert-footer", footer) : null, ]); } } exports.default = Alert;