@payloadcms/ui 3.55.0-internal.ce8fe55 → 3.55.0-internal.df60e35

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 (169) hide show
  1. package/dist/elements/Autosave/index.js +2 -2
  2. package/dist/elements/Autosave/index.js.map +1 -1
  3. package/dist/elements/BulkUpload/EditForm/index.js +4 -18
  4. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  5. package/dist/elements/ClipboardAction/index.js +173 -74
  6. package/dist/elements/ClipboardAction/index.js.map +1 -1
  7. package/dist/elements/CodeEditor/CodeEditor.js +155 -67
  8. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  9. package/dist/elements/Collapsible/index.js +15 -7
  10. package/dist/elements/Collapsible/index.js.map +1 -1
  11. package/dist/elements/ConfirmationModal/index.js +44 -8
  12. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  13. package/dist/elements/CopyLocaleData/index.js +97 -89
  14. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  15. package/dist/elements/CopyToClipboard/index.js +22 -2
  16. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  17. package/dist/elements/DeleteMany/index.js +83 -47
  18. package/dist/elements/DeleteMany/index.js.map +1 -1
  19. package/dist/elements/DocumentControls/index.js +55 -27
  20. package/dist/elements/DocumentControls/index.js.map +1 -1
  21. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +10 -2
  22. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  23. package/dist/elements/DocumentDrawer/index.js +99 -47
  24. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  25. package/dist/elements/Drawer/index.js +57 -23
  26. package/dist/elements/Drawer/index.js.map +1 -1
  27. package/dist/elements/DrawerActionHeader/index.js +21 -3
  28. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  29. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +225 -149
  30. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  31. package/dist/elements/FolderView/FolderFileCard/index.js +27 -19
  32. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  33. package/dist/elements/FolderView/MoveDocToFolder/index.js +23 -12
  34. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  35. package/dist/elements/FullscreenModal/index.js +20 -10
  36. package/dist/elements/FullscreenModal/index.js.map +1 -1
  37. package/dist/elements/ListDrawer/index.js +24 -18
  38. package/dist/elements/ListDrawer/index.js.map +1 -1
  39. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +32 -19
  40. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
  41. package/dist/elements/ListHeaderTabs/DefaultListPill.js +8 -15
  42. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -1
  43. package/dist/elements/ListSelection/index.js +27 -11
  44. package/dist/elements/ListSelection/index.js.map +1 -1
  45. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
  46. package/dist/elements/LivePreview/Window/index.js +152 -71
  47. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  48. package/dist/elements/Loading/index.js +11 -2
  49. package/dist/elements/Loading/index.js.map +1 -1
  50. package/dist/elements/LoadingOverlay/index.js +102 -46
  51. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  52. package/dist/elements/Localizer/LocalizerLabel/index.js +36 -23
  53. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  54. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +139 -41
  55. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
  56. package/dist/elements/RenderIfInViewport/index.d.ts +2 -2
  57. package/dist/elements/RenderIfInViewport/index.d.ts.map +1 -1
  58. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  59. package/dist/elements/SelectRow/index.js +40 -39
  60. package/dist/elements/SelectRow/index.js.map +1 -1
  61. package/dist/elements/ShimmerEffect/index.js +12 -20
  62. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  63. package/dist/elements/SortColumn/index.js +30 -21
  64. package/dist/elements/SortColumn/index.js.map +1 -1
  65. package/dist/elements/Status/index.d.ts.map +1 -1
  66. package/dist/elements/Status/index.js +19 -9
  67. package/dist/elements/Status/index.js.map +1 -1
  68. package/dist/elements/Table/DefaultCell/fields/Date/index.js +37 -9
  69. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  70. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +37 -35
  71. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  72. package/dist/elements/Table/DefaultCell/fields/Select/index.js +27 -12
  73. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  74. package/dist/elements/Thumbnail/index.js +75 -35
  75. package/dist/elements/Thumbnail/index.js.map +1 -1
  76. package/dist/elements/ThumbnailCard/index.js +26 -17
  77. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  78. package/dist/elements/Tooltip/index.js +127 -51
  79. package/dist/elements/Tooltip/index.js.map +1 -1
  80. package/dist/elements/Upload/index.js +10 -2
  81. package/dist/elements/Upload/index.js.map +1 -1
  82. package/dist/elements/WhereBuilder/Condition/Select/index.js +44 -31
  83. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  84. package/dist/exports/client/{CodeEditor-O6BWJHD2.js → CodeEditor-MIIBUJZ4.js} +2 -2
  85. package/dist/exports/client/{DatePicker-F432AIH3.js → DatePicker-NMDEHPWL.js} +2 -2
  86. package/dist/exports/client/{chunk-AZDI6MW4.js → chunk-7RGKTZG2.js} +1 -1
  87. package/dist/exports/client/{chunk-AZDI6MW4.js.map → chunk-7RGKTZG2.js.map} +1 -1
  88. package/dist/exports/client/{chunk-FXAFULZQ.js → chunk-Z6O2JA43.js} +6 -6
  89. package/dist/exports/client/{chunk-FXAFULZQ.js.map → chunk-Z6O2JA43.js.map} +3 -3
  90. package/dist/exports/client/index.d.ts +2 -4
  91. package/dist/exports/client/index.d.ts.map +1 -1
  92. package/dist/exports/client/index.js +24 -24
  93. package/dist/exports/client/index.js.map +4 -4
  94. package/dist/exports/rsc/index.d.ts +0 -1
  95. package/dist/exports/rsc/index.d.ts.map +1 -1
  96. package/dist/exports/rsc/index.js +0 -1
  97. package/dist/exports/rsc/index.js.map +1 -1
  98. package/dist/fields/Array/ArrayRow.d.ts +3 -2
  99. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  100. package/dist/fields/Array/ArrayRow.js +23 -13
  101. package/dist/fields/Array/ArrayRow.js.map +1 -1
  102. package/dist/fields/Array/index.js +477 -273
  103. package/dist/fields/Array/index.js.map +1 -1
  104. package/dist/fields/Checkbox/Input.js +19 -2
  105. package/dist/fields/Checkbox/Input.js.map +1 -1
  106. package/dist/fields/FieldError/index.js +29 -30
  107. package/dist/fields/FieldError/index.js.map +1 -1
  108. package/dist/fields/FieldLabel/index.js +64 -12
  109. package/dist/fields/FieldLabel/index.js.map +1 -1
  110. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +103 -45
  111. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  112. package/dist/fields/Relationship/select-components/SingleValue/index.js +44 -29
  113. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  114. package/dist/fields/Row/index.d.ts +3 -1
  115. package/dist/fields/Row/index.d.ts.map +1 -1
  116. package/dist/fields/Select/Input.js +31 -18
  117. package/dist/fields/Select/Input.js.map +1 -1
  118. package/dist/fields/Tabs/Tab/index.js +11 -2
  119. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  120. package/dist/fields/Tabs/index.d.ts +1 -2
  121. package/dist/fields/Tabs/index.d.ts.map +1 -1
  122. package/dist/fields/Tabs/index.js +225 -185
  123. package/dist/fields/Tabs/index.js.map +1 -1
  124. package/dist/fields/Upload/RelationshipContent/index.js +127 -79
  125. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  126. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  127. package/dist/forms/Form/fieldReducer.js +15 -13
  128. package/dist/forms/Form/fieldReducer.js.map +1 -1
  129. package/dist/forms/RenderFields/RenderField.js +237 -245
  130. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  131. package/dist/forms/RenderFields/types.d.ts +10 -2
  132. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  133. package/dist/forms/RenderFields/types.js.map +1 -1
  134. package/dist/forms/useField/index.d.ts +0 -5
  135. package/dist/forms/useField/index.d.ts.map +1 -1
  136. package/dist/forms/useField/index.js +45 -74
  137. package/dist/forms/useField/index.js.map +1 -1
  138. package/dist/hooks/useIntersect.js +53 -35
  139. package/dist/hooks/useIntersect.js.map +1 -1
  140. package/dist/hooks/usePayloadAPI.js +44 -36
  141. package/dist/hooks/usePayloadAPI.js.map +1 -1
  142. package/dist/providers/LivePreview/context.d.ts +0 -2
  143. package/dist/providers/LivePreview/context.d.ts.map +1 -1
  144. package/dist/providers/LivePreview/context.js +0 -1
  145. package/dist/providers/LivePreview/context.js.map +1 -1
  146. package/dist/providers/LivePreview/index.d.ts.map +1 -1
  147. package/dist/providers/LivePreview/index.js +0 -12
  148. package/dist/providers/LivePreview/index.js.map +1 -1
  149. package/dist/providers/ServerFunctions/index.d.ts +1 -4
  150. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  151. package/dist/providers/ServerFunctions/index.js +0 -13
  152. package/dist/providers/ServerFunctions/index.js.map +1 -1
  153. package/dist/styles.css +1 -1
  154. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
  155. package/dist/utilities/reduceFieldsToOptions.js +16 -1
  156. package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
  157. package/dist/views/BrowseByFolder/index.js +55 -37
  158. package/dist/views/BrowseByFolder/index.js.map +1 -1
  159. package/dist/views/CollectionFolder/index.js +40 -13
  160. package/dist/views/CollectionFolder/index.js.map +1 -1
  161. package/dist/views/Edit/Auth/index.js +105 -93
  162. package/dist/views/Edit/Auth/index.js.map +1 -1
  163. package/package.json +8 -8
  164. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts +0 -30
  165. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +0 -1
  166. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +0 -82
  167. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +0 -1
  168. /package/dist/exports/client/{CodeEditor-O6BWJHD2.js.map → CodeEditor-MIIBUJZ4.js.map} +0 -0
  169. /package/dist/exports/client/{DatePicker-F432AIH3.js.map → DatePicker-NMDEHPWL.js.map} +0 -0
