Skip to content
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

Focus escapes modal when radio buttons in modal #636

Open
WickyNilliams opened this issue Mar 29, 2018 · 8 comments · May be fixed by #1045
Open

Focus escapes modal when radio buttons in modal #636

WickyNilliams opened this issue Mar 29, 2018 · 8 comments · May be fixed by #1045

Comments

@WickyNilliams
Copy link
Contributor

Summary:

When there are radio buttons in a modal, you can escape focus with shift-tab.

Steps to reproduce:

Steps are included in the test case below

Expected behavior:

You should not be able to escape the modal's focus

Link to example of issue:

https://codesandbox.io/s/my9vm34m68

Additional notes:

Not sure if it's related specifically to radio buttons, but that is what is causing the issue for me

@WickyNilliams
Copy link
Contributor Author

I think the issue here is that radio buttons are considered individually focusable by findTabbable(), but the browser treats a group of radio as a single focusable item when tabbing, if their name attribute matches.

@diasbruno diasbruno added the bug label Apr 18, 2018
@WickyNilliams
Copy link
Contributor Author

I've also noticed that if you hold your mouse down on a radio button then focus is shifted back to .ReactModal__Content. When you release the mouse, focus is then returned to the input.

I'm not sure if this a related or separate issue.

@ryansukale
Copy link

We ran into a similar issue. Here are some details.

Our modal contains a bunch of fieldsets. Each fieldset has several radio buttons.
In the footer of the modal is submit button that is disabled.

When you press tab on chrome, it only cycles through just the first radio button within each fieldset. Whereas on Safari, it goes to each radio button for each fieldset.

As a result, when we press tab to reach the first radio of the last fieldset, and then press tab again, it does not cycle to the modal close button because the first option of the last fieldset is not the tail element in the list of tabbable elements. Here's where the logic fails.

@diasbruno diasbruno added this to the 4.0 milestone Feb 14, 2019
@coulgreer
Copy link

Hello, I don't mean to necro this, but has anyone found a workaround for this issue? I noticed that this issue is still open and I, too, am experiencing this issue :(

@stephenmcm
Copy link

🧟 Bringing this back form the dead has there been any work on finding a solution?
The way this is currently handled looks to need enhancement to check for type=radio and then walk for all matching name fields.

The current solution is clearly a WCAG violation as it breaks navigation for keyboard users, at minimum the documentation should be updated to highlight this.

@diasbruno
Copy link
Collaborator

diasbruno commented May 4, 2023

@stephenmcm @coulgreer @ryansukale The issue is still open. It's up for grabs - PRs are welcome.

@doeg
Copy link

doeg commented Feb 6, 2024

Hey @diasbruno, I'm going to take another look into this one. 👀 Will update once I have more information!

@diasbruno
Copy link
Collaborator

@doeg Awesome. Let me know if you need anything.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants