@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/index.js CHANGED
@@ -402,6 +402,9 @@ var import_isEqual = __toESM(require("lodash/isEqual"));
402
402
  var import_set = __toESM(require("lodash/set"));
403
403
  var import_times = __toESM(require("lodash/times"));
404
404
  var import_transform = __toESM(require("lodash/transform"));
405
+ var import_merge = __toESM(require("lodash/merge"));
406
+ var import_flattenDeep = __toESM(require("lodash/flattenDeep"));
407
+ var import_uniq = __toESM(require("lodash/uniq"));
405
408
  var import_json_schema_merge_allof = __toESM(require("json-schema-merge-allof"));
406
409
 
407
410
  // src/getDiscriminatorFieldFromSchema.ts
@@ -608,13 +611,17 @@ function resolveAllReferences(schema, rootSchema, recurseList) {
608
611
  resolvedSchema = { ...refSchema, ...localSchema };
609
612
  }
610
613
  if (PROPERTIES_KEY in resolvedSchema) {
614
+ const childrenLists = [];
611
615
  const updatedProps = (0, import_transform.default)(
612
616
  resolvedSchema[PROPERTIES_KEY],
613
617
  (result, value, key) => {
614
- result[key] = resolveAllReferences(value, rootSchema, recurseList);
618
+ const childList = [...recurseList];
619
+ result[key] = resolveAllReferences(value, rootSchema, childList);
620
+ childrenLists.push(childList);
615
621
  },
616
622
  {}
617
623
  );
624
+ (0, import_merge.default)(recurseList, (0, import_uniq.default)((0, import_flattenDeep.default)(childrenLists)));
618
625
  resolvedSchema = { ...resolvedSchema, [PROPERTIES_KEY]: updatedProps };
619
626
  }
620
627
  if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
@@ -1181,35 +1188,39 @@ function computeDefaults(validator, rawSchema, {
1181
1188
  }
1182
1189
  switch (getSchemaType(schema)) {
1183
1190
  case "object": {
1184
- const objectDefaults = Object.keys(schema.properties || {}).reduce((acc, key) => {
1185
- const computedDefault = computeDefaults(validator, (0, import_get7.default)(schema, [PROPERTIES_KEY, key]), {
1186
- rootSchema,
1187
- _recurseList,
1188
- experimental_defaultFormStateBehavior,
1189
- includeUndefinedValues: includeUndefinedValues === true,
1190
- parentDefaults: (0, import_get7.default)(defaults, [key]),
1191
- rawFormData: (0, import_get7.default)(formData, [key]),
1192
- required: schema.required?.includes(key)
1193
- });
1194
- maybeAddDefaultToObject(
1195
- acc,
1196
- key,
1197
- computedDefault,
1198
- includeUndefinedValues,
1199
- required,
1200
- schema.required,
1201
- experimental_defaultFormStateBehavior
1202
- );
1203
- return acc;
1204
- }, {});
1205
- if (schema.additionalProperties) {
1206
- const additionalPropertiesSchema = isObject(schema.additionalProperties) ? schema.additionalProperties : {};
1191
+ const retrievedSchema = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator, schema, rootSchema, formData) : schema;
1192
+ const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
1193
+ (acc, key) => {
1194
+ const computedDefault = computeDefaults(validator, (0, import_get7.default)(retrievedSchema, [PROPERTIES_KEY, key]), {
1195
+ rootSchema,
1196
+ _recurseList,
1197
+ experimental_defaultFormStateBehavior,
1198
+ includeUndefinedValues: includeUndefinedValues === true,
1199
+ parentDefaults: (0, import_get7.default)(defaults, [key]),
1200
+ rawFormData: (0, import_get7.default)(formData, [key]),
1201
+ required: retrievedSchema.required?.includes(key)
1202
+ });
1203
+ maybeAddDefaultToObject(
1204
+ acc,
1205
+ key,
1206
+ computedDefault,
1207
+ includeUndefinedValues,
1208
+ required,
1209
+ retrievedSchema.required,
1210
+ experimental_defaultFormStateBehavior
1211
+ );
1212
+ return acc;
1213
+ },
1214
+ {}
1215
+ );
1216
+ if (retrievedSchema.additionalProperties) {
1217
+ const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
1207
1218
  const keys = /* @__PURE__ */ new Set();
1208
1219
  if (isObject(defaults)) {
1209
- Object.keys(defaults).filter((key) => !schema.properties || !schema.properties[key]).forEach((key) => keys.add(key));
1220
+ Object.keys(defaults).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => keys.add(key));
1210
1221
  }
1211
1222
  const formDataRequired = [];
1212
- Object.keys(formData).filter((key) => !schema.properties || !schema.properties[key]).forEach((key) => {
1223
+ Object.keys(formData).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => {
1213
1224
  keys.add(key);
1214
1225
  formDataRequired.push(key);
1215
1226
  });
@@ -1221,7 +1232,7 @@ function computeDefaults(validator, rawSchema, {
1221
1232
  includeUndefinedValues: includeUndefinedValues === true,
1222
1233
  parentDefaults: (0, import_get7.default)(defaults, [key]),
1223
1234
  rawFormData: (0, import_get7.default)(formData, [key]),
1224
- required: schema.required?.includes(key)
1235
+ required: retrievedSchema.required?.includes(key)
1225
1236
  });
1226
1237
  maybeAddDefaultToObject(
1227
1238
  objectDefaults,
@@ -1929,10 +1940,10 @@ function enumOptionsIndexForValue(value, allEnumOptions = [], multiple = false)
1929
1940
  }
1930
1941
 
1931
1942
  // src/enumOptionsSelectValue.ts
1932
- var import_lodash = require("lodash");
1943
+ var import_isNil = __toESM(require("lodash/isNil"));
1933
1944
  function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
1934
1945
  const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
1935
- if (!(0, import_lodash.isNil)(value)) {
1946
+ if (!(0, import_isNil.default)(value)) {
1936
1947
  const index = allEnumOptions.findIndex((opt) => value === opt.value);
1937
1948
  const all = allEnumOptions.map(({ value: val }) => val);
1938
1949
  const updated = selected.slice(0, index).concat(value, selected.slice(index));