vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 20.6 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/form-drawer/src/index.ts"],"sourcesContent":["import { FormProvider, Fragment, h } 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 { ElDrawer, ElButton } from \"element-plus\";\nimport type { ElDrawer as ElDrawerProps, ElButton as ElButtonProps } from \"element-plus\";\n\n// import { t } from 'element-plus/lib/locale'\nimport { Component, VNode, defineComponent, Teleport, createApp } from \"vue\";\nimport {\n isValidElement,\n resolveComponent,\n createPortalProvider,\n getPortalContext,\n loading,\n stylePrefix\n} from \"../../__builtins__\";\n\ntype FormDrawerContentProps = { form: Form };\n\ntype FormDrawerContent = Component | ((props: FormDrawerContentProps) => VNode);\n\ntype DrawerTitle = string | number | Component | VNode | (() => VNode);\n\ntype IFormDrawerProps = Omit<typeof ElDrawerProps, \"title\"> & {\n title?: DrawerTitle;\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\nconst PORTAL_TARGET_NAME = \"FormDrawerFooter\";\n\nconst isDrawerTitle = (props: any): props is DrawerTitle => {\n return isNum(props) || isStr(props) || isBool(props) || isValidElement(props);\n};\n\nconst getDrawerProps = (props: any): IFormDrawerProps => {\n if (isDrawerTitle(props)) {\n return {\n title: props\n } as IFormDrawerProps;\n } else {\n return props;\n }\n};\n\nexport interface IFormDrawer {\n forOpen(middleware: IMiddleware<IFormProps>): IFormDrawer;\n forConfirm(middleware: IMiddleware<IFormProps>): IFormDrawer;\n forCancel(middleware: IMiddleware<IFormProps>): IFormDrawer;\n open(props?: IFormProps): Promise<any>;\n close(): void;\n}\n\nexport interface IFormDrawerComponentProps {\n content: FormDrawerContent;\n resolve: () => any;\n reject: () => any;\n}\n\n// @ts-ignore\nexport function FormDrawer(\n title: IFormDrawerProps | DrawerTitle,\n content: FormDrawerContent\n): IFormDrawer;\n\nexport function FormDrawer(\n title: IFormDrawerProps | DrawerTitle,\n id: string | symbol,\n content: FormDrawerContent\n): IFormDrawer;\n\nexport function FormDrawer(title: DrawerTitle, id: string, content: FormDrawerContent): IFormDrawer;\n\nexport function FormDrawer(\n title: IFormDrawerProps | DrawerTitle,\n id: string | symbol | FormDrawerContent,\n content?: FormDrawerContent\n): {\n forOpen: (middleware: IMiddleware<IFormProps>) => {\n forOpen: (middleware: IMiddleware<IFormProps>) => any;\n forConfirm: (middleware: IMiddleware<Form>) => any;\n close: () => void;\n open: (props: IFormProps) => never;\n forCancel: (middleware: IMiddleware<Form>) => any;\n };\n forConfirm: (middleware: IMiddleware<Form>) => {\n forOpen: (middleware: IMiddleware<IFormProps>) => any;\n forConfirm: (middleware: IMiddleware<Form>) => any;\n close: () => void;\n open: (props: IFormProps) => never;\n forCancel: (middleware: IMiddleware<Form>) => any;\n };\n close: () => void;\n open: (props: IFormProps) => never;\n forCancel: (middleware: IMiddleware<Form>) => {\n forOpen: (middleware: IMiddleware<IFormProps>) => any;\n forConfirm: (middleware: IMiddleware<Form>) => any;\n close: () => void;\n open: (props: IFormProps) => never;\n forCancel: (middleware: IMiddleware<Form>) => any;\n };\n} {\n if (isFn(id) || isValidElement(id)) {\n content = id as FormDrawerContent;\n id = \"form-drawer\";\n }\n\n const prefixCls = `${stylePrefix}-form-drawer`;\n const env: any = {\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);\n\n const props = getDrawerProps(title);\n const drawerProps = {\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 () =>\n h(\n Fragment,\n {},\n {\n default: () =>\n resolveComponent(content, {\n form: env.form\n })\n }\n );\n }\n })\n );\n\n const render = (visible = true, resolve?: () => any, reject?: () => any) => {\n if (!env.instance) {\n const ComponentConstructor = defineComponent({\n props: [\"drawerProps\"],\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 ...drawerProps\n } = this.drawerProps;\n return h(\n FormProvider,\n {\n form: env.form\n },\n {\n default: () =>\n h(\n ElDrawer,\n {\n class: `${prefixCls}`,\n ...drawerProps,\n modelValue: this.visible,\n \"onUpdate:modelValue\": (val: any) => {\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: () => [\n h(\n \"div\",\n {\n class: [`${prefixCls}-body`]\n },\n [h(component, {}, {})] as any\n ),\n h(\n \"div\",\n {\n class: [`${prefixCls}-footer`]\n },\n {\n default: () => {\n const FooterPortalTarget = h(\n \"span\",\n {\n id: PORTAL_TARGET_NAME\n },\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: MouseEvent) => {\n onCancel?.(e);\n 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 onClick: (e: MouseEvent) => {\n onOK?.(e);\n 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 title: () => h(\"div\", {}, { default: () => resolveComponent(title) })\n }\n )\n }\n );\n }\n });\n env.app = createApp(ComponentConstructor, {\n drawerProps,\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 formDrawer = {\n forOpen: (middleware: IMiddleware<IFormProps>) => {\n if (isFn(middleware)) {\n env.openMiddlewares.push(middleware);\n }\n return formDrawer;\n },\n forConfirm: (middleware: IMiddleware<Form>) => {\n if (isFn(middleware)) {\n env.confirmMiddlewares.push(middleware);\n }\n return formDrawer;\n },\n forCancel: (middleware: IMiddleware<Form>) => {\n if (isFn(middleware)) {\n env.cancelMiddlewares.push(middleware);\n }\n return formDrawer;\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(drawerProps.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 (drawerProps.beforeClose) {\n setTimeout(() => {\n drawerProps?.beforeClose?.(() => {\n formDrawer.close();\n });\n });\n } else {\n formDrawer.close();\n }\n })\n .catch(reject);\n },\n async () => {\n await loading(drawerProps.loadingText, () =>\n applyMiddleware(env.form, env.cancelMiddlewares)\n );\n\n if (drawerProps.beforeClose) {\n drawerProps.beforeClose(() => {\n formDrawer.close();\n });\n } else {\n formDrawer.close();\n }\n }\n );\n });\n return env.promise;\n },\n close: () => {\n if (!env.root) return;\n render(false);\n }\n };\n\n return formDrawer as never;\n}\n\nconst FormDrawerFooter = defineComponent({\n name: \"FFormDrawerFooter\",\n setup(props, { slots }) {\n return () => {\n // 临时解决方案\n if (document.querySelector(`#${PORTAL_TARGET_NAME}`)) {\n return h(\n Teleport,\n {\n to: `#${PORTAL_TARGET_NAME}`\n },\n slots\n );\n } else {\n return null;\n }\n };\n }\n});\n\nFormDrawer.Footer = FormDrawerFooter;\nFormDrawer.Portal = createPortalProvider(\"form-drawer\");\n\nexport default FormDrawer;\n"],"names":["title","drawerProps","props"],"mappings":"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"}