#301: stop /settings scrolling horizontally at 320px #309
No reviewers
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#309
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "issue-301-settings-reflow"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #301.
The layout skeleton was already hardened for narrow viewports in #165 (
min-width: 0on the content column, stacking below 60rem, the nav strip scrolling inside itself). The overflow therefore had to come from content inside a section, and two candidates could not shrink:width: 100%or not — four columns, one carrying the full user-agent string. It now scrolls inside its own container..settings-checkboxrows.display: flexwith noflex-wrap, and the accent swatches are fixed-size circles that cannot shrink. An unwrappable row sets a floor for the entire page width.The scroll container is keyboard-operable
overflow-x: autoalone produces a region only a mouse or trackpad can pan. The wrapper therefore carriestabIndex={0},role="region"and a name, so keyboard users can reach and scroll it. Fixing a reflow failure by creating a keyboard trap would be a poor trade.overflow: hiddenwas not used: it removes the scrollbar by clipping the content, which hides data rather than making it reachable.The guard names the culprit
axe does not cover SC 1.4.10 — it is not derivable from the DOM — so the a11y pack gained a separate reflow check. It asserts
scrollWidth === clientWidthat 320×800 and, when it trips, reports each overflowing element with its class list, right edge and width.That matters for the next time: without it a failure tells you only that the page overflows, leaving you to bisect in devtools. It went into
a11y.spec.tsrather than a new file because the CI job invokes specs by name — a newreflow.spec.tswould not have run without a workflow change.Honest limits
I did not reproduce the original ~23px in a browser; the fixes come from reading the layout, and this PR's CI run is the actual measurement. Both changes are correct independently of what the exact culprit was — a wide table belongs in a scroll container, and those rows should wrap — but if the guard still trips, its output will name what is left, and I will follow up in the same PR.
The a11y pack gains one more login (
fixture-user). If the login rate limit trips before the later packs, a reset step inci.ymlis the fix.Checked:
pnpm typecheckand fullpnpm lintgreen.ef5f570dbfto5164801676