import * as React from 'react'; import styles from './DataTable.module.scss'; export interface IColumn { key: string; header: string; render: (row: T) => React.ReactNode; align?: 'left' | 'right' | 'center'; width?: string; // Держит колонку у правого края видимой области при горизонтальной // прокрутке — чтобы кнопки действий не уезжали за край на узких экранах. sticky?: boolean; } export interface IDataTableProps { columns: IColumn[]; rows: T[]; keyOf: (row: T) => string | number; emptyMessage: string; } export function DataTable({ columns, rows, keyOf, emptyMessage }: IDataTableProps): React.ReactElement { return (
{columns.map(col => ( ))} {rows.map(row => ( {columns.map(col => ( ))} ))}
{col.header}
{col.render(row)}
{rows.length === 0 &&
{emptyMessage}
}
); }