11import { useState , useEffect } from "react" ;
22
3+ export enum PaginationParams {
4+ PAGE = 'page' ,
5+ PER_PAGE = 'perPage'
6+ }
7+
38export interface UseDataViewPaginationProps {
49 /** Initial page */
510 page ?: number ;
@@ -23,33 +28,33 @@ export const useDataViewPagination = ({
2328 setSearchParams,
2429} : UseDataViewPaginationProps ) => {
2530 const [ state , setState ] = useState ( {
26- page : parseInt ( searchParams ?. get ( 'page' ) || `${ page } ` ) ,
27- perPage : parseInt ( searchParams ?. get ( 'perPage' ) || `${ perPage } ` ) ,
31+ page : parseInt ( searchParams ?. get ( PaginationParams . PAGE ) || `${ page } ` ) ,
32+ perPage : parseInt ( searchParams ?. get ( PaginationParams . PER_PAGE ) || `${ perPage } ` ) ,
2833 } ) ;
2934
3035 const updateSearchParams = ( page : number , perPage : number ) => {
3136 if ( searchParams && setSearchParams ) {
3237 const params = new URLSearchParams ( searchParams ) ;
33- params . set ( 'page' , `${ page } ` ) ;
34- params . set ( 'perPage' , `${ perPage } ` ) ;
38+ params . set ( PaginationParams . PAGE , `${ page } ` ) ;
39+ params . set ( PaginationParams . PER_PAGE , `${ perPage } ` ) ;
3540 setSearchParams ( params ) ;
3641 }
3742 } ;
3843
3944 useEffect ( ( ) => {
40- // make sure search params are loaded or set if not present on mount
45+ // Make sure search params are loaded or set if not present on mount
4146 updateSearchParams ( state . page , state . perPage ) ;
42- // eslint-disable-next-line react-hooks/exhaustive-deps
47+ // eslint-disable-next-line react-hooks/exhaustive-deps
4348 } , [ ] ) ;
4449
4550 useEffect ( ( ) => {
46- // listen on URL params changes
47- const currentPage = parseInt ( searchParams ?. get ( 'page' ) || `${ state . page } ` ) ;
48- const currentPerPage = parseInt ( searchParams ?. get ( 'perPage' ) || `${ state . perPage } ` ) ;
51+ // Listen on URL params changes
52+ const currentPage = parseInt ( searchParams ?. get ( PaginationParams . PAGE ) || `${ state . page } ` ) ;
53+ const currentPerPage = parseInt ( searchParams ?. get ( PaginationParams . PER_PAGE ) || `${ state . perPage } ` ) ;
4954 if ( currentPage !== state . page || currentPerPage !== state . perPage ) {
5055 setState ( { page : currentPage , perPage : currentPerPage } ) ;
5156 }
52- // eslint-disable-next-line react-hooks/exhaustive-deps
57+ // eslint-disable-next-line react-hooks/exhaustive-deps
5358 } , [ searchParams ] ) ;
5459
5560 const onPerPageSelect = (
0 commit comments