From 1a6d7ebeb24b469f50b551724453b5120e28eaab Mon Sep 17 00:00:00 2001 From: pany <939630029@qq.com> Date: Wed, 19 Jun 2024 07:53:39 +0800 Subject: [PATCH] feat(Form): add prop "scrollToErrorPosition" (#12937) --- packages/vant/src/form/Form.tsx | 13 +++++++++++-- packages/vant/src/form/README.md | 1 + packages/vant/src/form/README.zh-CN.md | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/vant/src/form/Form.tsx b/packages/vant/src/form/Form.tsx index 824eb805c..91a6ec85d 100644 --- a/packages/vant/src/form/Form.tsx +++ b/packages/vant/src/form/Form.tsx @@ -34,6 +34,7 @@ export const formProps = { labelAlign: String as PropType, inputAlign: String as PropType, scrollToError: Boolean, + scrollToErrorPosition: String as PropType, validateFirst: Boolean, submitOnEnter: truthProp, showErrorMessage: truthProp, @@ -177,9 +178,17 @@ export default defineComponent({ .then(() => emit('submit', values)) .catch((errors: FieldValidateError[]) => { emit('failed', { values, errors }); + const { scrollToError, scrollToErrorPosition } = props; - if (props.scrollToError && errors[0].name) { - scrollToField(errors[0].name); + if (scrollToError && errors[0].name) { + scrollToField( + errors[0].name, + scrollToErrorPosition + ? { + block: scrollToErrorPosition, + } + : undefined, + ); } }); }; diff --git a/packages/vant/src/form/README.md b/packages/vant/src/form/README.md index adfa0cd2e..ccbad06b1 100644 --- a/packages/vant/src/form/README.md +++ b/packages/vant/src/form/README.md @@ -502,6 +502,7 @@ export default { | required `v4.7.3` | Whether to show required mark | _boolean \| 'auto'_ | `null` | | validate-first | Whether to stop the validation when a rule fails | _boolean_ | `false` | | scroll-to-error | Whether to scroll to the error field when validation failed | _boolean_ | `false` | +| scroll-to-error-position | The position when scrolling to the wrong form item, can be set to `center` \| `end` \| `nearest` \| `start` | _string_ | - | | show-error | Whether to highlight input when validation failed | _boolean_ | `false` | | show-error-message | Whether to show error message when validation failed | _boolean_ | `true` | | submit-on-enter | Whether to submit form on enter | _boolean_ | `true` | diff --git a/packages/vant/src/form/README.zh-CN.md b/packages/vant/src/form/README.zh-CN.md index c740a10e8..1f323ec18 100644 --- a/packages/vant/src/form/README.zh-CN.md +++ b/packages/vant/src/form/README.zh-CN.md @@ -534,6 +534,7 @@ export default { | required `v4.7.3` | 是否显示表单必填星号 | _boolean \| 'auto'_ | `null` | | validate-first | 是否在某一项校验不通过时停止校验 | _boolean_ | `false` | | scroll-to-error | 是否在提交表单且校验不通过时滚动至错误的表单项 | _boolean_ | `false` | +| scroll-to-error-position | 滚动至错误的表单项时的位置,可选值为 `center` \| `end` \| `nearest` \| `start` | _string_ | - | | show-error | 是否在校验不通过时标红输入框 | _boolean_ | `false` | | show-error-message | 是否在校验不通过时在输入框下方展示错误提示 | _boolean_ | `true` | | submit-on-enter | 是否在按下回车键时提交表单 | _boolean_ | `true` |