@rjsf/utils 5.22.2 → 5.22.4

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/utils.esm.js CHANGED
@@ -1094,8 +1094,8 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
1094
1094
  }
1095
1095
  } else if (DEPENDENCIES_KEY in schema) {
1096
1096
  const defaultFormData = {
1097
- ...formData,
1098
- ...getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults)
1097
+ ...getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults),
1098
+ ...formData
1099
1099
  };
1100
1100
  const resolvedSchema = resolveDependencies(
1101
1101
  validator,
@@ -1252,10 +1252,13 @@ function getArrayDefaults(validator, rawSchema, {
1252
1252
  required
1253
1253
  } = {}, defaults) {
1254
1254
  const schema = rawSchema;
1255
- const neverPopulate = experimental_defaultFormStateBehavior?.arrayMinItems?.populate === "never";
1256
- const ignoreMinItemsFlagSet = experimental_defaultFormStateBehavior?.arrayMinItems?.populate === "requiredOnly";
1255
+ const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
1256
+ const { populate: arrayMinItemsPopulate, mergeExtraDefaults: arrayMergeExtraDefaults } = arrayMinItemsStateBehavior;
1257
+ const neverPopulate = arrayMinItemsPopulate === "never";
1258
+ const ignoreMinItemsFlagSet = arrayMinItemsPopulate === "requiredOnly";
1259
+ const isPopulateAll = arrayMinItemsPopulate === "all" || !neverPopulate && !ignoreMinItemsFlagSet;
1260
+ const computeSkipPopulate = arrayMinItemsStateBehavior?.computeSkipPopulate ?? (() => false);
1257
1261
  const isSkipEmptyDefaults = experimental_defaultFormStateBehavior?.emptyObjectFields === "skipEmptyDefaults";
1258
- const computeSkipPopulate = experimental_defaultFormStateBehavior?.arrayMinItems?.computeSkipPopulate ?? (() => false);
1259
1262
  const emptyDefault = isSkipEmptyDefaults ? void 0 : [];
1260
1263
  if (Array.isArray(defaults)) {
1261
1264
  defaults = defaults.map((item, idx) => {
@@ -1274,7 +1277,7 @@ function getArrayDefaults(validator, rawSchema, {
1274
1277
  if (neverPopulate) {
1275
1278
  defaults = rawFormData;
1276
1279
  } else {
1277
- defaults = rawFormData.map((item, idx) => {
1280
+ const itemDefaults = rawFormData.map((item, idx) => {
1278
1281
  return computeDefaults(validator, schemaItem, {
1279
1282
  rootSchema,
1280
1283
  _recurseList,
@@ -1284,6 +1287,8 @@ function getArrayDefaults(validator, rawSchema, {
1284
1287
  required
1285
1288
  });
1286
1289
  });
1290
+ const mergeExtraDefaults = (ignoreMinItemsFlagSet && required || isPopulateAll) && arrayMergeExtraDefaults;
1291
+ defaults = mergeDefaultsWithFormData(defaults, itemDefaults, mergeExtraDefaults);
1287
1292
  }
1288
1293
  }
1289
1294
  const hasConst = isObject(schema) && CONST_KEY in schema;