UNPKG

@minix-iot/ui

Version:

基于Vue的移动端轻量级UI组件库

51 lines (42 loc) 1.08 kB
export class Namespace { static ROOT = 'mx'; static Create(name) { return new Namespace(name); } constructor(name) { this._name = name; } get name() { return `${Namespace.ROOT}-${this._name}`; } // 衍生名称空间 // css 子/组合类名 derive(name, mods) { if (name && typeof name !== 'string') { mods = name; name = ''; } name = name ? this.sub(name) : this.name; return `${name}${this.mod(name, mods)}`; } // 子名称空间 // css 子类名 sub(name) { const names = Array.isArray(name) ? name : [name]; return names.reduce((ret, item) => `${ret}-${item}`, names.length ? this.name : ''); } // 名称空间模式 // css 组合类名 mod(name, mods) { if (!mods) { return ''; } if (typeof mods === 'string') { return ` ${name}--${mods}`; } if (Array.isArray(mods)) { return mods.reduce((ret, item) => ret + this.mod(name, item), ''); } return Object.keys(mods).reduce((ret, key) => ret + (mods[key] ? this.mod(name, key) : ''), ''); } }