| | |
| | | import { VNode, defineComponent, createVNode, render, reactive, h } from 'vue'; |
| | | import { createVNode, defineComponent, h, reactive, render, VNode } from 'vue'; |
| | | import type { LoadingProps } from './typing'; |
| | | |
| | | import Loading from './Loading.vue'; |
| | |
| | | |
| | | vm = createVNode(LoadingWrap); |
| | | |
| | | let container: Nullable<HTMLElement> = null; |
| | | if (wait) { |
| | | // TODO fix https://github.com/anncwb/vue-vben-admin/issues/438 |
| | | setTimeout(() => { |
| | | render(vm, document.createElement('div')); |
| | | render(vm, (container = document.createElement('div'))); |
| | | }, 0); |
| | | } else { |
| | | render(vm, document.createElement('div')); |
| | | render(vm, (container = document.createElement('div'))); |
| | | } |
| | | |
| | | function close() { |
| | |
| | | target.appendChild(vm.el as HTMLElement); |
| | | } |
| | | |
| | | function destroy() { |
| | | container && render(null, container); |
| | | container = vm = null; |
| | | } |
| | | |
| | | if (target) { |
| | | open(target); |
| | | } |
| | |
| | | vm, |
| | | close, |
| | | open, |
| | | destroy, |
| | | setTip: (tip: string) => { |
| | | data.tip = tip; |
| | | }, |