Conversation
With a section expanded, the last row of the panel sat against the bottom edge
of the screen with only its top border showing, and it stayed there once
focused: pressing down again moved nothing. Collapsed, everything fit and the
panel looked fine.
The panel carried its bottom spacing as padding on the scrolling element, which
never became scrollable room, so scrollTop was already at its limit while the
row was still under the edge. keepFocusInView asks for the overflow plus
another 24px, the browser clamped it, and the row stayed put.
The browse rows already hit this and answered it the same way, with the room
carried as scroll content instead:
/* Scroll past the last row. As box padding this would set a floor under
the element height and push it past the bottom of the screen, so the
room is scroll content instead. */
Bottom padding moved into an ::after of the same height, so it counts toward
what can be scrolled.
Related to Moonfin-Client#441
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
✅ Build SuccessfulAll platform builds and the test suite passed. You can download the artifacts below.
|
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Pull Request
Summary
With a section expanded, the last row of the Sort & Filter panel sat against the bottom edge of the screen with only its top border showing — and stayed there once focused: pressing Down again moved nothing. Collapsed, everything fit and the panel looked fine.
Related Issues
Type of Change
Changes Made
The panel carried its bottom spacing as
paddingon the scrolling element:That padding never became scrollable room, so
scrollTopwas already at its limit while the last row was still under the edge.keepFocusInViewdoes the right arithmetic —(row.bottom - view.bottom) + 24— but the assignment was clamped and nothing moved. Hence a row that is focused, visibly cut off, and unreachable.The browse rows already hit this and answered it, and the fix here is the same shape:
So the panel's bottom padding moves into an
::afterof the same height, where it counts toward what can be scrolled. 40px rather than the browse rows' 60vh, since a side panel only needs to clear its own edge.Platform
Testing
Manually tested by @Kisnov on a Samsung TU43DU7105KXXC running Tizen 9: with a section expanded, the last row sits clear of the screen edge and is reachable.
npm run lint:cssclean (the legacy-CSS gate —::after,content,displayandheightare all well under the floor).enact lintclean acrosspackages/app/src.Test Steps
Screenshots (if applicable)
Not attached — I cannot produce them. Needs the app on a real panel. @Kisnov has a before shot on #441 and can add an after.
Checklist
enact lintandlint:cssboth cleanNot included
A dozen or so other scrolling panels use the same padding-on-the-scroller shape —
AccountModal,AddToCollectionModal,AddToPlaylistModal,IdentifyModal,NavBar .librariesGroup,Sidebar .navSection,SyncPlayDialog,Details .trackModalPanelamong them. Whether each actually clips depends on how far its content overflows, so they want checking on a set one at a time rather than a blind sweep.🤖 Generated with Claude Code