@hi-ui/form 4.0.0-beta.2 → 4.0.0-beta.20

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.
Files changed (65) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/Form.js +5 -5
  3. package/lib/cjs/FormField.js +10 -1
  4. package/lib/cjs/FormItem.js +7 -6
  5. package/lib/cjs/FormLabel.js +4 -5
  6. package/lib/cjs/FormList.js +14 -15
  7. package/lib/cjs/FormMessage.js +1 -2
  8. package/lib/cjs/FormReset.js +1 -2
  9. package/lib/cjs/FormSubmit.js +1 -2
  10. package/lib/cjs/context.js +0 -1
  11. package/lib/cjs/index.js +0 -1
  12. package/lib/cjs/styles/index.scss.js +1 -2
  13. package/lib/cjs/use-form-field.js +5 -12
  14. package/lib/cjs/use-form.js +124 -33
  15. package/lib/cjs/utils/index.js +11 -1
  16. package/lib/esm/Form.js +3 -3
  17. package/lib/esm/FormField.js +9 -1
  18. package/lib/esm/FormItem.js +4 -3
  19. package/lib/esm/FormLabel.js +0 -1
  20. package/lib/esm/FormList.js +1 -2
  21. package/lib/esm/FormMessage.js +0 -1
  22. package/lib/esm/FormReset.js +0 -1
  23. package/lib/esm/FormSubmit.js +0 -1
  24. package/lib/esm/context.js +0 -1
  25. package/lib/esm/index.js +1 -2
  26. package/lib/esm/styles/index.scss.js +2 -3
  27. package/lib/esm/use-form-field.js +6 -13
  28. package/lib/esm/use-form.js +107 -17
  29. package/lib/esm/utils/index.js +11 -2
  30. package/lib/types/FormField.d.ts +6 -1
  31. package/lib/types/FormItem.d.ts +4 -0
  32. package/lib/types/FormList.d.ts +2 -1
  33. package/lib/types/types.d.ts +24 -2
  34. package/lib/types/use-form-field.d.ts +1 -1
  35. package/lib/types/use-form.d.ts +3 -2
  36. package/lib/types/utils/index.d.ts +1 -1
  37. package/package.json +12 -10
  38. package/lib/cjs/Form.js.map +0 -1
  39. package/lib/cjs/FormField.js.map +0 -1
  40. package/lib/cjs/FormItem.js.map +0 -1
  41. package/lib/cjs/FormLabel.js.map +0 -1
  42. package/lib/cjs/FormList.js.map +0 -1
  43. package/lib/cjs/FormMessage.js.map +0 -1
  44. package/lib/cjs/FormReset.js.map +0 -1
  45. package/lib/cjs/FormSubmit.js.map +0 -1
  46. package/lib/cjs/context.js.map +0 -1
  47. package/lib/cjs/index.js.map +0 -1
  48. package/lib/cjs/styles/index.scss.js.map +0 -1
  49. package/lib/cjs/use-form-field.js.map +0 -1
  50. package/lib/cjs/use-form.js.map +0 -1
  51. package/lib/cjs/utils/index.js.map +0 -1
  52. package/lib/esm/Form.js.map +0 -1
  53. package/lib/esm/FormField.js.map +0 -1
  54. package/lib/esm/FormItem.js.map +0 -1
  55. package/lib/esm/FormLabel.js.map +0 -1
  56. package/lib/esm/FormList.js.map +0 -1
  57. package/lib/esm/FormMessage.js.map +0 -1
  58. package/lib/esm/FormReset.js.map +0 -1
  59. package/lib/esm/FormSubmit.js.map +0 -1
  60. package/lib/esm/context.js.map +0 -1
  61. package/lib/esm/index.js.map +0 -1
  62. package/lib/esm/styles/index.scss.js.map +0 -1
  63. package/lib/esm/use-form-field.js.map +0 -1
  64. package/lib/esm/use-form.js.map +0 -1
  65. package/lib/esm/utils/index.js.map +0 -1
package/README.md CHANGED
@@ -162,7 +162,7 @@
162
162
  | valueDispatchTransform | feature | - | 强化功能 |
