|
1 | 1 | // @flow
|
2 | 2 |
|
3 | 3 | import * as React from 'react'
|
| 4 | +import type {FieldProps} from 'redux-form' |
4 | 5 |
|
5 | 6 | type NumberNormalizer = (value: ?(string | number)) => ?(string | number)
|
6 | 7 | type Validator = (value: any, allValues: Object, props: Object) => ?any
|
7 | 8 | const WHITESPACE = /^\s*$/
|
8 | 9 |
|
9 | 10 |
|
10 |
| -function createNumericField<P: {validate?: Validator | Array<Validator>, normalizeOnBlur?: Function}>( |
| 11 | +function createNumericField<P: { |
| 12 | + validate?: Validator | Array<Validator>, |
| 13 | + normalizeOnBlur?: Function, |
| 14 | + component: React.ElementType | Function | string, |
| 15 | +}>( |
11 | 16 | Field: React.ComponentType<P>
|
12 | 17 | ): React.ComponentType<P & {normalizeNumber?: NumberNormalizer}> {
|
13 | 18 | type Props = React.ElementProps<typeof Field> & {normalizeNumber?: NumberNormalizer}
|
@@ -46,14 +51,13 @@ function createNumericField<P: {validate?: Validator | Array<Validator>, normali
|
46 | 51 | }
|
47 | 52 | }
|
48 | 53 |
|
49 |
| - KeyDownHandler = ({input, onKeyDown, ...props}) => { |
| 54 | + KeyDownHandler = ({input, onKeyDown, ...props}: FieldProps & {onKeyDown?: (event: Event) => any}): React.Node => { |
50 | 55 | const Comp = this.props.component
|
51 |
| - |
52 | 56 | return (
|
53 | 57 | <Comp
|
54 | 58 | {...props}
|
55 | 59 | input={input}
|
56 |
| - onKeyDown={(event: KeyEvent) => { |
| 60 | + onKeyDown={(event: Event) => { |
57 | 61 | const normalizeNumber = this.props.normalizeNumber || defaultNormalize
|
58 | 62 | if (event.keyCode === 13) {
|
59 | 63 | input.onChange(normalizeNumber(input.value))
|
|
0 commit comments