Fix ActionMenu position issue when container is scrollable #3207
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.
What are you trying to accomplish?
This PR fixes a bug in
ActionMenu
that causes the menu not to travel with the invoker button when scrolling inside a container that scrolls independent of the body, eg. with a constrained height andoverflow: auto
.Screenshots
Before
Alt: An
ActionMenu
is opened and the page scrolled. The menu stays fixed in its original position as the page scrolls up and down. The menu is closed and re-opened, which temporarily attaches the menu to the button.before.mov
After
Alt: An
ActionMenu
is opened and the page scrolled. The menu remains attached to the button as the page scrolls up and down.after.mov
Integration
No changes necessary in production.
List the issues that this change affects.
Fixes #3175
Risk Assessment
What approach did you choose and why?
I adopted a technique we used in
SelectPanel
which is based onActionMenu
) that updates the<anchored-position>
element whenever the page scrolls. This is a bit tricky because attaching ascroll
event listener towindow
is not enough here, since the scrolling element is actually the container instead of the page body. I was able to get things to work by capturing thescroll
event.Accessibility
Merge checklist
- [ ] Added/updated tests(I don't think there's a reliable way to test this)- [ ] Added/updated documentationTake a look at the What we look for in reviews section of the contributing guidelines for more information on how we review PRs.