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 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 })) })));
@@ -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;
@@ -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;
@@ -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
  // 暴露给外部的方法
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foxit-component",
3
- "version": "1.0.1-beta.6",
3
+ "version": "1.0.2",
4
4
  "author": {
5
5
  "name": "linye",
6
6
  "email": "869675630@qq.com"