tzcloud-best-ui
Version:
A super practical component library that developed by vue2.x and element-ui
49 lines (41 loc) • 1.22 kB
JavaScript
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