@@ -3,21 +3,21 @@ import { FieldSubscription, FieldState } from 'final-form'
3
3
import { UseFieldConfig } from 'react-final-form'
4
4
export const version : string
5
5
6
- export interface FieldArrayRenderProps < T extends HTMLElement > {
6
+ export interface FieldArrayRenderProps < FieldValue , T extends HTMLElement > {
7
7
fields : {
8
8
forEach : ( iterator : ( name : string , index : number ) => void ) => void
9
- insert : ( index : number , value : any ) => void
10
- map : ( iterator : ( name : string , index : number ) => any ) => any [ ]
9
+ insert : ( index : number , value : FieldValue ) => void
10
+ map : < R > ( iterator : ( name : string , index : number ) => R ) => R [ ]
11
11
move : ( from : number , to : number ) => void
12
- update : ( index : number , value : any ) => void
12
+ update : ( index : number , value : FieldValue ) => void
13
13
name : string
14
- pop : ( ) => any
15
- push : ( value : any ) => void
16
- remove : ( index : number ) => any
17
- shift : ( ) => any
14
+ pop : ( ) => FieldValue
15
+ push : ( value : FieldValue ) => void
16
+ remove : ( index : number ) => FieldValue
17
+ shift : ( ) => FieldValue
18
18
swap : ( indexA : number , indexB : number ) => void
19
- unshift : ( value : any ) => void
20
- } & FieldState
19
+ unshift : ( value : FieldValue ) => void
20
+ } & FieldState < FieldValue [ ] >
21
21
meta : Partial < {
22
22
// TODO: Make a diff of `FieldState` without all the functions
23
23
active : boolean
@@ -42,19 +42,29 @@ export interface RenderableProps<T> {
42
42
render ?: ( props : T ) => React . ReactNode
43
43
}
44
44
45
- export interface UseFieldArrayConfig extends UseFieldConfig {
45
+ export interface UseFieldArrayConfig < FieldValue >
46
+ extends UseFieldConfig < FieldValue > {
46
47
isEqual ?: ( a : any [ ] , b : any [ ] ) => boolean
47
48
}
48
49
49
- export interface FieldArrayProps < T extends HTMLElement >
50
- extends UseFieldArrayConfig ,
51
- RenderableProps < FieldArrayRenderProps < T > > {
50
+ export interface FieldArrayProps < FieldValue , T extends HTMLElement >
51
+ extends UseFieldArrayConfig < FieldValue > ,
52
+ RenderableProps < FieldArrayRenderProps < FieldValue , T > > {
52
53
name : string
53
54
[ otherProp : string ] : any
54
55
}
55
56
56
- export const FieldArray : React . FC < FieldArrayProps < any > >
57
- export function useFieldArray < T extends HTMLElement > (
57
+ export const FieldArray : <
58
+ FieldValue = any ,
59
+ T extends HTMLElement = HTMLElement
60
+ > (
61
+ props : FieldArrayProps < FieldValue , T >
62
+ ) => React . ReactElement
63
+
64
+ export function useFieldArray <
65
+ FieldValue = any ,
66
+ T extends HTMLElement = HTMLElement
67
+ > (
58
68
name : string ,
59
- config : UseFieldArrayConfig
60
- ) : FieldArrayRenderProps < T >
69
+ config : UseFieldArrayConfig < FieldValue >
70
+ ) : FieldArrayRenderProps < FieldValue , T >
0 commit comments