{"version":3,"file":"form-item.mjs","sources":["../../../common/js/utils/stringTemplate.ts","../../../components/form/form-item.tsx"],"sourcesContent":["/**\n * 用正则实现模板字符串功能\n * @param str 模板字符串\n * @param vars 取值的对象\n * @returns 替换后的字符串\n */\nexport function template<T extends Record<string, string>>(str: string, vars: T): string {\n  return str.replace(/\\${(.*?)}/g, (_, prop: string) => vars[prop.trim()] || '');\n}\n","import {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  VNode,\n  watch,\n} from 'vue';\nimport {\n  CheckCircleFilledIcon as TdCheckCircleFilledIcon,\n  CloseCircleFilledIcon as TdCloseCircleFilledIcon,\n  ErrorCircleFilledIcon as TdErrorCircleFilledIcon,\n  GlobalIconType,\n} from 'tdesign-icons-vue-next';\nimport { isArray } from 'lodash-es';\nimport { isNumber } from 'lodash-es';\nimport { isString } from 'lodash-es';\nimport { isBoolean } from 'lodash-es';\nimport { cloneDeep } from 'lodash-es';\nimport { get as lodashGet } from 'lodash-es';\nimport { set as lodashSet } from 'lodash-es';\nimport { isNil } from 'lodash-es';\n\nimport { validate } from './utils/form-model';\nimport {\n  AllValidateResult,\n  Data,\n  FormErrorMessage,\n  FormItemValidateMessage,\n  FormRule,\n  ValidateTriggerType,\n  ValueType,\n} from './type';\nimport props from './form-item-props';\nimport {\n  AnalysisValidateResult,\n  ErrorListType,\n  FormInjectionKey,\n  FormItemContext,\n  FormItemInjectionKey,\n  SuccessListType,\n  useCLASSNAMES,\n  ValidateStatus,\n} from './consts';\n\nimport { useConfig, usePrefixClass, useTNodeJSX } from '../hooks';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { template } from '@tdesign/common-js/utils/stringTemplate';\n\nexport type FormItemValidateResult<T extends Data = Data> = { [key in keyof T]: boolean | AllValidateResult[] };\n\nexport function getFormItemClassName(componentName: string, name?: string) {\n  if (!name) return '';\n  return `${componentName}__${name}`.replace(/(\\[|\\]\\.)/g, '_');\n}\n\nexport default defineComponent({\n  name: 'TFormItem',\n  props,\n  setup(props, { slots }) {\n    const renderContent = useTNodeJSX();\n    const CLASS_NAMES = useCLASSNAMES();\n    const { globalConfig } = useConfig('form');\n    const { CheckCircleFilledIcon, CloseCircleFilledIcon, ErrorCircleFilledIcon } = useGlobalIcon({\n      CheckCircleFilledIcon: TdCheckCircleFilledIcon,\n      CloseCircleFilledIcon: TdCloseCircleFilledIcon,\n      ErrorCircleFilledIcon: TdErrorCircleFilledIcon,\n    });\n    const form = inject(FormInjectionKey, undefined);\n\n    const classPrefix = usePrefixClass();\n    const formItemClassPrefix = usePrefixClass('form-item');\n\n    const needRequiredMark = computed(() => {\n      const requiredMark = props.requiredMark ?? form?.requiredMark ?? globalConfig.value.requiredMark;\n      const isRequired = innerRules.value.filter((rule) => rule.required).length > 0;\n      return requiredMark ?? isRequired;\n    });\n\n    const hasLabel = computed(() => slots.label || props.label);\n    const hasColon = computed(() => !!(form?.colon && hasLabel.value));\n    const FROM_LABEL = usePrefixClass('form__label');\n    const labelAlign = computed(() => (isNil(props.labelAlign) ? form?.labelAlign : props.labelAlign));\n    const labelWidth = computed(() => (isNil(props.labelWidth) ? form?.labelWidth : props.labelWidth));\n\n    const labelClasses = computed(() => [\n      CLASS_NAMES.value.label,\n      {\n        [`${FROM_LABEL.value}--required`]: needRequiredMark.value,\n        [`${FROM_LABEL.value}--top`]: hasLabel.value && (labelAlign.value === 'top' || !labelWidth.value),\n        [`${FROM_LABEL.value}--left`]: labelAlign.value === 'left' && labelWidth.value,\n        [`${FROM_LABEL.value}--right`]: labelAlign.value === 'right' && labelWidth.value,\n      },\n    ]);\n\n    const statusClass = computed(\n      () =>\n        `${classPrefix.value}-is-${props.status || 'default'} ${\n          props.status === 'success' ? CLASS_NAMES.value.successBorder : ''\n        }`,\n    );\n\n    const renderLabel = () => {\n      if (Number(labelWidth.value) === 0) return;\n\n      let labelStyle = {};\n      if (labelWidth.value && labelAlign.value !== 'top') {\n        if (isNumber(labelWidth.value)) {\n          labelStyle = { width: `${labelWidth.value}px` };\n        } else {\n          labelStyle = { width: labelWidth.value };\n        }\n      }\n\n      return (\n        <div class={labelClasses.value} style={labelStyle}>\n          <label for={props.for || null}>{renderContent('label')}</label>\n          {hasColon.value && globalConfig.value.colonText}\n        </div>\n      );\n    };\n\n    /** Suffix Icon */\n    const getDefaultIcon = (): VNode => {\n      const resultIcon = (Icon: GlobalIconType) => (\n        <span class={CLASS_NAMES.value.status}>\n          <Icon />\n        </span>\n      );\n      const list = errorList.value;\n      if (verifyStatus.value === ValidateStatus.SUCCESS) {\n        return resultIcon(CheckCircleFilledIcon);\n      }\n      if (list?.[0]) {\n        const type = list[0].type || 'error';\n        const icon =\n          {\n            error: CloseCircleFilledIcon,\n            warning: ErrorCircleFilledIcon,\n          }[type] || CheckCircleFilledIcon;\n        return resultIcon(icon);\n      }\n      return null;\n    };\n    const renderSuffixIcon = () => {\n      const { statusIcon } = props;\n      if (statusIcon === false) return;\n\n      let resultIcon = renderContent('statusIcon', { defaultNode: getDefaultIcon() });\n      if (resultIcon) return <span class={CLASS_NAMES.value.status}>{resultIcon}</span>;\n      if (resultIcon === false) return;\n\n      resultIcon = form?.renderContent('statusIcon', { defaultNode: getDefaultIcon(), params: props });\n      if (resultIcon) return resultIcon;\n    };\n    /** Suffix Icon END */\n\n    /** Content Style */\n    const errorClasses = computed(() => {\n      if (!showErrorMessage.value) return '';\n      if (verifyStatus.value === ValidateStatus.SUCCESS) {\n        return props.successBorder\n          ? [CLASS_NAMES.value.success, CLASS_NAMES.value.successBorder].join(' ')\n          : CLASS_NAMES.value.success;\n      }\n      if (!errorList.value.length) return;\n      const type = errorList.value[0].type || 'error';\n      if (props.status) return statusClass.value;\n      return type === 'error' ? CLASS_NAMES.value.error : CLASS_NAMES.value.warning;\n    });\n    const contentClasses = computed(() => [CLASS_NAMES.value.controls, errorClasses.value]);\n    const contentStyle = computed(() => {\n      let contentStyle = {};\n      if (labelWidth.value && labelAlign.value !== 'top') {\n        if (isNumber(labelWidth.value)) {\n          contentStyle = { marginLeft: `${labelWidth.value}px` };\n        } else {\n          contentStyle = { marginLeft: labelWidth.value };\n        }\n      }\n\n      return contentStyle;\n    });\n    /** Content Style END */\n\n    const errorList = ref<ErrorListType[]>([]);\n    const successList = ref<SuccessListType[]>([]);\n    const verifyStatus = ref(ValidateStatus.TO_BE_VALIDATED);\n    const resetValidating = ref(false);\n    const needResetField = ref(false);\n\n    const resetHandler = () => {\n      needResetField.value = false;\n      errorList.value = [];\n      successList.value = [];\n      verifyStatus.value = ValidateStatus.TO_BE_VALIDATED;\n    };\n    const getEmptyValue = (): ValueType => {\n      const type = Object.prototype.toString.call(lodashGet(form?.data, props.name));\n      let emptyValue: ValueType;\n      if (type === '[object String]') {\n        emptyValue = '';\n      }\n      if (type === '[object Array]') {\n        emptyValue = [];\n      }\n      if (type === '[object Object]') {\n        emptyValue = {};\n      }\n      return emptyValue;\n    };\n    const resetField = async (resetType: 'initial' | 'empty' | undefined = form?.resetType) => {\n      if (!props.name) return;\n\n      if (resetType === 'empty') lodashSet(form?.data, props.name, getEmptyValue());\n      else if (resetType === 'initial') lodashSet(form?.data, props.name, initialValue.value);\n\n      await nextTick();\n      if (resetValidating.value) {\n        needResetField.value = true;\n      } else {\n        resetHandler();\n      }\n    };\n\n    const errorMessages = computed<FormErrorMessage>(() => form?.errorMessage ?? globalConfig.value.errorMessage);\n    const innerRules = computed<FormRule[]>(() => {\n      if (props.rules?.length) return props.rules;\n      if (!props.name) return [];\n      const index = `${props.name}`.lastIndexOf('.') || -1;\n      const pRuleName = `${props.name}`.slice(index + 1);\n      return lodashGet(form?.rules, props.name) || lodashGet(form?.rules, pRuleName) || [];\n    });\n\n    const analysisValidateResult = async (trigger: ValidateTriggerType): Promise<AnalysisValidateResult> => {\n      const result: AnalysisValidateResult = {\n        successList: [],\n        errorList: [],\n        rules: [],\n        resultList: [],\n        allowSetValue: false,\n      };\n      result.rules =\n        trigger === 'all'\n          ? innerRules.value\n          : innerRules.value.filter((item) => (item.trigger || 'change') === trigger);\n      if (innerRules.value.length && !result.rules?.length) {\n        return result;\n      }\n      result.allowSetValue = true;\n      result.resultList = await validate(value.value, result.rules);\n      result.errorList = result.resultList\n        .filter((item) => item.result !== true)\n        .map((item: ErrorListType) => {\n          Object.keys(item).forEach((key) => {\n            // @ts-ignore\n            if (!item.message && errorMessages.value[key]) {\n              const name = isString(props.label) ? props.label : props.name;\n              // @ts-ignore\n              item.message = template(errorMessages.value[key], {\n                name,\n                // @ts-ignore\n                validate: item[key],\n              });\n            }\n          });\n          return item;\n        });\n      // 仅有自定义校验方法才会存在 successList\n      result.successList = result.resultList.filter(\n        (item) => item.result === true && item.message && item.type === 'success',\n      ) as SuccessListType[];\n\n      return result;\n    };\n    const validateHandler = async <T extends Data = Data>(\n      trigger: ValidateTriggerType,\n      showErrorMessage?: boolean,\n    ): Promise<FormItemValidateResult<T>> => {\n      resetValidating.value = true;\n      // undefined | boolean\n      freeShowErrorMessage.value = showErrorMessage;\n      const {\n        successList: innerSuccessList,\n        errorList: innerErrorList,\n        rules,\n        resultList,\n        allowSetValue,\n      } = await analysisValidateResult(trigger);\n\n      if (allowSetValue) {\n        successList.value = innerSuccessList;\n        errorList.value = innerErrorList;\n      }\n      // 根据校验结果设置校验状态\n      if (rules.length) {\n        verifyStatus.value = innerErrorList.length ? ValidateStatus.FAIL : ValidateStatus.SUCCESS;\n      }\n      // 重置处理\n      if (needResetField.value) {\n        resetHandler();\n      }\n      resetValidating.value = false;\n\n      return {\n        [props.name]: innerErrorList.length === 0 ? true : resultList,\n      } as FormItemValidateResult<T>;\n    };\n    const validateOnly = async <T extends Data>(trigger: ValidateTriggerType): Promise<FormItemValidateResult<T>> => {\n      const { errorList: innerErrorList, resultList } = await analysisValidateResult(trigger);\n\n      return {\n        [props.name]: innerErrorList.length === 0 ? true : resultList,\n      } as FormItemValidateResult<T>;\n    };\n\n    const setValidateMessage = (validateMessage: FormItemValidateMessage[]) => {\n      if (!validateMessage && !isArray(validateMessage)) return;\n      if (validateMessage.length === 0) {\n        errorList.value = [];\n        verifyStatus.value = ValidateStatus.SUCCESS;\n      }\n      errorList.value = validateMessage.map((item) => ({ ...item, result: false }));\n      verifyStatus.value = ValidateStatus.FAIL;\n    };\n\n    const value = computed<ValueType>(() => form?.data && lodashGet(form?.data, props.name));\n    const initialValue = ref<ValueType>(undefined);\n    const { name } = toRefs(props);\n    const context: FormItemContext = reactive({\n      name,\n      resetHandler,\n      resetField,\n      validate: validateHandler,\n      validateOnly,\n      setValidateMessage,\n    });\n\n    onMounted(() => {\n      initialValue.value = cloneDeep(value.value);\n      form?.children.push(context);\n    });\n\n    onBeforeUnmount(() => {\n      if (form) form.children = form?.children.filter((ctx) => ctx !== context);\n    });\n\n    watch(\n      value,\n      async () => {\n        await validateHandler('change');\n      },\n      { deep: true },\n    );\n\n    watch(\n      () => [props.name, JSON.stringify(props.rules)].join(','),\n      () => {\n        validateHandler('change');\n      },\n    );\n\n    const freeShowErrorMessage = ref<boolean>(undefined);\n    const showErrorMessage = computed(() => {\n      if (isBoolean(freeShowErrorMessage.value)) return freeShowErrorMessage.value;\n      if (isBoolean(props.showErrorMessage)) return props.showErrorMessage;\n      return form?.showErrorMessage;\n    });\n\n    const classes = computed(() => [\n      CLASS_NAMES.value.formItem,\n      getFormItemClassName(formItemClassPrefix.value, props.name),\n      {\n        [CLASS_NAMES.value.formItemWithHelp]: helpNode.value,\n        [CLASS_NAMES.value.formItemWithExtra]: extraNode.value,\n      },\n    ]);\n    const helpNode = computed<VNode>(() => {\n      const help = renderContent('help');\n      if (help) return <div class={CLASS_NAMES.value.help}>{help}</div>;\n      return null;\n    });\n    const extraNode = computed<VNode>(() => {\n      const getExtraNode = (content: string) => (\n        <div class={CLASS_NAMES.value.extra} title={content}>\n          {content}\n        </div>\n      );\n      const list = errorList.value;\n      if (showErrorMessage.value && list?.[0]?.message) {\n        return getExtraNode(list[0].message);\n      }\n      if (successList.value.length) {\n        return getExtraNode(successList.value[0].message);\n      }\n      return null;\n    });\n\n    const tipsNode = computed<VNode>(() => {\n      const tmpTips = renderContent('tips');\n      if (!tmpTips) return null;\n      const tmpClasses = [`${formItemClassPrefix.value}-tips`, `${classPrefix.value}-tips`, statusClass.value];\n      return <div class={tmpClasses}>{tmpTips}</div>;\n    });\n\n    const handleBlur = async () => {\n      await validateHandler('blur');\n    };\n    provide(FormItemInjectionKey, {\n      handleBlur,\n    });\n\n    return () => (\n      <div class={classes.value}>\n        {renderLabel()}\n        <div class={contentClasses.value} style={contentStyle.value}>\n          <div class={CLASS_NAMES.value.controlsContent}>\n            {renderContent('default')}\n            {renderSuffixIcon()}\n          </div>\n          {helpNode.value}\n          {tipsNode.value}\n          {extraNode.value}\n        </div>\n      </div>\n    );\n  },\n});\n"],"names":["template","str","vars","replace","_","prop","trim","getFormItemClassName","componentName","name","concat","defineComponent","props","setup","slots","_ref","renderContent","useTNodeJSX","CLASS_NAMES","useCLASSNAMES","_useConfig","useConfig","globalConfig","_useGlobalIcon","useGlobalIcon","CheckCircleFilledIcon","TdCheckCircleFilledIcon","CloseCircleFilledIcon","TdCloseCircleFilledIcon","ErrorCircleFilledIcon","TdErrorCircleFilledIcon","form","inject","FormInjectionKey","classPrefix","usePrefixClass","formItemClassPrefix","needRequiredMark","computed","_ref2","_props2$requiredMark","requiredMark","value","isRequired","innerRules","filter","rule","required","length","hasLabel","label","hasColon","colon","FROM_LABEL","labelAlign","isNil","labelWidth","labelClasses","_defineProperty","statusClass","status","successBorder","renderLabel","Number","labelStyle","isNumber","width","_createVNode","colonText","getDefaultIcon","resultIcon","Icon","list","errorList","verifyStatus","ValidateStatus","SUCCESS","type","icon","error","warning","renderSuffixIcon","statusIcon","defaultNode","params","errorClasses","showErrorMessage","success","join","contentClasses","controls","contentStyle","marginLeft","ref","successList","TO_BE_VALIDATED","resetValidating","needResetField","resetHandler","getEmptyValue","Object","prototype","toString","call","lodashGet","data","emptyValue","resetField","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","resetType","_args","arguments","wrap","_callee$","_context","prev","next","undefined","abrupt","lodashSet","initialValue","nextTick","stop","apply","errorMessages","_form$errorMessage","errorMessage","_props2$rules","rules","index","lastIndexOf","pRuleName","slice","analysisValidateResult","_ref5","_callee2","trigger","_result$rules","result","_callee2$","_context2","resultList","allowSetValue","item","validate","map","keys","forEach","key","message","isString","_x","validateHandler","_ref6","_callee3","_yield$analysisValida","innerSuccessList","innerErrorList","_callee3$","_context3","freeShowErrorMessage","sent","FAIL","_x2","_x3","validateOnly","_ref8","_callee4","_yield$analysisValida2","_callee4$","_context4","_x4","setValidateMessage","validateMessage","isArray","_objectSpread","_toRefs","toRefs","context","reactive","onMounted","cloneDeep","children","push","onBeforeUnmount","ctx","watch","_callee5","_callee5$","_context5","deep","JSON","stringify","isBoolean","classes","formItem","formItemWithHelp","helpNode","formItemWithExtra","extraNode","help","_list$","getExtraNode","content","extra","tipsNode","tmpTips","tmpClasses","handleBlur","_callee6","_callee6$","_context6","provide","FormItemInjectionKey","controlsContent"],"mappings":"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"}