import styled from "@emotion/styled"; import { AccessorKeyColumnDefBase, flexRender, getCoreRowModel, IdIdentifier, useReactTable, } from "@tanstack/react-table"; import { FC, useEffect, useState } from "react"; import { File } from "../../types/file"; const TableRow = styled.tr` height: 48px; color: var(--color-text) !important; &:hover { background-color: var(--color-menu-hover); } `; export type TableProps = { columns: (AccessorKeyColumnDefBase & Partial>)[]; files: File[]; }; const Table: FC = ({ columns, files }) => { const [data, setData] = useState(() => [...files]); useEffect(() => { setData([...files]); }, [files]); const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), }); return ( {table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( ))} ))} {table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( ))} ))}
{header.isPlaceholder ? null : flexRender( header.column.columnDef.header, header.getContext(), )}
{flexRender(cell.column.columnDef.cell, cell.getContext())}
); }; export default Table;