mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
31 lines
777 B
TypeScript
31 lines
777 B
TypeScript
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;
|
|
}
|