fix: memoize getMenuProps for Multiselect and Filterable Multiselect #17022
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.
Closes #16867
Closes #17021
Closes #17020
This PR does these primary things to Multiselect and Filterable Multiselect
getMenuProps
to avoid an infinite loopautoAlign={true}
The first fixes the problem for max depth call that results in infinite loop, the second is an indirect improvement. If the refs had initially been guarded, this bug would've been isolated to users using
autoAlign
. Because the refs were not guarded, the bug was present for everyone regardless of ifautoAlign
was being used.This PR also verifies if the refs of components - popover, tooltip, dropdown, are guarded with autoalign prop.
Changelog
Changed
getMenuProps
inuseMemo
to multiselect and filterable multiselectTesting / Reviewing
with experimental autoalign
multiselect storyautoAlign
works as expected on multiselect by resizing the browser window, playing with scroll, and opening/closing the listbox