@@ -29,7 +29,7 @@ export interface NavigationProps extends React.HTMLProps<HTMLElement> {
29
29
/** Label for the English word "of". */
30
30
ofWord ?: string ;
31
31
/** The number of the current page. */
32
- page : string | number ;
32
+ page : number ;
33
33
/** The title of a page displayed beside the page number. */
34
34
pagesTitle ?: string ;
35
35
/** The title of a page displayed beside the page number (the plural form). */
@@ -55,13 +55,13 @@ export interface NavigationProps extends React.HTMLProps<HTMLElement> {
55
55
/** Function called when user clicks to navigate to previous page. */
56
56
onPreviousClick ?: ( event : React . SyntheticEvent < HTMLButtonElement > , page : number ) => void ;
57
57
/** Function called when user inputs page number. */
58
- onPageInput ?: ( event : React . SyntheticEvent < HTMLButtonElement > , page : number ) => void ;
58
+ onPageInput ?: ( event : React . KeyboardEvent < HTMLInputElement > , page : number ) => void ;
59
59
/** Function called when page is changed. */
60
60
onSetPage : OnSetPage ;
61
61
}
62
62
63
63
export interface NavigationState {
64
- userInputPage ?: React . ReactText ;
64
+ userInputPage ?: number | string ;
65
65
}
66
66
67
67
class Navigation extends React . Component < NavigationProps , NavigationState > {
@@ -93,7 +93,7 @@ class Navigation extends React.Component<NavigationProps, NavigationState> {
93
93
onPageInput : ( ) => undefined as any
94
94
} ;
95
95
96
- private static parseInteger ( input : React . ReactText , lastPage : number ) : number {
96
+ private static parseInteger ( input : number | string , lastPage : number ) : number {
97
97
// eslint-disable-next-line radix
98
98
let inputPage = Number . parseInt ( input as string , 10 ) ;
99
99
if ( ! Number . isNaN ( inputPage ) ) {
@@ -105,14 +105,14 @@ class Navigation extends React.Component<NavigationProps, NavigationState> {
105
105
106
106
private onChange ( event : React . FormEvent < HTMLInputElement > , lastPage : number ) : void {
107
107
const inputPage = Navigation . parseInteger ( event . currentTarget . value , lastPage ) ;
108
- this . setState ( { userInputPage : Number . isNaN ( inputPage as number ) ? event . currentTarget . value : inputPage } ) ;
108
+ this . setState ( { userInputPage : Number . isNaN ( inputPage ) ? event . currentTarget . value : inputPage } ) ;
109
109
}
110
110
111
111
private onKeyDown (
112
112
event : React . KeyboardEvent < HTMLInputElement > ,
113
- page : number | string ,
113
+ page : number ,
114
114
lastPage : number ,
115
- onPageInput : ( event : React . SyntheticEvent < HTMLButtonElement > , page : number ) => void
115
+ onPageInput : ( event : React . KeyboardEvent < HTMLInputElement > , page : number ) => void
116
116
) : void {
117
117
const allowedKeys = [
118
118
'Tab' ,
@@ -126,9 +126,9 @@ class Navigation extends React.Component<NavigationProps, NavigationState> {
126
126
'ArrowDown'
127
127
] ;
128
128
if ( event . key === KeyTypes . Enter ) {
129
- const inputPage = Navigation . parseInteger ( this . state . userInputPage , lastPage ) as number ;
130
- onPageInput ( event , Number . isNaN ( inputPage ) ? ( page as number ) : inputPage ) ;
131
- this . handleNewPage ( event , Number . isNaN ( inputPage ) ? ( page as number ) : inputPage ) ;
129
+ const inputPage = Navigation . parseInteger ( this . state . userInputPage , lastPage ) ;
130
+ onPageInput ( event , Number . isNaN ( inputPage ) ? page : inputPage ) ;
131
+ this . handleNewPage ( event , Number . isNaN ( inputPage ) ? page : inputPage ) ;
132
132
} else if ( ! / ^ \d * $ / . test ( event . key ) && ! allowedKeys . includes ( event . key ) ) {
133
133
event . preventDefault ( ) ;
134
134
}
@@ -206,7 +206,7 @@ class Navigation extends React.Component<NavigationProps, NavigationState> {
206
206
isDisabled = { isDisabled || page === firstPage || page === 0 }
207
207
data-action = "previous"
208
208
onClick = { ( event ) => {
209
- const newPage = ( page as number ) - 1 >= 1 ? ( page as number ) - 1 : 1 ;
209
+ const newPage = page - 1 >= 1 ? page - 1 : 1 ;
210
210
onPreviousClick ( event , newPage ) ;
211
211
this . handleNewPage ( event , newPage ) ;
212
212
this . setState ( { userInputPage : newPage } ) ;
@@ -244,7 +244,7 @@ class Navigation extends React.Component<NavigationProps, NavigationState> {
244
244
aria-label = { toNextPageAriaLabel }
245
245
data-action = "next"
246
246
onClick = { ( event ) => {
247
- const newPage = ( page as number ) + 1 <= lastPage ? ( page as number ) + 1 : lastPage ;
247
+ const newPage = page + 1 <= lastPage ? page + 1 : lastPage ;
248
248
onNextClick ( event , newPage ) ;
249
249
this . handleNewPage ( event , newPage ) ;
250
250
this . setState ( { userInputPage : newPage } ) ;
0 commit comments