@@ -19,7 +19,7 @@ import { APIKey } from './APIKey.js';
19
19
  import './index.scss';
20
20
  const baseClass = 'auth-fields';
21
21
  export const Auth = props => {
22
- const $ = _c(22);
22
+ const $ = _c(34);
23
23
  const {
24
24
  className,
25
25
  collectionSlug,
@@ -85,44 +85,28 @@ export const Auth = props => {
85
85
  }
86
86
  if (hasLoginFieldOverride) {
87
87
  const hasEmailAndUsernameFields = loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin);
88
- let t2;
89
- if ($[0] !== docPermissions.fields) {
90
- t2 = getFieldPermissions({
91
- field: {
92
- name: "email",
93
- type: "text"
94
- },
95
- operation: "read",
96
- parentName: "",
97
- permissions: docPermissions?.fields
98
- });
99
- $[0] = docPermissions.fields;
100
- $[1] = t2;
101
- } else {
102
- t2 = $[1];
103
- }
104
88
  const {
105
89
  operation: emailPermission
106
- } = t2;
107
- let t3;
108
- if ($[2] !== docPermissions.fields) {
109
- t3 = getFieldPermissions({
110
- field: {
111
- name: "username",
112
- type: "text"
113
- },
114
- operation: "read",
115
- parentName: "",
116
- permissions: docPermissions?.fields
117
- });
118
- $[2] = docPermissions.fields;
119
- $[3] = t3;
120
- } else {
121
- t3 = $[3];
122
- }
90
+ } = getFieldPermissions({
91
+ field: {
92
+ name: "email",
93
+ type: "text"
94
+ },
95
+ operation: "read",
96
+ parentName: "",
97
+ permissions: docPermissions?.fields
98
+ });
123
99
  const {
124
100
  operation: usernamePermission
125
- } = t3;
101
+ } = getFieldPermissions({
102
+ field: {
103
+ name: "username",
104
+ type: "text"
105
+ },
106
+ operation: "read",
107
+ parentName: "",
108
+ permissions: docPermissions?.fields
109
+ });
126
110
  if (hasEmailAndUsernameFields) {
127
111
  showUnlock = usernamePermission || emailPermission;
128
112
  } else {
@@ -150,7 +134,7 @@ export const Auth = props => {
150
134
  }
151
135
  const hasPermissionToUnlock = t2;
152
136
  let t3;
153
- if ($[4] !== dispatchFields || $[5] !== setValidateBeforeSubmit || $[6] !== t) {
137
+ if ($[0] !== dispatchFields || $[1] !== setValidateBeforeSubmit || $[2] !== t) {
154
138
  t3 = changingPassword_0 => {
155
139
  if (changingPassword_0) {
156
140
  setValidateBeforeSubmit(true);
@@ -179,16 +163,16 @@ export const Auth = props => {
179
163
  }
180
164
  setChangingPassword(changingPassword_0);
181
165
  };
182
- $[4] = dispatchFields;
183
- $[5] = setValidateBeforeSubmit;
184
- $[6] = t;
185
- $[7] = t3;
166
+ $[0] = dispatchFields;
167
+ $[1] = setValidateBeforeSubmit;
168
+ $[2] = t;
169
+ $[3] = t3;
186
170
  } else {
187
- t3 = $[7];
171
+ t3 = $[3];
188
172
  }
189
173
  const handleChangePassword = t3;
190
174
  let t4;
191
- if ($[8] !== api || $[9] !== collectionSlug || $[10] !== email || $[11] !== i18n || $[12] !== loginWithUsername || $[13] !== serverURL || $[14] !== t || $[15] !== username) {
175
+ if ($[4] !== api || $[5] !== collectionSlug || $[6] !== email || $[7] !== i18n || $[8] !== loginWithUsername || $[9] !== serverURL || $[10] !== t || $[11] !== username) {
192
176
  t4 = async () => {
193
177
  const url = `${serverURL}${api}/${collectionSlug}/unlock`;
194
178
  const response = await fetch(url, {
@@ -210,34 +194,34 @@ export const Auth = props => {
210
194
  toast.error(t("authentication:failedToUnlock"));
211
195
  }
212
196
  };
213
- $[8] = api;
214
- $[9] = collectionSlug;
215
- $[10] = email;
216
- $[11] = i18n;
217
- $[12] = loginWithUsername;
218
- $[13] = serverURL;
219
- $[14] = t;
220
- $[15] = username;
221
- $[16] = t4;
197
+ $[4] = api;
198
+ $[5] = collectionSlug;
199
+ $[6] = email;
200
+ $[7] = i18n;
201
+ $[8] = loginWithUsername;
202
+ $[9] = serverURL;
203
+ $[10] = t;
204
+ $[11] = username;
205
+ $[12] = t4;
222
206
  } else {
223
- t4 = $[16];
207
+ t4 = $[12];
224
208
  }
225
209
  const unlock = t4;
226
210
  let t5;
227
211
  let t6;
228
- if ($[17] !== modified) {
212
+ if ($[13] !== modified) {
229
213
  t5 = () => {
230
214
  if (!modified) {
231
215
  setChangingPassword(false);
232
216
  }
233
217
  };
234
218
  t6 = [modified];
235
- $[17] = modified;
236
- $[18] = t5;
237
- $[19] = t6;
219
+ $[13] = modified;
220
+ $[14] = t5;
221
+ $[15] = t6;
238
222
  } else {
239
- t5 = $[18];
240
- t6 = $[19];
223
+ t5 = $[14];
224
+ t6 = $[15];
241
225
  }
242
226
  useEffect(t5, t6);
243
227
  const showAuthBlock = enableFields;
@@ -247,12 +231,70 @@ export const Auth = props => {
247
231
  return null;
248
232
  }
249
233
  let t7;
250
- if ($[20] !== className) {
234
+ if ($[16] !== className) {
251
235
  t7 = [baseClass, className].filter(Boolean);
252
- $[20] = className;
253
- $[21] = t7;
236
+ $[16] = className;
237
+ $[17] = t7;
238
+ } else {
239
+ t7 = $[17];
240
+ }
241
+ let t8;
242
+ if ($[18] !== apiKeyReadOnly || $[19] !== canReadApiKey || $[20] !== collectionSlug || $[21] !== disabled || $[22] !== enableAPIKey?.value || $[23] !== enableAPIKeyReadOnly || $[24] !== t || $[25] !== useAPIKey) {
243
+ t8 = useAPIKey && _jsx("div", {
244
+ className: `${baseClass}__api-key`,
245
+ children: canReadApiKey && _jsxs(Fragment, {
246
+ children: [_jsx(CheckboxField, {
247
+ field: {
248
+ name: "enableAPIKey",
249
+ admin: {
250
+ disabled,
251
+ readOnly: enableAPIKeyReadOnly
252
+ },
253
+ label: t("authentication:enableAPIKey")
254
+ },
255
+ path: "enableAPIKey",
256
+ schemaPath: `${collectionSlug}.enableAPIKey`
257
+ }), _jsx(APIKey, {
258
+ enabled: !!enableAPIKey?.value,
259
+ readOnly: apiKeyReadOnly
260
+ })]
261
+ })
262
+ });
263
+ $[18] = apiKeyReadOnly;
264
+ $[19] = canReadApiKey;
265
+ $[20] = collectionSlug;
266
+ $[21] = disabled;
267
+ $[22] = enableAPIKey?.value;
268
+ $[23] = enableAPIKeyReadOnly;
269
+ $[24] = t;
270
+ $[25] = useAPIKey;
271
+ $[26] = t8;
254
272
  } else {
255
- t7 = $[21];
273
+ t8 = $[26];
274
+ }
275
+ let t9;
276
+ if ($[27] !== collectionSlug || $[28] !== disabled || $[29] !== isEditing || $[30] !== readOnly || $[31] !== t || $[32] !== verify) {
277
+ t9 = verify && isEditing && _jsx(CheckboxField, {
278
+ field: {
279
+ name: "_verified",
280
+ admin: {
281
+ disabled,
282
+ readOnly
283
+ },
284
+ label: t("authentication:verified")
285
+ },
286
+ path: "_verified",
287
+ schemaPath: `${collectionSlug}._verified`
288
+ });
289
+ $[27] = collectionSlug;
290
+ $[28] = disabled;
291
+ $[29] = isEditing;
292
+ $[30] = readOnly;
293
+ $[31] = t;
294
+ $[32] = verify;
295
+ $[33] = t9;
296
+ } else {
297
+ t9 = $[33];
256
298
  }
257
299
  return _jsxs("div", {
258
300
  className: t7.join(" "),
@@ -303,37 +345,7 @@ export const Auth = props => {
303
345
  children: t("authentication:forceUnlock")
304
346
  })]
305
347
  })]
306
- }), useAPIKey && _jsx("div", {
307
- className: `${baseClass}__api-key`,
308
- children: canReadApiKey && _jsxs(Fragment, {
309
- children: [_jsx(CheckboxField, {
310
- field: {
311
- name: "enableAPIKey",
312
- admin: {
313
- disabled,
314
- readOnly: enableAPIKeyReadOnly
315
- },
316
- label: t("authentication:enableAPIKey")
317
- },
318
- path: "enableAPIKey",
319
- schemaPath: `${collectionSlug}.enableAPIKey`
320
- }), _jsx(APIKey, {
321
- enabled: !!enableAPIKey?.value,
322
- readOnly: apiKeyReadOnly
323
- })]
324
- })
325
- }), verify && isEditing && _jsx(CheckboxField, {
326
- field: {
327
- name: "_verified",
328
- admin: {
329
- disabled,
330
- readOnly
331
- },
332
- label: t("authentication:verified")
333
- },
334
- path: "_verified",
335
- schemaPath: `${collectionSlug}._verified`
336
- })]
348
+ }), t8, t9]
337
349
  });
