fix: prevent list item jump on hover in virtual scrolling (v2) #4064
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.
Note: This PR supersedes PR#3943 and includes an additional fix. The original implementation used
globalIndexfor the position offset calculation, which caused whitespace issues when scrolling through large lists:Changed to use
index(virtual window position) instead ofglobalIndex(absolute list position) to correctly calculate the 1px overlap offset:Description
With virtual scrolling enabled, selectable items would "jump" on hover/selection due to border width changes (AWSUI-61303). Virtual scrolling positions items absolutely, so when border width changes from 1px to 2px on hover, the browser recalculates layout dimensions causing visible position shifts.
Additionally, option groups were missing the separating top border.
The solution uses box-shadows when virtual scrolling is enabled to simulate thick borders while maintaining thin actual borders. An alternative solution of making all borders the same thickness (hover / non-hover) would change the visual appearance compared to how it's supposed to look.
In summary:
How has this been tested?
Changes ran through screenshot test and have been verified locally.
Review checklist
The following items are to be evaluated by the author(s) and the reviewer(s).
Correctness
CONTRIBUTING.md.CONTRIBUTING.md.Security
checkSafeUrlfunction.Testing
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.