@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.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/lib/cjs/Form.js +106 -0
  4. package/lib/cjs/Form.js.map +1 -0
  5. package/lib/cjs/FormField.js +44 -0
  6. package/lib/cjs/FormField.js.map +1 -0
  7. package/lib/cjs/FormItem.js +61 -0
  8. package/lib/cjs/FormItem.js.map +1 -0
  9. package/lib/cjs/FormLabel.js +135 -0
  10. package/lib/cjs/FormLabel.js.map +1 -0
  11. package/lib/cjs/FormList.js +166 -0
  12. package/lib/cjs/FormList.js.map +1 -0
  13. package/lib/cjs/FormMessage.js +72 -0
  14. package/lib/cjs/FormMessage.js.map +1 -0
  15. package/lib/cjs/context.js +33 -0
  16. package/lib/cjs/context.js.map +1 -0
  17. package/lib/cjs/index.js +29 -0
  18. package/lib/cjs/index.js.map +1 -0
  19. package/lib/cjs/styles/index.scss.js +22 -0
  20. package/lib/cjs/styles/index.scss.js.map +1 -0
  21. package/lib/cjs/use-form-field.js +114 -0
  22. package/lib/cjs/use-form-field.js.map +1 -0
  23. package/lib/cjs/use-form.js +544 -0
  24. package/lib/cjs/use-form.js.map +1 -0
  25. package/lib/esm/Form.js +83 -0
  26. package/lib/esm/Form.js.map +1 -0
  27. package/lib/esm/FormField.js +35 -0
  28. package/lib/esm/FormField.js.map +1 -0
  29. package/lib/esm/FormItem.js +39 -0
  30. package/lib/esm/FormItem.js.map +1 -0
  31. package/lib/esm/FormLabel.js +113 -0
  32. package/lib/esm/FormLabel.js.map +1 -0
  33. package/lib/esm/FormList.js +145 -0
  34. package/lib/esm/FormList.js.map +1 -0
  35. package/lib/esm/FormMessage.js +51 -0
  36. package/lib/esm/FormMessage.js.map +1 -0
  37. package/lib/esm/context.js +25 -0
  38. package/lib/esm/context.js.map +1 -0
  39. package/lib/esm/index.js +14 -0
  40. package/lib/esm/index.js.map +1 -0
  41. package/lib/esm/styles/index.scss.js +17 -0
  42. package/lib/esm/styles/index.scss.js.map +1 -0
  43. package/lib/esm/use-form-field.js +94 -0
  44. package/lib/esm/use-form-field.js.map +1 -0
  45. package/lib/esm/use-form.js +519 -0
  46. package/lib/esm/use-form.js.map +1 -0
  47. package/lib/types/Form.d.ts +35 -0
  48. package/lib/types/FormField.d.ts +12 -0
  49. package/lib/types/FormItem.d.ts +13 -0
  50. package/lib/types/FormLabel.d.ts +28 -0
  51. package/lib/types/FormList.d.ts +15 -0
  52. package/lib/types/FormMessage.d.ts +27 -0
  53. package/lib/types/FormReset.d.ts +8 -0
  54. package/lib/types/FormSubmit.d.ts +8 -0
  55. package/lib/types/context.d.ts +55 -0
  56. package/lib/types/index.d.ts +6 -0
  57. package/lib/types/types.d.ts +113 -0
  58. package/lib/types/use-form-field.d.ts +37 -0
  59. package/lib/types/use-form.d.ts +78 -0
  60. package/lib/types/utils/index.d.ts +1 -0
  61. package/package.json +68 -0
