maille
Version:
Component library for MithrilJS
55 lines (54 loc) • 2.19 kB
JavaScript
;
// 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;