@prettyy/ui
Version:
vue2 UI
70 lines (58 loc) • 1.93 kB
JavaScript
import Vue from "vue"
import MsgBox from "./main.vue"
import merge from "../../../utils/merge.js"
import { t } from '../../../locale'
import { isVNode } from "../../../utils/vdom"
const MessageBoxConstructor = Vue.extend(MsgBox)
/**
* @param {Object} options 选项 传递的组件选项对象,和 MessageBoxConstructor 组件类中的选项对象合并规则:1:options.data 中新增属性,原来的属性不会受影响。2:options定义了与 组件类相同的属性名时,以 options.data 中的为准,会覆盖组件本身的属性值。
* @return
*/
const MessageBox = options => {
if (!options) {
options = {
message: "",
}
} else if (typeof options !== "object") {
options = { message: options, }
}
if (!options.title) options.title = t('vl.messagebox.title')
const instance = new MessageBoxConstructor({ data: options }).$mount()
if (isVNode(instance.message)) {
instance.$slots.default = [instance.message]
instance.message = null
} else {
delete instance.$slots.default
}
document.body.appendChild(instance.$el)
return instance.showConfirm()
}
MessageBox.alert = function (message, title, options) {
if (typeof title === "object") {
options = title
title = t('vl.messagebox.title')
} else if (title === undefined) {
title = t('vl.messagebox.title')
}
return MessageBox(merge({ title, message, alert: true }, options))
}
MessageBox.confirm = function (message, title, options) {
if (typeof title === "object") {
options = title
title = t('vl.messagebox.title')
} else if (title === undefined) {
title = t('vl.messagebox.title')
}
return MessageBox(
merge(
{
title: title,
message: message,
showCancelButton: true,
},
options
)
)
}
export default MessageBox
export { MessageBox }