2
2
import React from 'react' ;
3
3
import KEYCODE from './KeyCode' ;
4
4
5
- class Options extends React . Component {
5
+ interface Props {
6
+ disabled : boolean ;
7
+ locale : any ;
8
+ rootPrefixCls : string ;
9
+ selectPrefixCls : string ;
10
+ current : number ;
11
+ pageSize : number ;
12
+ pageSizeOptions : ( string | number ) [ ] ;
13
+ goButton : boolean | string ;
14
+ changeSize : ( size : number ) => void ;
15
+ quickGo : ( value : number ) => void ;
16
+ buildOptionText ?: ( value : string | number ) => string ;
17
+ selectComponentClass : React . ComponentType < any > & {
18
+ Option ?: React . ComponentType < any > ;
19
+ } ;
20
+ }
21
+
22
+ interface State {
23
+ goInputText : string ;
24
+ }
25
+
26
+ class Options extends React . Component < Props , State > {
6
27
static defaultProps = {
7
28
pageSizeOptions : [ '10' , '20' , '50' , '100' ] ,
8
29
} ;
@@ -11,33 +32,32 @@ class Options extends React.Component {
11
32
goInputText : '' ,
12
33
} ;
13
34
14
- getValidValue ( ) {
35
+ getValidValue = ( ) => {
15
36
const { goInputText } = this . state ;
16
37
// eslint-disable-next-line no-restricted-globals
17
- return ! goInputText || isNaN ( goInputText ) ? undefined : Number ( goInputText ) ;
18
- }
38
+ return ! goInputText || Number . isNaN ( goInputText )
39
+ ? undefined
40
+ : Number ( goInputText ) ;
41
+ } ;
19
42
20
- buildOptionText = ( value ) => `${ value } ${ this . props . locale . items_per_page } ` ;
43
+ buildOptionText = ( value : string ) =>
44
+ `${ value } ${ this . props . locale . items_per_page } ` ;
21
45
22
- changeSize = ( value ) => {
46
+ changeSize = ( value : number ) => {
23
47
this . props . changeSize ( Number ( value ) ) ;
24
48
} ;
25
49
26
- handleChange = ( e ) => {
27
- this . setState ( {
28
- goInputText : e . target . value ,
29
- } ) ;
50
+ handleChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
51
+ this . setState ( { goInputText : e . target . value } ) ;
30
52
} ;
31
53
32
- handleBlur = ( e ) => {
54
+ handleBlur = ( e : React . FocusEvent < HTMLInputElement , Element > ) => {
33
55
const { goButton, quickGo, rootPrefixCls } = this . props ;
34
56
const { goInputText } = this . state ;
35
57
if ( goButton || goInputText === '' ) {
36
58
return ;
37
59
}
38
- this . setState ( {
39
- goInputText : '' ,
40
- } ) ;
60
+ this . setState ( { goInputText : '' } ) ;
41
61
if (
42
62
e . relatedTarget &&
43
63
( e . relatedTarget . className . indexOf ( `${ rootPrefixCls } -item-link` ) >= 0 ||
@@ -48,15 +68,13 @@ class Options extends React.Component {
48
68
quickGo ( this . getValidValue ( ) ) ;
49
69
} ;
50
70
51
- go = ( e ) => {
71
+ go = ( e : any ) => {
52
72
const { goInputText } = this . state ;
53
73
if ( goInputText === '' ) {
54
74
return ;
55
75
}
56
76
if ( e . keyCode === KEYCODE . ENTER || e . type === 'click' ) {
57
- this . setState ( {
58
- goInputText : '' ,
59
- } ) ;
77
+ this . setState ( { goInputText : '' } ) ;
60
78
this . props . quickGo ( this . getValidValue ( ) ) ;
61
79
}
62
80
} ;
@@ -72,9 +90,9 @@ class Options extends React.Component {
72
90
}
73
91
return pageSizeOptions . concat ( [ pageSize . toString ( ) ] ) . sort ( ( a , b ) => {
74
92
// eslint-disable-next-line no-restricted-globals
75
- const numberA = isNaN ( Number ( a ) ) ? 0 : Number ( a ) ;
93
+ const numberA = Number . isNaN ( Number ( a ) ) ? 0 : Number ( a ) ;
76
94
// eslint-disable-next-line no-restricted-globals
77
- const numberB = isNaN ( Number ( b ) ) ? 0 : Number ( b ) ;
95
+ const numberB = Number . isNaN ( Number ( b ) ) ? 0 : Number ( b ) ;
78
96
return numberA - numberB ;
79
97
} ) ;
80
98
}
0 commit comments