fix: re-render issues for report-table

This commit is contained in:
Carl-Gerhard Lindesvärd
2025-12-02 22:08:43 +01:00
parent e4b919c4da
commit 3ae7d1322e

View File

@@ -13,7 +13,6 @@ import {
getCoreRowModel, getCoreRowModel,
getExpandedRowModel, getExpandedRowModel,
getFilteredRowModel, getFilteredRowModel,
getSortedRowModel,
useReactTable, useReactTable,
} from '@tanstack/react-table'; } from '@tanstack/react-table';
import { import {
@@ -26,15 +25,12 @@ import { ChevronDown, ChevronRight } from 'lucide-react';
import type * as React from 'react'; import type * as React from 'react';
import { useEffect, useMemo, useRef, useState } from 'react'; import { useEffect, useMemo, useRef, useState } from 'react';
import { Tooltiper } from '@/components/ui/tooltip';
import { ReportTableToolbar } from './report-table-toolbar'; import { ReportTableToolbar } from './report-table-toolbar';
import { import {
type ExpandableTableRow, type ExpandableTableRow,
type GroupedItem,
type GroupedTableRow, type GroupedTableRow,
type TableRow, type TableRow,
groupsToExpandableRows, groupsToExpandableRows,
groupsToTableRows,
transformToHierarchicalGroups, transformToHierarchicalGroups,
transformToTableData, transformToTableData,
} from './report-table-utils'; } from './report-table-utils';
@@ -1151,14 +1147,10 @@ export function ReportTable({
}, []); }, []);
// Get the row model to use (expanded when grouped, regular otherwise) // Get the row model to use (expanded when grouped, regular otherwise)
// filteredRows is already sorted, so getExpandedRowModel/getRowModel should preserve that order // Always call the table helpers so React Table can manage its own memoization
// We need to recalculate when filteredRows changes to ensure sorting is applied const rowModelToUse = grouped
const rowModelToUse = useMemo(() => { ? table.getExpandedRowModel()
if (grouped) { : table.getRowModel();
return table.getExpandedRowModel();
}
return table.getRowModel();
}, [table, grouped, expanded, filteredRows.length, sorting]);
const virtualizer = useWindowVirtualizer({ const virtualizer = useWindowVirtualizer({
count: rowModelToUse.rows.length, count: rowModelToUse.rows.length,