{"version":3,"file":"Form.mjs","sources":["../../../../../../packages/components/form/src/Form.tsx"],"sourcesContent":["import type { Options } from 'scroll-into-view-if-needed';\nimport type {\n  FieldExpose,\n  FormExpose,\n  InternalNamePath,\n  NamePath,\n  RuleError,\n  ValidateErrorEntity,\n  ValidateOptions,\n} from './interface';\nimport { classNames, devWarning, initDefaultProps, toArray } from '@antdv/utils';\nimport { isEqual } from 'lodash-es';\nimport scrollIntoView from 'scroll-into-view-if-needed';\n\nimport { computed, defineComponent, ref, watch } from 'vue';\nimport { useInjectGlobalForm, useProviderDisabled, useProviderSize } from '../../config-provider';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport useStyle from '../style';\nimport { useProvideForm } from './context';\nimport FormItem from './FormItem';\nimport { formProps } from './props';\nimport useForm from './useForm';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport { defaultValidateMessages } from './utils/messages';\nimport { cloneByNamePathList, containsNamePath, getNamePath } from './utils/valueUtil';\n\nfunction isEqualName(name1: NamePath, name2: NamePath) {\n  return isEqual(toArray(name1), toArray(name2));\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AForm',\n  inheritAttrs: false,\n  props: initDefaultProps(formProps(), {\n    layout: 'horizontal',\n    hideRequiredMark: false,\n    colon: true,\n  }),\n  Item: FormItem,\n  useForm,\n  // emits: ['finishFailed', 'submit', 'finish', 'validate'],\n  setup(props, { emit, slots, expose, attrs }) {\n    const {\n      prefixCls,\n      direction,\n      form: contextForm,\n      size,\n      disabled,\n    } = useConfigInject('form', props);\n    const requiredMark = computed(() => props.requiredMark === '' || props.requiredMark);\n    const mergedRequiredMark = computed(() => {\n      if (requiredMark.value !== undefined)\n        return requiredMark.value;\n\n      if (contextForm && contextForm.value?.requiredMark !== undefined)\n        return contextForm.value.requiredMark;\n\n      if (props.hideRequiredMark)\n        return false;\n\n      return true;\n    });\n    useProviderSize(size);\n    useProviderDisabled(disabled);\n    const mergedColon = computed(() => props.colon ?? contextForm.value?.colon);\n    const { validateMessages: globalValidateMessages } = useInjectGlobalForm();\n    const validateMessages = computed(() => {\n      return {\n        ...defaultValidateMessages,\n        ...globalValidateMessages.value,\n        ...props.validateMessages,\n      };\n    });\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const formClassName = computed(() =>\n      classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-${props.layout}`]: true,\n          [`${prefixCls.value}-hide-required-mark`]: mergedRequiredMark.value === false,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-${size.value}`]: size.value,\n        },\n        hashId.value,\n      ),\n    );\n    const lastValidatePromise = ref();\n    const fields: Record<string, FieldExpose> = {};\n    const addField = (eventKey: string, field: FieldExpose) => {\n      fields[eventKey] = field;\n    };\n    const removeField = (eventKey: string) => {\n      delete fields[eventKey];\n    };\n\n    const getFieldsByNameList = (nameList: NamePath | NamePath[]) => {\n      const provideNameList = !!nameList;\n      const namePathList = provideNameList ? toArray(nameList).map(getNamePath) : [];\n      if (!provideNameList) {\n        return Object.values(fields);\n      } else {\n        return Object.values(fields).filter(\n          field =>\n            namePathList.findIndex(namePath => isEqualName(namePath, field.fieldName.value)) > -1,\n        );\n      }\n    };\n    const resetFields = (name?: NamePath | NamePath[]) => {\n      if (!props.model) {\n        devWarning(false, 'Form', 'model is required for resetFields to work.');\n        return;\n      }\n      getFieldsByNameList(name).forEach((field) => {\n        field.resetField();\n      });\n    };\n    const clearValidate = (name?: NamePath | NamePath[]) => {\n      getFieldsByNameList(name).forEach((field) => {\n        field.clearValidate();\n      });\n    };\n\n    const scrollToField = (name?: NamePath, options = {}) => {\n      const fields = getFieldsByNameList(name ? [name] : undefined);\n      if (fields.length) {\n        const fieldId = fields[0].fieldId.value;\n        const node = fieldId ? document.getElementById(fieldId) : null;\n\n        if (node) {\n          scrollIntoView(node, {\n            scrollMode: 'if-needed',\n            block: 'nearest',\n            ...options,\n          });\n        }\n      }\n    };\n\n    const handleFinishFailed = (errorInfo: ValidateErrorEntity) => {\n      const { scrollToFirstError } = props;\n      emit('finishFailed', errorInfo);\n      if (scrollToFirstError && errorInfo.errorFields.length) {\n        let scrollToFieldOptions: Options = {};\n        if (typeof scrollToFirstError === 'object')\n          scrollToFieldOptions = scrollToFirstError;\n\n        scrollToField(errorInfo.errorFields[0].name, scrollToFieldOptions);\n      }\n    };\n\n    const getFieldsValue = (nameList: InternalNamePath[] | true = true) => {\n      if (nameList === true) {\n        const allNameList = [];\n        Object.values(fields).forEach(({ namePath }) => {\n          allNameList.push(namePath.value);\n        });\n        return cloneByNamePathList(props.model, allNameList);\n      } else {\n        return cloneByNamePathList(props.model, nameList);\n      }\n    };\n    const validateFields = (nameList?: NamePath[], options?: ValidateOptions) => {\n      devWarning(\n        !(nameList instanceof Function),\n        'Form',\n        'validateFields/validateField/validate not support callback, please use promise instead',\n      );\n      if (!props.model) {\n        devWarning(false, 'Form', 'model is required for validateFields to work.');\n        return Promise.reject('Form `model` is required for validateFields to work.');\n      }\n      const provideNameList = !!nameList;\n      const namePathList: InternalNamePath[] = provideNameList\n        ? toArray(nameList).map(getNamePath)\n        : [];\n\n      // Collect result in promise list\n      const promiseList: Array<Promise<{\n        name: InternalNamePath\n        errors: string[]\n      }>> = [];\n\n      Object.values(fields).forEach((field) => {\n        // Add field if not provide `nameList`\n        if (!provideNameList)\n          namePathList.push(field.namePath.value);\n\n        // Skip if without rule\n        if (!field.rules?.value.length)\n          return;\n\n        const fieldNamePath = field.namePath.value;\n\n        // Add field validate rule in to promise list\n        if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {\n          const promise = field.validateRules({\n            validateMessages: validateMessages.value,\n            ...options,\n          });\n\n          // Wrap promise with field\n          promiseList.push(\n            promise\n              .then<any, RuleError>(() => ({ name: fieldNamePath, errors: [], warnings: [] }))\n              .catch((ruleErrors: RuleError[]) => {\n                const mergedErrors: string[] = [];\n                const mergedWarnings: string[] = [];\n\n                ruleErrors.forEach(({ rule: { warningOnly }, errors }) => {\n                  if (warningOnly)\n                    mergedWarnings.push(...errors);\n                  else\n                    mergedErrors.push(...errors);\n                });\n\n                if (mergedErrors.length) {\n                  return Promise.reject({\n                    name: fieldNamePath,\n                    errors: mergedErrors,\n                    warnings: mergedWarnings,\n                  });\n                }\n\n                return {\n                  name: fieldNamePath,\n                  errors: mergedErrors,\n                  warnings: mergedWarnings,\n                };\n              }),\n          );\n        }\n      });\n\n      const summaryPromise = allPromiseFinish(promiseList);\n      lastValidatePromise.value = summaryPromise;\n\n      const returnPromise = summaryPromise\n        .then(() => {\n          if (lastValidatePromise.value === summaryPromise)\n            return Promise.resolve(getFieldsValue(namePathList));\n\n          return Promise.reject([]);\n        })\n        .catch((results) => {\n          const errorList = results.filter(result => result && result.errors.length);\n          return Promise.reject({\n            values: getFieldsValue(namePathList),\n            errorFields: errorList,\n            outOfDate: lastValidatePromise.value !== summaryPromise,\n          });\n        });\n\n      // Do not throw in console\n      returnPromise.catch(e => e);\n\n      return returnPromise;\n    };\n\n    const validateField = (...args: any[]) => {\n      return validateFields(...args);\n    };\n\n    const validate = (...args: any[]) => {\n      return validateField(...args);\n    };\n    const handleSubmit = (e: Event) => {\n      e.preventDefault();\n      e.stopPropagation();\n      emit('submit', e);\n      if (props.model) {\n        const res = validateFields();\n        res\n          .then((values) => {\n            emit('finish', values);\n          })\n          .catch((errors) => {\n            handleFinishFailed(errors);\n          });\n      }\n    };\n    expose({\n      resetFields,\n      clearValidate,\n      validateFields,\n      getFieldsValue,\n      validate,\n      scrollToField,\n    } as FormExpose);\n\n    useProvideForm({\n      model: computed(() => props.model),\n      name: computed(() => props.name),\n      labelAlign: computed(() => props.labelAlign),\n      labelCol: computed(() => props.labelCol),\n      labelWrap: computed(() => props.labelWrap),\n      wrapperCol: computed(() => props.wrapperCol),\n      vertical: computed(() => props.layout === 'vertical'),\n      colon: mergedColon,\n      requiredMark: mergedRequiredMark,\n      validateTrigger: computed(() => props.validateTrigger),\n      rules: computed(() => props.rules),\n      addField,\n      removeField,\n      onValidate: (name, status, errors) => {\n        emit('validate', name, status, errors);\n      },\n      validateMessages,\n    });\n\n    watch(\n      () => props.rules,\n      () => {\n        if (props.validateOnRuleChange)\n          validateFields();\n      },\n    );\n\n    return () => {\n      return wrapSSR(\n        <form {...attrs} onSubmit={handleSubmit} class={[formClassName.value, attrs.class]}>\n          {slots.default?.()}\n        </form>,\n      );\n    };\n  },\n});\n"],"names":["isEqualName","name1","name2","isEqual","toArray","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","formProps","layout","hideRequiredMark","colon","Item","FormItem","useForm","setup","emit","slots","expose","attrs","prefixCls","direction","form","contextForm","size","disabled","useConfigInject","requiredMark","computed","mergedRequiredMark","value","undefined","useProviderSize","useProviderDisabled","mergedColon","validateMessages","globalValidateMessages","useInjectGlobalForm","defaultValidateMessages","wrapSSR","hashId","useStyle","formClassName","classNames","lastValidatePromise","ref","fields","addField","eventKey","field","removeField","getFieldsByNameList","nameList","provideNameList","namePathList","map","getNamePath","Object","values","filter","findIndex","namePath","fieldName","resetFields","model","devWarning","forEach","resetField","clearValidate","scrollToField","options","length","fieldId","node","document","getElementById","scrollIntoView","scrollMode","block","handleFinishFailed","errorInfo","scrollToFirstError","errorFields","scrollToFieldOptions","getFieldsValue","allNameList","push","cloneByNamePathList","validateFields","Function","Promise","reject","promiseList","rules","fieldNamePath","containsNamePath","promise","validateRules","then","errors","warnings","catch","ruleErrors","mergedErrors","mergedWarnings","rule","warningOnly","summaryPromise","allPromiseFinish","returnPromise","resolve","results","errorList","result","outOfDate","e","validateField","args","validate","handleSubmit","preventDefault","stopPropagation","res","useProvideForm","labelAlign","labelCol","labelWrap","wrapperCol","vertical","validateTrigger","onValidate","status","watch","validateOnRuleChange","_createVNode","class","default"],"mappings":"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"}