From 9e4cfa004546e44519c8752cb67772e10181baa8 Mon Sep 17 00:00:00 2001 From: Tal Koren Date: Sun, 21 Jan 2024 17:14:32 +0200 Subject: [PATCH] fix(TableVirtualized): support row height (#1909) --- src/components/Table/Table/Table.module.scss | 3 --- src/components/Table/Table/Table.tsx | 7 ++++--- src/components/Table/Table/TableConsts.ts | 5 ++++- .../Table/TableVirtualizedBody/TableVirtualizedBody.tsx | 7 +++++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/components/Table/Table/Table.module.scss b/src/components/Table/Table/Table.module.scss index f014c8e028..4f21302af7 100644 --- a/src/components/Table/Table/Table.module.scss +++ b/src/components/Table/Table/Table.module.scss @@ -1,7 +1,4 @@ .table { - --row-size-medium: 40px; - --row-size-large: 48px; - background-color: var(--primary-background-color); overflow: auto; width: 100%; diff --git a/src/components/Table/Table/Table.tsx b/src/components/Table/Table/Table.tsx index 88d85ffb0d..37cd385546 100644 --- a/src/components/Table/Table/Table.tsx +++ b/src/components/Table/Table/Table.tsx @@ -6,7 +6,7 @@ import { ITableBodyProps } from "../TableBody/TableBody"; import { getTableRowLayoutStyles } from "./tableHelpers"; import { getTestId } from "../../../tests/test-ids-utils"; import { ComponentDefaultTestId } from "../../../tests/constants"; -import { RowSizes } from "./TableConsts"; +import { RowHeights, RowSizes } from "./TableConsts"; import styles from "./Table.module.scss"; export type TableLoadingStateType = "long-text" | "medium-text" | "circle" | "rectangle"; @@ -44,6 +44,7 @@ interface ITableContext { dataState?: ITableProps["dataState"]; emptyState: ITableProps["emptyState"]; errorState: ITableProps["errorState"]; + size: ITableProps["size"]; } export const TableContext = React.createContext(null); @@ -76,14 +77,14 @@ const Table: VibeComponent & { */ const calculatedStyle = { "--table-grid-template-columns": gridTemplateColumns, - "--table-row-size": size == Table.sizes.MEDIUM ? "var(--row-size-medium)" : "var(--row-size-large)", + "--table-row-size": `${RowHeights[size]}px`, ...style } as React.CSSProperties; const testId = dataTestId || getTestId(ComponentDefaultTestId.TABLE, id); return ( - +
{children}
diff --git a/src/components/Table/Table/TableConsts.ts b/src/components/Table/Table/TableConsts.ts index 10f8d7278b..0d025c26c3 100644 --- a/src/components/Table/Table/TableConsts.ts +++ b/src/components/Table/Table/TableConsts.ts @@ -5,4 +5,7 @@ export enum RowSizes { LARGE = "large" } -export type RowSize = typeof RowSizes | number; +export const RowHeights = { + [RowSizes.MEDIUM]: 40, + [RowSizes.LARGE]: 48 +}; diff --git a/src/components/Table/TableVirtualizedBody/TableVirtualizedBody.tsx b/src/components/Table/TableVirtualizedBody/TableVirtualizedBody.tsx index 349dc35102..816563b288 100644 --- a/src/components/Table/TableVirtualizedBody/TableVirtualizedBody.tsx +++ b/src/components/Table/TableVirtualizedBody/TableVirtualizedBody.tsx @@ -1,9 +1,11 @@ -import React, { ComponentProps, CSSProperties, FC, useCallback } from "react"; +import React, { ComponentProps, CSSProperties, FC, useCallback, useContext } from "react"; import { VibeComponentProps } from "../../../types"; import VirtualizedList, { VirtualizedListItem } from "../../VirtualizedList/VirtualizedList"; import TableBody from "../TableBody/TableBody"; import styles from "./TableVirtualizedBody.module.scss"; import { ScrollDirection } from "react-window"; +import { TableContext } from "../Table/Table"; +import { RowHeights } from "../Table/TableConsts"; export interface ITableVirtualizedBodyProps extends VibeComponentProps { items: ComponentProps["items"]; @@ -19,13 +21,14 @@ const TableVirtualizedBody: FC = ({ items, rowRender }, [rowRenderer] ); + const { size } = useContext(TableContext); return ( 40} + getItemHeight={() => RowHeights[size]} layout="vertical" onScroll={onScroll} />