mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-25 10:56:35 +08:00
chore(Field): extract some utils
This commit is contained in:
parent
9aabb42f9d
commit
608bd3de39
@ -21,6 +21,7 @@ import {
|
|||||||
preventDefault,
|
preventDefault,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
|
import { runSyncRule } from './utils';
|
||||||
|
|
||||||
// Composition
|
// Composition
|
||||||
import { useParent } from '@vant/use';
|
import { useParent } from '@vant/use';
|
||||||
@ -133,26 +134,6 @@ export default createComponent({
|
|||||||
resolve(returnVal);
|
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 getRuleMessage = (value, rule) => {
|
||||||
const { message } = rule;
|
const { message } = rule;
|
||||||
|
|
||||||
@ -337,7 +318,6 @@ export default createComponent({
|
|||||||
if (isDef(props[key])) {
|
if (isDef(props[key])) {
|
||||||
return props[key];
|
return props[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (form && isDef(form.props[key])) {
|
if (form && isDef(form.props[key])) {
|
||||||
return form.props[key];
|
return form.props[key];
|
||||||
}
|
}
|
||||||
@ -423,7 +403,6 @@ export default createComponent({
|
|||||||
ref: inputRef,
|
ref: inputRef,
|
||||||
name: props.name,
|
name: props.name,
|
||||||
rows: props.rows,
|
rows: props.rows,
|
||||||
style: null,
|
|
||||||
class: bem('control', inputAlign),
|
class: bem('control', inputAlign),
|
||||||
value: props.modelValue,
|
value: props.modelValue,
|
||||||
disabled: props.disabled,
|
disabled: props.disabled,
|
||||||
|
30
src/field/utils.ts
Normal file
30
src/field/utils.ts
Normal 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;
|
||||||
|
}
|
@ -486,7 +486,7 @@ export default {
|
|||||||
| message `v2.5.3` | 错误提示文案 | _string \| (value, rule) => string_ |
|
| message `v2.5.3` | 错误提示文案 | _string \| (value, rule) => string_ |
|
||||||
| validator `v2.5.3` | 通过函数进行校验 | _(value, rule) => boolean \| Promise_ |
|
| validator `v2.5.3` | 通过函数进行校验 | _(value, rule) => boolean \| Promise_ |
|
||||||
| pattern `v2.5.3` | 通过正则表达式进行校验 | _RegExp_ |
|
| 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_ |
|
| formatter `v2.5.3` | 格式化函数,将表单项的值转换后进行校验 | _(value, rule) => any_ |
|
||||||
|
|
||||||
### validate-trigger 可选值
|
### validate-trigger 可选值
|
||||||
|
Loading…
x
Reference in New Issue
Block a user