index.d.ts
3.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import * as React from 'react';
export interface Error {
/** 错误的数据路径 */
name: string;
/** 错误的内容 */
error: string[];
}
export interface FormParams {
formData?: any;
onChange?: (data: any) => void;
onValidate?: (valid: any) => void;
showValidate?: boolean;
/** 数据分析接口,表单展示完成渲染时触发 */
logOnMount?: (stats: any) => void;
/** 数据分析接口,表单提交成功时触发,获得本次表单填写的总时长 */
logOnSubmit?: (stats: any) => void;
}
export interface ValidateParams {
formData: any;
schema: any;
error: Error[];
[k: string]: any;
}
export interface FormInstance {
formData: any;
schema: any;
flatten: any;
touchedKeys: string[];
touchKey: (key: string) => void;
onItemChange: (path: string, value: any) => void;
setValueByPath: (path: string, value: any) => void;
getSchemaByPath: (path: string) => object;
setSchemaByPath: (path: string, value: any) => void;
setSchema: (settings: any) => void;
setValues: (formData: any) => void;
getValues: () => any;
resetFields: () => void;
submit: () => Promise<void> | Promise<any[]>;
submitData: any;
errorFields: Error[];
isValidating: boolean;
outsideValidating: boolean;
isSubmitting: boolean;
endValidating: () => void;
endSubmitting: () => void;
setErrorFields: (error: Error[]) => void;
removeErrorField: (path: string) => void;
removeTouched: (path: string) => void;
changeTouchedKeys: (pathArray: string[]) => void;
isEditing: boolean;
setEditing: (status: boolean) => void;
syncStuff: (args: any) => void;
/** 折中升级方案中使用到,正常用不到 */
init: () => void;
/** 数据分析接口,表单展示完成渲染时触发 */
logOnMount?: (any) => void;
/** 数据分析接口,表单提交成功时触发,获得本次表单填写的总时长 */
logOnSubmit?: (any) => void;
}
export type WatchProperties = {
[path: string]:
| {
handler: (value: any) => void;
immediate?: boolean;
}
| ((value: any) => void);
};
export interface FRProps {
/** 表单 id */
id?: string | number;
/** 表单顶层的className */
className?: string;
/** 表单顶层的样式 */
style?: any;
/** 表单 schema */
schema: any;
/** form单例 */
form: FormInstance;
/** 组件和schema的映射规则 */
mapping?: any;
/** 自定义组件 */
widgets?: any;
/** 表单提交前钩子 */
displayType?: string;
/** 只读模式 */
readOnly?: boolean;
/** 禁用模式 */
disabled?: boolean;
/** 标签宽度 */
labelWidth?: string | number;
/** antd的全局config */
configProvider?: any;
theme?: string | number;
/** 覆盖默认的校验信息 */
validateMessages?: any;
/** 显示当前表单内部状态 */
debug?: boolean;
/** 显示css布局提示线 */
debugCss?: boolean;
locale?: string;
column?: number;
debounceInput?: boolean;
size?: string;
// 数据会作为 beforeFinish 的第四个参数传入
config?: any;
// 类似于 vuejs 的 watch 的用法,监控值的变化,触发 callback
watch?: WatchProperties;
/** 对象组件是否折叠(全局的控制) */
allCollapsed?: boolean;
/** 表单的全局共享属性 */
globalProps?: any;
/** 表单首次加载钩子 */
onMount?: () => void;
/** 表单提交前钩子 */
beforeFinish?: (params: ValidateParams) => Error[] | Promise<Error[]>;
/** 表单提交后钩子 */
onFinish?: (formData: any, error: Error[]) => void;
/** 时时与外部更新同步的钩子 */
onValuesChange?: (changedValues: any, formData: any) => void;
/** 隐藏的数据是否去掉,默认不去掉(false) */
removeHiddenData?: boolean;
}
declare const FR: React.FC<FRProps>;
export declare function useForm(params?: FormParams): FormInstance;
export type ConnectedForm<T> = T & {
form: FormInstance;
};
export declare function connectForm<T extends {} = any>(
component: React.ComponentType<ConnectedForm<T>>
): React.ComponentType<T>;
export default FR;