A modern vue admin. It is based on Vue3, vite and TypeScript. It's fast!
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.
 
 
 
 
 

39 lines
879 B

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;
},
};
}