fix(board): show total count in Done column and infinite scroll (#501)

* fix(board): show total count in Done column header and auto-load on scroll

- Column header now shows server-side doneTotal instead of loaded count
- Replace "Load more" button with IntersectionObserver sentinel for
  infinite scroll in the Done column

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(board): move sentinel below imports and stabilize observer

- Move InfiniteScrollSentinel after all import statements
- Use callback ref to avoid recreating IntersectionObserver on every render

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(board): add optional chaining for IntersectionObserver entry

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
LinYushen 2026-04-08 16:33:17 +08:00 committed by GitHub
parent c6ba954eb8
commit 0c45864ef0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -43,7 +43,7 @@ function InfiniteScrollSentinel({ onVisible, loading }: { onVisible: () => void;
const node = sentinelRef.current; const node = sentinelRef.current;
if (!node) return; if (!node) return;
const observer = new IntersectionObserver( const observer = new IntersectionObserver(
([entry]) => { if (entry.isIntersecting) onVisibleRef.current(); }, ([entry]) => { if (entry?.isIntersecting) onVisibleRef.current(); },
{ rootMargin: "100px" }, { rootMargin: "100px" },
); );
observer.observe(node); observer.observe(node);