"use client"; import { ColumnDef, flexRender, getCoreRowModel, useReactTable, getPaginationRowModel, SortingState, ColumnFiltersState, getFilteredRowModel, } from "@tanstack/react-table" import { useState } from "react"; import { clsx, type ClassValue } from "clsx" import Image from "next/image"; import { icons } from "#/assets/icons"; interface DataTableProps { columns: ColumnDef[] data: TData[], pageSize?: number } export default function Table({ columns, data, pageSize = 10 }: DataTableProps) { const [rowSelection, setRowSelection] = useState({}) const [columnFilters, setColumnFilters] = useState( [] ) const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), getPaginationRowModel: getPaginationRowModel(), state: { rowSelection, columnFilters, }, initialState: { pagination: { pageSize: pageSize, } }, enableRowSelection: true, getFilteredRowModel: getFilteredRowModel(), onRowSelectionChange: setRowSelection, onColumnFiltersChange: setColumnFilters, }) const totalPages = table.getPageCount() const currentPage = table.getState().pagination.pageIndex + 1 const getPageNumbers = () => { const pages = [] for (let i = 1; i <= totalPages; i++) { pages.push(i) } return pages } return(
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => { return( ) })} ))} {table.getRowModel().rows.length ? ( table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( ))} )) ) : ( )}
table.toggleAllPageRowsSelected(e.target.checked)} type="checkbox" name="" id="" /> {flexRender( header.column.columnDef.header, header.getContext() )}
row.toggleSelected(e.target.checked)} type="checkbox" name="" id="" /> {flexRender(cell.column.columnDef.cell, cell.getContext())}
Aucun résultats
{getPageNumbers().map((pageNumber) => ( ))}
) }