Skip to content

fix(web): keep select poppers inside collision bounds - #755

Merged
XiaoSeS merged 1 commit into
mainfrom
fix/select-popper-viewport-followup
Aug 25, 2026
Merged

fix(web): keep select poppers inside collision bounds#755
XiaoSeS merged 1 commit into
mainfrom
fix/select-popper-viewport-followup

Conversation

@XiaoSeS

@XiaoSeS XiaoSeS commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

What

Keep shared Select popper content inside Radix collision bounds on small viewports.

Why

The previous shared Select fix added viewport-based max height, but the component still applied Tailwind translate utilities after Radix calculated the collision boundary. On short browser windows, that static transform could move the menu a few pixels outside the viewport.

This is visible in long Select menus such as the publish namespace picker.

How

  • Move the default popper gap to Radix sideOffset={4}.
  • Remove static translate-* side transforms from SelectContent.
  • Add a contract test so the shared Select does not reintroduce static popper transforms.

Testing

  • pnpm exec vitest run src/shared/ui/select.test.ts
  • pnpm run typecheck
  • pnpm run lint
  • Local release Compose preview built and started from the exact SHA.
  • Manual validation passed on the publish namespace picker with 30 seeded namespaces.

Impact

  • Frontend-only shared UI fix.
  • No API, schema, backend, scanner, migration, or deployment-chain change.

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
@XiaoSeS
XiaoSeS force-pushed the fix/select-popper-viewport-followup branch from ac2cb2b to b2d5a90 Compare August 25, 2026 11:47
@XiaoSeS
XiaoSeS merged commit 7599dd0 into main Aug 25, 2026
10 checks passed
@XiaoSeS
XiaoSeS deleted the fix/select-popper-viewport-followup branch August 25, 2026 12:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant