Skip to content

Commit d8628ce

Browse files
authored
feat(form): scrollToFirstError supports passing in options (#3918)
1 parent efb388c commit d8628ce

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

components/form/Form.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { defaultValidateMessages } from './utils/messages';
1010
import { allPromiseFinish } from './utils/asyncUtil';
1111
import { toArray } from './utils/typeUtil';
1212
import isEqual from 'lodash-es/isEqual';
13-
import scrollIntoView from 'scroll-into-view-if-needed';
13+
import scrollIntoView, { Options } from 'scroll-into-view-if-needed';
1414
import initDefaultProps from '../_util/props-util/initDefaultProps';
1515
import { tuple, VueNode } from '../_util/type';
1616
import { ColProps } from '../grid/Col';
@@ -56,7 +56,7 @@ export const formProps = {
5656
validateMessages: PropTypes.object,
5757
validateOnRuleChange: PropTypes.looseBool,
5858
// 提交失败自动滚动到第一个错误字段
59-
scrollToFirstError: PropTypes.looseBool,
59+
scrollToFirstError: { type: [Boolean, Object] as PropType<boolean | Options> },
6060
onSubmit: PropTypes.func,
6161
onFinish: PropTypes.func,
6262
onFinishFailed: PropTypes.func,
@@ -151,7 +151,11 @@ const Form = defineComponent({
151151
const { scrollToFirstError } = this;
152152
this.$emit('finishFailed', errorInfo);
153153
if (scrollToFirstError && errorInfo.errorFields.length) {
154-
this.scrollToField(errorInfo.errorFields[0].name);
154+
let scrollToFieldOptions: Options = {};
155+
if (typeof scrollToFirstError === 'object') {
156+
scrollToFieldOptions = scrollToFirstError;
157+
}
158+
this.scrollToField(errorInfo.errorFields[0].name, scrollToFieldOptions);
155159
}
156160
},
157161
validate(...args: any[]) {

0 commit comments

Comments
 (0)