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

View File

@ -21,6 +21,7 @@ import {
preventDefault,
createNamespace,
} from '../utils';
import { runSyncRule } from './utils';
// Composition
import { useParent } from '@vant/use';
@ -133,26 +134,6 @@ export default createComponent({
resolve(returnVal);
});
const isEmptyValue = (value) => {
if (Array.isArray(value)) {
return !value.length;
}
if (value === 0) {
return false;
}
return !value;
};
const runSyncRule = (value, rule) => {
if (rule.required && isEmptyValue(value)) {
return false;
}
if (rule.pattern && !rule.pattern.test(value)) {
return false;
}
return true;
};
const getRuleMessage = (value, rule) => {
const { message } = rule;
@ -337,7 +318,6 @@ export default createComponent({
if (isDef(props[key])) {
return props[key];
}
if (form && isDef(form.props[key])) {
return form.props[key];
}
@ -423,7 +403,6 @@ export default createComponent({
ref: inputRef,
name: props.name,
rows: props.rows,
style: null,
class: bem('control', inputAlign),
value: props.modelValue,
disabled: props.disabled,

30
src/field/utils.ts Normal file
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;
}

View File

@ -486,7 +486,7 @@ export default {
| message `v2.5.3` | 错误提示文案 | _string \| (value, rule) => string_ |
| validator `v2.5.3` | 通过函数进行校验 | _(value, rule) => boolean \| Promise_ |
| pattern `v2.5.3` | 通过正则表达式进行校验 | _RegExp_ |
| trigger `v2.5.2` | 本项规则的触发时机,可选值为`onChange``onBlur` | _string_ |
| trigger `v2.5.2` | 本项规则的触发时机,可选值为 `onChange``onBlur` | _string_ |
| formatter `v2.5.3` | 格式化函数,将表单项的值转换后进行校验 | _(value, rule) => any_ |
### validate-trigger  可选值