UNPKG

maille

Version:

Component library for MithrilJS

55 lines (54 loc) 1.85 kB
"use strict"; // 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;