foxit-component 1.0.1-beta.6 → 1.0.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/es/Form/Form.js +3 -2
- package/es/Form/Form.types.d.ts +1 -0
- package/es/Form/FormItem.js +9 -1
- package/es/Form/FormProvider.js +23 -0
- package/package.json +1 -1
package/es/Form/Form.js
CHANGED
|
@@ -22,14 +22,15 @@ var Form = function (_a, ref) {
|
|
|
22
22
|
}
|
|
23
23
|
}, [onFinish]);
|
|
24
24
|
useImperativeHandle(ref, function () {
|
|
25
|
-
var _a, _b, _c, _d, _e, _f;
|
|
25
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
26
26
|
return ({
|
|
27
27
|
setFieldsValue: (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.setFieldsValue,
|
|
28
28
|
getFieldsValue: (_b = formRef.current) === null || _b === void 0 ? void 0 : _b.getFieldsValue,
|
|
29
29
|
resetFields: (_c = formRef.current) === null || _c === void 0 ? void 0 : _c.resetFields,
|
|
30
30
|
validateFields: (_d = formRef.current) === null || _d === void 0 ? void 0 : _d.validateFields,
|
|
31
31
|
setFieldsStatus: (_e = formRef.current) === null || _e === void 0 ? void 0 : _e.setFieldsStatus,
|
|
32
|
-
subscribe: (_f = formRef.current) === null || _f === void 0 ? void 0 : _f.subscribe
|
|
32
|
+
subscribe: (_f = formRef.current) === null || _f === void 0 ? void 0 : _f.subscribe,
|
|
33
|
+
updateFieldRules: (_g = formRef.current) === null || _g === void 0 ? void 0 : _g.updateFieldRules
|
|
33
34
|
});
|
|
34
35
|
});
|
|
35
36
|
return (jsx(FormProvider, __assign({ initialValues: initialValues, layout: layout, ref: formRef }, { children: jsx("form", __assign({ onSubmit: handleSubmit, className: className, style: style }, { children: children })) })));
|
package/es/Form/Form.types.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export interface FormInstance {
|
|
|
35
35
|
}[]) => void;
|
|
36
36
|
registerField: (name: string, rules: ValidationRule[]) => void;
|
|
37
37
|
unregisterField: (name: string) => void;
|
|
38
|
+
updateFieldRules: (name: string, rules: ValidationRule[]) => void;
|
|
38
39
|
subscribe: (fieldNames: string[], callback: (values: {
|
|
39
40
|
[key: string]: unknown;
|
|
40
41
|
}) => void) => () => void;
|
package/es/Form/FormItem.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __assign } from '../node_modules/tslib/tslib.es6.js';
|
|
2
2
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
-
import React, { useContext, useEffect, useCallback } from 'react';
|
|
3
|
+
import React, { useContext, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import { FormContext } from './FormContext.js';
|
|
5
5
|
import classNames from 'classnames';
|
|
6
6
|
|
|
@@ -8,13 +8,21 @@ var FormItem = function (_a) {
|
|
|
8
8
|
var _b, _c, _d;
|
|
9
9
|
var name = _a.name, label = _a.label, extra = _a.extra, _e = _a.rules, rules = _e === void 0 ? [] : _e, children = _a.children, className = _a.className;
|
|
10
10
|
var _f = useContext(FormContext), form = _f.form, formFields = _f.formFields, layout = _f.layout;
|
|
11
|
+
var rulesRef = useRef(rules);
|
|
11
12
|
// Register field when component mounts
|
|
12
13
|
useEffect(function () {
|
|
13
14
|
form.registerField(name, rules);
|
|
15
|
+
rulesRef.current = rules;
|
|
14
16
|
return function () {
|
|
15
17
|
form.unregisterField(name);
|
|
16
18
|
};
|
|
17
19
|
}, []);
|
|
20
|
+
useEffect(function () {
|
|
21
|
+
if (JSON.stringify(rulesRef.current) !== JSON.stringify(rules)) {
|
|
22
|
+
form.updateFieldRules(name, rules);
|
|
23
|
+
rulesRef.current = rules;
|
|
24
|
+
}
|
|
25
|
+
}, [rules]);
|
|
18
26
|
var error = (_b = formFields[name]) === null || _b === void 0 ? void 0 : _b.error;
|
|
19
27
|
var warning = (_c = formFields[name]) === null || _c === void 0 ? void 0 : _c.warning;
|
|
20
28
|
var value = (_d = formFields[name]) === null || _d === void 0 ? void 0 : _d.value;
|
package/es/Form/FormProvider.js
CHANGED
|
@@ -243,6 +243,28 @@ var FormProvider = function (_a, ref) {
|
|
|
243
243
|
});
|
|
244
244
|
forceUpdate({}); // Trigger re-render
|
|
245
245
|
}, []);
|
|
246
|
+
// 更新字段规则
|
|
247
|
+
var updateFieldRules = useCallback(function (name, rules) {
|
|
248
|
+
if (formFieldsRef.current[name]) {
|
|
249
|
+
formFieldsRef.current = __assign({}, formFieldsRef.current); // Create a new object
|
|
250
|
+
formFieldsRef.current[name] = __assign(__assign({}, formFieldsRef.current[name]), { rules: rules || [] });
|
|
251
|
+
// 立即重新验证该字段
|
|
252
|
+
var currentValue = formFieldsRef.current[name].value;
|
|
253
|
+
var validation = validateField(name, currentValue, rules);
|
|
254
|
+
if (validation) {
|
|
255
|
+
if (validation.type === 'error') {
|
|
256
|
+
formFieldsRef.current[name] = __assign(__assign({}, formFieldsRef.current[name]), { error: validation.message, warning: undefined });
|
|
257
|
+
}
|
|
258
|
+
else if (validation.type === 'warning') {
|
|
259
|
+
formFieldsRef.current[name] = __assign(__assign({}, formFieldsRef.current[name]), { warning: validation.message, error: undefined });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
formFieldsRef.current[name] = __assign(__assign({}, formFieldsRef.current[name]), { error: undefined, warning: undefined });
|
|
264
|
+
}
|
|
265
|
+
forceUpdate({}); // Trigger re-render
|
|
266
|
+
}
|
|
267
|
+
}, [validateField]);
|
|
246
268
|
formInstanceRef.current = {
|
|
247
269
|
setFieldsValue: setFieldsValue,
|
|
248
270
|
getFieldsValue: getFieldsValue,
|
|
@@ -251,6 +273,7 @@ var FormProvider = function (_a, ref) {
|
|
|
251
273
|
setFieldsStatus: setFieldsStatus,
|
|
252
274
|
registerField: registerField,
|
|
253
275
|
unregisterField: unregisterField,
|
|
276
|
+
updateFieldRules: updateFieldRules,
|
|
254
277
|
subscribe: subscribe
|
|
255
278
|
};
|
|
256
279
|
// 暴露给外部的方法
|