UNPKG

maille

Version:

Component library for MithrilJS

52 lines (51 loc) 2.13 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 Tag { view(vnode) { const { closeOptions, text, size } = vnode.attrs; const tagType = vnode.attrs.type || types_1.TagType.Default; const tagSize = vnode.attrs.size || types_1.Size.Medium; const classes = new Set(["maille", "maille-tag"]); // Add class names if provided by the user if (vnode.attrs.className) { vnode.attrs.className.split(" ").forEach(c => classes.add(c)); } // Add additional styling classes classes.add(tagType); classes.add(`size-${tagSize}`); if (vnode.attrs.outlined) { classes.add("outlined"); } if (vnode.attrs.rounded) { classes.add("rounded"); } // Build the className const className = [...classes].join(" "); // Build children let children = [mithril_1.default("span", vnode.attrs.text)]; // Use passed in children if available if (vnode.children && "length" in vnode.children && vnode.children.length > 0) { children = vnode.children; } // Add removal times button on the right if close options are provided if (closeOptions && closeOptions.fn) { const closeHandler = () => { if (closeOptions.fn) { closeOptions.fn(closeOptions.key); } }; children.push(mithril_1.default("a", { onclick: closeHandler }, closeOptions.elements || [mithril_1.default("span", { style: { cursor: "pointer" } }, mithril_1.default.trust(" ×"))])); } const attrs = { style: vnode.attrs.style, className, }; return mithril_1.default("span.maille.maille-tag", attrs, children); } } exports.default = Tag;