in seatunnel-ui/src/components/dynamic-form/use-form-validate.ts [20:69]
export function useFormValidate(forms: Array<any>, model: any, t: any) {
const validate: any = {}
const setValidate = (validate: any, field: string): object => {
const data: any = {
required: validate.required,
trigger: validate.trigger
}
if (validate.type === 'non-empty') {
data['validator'] = (rule: FormItemRule, value: string) => {
if (!model[field]) {
return Error(t(validate.message))
}
}
} else if (validate.type === 'union-non-empty') {
const fields = validate.fields.splice(
validate.fields.findIndex((f: any) => f !== field),
1
)
data['validator'] = (rule: FormItemRule, value: string) => {
const fieldsValidate = fields.map((f: string) => !!model[f])
if (!value && fieldsValidate.includes(true)) {
return Error(t(validate.message))
}
}
} else if (validate.type === 'mutually-exclusive') {
const fields = validate.fields.splice(
validate.fields.findIndex((f: any) => f !== field),
1
)
data['validator'] = (rule: FormItemRule, value: string) => {
const fieldsValidate = fields.map((f: string) => !!model[f])
if (value && fieldsValidate.indexOf(false) < 0) {
return Error(t(validate.message))
}
}
}
return data
}
forms.forEach((f: any) => {
if (!f.validate || Object.keys(f.validate).length <= 0) return
validate[f.field] = setValidate(f.validate, f.field)
})
return validate
}