Make mobile search a flyout (animate as well) and increase the hitbox of the search button / make it more easily identifiable as a button #177
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente#177
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
🤖 On it — follow along in the action run; the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the task runs.
Pushed
claude/issue-177.What changed
The compact search is a flyout now, not a full-screen mode. Below 960px, opening the box used to replace the whole page: the field at the top, the board gone, and most of the screen blank under eight rows of results. It now hangs under the header as a flyout, right-aligned to the window rather than to its trigger — what sits between the trigger and the window's edge is the two view links and the admin fold (~320px of them), so a 26rem panel anchored to the trigger's right edge starts at -146px in a 620px window, and off the other edge if it's anchored left. Anchored to the window it always fits, and the trigger is always inside its span, which is what
.nav-admin-menubeside it already does.On a phone it's a sheet standing on the bar — the shape of the two menus beside it, and
docs/ui.md's sheet rule rather than an exception to it. It rises on the samesheetRise, casts the same upwards-only--shadow-sheet, dims the board above rather than replacing it, and leaves the magnifier lit underneath, so a second tap on the same spot is the way back out.Two things inside that sheet are worth naming:
position: fixedto the layout viewport and a keyboard shrinks only the visual one —dvh,vhandenv()all describe the layout viewport too — so the field would be drawn underneath the thing it's typed on, every time it opened.search-interop.jswatchesvisualViewportand publishes--keyboard-inset; the sheet sits onmax(--phone-nav-h, --keyboard-inset)and caps its height against the same number. Unset (novisualViewport, or the module failed to load) the fallback is0pxand the sheet is simply on the bar. Anything under 120px is read as zero, or the sheet would hop with the URL bar. It's also why the phone keeps "Close": with the keyboard up, the trigger is behind one.And the trigger reads as a button. It was a bare glyph between a board name and a face in a pill — a label for the row rather than the third thing in it you can press. It takes
.nav-menu-toggle's box (filled--bg-2, hairline border, pill), grows from 38×38 to 46×40 at tablet widths and from 44×44 to 52×44 on the phone's bar, and the mark goes 18px → 20px so it isn't adrift inside it. The one inside the field stays 16px.Verified
dotnet build/dotnet test Ponente.sln— 448 passed,DocumentationTestsincluded.search.spec.js,mobile.spec.js,calendar*.spec.js,filter.spec.js,i18n,icons,prefsall green on a fresh database.search.spec.jsgained assertions for the new shapes: the trigger is filled rather than transparent; the sheet's bottom is the bar's top (±2px) with the board still visible above; its shadow has no positive y-offset; the list sits above the field; a second tap on the trigger closes it; and at 620px the flyout stays inside the window with its trigger under it — that last one pins the -146px bug directly.--keyboard-insetforced to 320px to confirm the sheet lifts onto the keyboard and clamps its height.Notes
Changelog.Unreleased, so this changes a shape no member has seen; the existing bullet is still accurate. Adding one would describe a change from a state that never shipped.docs/search.md("The box") is rewritten for the three shapes, the anchoring arithmetic and the keyboard;docs/ui.mdno longer says the search is the sheet that covers the bar;docs/frontend.mdlists--keyboard-insetassearch-interop.js's fourth job.boards.spec.js:165("the nav switches boards"), fails in this container atexpectVisibleSoon('.board > .column')— but it fails identically on unmodifiedmain, so it isn't from this change. I couldn't tell whether it's real or an artifact of running outside the compose stack (no podman/docker here, so the app ran host-side against a local Postgres), so I haven't filed it. The other 15 failures in the full run are the PDS and forge containers being absent.⏱ 31m 34s · 112 turns · tokens: 187.1k in / 73.3k out (+14598.9k cache-read)
📜 Full session transcript
→ Opened PR: #178