163
163
  | valueConnectTransform | feature | - | 强化功能 |
164
164
  | validateTrigger | feature | - | 强化功能 |
165
- | children | feature | 支持函数自定义渲染表单控件 | 强化功能 |
165
+ | render | feature | 支持函数自定义渲染表单控件 | 强化功能 |
166
166
 
167
167
  ### FormList
168
168
 
package/lib/cjs/Form.js CHANGED
@@ -60,7 +60,8 @@ var Form = /*#__PURE__*/React.forwardRef(function (_a, ref) {
60
60
  placement = _a$placement === void 0 ? 'vertical' : _a$placement,
61
61
  _a$contentPosition = _a.contentPosition,
62
62
  contentPosition = _a$contentPosition === void 0 ? 'center' : _a$contentPosition,
63
- showColon = _a.showColon,
63
+ _a$showColon = _a.showColon,
64
+ showColon = _a$showColon === void 0 ? true : _a$showColon,
64
65
  rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "innerRef", "labelWidth", "labelPlacement", "placement", "contentPosition", "showColon"]);
65
66
 
66
67
  var formContext = useForm.useForm(rest);
@@ -95,9 +96,9 @@ var Form = /*#__PURE__*/React.forwardRef(function (_a, ref) {
95
96
  return (
96
97
  /*#__PURE__*/
97
98
  // @ts-ignore
98
- React__default['default'].createElement(context.FormProvider, {
99
+ React__default["default"].createElement(context.FormProvider, {
99
100
  value: providedValue
100
- }, /*#__PURE__*/React__default['default'].createElement("form", Object.assign({
101
+ }, /*#__PURE__*/React__default["default"].createElement("form", Object.assign({
101
102
  ref: ref,
102
103
  role: role,
103
104
  className: cls
@@ -115,7 +116,7 @@ var formExtends = function formExtends(model) {
115
116
  // @ts-ignore
116
117
  FORM_REGISTER_TABLE[model.name] = model;
117
118
  } else {
118
- env.invariant(true, 'The name should be unique string and not empty.');
119
+ env.invariant(false, 'The name should be unique string and not empty.');
119
120
  }
120
121
  };
121
122
 
@@ -124,4 +125,3 @@ Object.assign(Form, {
124
125
  });
125
126
  exports.FORM_REGISTER_TABLE = FORM_REGISTER_TABLE;
126
127
  exports.Form = Form;
127
- //# sourceMappingURL=Form.js.map
@@ -18,6 +18,8 @@ var React = require('react');
18
18
  var env = require('@hi-ui/env');
19
19
 
20
20
  var useFormField = require('./use-form-field.js');
21
+
22
+ var typeAssertion = require('@hi-ui/type-assertion');
21
23
  /**
22
24
  * TODO: What is FormField
23
25
  */
@@ -28,6 +30,14 @@ var FormField = function FormField(props) {
28
30
 
29
31
  var fieldProps = useFormField.useFormField(props);
30
32
 
33
+ if (typeAssertion.isFunction(props.render)) {
34
+ return props.render(fieldProps);
35
+ }
36
+
37
+ if (typeAssertion.isFunction(props.children)) {
38
+ return props.children(fieldProps);
39
+ }
40
+
31
41
  if (! /*#__PURE__*/React.isValidElement(props.children)) {
32
42
  console.warn('FormField must pass a valid element as children.');
33
43
  return (_a = props.children) !== null && _a !== void 0 ? _a : null;
@@ -41,4 +51,3 @@ if (env.__DEV__) {
41
51
  }
42
52
 
43
53
  exports.FormField = FormField;
44
- //# sourceMappingURL=FormField.js.map
@@ -54,15 +54,16 @@ var FormItem = function FormItem(_a) {
54
54
  valueDispatchTransform = _a.valueDispatchTransform,
55
55
  valueConnectTransform = _a.valueConnectTransform,
56
56
  validateTrigger = _a.validateTrigger,
57
- rest = tslib.__rest(_a, ["className", "children", "field", "valueType", "rules", "valuePropName", "valueChangeFuncPropName", "valueDispatchTransform", "valueConnectTransform", "validateTrigger"]); // @ts-ignore
57
+ render = _a.render,
58
+ rest = tslib.__rest(_a, ["className", "children", "field", "valueType", "rules", "valuePropName", "valueChangeFuncPropName", "valueDispatchTransform", "valueConnectTransform", "validateTrigger", "render"]); // @ts-ignore
58
59
 
59
60
 
60
61
  var _useFormContext = context.useFormContext(),
61
62
  prefixCls = _useFormContext.prefixCls;
62
63
 
63
- return /*#__PURE__*/React__default['default'].createElement(FormLabel.FormLabel, Object.assign({}, rest, {
64
+ return /*#__PURE__*/React__default["default"].createElement(FormLabel.FormLabel, Object.assign({}, rest, {
64
65
  className: classname.cx(prefixCls + "-item", className)
65
- }), /*#__PURE__*/React__default['default'].createElement(FormField.FormField, {
66
+ }), /*#__PURE__*/React__default["default"].createElement(FormField.FormField, {
66
67
  field: field,
67
68
  valueType: valueType,
68
69
  rules: rules,
@@ -70,8 +71,9 @@ var FormItem = function FormItem(_a) {
70
71
  valueChangeFuncPropName: valueChangeFuncPropName,
71
72
  valueDispatchTransform: valueDispatchTransform,
72
73
  valueConnectTransform: valueConnectTransform,
73
- validateTrigger: validateTrigger
74
- }, children), /*#__PURE__*/React__default['default'].createElement(FormMessage.FormMessage, {
74
+ validateTrigger: validateTrigger,
75
+ render: render
76
+ }, children), /*#__PURE__*/React__default["default"].createElement(FormMessage.FormMessage, {
75
77
  field: field,
76
78
  className: prefixCls + "-item__message"
77
79
  }));
@@ -82,4 +84,3 @@ if (env.__DEV__) {
82
84
  }
83
85
 
84
86
  exports.FormItem = FormItem;
85
- //# sourceMappingURL=FormItem.js.map
@@ -106,22 +106,22 @@ var FormLabel = /*#__PURE__*/React.forwardRef(function (props, ref) {
106
106
  var style = Object.assign(Object.assign({}, styleProp), {
107
107
  alignItems: contentPositionMemo
108
108
  });
109
- return /*#__PURE__*/React__default['default'].createElement("div", Object.assign({
109
+ return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
110
110
  ref: ref,
111
111
  role: role,
112
112
  className: cls,
113
113
  style: style
114
- }, rest), label ? /*#__PURE__*/React__default['default'].createElement("label", {
114
+ }, rest), label ? /*#__PURE__*/React__default["default"].createElement("label", {
115
115
  className: prefixCls + "__text",
116
116
  style: {
117
117
  width: labelWidth
118
118
  }
119
- }, label, colon) : /*#__PURE__*/React__default['default'].createElement("span", {
119
+ }, label, colon) : /*#__PURE__*/React__default["default"].createElement("span", {
120
120
  className: prefixCls + "__indent",
121
121
  style: {
122
122
  width: labelWidth
123
123
  }
124
- }), /*#__PURE__*/React__default['default'].createElement("div", {
124
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
125
125
  className: prefixCls + "__control",
126
126
  style: {
127
127
  width: controlWidth
@@ -134,4 +134,3 @@ if (env.__DEV__) {
134
134
  }
135
135
 
136
136
  exports.FormLabel = FormLabel;
137
- //# sourceMappingURL=FormLabel.js.map
@@ -21,7 +21,7 @@ var env = require('@hi-ui/env');
21
21
 
22
22
  var context = require('./context.js');
23
23
 
24
- var funcUtils = require('@hi-ui/func-utils');
24
+ var objectUtils = require('@hi-ui/object-utils');
25
25
 
26
26
  var typeAssertion = require('@hi-ui/type-assertion');
27
27
 
@@ -54,14 +54,14 @@ var FormList = function FormList(_ref) {
54
54
  * form List 动态字段更新器
55
55
  */
56
56
 
57
- var updateFormList = React__default['default'].useCallback(function (stateFunc, alterTouched, alterErrors) {
57
+ var updateFormList = React__default["default"].useCallback(function (stateFunc, alterTouched, alterErrors) {
58
58
  setFormState(function (prev) {
59
- var values = funcUtils.setNested(prev.values, name, stateFunc(funcUtils.getNested(prev.values, name))); // console.log(values, stateFunc(getNested(prev.values, name)))
59
+ var values = objectUtils.setNested(prev.values, name, stateFunc(objectUtils.getNested(prev.values, name))); // console.log(values, stateFunc(getNested(prev.values, name)))
60
60
 
61
61
  var updateErrors = typeof alterErrors === 'function' ? alterErrors : stateFunc;
62
62
  var updateTouched = typeof alterTouched === 'function' ? alterTouched : stateFunc;
63
- var fieldError = alterErrors ? updateErrors(funcUtils.getNested(prev.errors, name)) : undefined;
64
- var fieldTouched = alterTouched ? updateTouched(funcUtils.getNested(prev.touched, name)) : undefined;
63
+ var fieldError = alterErrors ? updateErrors(objectUtils.getNested(prev.errors, name)) : undefined;
64
+ var fieldTouched = alterTouched ? updateTouched(objectUtils.getNested(prev.touched, name)) : undefined;
65
65
 
66
66
  if (!typeAssertion.isArrayNonEmpty(fieldError)) {
67
67
  fieldError = undefined;
@@ -73,25 +73,25 @@ var FormList = function FormList(_ref) {
73
73
 
74
74
  return {
75
75
  values: values,
76
- errors: alterErrors ? funcUtils.setNested(prev.errors, name, fieldError) : prev.errors,
77
- touched: alterTouched ? funcUtils.setNested(prev.touched, name, fieldTouched) : prev.touched
76
+ errors: alterErrors ? objectUtils.setNested(prev.errors, name, fieldError) : prev.errors,
77
+ touched: alterTouched ? objectUtils.setNested(prev.touched, name, fieldTouched) : prev.touched
78
78
  };
79
79
  });
80
80
  }, [name, setFormState]);
81
- var add = React__default['default'].useCallback(function (value) {
81
+ var add = React__default["default"].useCallback(function (value) {
82
82
  // 维护的 动态 field list
83
83
  updateFormList(function (prev) {
84
84
  return [].concat(asArray(prev), [value]);
85
85
  }, false, false);
86
86
  }, [updateFormList]);
87
- var remove = React__default['default'].useCallback(function (index) {
87
+ var remove = React__default["default"].useCallback(function (index) {
88
88
  updateFormList(function (prev) {
89
89
  return asArray(prev).filter(function (_, idx) {
90
90
  return idx !== index;
91
91
  });
92
92
  }, true, true);
93
93
  }, [updateFormList]);
94
- var insertBefore = React__default['default'].useCallback(function (index, value) {
94
+ var insertBefore = React__default["default"].useCallback(function (index, value) {
95
95
  updateFormList(function (prev) {
96
96
  return insert(asArray(prev), index, value);
97
97
  }, function (prev) {
@@ -100,7 +100,7 @@ var FormList = function FormList(_ref) {
100
100
  return insert(asArray(prev), index, null);
101
101
  });
102
102
  }, [updateFormList]);
103
- var swap = React__default['default'].useCallback(function (aIndex, bIndex) {
103
+ var swap = React__default["default"].useCallback(function (aIndex, bIndex) {
104
104
  updateFormList(function (prev) {
105
105
  var copy = [].concat(asArray(prev));
106
106
  var temp = copy[aIndex];
@@ -109,7 +109,7 @@ var FormList = function FormList(_ref) {
109
109
  return copy;
110
110
  }, true, true);
111
111
  }, [updateFormList]);
112
- var move = React__default['default'].useCallback(function (fromIndex, toIndex) {
112
+ var move = React__default["default"].useCallback(function (fromIndex, toIndex) {
113
113
  updateFormList(function (prev) {
114
114
  var copy = [].concat(asArray(prev));
115
115
  var temp = copy[fromIndex];
@@ -118,8 +118,8 @@ var FormList = function FormList(_ref) {
118
118
  return copy;
119
119
  }, true, true);
120
120
  }, [updateFormList]);
121
- var listFields = React__default['default'].useMemo(function () {
122
- var list = funcUtils.getNested(values, name) || []; // @ts-ignore
121
+ var listFields = React__default["default"].useMemo(function () {
122
+ var list = objectUtils.getNested(values, name) || []; // @ts-ignore
123
123
 
124
124
  return list.map(function (value, index) {
125
125
  return {
@@ -163,4 +163,3 @@ var asArray = function asArray(arr) {
163
163
  };
164
164
 
165
165
  exports.FormList = FormList;
166
- //# sourceMappingURL=FormList.js.map
@@ -57,7 +57,7 @@ var FormMessage = /*#__PURE__*/React.forwardRef(function (_a, ref) {
57
57
 
58
58
  var message = field ? getFieldError(field) : null;
59
59
  var cls = classname.cx(prefixCls, className, message && prefixCls + "--show");
60
- return /*#__PURE__*/React__default['default'].createElement("span", Object.assign({
60
+ return /*#__PURE__*/React__default["default"].createElement("span", Object.assign({
61
61
  ref: ref,
62
62
  role: role,
63
63
  className: cls
@@ -69,4 +69,3 @@ if (env.__DEV__) {
69
69
  }
70
70
 
71
71
  exports.FormMessage = FormMessage;
72
- //# sourceMappingURL=FormMessage.js.map
@@ -56,7 +56,7 @@ var FormReset = /*#__PURE__*/React.forwardRef(function (_a, ref) {
56
56
  resetForm = _useFormContext.resetForm;
57
57
 
58
58
  var cls = classname.cx(prefixCls, className);
59
- return /*#__PURE__*/React__default['default'].createElement(Button__default['default'], Object.assign({
59
+ return /*#__PURE__*/React__default["default"].createElement(Button__default["default"], Object.assign({
60
60
  ref: ref,
61
61
  className: cls,
62
62
  type: type
@@ -73,4 +73,3 @@ if (env.__DEV__) {
73
73
  }
74
74
 
75
75
  exports.FormReset = FormReset;
76
- //# sourceMappingURL=FormReset.js.map
@@ -61,7 +61,7 @@ var FormSubmit = /*#__PURE__*/React.forwardRef(function (_a, ref) {
61
61
  submitForm = _useFormContext.submitForm;
62
62
 
63
63
  var cls = classname.cx(prefixCls, className);
64
- return /*#__PURE__*/React__default['default'].createElement(Button__default['default'], Object.assign({
64
+ return /*#__PURE__*/React__default["default"].createElement(Button__default["default"], Object.assign({
65
65
  ref: ref,
66
66
  role: role,
67
67
  className: cls,
@@ -84,4 +84,3 @@ if (env.__DEV__) {
84
84
  }
85
85
 
86
86
  exports.FormSubmit = FormSubmit;
87
- //# sourceMappingURL=FormSubmit.js.map
@@ -30,4 +30,3 @@ var useFormContext = function useFormContext() {
30
30
 
31
31
  exports.FormProvider = FormProvider;
32
32
  exports.useFormContext = useFormContext;
33
- //# sourceMappingURL=context.js.map
package/lib/cjs/index.js CHANGED
@@ -38,4 +38,3 @@ exports.FormList = FormList.FormList;
38
38
  exports.FormSubmit = FormSubmit.FormSubmit;
39
39
  exports.FormReset = FormReset.FormReset;
40
40
  exports["default"] = Form;
41
- //# sourceMappingURL=index.js.map
@@ -12,11 +12,10 @@
12
12
  Object.defineProperty(exports, '__esModule', {
13
13
  value: true
14
14
  });
15
- var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-form {\n max-width: 100%;\n position: relative; }\n.hi-v4-form fieldset {\n margin: 0;\n padding: 0;\n border: 0; }\n.hi-v4-form fieldset + fieldset {\n margin-top: 16px; }\n.hi-v4-form legend {\n margin: 0 0 16px;\n color: #1f2937;\n color: var(--hi-v4-color-gray-800, #1f2937); }\n.hi-v4-form--placement-horizontal {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n.hi-v4-form--placement-horizontal .hi-v4-form-label__indent {\n min-height: 32px; }\n.hi-v4-form-label {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n margin-right: 8px;\n margin-right: var(--hi-v4-spacing-4, 8px);\n margin-bottom: 24px; }\n.hi-v4-form-label__text, .hi-v4-form-label__indent {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n vertical-align: top;\n color: #1f2937;\n color: var(--hi-v4-color-gray-800, #1f2937);\n overflow-wrap: break-word; }\n.hi-v4-form-label__text {\n padding-right: 12px;\n padding-right: var(--hi-v4-spacing-6, 12px);\n min-height: 32px;\n line-height: 32px; }\n.hi-v4-form-label--placement-left .hi-v4-form-label__text {\n text-align: left; }\n.hi-v4-form-label--placement-right .hi-v4-form-label__text {\n text-align: right; }\n.hi-v4-form-label--placement-top .hi-v4-form-label__text {\n height: 22px;\n padding-right: 8px;\n margin-bottom: 8px; }\n.hi-v4-form-label--required .hi-v4-form-label__text::before {\n margin-right: 4px;\n margin-right: var(--hi-v4-spacing-2, 4px);\n content: '*';\n color: #ff5959;\n color: var(--hi-v4-color-red-500, #ff5959); }\n.hi-v4-form-label--placement-top {\n text-align: left;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-bottom: 20px;\n margin-bottom: var(--hi-v4-spacing-10, 20px);\n padding-right: 0; }\n.hi-v4-form-label__content {\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1;\n position: relative;\n vertical-align: top;\n min-height: 32px;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n.hi-v4-form-message {\n display: block;\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n min-height: 24px;\n padding: 2px 0;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n line-height: 20px;\n -webkit-transform: translateY(-10%);\n transform: translateY(-10%);\n opacity: 0;\n color: #ff5959;\n color: var(--hi-v4-color-red-500, #ff5959);\n -webkit-transition: all 0.3s;\n transition: all 0.3s; }\n.hi-v4-form-message--show {\n opacity: 1;\n -webkit-transform: translateY(0);\n transform: translateY(0); }\n.hi-v4-form-item {\n position: relative; }\n.hi-v4-form-item__message {\n position: absolute; }\n";
15
+ var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-form {\n max-width: 100%;\n position: relative; }\n.hi-v4-form fieldset {\n margin: 0;\n padding: 0;\n border: 0; }\n.hi-v4-form fieldset + fieldset {\n margin-top: 16px; }\n.hi-v4-form legend {\n margin: 0 0 16px;\n color: var(--hi-v4-color-gray-800, #1f2937); }\n.hi-v4-form--placement-horizontal {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n.hi-v4-form--placement-horizontal .hi-v4-form-label__indent {\n min-height: var(--hi-v4-height-8, 32px); }\n.hi-v4-form-label {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n font-size: var(--hi-v4-text-size-md, 0.875rem);\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin-right: 0;\n margin-bottom: var(--hi-v4-spacing-12, 24px); }\n.hi-v4-form-label__text, .hi-v4-form-label__indent {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n vertical-align: top;\n color: var(--hi-v4-color-gray-800, #1f2937);\n overflow-wrap: break-word; }\n.hi-v4-form-label__text {\n padding-right: var(--hi-v4-spacing-6, 12px);\n min-height: var(--hi-v4-height-8, 32px);\n line-height: var(--hi-v4-height-8, 32px); }\n.hi-v4-form-label--placement-left .hi-v4-form-label__text {\n text-align: left; }\n.hi-v4-form-label--placement-right .hi-v4-form-label__text {\n text-align: right; }\n.hi-v4-form-label--placement-top .hi-v4-form-label__text {\n height: 22px;\n min-height: 22px;\n line-height: 22px;\n padding-right: 0;\n margin-bottom: var(--hi-v4-spacing-4, 8px); }\n.hi-v4-form-label--required .hi-v4-form-label__text::before {\n margin-right: var(--hi-v4-spacing-2, 4px);\n content: '*';\n color: var(--hi-v4-color-danger-500, var(--hi-v4-color-red-500, #ff5959)); }\n.hi-v4-form-label--placement-top {\n text-align: left;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-bottom: var(--hi-v4-spacing-12, 24px);\n padding-right: 0; }\n.hi-v4-form-label__content {\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1;\n position: relative;\n vertical-align: top;\n min-height: var(--hi-v4-height-8, 32px);\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n.hi-v4-form-label__control {\n min-width: 1px; }\n.hi-v4-form-message {\n display: block;\n font-size: var(--hi-v4-text-size-md, 0.875rem);\n min-height: 24px;\n padding: 2px 0;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n line-height: 20px;\n -webkit-transform: translateY(-10%);\n transform: translateY(-10%);\n opacity: 0;\n color: var(--hi-v4-color-danger-500, var(--hi-v4-color-red-500, #ff5959));\n -webkit-transition: all 0.3s;\n transition: all 0.3s; }\n.hi-v4-form-message--show {\n opacity: 1;\n -webkit-transform: translateY(0);\n transform: translateY(0); }\n.hi-v4-form-item {\n position: relative; }\n.hi-v4-form-item__message {\n position: absolute; }\n";
16
16
 
17
17
  var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
18
18
 
19
19
  __styleInject__(css_248z);
20
20
 
21
21
  exports["default"] = css_248z;
22
- //# sourceMappingURL=index.scss.js.map
@@ -23,7 +23,7 @@ var typeAssertion = require('@hi-ui/type-assertion');
23
23
 
24
24
  var Validater = require('async-validator');
25
25
 
26
- var funcUtils = require('@hi-ui/func-utils');
26
+ var arrayUtils = require('@hi-ui/array-utils');
27
27
 
28
28
  var index = require('./utils/index.js');
29
29
 
@@ -53,7 +53,7 @@ var useFormField = function useFormField(props) {
53
53
 
54
54
  var fieldRules = React.useMemo(function () {
55
55
  // @ts-ignore
56
- var rules = funcUtils.toArray(rulesProp !== null && rulesProp !== void 0 ? rulesProp : getFieldRules(field));
56
+ var rules = arrayUtils.normalizeArray(rulesProp !== null && rulesProp !== void 0 ? rulesProp : getFieldRules(field));
57
57
  return rules.map(function (rule) {
58
58
  return Object.assign({
59
59
  type: valueType
@@ -70,25 +70,19 @@ var useFormField = function useFormField(props) {
70
70
 
71
71
 
72
72
  var fieldMD5 = index.stringify(field);
73
- var validater = new Validater__default['default']((_Validater = {}, _Validater[fieldMD5] = fieldRules, _Validater));
73
+ var validater = new Validater__default["default"]((_Validater = {}, _Validater[fieldMD5] = fieldRules, _Validater));
74
74
  return validater.validate((_validater$validate = {}, _validater$validate[fieldMD5] = value, _validater$validate), {
75
75
  firstFields: true
76
76
  });
77
77
  }, [fieldRules, field]); // 注入当前 field 及其验证规则到 Form
78
78
 
79
79
  React.useEffect(function () {
80
- if (typeAssertion.isNullish(field) || field === '') return;
81
- if (typeAssertion.isArray(field) && field.every(function (item) {
82
- return typeAssertion.isNullish(item) || item === '';
83
- })) return;
80
+ if (!index.isValidField(field)) return;
84
81
  registerField(field, {
85
82
  validate: fieldValidate
86
83
  });
87
84
  return function () {
88
- if (typeAssertion.isNullish(field) || field === '') return;
89
- if (typeAssertion.isArray(field) && field.every(function (item) {
90
- return typeAssertion.isNullish(item) || item === '';
91
- })) return;
85
+ if (!index.isValidField(field)) return;
92
86
  unregisterField(field);
93
87
  };
94
88
  }, [registerField, unregisterField, field, fieldValidate]);
@@ -96,4 +90,3 @@ var useFormField = function useFormField(props) {
96
90
  };
97
91
 
98
92
  exports.useFormField = useFormField;
99
- //# sourceMappingURL=use-form-field.js.map