Skip to content

Commit

Permalink
fix: handles empty indices within array field data
Browse files Browse the repository at this point in the history
  • Loading branch information
jmikrut committed Mar 24, 2021
1 parent 50b9937 commit c4a66c2
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 7 deletions.
1 change: 0 additions & 1 deletion demo/collections/NestedArrays.ts
Expand Up @@ -57,7 +57,6 @@ const NestedArray: PayloadCollectionConfig = {
name: 'grandchildIdentifier',
label: 'Grandchild Identifier',
type: 'text',
required: true,
},
],
},
Expand Down
2 changes: 1 addition & 1 deletion src/admin/components/forms/Form/reduceFieldsToValues.ts
Expand Up @@ -5,7 +5,7 @@ const reduceFieldsToValues = (fields: Fields, flatten?: boolean): Data => {
const data = {};

Object.keys(fields).forEach((key) => {
if (!fields[key].disableFormData && fields[key].value !== undefined) {
if (!fields[key].disableFormData) {
if (fields[key].stringify) {
data[key] = JSON.stringify(fields[key].value);
} else {
Expand Down
6 changes: 5 additions & 1 deletion src/fields/config/sanitize.ts
Expand Up @@ -20,7 +20,11 @@ const sanitizeFields = (fields, validRelationships) => {

if (typeof field.validate === 'undefined') {
const defaultValidate = validations[field.type];
field.validate = (val) => defaultValidate(val, field);
if (defaultValidate) {
field.validate = (val) => defaultValidate(val, field);
} else {
field.validate = () => true;
}
}

if (!field.hooks) field.hooks = {};
Expand Down
12 changes: 8 additions & 4 deletions src/fields/traverseFields.ts
Expand Up @@ -170,16 +170,20 @@ const traverseFields = (args: Arguments): void => {
});
} else if (fieldIsArrayType(field)) {
if (Array.isArray(data[field.name])) {
(data[field.name] as Record<string, unknown>[]).forEach((rowData, i) => {
for (let i = 0; i < data[field.name].length; i += 1) {
if (typeof (data[field.name][i]) === 'undefined') {
data[field.name][i] = {};
}

traverseFields({
...args,
fields: field.fields,
data: rowData,
data: data[field.name][i] || {},
originalDoc: originalDoc?.[field.name]?.[i],
docWithLocales: docWithLocales?.[field.name]?.[i],
path: `${path}${field.name}.${i}.`,
});
});
}
}
} else {
traverseFields({
Expand All @@ -202,7 +206,7 @@ const traverseFields = (args: Arguments): void => {
traverseFields({
...args,
fields: block.fields,
data: rowData,
data: rowData || {},
originalDoc: originalDoc?.[field.name]?.[i],
docWithLocales: docWithLocales?.[field.name]?.[i],
path: `${path}${field.name}.${i}.`,
Expand Down

0 comments on commit c4a66c2

Please sign in to comment.