restore vertical axes of scroll bars

This commit is contained in:
2026-07-20 10:13:06 -03:00
parent 8136c01403
commit cc397e9982
4 changed files with 132 additions and 37 deletions

View File

@@ -40,14 +40,18 @@ have comments keep showing the count as before.
When you drop a card (or Kanboard auto-refreshes the board via polling), it rebuilds the
board with `$("#board-container").replaceWith(...)`, and the new element starts scrolled to
the far left -- so the view jumps back to the first column. A **full page reload** (for
example clicking the Done/Todo badge, which navigates and redirects back to the board) does
the same. This tweak remembers the horizontal scroll position and restores it in both cases,
so the board stays where you were.
example clicking the Todo/Done badge or the "Mark all" action, which navigate and redirect back to
the board) does the same. This tweak remembers the scroll position -- **horizontal and vertical** --
and restores it in both cases, so the board stays where you were.
- Implemented in `Asset/js/keep-scroll.js`: it observes the stable parent (the container
itself is replaced) and restores `scrollLeft` on whichever `#board-container` is current
after an AJAX rebuild, and persists the position per board in `sessionStorage` so it also
survives a full page reload.
- Implemented in `Asset/js/keep-scroll.js`: it observes the stable parent (the container itself is
replaced) and restores, on whichever `#board-container` is current after an AJAX rebuild and again
after a full reload (persisted per board in `sessionStorage`):
- the **horizontal** position (`#board-container.scrollLeft`);
- the **page vertical** position in expanded mode (`window.scrollY`);
- the **per-column vertical** position in compact/collapsed mode -- each native
`.board-task-list-compact` list, keyed by its `data-swimlane-id` + `data-column-id`, so every
column keeps its own place independently (works with or without ShrinkVertically).
- **On by default.** Toggle it under "Settings -> Organon Tweaks".
### Open a card only on a quick click