@sheinx/hooks 3.3.6 → 3.3.7-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/use-form/use-form-control/use-form-control.js +2 -2
- package/cjs/components/use-form/use-form.d.ts.map +1 -1
- package/cjs/components/use-form/use-form.js +40 -19
- package/cjs/components/use-form/use-form.type.d.ts +11 -6
- package/cjs/components/use-form/use-form.type.d.ts.map +1 -1
- package/esm/components/use-form/use-form-control/use-form-control.js +2 -2
- package/esm/components/use-form/use-form.d.ts.map +1 -1
- package/esm/components/use-form/use-form.js +40 -19
- package/esm/components/use-form/use-form.type.d.ts +11 -6
- package/esm/components/use-form/use-form.type.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -192,11 +192,11 @@ function useFormControl(props) {
|
|
|
192
192
|
if (inForm && controlFunc) {
|
|
193
193
|
if ((0, _is.isArray)(name)) {
|
|
194
194
|
name.forEach(function (n) {
|
|
195
|
-
controlFunc.unbind(n, reserveAble);
|
|
195
|
+
controlFunc.unbind(n, reserveAble, validateFiled, update);
|
|
196
196
|
updateError(n, undefined);
|
|
197
197
|
});
|
|
198
198
|
} else {
|
|
199
|
-
controlFunc.unbind(name, reserveAble);
|
|
199
|
+
controlFunc.unbind(name, reserveAble, validateFiled, update);
|
|
200
200
|
updateError(name, undefined);
|
|
201
201
|
}
|
|
202
202
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAwB,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAuK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAyDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAvEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAmI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA5CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAyDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAvEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAmI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CAoQ9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -74,8 +74,10 @@ var useForm = function useForm(props) {
|
|
|
74
74
|
var _context$flowMap$glob;
|
|
75
75
|
if (!name) {
|
|
76
76
|
Object.keys(context.updateMap).forEach(function (key) {
|
|
77
|
-
var _context$updateMap$ke
|
|
78
|
-
(_context$updateMap$ke =
|
|
77
|
+
var _context$updateMap$ke;
|
|
78
|
+
(_context$updateMap$ke = context.updateMap[key]) === null || _context$updateMap$ke === void 0 || _context$updateMap$ke.forEach(function (update) {
|
|
79
|
+
update(context.value, context.errors, context.serverErrors);
|
|
80
|
+
});
|
|
79
81
|
});
|
|
80
82
|
Object.keys(context.flowMap).forEach(function (key) {
|
|
81
83
|
context.flowMap[key].forEach(function (update) {
|
|
@@ -85,8 +87,10 @@ var useForm = function useForm(props) {
|
|
|
85
87
|
} else {
|
|
86
88
|
var names = (0, _utils.isArray)(name) ? name : [name];
|
|
87
89
|
names.forEach(function (key) {
|
|
88
|
-
var _context$updateMap$ke2, _context$
|
|
89
|
-
(_context$updateMap$ke2 =
|
|
90
|
+
var _context$updateMap$ke2, _context$flowMap$key;
|
|
91
|
+
(_context$updateMap$ke2 = context.updateMap[key]) === null || _context$updateMap$ke2 === void 0 || _context$updateMap$ke2.forEach(function (update) {
|
|
92
|
+
update(context.value, context.errors, context.serverErrors);
|
|
93
|
+
});
|
|
90
94
|
(_context$flowMap$key = context.flowMap[key]) === null || _context$flowMap$key === void 0 || _context$flowMap$key.forEach(function (update) {
|
|
91
95
|
update();
|
|
92
96
|
});
|
|
@@ -142,9 +146,11 @@ var useForm = function useForm(props) {
|
|
|
142
146
|
}) : Object.keys(context.validateMap);
|
|
143
147
|
var validates = files2.map(function (key) {
|
|
144
148
|
var validateField = context.validateMap[key];
|
|
145
|
-
return validateField(
|
|
149
|
+
return Array.from(validateField).map(function (validate) {
|
|
150
|
+
return validate(key, (0, _utils.deepGet)(context.value, key), context.value, config);
|
|
151
|
+
});
|
|
146
152
|
});
|
|
147
|
-
Promise.all(validates).then(function (results) {
|
|
153
|
+
Promise.all(validates.flat()).then(function (results) {
|
|
148
154
|
var error = results.find(function (n) {
|
|
149
155
|
return n !== true;
|
|
150
156
|
});
|
|
@@ -189,8 +195,10 @@ var useForm = function useForm(props) {
|
|
|
189
195
|
Object.keys(vals).forEach(function (key) {
|
|
190
196
|
(0, _utils.deepSet)(draft, key, vals[key], deepSetOptions);
|
|
191
197
|
if (option.validate) {
|
|
192
|
-
var _context$validateMap
|
|
193
|
-
(_context$validateMap$ =
|
|
198
|
+
var _context$validateMap$;
|
|
199
|
+
(_context$validateMap$ = context.validateMap[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.forEach(function (validate) {
|
|
200
|
+
validate(key, vals[key], (0, _immer.current)(draft));
|
|
201
|
+
});
|
|
194
202
|
}
|
|
195
203
|
});
|
|
196
204
|
});
|
|
@@ -334,12 +342,17 @@ var useForm = function useForm(props) {
|
|
|
334
342
|
var controlFunc = (0, _useLatestObj.default)({
|
|
335
343
|
bind: function bind(n, df, validate, updateFn) {
|
|
336
344
|
if (context.names.has(n)) {
|
|
337
|
-
console.
|
|
338
|
-
return;
|
|
345
|
+
console.warn("name \"".concat(n, "\" already exist"));
|
|
339
346
|
}
|
|
340
347
|
context.names.add(n);
|
|
341
|
-
context.validateMap[n]
|
|
342
|
-
|
|
348
|
+
if (!context.validateMap[n]) {
|
|
349
|
+
context.validateMap[n] = new Set();
|
|
350
|
+
}
|
|
351
|
+
context.validateMap[n].add(validate);
|
|
352
|
+
if (!context.updateMap[n]) {
|
|
353
|
+
context.updateMap[n] = new Set();
|
|
354
|
+
}
|
|
355
|
+
context.updateMap[n].add(updateFn);
|
|
343
356
|
context.removeArr.delete(n);
|
|
344
357
|
if (df !== undefined && (0, _utils.deepGet)(context.value, n) === undefined) {
|
|
345
358
|
if (!context.mounted) context.defaultValues[n] = df;
|
|
@@ -349,11 +362,19 @@ var useForm = function useForm(props) {
|
|
|
349
362
|
}
|
|
350
363
|
update(n);
|
|
351
364
|
},
|
|
352
|
-
unbind: function unbind(n, reserveAble) {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
365
|
+
unbind: function unbind(n, reserveAble, validateFiled, update) {
|
|
366
|
+
var validateFieldSet = context.validateMap[n];
|
|
367
|
+
if (validateFiled && validateFieldSet.has(validateFiled)) {
|
|
368
|
+
validateFieldSet.delete(validateFiled);
|
|
369
|
+
}
|
|
370
|
+
var updateFieldSet = context.updateMap[n];
|
|
371
|
+
if (update && updateFieldSet.has(update)) {
|
|
372
|
+
updateFieldSet.delete(update);
|
|
373
|
+
}
|
|
374
|
+
if (validateFieldSet.size === 0 && updateFieldSet.size === 0) {
|
|
375
|
+
context.names.delete(n);
|
|
376
|
+
delete context.defaultValues[n];
|
|
377
|
+
}
|
|
357
378
|
if (!reserveAble && !context.removeLock) {
|
|
358
379
|
addRemove(n);
|
|
359
380
|
}
|
|
@@ -428,12 +449,12 @@ var useForm = function useForm(props) {
|
|
|
428
449
|
React.useEffect(function () {
|
|
429
450
|
// 服务端错误更新
|
|
430
451
|
if (!props.error) context.serverErrors = {};else {
|
|
431
|
-
var
|
|
452
|
+
var errors = Object.keys(props.error).reduce(function (prev, cur) {
|
|
432
453
|
var item = props.error[cur];
|
|
433
454
|
var error = item instanceof Error ? item : new Error(item);
|
|
434
455
|
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, cur, error));
|
|
435
456
|
}, {});
|
|
436
|
-
context.serverErrors =
|
|
457
|
+
context.serverErrors = errors;
|
|
437
458
|
}
|
|
438
459
|
update();
|
|
439
460
|
}, [props.error]);
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { AddNoProps, ObjectType } from '../../common/type';
|
|
4
4
|
import { FormItemRule } from '../../utils/rule/rule.type';
|
|
5
|
+
import { FormError } from '../../utils';
|
|
6
|
+
export type ValidateFn = (name: string, value: any, formData: ObjectType, config?: {
|
|
7
|
+
ignoreBind?: boolean;
|
|
8
|
+
}) => Promise<boolean | FormError>;
|
|
9
|
+
export type UpdateFn = (formValue: ObjectType, errors: ObjectType<Error | undefined>, serverErrors: ObjectType<Error | undefined>) => void;
|
|
5
10
|
export interface FormContextValueType {
|
|
6
11
|
func?: {
|
|
7
|
-
unbind: (n: string, reserveAble?: boolean) => void;
|
|
8
|
-
bind: (n: string, df: any, validate:
|
|
9
|
-
ignoreBind?: boolean;
|
|
10
|
-
}) => void, update: (formValue: ObjectType, errors: ObjectType<Error>, serverErrors: ObjectType<Error>) => void) => void;
|
|
12
|
+
unbind: (n: string, reserveAble?: boolean, validate?: ValidateFn, update?: UpdateFn) => void;
|
|
13
|
+
bind: (n: string, df: any, validate: ValidateFn, update: UpdateFn) => void;
|
|
11
14
|
combineRules: <ValueItem>(name: string, propRules: FormItemRule<ValueItem>) => FormItemRule<ValueItem>;
|
|
12
15
|
watch: (names: string[] | undefined, update: () => void) => void;
|
|
13
16
|
unWatch: (names: string[] | undefined, update: () => void) => void;
|
|
@@ -149,7 +152,9 @@ export interface BaseFormProps<T> extends FormCommonConfig {
|
|
|
149
152
|
export type UseFormProps<T> = BaseFormProps<T>;
|
|
150
153
|
export type FormContext = {
|
|
151
154
|
defaultValues: ObjectType;
|
|
152
|
-
validateMap: ObjectType
|
|
155
|
+
validateMap: ObjectType<Set<(name: string, v: any, formValue: ObjectType, config?: {
|
|
156
|
+
ignoreBind?: boolean;
|
|
157
|
+
}) => Promise<boolean | FormError>>>;
|
|
153
158
|
removeArr: Set<string>;
|
|
154
159
|
removeTimer?: number | NodeJS.Timeout;
|
|
155
160
|
names: Set<string>;
|
|
@@ -157,7 +162,7 @@ export type FormContext = {
|
|
|
157
162
|
lastValue: ObjectType | undefined;
|
|
158
163
|
resetTime: number;
|
|
159
164
|
mounted: boolean;
|
|
160
|
-
updateMap: ObjectType
|
|
165
|
+
updateMap: ObjectType<Set<(formValue: ObjectType, errors: ObjectType<Error | undefined>, serverErrors: ObjectType<Error | undefined>) => void>>;
|
|
161
166
|
flowMap: ObjectType<Set<() => void>>;
|
|
162
167
|
value: ObjectType;
|
|
163
168
|
errors: ObjectType<Error | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":"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"}
|
|
@@ -183,11 +183,11 @@ export default function useFormControl(props) {
|
|
|
183
183
|
if (inForm && controlFunc) {
|
|
184
184
|
if (isArray(name)) {
|
|
185
185
|
name.forEach(function (n) {
|
|
186
|
-
controlFunc.unbind(n, reserveAble);
|
|
186
|
+
controlFunc.unbind(n, reserveAble, validateFiled, update);
|
|
187
187
|
updateError(n, undefined);
|
|
188
188
|
});
|
|
189
189
|
} else {
|
|
190
|
-
controlFunc.unbind(name, reserveAble);
|
|
190
|
+
controlFunc.unbind(name, reserveAble, validateFiled, update);
|
|
191
191
|
updateError(name, undefined);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAwB,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAuK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAyDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAvEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAmI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA5CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAyDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAvEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAmI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CAoQ9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -65,8 +65,10 @@ var useForm = function useForm(props) {
|
|
|
65
65
|
var _context$flowMap$glob;
|
|
66
66
|
if (!name) {
|
|
67
67
|
Object.keys(context.updateMap).forEach(function (key) {
|
|
68
|
-
var _context$updateMap$ke
|
|
69
|
-
(_context$updateMap$ke =
|
|
68
|
+
var _context$updateMap$ke;
|
|
69
|
+
(_context$updateMap$ke = context.updateMap[key]) === null || _context$updateMap$ke === void 0 || _context$updateMap$ke.forEach(function (update) {
|
|
70
|
+
update(context.value, context.errors, context.serverErrors);
|
|
71
|
+
});
|
|
70
72
|
});
|
|
71
73
|
Object.keys(context.flowMap).forEach(function (key) {
|
|
72
74
|
context.flowMap[key].forEach(function (update) {
|
|
@@ -76,8 +78,10 @@ var useForm = function useForm(props) {
|
|
|
76
78
|
} else {
|
|
77
79
|
var names = isArray(name) ? name : [name];
|
|
78
80
|
names.forEach(function (key) {
|
|
79
|
-
var _context$updateMap$ke2, _context$
|
|
80
|
-
(_context$updateMap$ke2 =
|
|
81
|
+
var _context$updateMap$ke2, _context$flowMap$key;
|
|
82
|
+
(_context$updateMap$ke2 = context.updateMap[key]) === null || _context$updateMap$ke2 === void 0 || _context$updateMap$ke2.forEach(function (update) {
|
|
83
|
+
update(context.value, context.errors, context.serverErrors);
|
|
84
|
+
});
|
|
81
85
|
(_context$flowMap$key = context.flowMap[key]) === null || _context$flowMap$key === void 0 || _context$flowMap$key.forEach(function (update) {
|
|
82
86
|
update();
|
|
83
87
|
});
|
|
@@ -133,9 +137,11 @@ var useForm = function useForm(props) {
|
|
|
133
137
|
}) : Object.keys(context.validateMap);
|
|
134
138
|
var validates = files2.map(function (key) {
|
|
135
139
|
var validateField = context.validateMap[key];
|
|
136
|
-
return validateField(
|
|
140
|
+
return Array.from(validateField).map(function (validate) {
|
|
141
|
+
return validate(key, deepGet(context.value, key), context.value, config);
|
|
142
|
+
});
|
|
137
143
|
});
|
|
138
|
-
Promise.all(validates).then(function (results) {
|
|
144
|
+
Promise.all(validates.flat()).then(function (results) {
|
|
139
145
|
var error = results.find(function (n) {
|
|
140
146
|
return n !== true;
|
|
141
147
|
});
|
|
@@ -180,8 +186,10 @@ var useForm = function useForm(props) {
|
|
|
180
186
|
Object.keys(vals).forEach(function (key) {
|
|
181
187
|
deepSet(draft, key, vals[key], deepSetOptions);
|
|
182
188
|
if (option.validate) {
|
|
183
|
-
var _context$validateMap
|
|
184
|
-
(_context$validateMap$ =
|
|
189
|
+
var _context$validateMap$;
|
|
190
|
+
(_context$validateMap$ = context.validateMap[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.forEach(function (validate) {
|
|
191
|
+
validate(key, vals[key], current(draft));
|
|
192
|
+
});
|
|
185
193
|
}
|
|
186
194
|
});
|
|
187
195
|
});
|
|
@@ -325,12 +333,17 @@ var useForm = function useForm(props) {
|
|
|
325
333
|
var controlFunc = useLatestObj({
|
|
326
334
|
bind: function bind(n, df, validate, updateFn) {
|
|
327
335
|
if (context.names.has(n)) {
|
|
328
|
-
console.
|
|
329
|
-
return;
|
|
336
|
+
console.warn("name \"".concat(n, "\" already exist"));
|
|
330
337
|
}
|
|
331
338
|
context.names.add(n);
|
|
332
|
-
context.validateMap[n]
|
|
333
|
-
|
|
339
|
+
if (!context.validateMap[n]) {
|
|
340
|
+
context.validateMap[n] = new Set();
|
|
341
|
+
}
|
|
342
|
+
context.validateMap[n].add(validate);
|
|
343
|
+
if (!context.updateMap[n]) {
|
|
344
|
+
context.updateMap[n] = new Set();
|
|
345
|
+
}
|
|
346
|
+
context.updateMap[n].add(updateFn);
|
|
334
347
|
context.removeArr.delete(n);
|
|
335
348
|
if (df !== undefined && deepGet(context.value, n) === undefined) {
|
|
336
349
|
if (!context.mounted) context.defaultValues[n] = df;
|
|
@@ -340,11 +353,19 @@ var useForm = function useForm(props) {
|
|
|
340
353
|
}
|
|
341
354
|
update(n);
|
|
342
355
|
},
|
|
343
|
-
unbind: function unbind(n, reserveAble) {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
356
|
+
unbind: function unbind(n, reserveAble, validateFiled, update) {
|
|
357
|
+
var validateFieldSet = context.validateMap[n];
|
|
358
|
+
if (validateFiled && validateFieldSet.has(validateFiled)) {
|
|
359
|
+
validateFieldSet.delete(validateFiled);
|
|
360
|
+
}
|
|
361
|
+
var updateFieldSet = context.updateMap[n];
|
|
362
|
+
if (update && updateFieldSet.has(update)) {
|
|
363
|
+
updateFieldSet.delete(update);
|
|
364
|
+
}
|
|
365
|
+
if (validateFieldSet.size === 0 && updateFieldSet.size === 0) {
|
|
366
|
+
context.names.delete(n);
|
|
367
|
+
delete context.defaultValues[n];
|
|
368
|
+
}
|
|
348
369
|
if (!reserveAble && !context.removeLock) {
|
|
349
370
|
addRemove(n);
|
|
350
371
|
}
|
|
@@ -419,12 +440,12 @@ var useForm = function useForm(props) {
|
|
|
419
440
|
React.useEffect(function () {
|
|
420
441
|
// 服务端错误更新
|
|
421
442
|
if (!props.error) context.serverErrors = {};else {
|
|
422
|
-
var
|
|
443
|
+
var errors = Object.keys(props.error).reduce(function (prev, cur) {
|
|
423
444
|
var item = props.error[cur];
|
|
424
445
|
var error = item instanceof Error ? item : new Error(item);
|
|
425
446
|
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, cur, error));
|
|
426
447
|
}, {});
|
|
427
|
-
context.serverErrors =
|
|
448
|
+
context.serverErrors = errors;
|
|
428
449
|
}
|
|
429
450
|
update();
|
|
430
451
|
}, [props.error]);
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { AddNoProps, ObjectType } from '../../common/type';
|
|
4
4
|
import { FormItemRule } from '../../utils/rule/rule.type';
|
|
5
|
+
import { FormError } from '../../utils';
|
|
6
|
+
export type ValidateFn = (name: string, value: any, formData: ObjectType, config?: {
|
|
7
|
+
ignoreBind?: boolean;
|
|
8
|
+
}) => Promise<boolean | FormError>;
|
|
9
|
+
export type UpdateFn = (formValue: ObjectType, errors: ObjectType<Error | undefined>, serverErrors: ObjectType<Error | undefined>) => void;
|
|
5
10
|
export interface FormContextValueType {
|
|
6
11
|
func?: {
|
|
7
|
-
unbind: (n: string, reserveAble?: boolean) => void;
|
|
8
|
-
bind: (n: string, df: any, validate:
|
|
9
|
-
ignoreBind?: boolean;
|
|
10
|
-
}) => void, update: (formValue: ObjectType, errors: ObjectType<Error>, serverErrors: ObjectType<Error>) => void) => void;
|
|
12
|
+
unbind: (n: string, reserveAble?: boolean, validate?: ValidateFn, update?: UpdateFn) => void;
|
|
13
|
+
bind: (n: string, df: any, validate: ValidateFn, update: UpdateFn) => void;
|
|
11
14
|
combineRules: <ValueItem>(name: string, propRules: FormItemRule<ValueItem>) => FormItemRule<ValueItem>;
|
|
12
15
|
watch: (names: string[] | undefined, update: () => void) => void;
|
|
13
16
|
unWatch: (names: string[] | undefined, update: () => void) => void;
|
|
@@ -149,7 +152,9 @@ export interface BaseFormProps<T> extends FormCommonConfig {
|
|
|
149
152
|
export type UseFormProps<T> = BaseFormProps<T>;
|
|
150
153
|
export type FormContext = {
|
|
151
154
|
defaultValues: ObjectType;
|
|
152
|
-
validateMap: ObjectType
|
|
155
|
+
validateMap: ObjectType<Set<(name: string, v: any, formValue: ObjectType, config?: {
|
|
156
|
+
ignoreBind?: boolean;
|
|
157
|
+
}) => Promise<boolean | FormError>>>;
|
|
153
158
|
removeArr: Set<string>;
|
|
154
159
|
removeTimer?: number | NodeJS.Timeout;
|
|
155
160
|
names: Set<string>;
|
|
@@ -157,7 +162,7 @@ export type FormContext = {
|
|
|
157
162
|
lastValue: ObjectType | undefined;
|
|
158
163
|
resetTime: number;
|
|
159
164
|
mounted: boolean;
|
|
160
|
-
updateMap: ObjectType
|
|
165
|
+
updateMap: ObjectType<Set<(formValue: ObjectType, errors: ObjectType<Error | undefined>, serverErrors: ObjectType<Error | undefined>) => void>>;
|
|
161
166
|
flowMap: ObjectType<Set<() => void>>;
|
|
162
167
|
value: ObjectType;
|
|
163
168
|
errors: ObjectType<Error | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE;IACP,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,KACE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;AAEjC,MAAM,MAAM,QAAQ,GAAG,CACrB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,EACrC,YAAY,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,KACxC,IAAI,CAAA;AAET,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAC,UAAU,EAAE,MAAM,CAAC,EAAC,QAAQ,KAAM,IAAI,CAAC;QAC5F,IAAI,EAAE,CACJ,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,GAAG,EACP,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,QAAQ,KACb,IAAI,CAAC;QACV,YAAY,EAAE,CAAC,SAAS,EACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,KAC/B,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;QACjE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;KACpE,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACtC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IACjD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,CACR,IAAI,EAAE;QACJ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,EACD,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,KACE,IAAI,CAAC;IACV,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;IACjC,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,MAAM,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC/C,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAClE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED,UAAU,cAAc,CAAC,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IACxD,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACxC;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,UAAU,CAAC;IAC1B,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAE/I,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;IAElC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAEhJ,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACrC,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IACtC,YAAY,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,UAAU,CACzE,mBAAmB,EACnB,MAAM,CACP,CAAC"}
|