maille
Version:
Component library for MithrilJS
58 lines (57 loc) • 2.46 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
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 = [
mithril_1.default(".maille-tooltip-title", title),
];
// Add close options if configured
if (closeOptions) {
const closeHandler = () => {
if (closeOptions.fn) {
closeOptions.fn(closeOptions.key);
}
};
const closeElement = closeOptions.elements || mithril_1.default.trust("×");
titleElements.push(mithril_1.default("span.maille-tooltip-close-container", { onclick: closeHandler }, closeElement));
}
return mithril_1.default(".maille.maille-tooltip", { className: wrapperClassName }, [
vnode.children,
mithril_1.default(".maille.maille-tooltip-inner", Object.assign(Object.assign({}, vnode.attrs), { className }), [
mithril_1.default(".maille-tooltip-title", titleElements),
mithril_1.default(".maille-tooltip-body", body),
]),
]);
}
}
exports.default = ToolTip;