@rjsf/utils 5.14.2 → 5.15.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.
Files changed (42) hide show
  1. package/dist/index.js +40 -29
  2. package/dist/index.js.map +3 -3
  3. package/dist/utils.esm.js +39 -28
  4. package/dist/utils.esm.js.map +2 -2
  5. package/dist/utils.umd.js +40 -32
  6. package/lib/createErrorHandler.js +2 -2
  7. package/lib/createErrorHandler.js.map +1 -1
  8. package/lib/enumOptionsSelectValue.js +1 -1
  9. package/lib/enumOptionsSelectValue.js.map +1 -1
  10. package/lib/findSchemaDefinition.js +1 -1
  11. package/lib/findSchemaDefinition.js.map +1 -1
  12. package/lib/getInputProps.js +4 -1
  13. package/lib/getInputProps.js.map +1 -1
  14. package/lib/getSubmitButtonOptions.js +1 -1
  15. package/lib/getSubmitButtonOptions.js.map +1 -1
  16. package/lib/getUiOptions.js +3 -3
  17. package/lib/getUiOptions.js.map +1 -1
  18. package/lib/getWidget.js +2 -4
  19. package/lib/getWidget.js.map +1 -1
  20. package/lib/parser/ParserValidator.js +1 -1
  21. package/lib/parser/ParserValidator.js.map +1 -1
  22. package/lib/schema/getDefaultFormState.js +19 -13
  23. package/lib/schema/getDefaultFormState.js.map +1 -1
  24. package/lib/schema/getMatchingOption.js +1 -2
  25. package/lib/schema/getMatchingOption.js.map +1 -1
  26. package/lib/schema/retrieveSchema.js +33 -18
  27. package/lib/schema/retrieveSchema.js.map +1 -1
  28. package/lib/schema/sanitizeDataForNewSchema.js +5 -1
  29. package/lib/schema/sanitizeDataForNewSchema.js.map +1 -1
  30. package/lib/schema/toPathSchema.js +4 -1
  31. package/lib/schema/toPathSchema.js.map +1 -1
  32. package/lib/tsconfig.tsbuildinfo +1 -1
  33. package/lib/types.d.ts +4 -0
  34. package/lib/unwrapErrorHandler.js +5 -2
  35. package/lib/unwrapErrorHandler.js.map +1 -1
  36. package/lib/withIdRefPrefix.js +1 -1
  37. package/lib/withIdRefPrefix.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/enumOptionsSelectValue.ts +1 -1
  40. package/src/schema/getDefaultFormState.ts +49 -29
  41. package/src/schema/retrieveSchema.ts +8 -1
  42. package/src/types.ts +4 -0
package/dist/utils.esm.js CHANGED
@@ -268,6 +268,9 @@ import isEqual from "lodash/isEqual";
268
268
  import set from "lodash/set";
269
269
  import times from "lodash/times";
270
270
  import transform from "lodash/transform";
271
+ import merge from "lodash/merge";
272
+ import flattenDeep from "lodash/flattenDeep";
273
+ import uniq from "lodash/uniq";
271
274
  import mergeAllOf from "json-schema-merge-allof";
272
275
 
273
276
  // src/getDiscriminatorFieldFromSchema.ts
@@ -474,13 +477,17 @@ function resolveAllReferences(schema, rootSchema, recurseList) {
474
477
  resolvedSchema = { ...refSchema, ...localSchema };
475
478
  }
476
479
  if (PROPERTIES_KEY in resolvedSchema) {
480
+ const childrenLists = [];
477
481
  const updatedProps = transform(
478
482
  resolvedSchema[PROPERTIES_KEY],
479
483
  (result, value, key) => {
480
- result[key] = resolveAllReferences(value, rootSchema, recurseList);
484
+ const childList = [...recurseList];
485
+ result[key] = resolveAllReferences(value, rootSchema, childList);
486
+ childrenLists.push(childList);
481
487
  },
482
488
  {}
483
489
  );
490
+ merge(recurseList, uniq(flattenDeep(childrenLists)));
484
491
  resolvedSchema = { ...resolvedSchema, [PROPERTIES_KEY]: updatedProps };
485
492
  }
