FE-1182: Show horizontal scrollbar in entities table view#8997
FE-1182: Show horizontal scrollbar in entities table view#8997claude[bot] wants to merge 1 commit into
Conversation
The 'Show more entities' bar was absolutely positioned over the bottom of the grid, offset by a scrollbar height measured once from the first .dvn-scroller in the document. The measurement was 0 whenever the effect ran before the grid's scroller mounted (and always with overlay scrollbars), so the bar sat at bottom: 0 and covered the grid's native horizontal scrollbar, leaving columns unreachable by scrollbar. Render the bar in normal flow below the grid instead, shrinking the grid by the bar's height so the total footprint is unchanged. This removes the scrollbar measurement and the experimental paddingBottom overlay compensation entirely. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01243QS3xBEGK8T8fmZ4PMeA
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
PR SummaryLow Risk Overview The load-more bar no longer uses absolute positioning over the bottom of the grid. It sits in normal document flow under the Removed the one-shot Reviewed by Cursor Bugbot for commit bb754ce. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit bb754ce. Configure here.
| */ | ||
| hasMoreRowsAvailable | ||
| ? `min(calc(${maxHeight} - ${loadMoreRowHeight}px), 600px)` | ||
| : `min(${maxHeight}, 600px)` |
There was a problem hiding this comment.
Six hundred cap ignores bar
Low Severity
When hasMoreRowsAvailable is true, the grid height uses min(calc(${maxHeight} - 60px), 600px) while the load-more bar adds another 60px in normal flow. If maxHeight is above 600px, the inner min still fixes the grid at 600px, so the stack grows by 60px versus the previous overlaid bar layout.
Reviewed by Cursor Bugbot for commit bb754ce. Configure here.
There was a problem hiding this comment.
Accurate observation, leaving it for reviewers to judge: the stack never exceeds the available height (maxHeight already accounts for the viewport), so this only makes the widget up to 660px instead of 600px on tall viewports, showing more rows. If the old 600px total cap is preferred, the change is min(calc(${maxHeight} - 60px), 600px) → calc(min(${maxHeight}, 600px) - 60px).


Requested by Tim Diekmann · Slack thread
🌟 What is the purpose of this PR?
Before: on the
/entitiespage table view, there is no horizontal scrollbar whenever the "Show more entities" bar is present (i.e. whenever more rows are available than the 500 loaded), so columns wider than the viewport are unreachable by scrollbar.After: the grid's native horizontal scrollbar is visible at the bottom of the table, above the "Show more entities" bar, and all columns are reachable.
How: the "Show more entities" bar was rendered
position: absoluteover the bottom of the grid, offset upwards by a scrollbar height that was measured only once, from the first.dvn-scrollerin the document, in an effect keyed onrows.length. That measurement is0whenever the effect runs before the grid's scroller has mounted (glide-data-grid renders an empty placeholder until itsResizeObserverreports a size, androws.lengthnever changes again to re-trigger the effect), and always0with overlay scrollbars (macOS). With a measurement of0, the 60px white bar sat atbottom: 0and covered the grid's horizontal scrollbar completely. This PR renders the bar in normal flow below the grid instead, shrinking the grid by the bar's height so the total footprint is unchanged, and deletes the scrollbar-size measurement and theexperimental.paddingBottomoverlay compensation entirely. This avoids any scrollbar-size measurement, so it cannot reintroduce the measurement feedback loop being removed fromuseScrollLockin #8995.🔗 Related links
document.body, and the grid scrolls inside its own.dvn-scroller); the overlay pattern predates the recent entities-visualizer refactors, and H-6512, H-6625: Improve loading, org invites, action bell routing #8917 made it show based onnextCursor != null.🚫 Blocked by
Nothing.
🔍 What does this change?
apps/hash-frontend/src/pages/shared/entities-visualizer/entities-table.tsx:horizontalScrollbarHeight/verticalScrollbarWidthstate and the one-shotdocument.querySelector(".dvn-scroller")measurement effectStackis now a normal flow child below theGrid(noposition: absolute/bottom/ width compensation)Gridheightsubtracts the bar height when the bar is shown, keeping the table's total height budgetexperimental.paddingBottom, which existed only to keep the last row visible under the overlaid barPre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
🐾 Next steps
queryEntitySubgraphreturns a non-nullcursoron the final page: if so, the "Show more entities" bar (and a no-op fetch) shows even when everything is already loaded — worth a separate follow-up.🛡 What tests cover this?
❓ How to test this?
/entitiesin a web with more than 500 entities (so the "Show more entities" bar appears).📹 Demo
N/A (no screenshot available; reporter could not provide one either).
🤖 Generated with Claude Code
https://claude.ai/code/session_01243QS3xBEGK8T8fmZ4PMeA
Generated by Claude Code
Linear issue: FE-1182