55 lines
No EOL
1.4 KiB
JavaScript
55 lines
No EOL
1.4 KiB
JavaScript
import Vue from 'vue';
|
|
import Spin from './spin.vue';
|
|
|
|
Spin.newInstance = properties => {
|
|
const _props = properties || {};
|
|
|
|
const Instance = new Vue({
|
|
data: Object.assign({}, _props, {
|
|
|
|
}),
|
|
render (h) {
|
|
let vnode = '';
|
|
if (this.render) {
|
|
vnode = h(Spin, {
|
|
props: {
|
|
fix: true,
|
|
fullscreen: true
|
|
}
|
|
}, [this.render(h)]);
|
|
} else {
|
|
vnode = h(Spin, {
|
|
props: {
|
|
size: 'large',
|
|
fix: true,
|
|
fullscreen: true
|
|
}
|
|
});
|
|
}
|
|
return h('div', {
|
|
'class': 'ivu-spin-fullscreen ivu-spin-fullscreen-wrapper'
|
|
}, [vnode]);
|
|
}
|
|
});
|
|
|
|
const component = Instance.$mount();
|
|
document.body.appendChild(component.$el);
|
|
const spin = Instance.$children[0];
|
|
|
|
return {
|
|
show () {
|
|
spin.visible = true;
|
|
},
|
|
remove (cb) {
|
|
spin.visible = false;
|
|
setTimeout(function() {
|
|
spin.$parent.$destroy();
|
|
document.body.removeChild(document.getElementsByClassName('ivu-spin-fullscreen')[0]);
|
|
cb();
|
|
}, 500);
|
|
},
|
|
component: spin
|
|
};
|
|
};
|
|
|
|
export default Spin; |