UNPKG

tzcloud-best-ui

Version:

A super practical component library that developed by vue2.x and element-ui

49 lines (41 loc) 1.22 kB
import Vue from 'vue' import DrawerVue from './drawer.vue' const DrawerConstructor = Vue.extend(DrawerVue) let instance = null const initData = function (component, defaults, options = {}) { options = Object.assign({}, defaults, options) options.mainComponent = component options.mainProps = options.props || {} delete options.props // unbind options props return options } // Open current instance or create one const Drawer = function (component, options) { if (instance) { Object.assign(instance.$data, initData(component, Drawer.defaults, options)) setTimeout(() => { instance.visible = true }) } else { instance = new DrawerConstructor({ el: document.createElement('div'), data: initData(component, Drawer.defaults, options) }) instance.$mount() document.body.appendChild(instance.$el) Vue.nextTick(() => { instance.visible = true }) } return instance } Drawer.defaults = {} Drawer.close = function () { if (instance) { instance.visible = false } } Drawer.setDefaults = function (defaults) { Drawer.defaults = Object.assign(Drawer.defaults, defaults) } export default Drawer