@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.
- package/README.md +1 -1
- package/lib/cjs/Form.js +5 -5
- package/lib/cjs/FormField.js +10 -1
- package/lib/cjs/FormItem.js +7 -6
- package/lib/cjs/FormLabel.js +4 -5
- package/lib/cjs/FormList.js +14 -15
- package/lib/cjs/FormMessage.js +1 -2
- package/lib/cjs/FormReset.js +1 -2
- package/lib/cjs/FormSubmit.js +1 -2
- package/lib/cjs/context.js +0 -1
- package/lib/cjs/index.js +0 -1
- package/lib/cjs/styles/index.scss.js +1 -2
- package/lib/cjs/use-form-field.js +5 -12
- package/lib/cjs/use-form.js +124 -33
- package/lib/cjs/utils/index.js +11 -1
- package/lib/esm/Form.js +3 -3
- package/lib/esm/FormField.js +9 -1
- package/lib/esm/FormItem.js +4 -3
- package/lib/esm/FormLabel.js +0 -1
- package/lib/esm/FormList.js +1 -2
- package/lib/esm/FormMessage.js +0 -1
- package/lib/esm/FormReset.js +0 -1
- package/lib/esm/FormSubmit.js +0 -1
- package/lib/esm/context.js +0 -1
- package/lib/esm/index.js +1 -2
- package/lib/esm/styles/index.scss.js +2 -3
- package/lib/esm/use-form-field.js +6 -13
- package/lib/esm/use-form.js +107 -17
- package/lib/esm/utils/index.js +11 -2
- package/lib/types/FormField.d.ts +6 -1
- package/lib/types/FormItem.d.ts +4 -0
- package/lib/types/FormList.d.ts +2 -1
- package/lib/types/types.d.ts +24 -2
- package/lib/types/use-form-field.d.ts +1 -1
- package/lib/types/use-form.d.ts +3 -2
- package/lib/types/utils/index.d.ts +1 -1
- package/package.json +12 -10
- package/lib/cjs/Form.js.map +0 -1
- package/lib/cjs/FormField.js.map +0 -1
- package/lib/cjs/FormItem.js.map +0 -1
- package/lib/cjs/FormLabel.js.map +0 -1
- package/lib/cjs/FormList.js.map +0 -1
- package/lib/cjs/FormMessage.js.map +0 -1
- package/lib/cjs/FormReset.js.map +0 -1
- package/lib/cjs/FormSubmit.js.map +0 -1
- package/lib/cjs/context.js.map +0 -1
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/styles/index.scss.js.map +0 -1
- package/lib/cjs/use-form-field.js.map +0 -1
- package/lib/cjs/use-form.js.map +0 -1
- package/lib/cjs/utils/index.js.map +0 -1
- package/lib/esm/Form.js.map +0 -1
- package/lib/esm/FormField.js.map +0 -1
- package/lib/esm/FormItem.js.map +0 -1
- package/lib/esm/FormLabel.js.map +0 -1
- package/lib/esm/FormList.js.map +0 -1
- package/lib/esm/FormMessage.js.map +0 -1
- package/lib/esm/FormReset.js.map +0 -1
- package/lib/esm/FormSubmit.js.map +0 -1
- package/lib/esm/context.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/styles/index.scss.js.map +0 -1
- package/lib/esm/use-form-field.js.map +0 -1
- package/lib/esm/use-form.js.map +0 -1
- 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
|
-
|
|
|
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[
|
|
99
|
+
React__default["default"].createElement(context.FormProvider, {
|
|
99
100
|
value: providedValue
|
|
100
|
-
}, /*#__PURE__*/React__default[
|
|
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(
|
|
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
|
package/lib/cjs/FormField.js
CHANGED
|
@@ -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
|
package/lib/cjs/FormItem.js
CHANGED
|
@@ -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
|
-
|
|
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[
|
|
64
|
+
return /*#__PURE__*/React__default["default"].createElement(FormLabel.FormLabel, Object.assign({}, rest, {
|
|
64
65
|
className: classname.cx(prefixCls + "-item", className)
|
|
65
|
-
}), /*#__PURE__*/React__default[
|
|
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
|
-
|
|
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
|
package/lib/cjs/FormLabel.js
CHANGED
|
@@ -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[
|
|
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[
|
|
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[
|
|
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[
|
|
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
|
package/lib/cjs/FormList.js
CHANGED
|
@@ -21,7 +21,7 @@ var env = require('@hi-ui/env');
|
|
|
21
21
|
|
|
22
22
|
var context = require('./context.js');
|
|
23
23
|
|
|
24
|
-
var
|
|
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[
|
|
57
|
+
var updateFormList = React__default["default"].useCallback(function (stateFunc, alterTouched, alterErrors) {
|
|
58
58
|
setFormState(function (prev) {
|
|
59
|
-
var values =
|
|
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(
|
|
64
|
-
var fieldTouched = alterTouched ? updateTouched(
|
|
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 ?
|
|
77
|
-
touched: alterTouched ?
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
122
|
-
var list =
|
|
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
|
package/lib/cjs/FormMessage.js
CHANGED
|
@@ -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[
|
|
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
|
package/lib/cjs/FormReset.js
CHANGED
|
@@ -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[
|
|
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
|
package/lib/cjs/FormSubmit.js
CHANGED
|
@@ -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[
|
|
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
|
package/lib/cjs/context.js
CHANGED
package/lib/cjs/index.js
CHANGED
|
@@ -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:
|
|
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
|
|
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 =
|
|
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[
|
|
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 (
|
|
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 (
|
|
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
|