Files
pad/web/src
xarmian 7aa5fa67f7 fix(web): an open mobile sheet stops page pull-to-refresh, and a pull from its list top closes it (BUG-3386) (#1830)
With the mobile Workspace sheet open, a downward swipe in the collection
list did not close it, and at the list's top it pull-to-refreshed the page.
DockedSheet put overscroll-behavior: contain on .ds-panel, which never
scrolls, so it did nothing: the list (.ds-content) is the scroller, and its
overscroll chained to the page.

- .ds-content gets overscroll-behavior: contain;
- while any DockedSheet is open the root is overscroll-behavior-y: none
  (html/body :has(.ds-panel)), so a drag on the backdrop, the grip, or a
  list too short to scroll cannot refresh the page either;
- a downward drag that starts in the list with the list at its top closes
  the sheet, the grip's existing close gesture continued into the content.
  A drag on a scrolled list, or one that moves up first, stays a scroll.

Applies to all three DockedSheets (Workspace, You, Quick capture).

Unit tests cover the content pull (close, snap back, scrolled list,
up-first, viewer in front); mutants removing the handler, the scrollTop
check and the up-first check each turn one red. The mobile-chromium e2e
drives a real CDP touch drag: red on main (root overscroll still auto
under the open sheet) and red on a mutant without the content handler
(the sheet stays open).

Claude-Session: https://claude.ai/code/session_01Q9WssCjFuHjSfLABoW4tmS
2026-10-06 10:59:53 -04:00
..