waibu-bootstrap
Version:
Bootstrap suport for Waibu Framework
28 lines (26 loc) • 1.5 kB
JavaScript
async function navDropdownDarkmode () {
return class NavDropdownDarkmode extends this.app.baseClass.MpaWidget {
build = async () => {
const { titleize, isSet } = this.app.lib.aneka
const { set, omit } = this.app.lib._
const cfgWmpa = this.app.waibuMpa.config
this.params.noTag = true
if (isSet(this.app.waibuMpa.config.darkMode.set)) {
this.params.html = ''
return
}
const name = this.component.req.darkMode ? 'dark' : 'bright'
const content = this.component.req.iconset ? await this.component.buildTag({ tag: 'icon', attr: { name } }) : this.component.req.t(titleize(name))
const attr = omit(this.params.attr, ['text'])
attr.dropdown = true
attr.content = content
if (this.params.attr.text) attr.text = this.params.attr.text
const html = [
await this.component.buildTag({ tag: 'dropdownItem', attr: { href: this.component.buildUrl({ params: set({}, cfgWmpa.darkMode.qsKey, 'false') }), active: !this.component.req.darkMode }, html: this.component.req.t('brightMode') }),
await this.component.buildTag({ tag: 'dropdownItem', attr: { href: this.component.buildUrl({ params: set({}, cfgWmpa.darkMode.qsKey, 'true') }), active: this.component.req.darkMode }, html: this.component.req.t('darkMode') })
].join('\n')
this.params.html = await this.component.buildTag({ tag: 'navItem', attr, html })
}
}
}
export default navDropdownDarkmode