Files
tekelanew_acs/acs/nladmin-ui/node_modules/vxe-pc-ui/es/dynamics/index.js
2024-12-05 09:33:18 +08:00

68 lines
2.2 KiB
JavaScript

import Vue from 'vue';
import { 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 { modals, drawers, globalLoading, globalWatermark } = this;
return h('div', {}, [
modals.length
? h('div', {
key: 1,
class: 'vxe-dynamics--modal'
}, modals.map((item) => h('vxe-modal', {
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('vxe-drawer', {
key: item.key,
props: item.props,
on: item.on
})))
: renderEmptyElement(this),
globalWatermark
? h('vxe-watermark', {
key: 'gw',
props: globalWatermark
})
: renderEmptyElement(this),
globalLoading
? h('vxe-loading', {
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);
}
}