@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,519 @@
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 _regeneratorRuntime from '@babel/runtime/regenerator';
11
+ import { __rest, __awaiter } from 'tslib';
12
+ import React, { useMemo, useReducer, useCallback, useRef } from 'react';
13
+ import { useLatestRef, useLatestCallback } from '@hi-ui/use-latest';
14
+ import { isArray, isFunction } from '@hi-ui/type-assertion';
15
+ import { getNested, callAllFuncs, setNested } from '@hi-ui/func-utils';
16
+ import { stopEvent } from '@hi-ui/dom-utils';
17
+ var EMPTY_RULES = {};
18
+ var EMPTY_ERRORS = {};
19
+ var EMPTY_TOUCHED = {};
20
+ var DEFAULT_VALIDATE_TRIGGER = ['onChange', 'onBlur'];
21
+
22
+ var useForm = function useForm(_a) {
23
+ var initialValues = _a.initialValues,
24
+ _a$initialErrors = _a.initialErrors,
25
+ initialErrors = _a$initialErrors === void 0 ? EMPTY_ERRORS : _a$initialErrors,
26
+ _a$initialTouched = _a.initialTouched,
27
+ initialTouched = _a$initialTouched === void 0 ? EMPTY_TOUCHED : _a$initialTouched,
28
+ onValuesChange = _a.onValuesChange,
29
+ onReset = _a.onReset,
30
+ onSubmit = _a.onSubmit,
31
+ _a$rules = _a.rules,
32
+ rules = _a$rules === void 0 ? EMPTY_RULES : _a$rules,
33
+ _a$validateAfterTouch = _a.validateAfterTouched,
34
+ validateAfterTouched = _a$validateAfterTouch === void 0 ? true : _a$validateAfterTouch,
35
+ _a$validateTrigger = _a.validateTrigger,
36
+ validateTriggerProp = _a$validateTrigger === void 0 ? DEFAULT_VALIDATE_TRIGGER : _a$validateTrigger,
37
+ rest = __rest(_a, ["initialValues", "initialErrors", "initialTouched", "lazyValidate", "onValuesChange", "onReset", "onSubmit", "rules", "validateAfterTouched", "validateTrigger"]);
38
+ /**
39
+ * 处理校验触发器,保证 memo 依赖的是数组每个项,避免无效重渲染
40
+ */
41
+
42
+
43
+ var validateTrigger = isArray(validateTriggerProp) ? validateTriggerProp : [validateTriggerProp]; // eslint-disable-next-line react-hooks/exhaustive-deps
44
+
45
+ var validateTriggersMemo = useMemo(function () {
46
+ return validateTrigger;
47
+ }, validateTrigger);
48
+ /**
49
+ * 收集 Field 的校验器注册表
50
+ */
51
+
52
+ var _useCollection = useCollection(),
53
+ getValidation = _useCollection[0],
54
+ registerField = _useCollection[1],
55
+ unregisterField = _useCollection[2];
56
+ /**
57
+ * form 数据管理中心
58
+ */
59
+
60
+
61
+ var _useReducer = useReducer(formReducer, {
62
+ values: initialValues,
63
+ errors: initialErrors,
64
+ touched: initialTouched,
65
+ validating: false,
66
+ submitting: false
67
+ }),
68
+ formState = _useReducer[0],
69
+ formDispatch = _useReducer[1]; // 使用 latest ref 维护,保证每次主动拿取的 formState 都是最新的
70
+
71
+
72
+ var formStateRef = useLatestRef(formState); // @ts-ignore
73
+
74
+ var getFieldNames = useCallback(function () {
75
+ return Object.keys(formStateRef.current.values);
76
+ }, [formStateRef]); // @ts-ignore
77
+
78
+ var getFieldValue = useCallback(function (fieldName) {
79
+ return formStateRef.current.values[fieldName];
80
+ }, [formStateRef]);
81
+ var getFieldError = useCallback(function (fieldName) {
82
+ return formStateRef.current.errors[fieldName];
83
+ }, [formStateRef]);
84
+ var setFieldError = useCallback(function (field, errorMessage) {
85
+ formDispatch({
86
+ type: 'SET_FIELD_ERROR',
87
+ // @ts-ignore
88
+ payload: {
89
+ field: field,
90
+ value: errorMessage
91
+ }
92
+ });
93
+ }, []);
94
+ var setFieldTouched = useCallback(function (field, touched) {
95
+ if (touched === void 0) {
96
+ touched = false;
97
+ }
98
+
99
+ formDispatch({
100
+ type: 'SET_FIELD_TOUCHED',
101
+ // @ts-ignore
102
+ payload: {
103
+ field: field,
104
+ value: touched
105
+ }
106
+ });
107
+ }, []);
108
+ /**
109
+ * 使用单个 Field 规则对给定值进行校验
110
+ */
111
+
112
+ var validateField = useCallback(function (field, value) {
113
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
114
+ var fieldValidation, errorResultAsPromise;
115
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
116
+ while (1) {
117
+ switch (_context.prev = _context.next) {
118
+ case 0:
119
+ fieldValidation = getValidation(field);
120
+
121
+ if (fieldValidation) {
122
+ _context.next = 3;
123
+ break;
124
+ }
125
+
126
+ return _context.abrupt("return");
127
+
128
+ case 3:
129
+ formDispatch({
130
+ type: 'SET_VALIDATING',
131
+ payload: true
132
+ });
133
+ errorResultAsPromise = fieldValidation.validate(value);
134
+ console.log('validate', errorResultAsPromise);
135
+ errorResultAsPromise.then(function (result) {
136
+ console.log('result', result);
137
+ formDispatch({
138
+ type: 'SET_VALIDATING',
139
+ payload: false
140
+ });
141
+ setFieldError(field, '');
142
+ })["catch"](function (errorMsg) {
143
+ // @ts-ignore
144
+ setFieldError(field, errorMsg.fields[field][0].message);
145
+ })["finally"](function () {
146
+ formDispatch({
147
+ type: 'SET_VALIDATING',
148
+ payload: false
149
+ });
150
+ });
151
+
152
+ case 7:
153
+ case "end":
154
+ return _context.stop();
155
+ }
156
+ }
157
+ }, _callee);
158
+ }));
159
+ }, [getValidation, setFieldError]);
160
+ /**
161
+ * 校验单个 Field 及其当前值
162
+ */
163
+
164
+ var validateFieldState = useCallback(function (field) {
165
+ var value = getFieldValue(field);
166
+ return validateField(field, value);
167
+ }, [validateField, getFieldValue]);
168
+ /**
169
+ * 检验所有字段
170
+ */
171
+
172
+ var validateAll = useCallback(function () {
173
+ var fieldNames = getFieldNames();
174
+ return Promise.all(fieldNames.map(function (fieldName) {
175
+ return validateFieldState(fieldName);
176
+ }));
177
+ }, [getFieldNames, validateFieldState]);
178
+ /**
179
+ * 控件值更新策略
180
+ */
181
+
182
+ var setFieldValue = useCallback(function (field, value, shouldValidate) {
183
+ // @ts-ignore
184
+ formDispatch({
185
+ type: 'SET_FIELD_VALUE',
186
+ payload: {
187
+ field: field,
188
+ value: value
189
+ }
190
+ });
191
+ var shouldValidateField = shouldValidate !== null && shouldValidate !== void 0 ? shouldValidate : validateAfterTouched ? formState.touched[field] : true;
192
+
193
+ if (shouldValidateField) {
194
+ validateField(field, value);
195
+ }
196
+ }, [validateField, validateAfterTouched, formState]);
197
+ var normalizeValueFromChange = useCallback(function (eventOrValue) {
198
+ // TODO: handle correct value
199
+ return eventOrValue.target.value;
200
+ }, []);
201
+ var handleFieldChange = useCallback(function (fieldName, valueCollectPipe, shouldValidate) {
202
+ return function (evt) {
203
+ var _Object$assign; // TODO: 传递 onChange 其它参数
204
+
205
+
206
+ var nextValue = isFunction(valueCollectPipe) ? valueCollectPipe(evt) : normalizeValueFromChange(evt);
207
+ setFieldValue(fieldName, nextValue, shouldValidate); // @ts-ignore
208
+
209
+ onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(Object.assign(Object.assign({}, formState.values), (_Object$assign = {}, _Object$assign[fieldName] = nextValue, _Object$assign)), formState.values);
210
+ };
211
+ }, [setFieldValue, onValuesChange, formState.values, normalizeValueFromChange]);
212
+ /**
213
+ * 控件失焦策略
214
+ */
215
+
216
+ var handleFieldBlur = useCallback(function (fieldName, shouldValidate) {
217
+ return function (evt) {
218
+ if (shouldValidate) {
219
+ validateFieldState(fieldName);
220
+ }
221
+
222
+ setFieldTouched(fieldName, true);
223
+ };
224
+ }, [setFieldTouched, validateFieldState]);
225
+ var handleFieldTrigger = useCallback(function (fieldName) {
226
+ return function (evt) {
227
+ validateFieldState(fieldName);
228
+ };
229
+ }, [validateFieldState]);
230
+ /**
231
+ * 表单重置,永远使用第一次的初始值
232
+ */
233
+
234
+ var initialValuesRef = useRef(initialValues);
235
+ var initialErrorsRef = useRef(initialErrors);
236
+ var initialTouchedRef = useRef(initialTouched);
237
+ var onResetLatestRef = useLatestRef(onReset);
238
+ var resetForm = useCallback(function (nextState) {
239
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
240
+ var values, errors, touched, submitting, validating, dispatchFn;
241
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
242
+ while (1) {
243
+ switch (_context2.prev = _context2.next) {
244
+ case 0:
245
+ values = nextState && nextState.values ? nextState.values : initialValuesRef.current;
246
+ errors = nextState && nextState.errors ? nextState.errors : initialErrorsRef.current;
247
+ touched = nextState && nextState.touched ? nextState.touched : initialTouchedRef.current;
248
+ initialValuesRef.current = values; // @ts-ignore
249
+
250
+ initialErrorsRef.current = errors;
251
+ initialTouchedRef.current = touched;
252
+ submitting = !!(nextState && nextState.submitting);
253
+ validating = !!(nextState && nextState.validating);
254
+
255
+ dispatchFn = function dispatchFn() {
256
+ formDispatch({
257
+ type: 'SET_FORM',
258
+ payload: {
259
+ submitting: submitting,
260
+ validating: validating,
261
+ errors: errors,
262
+ touched: touched,
263
+ values: values
264
+ }
265
+ });
266
+ };
267
+
268
+ if (!onResetLatestRef.current) {
269
+ _context2.next = 15;
270
+ break;
271
+ }
272
+
273
+ _context2.next = 12;
274
+ return onResetLatestRef.current(formState.values);
275
+
276
+ case 12:
277
+ dispatchFn();
278
+ _context2.next = 16;
279
+ break;
280
+
281
+ case 15:
282
+ dispatchFn();
283
+
284
+ case 16:
285
+ case "end":
286
+ return _context2.stop();
287
+ }
288
+ }
289
+ }, _callee2);
290
+ }));
291
+ }, [onResetLatestRef, formState.values]);
292
+ /**
293
+ * 表单提交
294
+ */
295
+
296
+ var submitForm = useCallback(function () {
297
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
298
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
299
+ while (1) {
300
+ switch (_context3.prev = _context3.next) {
301
+ case 0:
302
+ formDispatch({
303
+ type: 'SUBMIT_ATTEMPT'
304
+ });
305
+ return _context3.abrupt("return", validateAll().then(function (combinedErrors) {
306
+ var isInstanceOfError = combinedErrors instanceof Error;
307
+ var isActuallyValid = !isInstanceOfError && Object.keys(combinedErrors).length === 0;
308
+
309
+ if (isActuallyValid) {
310
+ var promiseOrUndefined;
311
+
312
+ try {
313
+ // @ts-ignore
314
+ promiseOrUndefined = onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(formState.values);
315
+ } catch (error) {// throw error
316
+ }
317
+
318
+ if (promiseOrUndefined === undefined) return;
319
+ return Promise.resolve(promiseOrUndefined).then(function (result) {
320
+ formDispatch({
321
+ type: 'SUBMIT_DONE'
322
+ });
323
+ return result;
324
+ })["catch"](function (_errors) {
325
+ formDispatch({
326
+ type: 'SUBMIT_DONE'
327
+ });
328
+ throw _errors;
329
+ });
330
+ } else {
331
+ formDispatch({
332
+ type: 'SUBMIT_DONE'
333
+ });
334
+
335
+ if (isInstanceOfError) {
336
+ throw combinedErrors;
337
+ }
338
+ }
339
+ }));
340
+
341
+ case 2:
342
+ case "end":
343
+ return _context3.stop();
344
+ }
345
+ }
346
+ }, _callee3);
347
+ }));
348
+ }, [formState, onSubmit, validateAll]);
349
+ var handleSubmit = useCallback(function (evt) {
350
+ stopEvent(evt);
351
+ submitForm()["catch"](console.error);
352
+ }, [submitForm]);
353
+ var handleReset = useCallback(function (evt) {
354
+ stopEvent(evt);
355
+ resetForm();
356
+ }, [resetForm]);
357
+ useCallback(function () {}, []);
358
+ useCallback(function () {
359
+ formDispatch({
360
+ // TODO: reset errorMsg
361
+ type: 'SET_ERRORS',
362
+ payload: {}
363
+ });
364
+ }, []);
365
+ var setFormState = React.useCallback(function (stateOrFunc) {
366
+ // @ts-ignore
367
+ formDispatch({
368
+ type: 'SET_STATE',
369
+ payload: stateOrFunc
370
+ });
371
+ }, []);
372
+ var getRootProps = useLatestCallback(function () {
373
+ return Object.assign(Object.assign({}, rest), {
374
+ onSubmit: handleSubmit,
375
+ onReset: handleReset
376
+ });
377
+ });
378
+ var getFieldProps = useCallback(function (props, ref) {
379
+ var _returnProps;
380
+
381
+ if (props === void 0) {
382
+ props = {};
383
+ }
384
+
385
+ if (ref === void 0) {
386
+ ref = null;
387
+ }
388
+
389
+ var _props = props,
390
+ field = _props.field,
391
+ _props$valuePropName = _props.valuePropName,
392
+ valuePropName = _props$valuePropName === void 0 ? 'value' : _props$valuePropName,
393
+ _props$valueCollectPr = _props.valueCollectPropName,
394
+ valueCollectPropName = _props$valueCollectPr === void 0 ? 'onChange' : _props$valueCollectPr,
395
+ valueCollectPipe = _props.valueCollectPipe,
396
+ _props$validateTrigge = _props.validateTrigger,
397
+ validateTriggerProp = _props$validateTrigge === void 0 ? validateTriggersMemo : _props$validateTrigge,
398
+ onBlur = _props.onBlur;
399
+ var validateTrigger = isArray(validateTriggerProp) ? validateTriggerProp : [validateTriggerProp];
400
+ var validateOnCollect = validateTrigger.includes(valueCollectPropName);
401
+ var validateOnBlur = validateTrigger.includes('onChange');
402
+ var returnProps = (_returnProps = {
403
+ ref: ref
404
+ }, _returnProps[valuePropName] = getNested(formState.values, field), _returnProps[valueCollectPropName] = callAllFuncs(props[valueCollectPropName], handleFieldChange(field, valueCollectPipe, validateOnCollect)), _returnProps.onBlur = callAllFuncs(onBlur, handleFieldBlur(field, validateOnBlur)), _returnProps.invalid = getFieldError(field), _returnProps);
405
+ validateTrigger.filter(function (triggerName) {
406
+ return [valueCollectPropName, 'onBlur'].indexOf(triggerName) === -1;
407
+ }) // @ts-ignore
408
+ .forEach(function (triggerName) {
409
+ // @ts-ignore
410
+ returnProps[triggerName] = callAllFuncs(props[triggerName], handleFieldTrigger(field));
411
+ });
412
+ return returnProps;
413
+ }, [formState, handleFieldChange, handleFieldBlur, validateTriggersMemo, handleFieldTrigger, getFieldError]);
414
+ var getFieldRules = useCallback(function (fieldName) {
415
+ return rules[fieldName];
416
+ }, [rules]);
417
+ return Object.assign(Object.assign({}, formState), {
418
+ setFormState: setFormState,
419
+ setFieldValue: setFieldValue,
420
+ setFieldError: setFieldError,
421
+ setFieldTouched: setFieldTouched,
422
+ getFieldError: getFieldError,
423
+ getFieldRules: getFieldRules,
424
+ getRootProps: getRootProps,
425
+ getFieldProps: getFieldProps,
426
+ registerField: registerField,
427
+ unregisterField: unregisterField,
428
+ submitForm: submitForm,
429
+ resetForm: resetForm
430
+ });
431
+ }; // TODO: field 支持数组
432
+
433
+
434
+ function formReducer(state, action) {
435
+ switch (action.type) {
436
+ case 'SET_STATE':
437
+ var nextState = isFunction(action.payload) ? action.payload(state) : action.payload;
438
+ return Object.assign(Object.assign({}, state), nextState);
439
+
440
+ case 'SET_VALUES':
441
+ return Object.assign(Object.assign({}, state), {
442
+ values: action.payload
443
+ });
444
+
445
+ case 'SET_ERRORS':
446
+ return Object.assign(Object.assign({}, state), {
447
+ errors: action.payload
448
+ });
449
+
450
+ case 'SET_TOUCHED':
451
+ return Object.assign(Object.assign({}, state), {
452
+ touched: action.payload
453
+ });
454
+
455
+ case 'SET_SUBMITTING':
456
+ return Object.assign(Object.assign({}, state), {
457
+ submitting: action.payload
458
+ });
459
+
460
+ case 'SET_VALIDATING':
461
+ return Object.assign(Object.assign({}, state), {
462
+ validating: action.payload
463
+ });
464
+
465
+ case 'SET_FIELD_VALUE':
466
+ return Object.assign(Object.assign({}, state), {
467
+ values: setNested(state.values, action.payload.field, action.payload.value)
468
+ });
469
+
470
+ case 'SET_FIELD_TOUCHED':
471
+ return Object.assign(Object.assign({}, state), {
472
+ touched: setNested(state.touched, action.payload.field, action.payload.value)
473
+ });
474
+
475
+ case 'SET_FIELD_ERROR':
476
+ return Object.assign(Object.assign({}, state), {
477
+ errors: setNested(state.errors, action.payload.field, action.payload.value)
478
+ });
479
+
480
+ case 'SET_FORM':
481
+ return Object.assign(Object.assign({}, state), action.payload);
482
+
483
+ case 'SUBMIT_DONE':
484
+ return Object.assign(Object.assign({}, state), {
485
+ submitting: false
486
+ });
487
+
488
+ default:
489
+ return state;
490
+ }
491
+ }
492
+ /**
493
+ * 一个注册表的收集器
494
+ */
495
+
496
+
497
+ var useCollection = function useCollection() {
498
+ var collectionMp = useMemo(function () {
499
+ return new Map();
500
+ }, []);
501
+ var collectionRef = useRef(collectionMp);
502
+ var register = useCallback(function (key, value) {
503
+ collectionRef.current.set(key, value);
504
+ }, []);
505
+ var unregister = useCallback(function (key) {
506
+ collectionRef.current["delete"](key);
507
+ }, []);
508
+ var getCollection = useCallback(function (key) {
509
+ if (collectionRef.current.has(key)) {
510
+ return collectionRef.current.get(key);
511
+ }
512
+
513
+ return null;
514
+ }, []);
515
+ return [getCollection, register, unregister];
516
+ };
517
+
518
+ export { useForm };
519
+ //# 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,35 @@
1
+ import React from 'react';
2
+ import { UseFormProps } from './use-form';
3
+ import { HiBaseHTMLProps } from '@hi-ui/core';
4
+ import { FormRuleModel, FormHelpers } from './types';
5
+ export declare const FORM_REGISTER_TABLE: Record<string, FormRuleModel>;
6
+ /**
7
+ * TODO: What is Form
8
+ */
9
+ export declare const Form: React.ForwardRefExoticComponent<FormProps<Record<string, any>> & React.RefAttributes<HTMLFormElement | null>>;
10
+ export interface FormProps<Values = Record<string, any>> extends Omit<HiBaseHTMLProps<'form'>, 'onSubmit' | 'onReset'>, UseFormProps<Values> {
11
+ /**
12
+ * 提供辅助方法的内部引用
13
+ */
14
+ innerRef?: React.RefObject<FormHelpers<Values>>;
15
+ /**
16
+ * label 宽度,可用任意 CSS 长度单位
17
+ */
18
+ labelWidth?: React.ReactText;
19
+ /**
20
+ * label 对齐的方式
21
+ */
22
+ labelPlacement?: 'left' | 'right' | 'top';
23
+ /**
24
+ * label 和表单控件的放置方式
25
+ */
26
+ placement?: 'vertical' | 'horizontal';
27
+ /**
28
+ * 在 vertical 放置时,label 相对表单控件垂直对齐的方式
29
+ */
30
+ verticalAlign?: 'top' | 'center' | 'bottom';
31
+ /**
32
+ * 配置是否展示冒号
33
+ */
34
+ colon?: boolean;
35
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { UseFormFieldProps } from './use-form-field';
3
+ /**
4
+ * TODO: What is FormField
5
+ */
6
+ export declare const FormField: React.FC<FormFieldProps>;
7
+ export interface FormFieldProps extends UseFormFieldProps {
8
+ /**
9
+ * 表单控件
10
+ */
11
+ children?: React.ReactElement;
12
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { UseFormFieldProps } from './use-form-field';
3
+ import { FormLabelProps } from './FormLabel';
4
+ /**
5
+ * TODO: What is FormItem
6
+ */
7
+ export declare const FormItem: React.FC<FormItemProps>;
8
+ export interface FormItemProps extends UseFormFieldProps, FormLabelProps {
9
+ /**
10
+ * 表单控件
11
+ */
12
+ children?: React.ReactElement;
13
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { HiBaseHTMLProps } from '@hi-ui/core';
3
+ /**
4
+ * TODO: What is FormLabel
5
+ */
6
+ export declare const FormLabel: React.ForwardRefExoticComponent<FormLabelProps & React.RefAttributes<HTMLDivElement | null>>;
7
+ export interface FormLabelProps extends HiBaseHTMLProps<'div'> {
8
+ /**
9
+ * label 放置的位置
10
+ */
11
+ labelPlacement?: 'right' | 'left' | 'top';
12
+ /**
13
+ * 标记是否必填
14
+ */
15
+ required?: boolean;
16
+ /**
17
+ * 是否显示冒号
18
+ */
19
+ colon?: boolean;
20
+ /**
21
+ * label 宽度,可使用任意 CSS 长度单位。优先级高于 Form 设置的 labelWidth
22
+ */
23
+ labelWidth?: React.ReactText;
24
+ /**
25
+ * label 文案
26
+ */
27
+ label?: React.ReactNode;
28
+ }
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ /**
3
+ * TODO: What is FormList
4
+ */
5
+ export declare const FormList: React.FC<FormListProps>;
6
+ export interface FormListProps {
7
+ /**
8
+ * 表单控件
9
+ */
10
+ children?: (fields: any[], action: any) => React.ReactElement | null;
11
+ /**
12
+ * 列表名称
13
+ */
14
+ name: string | string[];
15
+ }
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ /**
3
+ * TODO: What is FormMessage
4
+ */
5
+ export declare const FormMessage: React.ForwardRefExoticComponent<FormMessageProps & React.RefAttributes<HTMLSpanElement | null>>;
6
+ export interface FormMessageProps {
7
+ /**
8
+ * 组件默认的选择器类
9
+ */
10
+ prefixCls?: string;
11
+ /**
12
+ * 组件的语义化 Role 属性
13
+ */
14
+ role?: string;
15
+ /**
16
+ * 组件的注入选择器类
17
+ */
18
+ className?: string;
19
+ /**
20
+ * 组件的注入样式
21
+ */
22
+ style?: React.CSSProperties;
23
+ /**
24
+ * 字段名
25
+ */
26
+ field?: string;
27
+ }