@@ -48,18 +48,17 @@ const parseChildren = <T,>(children: JSX.Element | JSX.Element[]): DatagridDeriv
48
48
export const Datagrid = < T extends DataSourceType > ( props : DatagridProps < T > ) => {
49
49
const { columns, actions, pagination, placeholder } = parseChildren < T > ( props . children ) ;
50
50
51
+ const { getCellClassName, renderCell } = useRendering < T > ( ) ;
52
+ const { filterData, renderFilterControls } = useFiltering < T > ( columns ) ;
53
+ const { sortData, renderSortingControl } = useSorting < T > ( columns ) ;
51
54
const { paginateData, renderPaginationControls } = usePagination < T > (
52
- props . dataSource . length ,
53
55
pagination ?. elementsPerPage ,
54
56
pagination ?. directInput || false
55
57
) ;
56
- const { sortData, renderSortingControl } = useSorting < T > ( columns ) ;
57
- const { filterData, renderFilterControls } = useFiltering < T > ( columns ) ;
58
- const { getCellClassName, renderCell } = useRendering < T > ( ) ;
59
58
60
- let data = filterData ( props . dataSource ) ;
61
- data = sortData ( data ) ;
62
- data = paginateData ( data ) ;
59
+ const filteredData = filterData ( props . dataSource ) ;
60
+ const sortedData = sortData ( filteredData ) ;
61
+ const paginatedData = paginateData ( sortedData ) ;
63
62
64
63
return (
65
64
< div className = "datagrid-wrapper" >
@@ -77,9 +76,9 @@ export const Datagrid = <T extends DataSourceType>(props: DatagridProps<T>) => {
77
76
{ columns . filter ( c => c . filter ) . length > 0 && < tr > { columns . map ( renderFilterControls ) } </ tr > }
78
77
</ thead >
79
78
< tbody >
80
- { data . length > 0 ? (
79
+ { paginatedData . length > 0 ? (
81
80
< >
82
- { data . map ( ( row , i ) => (
81
+ { paginatedData . map ( ( row , i ) => (
83
82
< tr key = { "row-" + i } >
84
83
{ columns . map ( col => (
85
84
< td key = { col . field } className = { getCellClassName ( col ) } >
@@ -110,7 +109,7 @@ export const Datagrid = <T extends DataSourceType>(props: DatagridProps<T>) => {
110
109
</ tr >
111
110
) ) }
112
111
{ pagination &&
113
- [ ...Array ( pagination . elementsPerPage - data . length ) ] . map ( ( _ , i ) => (
112
+ [ ...Array ( pagination . elementsPerPage - paginatedData . length ) ] . map ( ( _ , i ) => (
114
113
< tr key = { "row-fill-" + i } >
115
114
{ [ ...Array ( columns . length + ( actions . length > 0 ? 1 : 0 ) ) ] . map ( ( _ , j ) => (
116
115
< td key = { "cell-fill-" + j } >
@@ -132,7 +131,7 @@ export const Datagrid = <T extends DataSourceType>(props: DatagridProps<T>) => {
132
131
) }
133
132
</ tbody >
134
133
</ HTMLTable >
135
- { pagination && < div className = "datagrid-bottombar" > { renderPaginationControls ( ) } </ div > }
134
+ { pagination && < div className = "datagrid-bottombar" > { renderPaginationControls ( filteredData . length ) } </ div > }
136
135
</ div >
137
136
) ;
138
137
} ;
0 commit comments