UNPKG

2.22 kBTypeScriptView Raw
1import { Component, ComponentType } from "react";
2import { Validator } from "../index";
3
4interface _BaseFieldArrayProps<P = {}, FieldValue = any> {
5 name: string;
6 component: ComponentType<WrappedFieldArrayProps<FieldValue> & P>;
7 validate?: Validator | Validator[] | undefined;
8 warn?: Validator | Validator[] | undefined;
9 withRef?: boolean | undefined;
10 rerenderOnEveryChange?: boolean | undefined;
11}
12
13export type BaseFieldArrayProps<P = {}, FieldValue = any> = (P | { props?: P}) & _BaseFieldArrayProps<P, FieldValue>;
14
15export interface GenericFieldArray<FieldValue = any, P = {}> extends Component<BaseFieldArrayProps<P, FieldValue>> {
16 name: string;
17 valid: boolean;
18 getRenderedComponent(): Component<WrappedFieldArrayProps<FieldValue> & P>;
19}
20
21export class FieldArray<P = {}, FieldValue = any> extends Component<BaseFieldArrayProps<P, FieldValue>> implements GenericFieldArray<FieldValue, P> {
22 name: string;
23 valid: boolean;
24 getRenderedComponent(): Component<WrappedFieldArrayProps<FieldValue> & P>;
25}
26
27export interface WrappedFieldArrayProps<FieldValue = any> {
28 fields: FieldArrayFieldsProps<FieldValue>;
29 meta: FieldArrayMetaProps;
30}
31
32export type FieldIterate<FieldValue, R = void> = (name: string, index: number, fields: FieldArrayFieldsProps<FieldValue>) => R;
33
34export interface FieldArrayFieldsProps<FieldValue> {
35 forEach(callback: FieldIterate<FieldValue>): void;
36 get(index: number): FieldValue;
37 getAll(): FieldValue[];
38 removeAll(): void;
39
40 insert(index: number, value: FieldValue): void;
41 name: string;
42 length: number;
43 map<R>(callback: FieldIterate<FieldValue, R>): R[];
44 pop(): FieldValue;
45 push(value: FieldValue): void;
46 remove(index: number): void;
47 shift(): FieldValue;
48 splice(index: number, removeNum: number | null, value: FieldValue): void;
49 swap(indexA: number, indexB: number): void;
50 move(from: number, to: number): void;
51 unshift(value: FieldValue): void;
52}
53
54export interface FieldArrayMetaProps {
55 dirty: boolean;
56 error?: any;
57 form: string;
58 invalid: boolean;
59 pristine: boolean;
60 submitFailed: boolean;
61 submitting: boolean;
62 valid: boolean;
63 warning?: any;
64}