import React from 'react'; import MaterialUITableBody from '@material-ui/core/TableBody'; import TableRow from '@material-ui/core/TableRow'; import TableCell from '@material-ui/core/TableCell'; import makeStyles from '@material-ui/core/styles/makeStyles'; import { Row, TableBodyPropGetter, TableBodyProps, UseExpandedRowProps } from 'react-table'; import { TableExpandable } from './TableExpandable'; import { Loader } from '../Loader'; type TableTBodyProps = { loading?: boolean; getTableBodyProps: (propGetter?: TableBodyPropGetter) => TableBodyProps; prepareRow: (row: Row) => void; rows: (Row & UseExpandedRowProps)[]; renderExpandedComponent?: (data: T, index: number) => React.ReactNode; }; const useRowStyles = makeStyles({ root: { '& > *': { borderBottom: 'unset', }, }, cell: { wordWrap: 'break-word', display: 'flex', alignItems: 'center', }, }); export const TableBody: React.FC> = (props: TableTBodyProps) => { const { getTableBodyProps, prepareRow, rows, renderExpandedComponent, loading } = props; const classes = useRowStyles(); return ( <> {rows.map((row) => { prepareRow(row); return ( {row.cells.map((cell) => { if (cell.column.id.includes('expander') || cell.column.id.includes('selection')) { return {cell.render('Cell')}; } return ( {cell.render('Cell')} ); })} ); })} {loading && rows.length === 0 && ( )} {loading && rows.length > 0 && } ); };