veui
Version:
Baidu Enterprise UI for Vue.js.
56 lines (52 loc) • 1.29 kB
JavaScript
import SimpleDialogManager from './simple-dialog'
import AlertBox from '../components/AlertBox'
import Vue from 'vue'
import { isFunction, noop, pick } from 'lodash'
export class AlertManager extends SimpleDialogManager {
createComponent (data) {
const manager = this
return new Vue({
data: {
open: false
},
mounted () {
this.open = true
},
render (h) {
return h(
AlertBox,
{
props: {
...pick(data, ['title', 'type', 'overlayClass', 'okLabel']),
open: this.open,
beforeClose: () => false
},
on: {
ok: data.ok,
afterclose: () => {
manager.removeComponent(this)
}
}
},
[h('template', { slot: 'default' }, data.content)]
)
}
})
}
_show (options) {
let ok = isFunction(options.ok) ? options.ok : noop
return new Promise((resolve) => {
let component = this.create({
...options,
ok: () => {
Promise.resolve(ok()).then(() => {
component.open = false
resolve()
})
}
})
})
}
}
let manager = new AlertManager()
export default manager