fix(viewer): stop clipping eval results table and metric dropdown. - #324
Open
alex ngo (ango10) wants to merge 1 commit into
Open
fix(viewer): stop clipping eval results table and metric dropdown.#324alex ngo (ango10) wants to merge 1 commit into
alex ngo (ango10) wants to merge 1 commit into
Conversation
alex ngo (ango10)
requested review from
Aaron Aspinwall (AaronAspinwall123) and
sooyeonni (sooyeonni)
as code owners
August 19, 2026 23:24
Collaborator
Author
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.


Summary
Fixes the evaluation-results table on the suite page, where the right-hand columns were clipped rather than scrollable, and fixes the metric dropdown menus that the scroll-container fix then exposed as clipped.
Motivation / linked issue
Closes #322.
The Total column was unreachable on every suite. Not just long metric names, and not just narrow monitors. The page container is Primer's
container-xl(max 1280px), so usable width is ~1198px regardless of screen size, while the table rendered at 1331px. The wrapper usedoverflow-hidden, so that 133px simply disappeared with no scrollbar to recover it.Changes
overflow-hidden→overflow-x-autoon the results-table wrapper, matching the pattern already used on the compare page. This is the safety net: no column can become unreachable again, whatever metrics a user selects.<th>was declaredw-32, butPrimerDropdown's trigger is a fixed-heightwhite-space: nowrapbutton, sow-32could never bind — "Impermissible behavior violated" alone forced the column to 285px. Wrapping brings the table to 1198px, exactly inside the container, without shortening any metric name.labels.tsis shared with other surfaces and is deliberately untouched.truncateapplies. Thetruncateclass there was dead code: neither it normin-w-0can bind inside an auto-layout<td>, which grows to max-content, so the full target string rendered every time. Amax-won an inner block element makes the truncation and itstitletooltip work as originally intended.PrimerDropdownmenus now renderposition: fixed, anchored to the trigger's viewport rect. Making the wrapper a scroll container exposed a second bug: an absolutely-positioned menu cannot escape an ancestor scroll context, so an open metric dropdown was cut off at 101px of overhang and its options were unreadable. It also inflated the wrapper'sscrollWidth(1198 → 1300), producing a stray horizontal scrollbar whenever a menu was open. A fixed menu is neither clipped nor counted in an ancestor's scroll extent, so both symptoms resolve from one change.PrimerDropdownpreviously lacked: horizontal flip to right-aligned, vertical flip above the trigger, viewport clamping, and repositioning on scroll/resize while open.Testing
npm run check: 0 errors (6 warnings, all pre-existing inroutes/new/+page.svelte).npm run build: passes.position: fixed, fully in-viewport, with unclipped option text. Negative control: all 15 wereabsolutebefore, 3 of them escaping the viewport entirely.Checklist
pytestand/or viewer checks as applicable).CHANGELOG.mdentry is included.