UNPKG

tdesign-vue-next

Version:
1 lines 38.8 kB
{"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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"}