maille
Version:
Component library for MithrilJS
55 lines (54 loc) • 1.85 kB
JavaScript
;
// THIS FILE WAS AUTO-GENERATED FOR PACKAGING, DO NOT MODIFY
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"));
const types_1 = require("../../types");
class Switch {
constructor(vnode) {
this.on = false;
if (vnode) {
if ("on" in vnode.attrs) {
this.on = vnode.attrs.on;
}
}
}
view(vnode) {
const disabled = vnode.attrs.disabled;
const outlined = vnode.attrs.outlined;
const onclick = vnode.attrs.onclick || types_1.NoOpFn;
const classes = new Set(["maille", "maille-switch"]);
// Add classnames from the vnode if present
if (vnode.attrs.className) {
vnode.attrs.className.split(" ").forEach(c => classes.add(c));
}
// Add attribute controlled styling classes
if (outlined) {
classes.add("outlined");
}
if (disabled) {
classes.add("disabled");
}
// Add class to represent state of switch
if (this.on) {
classes.add("on");
}
const className = [...classes].join(" ");
// Create onclick handler
const wrappedOnClick = () => {
// Return early if button is disabled
if (disabled) {
return;
}
this.on = !this.on;
onclick(this.on);
};
return mithril_1.default("span", { className }, [
mithril_1.default(".maille-switch-bg", { onclick: wrappedOnClick }, mithril_1.default(".maille-switch-knob")),
vnode.children,
]);
}
}
exports.default = Switch;