react-hook-form 7.44.3-beta.1 → 7.44.3
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/dist/form.d.ts +4 -25
- package/dist/form.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +39 -40
- package/dist/index.esm.mjs.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/types/form.d.ts +22 -0
- package/dist/types/form.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.mjs
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
import
|
2
|
-
import React__default from 'react';
|
1
|
+
import React from 'react';
|
3
2
|
|
4
3
|
var isCheckBoxInput = (element) => element.type === 'checkbox';
|
5
4
|
|
@@ -99,7 +98,7 @@ const INPUT_VALIDATION_RULES = {
|
|
99
98
|
validate: 'validate',
|
100
99
|
};
|
101
100
|
|
102
|
-
const HookFormContext =
|
101
|
+
const HookFormContext = React.createContext(null);
|
103
102
|
/**
|
104
103
|
* This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.
|
105
104
|
*
|
@@ -130,7 +129,7 @@ const HookFormContext = React__default.createContext(null);
|
|
130
129
|
* }
|
131
130
|
* ```
|
132
131
|
*/
|
133
|
-
const useFormContext = () =>
|
132
|
+
const useFormContext = () => React.useContext(HookFormContext);
|
134
133
|
/**
|
135
134
|
* A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.
|
136
135
|
*
|
@@ -163,7 +162,7 @@ const useFormContext = () => React__default.useContext(HookFormContext);
|
|
163
162
|
*/
|
164
163
|
const FormProvider = (props) => {
|
165
164
|
const { children, ...data } = props;
|
166
|
-
return (
|
165
|
+
return (React.createElement(HookFormContext.Provider, { value: data }, children));
|
167
166
|
};
|
168
167
|
|
169
168
|
var getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {
|
@@ -208,9 +207,9 @@ var shouldSubscribeByName = (name, signalName, exact) => exact && signalName
|
|
208
207
|
signalName.startsWith(currentName)));
|
209
208
|
|
210
209
|
function useSubscribe(props) {
|
211
|
-
const _props =
|
210
|
+
const _props = React.useRef(props);
|
212
211
|
_props.current = props;
|
213
|
-
|
212
|
+
React.useEffect(() => {
|
214
213
|
const subscription = !props.disabled &&
|
215
214
|
_props.current.subject &&
|
216
215
|
_props.current.subject.subscribe({
|
@@ -255,9 +254,9 @@ function useSubscribe(props) {
|
|
255
254
|
function useFormState(props) {
|
256
255
|
const methods = useFormContext();
|
257
256
|
const { control = methods.control, disabled, name, exact } = props || {};
|
258
|
-
const [formState, updateFormState] =
|
259
|
-
const _mounted =
|
260
|
-
const _localProxyFormState =
|
257
|
+
const [formState, updateFormState] = React.useState(control._formState);
|
258
|
+
const _mounted = React.useRef(true);
|
259
|
+
const _localProxyFormState = React.useRef({
|
261
260
|
isDirty: false,
|
262
261
|
isLoading: false,
|
263
262
|
dirtyFields: false,
|
@@ -266,7 +265,7 @@ function useFormState(props) {
|
|
266
265
|
isValid: false,
|
267
266
|
errors: false,
|
268
267
|
});
|
269
|
-
const _name =
|
268
|
+
const _name = React.useRef(name);
|
270
269
|
_name.current = name;
|
271
270
|
useSubscribe({
|
272
271
|
disabled,
|
@@ -279,7 +278,7 @@ function useFormState(props) {
|
|
279
278
|
}),
|
280
279
|
subject: control._subjects.state,
|
281
280
|
});
|
282
|
-
|
281
|
+
React.useEffect(() => {
|
283
282
|
_mounted.current = true;
|
284
283
|
_localProxyFormState.current.isValid && control._updateValid(true);
|
285
284
|
return () => {
|
@@ -322,7 +321,7 @@ var generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) =>
|
|
322
321
|
function useWatch(props) {
|
323
322
|
const methods = useFormContext();
|
324
323
|
const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};
|
325
|
-
const _name =
|
324
|
+
const _name = React.useRef(name);
|
326
325
|
_name.current = name;
|
327
326
|
useSubscribe({
|
328
327
|
disabled,
|
@@ -333,8 +332,8 @@ function useWatch(props) {
|
|
333
332
|
}
|
334
333
|
},
|
335
334
|
});
|
336
|
-
const [value, updateValue] =
|
337
|
-
|
335
|
+
const [value, updateValue] = React.useState(control._getWatch(name, defaultValue));
|
336
|
+
React.useEffect(() => control._removeUnmounted());
|
338
337
|
return value;
|
339
338
|
}
|
340
339
|
|
@@ -403,12 +402,12 @@ function useController(props) {
|
|
403
402
|
control,
|
404
403
|
name,
|
405
404
|
});
|
406
|
-
const _registerProps =
|
405
|
+
const _registerProps = React.useRef(control.register(name, {
|
407
406
|
...props.rules,
|
408
407
|
value,
|
409
408
|
}));
|
410
409
|
_registerProps.current = control.register(name, props.rules);
|
411
|
-
|
410
|
+
React.useEffect(() => {
|
412
411
|
const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;
|
413
412
|
const updateMounted = (name, value) => {
|
414
413
|
const field = get(control._fields, name);
|
@@ -436,14 +435,14 @@ function useController(props) {
|
|
436
435
|
field: {
|
437
436
|
name,
|
438
437
|
value,
|
439
|
-
onChange:
|
438
|
+
onChange: React.useCallback((event) => _registerProps.current.onChange({
|
440
439
|
target: {
|
441
440
|
value: getEventValue(event),
|
442
441
|
name: name,
|
443
442
|
},
|
444
443
|
type: EVENTS.CHANGE,
|
445
444
|
}), [name]),
|
446
|
-
onBlur:
|
445
|
+
onBlur: React.useCallback(() => _registerProps.current.onBlur({
|
447
446
|
target: {
|
448
447
|
value: get(control._formValues, name),
|
449
448
|
name: name,
|
@@ -1076,11 +1075,11 @@ var updateAt = (fieldValues, index, value) => {
|
|
1076
1075
|
function useFieldArray(props) {
|
1077
1076
|
const methods = useFormContext();
|
1078
1077
|
const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;
|
1079
|
-
const [fields, setFields] =
|
1080
|
-
const ids =
|
1081
|
-
const _fieldIds =
|
1082
|
-
const _name =
|
1083
|
-
const _actioned =
|
1078
|
+
const [fields, setFields] = React.useState(control._getFieldArray(name));
|
1079
|
+
const ids = React.useRef(control._getFieldArray(name).map(generateId));
|
1080
|
+
const _fieldIds = React.useRef(fields);
|
1081
|
+
const _name = React.useRef(name);
|
1082
|
+
const _actioned = React.useRef(false);
|
1084
1083
|
_name.current = name;
|
1085
1084
|
_fieldIds.current = fields;
|
1086
1085
|
control._names.array.add(name);
|
@@ -1098,7 +1097,7 @@ function useFieldArray(props) {
|
|
1098
1097
|
},
|
1099
1098
|
subject: control._subjects.array,
|
1100
1099
|
});
|
1101
|
-
const updateValues =
|
1100
|
+
const updateValues = React.useCallback((updatedFieldArrayValues) => {
|
1102
1101
|
_actioned.current = true;
|
1103
1102
|
control._updateFieldArray(name, updatedFieldArrayValues);
|
1104
1103
|
}, [control, name]);
|
@@ -1185,7 +1184,7 @@ function useFieldArray(props) {
|
|
1185
1184
|
setFields([...updatedFieldArrayValues]);
|
1186
1185
|
control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);
|
1187
1186
|
};
|
1188
|
-
|
1187
|
+
React.useEffect(() => {
|
1189
1188
|
control._state.action = false;
|
1190
1189
|
isWatched(name, control._names) &&
|
1191
1190
|
control._subjects.state.next({
|
@@ -1232,7 +1231,7 @@ function useFieldArray(props) {
|
|
1232
1231
|
control._names.focus = '';
|
1233
1232
|
control._updateValid();
|
1234
1233
|
}, [fields, name, control]);
|
1235
|
-
|
1234
|
+
React.useEffect(() => {
|
1236
1235
|
!get(control._formValues, name) && control._updateFieldArray(name);
|
1237
1236
|
return () => {
|
1238
1237
|
(control._options.shouldUnregister || shouldUnregister) &&
|
@@ -1240,15 +1239,15 @@ function useFieldArray(props) {
|
|
1240
1239
|
};
|
1241
1240
|
}, [name, control, keyName, shouldUnregister]);
|
1242
1241
|
return {
|
1243
|
-
swap:
|
1244
|
-
move:
|
1245
|
-
prepend:
|
1246
|
-
append:
|
1247
|
-
remove:
|
1248
|
-
insert:
|
1249
|
-
update:
|
1250
|
-
replace:
|
1251
|
-
fields:
|
1242
|
+
swap: React.useCallback(swap, [updateValues, name, control]),
|
1243
|
+
move: React.useCallback(move, [updateValues, name, control]),
|
1244
|
+
prepend: React.useCallback(prepend$1, [updateValues, name, control]),
|
1245
|
+
append: React.useCallback(append$1, [updateValues, name, control]),
|
1246
|
+
remove: React.useCallback(remove, [updateValues, name, control]),
|
1247
|
+
insert: React.useCallback(insert$1, [updateValues, name, control]),
|
1248
|
+
update: React.useCallback(update, [updateValues, name, control]),
|
1249
|
+
replace: React.useCallback(replace, [updateValues, name, control]),
|
1250
|
+
fields: React.useMemo(() => fields.map((field, index) => ({
|
1252
1251
|
...field,
|
1253
1252
|
[keyName]: ids.current[index] || generateId(),
|
1254
1253
|
})), [fields, keyName]),
|
@@ -2378,8 +2377,8 @@ function createFormControl(props = {}, flushRootRender) {
|
|
2378
2377
|
* ```
|
2379
2378
|
*/
|
2380
2379
|
function useForm(props = {}) {
|
2381
|
-
const _formControl =
|
2382
|
-
const [formState, updateFormState] =
|
2380
|
+
const _formControl = React.useRef();
|
2381
|
+
const [formState, updateFormState] = React.useState({
|
2383
2382
|
isDirty: false,
|
2384
2383
|
isValidating: false,
|
2385
2384
|
isLoading: isFunction(props.defaultValues),
|
@@ -2411,7 +2410,7 @@ function useForm(props = {}) {
|
|
2411
2410
|
}
|
2412
2411
|
},
|
2413
2412
|
});
|
2414
|
-
|
2413
|
+
React.useEffect(() => {
|
2415
2414
|
if (props.values && !deepEqual(props.values, control._defaultValues)) {
|
2416
2415
|
control._reset(props.values, control._options.resetOptions);
|
2417
2416
|
}
|
@@ -2419,7 +2418,7 @@ function useForm(props = {}) {
|
|
2419
2418
|
control._resetDefaultValues();
|
2420
2419
|
}
|
2421
2420
|
}, [props.values, control]);
|
2422
|
-
|
2421
|
+
React.useEffect(() => {
|
2423
2422
|
if (!control._state.mount) {
|
2424
2423
|
control._updateValid();
|
2425
2424
|
control._state.mount = true;
|