Repository navigation
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. |
|
Thanks for digging into this — the isConnected diagnosis was right at the time. Since then #81319 rewrote the toolbar's Escape handler and #82354 reworked the focus-capture elements, and retesting the ported change against current trunk shows the guard alone no longer restores focus in either the Escape or the Tab flow — the problem has moved deeper into the focus-capture chain. Closing this PR since it needs a fresh approach against the current code rather than a rebase; #55745 stays open, and I've added updated reproduction notes there. A follow-up PR (ideally starting with an e2e test for the Tab-back-into-canvas case) would be very welcome. |
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.