UNPKG

maille

Version:

Component library for MithrilJS

55 lines (54 loc) 2.19 kB
"use strict"; // THIS FILE WAS AUTO-GENERATED FOR PACKAGING, DO NOT MODIFY Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../types"); class ToolTip { view(vnode) { const classes = new Set(["maille", "maille-tool-tip"]); const wrapperClasses = new Set(); const activation = vnode.attrs.activation || types_1.ToolTipActivation.Hover; const position = vnode.attrs.position || types_1.ToolTipPosition.Bottom; const { rounded } = vnode.attrs; // Add class names if provided if (vnode.attrs.className) { vnode.attrs.className.split(" ").forEach(c => classes.add(c)); } // If outlined, add the outline class if (rounded) { classes.add("rounded"); } // Add activation method class if (activation) { wrapperClasses.add(activation); } // Add position class if (position) { wrapperClasses.add(position); } // Build the final className for the tooltip itself and the wrapper const className = [...classes].join(" "); const wrapperClassName = [...wrapperClasses].join(" "); const { title, body, closeOptions } = vnode.attrs; const titleElements = [ m(".maille-tooltip-title", title), ]; // Add close options if configured if (closeOptions) { const closeHandler = () => { if (closeOptions.fn) { closeOptions.fn(closeOptions.key); } }; const closeElement = closeOptions.elements || m.trust("×"); titleElements.push(m("span.maille-tooltip-close-container", { onclick: closeHandler }, closeElement)); } return m(".maille.maille-tooltip", { className: wrapperClassName }, [ vnode.children, m(".maille.maille-tooltip-inner", Object.assign(Object.assign({}, vnode.attrs), { className }), [ m(".maille-tooltip-title", titleElements), m(".maille-tooltip-body", body), ]), ]); } } exports.default = ToolTip;