@bombillazo/rhf-plus 7.62.0-plus.7 → 7.63.0-plus.0
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/LICENSE +1 -0
- package/README.md +41 -64
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +56 -32
- 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/logic/createFormControl.d.ts.map +1 -1
- package/dist/logic/getDirtyFields.d.ts +3 -2
- package/dist/logic/getDirtyFields.d.ts.map +1 -1
- package/dist/logic/getValidateError.d.ts.map +1 -1
- package/dist/react-server.esm.mjs +50 -32
- package/dist/react-server.esm.mjs.map +1 -1
- package/dist/types/form.d.ts +14 -3
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/resolvers.d.ts +2 -2
- package/dist/types/resolvers.d.ts.map +1 -1
- package/dist/useController.d.ts.map +1 -1
- package/dist/utils/extractFormValues.d.ts +2 -0
- package/dist/utils/extractFormValues.d.ts.map +1 -0
- package/package.json +33 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAaV,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAaV,WAAW,EACX,YAAY,EAiBZ,YAAY,EAIZ,aAAa,EAUd,MAAM,UAAU,CAAC;AAyDlB,wBAAgB,iBAAiB,CAC/B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,QAAQ,GAAG,GAAG,EACd,kBAAkB,GAAG,YAAY,EACjC,SAAS,SAAS,YAAY,GAAG,GAAG,EAEpC,KAAK,GAAE,YAAY,CACjB,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,SAAS,CACL,GACL,IAAI,CACL,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,EACpE,WAAW,CACZ,GAAG;IACF,WAAW,EAAE,IAAI,CACf,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,EACpE,WAAW,CACZ,CAAC;CACH,CA+vDA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
declare
|
|
2
|
-
export default
|
|
1
|
+
declare function markFieldsDirty<T>(data: T, fields?: Record<string, any>): Record<string, any>;
|
|
2
|
+
export default function getDirtyFields<T>(data: T, formValues: T, dirtyFieldsFromValues?: Record<Extract<keyof T, string>, ReturnType<typeof markFieldsDirty> | boolean>): Record<Extract<keyof T, string>, boolean | Record<string, any>>;
|
|
3
|
+
export {};
|
|
3
4
|
//# sourceMappingURL=getDirtyFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDirtyFields.d.ts","sourceRoot":"","sources":["../../src/logic/getDirtyFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getDirtyFields.d.ts","sourceRoot":"","sources":["../../src/logic/getDirtyFields.ts"],"names":[],"mappings":"AAWA,iBAAS,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,uBAWpE;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,EACtC,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,CAAC,EACb,qBAAqB,CAAC,EAAE,MAAM,CAC5B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EACxB,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,OAAO,CAC7C,mEA0BF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getValidateError.d.ts","sourceRoot":"","sources":["../../src/logic/getValidateError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"getValidateError.d.ts","sourceRoot":"","sources":["../../src/logic/getValidateError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAIhE,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG,EACR,IAAI,SAAa,GAChB,UAAU,GAAG,IAAI,CAYnB"}
|
|
@@ -178,6 +178,26 @@ function deepMerge(target, source) {
|
|
|
178
178
|
return target;
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
+
function extractFormValues(fieldsState, formValues) {
|
|
182
|
+
const values = {};
|
|
183
|
+
for (const key in fieldsState) {
|
|
184
|
+
if (fieldsState.hasOwnProperty(key)) {
|
|
185
|
+
const fieldState = fieldsState[key];
|
|
186
|
+
const fieldValue = formValues[key];
|
|
187
|
+
if (fieldState && isObject(fieldState) && fieldValue) {
|
|
188
|
+
const nestedFieldsState = extractFormValues(fieldState, fieldValue);
|
|
189
|
+
if (isObject(nestedFieldsState)) {
|
|
190
|
+
values[key] = nestedFieldsState;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else if (fieldsState[key]) {
|
|
194
|
+
values[key] = fieldValue;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return values;
|
|
199
|
+
}
|
|
200
|
+
|
|
181
201
|
var isKey = (value) => /^\w*$/.test(value);
|
|
182
202
|
|
|
183
203
|
var isUndefined = (val) => val === undefined;
|
|
@@ -321,46 +341,40 @@ var objectHasFunction = (data) => {
|
|
|
321
341
|
return false;
|
|
322
342
|
};
|
|
323
343
|
|
|
344
|
+
function isTraversable(value) {
|
|
345
|
+
return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));
|
|
346
|
+
}
|
|
324
347
|
function markFieldsDirty(data, fields = {}) {
|
|
325
|
-
const
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
}
|
|
333
|
-
else if (!isNullOrUndefined(data[key])) {
|
|
334
|
-
fields[key] = true;
|
|
335
|
-
}
|
|
348
|
+
for (const key in data) {
|
|
349
|
+
if (isTraversable(data[key])) {
|
|
350
|
+
fields[key] = Array.isArray(data[key]) ? [] : {};
|
|
351
|
+
markFieldsDirty(data[key], fields[key]);
|
|
352
|
+
}
|
|
353
|
+
else if (!isNullOrUndefined(data[key])) {
|
|
354
|
+
fields[key] = true;
|
|
336
355
|
}
|
|
337
356
|
}
|
|
338
357
|
return fields;
|
|
339
358
|
}
|
|
340
|
-
function
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
dirtyFieldsFromValues[key] = Array.isArray(data[key])
|
|
349
|
-
? markFieldsDirty(data[key], [])
|
|
350
|
-
: { ...markFieldsDirty(data[key]) };
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);
|
|
354
|
-
}
|
|
359
|
+
function getDirtyFields(data, formValues, dirtyFieldsFromValues) {
|
|
360
|
+
if (!dirtyFieldsFromValues) {
|
|
361
|
+
dirtyFieldsFromValues = markFieldsDirty(formValues);
|
|
362
|
+
}
|
|
363
|
+
for (const key in data) {
|
|
364
|
+
if (isTraversable(data[key])) {
|
|
365
|
+
if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {
|
|
366
|
+
dirtyFieldsFromValues[key] = markFieldsDirty(data[key], Array.isArray(data[key]) ? [] : {});
|
|
355
367
|
}
|
|
356
368
|
else {
|
|
357
|
-
|
|
369
|
+
getDirtyFields(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);
|
|
358
370
|
}
|
|
359
371
|
}
|
|
372
|
+
else {
|
|
373
|
+
dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);
|
|
374
|
+
}
|
|
360
375
|
}
|
|
361
376
|
return dirtyFieldsFromValues;
|
|
362
377
|
}
|
|
363
|
-
var getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));
|
|
364
378
|
|
|
365
379
|
var getEventValue = (event) => isObject(event) && event.target
|
|
366
380
|
? isCheckBoxInput(event.target)
|
|
@@ -1146,7 +1160,7 @@ function createFormControl(props = {}) {
|
|
|
1146
1160
|
const isFieldArrayRoot = _names.array.has(_f.name);
|
|
1147
1161
|
const isPromiseFunction = field._f && hasPromiseValidation(field._f);
|
|
1148
1162
|
if (isPromiseFunction && _proxyFormState.validatingFields) {
|
|
1149
|
-
_updateIsValidating([name], true);
|
|
1163
|
+
_updateIsValidating([_f.name], true);
|
|
1150
1164
|
}
|
|
1151
1165
|
// Combine disabled and readonly field names for validation skipping
|
|
1152
1166
|
const skipValidationFields = new Set([
|
|
@@ -1155,7 +1169,7 @@ function createFormControl(props = {}) {
|
|
|
1155
1169
|
]);
|
|
1156
1170
|
const fieldError = await validateField(field, skipValidationFields, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);
|
|
1157
1171
|
if (isPromiseFunction && _proxyFormState.validatingFields) {
|
|
1158
|
-
_updateIsValidating([name]);
|
|
1172
|
+
_updateIsValidating([_f.name]);
|
|
1159
1173
|
}
|
|
1160
1174
|
if (fieldError[_f.name]) {
|
|
1161
1175
|
context.valid = false;
|
|
@@ -1468,6 +1482,7 @@ function createFormControl(props = {}) {
|
|
|
1468
1482
|
}
|
|
1469
1483
|
if (isFieldValueUpdated) {
|
|
1470
1484
|
field._f.deps &&
|
|
1485
|
+
(!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&
|
|
1471
1486
|
trigger(field._f.deps);
|
|
1472
1487
|
shouldRenderByError(name, isValid, error, fieldState);
|
|
1473
1488
|
}
|
|
@@ -1515,10 +1530,13 @@ function createFormControl(props = {}) {
|
|
|
1515
1530
|
iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);
|
|
1516
1531
|
return validationResult;
|
|
1517
1532
|
};
|
|
1518
|
-
const getValues = (fieldNames) => {
|
|
1519
|
-
|
|
1533
|
+
const getValues = (fieldNames, config) => {
|
|
1534
|
+
let values = {
|
|
1520
1535
|
...(_state.mount ? _formValues : _defaultValues),
|
|
1521
1536
|
};
|
|
1537
|
+
if (config) {
|
|
1538
|
+
values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);
|
|
1539
|
+
}
|
|
1522
1540
|
return isUndefined(fieldNames)
|
|
1523
1541
|
? values
|
|
1524
1542
|
: isString(fieldNames)
|