payload 0.15.13 → 0.16.2

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 (131) hide show
  1. package/.eslintrc.js +2 -1
  2. package/CHANGELOG.md +33 -0
  3. package/dist/admin/components/elements/ReactSelect/types.d.ts +1 -1
  4. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +18 -0
  5. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +158 -0
  6. package/dist/admin/components/forms/Form/{buildStateFromSchema.d.ts → buildStateFromSchema/index.d.ts} +4 -3
  7. package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +25 -0
  8. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +18 -0
  9. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +24 -0
  10. package/dist/admin/components/forms/Form/index.js +2 -6
  11. package/dist/admin/components/forms/RenderFields/index.js +1 -1
  12. package/dist/admin/components/forms/field-types/Array/Array.js +4 -2
  13. package/dist/admin/components/forms/field-types/Blocks/Blocks.js +4 -2
  14. package/dist/admin/components/forms/field-types/Relationship/index.js +3 -1
  15. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.js +4 -2
  16. package/dist/admin/components/views/Account/index.js +2 -2
  17. package/dist/admin/components/views/Global/index.js +4 -4
  18. package/dist/admin/components/views/collections/Edit/index.js +7 -4
  19. package/dist/auth/operations/login.js +6 -8
  20. package/dist/collections/config/types.d.ts +1 -0
  21. package/dist/collections/operations/create.js +21 -20
  22. package/dist/collections/operations/delete.js +6 -7
  23. package/dist/collections/operations/find.js +8 -9
  24. package/dist/collections/operations/findByID.js +7 -9
  25. package/dist/collections/operations/findVersionByID.js +7 -9
  26. package/dist/collections/operations/findVersions.js +8 -10
  27. package/dist/collections/operations/restoreVersion.js +9 -13
  28. package/dist/collections/operations/update.js +26 -33
  29. package/dist/collections/tests/defaultValue.spec.d.ts +1 -0
  30. package/dist/collections/tests/defaultValue.spec.js +95 -0
  31. package/dist/collections/tests/hooks.spec.js +5 -1
  32. package/dist/fields/config/sanitize.d.ts +2 -1
  33. package/dist/fields/config/sanitize.js +5 -5
  34. package/dist/fields/config/sanitize.spec.js +30 -19
  35. package/dist/fields/config/schema.js +16 -15
  36. package/dist/fields/config/types.d.ts +8 -4
  37. package/dist/fields/config/types.js +6 -2
  38. package/dist/fields/getDefaultValue.d.ts +9 -0
  39. package/dist/fields/getDefaultValue.js +14 -0
  40. package/dist/fields/hooks/afterChange/index.d.ts +12 -0
  41. package/dist/fields/hooks/afterChange/index.js +26 -0
  42. package/dist/fields/hooks/afterChange/promise.d.ts +14 -0
  43. package/dist/fields/hooks/afterChange/promise.js +104 -0
  44. package/dist/fields/hooks/afterChange/traverseFields.d.ts +14 -0
  45. package/dist/fields/hooks/afterChange/traverseFields.js +20 -0
  46. package/dist/fields/hooks/afterRead/index.d.ts +16 -0
  47. package/dist/fields/hooks/afterRead/index.js +40 -0
  48. package/dist/fields/hooks/afterRead/promise.d.ts +18 -0
  49. package/dist/fields/hooks/afterRead/promise.js +225 -0
  50. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +13 -0
  51. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +84 -0
  52. package/dist/fields/hooks/afterRead/traverseFields.d.ts +18 -0
  53. package/dist/fields/hooks/afterRead/traverseFields.js +24 -0
  54. package/dist/fields/hooks/beforeChange/index.d.ts +16 -0
  55. package/dist/fields/hooks/beforeChange/index.js +40 -0
  56. package/dist/fields/hooks/beforeChange/promise.d.ts +25 -0
  57. package/dist/fields/hooks/beforeChange/promise.js +236 -0
  58. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +25 -0
  59. package/dist/fields/hooks/beforeChange/traverseFields.js +27 -0
  60. package/dist/fields/hooks/beforeValidate/index.d.ts +14 -0
  61. package/dist/fields/hooks/beforeValidate/index.js +28 -0
  62. package/dist/fields/hooks/beforeValidate/promise.d.ts +16 -0
  63. package/dist/fields/hooks/beforeValidate/promise.js +229 -0
  64. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +16 -0
  65. package/dist/fields/hooks/beforeValidate/traverseFields.js +22 -0
  66. package/dist/fields/richText/populate.d.ts +1 -3
  67. package/dist/fields/richText/populate.js +3 -3
  68. package/dist/fields/richText/recurseNestedFields.d.ts +1 -3
  69. package/dist/fields/richText/recurseNestedFields.js +7 -15
  70. package/dist/fields/richText/relationshipPromise.d.ts +6 -9
  71. package/dist/fields/richText/relationshipPromise.js +11 -15
  72. package/dist/fields/validations.js +3 -4
  73. package/dist/globals/config/types.d.ts +1 -0
  74. package/dist/globals/operations/findOne.js +11 -11
  75. package/dist/globals/operations/findVersionByID.js +5 -8
  76. package/dist/globals/operations/findVersions.js +7 -9
  77. package/dist/globals/operations/restoreVersion.js +12 -14
  78. package/dist/globals/operations/update.js +29 -33
  79. package/dist/graphql/schema/buildObjectType.js +3 -5
  80. package/dist/index.d.ts +0 -2
  81. package/dist/index.js +1 -3
  82. package/dist/localization/middleware.js +1 -2
  83. package/dist/mongoose/buildSchema.js +1 -2
  84. package/dist/uploads/mimeTypeValidator.js +4 -1
  85. package/dist/uploads/mimeTypeValidator.spec.js +7 -1
  86. package/dist/uploads/uploadFile.js +3 -2
  87. package/dist/versions/drafts/saveCollectionDraft.d.ts +1 -1
  88. package/dist/versions/drafts/saveCollectionDraft.js +1 -1
  89. package/dist/versions/ensurePublishedCollectionVersion.js +5 -7
  90. package/dist/versions/ensurePublishedGlobalVersion.js +5 -6
  91. package/dist/versions/saveCollectionVersion.js +6 -7
  92. package/dist/versions/saveGlobalVersion.js +7 -7
  93. package/dist/versions/tests/globals-graphql.spec.js +2 -2
  94. package/dist/webpack/getBaseConfig.js +1 -2
  95. package/docs/fields/array.mdx +1 -1
  96. package/docs/fields/blocks.mdx +1 -1
  97. package/docs/fields/checkbox.mdx +1 -1
  98. package/docs/fields/code.mdx +1 -1
  99. package/docs/fields/date.mdx +1 -1
  100. package/docs/fields/email.mdx +1 -1
  101. package/docs/fields/group.mdx +1 -1
  102. package/docs/fields/number.mdx +1 -1
  103. package/docs/fields/overview.mdx +37 -2
  104. package/docs/fields/point.mdx +1 -1
  105. package/docs/fields/radio.mdx +1 -1
  106. package/docs/fields/relationship.mdx +1 -1
  107. package/docs/fields/rich-text.mdx +1 -1
  108. package/docs/fields/select.mdx +1 -1
  109. package/docs/fields/text.mdx +1 -1
  110. package/docs/fields/textarea.mdx +1 -1
  111. package/docs/fields/upload.mdx +1 -1
  112. package/docs/hooks/collections.mdx +1 -0
  113. package/docs/hooks/fields.mdx +4 -3
  114. package/docs/hooks/globals.mdx +1 -0
  115. package/docs/production/preventing-abuse.mdx +16 -5
  116. package/docs/queries/overview.mdx +1 -1
  117. package/docs/rest-api/overview.mdx +1 -1
  118. package/package.json +4 -1
  119. package/dist/admin/components/forms/Form/buildStateFromSchema.js +0 -140
  120. package/dist/fields/accessPromise.d.ts +0 -22
  121. package/dist/fields/accessPromise.js +0 -39
  122. package/dist/fields/hookPromise.d.ts +0 -16
  123. package/dist/fields/hookPromise.js +0 -53
  124. package/dist/fields/performFieldOperations.d.ts +0 -25
  125. package/dist/fields/performFieldOperations.js +0 -86
  126. package/dist/fields/relationshipPopulationPromise.d.ts +0 -15
  127. package/dist/fields/relationshipPopulationPromise.js +0 -86
  128. package/dist/fields/traverseFields.d.ts +0 -40
  129. package/dist/fields/traverseFields.js +0 -329
  130. package/dist/fields/validationPromise.d.ts +0 -22
  131. package/dist/fields/validationPromise.js +0 -34
package/.eslintrc.js CHANGED
@@ -55,13 +55,14 @@ module.exports = {
55
55
  },
56
56
  ],
57
57
  rules: {
58
- 'no-sparse-arrays': 'off',
59
58
  'import/no-extraneous-dependencies': ['error', { packageDir: './' }],
60
59
  'react/jsx-filename-extension': [2, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],
61
60
  'import/prefer-default-export': 'off',
62
61
  'react/prop-types': 'off',
63
62
  'react/require-default-props': 'off',
64
63
  'react/no-unused-prop-types': 'off',
64
+ 'no-console': 'warn',
65
+ 'no-sparse-arrays': 'off',
65
66
  'no-underscore-dangle': 'off',
66
67
  'no-use-before-define': 'off',
67
68
  'arrow-body-style': 0,
package/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
1
+ ## [0.16.2](https://github.com/payloadcms/payload/compare/v0.16.1...v0.16.2) (2022-05-02)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * checkbox defaultValues and more typing of sanitize ([#550](https://github.com/payloadcms/payload/issues/550)) ([1e4a68f](https://github.com/payloadcms/payload/commit/1e4a68f76eeaab58ced0cc500223a1b86d66668e))
7
+
8
+
9
+ ### Features
10
+
11
+ * exposes findMany argument to afterRead hooks to discern between find and findByID ([b3832e2](https://github.com/payloadcms/payload/commit/b3832e21c91fa5d52067cfc24a0b4f8aa6e178ec))
12
+ * optimizes field operations ([18489fa](https://github.com/payloadcms/payload/commit/18489facebe5d7b0abc87dcc30fae28510b6bb19))
13
+
14
+ ## [0.16.1](https://github.com/payloadcms/payload/compare/v0.16.0...v0.16.1) (2022-04-29)
15
+
16
+
17
+ ### Features
18
+
19
+ * exposes payload within server-side validation args ([e46b942](https://github.com/payloadcms/payload/commit/e46b94225957bba7758a0a2c22776c44a2d2d633))
20
+
21
+ # [0.16.0](https://github.com/payloadcms/payload/compare/v0.15.13...v0.16.0) (2022-04-29)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * file upload safely handles missing mimeTypes ([#540](https://github.com/payloadcms/payload/issues/540)) ([bf48fdf](https://github.com/payloadcms/payload/commit/bf48fdf18961a2e57bcc5aae73de4c569e97e42b))
27
+
28
+
29
+ ### Features
30
+
31
+ * allow subfield readOnly to override parent readOnly ([#546](https://github.com/payloadcms/payload/issues/546)) ([834f4c2](https://github.com/payloadcms/payload/commit/834f4c270020bf32852c00a3abbb908853689006))
32
+ * allows defaultValue to accept async function to calculate defaultValue ([#547](https://github.com/payloadcms/payload/issues/547)) ([e297eb9](https://github.com/payloadcms/payload/commit/e297eb90907d933524d220255d5f8dc4276358c5))
33
+
1
34
  ## [0.15.13](https://github.com/payloadcms/payload/compare/v0.15.12...v0.15.13) (2022-04-26)
2
35
 
3
36
  ## [0.15.12](https://github.com/payloadcms/payload/compare/v0.15.11...v0.15.12) (2022-04-26)
@@ -2,7 +2,7 @@ import { OptionsType, GroupedOptionsType } from 'react-select';
2
2
  export declare type Options = OptionsType<Value> | GroupedOptionsType<Value>;
3
3
  export declare type Value = {
4
4
  label: string;
5
- value: string;
5
+ value: string | null;
6
6
  options?: Options;
7
7
  };
8
8
  export declare type Props = {
@@ -0,0 +1,18 @@
1
+ import { User } from '../../../../../auth';
2
+ import { NonPresentationalField } from '../../../../../fields/config/types';
3
+ import { Fields, Data } from '../types';
4
+ declare type Args = {
5
+ field: NonPresentationalField;
6
+ locale: string;
7
+ user: User;
8
+ state: Fields;
9
+ path: string;
10
+ passesCondition: boolean;
11
+ fieldPromises: Promise<void>[];
12
+ id: string | number;
13
+ operation: 'create' | 'update';
14
+ data: Data;
15
+ fullData: Data;
16
+ };
17
+ export declare const addFieldStatePromise: ({ field, locale, user, state, path, passesCondition, fullData, data, fieldPromises, id, operation, }: Args) => Promise<void>;
18
+ export {};
@@ -0,0 +1,158 @@
1
+ /* eslint-disable no-param-reassign */
2
+ import ObjectID from 'bson-objectid';
3
+ import { fieldAffectsData, fieldHasSubFields } from '../../../../../fields/config/types';
4
+ import getValueWithDefault from '../../../../../fields/getDefaultValue';
5
+ import { iterateFields } from './iterateFields';
6
+ export const addFieldStatePromise = async ({ field, locale, user, state, path, passesCondition, fullData, data, fieldPromises, id, operation, }) => {
7
+ var _a;
8
+ if (fieldAffectsData(field)) {
9
+ const fieldState = {
10
+ valid: true,
11
+ value: undefined,
12
+ initialValue: undefined,
13
+ validate: field.validate,
14
+ condition: (_a = field.admin) === null || _a === void 0 ? void 0 : _a.condition,
15
+ passesCondition,
16
+ };
17
+ const valueWithDefault = await getValueWithDefault({ value: data[field.name], defaultValue: field.defaultValue, locale, user });
18
+ data[field.name] = valueWithDefault;
19
+ let validationResult = true;
20
+ if (typeof fieldState.validate === 'function') {
21
+ validationResult = await fieldState.validate(data[field.name], {
22
+ ...field,
23
+ data: fullData,
24
+ user,
25
+ siblingData: data,
26
+ id,
27
+ operation,
28
+ });
29
+ }
30
+ if (typeof validationResult === 'string') {
31
+ fieldState.errorMessage = validationResult;
32
+ fieldState.valid = false;
33
+ }
34
+ else {
35
+ fieldState.valid = true;
36
+ }
37
+ switch (field.type) {
38
+ case 'array': {
39
+ const arrayValue = Array.isArray(valueWithDefault) ? valueWithDefault : [];
40
+ arrayValue.forEach((row, i) => {
41
+ const rowPath = `${path}${field.name}.${i}.`;
42
+ state[`${rowPath}id`] = {
43
+ value: row.id,
44
+ initialValue: row.id || new ObjectID().toHexString(),
45
+ valid: true,
46
+ };
47
+ iterateFields({
48
+ state,
49
+ fields: field.fields,
50
+ data: row,
51
+ parentPassesCondition: passesCondition,
52
+ path: rowPath,
53
+ user,
54
+ fieldPromises,
55
+ fullData,
56
+ id,
57
+ locale,
58
+ operation,
59
+ });
60
+ });
61
+ // Add values to field state
62
+ fieldState.value = arrayValue.length;
63
+ fieldState.initialValue = arrayValue.length;
64
+ if (arrayValue.length > 0) {
65
+ fieldState.disableFormData = true;
66
+ }
67
+ // Add field to state
68
+ state[`${path}${field.name}`] = fieldState;
69
+ break;
70
+ }
71
+ case 'blocks': {
72
+ const blocksValue = Array.isArray(valueWithDefault) ? valueWithDefault : [];
73
+ blocksValue.forEach((row, i) => {
74
+ const block = field.blocks.find((blockType) => blockType.slug === row.blockType);
75
+ const rowPath = `${path}${field.name}.${i}.`;
76
+ if (block) {
77
+ state[`${rowPath}id`] = {
78
+ value: row.id,
79
+ initialValue: row.id || new ObjectID().toHexString(),
80
+ valid: true,
81
+ };
82
+ state[`${rowPath}blockType`] = {
83
+ value: row.blockType,
84
+ initialValue: row.blockType,
85
+ valid: true,
86
+ };
87
+ state[`${rowPath}blockName`] = {
88
+ value: row.blockName,
89
+ initialValue: row.blockName,
90
+ valid: true,
91
+ };
92
+ iterateFields({
93
+ state,
94
+ fields: block.fields,
95
+ data: row,
96
+ fullData,
97
+ parentPassesCondition: passesCondition,
98
+ path: rowPath,
99
+ user,
100
+ locale,
101
+ operation,
102
+ fieldPromises,
103
+ id,
104
+ });
105
+ }
106
+ });
107
+ // Add values to field state
108
+ fieldState.value = blocksValue.length;
109
+ fieldState.initialValue = blocksValue.length;
110
+ if (blocksValue.length > 0) {
111
+ fieldState.disableFormData = true;
112
+ }
113
+ // Add field to state
114
+ state[`${path}${field.name}`] = fieldState;
115
+ break;
116
+ }
117
+ case 'group': {
118
+ iterateFields({
119
+ state,
120
+ id,
121
+ operation,
122
+ fieldPromises,
123
+ fields: field.fields,
124
+ data: data === null || data === void 0 ? void 0 : data[field.name],
125
+ fullData,
126
+ parentPassesCondition: passesCondition,
127
+ path: `${path}${field.name}.`,
128
+ locale,
129
+ user,
130
+ });
131
+ break;
132
+ }
133
+ default: {
134
+ fieldState.value = valueWithDefault;
135
+ fieldState.initialValue = valueWithDefault;
136
+ // Add field to state
137
+ state[`${path}${field.name}`] = fieldState;
138
+ break;
139
+ }
140
+ }
141
+ }
142
+ else if (fieldHasSubFields(field)) {
143
+ // Handle field types that do not use names (row, etc)
144
+ iterateFields({
145
+ state,
146
+ fields: field.fields,
147
+ data,
148
+ parentPassesCondition: passesCondition,
149
+ path,
150
+ user,
151
+ fieldPromises,
152
+ fullData,
153
+ id,
154
+ locale,
155
+ operation,
156
+ });
157
+ }
158
+ };
@@ -1,6 +1,6 @@
1
- import { User } from '../../../../auth';
2
- import { Field as FieldSchema } from '../../../../fields/config/types';
3
- import { Fields, Data } from './types';
1
+ import { User } from '../../../../../auth';
2
+ import { Field as FieldSchema } from '../../../../../fields/config/types';
3
+ import { Fields, Data } from '../types';
4
4
  declare type Args = {
5
5
  fieldSchema: FieldSchema[];
6
6
  data?: Data;
@@ -8,6 +8,7 @@ declare type Args = {
8
8
  user?: User;
9
9
  id?: string | number;
10
10
  operation?: 'create' | 'update';
11
+ locale: string;
11
12
  };
12
13
  declare const buildStateFromSchema: (args: Args) => Promise<Fields>;
13
14
  export default buildStateFromSchema;
@@ -0,0 +1,25 @@
1
+ import { iterateFields } from './iterateFields';
2
+ const buildStateFromSchema = async (args) => {
3
+ const { fieldSchema, data: fullData = {}, user, id, operation, locale, } = args;
4
+ if (fieldSchema) {
5
+ const fieldPromises = [];
6
+ const state = {};
7
+ iterateFields({
8
+ state,
9
+ fields: fieldSchema,
10
+ id,
11
+ locale,
12
+ operation,
13
+ path: '',
14
+ user,
15
+ fieldPromises,
16
+ data: fullData,
17
+ fullData,
18
+ parentPassesCondition: true,
19
+ });
20
+ await Promise.all(fieldPromises);
21
+ return state;
22
+ }
23
+ return {};
24
+ };
25
+ export default buildStateFromSchema;
@@ -0,0 +1,18 @@
1
+ import { User } from '../../../../../auth';
2
+ import { Field as FieldSchema } from '../../../../../fields/config/types';
3
+ import { Fields, Data } from '../types';
4
+ declare type Args = {
5
+ state: Fields;
6
+ fields: FieldSchema[];
7
+ data: Data;
8
+ fullData: Data;
9
+ parentPassesCondition: boolean;
10
+ path: string;
11
+ user: User;
12
+ locale: string;
13
+ fieldPromises: Promise<void>[];
14
+ id: string | number;
15
+ operation: 'create' | 'update';
16
+ };
17
+ export declare const iterateFields: ({ fields, data, parentPassesCondition, path, fullData, user, locale, operation, fieldPromises, id, state, }: Args) => void;
18
+ export {};
@@ -0,0 +1,24 @@
1
+ import { fieldIsPresentationalOnly, } from '../../../../../fields/config/types';
2
+ import { addFieldStatePromise } from './addFieldStatePromise';
3
+ export const iterateFields = ({ fields, data, parentPassesCondition, path = '', fullData, user, locale, operation, fieldPromises, id, state, }) => {
4
+ fields.forEach((field) => {
5
+ var _a, _b;
6
+ const initialData = data;
7
+ if (!fieldIsPresentationalOnly(field) && !((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.disabled)) {
8
+ 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);
9
+ fieldPromises.push(addFieldStatePromise({
10
+ fullData,
11
+ id,
12
+ locale,
13
+ operation,
14
+ path,
15
+ state,
16
+ user,
17
+ fieldPromises,
18
+ field,
19
+ passesCondition,
20
+ data,
21
+ }));
22
+ }
23
+ });
24
+ };
@@ -247,10 +247,10 @@ const Form = (props) => {
247
247
  return formData;
248
248
  }, [contextRef]);
249
249
  const reset = useCallback(async (fieldSchema, data) => {
250
- const state = await buildStateFromSchema({ fieldSchema, data, user, id, operation });
250
+ const state = await buildStateFromSchema({ fieldSchema, data, user, id, operation, locale });
251
251
  contextRef.current = { ...initContextState };
252
252
  dispatchFields({ type: 'REPLACE_STATE', state });
253
- }, [id, user, operation]);
253
+ }, [id, user, operation, locale]);
254
254
  contextRef.current.dispatchFields = dispatchFields;
255
255
  contextRef.current.submit = submit;
256
256
  contextRef.current.getFields = getFields;
@@ -295,10 +295,6 @@ const Form = (props) => {
295
295
  className,
296
296
  baseClass,
297
297
  ].filter(Boolean).join(' ');
298
- if (log) {
299
- // eslint-disable-next-line no-console
300
- console.log(fields);
301
- }
302
298
  return (React.createElement("form", { noValidate: true, onSubmit: (e) => contextRef.current.submit({}, e), method: method, action: action, className: classes, ref: formRef },
303
299
  React.createElement(FormContext.Provider, { value: contextRef.current },
304
300
  React.createElement(FormWatchContext.Provider, { value: {
@@ -41,7 +41,7 @@ const RenderFields = (props) => {
41
41
  const isFieldAffectingData = fieldAffectsData(field);
42
42
  const fieldPermissions = isFieldAffectingData ? permissions === null || permissions === void 0 ? void 0 : permissions[field.name] : permissions;
43
43
  let { admin: { readOnly } = {} } = field;
44
- if (readOnlyOverride)
44
+ if (readOnlyOverride && readOnly !== false)
45
45
  readOnly = true;
46
46
  if ((isFieldAffectingData && ((_d = (_c = permissions === null || permissions === void 0 ? void 0 : permissions[field === null || field === void 0 ? void 0 : field.name]) === null || _c === void 0 ? void 0 : _c.read) === null || _d === void 0 ? void 0 : _d.permission) !== false) || !isFieldAffectingData) {
47
47
  if (isFieldAffectingData && ((_f = (_e = permissions === null || permissions === void 0 ? void 0 : permissions[field === null || field === void 0 ? void 0 : field.name]) === null || _e === void 0 ? void 0 : _e[operation]) === null || _f === void 0 ? void 0 : _f.permission) === false) {
@@ -8,6 +8,7 @@ import reducer from '../rowReducer';
8
8
  import { useForm } from '../../Form/context';
9
9
  import buildStateFromSchema from '../../Form/buildStateFromSchema';
10
10
  import useField from '../../useField';
11
+ import { useLocale } from '../../../utilities/Locale';
11
12
  import Error from '../../Error';
12
13
  import { array } from '../../../../../fields/validations';
13
14
  import Banner from '../../../elements/Banner';
@@ -34,6 +35,7 @@ const ArrayFieldType = (props) => {
34
35
  const formContext = useForm();
35
36
  const { user } = useAuth();
36
37
  const { id } = useDocumentInfo();
38
+ const locale = useLocale();
37
39
  const operation = useOperation();
38
40
  const { dispatchFields } = formContext;
39
41
  const path = pathFromProps || name;
@@ -48,11 +50,11 @@ const ArrayFieldType = (props) => {
48
50
  condition,
49
51
  });
50
52
  const addRow = useCallback(async (rowIndex) => {
51
- const subFieldState = await buildStateFromSchema({ fieldSchema: fields, operation, id, user });
53
+ const subFieldState = await buildStateFromSchema({ fieldSchema: fields, operation, id, user, locale });
52
54
  dispatchFields({ type: 'ADD_ROW', rowIndex, subFieldState, path });
53
55
  dispatchRows({ type: 'ADD', rowIndex });
54
56
  setValue(value + 1);
55
- }, [dispatchRows, dispatchFields, fields, path, setValue, value, operation, id, user]);
57
+ }, [dispatchRows, dispatchFields, fields, path, setValue, value, operation, id, user, locale]);
56
58
  const removeRow = useCallback((rowIndex) => {
57
59
  dispatchRows({ type: 'REMOVE', rowIndex });
58
60
  dispatchFields({ type: 'REMOVE_ROW', rowIndex, path });
@@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useReducer, useState } from 'react';
2
2
  import { DragDropContext, Droppable } from 'react-beautiful-dnd';
3
3
  import { useAuth } from '@payloadcms/config-provider';
4
4
  import { usePreferences } from '../../../utilities/Preferences';
5
+ import { useLocale } from '../../../utilities/Locale';
5
6
  import withCondition from '../../withCondition';
6
7
  import Button from '../../../elements/Button';
7
8
  import reducer from '../rowReducer';
@@ -32,6 +33,7 @@ const Blocks = (props) => {
32
33
  const formContext = useForm();
33
34
  const { user } = useAuth();
34
35
  const { id } = useDocumentInfo();
36
+ const locale = useLocale();
35
37
  const operation = useOperation();
36
38
  const { dispatchFields } = formContext;
37
39
  const memoizedValidate = useCallback((value, options) => {
@@ -46,11 +48,11 @@ const Blocks = (props) => {
46
48
  });
47
49
  const addRow = useCallback(async (rowIndex, blockType) => {
48
50
  const block = blocks.find((potentialBlock) => potentialBlock.slug === blockType);
49
- const subFieldState = await buildStateFromSchema({ fieldSchema: block.fields, operation, id, user });
51
+ const subFieldState = await buildStateFromSchema({ fieldSchema: block.fields, operation, id, user, locale });
50
52
  dispatchFields({ type: 'ADD_ROW', rowIndex, subFieldState, path, blockType });
51
53
  dispatchRows({ type: 'ADD', rowIndex, blockType });
52
54
  setValue(value + 1);
53
- }, [path, setValue, value, blocks, dispatchFields, operation, id, user]);
55
+ }, [path, setValue, value, blocks, dispatchFields, operation, id, user, locale]);
54
56
  const removeRow = useCallback((rowIndex) => {
55
57
  dispatchRows({ type: 'REMOVE', rowIndex });
56
58
  dispatchFields({ type: 'REMOVE_ROW', rowIndex, path });
@@ -26,7 +26,7 @@ const Relationship = (props) => {
26
26
  const { getData, getSiblingData } = useWatchForm();
27
27
  const formProcessing = useFormProcessing();
28
28
  const hasMultipleRelations = Array.isArray(relationTo);
29
- const [options, dispatchOptions] = useReducer(optionsReducer, required || hasMany ? [] : [{ value: 'null', label: 'None' }]);
29
+ const [options, dispatchOptions] = useReducer(optionsReducer, required || hasMany ? [] : [{ value: null, label: 'None' }]);
30
30
  const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1);
31
31
  const [lastLoadedPage, setLastLoadedPage] = useState(1);
32
32
  const [errorLoading, setErrorLoading] = useState('');
@@ -228,6 +228,8 @@ const Relationship = (props) => {
228
228
  readOnly && `${baseClass}--read-only`,
229
229
  ].filter(Boolean).join(' ');
230
230
  const valueToRender = (findOptionsByValue() || value);
231
+ if ((valueToRender === null || valueToRender === void 0 ? void 0 : valueToRender.value) === 'null')
232
+ valueToRender.value = null;
231
233
  return (React.createElement("div", { className: classes, style: {
232
234
  ...style,
233
235
  width,
@@ -12,11 +12,13 @@ import Form from '../../../../../../Form';
12
12
  import reduceFieldsToValues from '../../../../../../Form/reduceFieldsToValues';
13
13
  import Submit from '../../../../../../Submit';
14
14
  import './index.scss';
15
+ import { useLocale } from '../../../../../../../utilities/Locale';
15
16
  const baseClass = 'edit-upload-modal';
16
17
  export const EditModal = ({ slug, closeModal, relatedCollectionConfig, fieldSchema, element }) => {
17
18
  const editor = useSlateStatic();
18
19
  const [initialState, setInitialState] = useState({});
19
20
  const { user } = useAuth();
21
+ const locale = useLocale();
20
22
  const handleUpdateEditData = useCallback((fields) => {
21
23
  const newNode = {
22
24
  fields: reduceFieldsToValues(fields, true),
@@ -27,11 +29,11 @@ export const EditModal = ({ slug, closeModal, relatedCollectionConfig, fieldSche
27
29
  }, [closeModal, editor, element]);
28
30
  useEffect(() => {
29
31
  const awaitInitialState = async () => {
30
- const state = await buildStateFromSchema({ fieldSchema, data: element === null || element === void 0 ? void 0 : element.fields, user, operation: 'update' });
32
+ const state = await buildStateFromSchema({ fieldSchema, data: element === null || element === void 0 ? void 0 : element.fields, user, operation: 'update', locale });
31
33
  setInitialState(state);
32
34
  };
33
35
  awaitInitialState();
34
- }, [fieldSchema, element.fields, user]);
36
+ }, [fieldSchema, element.fields, user, locale]);
35
37
  return (React.createElement(Modal, { slug: slug, className: baseClass },
36
38
  React.createElement(MinimalTemplate, { width: "normal" },
37
39
  React.createElement("header", { className: `${baseClass}__header` },
@@ -38,11 +38,11 @@ const AccountView = () => {
38
38
  }, [setStepNav]);
39
39
  useEffect(() => {
40
40
  const awaitInitialState = async () => {
41
- const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, operation: 'update', id, user });
41
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, operation: 'update', id, user, locale });
42
42
  setInitialState(state);
43
43
  };
44
44
  awaitInitialState();
45
- }, [dataToRender, fields, id, user]);
45
+ }, [dataToRender, fields, id, user, locale]);
46
46
  return (React.createElement(NegativeFieldGutterProvider, { allow: true },
47
47
  React.createElement(RenderCustomComponent, { DefaultComponent: DefaultAccount, CustomComponent: CustomAccount, componentProps: {
48
48
  action,
@@ -22,9 +22,9 @@ const GlobalView = (props) => {
22
22
  const { slug, label, fields, admin: { components: { views: { Edit: CustomEdit, } = {}, } = {}, } = {}, } = global;
23
23
  const onSave = useCallback(async (json) => {
24
24
  getVersions();
25
- const state = await buildStateFromSchema({ fieldSchema: fields, data: json.result, operation: 'update', user });
25
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: json.result, operation: 'update', user, locale });
26
26
  setInitialState(state);
27
- }, [getVersions, fields, user]);
27
+ }, [getVersions, fields, user, locale]);
28
28
  const [{ data, isLoading }] = usePayloadAPI(`${serverURL}${api}/globals/${slug}`, { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
29
29
  const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
30
30
  useEffect(() => {
@@ -35,11 +35,11 @@ const GlobalView = (props) => {
35
35
  }, [setStepNav, label]);
36
36
  useEffect(() => {
37
37
  const awaitInitialState = async () => {
38
- const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: 'update' });
38
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: 'update', locale });
39
39
  setInitialState(state);
40
40
  };
41
41
  awaitInitialState();
42
- }, [dataToRender, fields, user]);
42
+ }, [dataToRender, fields, user, locale]);
43
43
  const globalPermissions = (_a = permissions === null || permissions === void 0 ? void 0 : permissions.globals) === null || _a === void 0 ? void 0 : _a[slug];
44
44
  return (React.createElement(NegativeFieldGutterProvider, { allow: true },
45
45
  React.createElement(RenderCustomComponent, { DefaultComponent: DefaultGlobal, CustomComponent: CustomEdit, componentProps: {
@@ -32,10 +32,10 @@ const EditView = (props) => {
32
32
  history.push(`${admin}/collections/${collection.slug}/${(_a = json === null || json === void 0 ? void 0 : json.doc) === null || _a === void 0 ? void 0 : _a.id}`);
33
33
  }
34
34
  else {
35
- const state = await buildStateFromSchema({ fieldSchema: collection.fields, data: json.doc, user, id, operation: 'update' });
35
+ const state = await buildStateFromSchema({ fieldSchema: collection.fields, data: json.doc, user, id, operation: 'update', locale });
36
36
  setInitialState(state);
37
37
  }
38
- }, [admin, collection, history, isEditing, getVersions, user, id]);
38
+ }, [admin, collection, history, isEditing, getVersions, user, id, locale]);
39
39
  const [{ data, isLoading, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
40
40
  const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
41
41
  useEffect(() => {
@@ -70,12 +70,15 @@ const EditView = (props) => {
70
70
  setStepNav(nav);
71
71
  }, [setStepNav, isEditing, pluralLabel, dataToRender, slug, useAsTitle, admin]);
72
72
  useEffect(() => {
73
+ if (isLoading) {
74
+ return;
75
+ }
73
76
  const awaitInitialState = async () => {
74
- const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: isEditing ? 'update' : 'create', id });
77
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: isEditing ? 'update' : 'create', id, locale });
75
78
  setInitialState(state);
76
79
  };
77
80
  awaitInitialState();
78
- }, [dataToRender, fields, isEditing, id, user]);
81
+ }, [dataToRender, fields, isEditing, id, user, locale, isLoading]);
79
82
  if (isError) {
80
83
  return (React.createElement(Redirect, { to: `${admin}/not-found` }));
81
84
  }
@@ -9,6 +9,7 @@ const getCookieExpiration_1 = __importDefault(require("../../utilities/getCookie
9
9
  const isLocked_1 = __importDefault(require("../isLocked"));
10
10
  const sanitizeInternalFields_1 = __importDefault(require("../../utilities/sanitizeInternalFields"));
11
11
  const types_1 = require("../../fields/config/types");
12
+ const afterRead_1 = require("../../fields/hooks/afterRead");
12
13
  async function login(incomingArgs) {
13
14
  const { config, operations, secret } = this;
14
15
  let args = incomingArgs;
@@ -109,15 +110,12 @@ async function login(incomingArgs) {
109
110
  // /////////////////////////////////////
110
111
  // afterRead - Fields
111
112
  // /////////////////////////////////////
112
- user = await this.performFieldOperations(collectionConfig, {
113
+ user = await (0, afterRead_1.afterRead)({
113
114
  depth,
114
- req,
115
- id: user.id,
116
- data: user,
117
- hook: 'afterRead',
118
- operation: 'read',
115
+ doc: user,
116
+ entityConfig: collectionConfig,
119
117
  overrideAccess,
120
- flattenLocales: true,
118
+ req,
121
119
  showHiddenFields,
122
120
  });
123
121
  // /////////////////////////////////////
@@ -140,4 +138,4 @@ async function login(incomingArgs) {
140
138
  };
141
139
  }
142
140
  exports.default = login;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0aC9vcGVyYXRpb25zL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQStCO0FBRS9CLHlDQUErRDtBQUUvRCw4RkFBc0U7QUFDdEUsMkRBQW1DO0FBQ25DLG9HQUE0RTtBQUM1RSxxREFBdUY7QUF3QnZGLEtBQUssVUFBVSxLQUFLLENBQWdCLFlBQXVCO0lBQ3pELE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztJQUU1QyxJQUFJLElBQUksR0FBRyxZQUFZLENBQUM7SUFFeEIsd0NBQXdDO0lBQ3hDLCtCQUErQjtJQUMvQix3Q0FBd0M7SUFFeEMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2xGLE1BQU0sU0FBUyxDQUFDO1FBRWhCLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQ2pCLElBQUk7WUFDSixTQUFTLEVBQUUsT0FBTztTQUNuQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDZCxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFdEIsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQUUsZ0JBQWdCLEdBQ3pCLEVBQ0QsSUFBSSxFQUNKLEdBQUcsRUFDSCxLQUFLLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixHQUNqQixHQUFHLElBQUksQ0FBQztJQUVULHdDQUF3QztJQUN4QyxRQUFRO0lBQ1Isd0NBQXdDO0lBRXhDLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRW5ELE1BQU0sS0FBSyxHQUFHLGdCQUFn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
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0aC9vcGVyYXRpb25zL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQStCO0FBRS9CLHlDQUErRDtBQUUvRCw4RkFBc0U7QUFDdEUsMkRBQW1DO0FBQ25DLG9HQUE0RTtBQUM1RSxxREFBdUY7QUFJdkYsNERBQXlEO0FBcUJ6RCxLQUFLLFVBQVUsS0FBSyxDQUFnQixZQUF1QjtJQUN6RCxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFNUMsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDO0lBRXhCLHdDQUF3QztJQUN4QywrQkFBK0I7SUFDL0Isd0NBQXdDO0lBRXhDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNsRixNQUFNLFNBQVMsQ0FBQztRQUVoQixJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQztZQUNqQixJQUFJO1lBQ0osU0FBUyxFQUFFLE9BQU87U0FDbkIsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2QsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sRUFDSixVQUFVLEVBQUUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUFFLGdCQUFnQixHQUN6QixFQUNELElBQUksRUFDSixHQUFHLEVBQ0gsS0FBSyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsR0FDakIsR0FBRyxJQUFJLENBQUM7SUFFVCx3Q0FBd0M7SUFDeEMsUUFBUTtJQUNSLHdDQUF3QztJQUV4QyxNQUFNLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztJQUVuRCxNQUFNLEtB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
@@ -78,6 +78,7 @@ export declare type AfterReadHook<T extends TypeWithID = any> = (args: {
78
78
  query?: {
79
79
  [key: string]: any;
80
80
  };
81
+ findMany?: boolean;
81
82
  }) => any;
82
83
  export declare type BeforeDeleteHook = (args: {
83
84
  req: PayloadRequest;