import * as React from 'react'; import { ColumnDef, flexRender, getCoreRowModel, useReactTable, } from '@tanstack/react-table'; import TableHeader from './TableHeader'; import { IconProp } from '@fortawesome/fontawesome-svg-core'; import styled from '@emotion/styled'; type OwnProps = { data: Array; columns: Array>; viewName: string; viewIcon?: IconProp; }; const StyledTable = styled.table` min-width: 100%; border-radius: 4px; border: 1px solid #f5f5f5; border-spacing: 0; td, th { border: 1px solid #f5f5f5; font-size: 12px; text-align: left; padding: 11px 0 11px 4px; } `; function Table({ data, columns, viewName, viewIcon }: OwnProps) { const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), }); return (
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( {header.isPlaceholder ? null : flexRender( header.column.columnDef.header, header.getContext(), )} ))} ))} {table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( {flexRender(cell.column.columnDef.cell, cell.getContext())} ))} ))} {table .getFooterGroups() .flatMap((group) => group.headers) .filter((header) => !!header.column.columnDef.footer).length > 0 && ( {table.getFooterGroups().map((footerGroup) => ( {footerGroup.headers.map((header) => ( {header.isPlaceholder ? null : flexRender( header.column.columnDef.footer, header.getContext(), )} ))} ))} )}
); } export default Table;