@hi-ui/form 4.0.0-beta.16 → 4.0.0-beta.19
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/lib/cjs/styles/index.scss.js +1 -1
- package/lib/cjs/use-form-field.js +2 -8
- package/lib/cjs/use-form.js +4 -1
- package/lib/cjs/utils/index.js +11 -0
- package/lib/esm/styles/index.scss.js +1 -1
- package/lib/esm/use-form-field.js +4 -10
- package/lib/esm/use-form.js +5 -2
- package/lib/esm/utils/index.js +11 -1
- package/lib/types/utils/index.d.ts +1 -1
- package/package.json +11 -11
|
@@ -12,7 +12,7 @@
|
|
|
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: 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: var(--hi-v4-text-size-normal, 0.875rem);\n margin-right: var(--hi-v4-spacing-
|
|
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-normal, 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-normal, 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-normal, 32px);\n line-height: var(--hi-v4-height-normal, 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-normal, 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-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: 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
|
|
|
@@ -77,18 +77,12 @@ var useFormField = function useFormField(props) {
|
|
|
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]);
|
package/lib/cjs/use-form.js
CHANGED
|
@@ -574,7 +574,10 @@ var useForm = function useForm(_a) {
|
|
|
574
574
|
valueConnectTransform = _props.valueConnectTransform,
|
|
575
575
|
_props$validateTrigge = _props.validateTrigger,
|
|
576
576
|
validateTriggerProp = _props$validateTrigge === void 0 ? validateTriggersMemo : _props$validateTrigge,
|
|
577
|
-
children = _props.children;
|
|
577
|
+
children = _props.children; // field 未设置,不进行收集管理
|
|
578
|
+
|
|
579
|
+
if (!index.isValidField(field)) return {}; // 控件的 props
|
|
580
|
+
|
|
578
581
|
var controlProps = children && children.props || {};
|
|
579
582
|
var validateTrigger = typeAssertion.isArray(validateTriggerProp) ? validateTriggerProp : [validateTriggerProp];
|
|
580
583
|
var validateOnCollect = validateTrigger.includes(valueChangeFuncPropName);
|
package/lib/cjs/utils/index.js
CHANGED
|
@@ -13,6 +13,8 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
13
13
|
value: true
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
+
var typeAssertion = require('@hi-ui/type-assertion');
|
|
17
|
+
|
|
16
18
|
var stringify = function stringify(field) {
|
|
17
19
|
return JSON.stringify(field);
|
|
18
20
|
};
|
|
@@ -21,5 +23,14 @@ var parse = function parse(fieldStr) {
|
|
|
21
23
|
return JSON.parse(fieldStr);
|
|
22
24
|
};
|
|
23
25
|
|
|
26
|
+
var isValidField = function isValidField(field) {
|
|
27
|
+
if (typeAssertion.isNullish(field) || field === '') return false;
|
|
28
|
+
if (typeAssertion.isArray(field) && field.every(function (item) {
|
|
29
|
+
return typeAssertion.isNullish(item) || item === '';
|
|
30
|
+
})) return false;
|
|
31
|
+
return true;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
exports.isValidField = isValidField;
|
|
24
35
|
exports.parse = parse;
|
|
25
36
|
exports.stringify = stringify;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
|
-
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: 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-normal, 0.875rem);\n margin-right: var(--hi-v4-spacing-
|
|
10
|
+
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-normal, 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-normal, 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-normal, 32px);\n line-height: var(--hi-v4-height-normal, 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-normal, 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-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: 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";
|
|
11
11
|
|
|
12
12
|
var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
|
|
13
13
|
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { useMemo, useCallback, useEffect } from 'react';
|
|
11
11
|
import { useFormContext } from './context.js';
|
|
12
|
-
import { isArrayNonEmpty
|
|
12
|
+
import { isArrayNonEmpty } from '@hi-ui/type-assertion';
|
|
13
13
|
import Validater from 'async-validator';
|
|
14
14
|
import { normalizeArray } from '@hi-ui/array-utils';
|
|
15
|
-
import { stringify } from './utils/index.js';
|
|
15
|
+
import { stringify, isValidField } from './utils/index.js';
|
|
16
16
|
|
|
17
17
|
var useFormField = function useFormField(props) {
|
|
18
18
|
var field = props.field,
|
|
@@ -56,18 +56,12 @@ var useFormField = function useFormField(props) {
|
|
|
56
56
|
}, [fieldRules, field]); // 注入当前 field 及其验证规则到 Form
|
|
57
57
|
|
|
58
58
|
useEffect(function () {
|
|
59
|
-
if (
|
|
60
|
-
if (isArray(field) && field.every(function (item) {
|
|
61
|
-
return isNullish(item) || item === '';
|
|
62
|
-
})) return;
|
|
59
|
+
if (!isValidField(field)) return;
|
|
63
60
|
registerField(field, {
|
|
64
61
|
validate: fieldValidate
|
|
65
62
|
});
|
|
66
63
|
return function () {
|
|
67
|
-
if (
|
|
68
|
-
if (isArray(field) && field.every(function (item) {
|
|
69
|
-
return isNullish(item) || item === '';
|
|
70
|
-
})) return;
|
|
64
|
+
if (!isValidField(field)) return;
|
|
71
65
|
unregisterField(field);
|
|
72
66
|
};
|
|
73
67
|
}, [registerField, unregisterField, field, fieldValidate]);
|
package/lib/esm/use-form.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
11
11
|
import { __rest, __awaiter } from 'tslib';
|
|
12
|
-
import { stringify, parse } from './utils/index.js';
|
|
12
|
+
import { stringify, parse, isValidField } from './utils/index.js';
|
|
13
13
|
import React, { useMemo, useReducer, useCallback, useRef } from 'react';
|
|
14
14
|
import { useLatestRef, useLatestCallback } from '@hi-ui/use-latest';
|
|
15
15
|
import { isArray, isObjectLike, isFunction } from '@hi-ui/type-assertion';
|
|
@@ -547,7 +547,10 @@ var useForm = function useForm(_a) {
|
|
|
547
547
|
valueConnectTransform = _props.valueConnectTransform,
|
|
548
548
|
_props$validateTrigge = _props.validateTrigger,
|
|
549
549
|
validateTriggerProp = _props$validateTrigge === void 0 ? validateTriggersMemo : _props$validateTrigge,
|
|
550
|
-
children = _props.children;
|
|
550
|
+
children = _props.children; // field 未设置,不进行收集管理
|
|
551
|
+
|
|
552
|
+
if (!isValidField(field)) return {}; // 控件的 props
|
|
553
|
+
|
|
551
554
|
var controlProps = children && children.props || {};
|
|
552
555
|
var validateTrigger = isArray(validateTriggerProp) ? validateTriggerProp : [validateTriggerProp];
|
|
553
556
|
var validateOnCollect = validateTrigger.includes(valueChangeFuncPropName);
|
package/lib/esm/utils/index.js
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
|
+
import { isNullish, isArray } from '@hi-ui/type-assertion';
|
|
11
|
+
|
|
10
12
|
var stringify = function stringify(field) {
|
|
11
13
|
return JSON.stringify(field);
|
|
12
14
|
};
|
|
@@ -15,4 +17,12 @@ var parse = function parse(fieldStr) {
|
|
|
15
17
|
return JSON.parse(fieldStr);
|
|
16
18
|
};
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
var isValidField = function isValidField(field) {
|
|
21
|
+
if (isNullish(field) || field === '') return false;
|
|
22
|
+
if (isArray(field) && field.every(function (item) {
|
|
23
|
+
return isNullish(item) || item === '';
|
|
24
|
+
})) return false;
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { isValidField, parse, stringify };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { FormFieldPath } from './../types';
|
|
2
|
-
export declare const setProp: (o: any, filed: any, value: any) => any;
|
|
3
2
|
export declare const stringify: (field: FormFieldPath) => string;
|
|
4
3
|
export declare const parse: (fieldStr: string) => FormFieldPath;
|
|
4
|
+
export declare const isValidField: (field: FormFieldPath | undefined) => field is FormFieldPath;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hi-ui/form",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.19",
|
|
4
4
|
"description": "A sub-package for @hi-ui/hiui.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "HIUI <mi-hiui@xiaomi.com>",
|
|
@@ -43,17 +43,17 @@
|
|
|
43
43
|
"url": "https://github.com/XiaoMi/hiui/issues"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@hi-ui/array-utils": "^4.0.0-beta.
|
|
47
|
-
"@hi-ui/button": "^4.0.0-beta.
|
|
46
|
+
"@hi-ui/array-utils": "^4.0.0-beta.6",
|
|
47
|
+
"@hi-ui/button": "^4.0.0-beta.8",
|
|
48
48
|
"@hi-ui/classname": "^4.0.0-beta.0",
|
|
49
49
|
"@hi-ui/core-css": "^4.0.0-beta.3",
|
|
50
|
-
"@hi-ui/dom-utils": "^4.0.0-beta.
|
|
50
|
+
"@hi-ui/dom-utils": "^4.0.0-beta.3",
|
|
51
51
|
"@hi-ui/env": "^4.0.0-beta.0",
|
|
52
|
-
"@hi-ui/func-utils": "^4.0.0-beta.
|
|
53
|
-
"@hi-ui/locale-context": "^4.0.0-beta.
|
|
54
|
-
"@hi-ui/object-utils": "^4.0.0-beta.
|
|
55
|
-
"@hi-ui/type-assertion": "^4.0.0-beta.
|
|
56
|
-
"@hi-ui/use-latest": "^4.0.0-beta.
|
|
52
|
+
"@hi-ui/func-utils": "^4.0.0-beta.7",
|
|
53
|
+
"@hi-ui/locale-context": "^4.0.0-beta.11",
|
|
54
|
+
"@hi-ui/object-utils": "^4.0.0-beta.6",
|
|
55
|
+
"@hi-ui/type-assertion": "^4.0.0-beta.3",
|
|
56
|
+
"@hi-ui/use-latest": "^4.0.0-beta.3",
|
|
57
57
|
"async-validator": "^4.0.7"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
"react-dom": ">=16.8.6"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@hi-ui/hi-build": "^4.0.0-beta.
|
|
64
|
+
"@hi-ui/hi-build": "^4.0.0-beta.3",
|
|
65
65
|
"react": "^17.0.1",
|
|
66
66
|
"react-dom": "^17.0.1"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "74866713c01181f692085f4935fc36d9e719506b"
|
|
69
69
|
}
|