UNPKG

tdesign-mobile-vue

Version:
1 lines 34.4 kB
{"version":3,"file":"form-item.mjs","sources":["../../src/form/form-item.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n watch,\n} from 'vue';\nimport {\n cloneDeep,\n get as lodashGet,\n set as lodashSet,\n isBoolean,\n isArray,\n isNil,\n isNumber,\n isString,\n template as lodashTemplate,\n} from 'lodash-es';\nimport { ChevronRightIcon } from 'tdesign-icons-vue-next';\nimport { validate } from './form-model';\n\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 ValidateStatus,\n} from './const';\nimport config from '../config';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport type FormItemValidateResult<T extends Data = Data> = { [key in keyof T]: boolean | AllValidateResult[] };\n\nexport default defineComponent({\n name: `${prefix}-form-item`,\n props,\n setup(props, { slots }) {\n const renderTNodeJSX = useTNodeJSX();\n const formClass = usePrefixClass('form');\n const formItemClass = usePrefixClass('form__item');\n const { name } = toRefs(props);\n\n const form = inject(FormInjectionKey, undefined);\n\n const extraNode = computed(() => {\n const list = errorList.value;\n if (showErrorMessage.value && list[0]?.message) {\n return list[0]?.message;\n }\n if (successList.value.length) {\n return successList.value[0].message;\n }\n return null;\n });\n\n const formItemClasses = computed(() => [\n formItemClass.value,\n `${formItemClass.value}--bordered`,\n `${formClass.value}--${labelAlign.value}`,\n `${formClass.value}-item__${props.name}`,\n ]);\n\n const needRequiredMark = computed(() => {\n const requiredMark = props.requiredMark ?? form?.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 labelClass = `${formClass.value}__label`;\n const labelAlign = computed(() => (isNil(props.labelAlign) ? form?.labelAlign : props.labelAlign));\n const labelWidth = computed(() => (isNil(props.labelWidth) ? form?.labelWidth : props.labelWidth));\n const contentAlign = computed(() => (isNil(props.contentAlign) ? form?.contentAlign : props.contentAlign));\n\n const labelClasses = computed(() => [\n labelClass,\n {\n [`${labelClass}--required`]: needRequiredMark.value,\n [`${labelClass}--colon`]: hasColon.value,\n [`${labelClass}--top`]: hasLabel.value && (labelAlign.value === 'top' || !labelWidth.value),\n [`${labelClass}--left`]: labelAlign.value === 'left' && labelWidth.value,\n [`${labelClass}--right`]: labelAlign.value === 'right' && labelWidth.value,\n },\n ]);\n\n const labelStyle = computed(() => {\n if (labelWidth.value && labelAlign.value !== 'top') {\n return isNumber(labelWidth.value) ? { width: `${labelWidth.value}px` } : { width: labelWidth.value };\n }\n return {};\n });\n\n const freeShowErrorMessage = ref<boolean | undefined>(false);\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 errorClasses = computed(() => {\n if (!showErrorMessage.value) return '';\n if (!errorList.value.length) return '';\n const type = errorList.value[0].type || 'error';\n return type === 'error' ? `${formItemClass.value}--error` : `${formItemClass.value}--warning`;\n });\n\n const contentClasses = computed(() => [`${formClass.value}__controls`, errorClasses.value]);\n const contentSlotClasses = computed(() => [\n `${formClass.value}__controls-content`,\n `${formClass.value}__controls--${contentAlign.value}`,\n ]);\n\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\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): Promise<any> => {\n if (!props.name) return null;\n\n if (resetType === 'empty') {\n // @ts-ignore\n lodashSet(form?.data, props.name, getEmptyValue());\n } else if (resetType === 'initial') {\n // @ts-ignore\n lodashSet(form?.data, props.name, initialValue.value);\n }\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 || {});\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) => {\n Object.keys(item).forEach((key) => {\n if (!item.message && errorMessages.value[key]) {\n const compiled = lodashTemplate(errorMessages.value[key]);\n const name = isString(props.label) ? props.label : props.name;\n item.message = compiled({\n name,\n validate: item[key],\n });\n }\n });\n return item as ErrorListType;\n });\n // 仅有自定义校验方法才会存在 successList\n result.successList = result.resultList.filter(\n (item) => item.result === true && item.message && item.type === 'success',\n ) as SuccessListType[];\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 [`${name.value}`]: innerErrorList?.length === 0 ? true : resultList,\n } as FormItemValidateResult<T>;\n };\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, `${name.value}`));\n const initialValue = ref<ValueType>(undefined);\n\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 handleBlur = async () => {\n await validateHandler('blur');\n };\n\n provide(FormItemInjectionKey, {\n handleBlur,\n });\n\n return () => {\n const renderRightIconContent = () => {\n if (!props.arrow) {\n return null;\n }\n return <ChevronRightIcon size=\"24px\" style={{ color: 'rgba(0, 0, 0, .4)' }} />;\n };\n const renderLabelContent = () => {\n if (Number(labelWidth.value) === 0) {\n return null;\n }\n return renderTNodeJSX('label');\n };\n const renderHelpNode = () => {\n const helpNode = renderTNodeJSX('help');\n if (!helpNode) {\n return null;\n }\n return (\n <div class={[`${formItemClass.value}-help`, `${formClass.value}__controls--${contentAlign.value}`]}>\n {helpNode}\n </div>\n );\n };\n const renderExtraNode = () => {\n if (!extraNode.value) {\n return null;\n }\n return (\n <div class={[`${formItemClass.value}-extra`, `${formClass.value}__controls--${contentAlign.value}`]}>\n {extraNode.value}\n </div>\n );\n };\n\n return (\n <div class={[...formItemClasses.value, renderHelpNode() ? `${formClass.value}__item-with-help` : '']}>\n <div class={[`${formItemClass.value}-wrap`, `${formItemClass.value}--${labelAlign.value}`]}>\n <div class={labelClasses.value} style={labelStyle.value}>\n <label for={props.for}>{renderLabelContent()}</label>\n </div>\n <div class={contentClasses.value} style={contentStyle.value}>\n <div class={contentSlotClasses.value}>{renderTNodeJSX('default')}</div>\n {renderHelpNode()}\n {renderExtraNode()}\n </div>\n </div>\n {renderRightIconContent()}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","slots","_ref","renderTNodeJSX","useTNodeJSX","formClass","usePrefixClass","formItemClass","_toRefs","toRefs","form","inject","FormInjectionKey","extraNode","computed","_list$","list","errorList","value","showErrorMessage","message","_list$2","successList","length","formItemClasses","concat","labelAlign","needRequiredMark","_props2$requiredMark","requiredMark","isRequired","innerRules","filter","rule","required","hasLabel","label","hasColon","colon","labelClass","isNil","labelWidth","contentAlign","labelClasses","_defineProperty","labelStyle","isNumber","width","freeShowErrorMessage","ref","isBoolean","errorClasses","type","contentClasses","contentSlotClasses","contentStyle","marginLeft","verifyStatus","ValidateStatus","TO_BE_VALIDATED","resetValidating","needResetField","resetHandler","getEmptyValue","Object","prototype","toString","call","lodashGet","data","emptyValue","resetField","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","resetType","_args","arguments","wrap","_context","prev","next","undefined","abrupt","lodashSet","initialValue","nextTick","stop","apply","errorMessages","errorMessage","_props2$rules","rules","index","lastIndexOf","pRuleName","slice","analysisValidateResult","_ref4","_callee2","trigger","_result$rules","result","_context2","resultList","allowSetValue","item","validate","map","keys","forEach","key","compiled","lodashTemplate","isString","_x","validateHandler","_ref5","_callee3","_yield$analysisValida","innerSuccessList","innerErrorList","_context3","sent","FAIL","SUCCESS","_x2","_x3","validateOnly","_ref7","_callee4","_yield$analysisValida2","_context4","_x4","setValidateMessage","validateMessage","isArray","_objectSpread","context","reactive","onMounted","cloneDeep","children","push","onBeforeUnmount","ctx","watch","_callee5","_context5","deep","JSON","stringify","join","handleBlur","_callee6","_context6","provide","FormItemInjectionKey","renderRightIconContent","arrow","_createVNode","ChevronRightIcon","color","renderLabelContent","Number","renderHelpNode","helpNode","renderExtraNode","_toConsumableArray","for"],"mappings":"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"}