@@ -61,16 +61,39 @@ export const Pagination = ({
6161 } ;
6262
6363 const renderPages = ( ) => {
64+
65+ if ( totalPages < 5 ) {
66+ return (
67+ < >
68+ { Array . from ( { length : totalPages } , ( _ , index ) => {
69+ const page = index + 1 ;
70+ return (
71+ < PageItem
72+ ariaLabel = { `Page ${ page } of ${ totalPages } ` }
73+ isClickeable
74+ key = { page }
75+ selectedPage = { selectedPage === page }
76+ onClick = { e => handleChangePage ( e , page ) }
77+ >
78+ { page }
79+ </ PageItem >
80+ ) ;
81+ } ) }
82+ </ >
83+ ) ;
84+ }
85+
6486 // Set the ranges to be shown in the pagination
87+ const displayMinimumPages = 2 ;
6588 const lowerRangeLimit = iff (
6689 selectedPage === totalPages - 1 ,
67- 2 ,
68- selectedPage === totalPages ? 3 : 1
90+ 1 ,
91+ selectedPage === totalPages ? 2 : 1
6992 ) ;
7093 const upperRangeLimit = iff (
7194 selectedPage === 1 ,
72- 3 ,
73- selectedPage === 2 ? 2 : 1
95+ 2 ,
96+ selectedPage === 2 ? 1 : 1
7497 ) ;
7598 const lowerRange = createRange (
7699 selectedPage - lowerRangeLimit ,
@@ -96,6 +119,16 @@ export const Pagination = ({
96119 1
97120 </ PageItem >
98121 ) }
122+ { selectedPage > ( totalPages - displayMinimumPages ) && (
123+ < PageItem
124+ isClickeable
125+ ariaLabel = { `Page 2 of ${ totalPages } ` }
126+ selectedPage = { selectedPage === 2 }
127+ onClick = { e => handleChangePage ( e , 2 ) }
128+ >
129+ 2
130+ </ PageItem >
131+ ) }
99132 { renderedPages [ 0 ] > 2 && < PageItem ellipses > ...</ PageItem > }
100133 { renderedPages . map ( page => (
101134 < PageItem
@@ -111,6 +144,16 @@ export const Pagination = ({
111144 { renderedPages [ renderedPages . length - 1 ] < totalPages - 1 && (
112145 < PageItem ellipses > ...</ PageItem >
113146 ) }
147+ { selectedPage < displayMinimumPages + 1 && (
148+ < PageItem
149+ isClickeable
150+ ariaLabel = { `Page ${ totalPages - 1 } of ${ totalPages } ` }
151+ selectedPage = { selectedPage === totalPages - 1 }
152+ onClick = { e => handleChangePage ( e , totalPages - 1 ) }
153+ >
154+ { totalPages - 1 }
155+ </ PageItem >
156+ ) }
114157 { renderedPages [ renderedPages . length - 1 ] !== totalPages && (
115158 < PageItem
116159 isClickeable
0 commit comments