feat(ui): desktop scrolls inside, under a fixed header
On the desktop the window no longer scrolls: the area between header and footer does, with room for its scrollbar kept on both sides so the content stays centred and nothing shifts between pages. This replaces the scrollbar-gutter tricks (header colour in the gutter, Chrome's always-on scrollbar, which also let the sticky header scroll away in Chrome). Triage fills the height: card and buttons stay, the queue takes the rest and scrolls inside. The Kanban height fit and the Quick Dump button use the scroll area. Phones keep scrolling the window. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c31eed5a3a
commit
c7cff441a2
4 files changed
+48
-80
No files matched your search
@@ -554,11 +554,15 @@ export const TasksView: React.FC<TasksViewProps> = ({
|
||||
setKanbanColHeight(null);
|
||||
return;
|
||||
}
|
||||
// From the board's top to the window's bottom; then take back what still overflows (footer, paddings)
|
||||
const top = el.getBoundingClientRect().top + window.scrollY;
|
||||
setKanbanColHeight(Math.max(320, window.innerHeight - top - 16));
|
||||
// From the board's top to the bottom of the app's scroll area (the desktop window itself does not
|
||||
// scroll); then take back what still overflows (paddings)
|
||||
const area = el.closest<HTMLElement>('[data-app-scroll]');
|
||||
const areaTop = area ? area.getBoundingClientRect().top - area.scrollTop : -window.scrollY;
|
||||
const areaHeight = area ? area.clientHeight : window.innerHeight;
|
||||
const top = el.getBoundingClientRect().top - areaTop;
|
||||
setKanbanColHeight(Math.max(320, areaHeight - top - 16));
|
||||
requestAnimationFrame(() => {
|
||||
const over = document.documentElement.scrollHeight - window.innerHeight;
|
||||
const over = area ? area.scrollHeight - area.clientHeight : document.documentElement.scrollHeight - window.innerHeight;
|
||||
if (over > 0) setKanbanColHeight((h) => (h ? Math.max(320, h - over) : h));
|
||||
});
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user