import { faChevronCircleRight } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, Text } from "@mantine/core"; import { Cell, HeaderGroup, Row, useExpanded, useGroupBy, useSortBy, } from "react-table"; import SimpleTable, { SimpleTableProps } from "./SimpleTable"; function renderCell(cell: Cell, row: Row) { if (cell.isGrouped) { return (
{cell.render("Cell")}
); } else if (row.canExpand || cell.isAggregated) { return null; } else { return cell.render("Cell"); } } function renderRow(row: Row) { if (row.canExpand) { const cell = row.cells.find((cell) => cell.isGrouped); if (cell) { const rotation = row.isExpanded ? 90 : undefined; return ( {cell.render("Cell")} ); } else { return null; } } else { return ( {row.cells .filter((cell) => !cell.isPlaceholder) .map((cell) => ( {renderCell(cell, row)} ))} ); } } function renderHeaders( headers: HeaderGroup[] ): JSX.Element[] { return headers .filter((col) => !col.isGrouped) .map((col) => {col.render("Header")}); } type Props = Omit< SimpleTableProps, "plugins" | "headersRenderer" | "rowRenderer" >; const plugins = [useGroupBy, useSortBy, useExpanded]; function GroupTable(props: Props) { return ( ); } export default GroupTable;