chore(Field): extract some utils

This commit is contained in:
chenjiahan
2020-10-06 17:00:15 +08:00
parent 9aabb42f9d
commit 608bd3de39
3 changed files with 32 additions and 23 deletions
+30
View File
@@ -0,0 +1,30 @@
export type FieldValidateTrigger = 'onSubmit' | 'onChange' | 'onBlur';
export type FieldRule = {
pattern?: RegExp;
trigger?: FieldValidateTrigger;
message?: string | ((value: unknown, rule: FieldRule) => string);
required?: boolean;
validator?: (value: unknown, rule: FieldRule) => boolean | Promise<boolean>;
formatter?: (value: unknown, rule: FieldRule) => unknown;
};
function isEmptyValue(value: unknown) {
if (Array.isArray(value)) {
return !value.length;
}
if (value === 0) {
return false;
}
return !value;
}
export function runSyncRule(value: unknown, rule: FieldRule) {
if (rule.required && isEmptyValue(value)) {
return false;
}
if (rule.pattern && !rule.pattern.test(String(value))) {
return false;
}
return true;
}