diff --git a/app/components/MobileFundTable.jsx b/app/components/MobileFundTable.jsx index 7a718a1..f4ce408 100644 --- a/app/components/MobileFundTable.jsx +++ b/app/components/MobileFundTable.jsx @@ -354,13 +354,19 @@ export default function MobileFundTable({ const nextStickyTop = getEffectiveStickyTop(); setEffectiveStickyTop((prev) => (prev === nextStickyTop ? prev : nextStickyTop)); - const tableRect = tableContainerRef.current?.getBoundingClientRect(); + const tableEl = tableContainerRef.current; + const tableRect = tableEl?.getBoundingClientRect(); if (!tableRect) { setShowPortalHeader(window.scrollY >= nextStickyTop); return; } - setShowPortalHeader(tableRect.top <= nextStickyTop); + const headerEl = tableEl?.querySelector('.table-header-row'); + const headerHeight = headerEl?.getBoundingClientRect?.().height ?? 0; + const hasPassedHeader = (tableRect.top + headerHeight) <= nextStickyTop; + const hasTableInView = tableRect.bottom > nextStickyTop; + + setShowPortalHeader(hasPassedHeader && hasTableInView); }; const throttledVerticalUpdate = throttle(updateVerticalState, 1000/60, { leading: true, trailing: true }); diff --git a/app/components/PcFundTable.jsx b/app/components/PcFundTable.jsx index 3f3b826..c4884ab 100644 --- a/app/components/PcFundTable.jsx +++ b/app/components/PcFundTable.jsx @@ -412,7 +412,12 @@ export default function PcFundTable({ return; } - setShowPortalHeader(rect.top <= nextStickyTop); + const headerEl = tableEl?.querySelector('.table-header-row'); + const headerHeight = headerEl?.getBoundingClientRect?.().height ?? 0; + const hasPassedHeader = (rect.top + headerHeight) <= nextStickyTop; + const hasTableInView = rect.bottom > nextStickyTop; + + setShowPortalHeader(hasPassedHeader && hasTableInView); setPortalHorizontal((prev) => { const next = {