From ef1af58752952aaa3a3f6627e55850ba794259d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=20Gon=C3=A7aalves?= Date: Wed, 22 Oct 2025 19:56:32 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20rodap=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/DRE/analitico.tsx | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index 2457361..fa7f41f 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -274,6 +274,8 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { const [open, setOpen] = React.useState(false); const [columnFilters, setColumnFilters] = React.useState>({}); const [columnSorts, setColumnSorts] = React.useState>({}); + const [isFooterAnchored, setIsFooterAnchored] = React.useState(false); + const footerRef = React.useRef(null); const [conditions, setConditions] = React.useState([ { column: "", operator: "contains", value: "" }, ]); @@ -628,6 +630,29 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { }); }, [filteredData, columnSorts]); + // Detectar se o footer está sendo coberto e ancorá-lo na base da tela + React.useEffect(() => { + if (!footerRef.current) return; + + const observer = new IntersectionObserver( + (entries) => { + const [entry] = entries; + // Se o footer não está visível (está sendo coberto), ancora na base + setIsFooterAnchored(!entry.isIntersecting); + }, + { + threshold: 0.1, // Detectar quando 10% do footer está visível + rootMargin: '0px 0px -50px 0px' // Margem para detectar antes de ser completamente coberto + } + ); + + observer.observe(footerRef.current); + + return () => { + observer.disconnect(); + }; + }, [sortedAndFilteredData.length]); // Re-executar quando os dados mudarem + // Calcular totais das colunas de valores (usando dados filtrados) const columnTotals = React.useMemo(() => { if (!sortedAndFilteredData || sortedAndFilteredData.length === 0) { @@ -940,13 +965,14 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { {/* Footer com Totalizadores - Posicionado no lugar do footer nativo */} {sortedAndFilteredData.length > 0 && (