mobx-react-hook-form 5.1.0 → 5.1.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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # [mobx-react-hook-form](https://github.com/js2me/mobx-react-hook-form)
2
2
 
3
- Simple [react-hook-form](https://react-hook-form.com/) wrapper for [MobX](https://mobx.js.org/).
3
+ Simple [react-hook-form](https://react-hook-form.com/) wrapper for [MobX](https://mobx.js.org/).
4
4
 
5
- ## Usage
5
+ ## Usage
6
6
 
7
7
  ```tsx
8
8
  import { reaction } from "mobx";
@@ -36,3 +36,66 @@ const YourView = observer(() => {
36
36
  })
37
37
 
38
38
  ```
39
+
40
+ ## API
41
+
42
+ This library uses [`createFormControl`](https://react-hook-form.com/docs/createFormControl).
43
+ So API is almost identical with result of `createFormControl` function call.
44
+
45
+ Differences:
46
+
47
+ - `reset` method renamed to `resetForm`
48
+
49
+ ## Additional API
50
+
51
+ ### `changeField(name, value, opts)`
52
+
53
+ The same as [`setValue`](https://react-hook-form.com/docs/useform/setvalue), but will trigger validation if form was submitted
54
+ It should work the same as `field.onChange` from `react-hook-form`'s Controller
55
+
56
+ Example:
57
+
58
+ ```tsx
59
+ // Update a single field
60
+ changeField("name", "value");
61
+
62
+ /** form submitted **/
63
+
64
+ changeField("name", "value"); // will call setValue('name', 'value', { shouldValidate: true })
65
+ ```
66
+
67
+ ### `submit()`
68
+
69
+ This method is needed to pass into `<form />` as `onSubmit` prop, or you can call this method if you want to submit form
70
+
71
+ Example:
72
+
73
+ ```tsx
74
+ const form = new Form();
75
+
76
+ const Component = () => {
77
+ return (
78
+ <form onSubmit={form.submit} onReset={form.reset}>
79
+ ...
80
+ </form>
81
+ );
82
+ };
83
+ ```
84
+
85
+ ### `reset()`
86
+
87
+ This method is needed to pass into `<form />` as `onReset` prop, or you can call this method if you want to reset form
88
+
89
+ Example:
90
+
91
+ ```tsx
92
+ const form = new Form();
93
+
94
+ const Component = () => {
95
+ return (
96
+ <form onSubmit={form.submit} onReset={form.reset}>
97
+ ...
98
+ </form>
99
+ );
100
+ };
101
+ ```
@@ -261,6 +261,20 @@ export declare class Form<TFieldValues extends FieldValues = FieldValues, TConte
261
261
  /**
262
262
  * The same as setValue, but will trigger validation if form was submitted
263
263
  * It should work the same as field.onChange from react-hook-form's Controller
264
+ *
265
+ * @param name - the path name to the form field value.
266
+ * @param value - field value
267
+ * @param options - should validate or update form state
268
+ *
269
+ * @example
270
+ * ```tsx
271
+ * // Update a single field
272
+ * changeField('name', 'value');
273
+ *
274
+ * ** form submitted **
275
+ *
276
+ * changeField('name', 'value'); // will call setValue('name', 'value', { shouldValidate: true })
277
+ * ```
264
278
  */
265
279
  changeField: UseFormSetValue<TFieldValues>;
266
280
  /**
@@ -282,7 +296,6 @@ export declare class Form<TFieldValues extends FieldValues = FieldValues, TConte
282
296
  */
283
297
  reset(e?: BaseSyntheticEvent): void;
284
298
  private updateFormState;
285
- protected lastRafId: number | undefined;
286
299
  protected lastTimeoutId: number | undefined;
287
300
  private stopScheduledFormStateUpdate;
288
301
  private scheduleUpdateFormState;
@@ -1 +1 @@
1
- {"version":3,"file":"mobx-form.d.ts","sourceRoot":"","sources":["../../src/mobx-form/mobx-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mobx-form.d.ts","sourceRoot":"","sources":["../../src/mobx-form/mobx-form.ts"],"names":[],"mappings":"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"}
@@ -357,6 +357,20 @@ export class Form {
357
357
  /**
358
358
  * The same as setValue, but will trigger validation if form was submitted
359
359
  * It should work the same as field.onChange from react-hook-form's Controller
360
+ *
361
+ * @param name - the path name to the form field value.
362
+ * @param value - field value
363
+ * @param options - should validate or update form state
364
+ *
365
+ * @example
366
+ * ```tsx
367
+ * // Update a single field
368
+ * changeField('name', 'value');
369
+ *
370
+ * ** form submitted **
371
+ *
372
+ * changeField('name', 'value'); // will call setValue('name', 'value', { shouldValidate: true })
373
+ * ```
360
374
  */
361
375
  changeField = (name, value, opts) => {
362
376
  this.setValue(name, value, {
@@ -410,13 +424,8 @@ export class Form {
410
424
  values,
411
425
  });
412
426
  }
413
- lastRafId;
414
427
  lastTimeoutId;
415
428
  stopScheduledFormStateUpdate = () => {
416
- if (this.lastRafId !== undefined) {
417
- cancelAnimationFrame(this.lastRafId);
418
- this.lastRafId = undefined;
419
- }
420
429
  if (this.lastTimeoutId !== undefined) {
421
430
  clearTimeout(this.lastTimeoutId);
422
431
  this.lastTimeoutId = undefined;
@@ -425,11 +434,8 @@ export class Form {
425
434
  scheduleUpdateFormState = (rawFormState) => {
426
435
  this.stopScheduledFormStateUpdate();
427
436
  this.lastTimeoutId = setTimeout(() => {
428
- this.lastRafId = requestAnimationFrame(() => {
429
- this.updateFormState(rawFormState);
430
- this.lastTimeoutId = undefined;
431
- this.lastRafId = undefined;
432
- });
437
+ this.updateFormState(rawFormState);
438
+ this.lastTimeoutId = undefined;
433
439
  }, this.config.lazyUpdatesTimer ?? 0);
434
440
  };
435
441
  destroy() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-react-hook-form",
3
- "version": "5.1.0",
3
+ "version": "5.1.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "keywords": [],