diff --git a/src/index.d.ts b/src/index.d.ts index 742b9ff..ec99ba5 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -3,21 +3,21 @@ import { FieldSubscription, FieldState } from 'final-form' import { UseFieldConfig } from 'react-final-form' export const version: string -export interface FieldArrayRenderProps { +export interface FieldArrayRenderProps { fields: { forEach: (iterator: (name: string, index: number) => void) => void - insert: (index: number, value: any) => void - map: (iterator: (name: string, index: number) => any) => any[] + insert: (index: number, value: FieldValue) => void + map: (iterator: (name: string, index: number) => R) => R[] move: (from: number, to: number) => void - update: (index: number, value: any) => void + update: (index: number, value: FieldValue) => void name: string - pop: () => any - push: (value: any) => void - remove: (index: number) => any - shift: () => any + pop: () => FieldValue + push: (value: FieldValue) => void + remove: (index: number) => FieldValue + shift: () => FieldValue swap: (indexA: number, indexB: number) => void - unshift: (value: any) => void - } & FieldState + unshift: (value: FieldValue) => void + } & FieldState meta: Partial<{ // TODO: Make a diff of `FieldState` without all the functions active: boolean @@ -42,19 +42,29 @@ export interface RenderableProps { render?: (props: T) => React.ReactNode } -export interface UseFieldArrayConfig extends UseFieldConfig { +export interface UseFieldArrayConfig + extends UseFieldConfig { isEqual?: (a: any[], b: any[]) => boolean } -export interface FieldArrayProps - extends UseFieldArrayConfig, - RenderableProps> { +export interface FieldArrayProps + extends UseFieldArrayConfig, + RenderableProps> { name: string [otherProp: string]: any } -export const FieldArray: React.FC> -export function useFieldArray( +export const FieldArray: < + FieldValue = any, + T extends HTMLElement = HTMLElement +>( + props: FieldArrayProps +) => React.ReactElement + +export function useFieldArray< + FieldValue = any, + T extends HTMLElement = HTMLElement +>( name: string, - config: UseFieldArrayConfig -): FieldArrayRenderProps + config: UseFieldArrayConfig +): FieldArrayRenderProps