Skip to content

feat(move-picker): hover-scroll truncated folder path labels - #411

Open
Monkey7539 wants to merge 2 commits into
maathimself:mainfrom
Monkey7539:feat/move-picker-hover-scroll
Open

feat(move-picker): hover-scroll truncated folder path labels#411
Monkey7539 wants to merge 2 commits into
maathimself:mainfrom
Monkey7539:feat/move-picker-hover-scroll

Conversation

@Monkey7539

Copy link
Copy Markdown
Contributor

Summary

Optional follow-up to the ancestor-path labels from #402: a deep path like Ice Rentals / Groups / Beacon Hill can still truncate in a 320px picker, leaving no way to read the clipped part. On hover, a label that overflows slides left marquee-style to reveal the remainder, then snaps back on leave. Labels that fit are completely unaffected, and there is no motion on touch devices (no hover).

Stacked on the labels PR — the first commit here is that PR's commit; only the FolderPathLabel.jsx change is new. Happy to rebase once the base lands, and equally happy to drop this one if the motion isn't wanted — it's deliberately separated so the core feature stands alone.

Changes

  • FolderPathLabel gains hover measurement: while hovered the segments stop flex-shrinking (natural width) so the true overflow can be measured, then the content translates left by exactly the clipped amount. The reveal pace scales with distance (~80px/s, min 0.4s) and a 0.3s delay keeps quick mouse passes over the list from triggering slides.
  • Pure CSS transform animation; no timers or rAF loops. State resets on mouse leave with a short ease-out.

Testing

  • Running in production on my instance: deep three-level paths reveal fully on hover in the context menu, message pane picker, and bulk-move picker; short labels show no motion; sweeping the cursor down the folder list triggers nothing.
  • npm run lint clean; full frontend suite passes (1686/1686).

Contributor License Agreement

By submitting this pull request I confirm that:

  • I have read and agree to the Contributor License Agreement.
  • My contribution is my own original work (or I have identified any
    third-party material and confirmed it is compatible with the CLA).
  • I have the right to submit this contribution under the terms of the CLA.

🤖 Generated with Claude Code

Monkey7539 and others added 2 commits August 27, 2026 14:53
Folders with the same name under different parents were
indistinguishable in the move-to-folder pickers. Prefix each entry with
its muted ancestor chain (Personal / Insurance) via a shared
FolderPathLabel, and let the search box match any path segment or a
parent/child query (delimiter-normalized), across the context menu,
message pane pickers, mobile move sheet, and bulk-move picker.

The delimiter and parent-path primitives live in folderDisplay.js and
the sidebar tree builder imports them from there, so the tree and the
pickers derive hierarchy from one source. Unit tests cover '/' and '.'
delimited accounts, including folder names that contain the other
account's delimiter.

Closes maathimself#402

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Long parent/child labels ellipsize in the pickers with no way to read
the remainder. On hover, when the label overflows, stop shrinking the
segments and slide the text left marquee-style to reveal the clipped
part (pace scales with distance, short delay filters quick passes),
snapping back on leave. Applies to all pickers via FolderPathLabel.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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