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 +65 -2
- package/mobx-form/mobx-form.d.ts +14 -1
- package/mobx-form/mobx-form.d.ts.map +1 -1
- package/mobx-form/mobx-form.js +16 -10
- package/package.json +1 -1
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
|
+
```
|
package/mobx-form/mobx-form.d.ts
CHANGED
|
@@ -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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"}
|
package/mobx-form/mobx-form.js
CHANGED
|
@@ -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.
|
|
429
|
-
|
|
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() {
|