invalid w
2023-08-25 7b26c5994cad301ec2b9ee8810b42e97ca10340e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { createVNode, VNode, defineComponent, h, render, reactive } from 'vue';
import { PromptProps, genFormSchemas } from './state';
import Dialog from './dialog.vue';
 
export function createPrompt(props: PromptProps) {
  let vm: Nullable<VNode> = null;
  const data = reactive({
    ...props,
    addFormSchemas: genFormSchemas({
      label: props.label,
      required: props.required,
      inputType: props.inputType,
      defaultValue: props.defaultValue,
    }),
  });
  const DialogWrap = defineComponent({
    render() {
      return h(Dialog, { ...data } as any);
    },
  });
 
  vm = createVNode(DialogWrap);
 
  render(vm, document.createElement('div'));
 
  function close() {
    if (vm?.el && vm.el.parentNode) {
      vm.el.parentNode.removeChild(vm.el);
    }
  }
 
  return {
    vm,
    close,
    get $el() {
      return vm?.el as HTMLElement;
    },
  };
}