Fix Focus Loss on Tab/Shift+Tab After Changing Heading Level#77959
Open
dpmehta wants to merge 1 commit into
Open
Fix Focus Loss on Tab/Shift+Tab After Changing Heading Level#77959dpmehta wants to merge 1 commit into
dpmehta wants to merge 1 commit into
Conversation
…and navigableToolbar
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What?
Closes #55745
This PR fixes a bug where keyboard focus is lost when navigating back to a Heading or Site Title block from the block toolbar using
TaborEscape, specifically after its heading level was changed.Why?
When the heading level is changed (H2 -> H3), React completely unmounts the old element and mounts a new one with the updated tag. However, the internal focus state (
lastFocus.current) still held a reference to the old, detached DOM element. Consequently, attempting to return focus to the block via.focus()failed silently, breaking keyboard accessibility.How?
Added a
.isConnectedcheck forlastFocus.current. If the previously focused element is no longer connected to the DOM (i.e. it was replaced by a new heading tag), the logic falls back to querying the active block via its[data-block]attribute. This correctly targets the newly mounted element and reliably restores focus.Testing Instructions
Testing Instructions for Keyboard
Shift + Tabto move focus from the block into the floating block toolbar.Tabto return focus to the block.Screenshots or screencast
Before Fix :
Screen.Recording.2023-10-31.at.3.49.36.PM.mov
After Fix :
after-fix.mov
Use of AI Tools
AI assitance used to draft PR description. all the changes are verified manually.