import React from "react"; import {Paper, Table, TableBody, TableCell, TableContainer, TableHead, TablePagination, TableRow} from "@mui/material"; interface Column { id: string; label: string; minWidth?: number; align?: 'right'; format?: (value: number) => string; } interface Data { name: string; code: string; population: number; size: number; density: number; } export default function StickyHeadTable({columns, rows}: { rows: Data[], columns: Column[] }) { const [page, setPage] = React.useState(0); const [rowsPerPage, setRowsPerPage] = React.useState(10); const handleChangePage = (event: unknown, newPage: number) => { setPage(newPage); }; const handleChangeRowsPerPage = (event: React.ChangeEvent) => { setRowsPerPage(+event.target.value); setPage(0); }; return ( {columns.map((column) => ( {column.label} ))} {rows .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) .map((row: Data) => { return ( {columns.map((column) => { const value = row[column.id as keyof typeof row] return ( {column.format && typeof value === 'number' ? column.format(value) : value} ); })} ); })}
); }