{"version":3,"file":"use-form-dialog.mjs","sources":["../../../../../packages/hooks/dialog/use-form-dialog.tsx"],"sourcesContent":["import type { DialogOptions } from './use-dialog'\nimport type { FormProps } from '@el-plus/components/form'\nimport EpForm from '@el-plus/components/form'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { useDialog } from './use-dialog'\nimport { nextTick, reactive, ref, toRaw } from 'vue'\nconst bem = createNameSpace('form-dialog')\n\ntype Options = {\n  title?: string\n  width?: string\n  dialogProps?: DialogOptions\n  formData?: FormProps['model']\n  onBeforeConfirm?: (\n    formData: FormProps['model'],\n    resolve: (value: FormProps['model']) => void,\n  ) => Promise<void>\n  onBeforeCancel?: (\n    formData: FormProps['model'],\n    resolve: (value: string) => void,\n  ) => Promise<void>\n} & FormProps\nexport const useFormDialog = (options: Options = {}) => {\n  const {\n    dialogProps,\n    title,\n    width = '80%',\n    onBeforeConfirm,\n    onBeforeCancel,\n    ...formProps\n  } = options\n  const formRef = ref()\n  const isUseComFormData = !formProps.formData\n  let formData\n  const Dialog = useDialog({\n    class: bem.b(),\n    width,\n    title,\n    render: () => {\n      formData = isUseComFormData ? reactive({}) : formProps.formData // eslint-disable-line\n      return (\n        <EpForm\n          ref={formRef}\n          v-model={formData}\n          {...{\n            col: 1,\n            'label-width': 'auto',\n            ...formProps,\n          }}\n        />\n      )\n    },\n    onConfirm: async (resolve) => {\n      await formRef.value.validate()\n      if (onBeforeConfirm) {\n        await onBeforeConfirm(formData, resolve)\n      }\n      return resolve(formData)\n    },\n    onCancel: async (resolve) => {\n      if (onBeforeCancel) {\n        await onBeforeCancel(formData, resolve)\n      }\n      resolve('cancel')\n    },\n    ...dialogProps,\n  })\n  const open = Dialog.open\n  Dialog.open = async (...args) => {\n    // 清除校验(fix: 不销毁且外面传递formData时, 再次打开校验不清除)\n    if (!dialogProps?.destroyOnClose) {\n      setTimeout(() => {\n        formRef.value?.clearValidate()\n      }, 0)\n    }\n    const res = await open(...args)\n    return res\n  }\n  return Dialog\n}\n"],"names":["bem","createNameSpace","useFormDialog","options","dialogProps","title","width","onBeforeConfirm","onBeforeCancel","formProps","formRef","ref","isUseComFormData","formData","Dialog","useDialog","class","b","render","reactive","_createVNode","EpForm","_mergeProps","$event","col","onConfirm","resolve","value","validate","onCancel","open","args","destroyOnClose","setTimeout","clearValidate","res"],"mappings":";;;;;AAMA,MAAMA,GAAAA,GAAMC,gBAAgB,aAAa,CAAA;AAgBlC,MAAMC,aAAAA,GAAgBA,CAACC,OAAAA,GAAmB,EAAC,KAAM;AACtD,EAAA,MAAM;AAAA,IACJC,WAAAA;AAAAA,IACAC,KAAAA;AAAAA,IACAC,KAAAA,GAAQ,KAAA;AAAA,IACRC,eAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACA,GAAGC;AAAAA,GACL,GAAIN,OAAAA;AACJ,EAAA,MAAMO,UAAUC,GAAAA,EAAI;AACpB,EAAA,MAAMC,gBAAAA,GAAmB,CAACH,SAAAA,CAAUI,QAAAA;AACpC,EAAA,IAAIA,QAAAA;AACJ,EAAA,MAAMC,SAASC,SAAAA,CAAU;AAAA,IACvBC,KAAAA,EAAOhB,IAAIiB,CAAAA,EAAE;AAAA,IACbX,KAAAA;AAAAA,IACAD,KAAAA;AAAAA,IACAa,QAAQA,MAAM;AACZL,MAAAA,QAAAA,GAAWD,gBAAAA,GAAmBO,QAAAA,CAAS,EAAE,IAAIV,SAAAA,CAAUI,QAAAA;AACvD,MAAA,OAAAO,WAAAA,CAAAC,QAAAC,UAAAA,CAAA;AAAA,QAAA,KAAA,EAESZ,OAAAA;AAAAA,QAAO,YAAA,EACHG,QAAAA;AAAAA,QAAQ,qBAAA,EAAAU,YAARV,QAAAA,GAAQU;AAAAA,OAAA,EAAA;AAAA,QAEfC,GAAAA,EAAK,CAAA;AAAA,QACL,aAAA,EAAe,MAAA;AAAA,QACf,GAAGf;AAAAA,OAAS,GAAA,IAAA,CAAA;AAAA,IAIpB,CAAA;AAAA,IACAgB,SAAAA,EAAW,OAAOC,OAAAA,KAAY;AAC5B,MAAA,MAAMhB,OAAAA,CAAQiB,MAAMC,QAAAA,EAAS;AAC7B,MAAA,IAAIrB,eAAAA,EAAiB;AACnB,QAAA,MAAMA,eAAAA,CAAgBM,UAAUa,OAAO,CAAA;AAAA,MACzC;AACA,MAAA,OAAOA,QAAQb,QAAQ,CAAA;AAAA,IACzB,CAAA;AAAA,IACAgB,QAAAA,EAAU,OAAOH,OAAAA,KAAY;AAC3B,MAAA,IAAIlB,cAAAA,EAAgB;AAClB,QAAA,MAAMA,cAAAA,CAAeK,UAAUa,OAAO,CAAA;AAAA,MACxC;AACAA,MAAAA,OAAAA,CAAQ,QAAQ,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,GAAGtB;AAAAA,GACJ,CAAA;AACD,EAAA,MAAM0B,OAAOhB,MAAAA,CAAOgB,IAAAA;AACpBhB,EAAAA,MAAAA,CAAOgB,IAAAA,GAAO,UAAUC,IAAAA,KAAS;AAE/B,IAAA,IAAI,CAAC3B,aAAa4B,cAAAA,EAAgB;AAChCC,MAAAA,UAAAA,CAAW,MAAM;AACfvB,QAAAA,OAAAA,CAAQiB,OAAOO,aAAAA,EAAc;AAAA,MAC/B,GAAG,CAAC,CAAA;AAAA,IACN;AACA,IAAA,MAAMC,GAAAA,GAAM,MAAML,IAAAA,CAAK,GAAGC,IAAI,CAAA;AAC9B,IAAA,OAAOI,GAAAA;AAAAA,EACT,CAAA;AACA,EAAA,OAAOrB,MAAAA;AACT;;;;"}