vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 19.8 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/form-dialog/src/index.ts"],"sourcesContent":["import { FormProvider, FragmentComponent } from \"@formily/vue\";\nimport { toJS } from \"@formily/reactive\";\nimport { observer } from \"@formily/reactive-vue\";\nimport { createForm, Form, IFormProps } from \"@formily/core\";\nimport { isNum, isStr, isBool, isFn, IMiddleware, applyMiddleware } from \"@formily/shared\";\nimport { ElDialog, ElButton } from \"element-plus\";\nimport type { ElDialog as ElDialogProps, ElButton as ElButtonProps } from \"element-plus\";\nimport { Component, VNode, defineComponent, Teleport, createApp, PropType, h, isVNode } from \"vue\";\nimport {\n isValidElement,\n resolveComponent,\n createPortalProvider,\n getPortalContext,\n loading\n} from \"../../__builtins__\";\nimport { stylePrefix } from \"../../__builtins__\";\n\ntype FormDialogContentProps = { form: Form };\n\ntype FormDialogContent = Component | ((props: FormDialogContentProps) => VNode);\n\ntype DialogTitle = string | number | Component | VNode | (() => VNode);\n\ntype IFormDialogProps = Omit<typeof ElDialogProps, \"title\"> & {\n title?: DialogTitle;\n footer?: null | Component | VNode | (() => VNode);\n cancelText?: string | Component | VNode | (() => VNode);\n cancelButtonProps?: typeof ElButtonProps;\n okText?: string | Component | VNode | (() => VNode);\n okButtonProps?: typeof ElButtonProps;\n beforeClose?: (cb: Function) => void;\n onOpen?: () => void;\n onOpend?: () => void;\n onClose?: () => void;\n onClosed?: () => void;\n onCancel?: () => void;\n onOK?: () => void;\n loadingText?: string;\n};\n\ntype EnvType = {\n root: HTMLElement | undefined;\n form: Form | null;\n promise: Promise<any> | null;\n app: any;\n instance: any;\n openMiddlewares: IMiddleware<IFormProps>[];\n confirmMiddlewares: IMiddleware<Form>[];\n cancelMiddlewares: IMiddleware<Form>[];\n};\n\nconst PORTAL_TARGET_NAME = \"FormDialogFooter\";\n\nconst isDialogTitle = (props: any): props is DialogTitle => {\n return (\n isNum(props) ||\n isStr(props) ||\n isBool(props) ||\n isValidElement(props) ||\n isFn(props) ||\n isVNode(props)\n );\n};\n\nconst getDialogProps = (props: any): IFormDialogProps => {\n if (isDialogTitle(props)) {\n return {\n title: props\n } as IFormDialogProps;\n } else {\n return props;\n }\n};\n\nexport interface IFormDialog {\n forOpen(middleware: IMiddleware<IFormProps>): IFormDialog;\n forConfirm(middleware: IMiddleware<IFormProps>): IFormDialog;\n forCancel(middleware: IMiddleware<IFormProps>): IFormDialog;\n open(props?: IFormProps): Promise<any>;\n close(): void;\n}\n\nexport interface IFormDialogComponentProps {\n content: FormDialogContent;\n resolve: () => any;\n reject: () => any;\n}\n\nexport function FormDialog(\n title: IFormDialogProps | DialogTitle,\n content: FormDialogContent\n): IFormDialog;\n\nexport function FormDialog(\n title: IFormDialogProps | DialogTitle,\n id: string | symbol,\n content: FormDialogContent\n): IFormDialog;\n\nexport function FormDialog(title: DialogTitle, id: string, content: FormDialogContent): IFormDialog;\n\nexport function FormDialog(\n title: IFormDialogProps | DialogTitle,\n id: string | symbol | FormDialogContent,\n content?: FormDialogContent\n): IFormDialog {\n if (isFn(id) || isValidElement(id)) {\n content = id as FormDialogContent;\n id = \"form-dialog\";\n }\n\n const prefixCls = `${stylePrefix}-form-dialog`;\n const env: EnvType = {\n root: document.createElement(\"div\"),\n form: null,\n promise: null,\n app: null,\n instance: null,\n openMiddlewares: [],\n confirmMiddlewares: [],\n cancelMiddlewares: []\n };\n\n document.body.appendChild(env.root as HTMLDivElement);\n\n const props = getDialogProps(title);\n const dialogProps = {\n ...props,\n onClosed: () => {\n props.onClosed?.();\n env.app?.unmount?.();\n env.app = null;\n env.instance = null;\n env.root?.parentNode?.removeChild(env.root);\n env.root = undefined;\n }\n };\n\n const component = observer(\n defineComponent({\n setup() {\n return () => h(FragmentComponent, {}, { default: () => resolveComponent(content) });\n }\n })\n );\n\n const render = (visible = true, resolve?: () => any, reject?: () => any) => {\n if (!env.instance) {\n const ComponentConstructor = defineComponent({\n props: { dialogProps: Object as PropType<typeof ElDialogProps> },\n data() {\n return {\n visible: false\n };\n },\n render() {\n const {\n onClose,\n onClosed,\n onOpen,\n onOpend,\n onOK,\n onCancel,\n title,\n footer,\n okText,\n cancelText,\n okButtonProps,\n cancelButtonProps,\n ...dialogProps\n } = this.dialogProps as any;\n\n return h(\n FormProvider,\n { form: env.form },\n {\n default: () =>\n h(\n ElDialog,\n {\n class: [`${prefixCls}`],\n ...dialogProps,\n modelValue: this.visible,\n \"onUpdate:modelValue\": (val) => {\n this.visible = val;\n },\n onClose: () => {\n onClose?.();\n },\n onClosed: () => {\n onClosed?.();\n },\n onOpen: () => {\n onOpen?.();\n },\n onOpened: () => {\n onOpend?.();\n }\n },\n {\n default: () => h(component, {}, {}),\n header: () => h(\"div\", {}, [resolveComponent(title)]),\n footer: () =>\n h(\n \"div\",\n {},\n {\n default: () => {\n const FooterPortalTarget = h(\n \"span\",\n {\n id: PORTAL_TARGET_NAME\n },\n {}\n );\n if (footer === null) {\n return [null, FooterPortalTarget];\n } else if (footer) {\n return [resolveComponent(footer), FooterPortalTarget];\n }\n\n return [\n h(\n ElButton,\n {\n ...cancelButtonProps,\n onClick: (e) => {\n onCancel?.(e);\n reject && reject();\n }\n },\n {\n default: () =>\n resolveComponent(\n cancelText || \"取消\"\n // t('el.popconfirm.cancelButtonText')\n )\n }\n ),\n h(\n ElButton,\n {\n type: \"primary\",\n ...okButtonProps,\n loading: env.form?.submitting,\n onClick: (e) => {\n onOK?.(e);\n resolve && resolve();\n }\n },\n {\n default: () =>\n resolveComponent(\n okText || \"确定\"\n // t('el.popconfirm.confirmButtonText')\n )\n }\n ),\n FooterPortalTarget\n ];\n }\n }\n )\n }\n )\n }\n );\n }\n });\n\n env.app = createApp(ComponentConstructor, {\n dialogProps,\n parent: getPortalContext(id as string | symbol)\n });\n env.instance = env.app.mount(env.root);\n }\n env.instance.visible = visible;\n };\n\n const formDialog = {\n forOpen: (middleware: IMiddleware<IFormProps>) => {\n if (isFn(middleware)) {\n env.openMiddlewares.push(middleware);\n }\n return formDialog;\n },\n forConfirm: (middleware: IMiddleware<Form>) => {\n if (isFn(middleware)) {\n env.confirmMiddlewares.push(middleware);\n }\n return formDialog;\n },\n forCancel: (middleware: IMiddleware<Form>) => {\n if (isFn(middleware)) {\n env.cancelMiddlewares.push(middleware);\n }\n return formDialog;\n },\n open: (props: IFormProps) => {\n if (env.promise) return env.promise;\n\n env.promise = new Promise(async (resolve, reject) => {\n try {\n props = await loading(dialogProps.loadingText, () =>\n applyMiddleware(props, env.openMiddlewares)\n );\n env.form = env.form || createForm(props);\n } catch (e) {\n reject(e);\n }\n\n render(\n true,\n () => {\n env.form\n ?.submit(async () => {\n await applyMiddleware(env.form, env.confirmMiddlewares);\n resolve(toJS(env.form?.values));\n if (dialogProps.beforeClose) {\n setTimeout(() => {\n dialogProps?.beforeClose?.(() => {\n formDialog.close();\n });\n });\n } else {\n formDialog.close();\n }\n })\n .catch(reject);\n },\n async () => {\n await loading(dialogProps.loadingText, () =>\n applyMiddleware(env.form, env.cancelMiddlewares)\n );\n\n if (dialogProps.beforeClose) {\n dialogProps.beforeClose(() => {\n formDialog.close();\n });\n } else {\n formDialog.close();\n }\n }\n );\n });\n return env.promise;\n },\n close: () => {\n if (!env.root) return;\n render(false);\n }\n };\n return formDialog as never;\n}\n\nconst FormDialogFooter = defineComponent({\n name: \"FFormDialogFooter\",\n setup(props, { slots }) {\n return () => {\n // 临时解决方案\n if (document.querySelector(`#${PORTAL_TARGET_NAME}`)) {\n return h(\n Teleport as any,\n {\n to: `#${PORTAL_TARGET_NAME}`\n },\n slots\n );\n } else {\n return null;\n }\n };\n }\n});\n\nFormDialog.Footer = FormDialogFooter;\nFormDialog.Portal = createPortalProvider(\"form-dialog\");\n\nexport default FormDialog;\n"],"names":["title","dialogProps","props","_a"],"mappings":"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"}