-
Notifications
You must be signed in to change notification settings - Fork 797
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
External Media: Fix Modal focus loss on arrow keypress #16055
External Media: Fix Modal focus loss on arrow keypress #16055
Conversation
Caution: This PR has changes that must be merged to WordPress.com |
This is an automated check which relies on E2E results is available here (for debugging purposes): https://jetpack-e2e-dashboard.herokuapp.com/pr-16055 |
49fd82b
to
d9ec352
Compare
I took this for a test, the things that came to mind for me:
|
d9ec352
to
2d0389a
Compare
0199678
to
bf3eb0f
Compare
I've updated (and rebased) the code to include only the arrow keys handler. All the other changes were creating too many issues and weren't necessary ATM. This should be now easier to review and test. |
bf3eb0f
to
e075167
Compare
@WunderBart and I went over this a lot today and isolated that this is not an issue specific to this modal. This happens to any Gutenberg |
Nice find! We can probably still continue with this solution until a proper Gutenberg fix is landed, though. What do you think? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should have added my comments as a review. Sorry 🤦♂️. I think the functionality is good and the code is very close. Thanks for taking so much time to isolate and debug this issue!
@jeryj, this is ready for another go! 🤞 I was able to make it a lot simpler after your comments. Thanks! FYI so you don't miss it - I removed the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is SO much simpler! I loaded the changed files several time because I thought not all the changes were loading 😂
But, I did find one issue 😬 If you move focus to outside the modal content and press the arrow key, it will still close the modal:
- Open the modal
- Press shift+Tab to focus the X button
- Press an arrow key
Ugh, how did I miss that! I think we need to re-attach the handler to the modal listener element then. Back to the more complicated version! 😬 |
It is already being stopped by the IsolatedEventContainer that is wrapping the frame of the modal.
ae77fc4
to
41de2b9
Compare
addressed by using ref, just slightly differently than expected!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for y'alls diligence on this @WunderBart and @marekhrabe!
Co-authored-by: Marek Hrabe <marekhrabe@me.com>
* External Media: Render Media after authentication (#16044) See #15717 (review) * [not verified] Handle 401 responses (#16041) See #15717 (review) * External Media: Better reflect accepted media types (#16071) * External Media: Account for multiple images (#16077) See #16071 (comment) * External Media: Fix Modal focus loss on arrow keypress (#16055) Co-authored-by: Marek Hrabe <marekhrabe@me.com> * External Media: Add API unit tests (#15988) * [not verified] Add External media endpoint * [not verified] Add unit tests * [not verified] Add class coverage info * Simplify schema * Fix image copy test * Use local image * Remove duplicate file ending Props @frontdevde. * External Media: Improve Insert Flow (#16081) * [not verified] # This is a combination of 5 commits. External Media: Improve Insert Flow See #15867 Remove unused import Lock pointer events when copying This prevents a UX issue where user can still interact with the modal content while the "Inserting..." request is pending. Announce Inserting action along with alt text of selected images. Update modal headers to reflect status Props @jancavan. * External Media: Fix mobile modal size (#16098) * External Media: Improve Insert Flow See #15867 * Remove unused import * Lock pointer events when copying This prevents a UX issue where user can still interact with the modal content while the "Inserting..." request is pending. * Announce Inserting action along with alt text of selected images. * Fix mobile mobile width to take up the full available modal space * Change is-copying to modifier instead of element to follow BEM syntax Co-authored-by: Konstantin Obenland <obenland@gmx.de> Co-authored-by: Bart <bartlomiej.kalisz@gmail.com> * External Media: Loading and disabled states for the copying state (#16103) * disable pagination while loading * fade out all images when copying * disable event handlers and mark as disabled when copying * disable pexels search when copying * disabled google filters when copying * add text to copying indicator * disable google photos view selector when copying * [not verified] remove debugging condition * Pass functions not booleans to event emitters Co-authored-by: Konstantin Obenland <obenland@gmx.de> * Removed :not() copying css state since they are the same modal now * Reset focus to the modal after clicking Insert. Otherwise focus is reset to the body and focus needs to stay trapped within the modal. * Cosmetically rearranging code order * External Media: Screen Reader accessible states for Insert flow (#16113) * Add visually hidden description for the external media modal to give improved screen reader instructions and communicate the copying state * [not verified] Remove title attribute from grid images * [not verified] Move Inserting Image... copy to before the image so it is announced first. * Separate-out description and element id Helps with keeping describedby id in sync Co-authored-by: Konstantin Obenland <obenland@gmx.de> Co-authored-by: Jerry Jones <jones.jeremydavid@gmail.com> Co-authored-by: Bart <bartlomiej.kalisz@gmail.com> Co-authored-by: Marek Hrabe <marekhrabe@me.com> * External Media: Restore focus on modal close (#16102) * External Media: Disable for existing galleries (#16176) * External Media: Disable for existing galleries * Update comment * External Media: Improve upload permission check (#16185) * Use `value` to disable for existing galleries `addToGallery` is not used by all gallery-type blocks, like tiled-gallery or slideshow. Props @jeherve. Co-authored-by: Bart Kalisz <bartlomiej.kalisz@gmail.com> Co-authored-by: Marek Hrabe <marekhrabe@me.com> Co-authored-by: Jerry Jones <jones.jeremydavid@gmail.com>
Fixes: #15855
Changes proposed in this Pull Request:
Stops
keydown
propagation for arrows to prevent unwanted modal closing.Testing instructions:
yarn run build-extensions
Select Media
button and select any one of the external media options (Google / Pexels)Proposed changelog entry for your changes: