-
Notifications
You must be signed in to change notification settings - Fork 1.3k
fix: prevent form submission when required Select has more than 300 options and no selection #8280
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
base: main
Are you sure you want to change the base?
Conversation
…ptions and no selection
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 appears to be working as intended. I tried looking into a unit test for it working around the issue in the comment, but I don't think it's worth the effort in jsdom. Instead, we can write a play function to do it in storybook in the future
return ( | ||
<input | ||
type="hidden" | ||
type="text" |
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 should only be the case if validationBehavior="native"
. If validationBehavior="aria"
, then form submission should not be blocked. We should continue to use type="hidden"
in that case.
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.
8f2dc84 Thanks! I added a validationBehavior
control to the "Required Select With Many Items" story and tested that only validationBehavior="native"
blocks form submission now.
Edited: 89056dd fixes the error mentioned in #8280 (review) by changing the text input to be visually hidden.
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'm getting an error
An invalid form control with name='select' is not focusable. <input type="text" name="select" hidden required value>
I wonder if we could get around this by making the input VisuallyHidden instead of using hidden
. I tried it out, the console error goes away, but we get the native error handling/display. So we'd probably need to forward those to the Select somehow.
…sually hidden required input
return ( | ||
<input | ||
{...containerProps} | ||
{...inputProps} |
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.
Noticed in the story that keyboard tab navigation is broken, we'll want to put a tabIndex={-1}
on this element I think so it can't be tabbed to
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.
ddb1e00 Thanks
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.
Looks good to me, thanks for being so responsive
Closes #8034
✅ Pull Request Checklist:
📝 Test Instructions:
🧢 Your Project: