payload 0.15.12 → 0.16.1
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/.eslintrc.js +2 -1
- package/CHANGELOG.md +22 -0
- package/dist/admin/components/elements/ReactSelect/types.d.ts +1 -1
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +18 -0
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +158 -0
- package/dist/admin/components/forms/Form/{buildStateFromSchema.d.ts → buildStateFromSchema/index.d.ts} +4 -3
- package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +25 -0
- package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +18 -0
- package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +24 -0
- package/dist/admin/components/forms/Form/index.js +2 -6
- package/dist/admin/components/forms/RenderFields/index.js +1 -1
- package/dist/admin/components/forms/field-types/Array/Array.js +6 -3
- package/dist/admin/components/forms/field-types/Blocks/Blocks.js +4 -2
- package/dist/admin/components/forms/field-types/Relationship/index.js +3 -1
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.js +4 -2
- package/dist/admin/components/views/Account/index.js +2 -2
- package/dist/admin/components/views/Global/index.js +4 -4
- package/dist/admin/components/views/collections/Edit/index.js +7 -4
- package/dist/collections/tests/defaultValue.spec.d.ts +1 -0
- package/dist/collections/tests/defaultValue.spec.js +95 -0
- package/dist/fields/config/schema.js +16 -15
- package/dist/fields/config/types.d.ts +2 -0
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/getDefaultValue.d.ts +9 -0
- package/dist/fields/getDefaultValue.js +14 -0
- package/dist/fields/performFieldOperations.js +5 -1
- package/dist/fields/traverseFields.d.ts +1 -0
- package/dist/fields/traverseFields.js +13 -3
- package/dist/fields/validationPromise.d.ts +3 -1
- package/dist/fields/validationPromise.js +3 -2
- package/dist/fields/validations.js +3 -4
- package/dist/localization/middleware.js +1 -2
- package/dist/mongoose/buildSchema.js +1 -2
- package/dist/uploads/mimeTypeValidator.js +4 -1
- package/dist/uploads/mimeTypeValidator.spec.js +7 -1
- package/dist/uploads/uploadFile.js +3 -2
- package/dist/versions/tests/globals-graphql.spec.js +2 -2
- package/dist/webpack/getBaseConfig.js +1 -2
- package/docs/fields/array.mdx +1 -1
- package/docs/fields/blocks.mdx +1 -1
- package/docs/fields/checkbox.mdx +1 -1
- package/docs/fields/code.mdx +1 -1
- package/docs/fields/date.mdx +1 -1
- package/docs/fields/email.mdx +1 -1
- package/docs/fields/group.mdx +1 -1
- package/docs/fields/number.mdx +1 -1
- package/docs/fields/overview.mdx +35 -1
- package/docs/fields/point.mdx +1 -1
- package/docs/fields/radio.mdx +1 -1
- package/docs/fields/relationship.mdx +1 -1
- package/docs/fields/rich-text.mdx +1 -1
- package/docs/fields/select.mdx +1 -1
- package/docs/fields/text.mdx +1 -1
- package/docs/fields/textarea.mdx +1 -1
- package/docs/fields/upload.mdx +1 -1
- package/docs/queries/overview.mdx +1 -1
- package/docs/rest-api/overview.mdx +1 -1
- package/package.json +1 -1
- package/dist/admin/components/forms/Form/buildStateFromSchema.js +0 -140
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import ObjectID from 'bson-objectid';
|
|
2
|
-
import { fieldAffectsData, fieldIsPresentationalOnly, } from '../../../../fields/config/types';
|
|
3
|
-
const buildValidationPromise = async (fieldState, options) => {
|
|
4
|
-
const validatedFieldState = fieldState;
|
|
5
|
-
let validationResult = true;
|
|
6
|
-
if (typeof fieldState.validate === 'function') {
|
|
7
|
-
validationResult = await fieldState.validate(fieldState.value, options);
|
|
8
|
-
}
|
|
9
|
-
if (typeof validationResult === 'string') {
|
|
10
|
-
validatedFieldState.errorMessage = validationResult;
|
|
11
|
-
validatedFieldState.valid = false;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
validatedFieldState.valid = true;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const buildStateFromSchema = async (args) => {
|
|
18
|
-
const { fieldSchema, data: fullData = {}, user, id, operation, } = args;
|
|
19
|
-
if (fieldSchema) {
|
|
20
|
-
const validationPromises = [];
|
|
21
|
-
const structureFieldState = (field, passesCondition, data = {}) => {
|
|
22
|
-
var _a;
|
|
23
|
-
const value = typeof (data === null || data === void 0 ? void 0 : data[field.name]) !== 'undefined' ? data[field.name] : field.defaultValue;
|
|
24
|
-
const fieldState = {
|
|
25
|
-
value,
|
|
26
|
-
initialValue: value,
|
|
27
|
-
valid: true,
|
|
28
|
-
validate: field.validate,
|
|
29
|
-
condition: (_a = field.admin) === null || _a === void 0 ? void 0 : _a.condition,
|
|
30
|
-
passesCondition,
|
|
31
|
-
};
|
|
32
|
-
validationPromises.push(buildValidationPromise(fieldState, {
|
|
33
|
-
...field,
|
|
34
|
-
fullData,
|
|
35
|
-
user,
|
|
36
|
-
siblingData: data,
|
|
37
|
-
id,
|
|
38
|
-
operation,
|
|
39
|
-
}));
|
|
40
|
-
return fieldState;
|
|
41
|
-
};
|
|
42
|
-
const iterateFields = (fields, data, parentPassesCondition, path = '') => fields.reduce((state, field) => {
|
|
43
|
-
var _a, _b;
|
|
44
|
-
let initialData = data;
|
|
45
|
-
if (!fieldIsPresentationalOnly(field) && !((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.disabled)) {
|
|
46
|
-
if (fieldAffectsData(field) && field.defaultValue && typeof (initialData === null || initialData === void 0 ? void 0 : initialData[field.name]) === 'undefined') {
|
|
47
|
-
initialData = { [field.name]: field.defaultValue };
|
|
48
|
-
}
|
|
49
|
-
const passesCondition = Boolean((((_b = field === null || field === void 0 ? void 0 : field.admin) === null || _b === void 0 ? void 0 : _b.condition) ? field.admin.condition(fullData || {}, initialData || {}) : true) && parentPassesCondition);
|
|
50
|
-
if (fieldAffectsData(field)) {
|
|
51
|
-
if (field.type === 'relationship' && (initialData === null || initialData === void 0 ? void 0 : initialData[field.name]) === null) {
|
|
52
|
-
initialData[field.name] = 'null';
|
|
53
|
-
}
|
|
54
|
-
if (field.type === 'array' || field.type === 'blocks') {
|
|
55
|
-
if (Array.isArray(initialData === null || initialData === void 0 ? void 0 : initialData[field.name])) {
|
|
56
|
-
const rows = initialData[field.name];
|
|
57
|
-
if (field.type === 'array') {
|
|
58
|
-
return {
|
|
59
|
-
...state,
|
|
60
|
-
...rows.reduce((rowState, row, i) => {
|
|
61
|
-
const rowPath = `${path}${field.name}.${i}.`;
|
|
62
|
-
return {
|
|
63
|
-
...rowState,
|
|
64
|
-
[`${rowPath}id`]: {
|
|
65
|
-
value: row.id,
|
|
66
|
-
initialValue: row.id || new ObjectID().toHexString(),
|
|
67
|
-
valid: true,
|
|
68
|
-
},
|
|
69
|
-
...iterateFields(field.fields, row, passesCondition, rowPath),
|
|
70
|
-
};
|
|
71
|
-
}, {}),
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
if (field.type === 'blocks') {
|
|
75
|
-
return {
|
|
76
|
-
...state,
|
|
77
|
-
...rows.reduce((rowState, row, i) => {
|
|
78
|
-
const block = field.blocks.find((blockType) => blockType.slug === row.blockType);
|
|
79
|
-
const rowPath = `${path}${field.name}.${i}.`;
|
|
80
|
-
return {
|
|
81
|
-
...rowState,
|
|
82
|
-
[`${rowPath}blockType`]: {
|
|
83
|
-
value: row.blockType,
|
|
84
|
-
initialValue: row.blockType,
|
|
85
|
-
valid: true,
|
|
86
|
-
},
|
|
87
|
-
[`${rowPath}blockName`]: {
|
|
88
|
-
value: row.blockName,
|
|
89
|
-
initialValue: row.blockName,
|
|
90
|
-
valid: true,
|
|
91
|
-
},
|
|
92
|
-
[`${rowPath}id`]: {
|
|
93
|
-
value: row.id,
|
|
94
|
-
initialValue: row.id || new ObjectID().toHexString(),
|
|
95
|
-
valid: true,
|
|
96
|
-
},
|
|
97
|
-
...((block === null || block === void 0 ? void 0 : block.fields) ? iterateFields(block.fields, row, passesCondition, rowPath) : {}),
|
|
98
|
-
};
|
|
99
|
-
}, {}),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return state;
|
|
104
|
-
}
|
|
105
|
-
// Handle non-array-based nested fields (group, etc)
|
|
106
|
-
if (field.type === 'group') {
|
|
107
|
-
const subFieldData = initialData === null || initialData === void 0 ? void 0 : initialData[field.name];
|
|
108
|
-
return {
|
|
109
|
-
...state,
|
|
110
|
-
...iterateFields(field.fields, subFieldData, passesCondition, `${path}${field.name}.`),
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
return {
|
|
114
|
-
...state,
|
|
115
|
-
[`${path}${field.name}`]: structureFieldState(field, passesCondition, data),
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
// Handle field types that do not use names (row, etc)
|
|
119
|
-
if (field.type === 'row') {
|
|
120
|
-
return {
|
|
121
|
-
...state,
|
|
122
|
-
...iterateFields(field.fields, data, passesCondition, path),
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
const namedField = field;
|
|
126
|
-
// Handle normal fields
|
|
127
|
-
return {
|
|
128
|
-
...state,
|
|
129
|
-
[`${path}${namedField.name}`]: structureFieldState(field, passesCondition, data),
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
return state;
|
|
133
|
-
}, {});
|
|
134
|
-
const resultingState = iterateFields(fieldSchema, fullData, true);
|
|
135
|
-
await Promise.all(validationPromises);
|
|
136
|
-
return resultingState;
|
|
137
|
-
}
|
|
138
|
-
return {};
|
|
139
|
-
};
|
|
140
|
-
export default buildStateFromSchema;
|