feat(form): focus first failed element #45739
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
[中文版模板 / Chinese template]
🤔 This is a ...
🔗 Related issue link
Reference: #45701
💡 Background and solution
While the scrollToFirstError property provides a smooth scroll to the first field that encounters a validation error, it does not automatically set focus to this field. This can be a hindrance to accessibility, as users who rely on keyboard navigation will not automatically know which field has the error, especially after the page scrolls. Moreover, for screen reader users, the error message might not be read out if the focus does not shift to the input with the error.
📝 Changelog
☑️ Self-Check before Merge
🚀 Summary
🤖 Generated by Copilot at 7e93b23
This pull request adds a new feature to the
Form
component and theuseForm
hook that allows users to focus a form field automatically or manually. It also updates the tests and the documentation for both the English and Chinese versions.🔍 Walkthrough
🤖 Generated by Copilot at 7e93b23
focusFirstErrorField
to theForm
component, which enables focusing the first failed field when the form validation fails (link, link, link, link, link)focusField
method in theuseForm
hook, which finds and focuses the field by its name path and id (link, link)focusFirstErrorField
prop in thecomponents/form/__tests__/index.test.tsx
file, which asserts that the input element has focus and theonFinishFailed
callback is called (link)