-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
ComboboxControl: add support for uncontrolled mode #42752
ComboboxControl: add support for uncontrolled mode #42752
Conversation
Regarding that test story.... I didn't add an Uncontrolled story because it felt like it would be a bit repetitive with it being so similar to the current story. The interaction would be pretty much identical. That said, if others think it would be beneficial, I'm happy to implement a new story on this PR as well... I can just swap out the logged value for a printed output the way the existing story does it. |
…ithout a provided `value` prop Co-authored-by: Marco Ciampini <marco.ciampo@gmail.com>
Size Change: +24 B (0%) Total Size: 1.26 MB
ℹ️ View Unchanged
|
7f094ff
to
0ff6dee
Compare
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.
Code changes LGTM 🚀
Before:
Kapture.2022-07-28.at.10.28.38.mp4
After:
Kapture.2022-07-28.at.10.26.29.mp4
Also tested the component in when editing a page's parent in the editor.
While working on the above PR, @ciampo and I noticed that ComboboxControl doesn't currently work as an uncontrolled component
The power of unit tests!
That said, if others think it would be beneficial, I'm happy to implement a new story on this PR as well... I can just swap out the logged value for a printed output the way the existing story does it.
I don't think there's a need — we usually use controlled examples on Storybook
Thanks @ciampo! |
What?
Related: #42403
Add the ability to implement
ComboboxControl
as an uncontrolled componentWhy?
While working on the above PR, @ciampo and I noticed that
ComboboxControl
doesn't currently work as an uncontrolled component. When novalue
prop is defined, there's nothing to pass to theinput
element's value attribute, so it ends up being undefined.How?
The wizardry of the
useControlledValue()
hook allows us to use a passed in value prop when the component is controlled, but fall back to managing this state internally in the absence of a prop.Testing Instructions
After applying this patch, add the following test snippet to the end of
packages/components/src/combobox-control/stories/index.js
:This will add an Uncontrolled Test story in Storybook. Launch Storybook locally and unsure that story works as expected. In the console, confirm that the abbreviation for the selected country is logged when you select it (this confirms the
onChange
function is being called).