1 | import { Component, ComponentType } from "react";
|
2 | import { Validator } from "../index";
|
3 |
|
4 | interface _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 |
|
13 | export type BaseFieldArrayProps<P = {}, FieldValue = any> = (P | { props?: P}) & _BaseFieldArrayProps<P, FieldValue>;
|
14 |
|
15 | export interface GenericFieldArray<FieldValue = any, P = {}> extends Component<BaseFieldArrayProps<P, FieldValue>> {
|
16 | name: string;
|
17 | valid: boolean;
|
18 | getRenderedComponent(): Component<WrappedFieldArrayProps<FieldValue> & P>;
|
19 | }
|
20 |
|
21 | export 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 |
|
27 | export interface WrappedFieldArrayProps<FieldValue = any> {
|
28 | fields: FieldArrayFieldsProps<FieldValue>;
|
29 | meta: FieldArrayMetaProps;
|
30 | }
|
31 |
|
32 | export type FieldIterate<FieldValue, R = void> = (name: string, index: number, fields: FieldArrayFieldsProps<FieldValue>) => R;
|
33 |
|
34 | export 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 |
|
54 | export 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 | }
|