media/src/components/SemixFormRender/validate.ts (40 lines of code) (raw):

import I18N from "./I18N"; export const baseValidate = (json: any, options: any) => { let errors = [] errors = (errors || []).map((error) => { switch (error.keyword) { case "enum": { return { ...error, message: I18N.template(I18N.jsonschema_form.utils.notInEnums, { val1: error.schema?.enum, }), }; } // 正则校验 case "pattern": { return { ...error, message: I18N.template(I18N.jsonschema_form.utils.patternNotMatched, { val1: error.schema?.pattern, }), }; } } return error; }); return errors .map((error) => { if (error.keyword === "required") { const errorKeys = error?.ext || []; return errorKeys.map((key: string) => { return { ...error, dataPath: error.dataPath ? error.dataPath + "." + key : key, message: I18N.base.context.required, }; }); } return [error]; }) .reduce((pre, curr) => pre.concat(curr), []); };