-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
fix multiselect dropdown with components as labels #3643
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
Merged
T4rk1n
merged 9 commits into
plotly:dev
from
AnnMarieW:fix-multi-select-dropdown-with-components-as-labels
Mar 23, 2026
Merged
Changes from 2 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
7ea7c65
fix multiselect dropdown with components as labels
AnnMarieW ff8961f
fixed test
AnnMarieW 98f2064
update after review
AnnMarieW 1edb877
update after review
AnnMarieW c634cf5
lint
AnnMarieW bc2719e
Merge branch 'dev' into fix-multi-select-dropdown-with-components-as-…
AnnMarieW 02acd6e
Merge branch 'dev' into fix-multi-select-dropdown-with-components-as-…
KoolADE85 422f311
Merge branch 'dev' into fix-multi-select-dropdown-with-components-as-…
KoolADE85 6076bb8
Merge branch 'dev' into fix-multi-select-dropdown-with-components-as-…
T4rk1n File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Adding this to the dependency array does appear to fix the bug, but I think we can fix it at a deeper level and avoid the side effects that are seen in the failing tests.
I believe the root bug is actually in optionRendering.tsx where we render the component via an
ExternalWrapper.Here, the
componentPath(required for the dash renderer) is constructed using the option's array index:I believe this is the problem. When we select an option, its index changes (it moves to the top of the list) but we don't have a way to inform the renderer. So, internally, it becomes confused about which component is at what index. It's confused until you re-open the dropdown or force a re-render of everything, which is what your original fix did.
We can instead construct a
componentPathusing the option'svalue(which should be unique across options):This will allow the renderer to keep a stable path to use internally and the index won't matter.
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! That works, and this solution has better performance.
I did have to change the test I added because the options do not change position while the dropdown is open, but I think that's a better UX