You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.5 KiB
71 lines
2.5 KiB
import Vue from 'vue';
|
|
import { VxeUI, renderEmptyElement } from '@vxe-ui/core';
|
|
let dynamicContainerElem;
|
|
export const DynamicApp = Vue.extend({
|
|
data() {
|
|
const modals = [];
|
|
const drawers = [];
|
|
return {
|
|
modals,
|
|
drawers,
|
|
globalLoading: null,
|
|
globalWatermark: null
|
|
};
|
|
},
|
|
methods: {
|
|
renderVN(h) {
|
|
const VxeUIModalComponent = VxeUI.getComponent('vxe-modal');
|
|
const VxeUIDrawerComponent = VxeUI.getComponent('vxe-drawer');
|
|
const VxeUILoadingComponent = VxeUI.getComponent('vxe-loading');
|
|
const VxeUIWatermarkComponent = VxeUI.getComponent('vxe-watermark');
|
|
const { modals, drawers, globalLoading, globalWatermark } = this;
|
|
return h('div', {}, [
|
|
modals.length
|
|
? h('div', {
|
|
key: 1,
|
|
class: 'vxe-dynamics--modal'
|
|
}, modals.map((item) => h(VxeUIModalComponent, {
|
|
key: item.key,
|
|
props: item.props,
|
|
on: item.on
|
|
})))
|
|
: renderEmptyElement(this),
|
|
drawers.length
|
|
? h('div', {
|
|
key: 2,
|
|
class: 'vxe-dynamics--drawer'
|
|
}, drawers.map((item) => h(VxeUIDrawerComponent, {
|
|
key: item.key,
|
|
props: item.props,
|
|
on: item.on
|
|
})))
|
|
: renderEmptyElement(this),
|
|
globalWatermark
|
|
? h(VxeUILoadingComponent, {
|
|
key: 'gw',
|
|
props: globalWatermark
|
|
})
|
|
: renderEmptyElement(this),
|
|
globalLoading
|
|
? h(VxeUIWatermarkComponent, {
|
|
key: 'gl',
|
|
props: globalLoading
|
|
})
|
|
: renderEmptyElement(this)
|
|
]);
|
|
}
|
|
},
|
|
render(h) {
|
|
return this.renderVN(h);
|
|
}
|
|
});
|
|
export const dynamicApp = DynamicApp;
|
|
export const dynamicStore = new DynamicApp();
|
|
export function checkDynamic() {
|
|
if (!dynamicContainerElem) {
|
|
dynamicContainerElem = document.createElement('div');
|
|
dynamicContainerElem.className = 'vxe-dynamics';
|
|
document.body.appendChild(dynamicContainerElem);
|
|
dynamicStore.$mount(dynamicContainerElem);
|
|
}
|
|
}
|
|
|