@hi-ui/form 4.0.0-alpha.1
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/LICENSE +21 -0
- package/README.md +11 -0
- package/lib/cjs/Form.js +106 -0
- package/lib/cjs/Form.js.map +1 -0
- package/lib/cjs/FormField.js +44 -0
- package/lib/cjs/FormField.js.map +1 -0
- package/lib/cjs/FormItem.js +61 -0
- package/lib/cjs/FormItem.js.map +1 -0
- package/lib/cjs/FormLabel.js +135 -0
- package/lib/cjs/FormLabel.js.map +1 -0
- package/lib/cjs/FormList.js +166 -0
- package/lib/cjs/FormList.js.map +1 -0
- package/lib/cjs/FormMessage.js +72 -0
- package/lib/cjs/FormMessage.js.map +1 -0
- package/lib/cjs/context.js +33 -0
- package/lib/cjs/context.js.map +1 -0
- package/lib/cjs/index.js +29 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/styles/index.scss.js +22 -0
- package/lib/cjs/styles/index.scss.js.map +1 -0
- package/lib/cjs/use-form-field.js +114 -0
- package/lib/cjs/use-form-field.js.map +1 -0
- package/lib/cjs/use-form.js +544 -0
- package/lib/cjs/use-form.js.map +1 -0
- package/lib/esm/Form.js +83 -0
- package/lib/esm/Form.js.map +1 -0
- package/lib/esm/FormField.js +35 -0
- package/lib/esm/FormField.js.map +1 -0
- package/lib/esm/FormItem.js +39 -0
- package/lib/esm/FormItem.js.map +1 -0
- package/lib/esm/FormLabel.js +113 -0
- package/lib/esm/FormLabel.js.map +1 -0
- package/lib/esm/FormList.js +145 -0
- package/lib/esm/FormList.js.map +1 -0
- package/lib/esm/FormMessage.js +51 -0
- package/lib/esm/FormMessage.js.map +1 -0
- package/lib/esm/context.js +25 -0
- package/lib/esm/context.js.map +1 -0
- package/lib/esm/index.js +14 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/styles/index.scss.js +17 -0
- package/lib/esm/styles/index.scss.js.map +1 -0
- package/lib/esm/use-form-field.js +94 -0
- package/lib/esm/use-form-field.js.map +1 -0
- package/lib/esm/use-form.js +519 -0
- package/lib/esm/use-form.js.map +1 -0
- package/lib/types/Form.d.ts +35 -0
- package/lib/types/FormField.d.ts +12 -0
- package/lib/types/FormItem.d.ts +13 -0
- package/lib/types/FormLabel.d.ts +28 -0
- package/lib/types/FormList.d.ts +15 -0
- package/lib/types/FormMessage.d.ts +27 -0
- package/lib/types/FormReset.d.ts +8 -0
- package/lib/types/FormSubmit.d.ts +8 -0
- package/lib/types/context.d.ts +55 -0
- package/lib/types/index.d.ts +6 -0
- package/lib/types/types.d.ts +113 -0
- package/lib/types/use-form-field.d.ts +37 -0
- package/lib/types/use-form.d.ts +78 -0
- package/lib/types/utils/index.d.ts +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** @LICENSE
|
|
2
|
+
* @hi-ui/form
|
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/form#readme
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
|
13
|
+
value: true
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
var React = require('react');
|
|
17
|
+
|
|
18
|
+
var formContext = /*#__PURE__*/React.createContext(null);
|
|
19
|
+
var FormProvider = formContext.Provider;
|
|
20
|
+
|
|
21
|
+
var useFormContext = function useFormContext() {
|
|
22
|
+
var context = React.useContext(formContext);
|
|
23
|
+
|
|
24
|
+
if (!context) {
|
|
25
|
+
throw new Error('The FormContext should using in Form.');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return context;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
exports.FormProvider = FormProvider;
|
|
32
|
+
exports.useFormContext = useFormContext;
|
|
33
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../../src/context.ts"],"sourcesContent":[null],"names":["formContext","createContext","FormProvider","Provider","useFormContext","context","useContext","Error"],"mappings":";;;;;;;;;;;;;;;;;AAIA,IAAMA,WAAW,gBAAGC,mBAAAA,CAAuD,IAAvDA,CAApB;IAEaC,YAAY,GAAGF,WAAW,CAACG;;IAE3BC,cAAc,GAAG,SAAjBA,cAAiB;MACtBC,OAAO,GAAGC,gBAAAA,CAAWN,WAAXM;;MAEZ,CAACD,SAAS;UACN,IAAIE,KAAJ,CAAU,uCAAV;;;SAGDF;;;;"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** @LICENSE
|
|
2
|
+
* @hi-ui/form
|
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/form#readme
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
|
13
|
+
value: true
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
require('./styles/index.scss.js');
|
|
17
|
+
|
|
18
|
+
var Form = require('./Form.js');
|
|
19
|
+
|
|
20
|
+
var FormItem = require('./FormItem.js');
|
|
21
|
+
|
|
22
|
+
var FormList = require('./FormList.js');
|
|
23
|
+
|
|
24
|
+
exports.FORM_REGISTER_TABLE = Form.FORM_REGISTER_TABLE;
|
|
25
|
+
exports.Form = Form.Form;
|
|
26
|
+
exports["default"] = Form.Form;
|
|
27
|
+
exports.FormItem = FormItem.FormItem;
|
|
28
|
+
exports.FormList = FormList.FormList;
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** @LICENSE
|
|
2
|
+
* @hi-ui/form
|
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/form#readme
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
|
13
|
+
value: true
|
|
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--inline {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n.hi-v4-form--inline .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 margin-top: 5px;\n min-height: 22px;\n padding-right: 8px;\n padding-right: var(--hi-v4-spacing-4, 8px);\n line-height: 22px; }\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::after {\n margin-right: 4px;\n margin-right: var(--hi-v4-spacing-2, 4px);\n content: '*';\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa); }\n.hi-v4-form-label .hi-v4-form-label--placement-top {\n padding-right: 0;\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.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 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-transition: all 0.3s;\n transition: all 0.3s;\n -webkit-transform: translateY(-10%);\n transform: translateY(-10%);\n color: #ff5959;\n color: var(--hi-v4-color-red-500, #ff5959); }\n";
|
|
16
|
+
|
|
17
|
+
var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
|
|
18
|
+
|
|
19
|
+
__styleInject__(css_248z);
|
|
20
|
+
|
|
21
|
+
exports["default"] = css_248z;
|
|
22
|
+
//# sourceMappingURL=index.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/** @LICENSE
|
|
2
|
+
* @hi-ui/form
|
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/form#readme
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
+
|
|
14
|
+
Object.defineProperty(exports, '__esModule', {
|
|
15
|
+
value: true
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
var React = require('react');
|
|
19
|
+
|
|
20
|
+
var context = require('./context.js');
|
|
21
|
+
|
|
22
|
+
var typeAssertion = require('@hi-ui/type-assertion');
|
|
23
|
+
|
|
24
|
+
var Validater = require('async-validator');
|
|
25
|
+
|
|
26
|
+
var funcUtils = require('@hi-ui/func-utils');
|
|
27
|
+
|
|
28
|
+
function _interopDefaultLegacy(e) {
|
|
29
|
+
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
30
|
+
'default': e
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var Validater__default = /*#__PURE__*/_interopDefaultLegacy(Validater);
|
|
35
|
+
|
|
36
|
+
var useFormField = function useFormField(props) {
|
|
37
|
+
var field = props.field,
|
|
38
|
+
rulesProp = props.rules,
|
|
39
|
+
valueType = props.valueType;
|
|
40
|
+
|
|
41
|
+
var _useFormContext = context.useFormContext(),
|
|
42
|
+
getFieldRules = _useFormContext.getFieldRules,
|
|
43
|
+
getFieldProps = _useFormContext.getFieldProps,
|
|
44
|
+
registerField = _useFormContext.registerField,
|
|
45
|
+
unregisterField = _useFormContext.unregisterField;
|
|
46
|
+
/**
|
|
47
|
+
* 处理校验规则,item 优先级大于 form
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
var fieldRules = React.useMemo(function () {
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
var rules = funcUtils.toArray(rulesProp !== null && rulesProp !== void 0 ? rulesProp : getFieldRules(field)); // switch(valueType) {
|
|
54
|
+
// case: 'string':
|
|
55
|
+
// const scheme = yup.string()
|
|
56
|
+
// rules.reduce((scheme, { name, strategy, validator, message, transform }) => {
|
|
57
|
+
// if (typeof name === 'string' && name in scheme) {
|
|
58
|
+
// if (isFunction(transform)) {
|
|
59
|
+
// scheme = scheme.transform(transform)
|
|
60
|
+
// }
|
|
61
|
+
// // @ts-ignore
|
|
62
|
+
// return scheme[name](message)
|
|
63
|
+
// }
|
|
64
|
+
// }, scheme)
|
|
65
|
+
// case: 'number':
|
|
66
|
+
// case: 'boolean':
|
|
67
|
+
// case: 'array':
|
|
68
|
+
// case: 'object':
|
|
69
|
+
// case: 'date':
|
|
70
|
+
// }
|
|
71
|
+
|
|
72
|
+
return rules.map(function (rule) {
|
|
73
|
+
return Object.assign({
|
|
74
|
+
type: valueType
|
|
75
|
+
}, rule);
|
|
76
|
+
});
|
|
77
|
+
}, [rulesProp, field, getFieldRules, valueType]); // 当前 field 的唯一校验器
|
|
78
|
+
|
|
79
|
+
var fieldValidate = React.useCallback(function (value) {
|
|
80
|
+
var _Validater, _validater$validate;
|
|
81
|
+
|
|
82
|
+
if (!typeAssertion.isArrayNonEmpty(fieldRules)) {
|
|
83
|
+
return Promise.resolve(null);
|
|
84
|
+
} // TODO: rules 处理成 Async Validate 的指定结构
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
console.log('fieldRules', fieldRules, 'value:', value);
|
|
88
|
+
var validater = new Validater__default['default']((_Validater = {}, _Validater[field] = fieldRules, _Validater)); // @ts-ignore
|
|
89
|
+
|
|
90
|
+
return validater.validate((_validater$validate = {}, _validater$validate[field] = value, _validater$validate), {
|
|
91
|
+
firstFields: true
|
|
92
|
+
}, console.log);
|
|
93
|
+
}, [fieldRules, field]); // 注入当前 field 及其验证规则到 Form
|
|
94
|
+
|
|
95
|
+
React.useEffect(function () {
|
|
96
|
+
if (field) {
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
registerField(field, {
|
|
99
|
+
validate: fieldValidate
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return function () {
|
|
104
|
+
if (field) {
|
|
105
|
+
// @ts-ignore
|
|
106
|
+
unregisterField(field);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}, [registerField, unregisterField, field, fieldValidate]);
|
|
110
|
+
return getFieldProps(props);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
exports.useFormField = useFormField;
|
|
114
|
+
//# sourceMappingURL=use-form-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-form-field.js","sources":["../../src/use-form-field.ts"],"sourcesContent":[null],"names":["useFormField","props","field","rulesProp","rules","valueType","useFormContext","getFieldRules","getFieldProps","registerField","unregisterField","fieldRules","useMemo","toArray","map","rule","type","fieldValidate","useCallback","value","isArrayNonEmpty","Promise","resolve","console","log","validater","Validater","validate","firstFields","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQaA,YAAY,GAAG,SAAfA,YAAe,CAAeC,KAAf;MAClBC,KAAR,GAA+CD,KAA/C,CAAQC;MAAcC,SAAtB,GAA+CF,KAA/C,CAAeG;MAAkBC,SAAjC,GAA+CJ,KAA/C,CAAiCI;;wBAW7BC,sBAAAA;MAJFC,aALF,mBAKEA;MACAC,aANF,mBAMEA;MACAC,aAPF,mBAOEA;MACAC,eARF,mBAQEA;;;;;;MAMIC,UAAU,GAAGC,aAAAA,CAAQ;;QAEnBR,KAAK,GAAGS,iBAAAA,CAAQV,SAAS,SAATA,IAAAA,SAAS,WAATA,GAAAA,SAAAA,GAAaI,aAAa,CAACL,KAAD,CAAlCW;;;;;;;;;;;;;;;;;;;WAqBPT,KAAK,CAACU,GAANV,CAAU,UAACW,IAAD;;AAAaC,QAAAA,IAAI,EAAEX;SAAcU;AAA3C,KAAAX;AAvBiB,GAAPQ,EAwBhB,CAACT,SAAD,EAAYD,KAAZ,EAAmBK,aAAnB,EAAkCF,SAAlC,CAxBgBO;;MA2BbK,aAAa,GAAGC,iBAAAA,CACpB,UAACC,KAAD;;;QACM,CAACC,6BAAAA,CAAgBT,UAAhBS,GAA6B;aACzBC,OAAO,CAACC,OAARD,CAAgB,IAAhBA;;;;AAITE,IAAAA,OAAO,CAACC,GAARD,CAAY,YAAZA,EAA0BZ,UAA1BY,EAAsC,QAAtCA,EAAgDJ,KAAhDI;QAEME,SAAS,GAAG,IAAIC,6BAAJ,8BAEfxB,SAAQS,sBAFO;;WAKXc,SAAS,CAACE,QAAVF,gDAAsBvB,SAAQiB,0BAA9BM,GAAuC;AAAEG,MAAAA,WAAW,EAAE;AAAf,KAAvCH,EAA8DF,OAAO,CAACC,GAAtEC;AAdsB,GAAXP,EAgBpB,CAACP,UAAD,EAAaT,KAAb,CAhBoBgB;;AAoBtBW,EAAAA,eAAAA,CAAU;QACJ3B,OAAO;;AAETO,MAAAA,aAAa,CAACP,KAAD,EAAQ;AACnByB,QAAAA,QAAQ,EAAEV;AADS,OAAR,CAAbR;;;WAKK;UACDP,OAAO;;AAETQ,QAAAA,eAAe,CAACR,KAAD,CAAfQ;;AAHJ;AARO,GAATmB,EAcG,CAACpB,aAAD,EAAgBC,eAAhB,EAAiCR,KAAjC,EAAwCe,aAAxC,CAdHY;SAgBOrB,aAAa,CAACP,KAAD;;;"}
|