338
350
  };
339
351
  function _temp(t0) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getFieldPermissions","React","Fragment","useCallback","useEffect","useMemo","useState","toast","Button","EmailAndUsernameFields","CheckboxField","ConfirmPasswordField","PasswordField","useFormFields","useFormModified","useAuth","useConfig","useDocumentInfo","useTranslation","APIKey","baseClass","Auth","props","$","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","setValidateBeforeSubmit","useAPIKey","username","verify","permissions","changingPassword","setChangingPassword","enableAPIKey","_temp","dispatchFields","_temp2","modified","i18n","t","docPermissions","isEditing","isInitializing","isTrashed","config","t0","routes","t1","serverURL","api","showPasswordFields","showUnlock","hasPasswordFieldOverride","fields","hasLoginFieldOverride","passwordPermissions","field","name","type","parentName","create","update","hasEmailAndUsernameFields","requireEmail","allowEmailLogin","t2","emailPermission","t3","usernamePermission","enableFields","disabled","apiKeyPermissions","apiKeyReadOnly","enableAPIKeyReadOnly","canReadApiKey","read","bb0","collection","collections","Boolean","unlock","undefined","hasPermissionToUnlock","changingPassword_0","errorMessage","path","valid","handleChangePassword","t4","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","t5","t6","showAuthBlock","showAPIKeyBlock","showVerifyBlock","t7","filter","_jsxs","join","children","_jsx","autoComplete","label","required","indexPath","parentPath","parentSchemaPath","schemaPath","buttonStyle","onClick","size","id","admin","enabled","value","reducer"],"sources":["../../../../src/views/Edit/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport { getFieldPermissions } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js'\nimport { CheckboxField } from '../../../fields/Checkbox/index.js'\nimport { ConfirmPasswordField } from '../../../fields/ConfirmPassword/index.js'\nimport { PasswordField } from '../../../fields/Password/index.js'\nimport { useFormFields, useFormModified } from '../../../forms/Form/context.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const { permissions } = useAuth()\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isEditing, isInitializing, isTrashed } = useDocumentInfo()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n let showPasswordFields = true\n let showUnlock = true\n const hasPasswordFieldOverride =\n typeof docPermissions.fields === 'object' && 'password' in docPermissions.fields\n const hasLoginFieldOverride =\n typeof docPermissions.fields === 'object' &&\n ('username' in docPermissions.fields || 'email' in docPermissions.fields)\n\n if (hasPasswordFieldOverride) {\n const { permissions: passwordPermissions } = getFieldPermissions({\n field: { name: 'password', type: 'text' },\n operation,\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (operation === 'create') {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.create)\n } else {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.update)\n }\n }\n\n if (hasLoginFieldOverride) {\n const hasEmailAndUsernameFields =\n loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin)\n\n const { operation: emailPermission } = getFieldPermissions({\n field: { name: 'email', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n const { operation: usernamePermission } = getFieldPermissions({\n field: { name: 'username', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (hasEmailAndUsernameFields) {\n showUnlock = usernamePermission || emailPermission\n } else if (loginWithUsername && !hasEmailAndUsernameFields) {\n showUnlock = usernamePermission\n } else {\n showUnlock = emailPermission\n }\n }\n\n const enableFields =\n (!disableLocalStrategy ||\n (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true)) &&\n (showUnlock || showPasswordFields)\n\n const disabled = readOnly || isInitializing || isTrashed\n\n const apiKeyPermissions =\n docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey\n\n const apiKeyReadOnly =\n readOnly ||\n apiKeyPermissions === true ||\n (apiKeyPermissions && typeof apiKeyPermissions === 'object' && !apiKeyPermissions?.update)\n\n const enableAPIKeyReadOnly =\n readOnly || (apiKeyPermissions !== true && !apiKeyPermissions?.update)\n\n const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n const collection = permissions?.collections?.[collectionSlug]\n\n if (collection) {\n return Boolean('unlock' in collection ? collection.unlock : undefined)\n }\n\n return false\n }, [permissions, collectionSlug])\n\n const handleChangePassword = useCallback(\n (changingPassword: boolean) => {\n if (changingPassword) {\n setValidateBeforeSubmit(true)\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(changingPassword)\n },\n [dispatchFields, t, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n const showAuthBlock = enableFields\n const showAPIKeyBlock = useAPIKey && canReadApiKey\n const showVerifyBlock = verify && isEditing\n\n if (!(showAuthBlock || showAPIKeyBlock || showVerifyBlock)) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {enableFields && (\n <React.Fragment>\n <EmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly || isTrashed}\n t={t}\n />\n {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"new-password\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath=\"password\"\n />\n <ConfirmPasswordField disabled={readOnly || isTrashed} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword &&\n !requirePassword &&\n !disableLocalStrategy &&\n showPasswordFields && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"medium\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled || !showUnlock}\n onClick={() => void unlock()}\n size=\"medium\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n {canReadApiKey && (\n <Fragment>\n <CheckboxField\n field={{\n name: 'enableAPIKey',\n admin: { disabled, readOnly: enableAPIKeyReadOnly },\n label: t('authentication:enableAPIKey'),\n }}\n path=\"enableAPIKey\"\n schemaPath={`${collectionSlug}.enableAPIKey`}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={apiKeyReadOnly} />\n </Fragment>\n )}\n </div>\n )}\n {verify && isEditing && (\n <CheckboxField\n field={{\n name: '_verified',\n admin: { disabled, readOnly },\n label: t('authentication:verified'),\n }}\n path=\"_verified\"\n schemaPath={`${collectionSlug}._verified`}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getFieldPermissions","React","Fragment","useCallback","useEffect","useMemo","useState","toast","Button","EmailAndUsernameFields","CheckboxField","ConfirmPasswordField","PasswordField","useFormFields","useFormModified","useAuth","useConfig","useDocumentInfo","useTranslation","APIKey","baseClass","Auth","props","$","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","setValidateBeforeSubmit","useAPIKey","username","verify","permissions","changingPassword","setChangingPassword","enableAPIKey","_temp","dispatchFields","_temp2","modified","i18n","t","docPermissions","isEditing","isInitializing","isTrashed","config","t0","routes","t1","serverURL","api","showPasswordFields","showUnlock","hasPasswordFieldOverride","fields","hasLoginFieldOverride","passwordPermissions","field","name","type","parentName","create","update","hasEmailAndUsernameFields","requireEmail","allowEmailLogin","emailPermission","usernamePermission","enableFields","disabled","apiKeyPermissions","apiKeyReadOnly","enableAPIKeyReadOnly","canReadApiKey","read","t2","bb0","collection","collections","Boolean","unlock","undefined","hasPermissionToUnlock","t3","changingPassword_0","errorMessage","path","valid","handleChangePassword","t4","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","t5","t6","showAuthBlock","showAPIKeyBlock","showVerifyBlock","t7","filter","t8","value","_jsx","children","_jsxs","admin","label","schemaPath","enabled","t9","join","autoComplete","required","indexPath","parentPath","parentSchemaPath","buttonStyle","onClick","size","id","reducer"],"sources":["../../../../src/views/Edit/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport { getFieldPermissions } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js'\nimport { CheckboxField } from '../../../fields/Checkbox/index.js'\nimport { ConfirmPasswordField } from '../../../fields/ConfirmPassword/index.js'\nimport { PasswordField } from '../../../fields/Password/index.js'\nimport { useFormFields, useFormModified } from '../../../forms/Form/context.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const { permissions } = useAuth()\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isEditing, isInitializing, isTrashed } = useDocumentInfo()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n let showPasswordFields = true\n let showUnlock = true\n const hasPasswordFieldOverride =\n typeof docPermissions.fields === 'object' && 'password' in docPermissions.fields\n const hasLoginFieldOverride =\n typeof docPermissions.fields === 'object' &&\n ('username' in docPermissions.fields || 'email' in docPermissions.fields)\n\n if (hasPasswordFieldOverride) {\n const { permissions: passwordPermissions } = getFieldPermissions({\n field: { name: 'password', type: 'text' },\n operation,\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (operation === 'create') {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.create)\n } else {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.update)\n }\n }\n\n if (hasLoginFieldOverride) {\n const hasEmailAndUsernameFields =\n loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin)\n\n const { operation: emailPermission } = getFieldPermissions({\n field: { name: 'email', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n const { operation: usernamePermission } = getFieldPermissions({\n field: { name: 'username', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (hasEmailAndUsernameFields) {\n showUnlock = usernamePermission || emailPermission\n } else if (loginWithUsername && !hasEmailAndUsernameFields) {\n showUnlock = usernamePermission\n } else {\n showUnlock = emailPermission\n }\n }\n\n const enableFields =\n (!disableLocalStrategy ||\n (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true)) &&\n (showUnlock || showPasswordFields)\n\n const disabled = readOnly || isInitializing || isTrashed\n\n const apiKeyPermissions =\n docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey\n\n const apiKeyReadOnly =\n readOnly ||\n apiKeyPermissions === true ||\n (apiKeyPermissions && typeof apiKeyPermissions === 'object' && !apiKeyPermissions?.update)\n\n const enableAPIKeyReadOnly =\n readOnly || (apiKeyPermissions !== true && !apiKeyPermissions?.update)\n\n const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n const collection = permissions?.collections?.[collectionSlug]\n\n if (collection) {\n return Boolean('unlock' in collection ? collection.unlock : undefined)\n }\n\n return false\n }, [permissions, collectionSlug])\n\n const handleChangePassword = useCallback(\n (changingPassword: boolean) => {\n if (changingPassword) {\n setValidateBeforeSubmit(true)\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(changingPassword)\n },\n [dispatchFields, t, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n const showAuthBlock = enableFields\n const showAPIKeyBlock = useAPIKey && canReadApiKey\n const showVerifyBlock = verify && isEditing\n\n if (!(showAuthBlock || showAPIKeyBlock || showVerifyBlock)) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {enableFields && (\n <React.Fragment>\n <EmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly || isTrashed}\n t={t}\n />\n {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"new-password\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath=\"password\"\n />\n <ConfirmPasswordField disabled={readOnly || isTrashed} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword &&\n !requirePassword &&\n !disableLocalStrategy &&\n showPasswordFields && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"medium\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled || !showUnlock}\n onClick={() => void unlock()}\n size=\"medium\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n {canReadApiKey && (\n <Fragment>\n <CheckboxField\n field={{\n name: 'enableAPIKey',\n admin: { disabled, readOnly: enableAPIKeyReadOnly },\n label: t('authentication:enableAPIKey'),\n }}\n path=\"enableAPIKey\"\n schemaPath={`${collectionSlug}.enableAPIKey`}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={apiKeyReadOnly} />\n </Fragment>\n )}\n </div>\n )}\n {verify && isEditing && (\n <CheckboxField\n field={{\n name: '_verified',\n admin: { disabled, readOnly },\n label: t('authentication:verified'),\n }}\n path=\"_verified\"\n schemaPath={`${collectionSlug}._verified`}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.55.0-internal.ce8fe55",
3
+ "version": "3.55.0-internal.df60e35",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -136,7 +136,7 @@
136
136
  "ts-essentials": "10.0.3",
137
137
  "use-context-selector": "2.0.0",
138
138
  "uuid": "10.0.0",
139
- "@payloadcms/translations": "3.55.0-internal.ce8fe55"
139
+ "@payloadcms/translations": "3.55.0-internal.df60e35"
140
140
  },
141
141
  "devDependencies": {
142
142
  "@babel/cli": "7.27.2",
@@ -145,20 +145,20 @@
145
145
  "@babel/preset-react": "7.27.1",
146
146
  "@babel/preset-typescript": "7.27.1",
147
147
  "@hyrious/esbuild-plugin-commonjs": "0.2.6",
148
- "@types/react": "19.1.12",
149
- "@types/react-dom": "19.1.9",
148
+ "@types/react": "19.1.8",
149
+ "@types/react-dom": "19.1.6",
150
150
  "@types/uuid": "10.0.0",
151
- "babel-plugin-react-compiler": "19.1.0-rc.3",
151
+ "babel-plugin-react-compiler": "19.1.0-rc.2",
152
152
  "esbuild": "0.25.5",
153
153
  "esbuild-sass-plugin": "3.3.1",
154
- "payload": "3.55.0-internal.ce8fe55",
155
- "@payloadcms/eslint-config": "3.28.0"
154
+ "@payloadcms/eslint-config": "3.28.0",
155
+ "payload": "3.55.0-internal.df60e35"
156
156
  },
157
157
  "peerDependencies": {
158
158
  "next": "^15.2.3",
159
159
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
160
160
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
161
- "payload": "3.55.0-internal.ce8fe55"
161
+ "payload": "3.55.0-internal.df60e35"
162
162
  },
163
163
  "engines": {
164
164
  "node": "^18.20.2 || >=20.9.0"
@@ -1,30 +0,0 @@
1
- import { type Field, type FieldState, type ServerFunction } from 'payload';
2
- export type RenderFieldServerFnArgs = {
3
- /**
4
- * Override field config pulled from schemaPath lookup
5
- */
6
- field?: Partial<Field>;
7
- /**
8
- * Pass the value this field will receive when rendering it on the server.
9
- * For richText, this helps provide initial state for sub-fields that are immediately rendered (like blocks)
10
- * so that we can avoid multiple waterfall requests for each block that renders on the client.
11
- */
12
- initialValue?: unknown;
13
- /**
14
- * Path to the field to render
15
- * @default field name
16
- */
17
- path?: string;
18
- /**
19
- * chema path to the field to render. {global|collection}.entitySlug.fieldSchemaPath
20
- *
21
- * @example collection.posts.richText
22
- */
23
- schemaPath: string;
24
- };
25
- export type RenderFieldServerFnReturnType = {} & FieldState['customComponents'];
26
- /**
27
- * @experimental - may break in minor releases
28
- */
29
- export declare const _internal_renderFieldHandler: ServerFunction<RenderFieldServerFnArgs, Promise<RenderFieldServerFnReturnType>>;
30
- //# sourceMappingURL=renderFieldServerFn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderFieldServerFn.d.ts","sourceRoot":"","sources":["../../../../src/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAO1E,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AACD,MAAM,MAAM,6BAA6B,GAAG,EAAE,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAE/E;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,cAAc,CACvD,uBAAuB,EACvB,OAAO,CAAC,6BAA6B,CAAC,CA8EvC,CAAA"}
@@ -1,82 +0,0 @@
1
- import { getClientConfig } from '../../../utilities/getClientConfig.js';
2
- import { getClientSchemaMap } from '../../../utilities/getClientSchemaMap.js';
3
- import { getSchemaMap } from '../../../utilities/getSchemaMap.js';
4
- import { renderField } from '../renderField.js';
5
- /**
6
- * @experimental - may break in minor releases
7
- */
8
- export const _internal_renderFieldHandler = async ({
9
- field: fieldArg,
10
- initialValue,
11
- path,
12
- req,
13
- schemaPath
14
- }) => {
15
- if (!req.user) {
16
- throw new Error('Unauthorized');
17
- }
18
- const [entityType, entitySlug, ...fieldPath] = schemaPath.split('.');
19
- const schemaMap = getSchemaMap({
20
- collectionSlug: entityType === 'collection' ? entitySlug : undefined,
21
- config: req.payload.config,
22
- globalSlug: entityType === 'global' ? entitySlug : undefined,
23
- i18n: req.i18n
24
- });
25
- // Provide client schema map as it would have been provided if the target editor field would have been rendered.
26
- // For lexical, only then will it contain all the lexical-internal entries
27
- const clientSchemaMap = getClientSchemaMap({
28
- collectionSlug: entityType === 'collection' ? entitySlug : undefined,
29
- config: getClientConfig({
30
- config: req.payload.config,
31
- i18n: req.i18n,
32
- importMap: req.payload.importMap
33
- }),
34
- globalSlug: entityType === 'global' ? entitySlug : undefined,
35
- i18n: req.i18n,
36
- payload: req.payload,
37
- schemaMap
38
- });
39
- const targetField = schemaMap.get(`${entitySlug}.${fieldPath.join('.')}`);
40
- if (!targetField) {
41
- throw new Error(`Could not find target field at schemaPath: ${schemaPath}`);
42
- }
43
- const field = {
44
- ...(targetField || {}),
45
- ...(fieldArg || {})
46
- };
47
- let data = {};
48
- if (typeof initialValue !== 'undefined') {
49
- if ('name' in field) {
50
- data[field.name] = initialValue;
51
- } else {
52
- data = initialValue;
53
- }
54
- }
55
- const fieldState = {};
56
- renderField({
57
- clientFieldSchemaMap: clientSchemaMap,
58
- collectionSlug: entityType === 'collection' && entitySlug ? entitySlug : '-',
59
- data,
60
- fieldConfig: field,
61
- fieldSchemaMap: schemaMap,
62
- fieldState,
63
- formState: {},
64
- indexPath: '',
65
- lastRenderedPath: '',
66
- operation: 'create',
67
- parentPath: '',
68
- parentSchemaPath: '',
69
- path: path ?? ('name' in field ? field.name : ''),
70
- permissions: true,
71
- preferences: {
72
- fields: {}
73
- },
74
- previousFieldState: undefined,
75
- renderAllFields: true,
76
- req,
77
- schemaPath: `${entitySlug}.${fieldPath.join('.')}`,
78
- siblingData: data
79
- });
80
- return fieldState.customComponents ?? {};
81
- };
82
- //# sourceMappingURL=renderFieldServerFn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderFieldServerFn.js","names":["getClientConfig","getClientSchemaMap","getSchemaMap","renderField","_internal_renderFieldHandler","field","fieldArg","initialValue","path","req","schemaPath","user","Error","entityType","entitySlug","fieldPath","split","schemaMap","collectionSlug","undefined","config","payload","globalSlug","i18n","clientSchemaMap","importMap","targetField","get","join","data","name","fieldState","clientFieldSchemaMap","fieldConfig","fieldSchemaMap","formState","indexPath","lastRenderedPath","operation","parentPath","parentSchemaPath","permissions","preferences","fields","previousFieldState","renderAllFields","siblingData","customComponents"],"sources":["../../../../src/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.ts"],"sourcesContent":["import { type Field, type FieldState, type ServerFunction } from 'payload'\n\nimport { getClientConfig } from '../../../utilities/getClientConfig.js'\nimport { getClientSchemaMap } from '../../../utilities/getClientSchemaMap.js'\nimport { getSchemaMap } from '../../../utilities/getSchemaMap.js'\nimport { renderField } from '../renderField.js'\n\nexport type RenderFieldServerFnArgs = {\n /**\n * Override field config pulled from schemaPath lookup\n */\n field?: Partial<Field>\n /**\n * Pass the value this field will receive when rendering it on the server.\n * For richText, this helps provide initial state for sub-fields that are immediately rendered (like blocks)\n * so that we can avoid multiple waterfall requests for each block that renders on the client.\n */\n initialValue?: unknown\n /**\n * Path to the field to render\n * @default field name\n */\n path?: string\n /**\n * chema path to the field to render. {global|collection}.entitySlug.fieldSchemaPath\n *\n * @example collection.posts.richText\n */\n schemaPath: string\n}\nexport type RenderFieldServerFnReturnType = {} & FieldState['customComponents']\n\n/**\n * @experimental - may break in minor releases\n */\nexport const _internal_renderFieldHandler: ServerFunction<\n RenderFieldServerFnArgs,\n Promise<RenderFieldServerFnReturnType>\n // eslint-disable-next-line @typescript-eslint/require-await\n> = async ({ field: fieldArg, initialValue, path, req, schemaPath }) => {\n if (!req.user) {\n throw new Error('Unauthorized')\n }\n\n const [entityType, entitySlug, ...fieldPath] = schemaPath.split('.')\n\n const schemaMap = getSchemaMap({\n collectionSlug: entityType === 'collection' ? entitySlug : undefined,\n config: req.payload.config,\n globalSlug: entityType === 'global' ? entitySlug : undefined,\n i18n: req.i18n,\n })\n\n // Provide client schema map as it would have been provided if the target editor field would have been rendered.\n // For lexical, only then will it contain all the lexical-internal entries\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug: entityType === 'collection' ? entitySlug : undefined,\n config: getClientConfig({\n config: req.payload.config,\n i18n: req.i18n,\n importMap: req.payload.importMap,\n }),\n globalSlug: entityType === 'global' ? entitySlug : undefined,\n i18n: req.i18n,\n payload: req.payload,\n schemaMap,\n })\n\n const targetField = schemaMap.get(`${entitySlug}.${fieldPath.join('.')}`) as Field | undefined\n\n if (!targetField) {\n throw new Error(`Could not find target field at schemaPath: ${schemaPath}`)\n }\n\n const field: Field = {\n ...(targetField || {}),\n ...(fieldArg || {}),\n } as Field\n\n let data = {}\n if (typeof initialValue !== 'undefined') {\n if ('name' in field) {\n data[field.name] = initialValue\n } else {\n data = initialValue\n }\n }\n\n const fieldState: FieldState = {}\n renderField({\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug: entityType === 'collection' && entitySlug ? entitySlug : '-',\n data,\n fieldConfig: field,\n fieldSchemaMap: schemaMap,\n fieldState, // TODO,\n formState: {}, // TODO,\n indexPath: '',\n lastRenderedPath: '',\n operation: 'create',\n parentPath: '',\n parentSchemaPath: '',\n path: path ?? ('name' in field ? field.name : ''),\n permissions: true,\n preferences: {\n fields: {},\n },\n previousFieldState: undefined,\n renderAllFields: true,\n req,\n schemaPath: `${entitySlug}.${fieldPath.join('.')}`,\n siblingData: data,\n })\n\n return fieldState.customComponents ?? {}\n}\n"],"mappings":"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","ignoreList":[]}