486
493
  if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
@@ -1047,35 +1054,39 @@ function computeDefaults(validator, rawSchema, {
1047
1054
  }
1048
1055
  switch (getSchemaType(schema)) {
1049
1056
  case "object": {
1050
- const objectDefaults = Object.keys(schema.properties || {}).reduce((acc, key) => {
1051
- const computedDefault = computeDefaults(validator, get7(schema, [PROPERTIES_KEY, key]), {
1052
- rootSchema,
1053
- _recurseList,
1054
- experimental_defaultFormStateBehavior,
1055
- includeUndefinedValues: includeUndefinedValues === true,
1056
- parentDefaults: get7(defaults, [key]),
1057
- rawFormData: get7(formData, [key]),
1058
- required: schema.required?.includes(key)
1059
- });
1060
- maybeAddDefaultToObject(
1061
- acc,
1062
- key,
1063
- computedDefault,
1064
- includeUndefinedValues,
1065
- required,
1066
- schema.required,
1067
- experimental_defaultFormStateBehavior
1068
- );
1069
- return acc;
1070
- }, {});
1071
- if (schema.additionalProperties) {
1072
- const additionalPropertiesSchema = isObject(schema.additionalProperties) ? schema.additionalProperties : {};
1057
+ const retrievedSchema = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator, schema, rootSchema, formData) : schema;
1058
+ const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
1059
+ (acc, key) => {
1060
+ const computedDefault = computeDefaults(validator, get7(retrievedSchema, [PROPERTIES_KEY, key]), {
1061
+ rootSchema,
1062
+ _recurseList,
1063
+ experimental_defaultFormStateBehavior,
1064
+ includeUndefinedValues: includeUndefinedValues === true,
1065
+ parentDefaults: get7(defaults, [key]),
1066
+ rawFormData: get7(formData, [key]),
1067
+ required: retrievedSchema.required?.includes(key)
1068
+ });
1069
+ maybeAddDefaultToObject(
1070
+ acc,
1071
+ key,
1072
+ computedDefault,
1073
+ includeUndefinedValues,
1074
+ required,
1075
+ retrievedSchema.required,
1076
+ experimental_defaultFormStateBehavior
1077
+ );
1078
+ return acc;
1079
+ },
1080
+ {}
1081
+ );
1082
+ if (retrievedSchema.additionalProperties) {
1083
+ const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
1073
1084
  const keys = /* @__PURE__ */ new Set();
1074
1085
  if (isObject(defaults)) {
1075
- Object.keys(defaults).filter((key) => !schema.properties || !schema.properties[key]).forEach((key) => keys.add(key));
1086
+ Object.keys(defaults).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => keys.add(key));
1076
1087
  }
1077
1088
  const formDataRequired = [];
1078
- Object.keys(formData).filter((key) => !schema.properties || !schema.properties[key]).forEach((key) => {
1089
+ Object.keys(formData).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => {
1079
1090
  keys.add(key);
1080
1091
  formDataRequired.push(key);
1081
1092
  });
@@ -1087,7 +1098,7 @@ function computeDefaults(validator, rawSchema, {
1087
1098
  includeUndefinedValues: includeUndefinedValues === true,
1088
1099
  parentDefaults: get7(defaults, [key]),
1089
1100
  rawFormData: get7(formData, [key]),
1090
- required: schema.required?.includes(key)
1101
+ required: retrievedSchema.required?.includes(key)
1091
1102
  });
1092
1103
  maybeAddDefaultToObject(
1093
1104
  objectDefaults,
@@ -1795,7 +1806,7 @@ function enumOptionsIndexForValue(value, allEnumOptions = [], multiple = false)
1795
1806
  }
1796
1807
 
1797
1808
  // src/enumOptionsSelectValue.ts
1798
- import { isNil } from "lodash";
1809
+ import isNil from "lodash/isNil";
1799
1810
  function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
1800
1811
  const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
1801
1812
  if (!isNil(value)) {