From 26265707a66ce1ccc627bf2959a9cae419346852 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:28:52 +0300 Subject: [PATCH] M: Improve table column width when NoHeader is on --- .../src/components/ui/DataTable/DataTable.tsx | 12 +++++++++++- .../src/components/ui/DataTable/TableBody.tsx | 3 ++- .../src/components/ui/DataTable/TableHeader.tsx | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/rsconcept/frontend/src/components/ui/DataTable/DataTable.tsx b/rsconcept/frontend/src/components/ui/DataTable/DataTable.tsx index bb1e0eb8..55540af7 100644 --- a/rsconcept/frontend/src/components/ui/DataTable/DataTable.tsx +++ b/rsconcept/frontend/src/components/ui/DataTable/DataTable.tsx @@ -138,9 +138,19 @@ function DataTable({ } }, [rows, dense, noHeader, contentHeight]); + const columnSizeVars = useMemo(() => { + const headers = tableImpl.getFlatHeaders(); + const colSizes: Record = {}; + for (const header of headers) { + colSizes[`--header-${header.id}-size`] = header.getSize(); + colSizes[`--col-${header.column.id}-size`] = header.column.getSize(); + } + return colSizes; + }, [tableImpl.getState().columnSizingInfo, tableImpl.getState().columnSizing]); + return (
- +
{!noHeader ? ( ({ style={{ cursor: onRowClicked || onRowDoubleClicked ? 'pointer' : 'auto', paddingBottom: dense ? '0.25rem' : '0.5rem', - paddingTop: dense ? '0.25rem' : '0.5rem' + paddingTop: dense ? '0.25rem' : '0.5rem', + width: noHeader && index === 0 ? `calc(var(--col-${cell.column.id}-size) * 1px)` : 'auto' }} onClick={event => handleRowClicked(row, event)} onDoubleClick={event => (onRowDoubleClicked ? onRowDoubleClicked(row.original, event) : undefined)} diff --git a/rsconcept/frontend/src/components/ui/DataTable/TableHeader.tsx b/rsconcept/frontend/src/components/ui/DataTable/TableHeader.tsx index cf3c1700..4995217d 100644 --- a/rsconcept/frontend/src/components/ui/DataTable/TableHeader.tsx +++ b/rsconcept/frontend/src/components/ui/DataTable/TableHeader.tsx @@ -41,7 +41,7 @@ function TableHeader({ style={{ paddingRight: enableSorting && header.column.getCanSort() ? '0px' : '2px', textAlign: 'start', - width: header.getSize(), + width: `calc(var(--header-${header?.id}-size) * 1px)`, cursor: enableSorting && header.column.getCanSort() ? 'pointer' : 'auto' }} onClick={enableSorting ? header.column.getToggleSortingHandler() : undefined}