UNPKG

@prettyy/ui

Version:

vue2 UI

70 lines (58 loc) 1.93 kB
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 }