-
Notifications
You must be signed in to change notification settings - Fork 1.2k
scroll-padding
not respected when ListBox
is rendered in a Popover
#7037
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
Comments
@LFDanLu I think you've been looking at some scroll-padding issues in Table. Anything related to your findings here? |
https://issues.chromium.org/issues/365913982 which came from that Table investigation definitely shows up as an issue for when the ListBox isn't rendered in a Popover, but I'm not sure that is the reason for the "in popover" behavior that is being exhibited here since increases to the scroll-padding doesn't seem to affect the positioning at all still. |
I see the same erroneous behavior in Firefox Developer Edition |
We're having the issue too. Has anyone found a good workaround for this yet? |
I noticed scroll padding isn't working for us inside scrollable dialogs as well, perhaps related to #7131 - when focus moves around, the scroll padding I defined on the scroll container is not respected. |
In case it's helpful to the maintainers: I upgraded the packages in the sandbox to the latest released versions (3.36.3 and 1.5) and the issue persists. |
My guess is this: react-spectrum/packages/@react-aria/utils/src/scrollIntoView.ts Lines 87 to 89 in 7eae25e
If scroll locking is enabled, this alternate path is used: react-spectrum/packages/@react-aria/utils/src/scrollIntoView.ts Lines 102 to 106 in 7eae25e
scrollIntoView is a custom implementation that we use to avoid scrolling the body while a modal/popover is open. Unfortunately the native |
Ah interesting! I didn't know about the alternative path for scrolling - checking for scroll padding there seems like it would do the trick. If it's as simple as reading the scroll padding here and adding it, then I could take a stab at it? |
Sure, that'd be great |
@devongovett I've opened PR #7484 with a fix, thanks for pointing me in the right direction. |
Provide a general summary of the issue here
When a
ListBox
which containsscroll-padding
styles is rendered in aPopover
, the scroll padding is not respected. For example, the contact list example uses and shows the usefulness of scroll padding, but if that contact list was to be rendered in a popover, it would result in a bad keyboard experience as the focused item may be obscured by a sticky header.🤔 Expected Behavior?
Scroll padding should work regardless of whether the listbox is rendered in a popover.
😯 Current Behavior
The scroll padding during keyboard navigation is not respected, resulting in any sticky headers clipping the focused item.
The following video is from the code sandbox reproduction:
listbox-issue-encoded.mp4
💁 Possible Solution
I thought it was a general browser issue with scroll padding and having the scroll container hosted in a non-static container. I tried placing it in a simple div with
position: absolute|fixed
but the issue did not reproduce. It was only inside the popover I could reproduce it.🔦 Context
My use case is a
Select
with sticky headers:🖥️ Steps to Reproduce
See this code sandbox which includes both a reproduction and an option to render the list box outside a popover to observe that it works correctly otherwise.
Version
RAC 1.3.3, RA 3.34.3
What browsers are you seeing the problem on?
Chrome, Safari
If other, please specify.
No response
What operating system are you using?
macOS
🧢 Your Company/Team
No response
🕷 Tracking Issue
No response
The text was updated successfully, but these errors were encountered: