{"version":3,"file":"form-dialog.vue2.mjs","sources":["../../../../../packages/components/form-dialog/src/form-dialog.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElFormDialog'\n});\n</script>\n<template>\n  <el-dialog\n    :model-value=\"modelValue\"\n    :title=\"title\"\n    append-to-body\n    :width=\"width\"\n    @update:model-value=\"emit('update:modelValue', $event)\"\n    @close=\"cancel\"\n  >\n    <slot />\n\n    <template #footer>\n      <el-button @click=\"cancel\">取消</el-button>\n      <el-button\n        :loading=\"loading\"\n        type=\"info\"\n        v-if=\"props.continue\"\n        @click=\"submitAndContinue\"\n      >\n        提交并继续\n      </el-button>\n      <el-button v-if=\"!hideConfirm\" :loading=\"loading\" type=\"primary\" @click=\"submit\">\n        提交\n      </el-button>\n    </template>\n  </el-dialog>\n</template>\n<script lang=\"ts\" setup>\nimport ElDialog from '@element-ultra/components/dialog'\nimport ElButton from '@element-ultra/components/button'\nimport { formDialogProps } from './form-dialog'\nimport { formInjectionKey } from '@element-ultra/tokens'\nimport { provide, shallowRef, watch } from 'vue'\n\n\n\nconst props = defineProps(formDialogProps)\nconst emit = defineEmits([\"update:modelValue\"])\n\nconst forms = new Set<any>()\nconst multipleForms = new Set<any>()\nconst addForm = (form: any) => {\n  forms.add(form)\n}\nconst deleteForm = (form: any) => {\n  forms.delete(form)\n}\n\nconst addMultipleForm = (form: any) => {\n  multipleForms.add(form)\n}\nconst deleteMultipleForm = (form: any) => {\n  multipleForms.delete(form)\n}\n\nprovide(formInjectionKey, {\n  addForm,\n  deleteForm,\n  addMultipleForm,\n  deleteMultipleForm\n})\n\nwatch(\n  () => props.modelValue,\n  visible => {\n    !visible && resetForm()\n  }\n)\n\nconst cancel = () => {\n  emit('update:modelValue', false)\n}\n\nconst validateForm = async () => {\n  for (const form of forms) {\n    await form.validate()\n  }\n  for (const multipleForm of multipleForms) {\n    await multipleForm.validate()\n  }\n}\n\nconst resetForm = async () => {\n  forms.forEach(form => {\n    form.resetFields()\n  })\n}\n\nconst loading = shallowRef(false)\n\n/** 提交 */\nconst submit = async () => {\n  await validateForm()\n\n  loading.value = true\n\n  if (!props.confirm) {\n    loading.value = false\n    return cancel()\n  }\n\n  const p = props.confirm()\n  // 异步操作\n  if (p instanceof Promise) {\n    await p\n      .then(result => {\n        result !== false && cancel()\n      })\n      .finally(() => {\n        loading.value = false\n      })\n  }\n  // 同步操作\n  else {\n    loading.value = false\n    p !== false && cancel()\n  }\n}\n\n/** 提交并继续 */\nconst submitAndContinue = async () => {\n  await validateForm()\n\n  loading.value = true\n\n  if (props.confirm) {\n    const p = props.confirm()\n    if (p instanceof Promise) {\n      await p.finally(() => {\n        loading.value = false\n      })\n    } else {\n      loading.value = false\n    }\n  }\n  resetForm()\n}\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":"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"}