UNPKG

vasille

Version:

The same framework which is designed to build bulletproof frontends (core library).

57 lines (56 loc) 1.67 kB
import { Binding } from "./binding.js"; export function addClass(node, cl) { if (process.env.VASILLE_TARGET === "es5" && !node.element.classList) { node.element.className = [...node.element.className.split(" "), cl].filter(item => !!item).join(" "); } else { node.element.classList.add(cl); } } export function removeClass(node, cl) { if (process.env.VASILLE_TARGET === "es5" && !node.element.classList) { node.element.className = node.element.className .split(" ") .filter(name => name !== cl) .join(" "); } else { node.element.classList.remove(cl); } } export class StaticClassBinding extends Binding { current = false; constructor(node, name, value) { super(value); this.init((value) => { if (value !== this.current) { if (value) { addClass(node, name); } else { removeClass(node, name); } this.current = value; } }); } } export class DynamicalClassBinding extends Binding { current = ""; constructor(node, value) { super(value); this.init((value) => { /* istanbul ignore else */ if (this.current != value) { if (this.current.length) { removeClass(node, this.current); } /* istanbul ignore else */ if (value.length) { addClass(node, value); } this.current = value; } }); } }