UNPKG

@zyrab/domo

Version:

Minimalist DOM builder and chaining-friendly micro-framework with router support.

43 lines (37 loc) 1.13 kB
import PropertiesServer from "./properties.server.js"; /** * @class ClassesServer * @extends PropertiesServer */ class ClassesServer extends PropertiesServer { /** * Normalizes various inputs into a clean array of class names. * @private */ _parseClassList(input) { return Array.isArray(input) ? input.filter(Boolean) : String(input).split(" ").filter(Boolean); } cls(classes) { if (!classes) return this; const clsList = this._parseClassList(classes); this.element._cls.push(...clsList); return this; } rmvCls(classes) { if (classes) { const clsList = this._parseClassList(classes); this.element._cls = this.element._cls.filter((c) => !clsList.includes(c)); } return this; } tgglCls(className, force) { const active = typeof force === "boolean" ? force : !this.element._cls.includes(className); if (active) { if (!this.element._cls.includes(className)) this.element._cls.push(className); } else { this.element._cls = this.element._cls.filter((c) => c !== className); } return this; } } export default ClassesServer;