55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import Dialog from './Dialog'
|
|
import i18n from '../i18n'
|
|
import store from '@renderer/store'
|
|
import Vue from 'vue'
|
|
|
|
const defaultOptions = {
|
|
message: '',
|
|
showCancel: false,
|
|
cancelButtonText: '',
|
|
confirmButtonText: '',
|
|
}
|
|
|
|
const dialog = {
|
|
install(Vue, options) {
|
|
const DialogConstructor = Vue.extend(Dialog)
|
|
|
|
const dialog = function Dialog(options) {
|
|
const { message, showCancel, cancelButtonText, confirmButtonText } =
|
|
Object.assign({}, defaultOptions, typeof options == 'string' ? { message: options } : options || {})
|
|
return new Promise((resolve, reject) => {
|
|
let instance = new DialogConstructor({ i18n, store }).$mount(document.createElement('div'))
|
|
|
|
// 属性设置
|
|
instance.visible = true
|
|
instance.message = message
|
|
instance.showCancel = showCancel
|
|
instance.cancelButtonText = cancelButtonText
|
|
instance.confirmButtonText = confirmButtonText
|
|
|
|
// 挂载
|
|
document.getElementById('container').appendChild(instance.$el)
|
|
|
|
instance.handleCancel = () => {
|
|
instance.visible = false
|
|
resolve(false)
|
|
}
|
|
|
|
instance.handleComfirm = () => {
|
|
instance.visible = false
|
|
resolve(true)
|
|
}
|
|
})
|
|
}
|
|
dialog.confirm = options => dialog(
|
|
typeof options == 'string'
|
|
? { message: options, showCancel: true }
|
|
: { ...options, showCancel: true },
|
|
)
|
|
|
|
Vue.prototype.$dialog = dialog
|
|
},
|
|
}
|
|
|
|
Vue.use(dialog)
|