1
1
import React from 'react' ;
2
2
import { Link } from '@tanstack/react-router' ;
3
3
import { ColumnDef , useReactTable , getCoreRowModel } from '@tanstack/react-table' ;
4
- import {
5
- Table ,
6
- TableBody ,
7
- TableCell ,
8
- TableContainer ,
9
- TableHead ,
10
- TableRow ,
11
- TablePagination ,
12
- Paper ,
13
- } from '@mui/material' ;
4
+ import { Table , TableBody , TableCell , TableContainer , TableHead , TableRow , Paper , Pagination } from '@mui/material' ;
14
5
import * as classes from './users.styles' ;
15
6
16
7
interface Data {
@@ -55,19 +46,45 @@ const columns: ColumnDef<Data>[] = [
55
46
] ;
56
47
57
48
export const UsersPod : React . FC = ( ) => {
49
+ const [ pagination , setPagination ] = React . useState ( {
50
+ pageIndex : 0 ,
51
+ pageSize : 10 ,
52
+ } ) ;
53
+
54
+ const [ paginatedData , setPaginatedData ] = React . useState < Data [ ] > ( [ ] ) ;
55
+
56
+ React . useEffect ( ( ) => {
57
+ const start = pagination . pageIndex * pagination . pageSize ;
58
+ const end = start + pagination . pageSize ;
59
+ setPaginatedData ( data . slice ( start , end ) ) ;
60
+ } , [ pagination ] ) ;
61
+
58
62
const tableInstance = useReactTable ( {
59
- data,
63
+ data : paginatedData ,
60
64
columns,
61
65
getCoreRowModel : getCoreRowModel ( ) ,
66
+ manualPagination : true ,
67
+ rowCount : data . length ,
68
+ onPaginationChange : setPagination ,
69
+ state : {
70
+ pagination,
71
+ } ,
62
72
} ) ;
63
73
64
- const { getAllColumns, getRowModel } = tableInstance ;
74
+ const { getAllColumns, getRowModel, getPageCount, getState } = tableInstance ;
75
+
76
+ const handleChangePage = ( _ : React . ChangeEvent < unknown > , newPage : number ) => {
77
+ setPagination ( prev => ( {
78
+ ...prev ,
79
+ pageIndex : newPage - 1 ,
80
+ } ) ) ;
81
+ } ;
65
82
66
83
return (
67
84
< div className = { classes . root } >
68
85
< h1 > Soy la página de listado de usuarios</ h1 >
69
86
< TableContainer component = { Paper } >
70
- < Table sx = { { minWidth : 1200 } } >
87
+ < Table className = { classes . table } >
71
88
< TableHead >
72
89
< TableRow >
73
90
{ getAllColumns ( ) . map ( column => (
@@ -88,14 +105,11 @@ export const UsersPod: React.FC = () => {
88
105
) ) }
89
106
</ TableBody >
90
107
</ Table >
91
- < TablePagination
92
- rowsPerPageOptions = { [ 5 , 10 , 25 ] }
93
- component = "div"
94
- count = { data . length }
95
- rowsPerPage = { 5 }
96
- page = { 0 }
97
- onPageChange = { ( ) => { } }
98
- onRowsPerPageChange = { ( ) => { } }
108
+ < Pagination
109
+ count = { getPageCount ( ) }
110
+ page = { getState ( ) . pagination . pageIndex + 1 }
111
+ onChange = { handleChangePage }
112
+ className = { classes . pagination }
99
113
/>
100
114
</ TableContainer >
101
115
< Link to = "/users/$id" params = { { id : '1' } } >
0 commit comments