@@ -0,0 +1,544 @@
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 _regeneratorRuntime = require('@babel/runtime/regenerator');
19
+
20
+ var tslib = require('tslib');
21
+
22
+ var React = require('react');
23
+
24
+ var useLatest = require('@hi-ui/use-latest');
25
+
26
+ var typeAssertion = require('@hi-ui/type-assertion');
27
+
28
+ var funcUtils = require('@hi-ui/func-utils');
29
+
30
+ var domUtils = require('@hi-ui/dom-utils');
31
+
32
+ function _interopDefaultLegacy(e) {
33
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
34
+ 'default': e
35
+ };
36
+ }
37
+
38
+ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
39
+
40
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
41
+
42
+ var EMPTY_RULES = {};
43
+ var EMPTY_ERRORS = {};
44
+ var EMPTY_TOUCHED = {};
45
+ var DEFAULT_VALIDATE_TRIGGER = ['onChange', 'onBlur'];
46
+
47
+ var useForm = function useForm(_a) {
48
+ var initialValues = _a.initialValues,
49
+ _a$initialErrors = _a.initialErrors,
50
+ initialErrors = _a$initialErrors === void 0 ? EMPTY_ERRORS : _a$initialErrors,
51
+ _a$initialTouched = _a.initialTouched,
52
+ initialTouched = _a$initialTouched === void 0 ? EMPTY_TOUCHED : _a$initialTouched,
53
+ onValuesChange = _a.onValuesChange,
54
+ onReset = _a.onReset,
55
+ onSubmit = _a.onSubmit,
56
+ _a$rules = _a.rules,
57
+ rules = _a$rules === void 0 ? EMPTY_RULES : _a$rules,
58
+ _a$validateAfterTouch = _a.validateAfterTouched,
59
+ validateAfterTouched = _a$validateAfterTouch === void 0 ? true : _a$validateAfterTouch,
60
+ _a$validateTrigger = _a.validateTrigger,
61
+ validateTriggerProp = _a$validateTrigger === void 0 ? DEFAULT_VALIDATE_TRIGGER : _a$validateTrigger,
62
+ rest = tslib.__rest(_a, ["initialValues", "initialErrors", "initialTouched", "lazyValidate", "onValuesChange", "onReset", "onSubmit", "rules", "validateAfterTouched", "validateTrigger"]);
63
+ /**
64
+ * 处理校验触发器,保证 memo 依赖的是数组每个项,避免无效重渲染
65
+ */
66
+
67
+
68
+ var validateTrigger = typeAssertion.isArray(validateTriggerProp) ? validateTriggerProp : [validateTriggerProp]; // eslint-disable-next-line react-hooks/exhaustive-deps
69
+
70
+ var validateTriggersMemo = React.useMemo(function () {
71
+ return validateTrigger;
72
+ }, validateTrigger);
73
+ /**
74
+ * 收集 Field 的校验器注册表
75
+ */
76
+
77
+ var _useCollection = useCollection(),
78
+ getValidation = _useCollection[0],
79
+ registerField = _useCollection[1],
80
+ unregisterField = _useCollection[2];
81
+ /**
82
+ * form 数据管理中心
83
+ */
84
+
85
+
86
+ var _useReducer = React.useReducer(formReducer, {
87
+ values: initialValues,
88
+ errors: initialErrors,
89
+ touched: initialTouched,
90
+ validating: false,
91
+ submitting: false
92
+ }),
93
+ formState = _useReducer[0],
94
+ formDispatch = _useReducer[1]; // 使用 latest ref 维护,保证每次主动拿取的 formState 都是最新的
95
+
96
+
97
+ var formStateRef = useLatest.useLatestRef(formState); // @ts-ignore
98
+
99
+ var getFieldNames = React.useCallback(function () {
100
+ return Object.keys(formStateRef.current.values);
101
+ }, [formStateRef]); // @ts-ignore
102
+
103
+ var getFieldValue = React.useCallback(function (fieldName) {
104
+ return formStateRef.current.values[fieldName];
105
+ }, [formStateRef]);
106
+ var getFieldError = React.useCallback(function (fieldName) {
107
+ return formStateRef.current.errors[fieldName];
108
+ }, [formStateRef]);
109
+ var setFieldError = React.useCallback(function (field, errorMessage) {
110
+ formDispatch({
111
+ type: 'SET_FIELD_ERROR',
112
+ // @ts-ignore
113
+ payload: {
114
+ field: field,
115
+ value: errorMessage
116
+ }
117
+ });
118
+ }, []);
119
+ var setFieldTouched = React.useCallback(function (field, touched) {
120
+ if (touched === void 0) {
121
+ touched = false;
122
+ }
123
+
124
+ formDispatch({
125
+ type: 'SET_FIELD_TOUCHED',
126
+ // @ts-ignore
127
+ payload: {
128
+ field: field,
129
+ value: touched
130
+ }
131
+ });
132
+ }, []);
133
+ /**
134
+ * 使用单个 Field 规则对给定值进行校验
135
+ */
136
+
137
+ var validateField = React.useCallback(function (field, value) {
138
+ return tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
139
+ var fieldValidation, errorResultAsPromise;
140
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
141
+ while (1) {
142
+ switch (_context.prev = _context.next) {
143
+ case 0:
144
+ fieldValidation = getValidation(field);
145
+
146
+ if (fieldValidation) {
147
+ _context.next = 3;
148
+ break;
149
+ }
150
+
151
+ return _context.abrupt("return");
152
+
153
+ case 3:
154
+ formDispatch({
155
+ type: 'SET_VALIDATING',
156
+ payload: true
157
+ });
158
+ errorResultAsPromise = fieldValidation.validate(value);
159
+ console.log('validate', errorResultAsPromise);
160
+ errorResultAsPromise.then(function (result) {
161
+ console.log('result', result);
162
+ formDispatch({
163
+ type: 'SET_VALIDATING',
164
+ payload: false
165
+ });
166
+ setFieldError(field, '');
167
+ })["catch"](function (errorMsg) {
168
+ // @ts-ignore
169
+ setFieldError(field, errorMsg.fields[field][0].message);
170
+ })["finally"](function () {
171
+ formDispatch({
172
+ type: 'SET_VALIDATING',
173
+ payload: false
174
+ });
175
+ });
176
+
177
+ case 7:
178
+ case "end":
179
+ return _context.stop();
180
+ }
181
+ }
182
+ }, _callee);
183
+ }));
184
+ }, [getValidation, setFieldError]);
185
+ /**
186
+ * 校验单个 Field 及其当前值
187
+ */
188
+
189
+ var validateFieldState = React.useCallback(function (field) {
190
+ var value = getFieldValue(field);
191
+ return validateField(field, value);
192
+ }, [validateField, getFieldValue]);
193
+ /**
194
+ * 检验所有字段
195
+ */
196
+
197
+ var validateAll = React.useCallback(function () {
198
+ var fieldNames = getFieldNames();
199
+ return Promise.all(fieldNames.map(function (fieldName) {
200
+ return validateFieldState(fieldName);
201
+ }));
202
+ }, [getFieldNames, validateFieldState]);
203
+ /**
204
+ * 控件值更新策略
205
+ */
206
+
207
+ var setFieldValue = React.useCallback(function (field, value, shouldValidate) {
208
+ // @ts-ignore
209
+ formDispatch({
210
+ type: 'SET_FIELD_VALUE',
211
+ payload: {
212
+ field: field,
213
+ value: value
214
+ }
215
+ });
216
+ var shouldValidateField = shouldValidate !== null && shouldValidate !== void 0 ? shouldValidate : validateAfterTouched ? formState.touched[field] : true;
217
+
218
+ if (shouldValidateField) {
219
+ validateField(field, value);
220
+ }
221
+ }, [validateField, validateAfterTouched, formState]);
222
+ var normalizeValueFromChange = React.useCallback(function (eventOrValue) {
223
+ // TODO: handle correct value
224
+ return eventOrValue.target.value;
225
+ }, []);
226
+ var handleFieldChange = React.useCallback(function (fieldName, valueCollectPipe, shouldValidate) {
227
+ return function (evt) {
228
+ var _Object$assign; // TODO: 传递 onChange 其它参数
229
+
230
+
231
+ var nextValue = typeAssertion.isFunction(valueCollectPipe) ? valueCollectPipe(evt) : normalizeValueFromChange(evt);
232
+ setFieldValue(fieldName, nextValue, shouldValidate); // @ts-ignore
233
+
234
+ onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(Object.assign(Object.assign({}, formState.values), (_Object$assign = {}, _Object$assign[fieldName] = nextValue, _Object$assign)), formState.values);
235
+ };
236
+ }, [setFieldValue, onValuesChange, formState.values, normalizeValueFromChange]);
237
+ /**
238
+ * 控件失焦策略
239
+ */
240
+
241
+ var handleFieldBlur = React.useCallback(function (fieldName, shouldValidate) {
242
+ return function (evt) {
243
+ if (shouldValidate) {
244
+ validateFieldState(fieldName);
245
+ }
246
+
247
+ setFieldTouched(fieldName, true);
248
+ };
249
+ }, [setFieldTouched, validateFieldState]);
250
+ var handleFieldTrigger = React.useCallback(function (fieldName) {
251
+ return function (evt) {
252
+ validateFieldState(fieldName);
253
+ };
254
+ }, [validateFieldState]);
255
+ /**
256
+ * 表单重置,永远使用第一次的初始值
257
+ */
258
+
259
+ var initialValuesRef = React.useRef(initialValues);
260
+ var initialErrorsRef = React.useRef(initialErrors);
261
+ var initialTouchedRef = React.useRef(initialTouched);
262
+ var onResetLatestRef = useLatest.useLatestRef(onReset);
263
+ var resetForm = React.useCallback(function (nextState) {
264
+ return tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
265
+ var values, errors, touched, submitting, validating, dispatchFn;
266
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
267
+ while (1) {
268
+ switch (_context2.prev = _context2.next) {
269
+ case 0:
270
+ values = nextState && nextState.values ? nextState.values : initialValuesRef.current;
271
+ errors = nextState && nextState.errors ? nextState.errors : initialErrorsRef.current;
272
+ touched = nextState && nextState.touched ? nextState.touched : initialTouchedRef.current;
273
+ initialValuesRef.current = values; // @ts-ignore
274
+
275
+ initialErrorsRef.current = errors;
276
+ initialTouchedRef.current = touched;
277
+ submitting = !!(nextState && nextState.submitting);
278
+ validating = !!(nextState && nextState.validating);
279
+
280
+ dispatchFn = function dispatchFn() {
281
+ formDispatch({
282
+ type: 'SET_FORM',
283
+ payload: {
284
+ submitting: submitting,
285
+ validating: validating,
286
+ errors: errors,
287
+ touched: touched,
288
+ values: values
289
+ }
290
+ });
291
+ };
292
+
293
+ if (!onResetLatestRef.current) {
294
+ _context2.next = 15;
295
+ break;
296
+ }
297
+
298
+ _context2.next = 12;
299
+ return onResetLatestRef.current(formState.values);
300
+
301
+ case 12:
302
+ dispatchFn();
303
+ _context2.next = 16;
304
+ break;
305
+
306
+ case 15:
307
+ dispatchFn();
308
+
309
+ case 16:
310
+ case "end":
311
+ return _context2.stop();
312
+ }
313
+ }
314
+ }, _callee2);
315
+ }));
316
+ }, [onResetLatestRef, formState.values]);
317
+ /**
318
+ * 表单提交
319
+ */
320
+
321
+ var submitForm = React.useCallback(function () {
322
+ return tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3() {
323
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
324
+ while (1) {
325
+ switch (_context3.prev = _context3.next) {
326
+ case 0:
327
+ formDispatch({
328
+ type: 'SUBMIT_ATTEMPT'
329
+ });
330
+ return _context3.abrupt("return", validateAll().then(function (combinedErrors) {
331
+ var isInstanceOfError = combinedErrors instanceof Error;
332
+ var isActuallyValid = !isInstanceOfError && Object.keys(combinedErrors).length === 0;
333
+
334
+ if (isActuallyValid) {
335
+ var promiseOrUndefined;
336
+
337
+ try {
338
+ // @ts-ignore
339
+ promiseOrUndefined = onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(formState.values);
340
+ } catch (error) {// throw error
341
+ }
342
+
343
+ if (promiseOrUndefined === undefined) return;
344
+ return Promise.resolve(promiseOrUndefined).then(function (result) {
345
+ formDispatch({
346
+ type: 'SUBMIT_DONE'
347
+ });
348
+ return result;
349
+ })["catch"](function (_errors) {
350
+ formDispatch({
351
+ type: 'SUBMIT_DONE'
352
+ });
353
+ throw _errors;
354
+ });
355
+ } else {
356
+ formDispatch({
357
+ type: 'SUBMIT_DONE'
358
+ });
359
+
360
+ if (isInstanceOfError) {
361
+ throw combinedErrors;
362
+ }
363
+ }
364
+ }));
365
+
366
+ case 2:
367
+ case "end":
368
+ return _context3.stop();
369
+ }
370
+ }
371
+ }, _callee3);
372
+ }));
373
+ }, [formState, onSubmit, validateAll]);
374
+ var handleSubmit = React.useCallback(function (evt) {
375
+ domUtils.stopEvent(evt);
376
+ submitForm()["catch"](console.error);
377
+ }, [submitForm]);
378
+ var handleReset = React.useCallback(function (evt) {
379
+ domUtils.stopEvent(evt);
380
+ resetForm();
381
+ }, [resetForm]);
382
+ React.useCallback(function () {}, []);
383
+ React.useCallback(function () {
384
+ formDispatch({
385
+ // TODO: reset errorMsg
386
+ type: 'SET_ERRORS',
387
+ payload: {}
388
+ });
389
+ }, []);
390
+ var setFormState = React__default['default'].useCallback(function (stateOrFunc) {
391
+ // @ts-ignore
392
+ formDispatch({
393
+ type: 'SET_STATE',
394
+ payload: stateOrFunc
395
+ });
396
+ }, []);
397
+ var getRootProps = useLatest.useLatestCallback(function () {
398
+ return Object.assign(Object.assign({}, rest), {
399
+ onSubmit: handleSubmit,
400
+ onReset: handleReset
401
+ });
402
+ });
403
+ var getFieldProps = React.useCallback(function (props, ref) {
404
+ var _returnProps;
405
+
406
+ if (props === void 0) {
407
+ props = {};
408
+ }
409
+
410
+ if (ref === void 0) {
411
+ ref = null;
412
+ }
413
+
414
+ var _props = props,
415
+ field = _props.field,
416
+ _props$valuePropName = _props.valuePropName,
417
+ valuePropName = _props$valuePropName === void 0 ? 'value' : _props$valuePropName,
418
+ _props$valueCollectPr = _props.valueCollectPropName,
419
+ valueCollectPropName = _props$valueCollectPr === void 0 ? 'onChange' : _props$valueCollectPr,
420
+ valueCollectPipe = _props.valueCollectPipe,
421
+ _props$validateTrigge = _props.validateTrigger,
422
+ validateTriggerProp = _props$validateTrigge === void 0 ? validateTriggersMemo : _props$validateTrigge,
423
+ onBlur = _props.onBlur;
424
+ var validateTrigger = typeAssertion.isArray(validateTriggerProp) ? validateTriggerProp : [validateTriggerProp];
425
+ var validateOnCollect = validateTrigger.includes(valueCollectPropName);
426
+ var validateOnBlur = validateTrigger.includes('onChange');
427
+ var returnProps = (_returnProps = {
428
+ ref: ref
429
+ }, _returnProps[valuePropName] = funcUtils.getNested(formState.values, field), _returnProps[valueCollectPropName] = funcUtils.callAllFuncs(props[valueCollectPropName], handleFieldChange(field, valueCollectPipe, validateOnCollect)), _returnProps.onBlur = funcUtils.callAllFuncs(onBlur, handleFieldBlur(field, validateOnBlur)), _returnProps.invalid = getFieldError(field), _returnProps);
430
+ validateTrigger.filter(function (triggerName) {
431
+ return [valueCollectPropName, 'onBlur'].indexOf(triggerName) === -1;
432
+ }) // @ts-ignore
433
+ .forEach(function (triggerName) {
434
+ // @ts-ignore
435
+ returnProps[triggerName] = funcUtils.callAllFuncs(props[triggerName], handleFieldTrigger(field));
436
+ });
437
+ return returnProps;
438
+ }, [formState, handleFieldChange, handleFieldBlur, validateTriggersMemo, handleFieldTrigger, getFieldError]);
439
+ var getFieldRules = React.useCallback(function (fieldName) {
440
+ return rules[fieldName];
441
+ }, [rules]);
442
+ return Object.assign(Object.assign({}, formState), {
443
+ setFormState: setFormState,
444
+ setFieldValue: setFieldValue,
445
+ setFieldError: setFieldError,
446
+ setFieldTouched: setFieldTouched,
447
+ getFieldError: getFieldError,
448
+ getFieldRules: getFieldRules,
449
+ getRootProps: getRootProps,
450
+ getFieldProps: getFieldProps,
451
+ registerField: registerField,
452
+ unregisterField: unregisterField,
453
+ submitForm: submitForm,
454
+ resetForm: resetForm
455
+ });
456
+ }; // TODO: field 支持数组
457
+
458
+
459
+ function formReducer(state, action) {
460
+ switch (action.type) {
461
+ case 'SET_STATE':
462
+ var nextState = typeAssertion.isFunction(action.payload) ? action.payload(state) : action.payload;
463
+ return Object.assign(Object.assign({}, state), nextState);
464
+
465
+ case 'SET_VALUES':
466
+ return Object.assign(Object.assign({}, state), {
467
+ values: action.payload
468
+ });
469
+
470
+ case 'SET_ERRORS':
471
+ return Object.assign(Object.assign({}, state), {
472
+ errors: action.payload
473
+ });
474
+
475
+ case 'SET_TOUCHED':
476
+ return Object.assign(Object.assign({}, state), {
477
+ touched: action.payload
478
+ });
479
+
480
+ case 'SET_SUBMITTING':
481
+ return Object.assign(Object.assign({}, state), {
482
+ submitting: action.payload
483
+ });
484
+
485
+ case 'SET_VALIDATING':
486
+ return Object.assign(Object.assign({}, state), {
487
+ validating: action.payload
488
+ });
489
+
490
+ case 'SET_FIELD_VALUE':
491
+ return Object.assign(Object.assign({}, state), {
492
+ values: funcUtils.setNested(state.values, action.payload.field, action.payload.value)
493
+ });
494
+
495
+ case 'SET_FIELD_TOUCHED':
496
+ return Object.assign(Object.assign({}, state), {
497
+ touched: funcUtils.setNested(state.touched, action.payload.field, action.payload.value)
498
+ });
499
+
500
+ case 'SET_FIELD_ERROR':
501
+ return Object.assign(Object.assign({}, state), {
502
+ errors: funcUtils.setNested(state.errors, action.payload.field, action.payload.value)
503
+ });
504
+
505
+ case 'SET_FORM':
506
+ return Object.assign(Object.assign({}, state), action.payload);
507
+
508
+ case 'SUBMIT_DONE':
509
+ return Object.assign(Object.assign({}, state), {
510
+ submitting: false
511
+ });
512
+
513
+ default:
514
+ return state;
515
+ }
516
+ }
517
+ /**
518
+ * 一个注册表的收集器
519
+ */
520
+
521
+
522
+ var useCollection = function useCollection() {
523
+ var collectionMp = React.useMemo(function () {
524
+ return new Map();
525
+ }, []);
526
+ var collectionRef = React.useRef(collectionMp);
527
+ var register = React.useCallback(function (key, value) {
528
+ collectionRef.current.set(key, value);
529
+ }, []);
530
+ var unregister = React.useCallback(function (key) {
531
+ collectionRef.current["delete"](key);
532
+ }, []);
533
+ var getCollection = React.useCallback(function (key) {
534
+ if (collectionRef.current.has(key)) {
535
+ return collectionRef.current.get(key);
536
+ }
537
+
538
+ return null;
539
+ }, []);
540
+ return [getCollection, register, unregister];
541
+ };
542
+
543
+ exports.useForm = useForm;
544
+ //# sourceMappingURL=use-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-form.js","sources":["../../src/use-form.ts"],"sourcesContent":[null],"names":["EMPTY_RULES","EMPTY_ERRORS","EMPTY_TOUCHED","DEFAULT_VALIDATE_TRIGGER","useForm","_a","initialValues","initialErrors","initialTouched","onValuesChange","onReset","onSubmit","rules","validateAfterTouched","validateTrigger","validateTriggerProp","rest","isArray","validateTriggersMemo","useMemo","useCollection","getValidation","registerField","unregisterField","useReducer","formReducer","values","errors","touched","validating","submitting","formState","formDispatch","formStateRef","useLatestRef","getFieldNames","useCallback","Object","keys","current","getFieldValue","fieldName","getFieldError","setFieldError","field","errorMessage","type","payload","value","setFieldTouched","validateField","fieldValidation","errorResultAsPromise","validate","console","log","then","result","errorMsg","fields","message","validateFieldState","validateAll","fieldNames","Promise","all","map","setFieldValue","shouldValidate","shouldValidateField","normalizeValueFromChange","eventOrValue","target","handleFieldChange","valueCollectPipe","evt","nextValue","isFunction","handleFieldBlur","handleFieldTrigger","initialValuesRef","useRef","initialErrorsRef","initialTouchedRef","onResetLatestRef","resetForm","nextState","dispatchFn","submitForm","combinedErrors","isInstanceOfError","Error","isActuallyValid","length","promiseOrUndefined","error","undefined","resolve","_errors","handleSubmit","stopEvent","handleReset","setFormState","React","stateOrFunc","getRootProps","useLatestCallback","getFieldProps","props","ref","valuePropName","valueCollectPropName","onBlur","validateOnCollect","includes","validateOnBlur","returnProps","getNested","callAllFuncs","invalid","filter","triggerName","indexOf","forEach","getFieldRules","state","action","setNested","collectionMp","Map","collectionRef","register","key","set","unregister","getCollection","has","get"],"mappings":"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"}
@@ -0,0 +1,83 @@
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
+ import { __rest } from 'tslib';
11
+ import React, { forwardRef, useMemo } from 'react';
12
+ import { getPrefixCls, cx } from '@hi-ui/classname';
13
+ import { __DEV__ } from '@hi-ui/env';
14
+ import { FormProvider } from './context.js';
15
+ import { useForm } from './use-form.js';
16
+ var _role = 'form';
17
+
18
+ var _prefix = getPrefixCls(_role); // form 注册表
19
+
20
+
21
+ var FORM_REGISTER_TABLE = {};
22
+ /**
23
+ * TODO: What is Form
24
+ */
25
+
26
+ var Form = /*#__PURE__*/forwardRef(function (_a, ref) {
27
+ var _a$prefixCls = _a.prefixCls,
28
+ prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
29
+ _a$role = _a.role,
30
+ role = _a$role === void 0 ? _role : _a$role,
31
+ className = _a.className,
32
+ children = _a.children,
33
+ labelWidth = _a.labelWidth,
34
+ _a$labelPlacement = _a.labelPlacement,
35
+ labelPlacement = _a$labelPlacement === void 0 ? 'right' : _a$labelPlacement,
36
+ colon = _a.colon,
37
+ rest = __rest(_a, ["prefixCls", "role", "className", "children", "innerRef", "labelWidth", "labelPlacement", "placement", "verticalAlign", "colon"]);
38
+
39
+ var formContext = useForm(rest);
40
+ var getRootProps = formContext.getRootProps; // useImperativeHandle(innerRef, () => formContext)
41
+
42
+ var providedValue = useMemo(function () {
43
+ return Object.assign({
44
+ labelWidth: labelWidth,
45
+ labelPlacement: labelPlacement,
46
+ colon: colon
47
+ }, formContext);
48
+ }, [labelWidth, formContext, labelPlacement, colon]);
49
+ var cls = cx(prefixCls, className);
50
+ return (
51
+ /*#__PURE__*/
52
+ // @ts-ignore
53
+ React.createElement(FormProvider, {
54
+ value: providedValue
55
+ }, /*#__PURE__*/React.createElement("form", Object.assign({
56
+ ref: ref,
57
+ role: role,
58
+ className: cls
59
+ }, getRootProps()), children))
60
+ );
61
+ });
62
+
63
+ if (__DEV__) {
64
+ Form.displayName = 'Form';
65
+ }
66
+
67
+ var formExtends = function formExtends(model) {
68
+ // @ts-ignore
69
+ if (typeof model.name === 'string') {
70
+ // @ts-ignore
71
+ FORM_REGISTER_TABLE[model.name] = model;
72
+ } else {
73
+ if (__DEV__) {
74
+ console.log('WARNING: the name should be unique string and not empty.');
75
+ }
76
+ }
77
+ };
78
+
79
+ Object.assign(Form, {
80
+ "extends": formExtends
81
+ });
82
+ export { FORM_REGISTER_TABLE, Form };
83
+ //# sourceMappingURL=Form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.js","sources":["../../src/Form.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","FORM_REGISTER_TABLE","Form","forwardRef","_a","ref","prefixCls","role","className","children","labelWidth","labelPlacement","colon","rest","formContext","useForm","getRootProps","providedValue","useMemo","cls","cx","React","FormProvider","value","__DEV__","displayName","formExtends","model","name","console","log","Object","assign","extends"],"mappings":";;;;;;;;;;;;;;;AAQA,IAAMA,KAAK,GAAG,MAAd;;AACA,IAAMC,OAAO,GAAGC,YAAY,CAACF,KAAD,CAA5B;;;IAGaG,mBAAmB,GAAkC;AAElE;;;;IAGaC,IAAI,gBAAGC,UAAU,CAC5B,UACEC,EADF,EAcEC,GAdF;wBAEIC;MAAAA,sCAAYP;mBACZQ;MAAAA,4BAAOT;MACPU,eAAAA;MACAC,cAAAA;MAEAC,gBAAAA;6BACAC;MAAAA,gDAAiB;MAGjBC,WAAAA;MACGC,kBAXL,YAAA,QAAA,aAAA,YAAA,YAAA,cAAA,kBAAA,aAAA,iBAAA,SAAA;;MAeMC,WAAW,GAAGC,OAAO,CAACF,IAAD;MAEnBG,YAAR,GAAyBF,WAAzB,CAAQE;;MAGFC,aAAa,GAAGC,OAAO,CAAC;;AAE1BR,MAAAA,UAAU,EAAVA;AACAC,MAAAA,cAAc,EAAdA;AACAC,MAAAA,KAAK,EAALA;OACGE;AALsB,GAAA,EAO1B,CAACJ,UAAD,EAAaI,WAAb,EAA0BH,cAA1B,EAA0CC,KAA1C,CAP0B;MASvBO,GAAG,GAAGC,EAAE,CAACd,SAAD,EAAYE,SAAZ;;;;AAIZa,IAAAA,mBAAAA,CAACC,YAADD;AAAcE,MAAAA,KAAK,EAAEN;KAArBI,eACEA,mBAAAA,OAAAA;AAAMhB,MAAAA,GAAG,EAAEA;AAAKE,MAAAA,IAAI,EAAEA;AAAMC,MAAAA,SAAS,EAAEW;OAASH,YAAY,GAA5DK,EACGZ,QADHY,CADFA;;AAnCwB,CAAA;;AAyE9B,IAAIG,OAAJ,EAAa;AACXtB,EAAAA,IAAI,CAACuB,WAALvB,GAAmB,MAAnBA;;;AAGF,IAAMwB,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD;;MAEd,OAAOA,KAAK,CAACC,IAAb,KAAsB,UAAU;;AAElC3B,IAAAA,mBAAmB,CAAC0B,KAAK,CAACC,IAAP,CAAnB3B,GAAkC0B,KAAlC1B;AAFF,SAGO;QACDuB,SAAS;AACXK,MAAAA,OAAO,CAACC,GAARD,CAAY,0DAAZA;;;AAPN,CAAA;;AAYAE,MAAM,CAACC,MAAPD,CAAc7B,IAAd6B,EAAoB;AAAEE,aAASP;AAAX,CAApBK;"}