@payloadcms/next 3.73.0-canary.5 → 3.73.0-internal.6ea481d

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIpB,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EAEvB,gBAAgB,EAGjB,MAAM,SAAS,CAAA;AAehB,OAAO,KAAmB,MAAM,OAAO,CAAA;AASvC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EACd,gBAAgB,GAChB,KAAK,CAAC,aAAa,CAAC,mBAAmB,GAAG,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,CAAC,CAAA;IAC9F,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,oBAAoB,CAAA;AAExB;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CACtB,CAqWA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAWjD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIpB,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EAEvB,gBAAgB,EAGjB,MAAM,SAAS,CAAA;AAehB,OAAO,KAAmB,MAAM,OAAO,CAAA;AASvC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EACd,gBAAgB,GAChB,KAAK,CAAC,aAAa,CAAC,mBAAmB,GAAG,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,CAAC,CAAA;IAC9F,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,oBAAoB,CAAA;AAExB;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CACtB,CAoWA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAYjD,CAAA"}
@@ -56,7 +56,12 @@ export const renderListView = async args => {
56
56
  },
57
57
  visibleEntities
58
58
  } = initPageResult;
59
- if (!permissions?.collections?.[collectionSlug]?.read) {
59
+ const {
60
+ routes: {
61
+ admin: adminRoute
62
+ }
63
+ } = config;
64
+ if (!collectionConfig || !permissions?.collections?.[collectionSlug]?.read || !visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) {
60
65
  throw new Error('not-found');
61
66
  }
62
67
  const query = queryFromArgs || queryFromReq;
@@ -73,268 +78,258 @@ export const renderListView = async args => {
73
78
  sort: query?.sort
74
79
  }
75
80
  });
76
- query.preset = collectionPreferences?.preset;
77
- query.page = isNumber(query?.page) ? Number(query.page) : 0;
78
- query.limit = collectionPreferences?.limit || collectionConfig.admin.pagination.defaultLimit;
79
- query.sort = collectionPreferences?.sort || (typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined);
80
- query.groupBy = collectionPreferences?.groupBy;
81
- query.columns = transformColumnsToSearchParams(collectionPreferences?.columns || []);
82
- const {
83
- routes: {
84
- admin: adminRoute
85
- }
86
- } = config;
87
- if (collectionConfig) {
88
- if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) {
89
- throw new Error('not-found');
90
- }
91
- const baseFilterConstraint = await (collectionConfig.admin?.baseFilter ?? collectionConfig.admin?.baseListFilter)?.({
92
- limit: query.limit,
93
- page: query.page,
94
- req,
95
- sort: query.sort
96
- });
97
- let queryPreset;
98
- let queryPresetPermissions;
99
- let whereWithMergedSearch = mergeListSearchAndWhere({
100
- collectionConfig,
101
- search: typeof query?.search === 'string' ? query.search : undefined,
102
- where: combineWhereConstraints([query?.where, baseFilterConstraint])
103
- });
104
- if (trash === true) {
105
- whereWithMergedSearch = {
106
- and: [whereWithMergedSearch, {
107
- deletedAt: {
108
- exists: true
109
- }
110
- }]
111
- };
112
- }
113
- if (collectionPreferences?.preset) {
114
- try {
115
- queryPreset = await payload.findByID({
116
- id: collectionPreferences?.preset,
117
- collection: 'payload-query-presets',
118
- depth: 0,
119
- overrideAccess: false,
120
- user
121
- });
122
- if (queryPreset) {
123
- queryPresetPermissions = await getDocumentPermissions({
124
- id: queryPreset.id,
125
- collectionConfig: config.collections.find(c => c.slug === 'payload-query-presets'),
126
- data: queryPreset,
127
- req
128
- })?.then(({
129
- docPermissions
130
- }) => docPermissions);
131
- }
132
- } catch (err) {
133
- req.payload.logger.error(`Error fetching query preset or preset permissions: ${err}`);
134
- }
135
- }
136
- let Table = null;
137
- let columnState = [];
138
- let data = {
139
- // no results default
140
- docs: [],
141
- hasNextPage: false,
142
- hasPrevPage: false,
143
- limit: query.limit,
144
- nextPage: null,
145
- page: 1,
146
- pagingCounter: 0,
147
- prevPage: null,
148
- totalDocs: 0,
149
- totalPages: 0
150
- };
151
- const clientCollectionConfig = clientConfig.collections.find(c => c.slug === collectionSlug);
152
- const columns = getColumns({
153
- clientConfig,
154
- collectionConfig: clientCollectionConfig,
155
- collectionSlug,
156
- columns: collectionPreferences?.columns,
157
- i18n,
158
- permissions
159
- });
160
- const select = collectionConfig.admin.enableListViewSelectAPI ? transformColumnsToSelect(columns) : undefined;
161
- /** Force select image fields for list view thumbnails */
162
- appendUploadSelectFields({
163
- collectionConfig,
164
- select
165
- });
81
+ let queryPreset;
82
+ let queryPresetPermissions;
83
+ if (collectionPreferences?.preset) {
166
84
  try {
167
- if (collectionConfig.admin.groupBy && query.groupBy) {
168
- ({
169
- columnState,
170
- data,
171
- Table
172
- } = await handleGroupBy({
173
- clientCollectionConfig,
174
- clientConfig,
175
- collectionConfig,
176
- collectionSlug,
177
- columns,
178
- customCellProps,
179
- drawerSlug,
180
- enableRowSelections,
181
- fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,
182
- query,
183
- req,
184
- select,
185
- trash,
186
- user,
187
- viewType,
188
- where: whereWithMergedSearch
189
- }));
190
- // Enrich documents with correct display status for drafts
191
- data = await enrichDocsWithVersionStatus({
192
- collectionConfig,
193
- data,
85
+ queryPreset = await payload.findByID({
86
+ id: collectionPreferences?.preset,
87
+ collection: 'payload-query-presets',
88
+ depth: 0,
89
+ overrideAccess: false,
90
+ user
91
+ });
92
+ if (queryPreset) {
93
+ queryPresetPermissions = (await getDocumentPermissions({
94
+ id: queryPreset.id,
95
+ collectionConfig: req.payload.collections['payload-query-presets'].config,
96
+ data: queryPreset,
194
97
  req
195
- });
196
- } else {
197
- data = await req.payload.find({
198
- collection: collectionSlug,
199
- depth: 0,
200
- draft: true,
201
- fallbackLocale: false,
202
- includeLockStatus: true,
203
- limit: query?.limit ? Number(query.limit) : undefined,
204
- locale: req.locale,
205
- overrideAccess: false,
206
- page: query?.page ? Number(query.page) : undefined,
207
- req,
208
- select,
209
- sort: query?.sort,
210
- trash,
211
- user,
212
- where: whereWithMergedSearch
213
- });
214
- // Enrich documents with correct display status for drafts
215
- data = await enrichDocsWithVersionStatus({
216
- collectionConfig,
217
- data,
218
- req
219
- });
220
- ({
221
- columnState,
222
- Table
223
- } = renderTable({
224
- clientCollectionConfig,
225
- collectionConfig,
226
- columns,
227
- customCellProps,
228
- data,
229
- drawerSlug,
230
- enableRowSelections,
231
- fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,
232
- i18n: req.i18n,
233
- orderableFieldName: collectionConfig.orderable === true ? '_order' : undefined,
234
- payload: req.payload,
235
- query,
236
- req,
237
- useAsTitle: collectionConfig.admin.useAsTitle,
238
- viewType
239
- }));
98
+ }))?.docPermissions;
240
99
  }
241
100
  } catch (err) {
242
- if (err.name !== 'QueryError') {
243
- // QueryErrors are expected when a user filters by a field they do not have access to
244
- req.payload.logger.error({
245
- err,
246
- msg: `There was an error fetching the list view data for collection ${collectionSlug}`
247
- });
248
- throw err;
249
- }
101
+ req.payload.logger.error(`Error fetching query preset or preset permissions: ${err}`);
250
102
  }
251
- const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap);
252
- const resolvedFilterOptions = await resolveAllFilterOptions({
253
- fields: collectionConfig.fields,
254
- req
255
- });
256
- const staticDescription = typeof collectionConfig.admin.description === 'function' ? collectionConfig.admin.description({
257
- t: i18n.t
258
- }) : collectionConfig.admin.description;
259
- const newDocumentURL = formatAdminURL({
260
- adminRoute,
261
- path: `/collections/${collectionSlug}/create`
262
- });
263
- const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create;
264
- const hasDeletePermission = permissions?.collections?.[collectionSlug]?.delete;
265
- // Check if there's a notFound query parameter (document ID that wasn't found)
266
- const notFoundDocId = typeof searchParams?.notFound === 'string' ? searchParams.notFound : null;
267
- const serverProps = {
268
- collectionConfig,
269
- data,
270
- i18n,
271
- limit: query.limit,
272
- listPreferences: collectionPreferences,
273
- listSearchableFields: collectionConfig.admin.listSearchableFields,
274
- locale: fullLocale,
275
- params,
276
- payload,
277
- permissions,
278
- searchParams,
279
- user
103
+ }
104
+ query.preset = queryPreset?.id;
105
+ if (queryPreset?.where) {
106
+ query.where = queryPreset.where;
107
+ }
108
+ const columnPreference = queryPreset?.columns ?? collectionPreferences?.columns;
109
+ query.columns = transformColumnsToSearchParams(columnPreference);
110
+ query.page = isNumber(query?.page) ? Number(query.page) : 0;
111
+ query.limit = collectionPreferences?.limit || collectionConfig.admin.pagination.defaultLimit;
112
+ query.sort = collectionPreferences?.sort || (typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined);
113
+ const baseFilterConstraint = await (collectionConfig.admin?.baseFilter ?? collectionConfig.admin?.baseListFilter)?.({
114
+ limit: query.limit,
115
+ page: query.page,
116
+ req,
117
+ sort: query.sort
118
+ });
119
+ let whereWithMergedSearch = mergeListSearchAndWhere({
120
+ collectionConfig,
121
+ search: typeof query?.search === 'string' ? query.search : undefined,
122
+ where: combineWhereConstraints([query?.where, baseFilterConstraint])
123
+ });
124
+ if (trash === true) {
125
+ whereWithMergedSearch = {
126
+ and: [whereWithMergedSearch, {
127
+ deletedAt: {
128
+ exists: true
129
+ }
130
+ }]
280
131
  };
281
- const listViewSlots = renderListViewSlots({
282
- clientProps: {
132
+ }
133
+ let Table = null;
134
+ let columnState = [];
135
+ let data = {
136
+ // no results default
137
+ docs: [],
138
+ hasNextPage: false,
139
+ hasPrevPage: false,
140
+ limit: query.limit,
141
+ nextPage: null,
142
+ page: 1,
143
+ pagingCounter: 0,
144
+ prevPage: null,
145
+ totalDocs: 0,
146
+ totalPages: 0
147
+ };
148
+ const clientCollectionConfig = clientConfig.collections.find(c => c.slug === collectionSlug);
149
+ const columns = getColumns({
150
+ clientConfig,
151
+ collectionConfig: clientCollectionConfig,
152
+ collectionSlug,
153
+ columns: columnPreference,
154
+ i18n,
155
+ permissions
156
+ });
157
+ const select = collectionConfig.admin.enableListViewSelectAPI ? transformColumnsToSelect(columns) : undefined;
158
+ /** Force select image fields for list view thumbnails */
159
+ appendUploadSelectFields({
160
+ collectionConfig,
161
+ select
162
+ });
163
+ try {
164
+ if (collectionConfig.admin.groupBy && query.groupBy) {
165
+ ({
166
+ columnState,
167
+ data,
168
+ Table
169
+ } = await handleGroupBy({
170
+ clientCollectionConfig,
171
+ clientConfig,
172
+ collectionConfig,
283
173
  collectionSlug,
284
- hasCreatePermission,
285
- hasDeletePermission,
286
- newDocumentURL
287
- },
288
- collectionConfig,
289
- description: staticDescription,
290
- notFoundDocId,
291
- payload,
292
- serverProps
293
- });
294
- const isInDrawer = Boolean(drawerSlug);
295
- // Needed to prevent: Only plain objects can be passed to Client Components from Server Components. Objects with toJSON methods are not supported. Convert it manually to a simple value before passing it to props.
296
- // Is there a way to avoid this? The `where` object is already seemingly plain, but is not bc it originates from the params.
297
- query.where = query?.where ? JSON.parse(JSON.stringify(query?.where || {})) : undefined;
298
- return {
299
- List: /*#__PURE__*/_jsxs(Fragment, {
300
- children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
301
- permissions: permissions
302
- }), /*#__PURE__*/_jsx(ListQueryProvider, {
303
- collectionSlug: collectionSlug,
304
- data: data,
305
- modifySearchParams: !isInDrawer,
306
- orderableFieldName: collectionConfig.orderable === true ? '_order' : undefined,
307
- query: query,
308
- children: RenderServerComponent({
309
- clientProps: {
310
- ...listViewSlots,
311
- collectionSlug,
312
- columnState,
313
- disableBulkDelete,
314
- disableBulkEdit: collectionConfig.disableBulkEdit ?? disableBulkEdit,
315
- disableQueryPresets,
316
- enableRowSelections,
317
- hasCreatePermission,
318
- hasDeletePermission,
319
- listPreferences: collectionPreferences,
320
- newDocumentURL,
321
- queryPreset,
322
- queryPresetPermissions,
323
- renderedFilters,
324
- resolvedFilterOptions,
325
- Table,
326
- viewType
327
- },
328
- Component: ComponentOverride ?? collectionConfig?.admin?.components?.views?.list?.Component,
329
- Fallback: DefaultListView,
330
- importMap: payload.importMap,
331
- serverProps
332
- })
333
- })]
334
- })
335
- };
174
+ columns,
175
+ customCellProps,
176
+ drawerSlug,
177
+ enableRowSelections,
178
+ fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,
179
+ query,
180
+ req,
181
+ select,
182
+ trash,
183
+ user,
184
+ viewType,
185
+ where: whereWithMergedSearch
186
+ }));
187
+ // Enrich documents with correct display status for drafts
188
+ data = await enrichDocsWithVersionStatus({
189
+ collectionConfig,
190
+ data,
191
+ req
192
+ });
193
+ } else {
194
+ data = await req.payload.find({
195
+ collection: collectionSlug,
196
+ depth: 0,
197
+ draft: true,
198
+ fallbackLocale: false,
199
+ includeLockStatus: true,
200
+ limit: query?.limit ? Number(query.limit) : undefined,
201
+ locale: req.locale,
202
+ overrideAccess: false,
203
+ page: query?.page ? Number(query.page) : undefined,
204
+ req,
205
+ select,
206
+ sort: query?.sort,
207
+ trash,
208
+ user,
209
+ where: whereWithMergedSearch
210
+ });
211
+ // Enrich documents with correct display status for drafts
212
+ data = await enrichDocsWithVersionStatus({
213
+ collectionConfig,
214
+ data,
215
+ req
216
+ });
217
+ ({
218
+ columnState,
219
+ Table
220
+ } = renderTable({
221
+ clientCollectionConfig,
222
+ collectionConfig,
223
+ columns,
224
+ customCellProps,
225
+ data,
226
+ drawerSlug,
227
+ enableRowSelections,
228
+ fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,
229
+ i18n: req.i18n,
230
+ orderableFieldName: collectionConfig.orderable === true ? '_order' : undefined,
231
+ payload: req.payload,
232
+ query,
233
+ req,
234
+ useAsTitle: collectionConfig.admin.useAsTitle,
235
+ viewType
236
+ }));
237
+ }
238
+ } catch (err) {
239
+ if (err.name !== 'QueryError') {
240
+ // QueryErrors are expected when a user filters by a field they do not have access to
241
+ req.payload.logger.error({
242
+ err,
243
+ msg: `There was an error fetching the list view data for collection ${collectionSlug}`
244
+ });
245
+ throw err;
246
+ }
336
247
  }
337
- throw new Error('not-found');
248
+ const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap);
249
+ const resolvedFilterOptions = await resolveAllFilterOptions({
250
+ fields: collectionConfig.fields,
251
+ req
252
+ });
253
+ const staticDescription = typeof collectionConfig.admin.description === 'function' ? collectionConfig.admin.description({
254
+ t: i18n.t
255
+ }) : collectionConfig.admin.description;
256
+ const newDocumentURL = formatAdminURL({
257
+ adminRoute,
258
+ path: `/collections/${collectionSlug}/create`
259
+ });
260
+ const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create;
261
+ const hasDeletePermission = permissions?.collections?.[collectionSlug]?.delete;
262
+ // Check if there's a notFound query parameter (document ID that wasn't found)
263
+ const notFoundDocId = typeof searchParams?.notFound === 'string' ? searchParams.notFound : null;
264
+ const serverProps = {
265
+ collectionConfig,
266
+ data,
267
+ i18n,
268
+ limit: query.limit,
269
+ listPreferences: collectionPreferences,
270
+ listSearchableFields: collectionConfig.admin.listSearchableFields,
271
+ locale: fullLocale,
272
+ params,
273
+ payload,
274
+ permissions,
275
+ searchParams,
276
+ user
277
+ };
278
+ const listViewSlots = renderListViewSlots({
279
+ clientProps: {
280
+ collectionSlug,
281
+ hasCreatePermission,
282
+ hasDeletePermission,
283
+ newDocumentURL
284
+ },
285
+ collectionConfig,
286
+ description: staticDescription,
287
+ notFoundDocId,
288
+ payload,
289
+ serverProps
290
+ });
291
+ const isInDrawer = Boolean(drawerSlug);
292
+ // Needed to prevent: Only plain objects can be passed to Client Components from Server Components. Objects with toJSON methods are not supported. Convert it manually to a simple value before passing it to props.
293
+ // Is there a way to avoid this? The `where` object is already seemingly plain, but is not bc it originates from the params.
294
+ query.where = query?.where ? JSON.parse(JSON.stringify(query?.where || {})) : undefined;
295
+ return {
296
+ List: /*#__PURE__*/_jsxs(Fragment, {
297
+ children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
298
+ permissions: permissions
299
+ }), /*#__PURE__*/_jsx(ListQueryProvider, {
300
+ collectionSlug: collectionSlug,
301
+ data: data,
302
+ modifySearchParams: !isInDrawer,
303
+ orderableFieldName: collectionConfig.orderable === true ? '_order' : undefined,
304
+ query: query,
305
+ children: RenderServerComponent({
306
+ clientProps: {
307
+ ...listViewSlots,
308
+ collectionSlug,
309
+ columnState,
310
+ disableBulkDelete,
311
+ disableBulkEdit: collectionConfig.disableBulkEdit ?? disableBulkEdit,
312
+ disableQueryPresets,
313
+ enableRowSelections,
314
+ hasCreatePermission,
315
+ hasDeletePermission,
316
+ listPreferences: collectionPreferences,
317
+ newDocumentURL,
318
+ queryPreset,
319
+ queryPresetPermissions,
320
+ renderedFilters,
321
+ resolvedFilterOptions,
322
+ Table,
323
+ viewType
324
+ },
325
+ Component: ComponentOverride ?? collectionConfig?.admin?.components?.views?.list?.Component,
326
+ Fallback: DefaultListView,
327
+ importMap: payload.importMap,
328
+ serverProps
329
+ })
330
+ })]
331
+ })
332
+ };
338
333
  };
339
334
  export const ListView = async args => {
340
335
  try {
@@ -346,6 +341,7 @@ export const ListView = async args => {
346
341
  });
347
342
  return RenderedList;
348
343
  } catch (error) {
344
+ // Pass through Next.js errors
349
345
  if (error.message === 'not-found') {
350
346
  notFound();
351
347
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DefaultListView","HydrateAuthProvider","ListQueryProvider","RenderServerComponent","getColumns","renderFilters","renderTable","upsertPreferences","notFound","appendUploadSelectFields","combineWhereConstraints","formatAdminURL","isNumber","mergeListSearchAndWhere","transformColumnsToPreferences","transformColumnsToSearchParams","React","Fragment","getDocumentPermissions","enrichDocsWithVersionStatus","handleGroupBy","renderListViewSlots","resolveAllFilterOptions","transformColumnsToSelect","renderListView","args","clientConfig","ComponentOverride","customCellProps","disableBulkDelete","disableBulkEdit","disableQueryPresets","drawerSlug","enableRowSelections","initPageResult","overrideEntityVisibility","params","query","queryFromArgs","searchParams","trash","viewType","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","read","Error","columnsFromQuery","columns","queryByGroup","JSON","parse","collectionPreferences","key","value","groupBy","limit","Number","undefined","preset","sort","page","admin","pagination","defaultLimit","defaultSort","routes","adminRoute","includes","baseFilterConstraint","baseFilter","baseListFilter","queryPreset","queryPresetPermissions","whereWithMergedSearch","search","where","and","deletedAt","exists","findByID","id","collection","depth","overrideAccess","find","c","data","then","docPermissions","err","logger","error","Table","columnState","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","clientCollectionConfig","select","enableListViewSelectAPI","fieldPermissions","fields","draft","fallbackLocale","includeLockStatus","orderableFieldName","orderable","useAsTitle","name","msg","renderedFilters","importMap","resolvedFilterOptions","staticDescription","description","t","newDocumentURL","path","hasCreatePermission","create","hasDeletePermission","delete","notFoundDocId","serverProps","listPreferences","listSearchableFields","listViewSlots","clientProps","isInDrawer","Boolean","stringify","List","_jsxs","_jsx","modifySearchParams","Component","components","views","list","Fallback","ListView","RenderedList","message","console"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionPreferences,\n Column,\n ColumnPreference,\n ListQuery,\n ListViewClientProps,\n ListViewServerPropsOnly,\n PaginatedDocs,\n PayloadComponent,\n QueryPreset,\n SanitizedCollectionPermission,\n} from 'payload'\n\nimport { DefaultListView, HydrateAuthProvider, ListQueryProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { getColumns, renderFilters, renderTable, upsertPreferences } from '@payloadcms/ui/rsc'\nimport { notFound } from 'next/navigation.js'\nimport {\n appendUploadSelectFields,\n combineWhereConstraints,\n formatAdminURL,\n isNumber,\n mergeListSearchAndWhere,\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { enrichDocsWithVersionStatus } from './enrichDocsWithVersionStatus.js'\nimport { handleGroupBy } from './handleGroupBy.js'\nimport { renderListViewSlots } from './renderListViewSlots.js'\nimport { resolveAllFilterOptions } from './resolveAllFilterOptions.js'\nimport { transformColumnsToSelect } from './transformColumnsToSelect.js'\n\n/**\n * @internal\n */\nexport type RenderListViewArgs = {\n /**\n * Allows providing your own list view component. This will override the default list view component and\n * the collection's configured list view component (if any).\n */\n ComponentOverride?:\n | PayloadComponent\n | React.ComponentType<ListViewClientProps | (ListViewClientProps & ListViewServerPropsOnly)>\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n disableQueryPresets?: boolean\n drawerSlug?: string\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n /**\n * If not ListQuery is provided, `req.query` will be used.\n */\n query?: ListQuery\n redirectAfterDelete?: boolean\n redirectAfterDuplicate?: boolean\n /**\n * @experimental This prop is subject to change in future releases.\n */\n trash?: boolean\n} & AdminViewServerProps\n\n/**\n * This function is responsible for rendering\n * the list view on the server for both:\n * - default list view\n * - list view within drawers\n *\n * @internal\n */\nexport const renderListView = async (\n args: RenderListViewArgs,\n): Promise<{\n List: React.ReactNode\n}> => {\n const {\n clientConfig,\n ComponentOverride,\n customCellProps,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n initPageResult,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n trash,\n viewType,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n if (!permissions?.collections?.[collectionSlug]?.read) {\n throw new Error('not-found')\n }\n\n const query: ListQuery = queryFromArgs || queryFromReq\n\n const columnsFromQuery: ColumnPreference[] = transformColumnsToPreferences(query?.columns)\n\n query.queryByGroup =\n query?.queryByGroup && typeof query.queryByGroup === 'string'\n ? JSON.parse(query.queryByGroup)\n : query?.queryByGroup\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: `collection-${collectionSlug}`,\n req,\n value: {\n columns: columnsFromQuery,\n groupBy: query?.groupBy,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n preset: query?.preset,\n sort: query?.sort as string,\n },\n })\n\n query.preset = collectionPreferences?.preset\n\n query.page = isNumber(query?.page) ? Number(query.page) : 0\n\n query.limit = collectionPreferences?.limit || collectionConfig.admin.pagination.defaultLimit\n\n query.sort =\n collectionPreferences?.sort ||\n (typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined)\n\n query.groupBy = collectionPreferences?.groupBy\n\n query.columns = transformColumnsToSearchParams(collectionPreferences?.columns || [])\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n if (collectionConfig) {\n if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) {\n throw new Error('not-found')\n }\n\n const baseFilterConstraint = await (\n collectionConfig.admin?.baseFilter ?? collectionConfig.admin?.baseListFilter\n )?.({\n limit: query.limit,\n page: query.page,\n req,\n sort: query.sort,\n })\n\n let queryPreset: QueryPreset | undefined\n let queryPresetPermissions: SanitizedCollectionPermission | undefined\n\n let whereWithMergedSearch = mergeListSearchAndWhere({\n collectionConfig,\n search: typeof query?.search === 'string' ? query.search : undefined,\n where: combineWhereConstraints([query?.where, baseFilterConstraint]),\n })\n\n if (trash === true) {\n whereWithMergedSearch = {\n and: [\n whereWithMergedSearch,\n {\n deletedAt: {\n exists: true,\n },\n },\n ],\n }\n }\n\n if (collectionPreferences?.preset) {\n try {\n queryPreset = (await payload.findByID({\n id: collectionPreferences?.preset,\n collection: 'payload-query-presets',\n depth: 0,\n overrideAccess: false,\n user,\n })) as QueryPreset\n\n if (queryPreset) {\n queryPresetPermissions = await getDocumentPermissions({\n id: queryPreset.id,\n collectionConfig: config.collections.find((c) => c.slug === 'payload-query-presets'),\n data: queryPreset,\n req,\n })?.then(({ docPermissions }) => docPermissions)\n }\n } catch (err) {\n req.payload.logger.error(`Error fetching query preset or preset permissions: ${err}`)\n }\n }\n\n let Table: React.ReactNode | React.ReactNode[] = null\n let columnState: Column[] = []\n let data: PaginatedDocs = {\n // no results default\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: query.limit,\n nextPage: null,\n page: 1,\n pagingCounter: 0,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n }\n\n const clientCollectionConfig = clientConfig.collections.find((c) => c.slug === collectionSlug)\n\n const columns = getColumns({\n clientConfig,\n collectionConfig: clientCollectionConfig,\n collectionSlug,\n columns: collectionPreferences?.columns,\n i18n,\n permissions,\n })\n\n const select = collectionConfig.admin.enableListViewSelectAPI\n ? transformColumnsToSelect(columns)\n : undefined\n\n /** Force select image fields for list view thumbnails */\n appendUploadSelectFields({\n collectionConfig,\n select,\n })\n\n try {\n if (collectionConfig.admin.groupBy && query.groupBy) {\n ;({ columnState, data, Table } = await handleGroupBy({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collectionSlug,\n columns,\n customCellProps,\n drawerSlug,\n enableRowSelections,\n fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,\n query,\n req,\n select,\n trash,\n user,\n viewType,\n where: whereWithMergedSearch,\n }))\n\n // Enrich documents with correct display status for drafts\n data = await enrichDocsWithVersionStatus({\n collectionConfig,\n data,\n req,\n })\n } else {\n data = await req.payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: false,\n includeLockStatus: true,\n limit: query?.limit ? Number(query.limit) : undefined,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page ? Number(query.page) : undefined,\n req,\n select,\n sort: query?.sort,\n trash,\n user,\n where: whereWithMergedSearch,\n })\n\n // Enrich documents with correct display status for drafts\n data = await enrichDocsWithVersionStatus({\n collectionConfig,\n data,\n req,\n })\n ;({ columnState, Table } = renderTable({\n clientCollectionConfig,\n collectionConfig,\n columns,\n customCellProps,\n data,\n drawerSlug,\n enableRowSelections,\n fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,\n i18n: req.i18n,\n orderableFieldName: collectionConfig.orderable === true ? '_order' : undefined,\n payload: req.payload,\n query,\n req,\n useAsTitle: collectionConfig.admin.useAsTitle,\n viewType,\n }))\n }\n } catch (err) {\n if (err.name !== 'QueryError') {\n // QueryErrors are expected when a user filters by a field they do not have access to\n req.payload.logger.error({\n err,\n msg: `There was an error fetching the list view data for collection ${collectionSlug}`,\n })\n throw err\n }\n }\n\n const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n\n const resolvedFilterOptions = await resolveAllFilterOptions({\n fields: collectionConfig.fields,\n req,\n })\n\n const staticDescription =\n typeof collectionConfig.admin.description === 'function'\n ? collectionConfig.admin.description({ t: i18n.t })\n : collectionConfig.admin.description\n\n const newDocumentURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/create`,\n })\n\n const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create\n const hasDeletePermission = permissions?.collections?.[collectionSlug]?.delete\n\n // Check if there's a notFound query parameter (document ID that wasn't found)\n const notFoundDocId = typeof searchParams?.notFound === 'string' ? searchParams.notFound : null\n\n const serverProps: ListViewServerPropsOnly = {\n collectionConfig,\n data,\n i18n,\n limit: query.limit,\n listPreferences: collectionPreferences,\n listSearchableFields: collectionConfig.admin.listSearchableFields,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }\n\n const listViewSlots = renderListViewSlots({\n clientProps: {\n collectionSlug,\n hasCreatePermission,\n hasDeletePermission,\n newDocumentURL,\n },\n collectionConfig,\n description: staticDescription,\n notFoundDocId,\n payload,\n serverProps,\n })\n\n const isInDrawer = Boolean(drawerSlug)\n\n // Needed to prevent: Only plain objects can be passed to Client Components from Server Components. Objects with toJSON methods are not supported. Convert it manually to a simple value before passing it to props.\n // Is there a way to avoid this? The `where` object is already seemingly plain, but is not bc it originates from the params.\n query.where = query?.where ? JSON.parse(JSON.stringify(query?.where || {})) : undefined\n\n return {\n List: (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <ListQueryProvider\n collectionSlug={collectionSlug}\n data={data}\n modifySearchParams={!isInDrawer}\n orderableFieldName={collectionConfig.orderable === true ? '_order' : undefined}\n query={query}\n >\n {RenderServerComponent({\n clientProps: {\n ...listViewSlots,\n collectionSlug,\n columnState,\n disableBulkDelete,\n disableBulkEdit: collectionConfig.disableBulkEdit ?? disableBulkEdit,\n disableQueryPresets,\n enableRowSelections,\n hasCreatePermission,\n hasDeletePermission,\n listPreferences: collectionPreferences,\n newDocumentURL,\n queryPreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n Table,\n viewType,\n } satisfies ListViewClientProps,\n Component:\n ComponentOverride ?? collectionConfig?.admin?.components?.views?.list?.Component,\n Fallback: DefaultListView,\n importMap: payload.importMap,\n serverProps,\n })}\n </ListQueryProvider>\n </Fragment>\n ),\n }\n }\n\n throw new Error('not-found')\n}\n\nexport const ListView: React.FC<RenderListViewArgs> = async (args) => {\n try {\n const { List: RenderedList } = await renderListView({ ...args, enableRowSelections: true })\n return RenderedList\n } catch (error) {\n if (error.message === 'not-found') {\n notFound()\n } else {\n console.error(error) // eslint-disable-line no-console\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["DefaultListView","HydrateAuthProvider","ListQueryProvider","RenderServerComponent","getColumns","renderFilters","renderTable","upsertPreferences","notFound","appendUploadSelectFields","combineWhereConstraints","formatAdminURL","isNumber","mergeListSearchAndWhere","transformColumnsToPreferences","transformColumnsToSearchParams","React","Fragment","getDocumentPermissions","enrichDocsWithVersionStatus","handleGroupBy","renderListViewSlots","resolveAllFilterOptions","transformColumnsToSelect","renderListView","args","clientConfig","ComponentOverride","customCellProps","disableBulkDelete","disableBulkEdit","disableQueryPresets","drawerSlug","enableRowSelections","initPageResult","overrideEntityVisibility","params","query","queryFromArgs","searchParams","trash","viewType","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","routes","admin","adminRoute","collections","read","includes","Error","columnsFromQuery","columns","queryByGroup","JSON","parse","collectionPreferences","key","value","groupBy","limit","Number","undefined","preset","sort","queryPreset","queryPresetPermissions","findByID","id","collection","depth","overrideAccess","data","docPermissions","err","logger","error","where","columnPreference","page","pagination","defaultLimit","defaultSort","baseFilterConstraint","baseFilter","baseListFilter","whereWithMergedSearch","search","and","deletedAt","exists","Table","columnState","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","clientCollectionConfig","find","c","select","enableListViewSelectAPI","fieldPermissions","fields","draft","fallbackLocale","includeLockStatus","orderableFieldName","orderable","useAsTitle","name","msg","renderedFilters","importMap","resolvedFilterOptions","staticDescription","description","t","newDocumentURL","path","hasCreatePermission","create","hasDeletePermission","delete","notFoundDocId","serverProps","listPreferences","listSearchableFields","listViewSlots","clientProps","isInDrawer","Boolean","stringify","List","_jsxs","_jsx","modifySearchParams","Component","components","views","list","Fallback","ListView","RenderedList","message","console"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionPreferences,\n Column,\n ColumnPreference,\n ListQuery,\n ListViewClientProps,\n ListViewServerPropsOnly,\n PaginatedDocs,\n PayloadComponent,\n QueryPreset,\n SanitizedCollectionPermission,\n} from 'payload'\n\nimport { DefaultListView, HydrateAuthProvider, ListQueryProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { getColumns, renderFilters, renderTable, upsertPreferences } from '@payloadcms/ui/rsc'\nimport { notFound } from 'next/navigation.js'\nimport {\n appendUploadSelectFields,\n combineWhereConstraints,\n formatAdminURL,\n isNumber,\n mergeListSearchAndWhere,\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { enrichDocsWithVersionStatus } from './enrichDocsWithVersionStatus.js'\nimport { handleGroupBy } from './handleGroupBy.js'\nimport { renderListViewSlots } from './renderListViewSlots.js'\nimport { resolveAllFilterOptions } from './resolveAllFilterOptions.js'\nimport { transformColumnsToSelect } from './transformColumnsToSelect.js'\n\n/**\n * @internal\n */\nexport type RenderListViewArgs = {\n /**\n * Allows providing your own list view component. This will override the default list view component and\n * the collection's configured list view component (if any).\n */\n ComponentOverride?:\n | PayloadComponent\n | React.ComponentType<ListViewClientProps | (ListViewClientProps & ListViewServerPropsOnly)>\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n disableQueryPresets?: boolean\n drawerSlug?: string\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n /**\n * If not ListQuery is provided, `req.query` will be used.\n */\n query?: ListQuery\n redirectAfterDelete?: boolean\n redirectAfterDuplicate?: boolean\n /**\n * @experimental This prop is subject to change in future releases.\n */\n trash?: boolean\n} & AdminViewServerProps\n\n/**\n * This function is responsible for rendering\n * the list view on the server for both:\n * - default list view\n * - list view within drawers\n *\n * @internal\n */\nexport const renderListView = async (\n args: RenderListViewArgs,\n): Promise<{\n List: React.ReactNode\n}> => {\n const {\n clientConfig,\n ComponentOverride,\n customCellProps,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n initPageResult,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n trash,\n viewType,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n const {\n routes: { admin: adminRoute },\n } = config\n\n if (\n !collectionConfig ||\n !permissions?.collections?.[collectionSlug]?.read ||\n (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility)\n ) {\n throw new Error('not-found')\n }\n\n const query: ListQuery = queryFromArgs || queryFromReq\n\n const columnsFromQuery: ColumnPreference[] = transformColumnsToPreferences(query?.columns)\n\n query.queryByGroup =\n query?.queryByGroup && typeof query.queryByGroup === 'string'\n ? JSON.parse(query.queryByGroup)\n : query?.queryByGroup\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: `collection-${collectionSlug}`,\n req,\n value: {\n columns: columnsFromQuery,\n groupBy: query?.groupBy,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n preset: query?.preset,\n sort: query?.sort as string,\n },\n })\n\n let queryPreset: QueryPreset | undefined\n let queryPresetPermissions: SanitizedCollectionPermission | undefined\n\n if (collectionPreferences?.preset) {\n try {\n queryPreset = (await payload.findByID({\n id: collectionPreferences?.preset,\n collection: 'payload-query-presets',\n depth: 0,\n overrideAccess: false,\n user,\n })) as QueryPreset\n\n if (queryPreset) {\n queryPresetPermissions = (\n await getDocumentPermissions({\n id: queryPreset.id,\n collectionConfig: req.payload.collections['payload-query-presets'].config,\n data: queryPreset,\n req,\n })\n )?.docPermissions\n }\n } catch (err) {\n req.payload.logger.error(`Error fetching query preset or preset permissions: ${err}`)\n }\n }\n\n query.preset = queryPreset?.id\n if (queryPreset?.where) {\n query.where = queryPreset.where\n }\n\n const columnPreference = queryPreset?.columns ?? collectionPreferences?.columns\n query.columns = transformColumnsToSearchParams(columnPreference)\n\n query.page = isNumber(query?.page) ? Number(query.page) : 0\n\n query.limit = collectionPreferences?.limit || collectionConfig.admin.pagination.defaultLimit\n\n query.sort =\n collectionPreferences?.sort ||\n (typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined)\n\n const baseFilterConstraint = await (\n collectionConfig.admin?.baseFilter ?? collectionConfig.admin?.baseListFilter\n )?.({\n limit: query.limit,\n page: query.page,\n req,\n sort: query.sort,\n })\n\n let whereWithMergedSearch = mergeListSearchAndWhere({\n collectionConfig,\n search: typeof query?.search === 'string' ? query.search : undefined,\n where: combineWhereConstraints([query?.where, baseFilterConstraint]),\n })\n\n if (trash === true) {\n whereWithMergedSearch = {\n and: [\n whereWithMergedSearch,\n {\n deletedAt: {\n exists: true,\n },\n },\n ],\n }\n }\n\n let Table: React.ReactNode | React.ReactNode[] = null\n let columnState: Column[] = []\n let data: PaginatedDocs = {\n // no results default\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: query.limit,\n nextPage: null,\n page: 1,\n pagingCounter: 0,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n }\n\n const clientCollectionConfig = clientConfig.collections.find((c) => c.slug === collectionSlug)\n\n const columns = getColumns({\n clientConfig,\n collectionConfig: clientCollectionConfig,\n collectionSlug,\n columns: columnPreference,\n i18n,\n permissions,\n })\n\n const select = collectionConfig.admin.enableListViewSelectAPI\n ? transformColumnsToSelect(columns)\n : undefined\n\n /** Force select image fields for list view thumbnails */\n appendUploadSelectFields({\n collectionConfig,\n select,\n })\n\n try {\n if (collectionConfig.admin.groupBy && query.groupBy) {\n ;({ columnState, data, Table } = await handleGroupBy({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collectionSlug,\n columns,\n customCellProps,\n drawerSlug,\n enableRowSelections,\n fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,\n query,\n req,\n select,\n trash,\n user,\n viewType,\n where: whereWithMergedSearch,\n }))\n\n // Enrich documents with correct display status for drafts\n data = await enrichDocsWithVersionStatus({\n collectionConfig,\n data,\n req,\n })\n } else {\n data = await req.payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: false,\n includeLockStatus: true,\n limit: query?.limit ? Number(query.limit) : undefined,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page ? Number(query.page) : undefined,\n req,\n select,\n sort: query?.sort,\n trash,\n user,\n where: whereWithMergedSearch,\n })\n\n // Enrich documents with correct display status for drafts\n data = await enrichDocsWithVersionStatus({\n collectionConfig,\n data,\n req,\n })\n ;({ columnState, Table } = renderTable({\n clientCollectionConfig,\n collectionConfig,\n columns,\n customCellProps,\n data,\n drawerSlug,\n enableRowSelections,\n fieldPermissions: permissions?.collections?.[collectionSlug]?.fields,\n i18n: req.i18n,\n orderableFieldName: collectionConfig.orderable === true ? '_order' : undefined,\n payload: req.payload,\n query,\n req,\n useAsTitle: collectionConfig.admin.useAsTitle,\n viewType,\n }))\n }\n } catch (err) {\n if (err.name !== 'QueryError') {\n // QueryErrors are expected when a user filters by a field they do not have access to\n req.payload.logger.error({\n err,\n msg: `There was an error fetching the list view data for collection ${collectionSlug}`,\n })\n throw err\n }\n }\n\n const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n\n const resolvedFilterOptions = await resolveAllFilterOptions({\n fields: collectionConfig.fields,\n req,\n })\n\n const staticDescription =\n typeof collectionConfig.admin.description === 'function'\n ? collectionConfig.admin.description({ t: i18n.t })\n : collectionConfig.admin.description\n\n const newDocumentURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/create`,\n })\n\n const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create\n const hasDeletePermission = permissions?.collections?.[collectionSlug]?.delete\n\n // Check if there's a notFound query parameter (document ID that wasn't found)\n const notFoundDocId = typeof searchParams?.notFound === 'string' ? searchParams.notFound : null\n\n const serverProps: ListViewServerPropsOnly = {\n collectionConfig,\n data,\n i18n,\n limit: query.limit,\n listPreferences: collectionPreferences,\n listSearchableFields: collectionConfig.admin.listSearchableFields,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }\n\n const listViewSlots = renderListViewSlots({\n clientProps: {\n collectionSlug,\n hasCreatePermission,\n hasDeletePermission,\n newDocumentURL,\n },\n collectionConfig,\n description: staticDescription,\n notFoundDocId,\n payload,\n serverProps,\n })\n\n const isInDrawer = Boolean(drawerSlug)\n\n // Needed to prevent: Only plain objects can be passed to Client Components from Server Components. Objects with toJSON methods are not supported. Convert it manually to a simple value before passing it to props.\n // Is there a way to avoid this? The `where` object is already seemingly plain, but is not bc it originates from the params.\n query.where = query?.where ? JSON.parse(JSON.stringify(query?.where || {})) : undefined\n\n return {\n List: (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <ListQueryProvider\n collectionSlug={collectionSlug}\n data={data}\n modifySearchParams={!isInDrawer}\n orderableFieldName={collectionConfig.orderable === true ? '_order' : undefined}\n query={query}\n >\n {RenderServerComponent({\n clientProps: {\n ...listViewSlots,\n collectionSlug,\n columnState,\n disableBulkDelete,\n disableBulkEdit: collectionConfig.disableBulkEdit ?? disableBulkEdit,\n disableQueryPresets,\n enableRowSelections,\n hasCreatePermission,\n hasDeletePermission,\n listPreferences: collectionPreferences,\n newDocumentURL,\n queryPreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n Table,\n viewType,\n } satisfies ListViewClientProps,\n Component:\n ComponentOverride ?? collectionConfig?.admin?.components?.views?.list?.Component,\n Fallback: DefaultListView,\n importMap: payload.importMap,\n serverProps,\n })}\n </ListQueryProvider>\n </Fragment>\n ),\n }\n}\n\nexport const ListView: React.FC<RenderListViewArgs> = async (args) => {\n try {\n const { List: RenderedList } = await renderListView({ ...args, enableRowSelections: true })\n return RenderedList\n } catch (error) {\n // Pass through Next.js errors\n if (error.message === 'not-found') {\n notFound()\n } else {\n console.error(error) // eslint-disable-line no-console\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,5 +6,5 @@ export declare const generateLabelFromValue: ({ field, locale, parentIsLocalized
6
6
  parentIsLocalized: boolean;
7
7
  req: PayloadRequest;
8
8
  value: RelationshipValue;
9
- }) => string;
9
+ }) => Promise<string>;
10
10
  //# sourceMappingURL=generateLabelFromValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateLabelFromValue.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAc,MAAM,SAAS,CAAA;AAS5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,eAAO,MAAM,sBAAsB,sDAMhC;IACD,KAAK,EAAE,iBAAiB,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,OAAO,CAAA;IAC1B,GAAG,EAAE,cAAc,CAAA;IACnB,KAAK,EAAE,iBAAiB,CAAA;CACzB,KAAG,MAyDH,CAAA"}
1
+ {"version":3,"file":"generateLabelFromValue.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAc,MAAM,SAAS,CAAA;AAS5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,eAAO,MAAM,sBAAsB,sDAMhC;IACD,KAAK,EAAE,iBAAiB,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,OAAO,CAAA;IAC1B,GAAG,EAAE,cAAc,CAAA;IACnB,KAAK,EAAE,iBAAiB,CAAA;CACzB,KAAG,OAAO,CAAC,MAAM,CA4EjB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { fieldAffectsData, fieldIsPresentationalOnly, fieldShouldBeLocalized, flattenTopLevelFields } from 'payload/shared';
2
- export const generateLabelFromValue = ({
2
+ export const generateLabelFromValue = async ({
3
3
  field,
4
4
  locale,
5
5
  parentIsLocalized,
@@ -31,8 +31,30 @@ export const generateLabelFromValue = ({
31
31
  }
32
32
  if (typeof relatedDoc?.[useAsTitle] !== 'undefined') {
33
33
  valueToReturn = relatedDoc[useAsTitle];
34
+ } else if (typeof relatedDoc === 'string' || typeof relatedDoc === 'number') {
35
+ // When relatedDoc is just an ID (due to maxDepth: 0), fetch the document to get the title
36
+ try {
37
+ const fetchedDoc = await req.payload.findByID({
38
+ id: relatedDoc,
39
+ collection: relationTo,
40
+ depth: 0,
41
+ locale: titleFieldIsLocalized ? locale : undefined,
42
+ req,
43
+ select: {
44
+ [useAsTitle]: true
45
+ }
46
+ });
47
+ if (fetchedDoc?.[useAsTitle]) {
48
+ valueToReturn = fetchedDoc[useAsTitle];
49
+ } else {
50
+ valueToReturn = `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`;
51
+ }
52
+ } catch (error) {
53
+ // Document might have been deleted or user doesn't have access
54
+ valueToReturn = `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`;
55
+ }
34
56
  } else {
35
- valueToReturn = String(typeof relatedDoc === 'object' ? relatedDoc.id : `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`);
57
+ valueToReturn = String(typeof relatedDoc === 'object' ? relatedDoc.id : relatedDoc);
36
58
  }
37
59
  if (typeof valueToReturn === 'object' && valueToReturn && titleFieldIsLocalized && valueToReturn?.[locale]) {
38
60
  valueToReturn = valueToReturn[locale];
@@ -1 +1 @@
1
- {"version":3,"file":"generateLabelFromValue.js","names":["fieldAffectsData","fieldIsPresentationalOnly","fieldShouldBeLocalized","flattenTopLevelFields","generateLabelFromValue","field","locale","parentIsLocalized","req","value","relatedDoc","relationTo","valueToReturn","relatedCollection","payload","collections","config","useAsTitle","admin","flattenedRelatedCollectionFields","fields","moveSubFieldsToTop","useAsTitleField","find","f","name","titleFieldIsLocalized","String","id","i18n","t","JSON","stringify"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.ts"],"sourcesContent":["import type { PayloadRequest, RelationshipField, TypeWithID } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldIsPresentationalOnly,\n fieldShouldBeLocalized,\n flattenTopLevelFields,\n} from 'payload/shared'\n\nimport type { RelationshipValue } from './index.js'\n\nexport const generateLabelFromValue = ({\n field,\n locale,\n parentIsLocalized,\n req,\n value,\n}: {\n field: RelationshipField\n locale: string\n parentIsLocalized: boolean\n req: PayloadRequest\n value: RelationshipValue\n}): string => {\n let relatedDoc: number | string | TypeWithID\n let relationTo: string = field.relationTo as string\n let valueToReturn: string = ''\n\n if (typeof value === 'object' && 'relationTo' in value) {\n relatedDoc = value.value\n relationTo = value.relationTo\n } else {\n // Non-polymorphic relationship or deleted document\n relatedDoc = value\n }\n\n const relatedCollection = req.payload.collections[relationTo].config\n\n const useAsTitle = relatedCollection?.admin?.useAsTitle\n\n const flattenedRelatedCollectionFields = flattenTopLevelFields(relatedCollection.fields, {\n moveSubFieldsToTop: true,\n })\n\n const useAsTitleField = flattenedRelatedCollectionFields.find(\n (f) => fieldAffectsData(f) && !fieldIsPresentationalOnly(f) && f.name === useAsTitle,\n )\n let titleFieldIsLocalized = false\n\n if (useAsTitleField && fieldAffectsData(useAsTitleField)) {\n titleFieldIsLocalized = fieldShouldBeLocalized({ field: useAsTitleField, parentIsLocalized })\n }\n\n if (typeof relatedDoc?.[useAsTitle] !== 'undefined') {\n valueToReturn = relatedDoc[useAsTitle]\n } else {\n valueToReturn = String(\n typeof relatedDoc === 'object'\n ? relatedDoc.id\n : `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`,\n )\n }\n\n if (\n typeof valueToReturn === 'object' &&\n valueToReturn &&\n titleFieldIsLocalized &&\n valueToReturn?.[locale]\n ) {\n valueToReturn = valueToReturn[locale]\n }\n\n if (\n (valueToReturn && typeof valueToReturn === 'object' && valueToReturn !== null) ||\n typeof valueToReturn !== 'string'\n ) {\n valueToReturn = JSON.stringify(valueToReturn)\n }\n\n return valueToReturn\n}\n"],"mappings":"AAEA,SACEA,gBAAgB,EAChBC,yBAAyB,EACzBC,sBAAsB,EACtBC,qBAAqB,QAChB;AAIP,OAAO,MAAMC,sBAAA,GAAyBA,CAAC;EACrCC,KAAK;EACLC,MAAM;EACNC,iBAAiB;EACjBC,GAAG;EACHC;AAAK,CAON;EACC,IAAIC,UAAA;EACJ,IAAIC,UAAA,GAAqBN,KAAA,CAAMM,UAAU;EACzC,IAAIC,aAAA,GAAwB;EAE5B,IAAI,OAAOH,KAAA,KAAU,YAAY,gBAAgBA,KAAA,EAAO;IACtDC,UAAA,GAAaD,KAAA,CAAMA,KAAK;IACxBE,UAAA,GAAaF,KAAA,CAAME,UAAU;EAC/B,OAAO;IACL;IACAD,UAAA,GAAaD,KAAA;EACf;EAEA,MAAMI,iBAAA,GAAoBL,GAAA,CAAIM,OAAO,CAACC,WAAW,CAACJ,UAAA,CAAW,CAACK,MAAM;EAEpE,MAAMC,UAAA,GAAaJ,iBAAA,EAAmBK,KAAA,EAAOD,UAAA;EAE7C,MAAME,gCAAA,GAAmChB,qBAAA,CAAsBU,iBAAA,CAAkBO,MAAM,EAAE;IACvFC,kBAAA,EAAoB;EACtB;EAEA,MAAMC,eAAA,GAAkBH,gCAAA,CAAiCI,IAAI,CAC1DC,CAAA,IAAMxB,gBAAA,CAAiBwB,CAAA,KAAM,CAACvB,yBAAA,CAA0BuB,CAAA,KAAMA,CAAA,CAAEC,IAAI,KAAKR,UAAA;EAE5E,IAAIS,qBAAA,GAAwB;EAE5B,IAAIJ,eAAA,IAAmBtB,gBAAA,CAAiBsB,eAAA,GAAkB;IACxDI,qBAAA,GAAwBxB,sBAAA,CAAuB;MAAEG,KAAA,EAAOiB,eAAA;MAAiBf;IAAkB;EAC7F;EAEA,IAAI,OAAOG,UAAA,GAAaO,UAAA,CAAW,KAAK,aAAa;IACnDL,aAAA,GAAgBF,UAAU,CAACO,UAAA,CAAW;EACxC,OAAO;IACLL,aAAA,GAAgBe,MAAA,CACd,OAAOjB,UAAA,KAAe,WAClBA,UAAA,CAAWkB,EAAE,GACb,GAAGpB,GAAA,CAAIqB,IAAI,CAACC,CAAC,CAAC,6BAA6BpB,UAAA,EAAY;EAE/D;EAEA,IACE,OAAOE,aAAA,KAAkB,YACzBA,aAAA,IACAc,qBAAA,IACAd,aAAA,GAAgBN,MAAA,CAAO,EACvB;IACAM,aAAA,GAAgBA,aAAa,CAACN,MAAA,CAAO;EACvC;EAEA,IACEM,aAAC,IAAiB,OAAOA,aAAA,KAAkB,YAAYA,aAAA,KAAkB,QACzE,OAAOA,aAAA,KAAkB,UACzB;IACAA,aAAA,GAAgBmB,IAAA,CAAKC,SAAS,CAACpB,aAAA;EACjC;EAEA,OAAOA,aAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"generateLabelFromValue.js","names":["fieldAffectsData","fieldIsPresentationalOnly","fieldShouldBeLocalized","flattenTopLevelFields","generateLabelFromValue","field","locale","parentIsLocalized","req","value","relatedDoc","relationTo","valueToReturn","relatedCollection","payload","collections","config","useAsTitle","admin","flattenedRelatedCollectionFields","fields","moveSubFieldsToTop","useAsTitleField","find","f","name","titleFieldIsLocalized","fetchedDoc","findByID","id","collection","depth","undefined","select","i18n","t","error","String","JSON","stringify"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.ts"],"sourcesContent":["import type { PayloadRequest, RelationshipField, TypeWithID } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldIsPresentationalOnly,\n fieldShouldBeLocalized,\n flattenTopLevelFields,\n} from 'payload/shared'\n\nimport type { RelationshipValue } from './index.js'\n\nexport const generateLabelFromValue = async ({\n field,\n locale,\n parentIsLocalized,\n req,\n value,\n}: {\n field: RelationshipField\n locale: string\n parentIsLocalized: boolean\n req: PayloadRequest\n value: RelationshipValue\n}): Promise<string> => {\n let relatedDoc: number | string | TypeWithID\n let relationTo: string = field.relationTo as string\n let valueToReturn: string = ''\n\n if (typeof value === 'object' && 'relationTo' in value) {\n relatedDoc = value.value\n relationTo = value.relationTo\n } else {\n // Non-polymorphic relationship or deleted document\n relatedDoc = value\n }\n\n const relatedCollection = req.payload.collections[relationTo].config\n\n const useAsTitle = relatedCollection?.admin?.useAsTitle\n\n const flattenedRelatedCollectionFields = flattenTopLevelFields(relatedCollection.fields, {\n moveSubFieldsToTop: true,\n })\n\n const useAsTitleField = flattenedRelatedCollectionFields.find(\n (f) => fieldAffectsData(f) && !fieldIsPresentationalOnly(f) && f.name === useAsTitle,\n )\n let titleFieldIsLocalized = false\n\n if (useAsTitleField && fieldAffectsData(useAsTitleField)) {\n titleFieldIsLocalized = fieldShouldBeLocalized({ field: useAsTitleField, parentIsLocalized })\n }\n\n if (typeof relatedDoc?.[useAsTitle] !== 'undefined') {\n valueToReturn = relatedDoc[useAsTitle]\n } else if (typeof relatedDoc === 'string' || typeof relatedDoc === 'number') {\n // When relatedDoc is just an ID (due to maxDepth: 0), fetch the document to get the title\n try {\n const fetchedDoc = await req.payload.findByID({\n id: relatedDoc,\n collection: relationTo,\n depth: 0,\n locale: titleFieldIsLocalized ? locale : undefined,\n req,\n select: {\n [useAsTitle]: true,\n },\n })\n\n if (fetchedDoc?.[useAsTitle]) {\n valueToReturn = fetchedDoc[useAsTitle]\n } else {\n valueToReturn = `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`\n }\n } catch (error) {\n // Document might have been deleted or user doesn't have access\n valueToReturn = `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`\n }\n } else {\n valueToReturn = String(typeof relatedDoc === 'object' ? relatedDoc.id : relatedDoc)\n }\n\n if (\n typeof valueToReturn === 'object' &&\n valueToReturn &&\n titleFieldIsLocalized &&\n valueToReturn?.[locale]\n ) {\n valueToReturn = valueToReturn[locale]\n }\n\n if (\n (valueToReturn && typeof valueToReturn === 'object' && valueToReturn !== null) ||\n typeof valueToReturn !== 'string'\n ) {\n valueToReturn = JSON.stringify(valueToReturn)\n }\n\n return valueToReturn\n}\n"],"mappings":"AAEA,SACEA,gBAAgB,EAChBC,yBAAyB,EACzBC,sBAAsB,EACtBC,qBAAqB,QAChB;AAIP,OAAO,MAAMC,sBAAA,GAAyB,MAAAA,CAAO;EAC3CC,KAAK;EACLC,MAAM;EACNC,iBAAiB;EACjBC,GAAG;EACHC;AAAK,CAON;EACC,IAAIC,UAAA;EACJ,IAAIC,UAAA,GAAqBN,KAAA,CAAMM,UAAU;EACzC,IAAIC,aAAA,GAAwB;EAE5B,IAAI,OAAOH,KAAA,KAAU,YAAY,gBAAgBA,KAAA,EAAO;IACtDC,UAAA,GAAaD,KAAA,CAAMA,KAAK;IACxBE,UAAA,GAAaF,KAAA,CAAME,UAAU;EAC/B,OAAO;IACL;IACAD,UAAA,GAAaD,KAAA;EACf;EAEA,MAAMI,iBAAA,GAAoBL,GAAA,CAAIM,OAAO,CAACC,WAAW,CAACJ,UAAA,CAAW,CAACK,MAAM;EAEpE,MAAMC,UAAA,GAAaJ,iBAAA,EAAmBK,KAAA,EAAOD,UAAA;EAE7C,MAAME,gCAAA,GAAmChB,qBAAA,CAAsBU,iBAAA,CAAkBO,MAAM,EAAE;IACvFC,kBAAA,EAAoB;EACtB;EAEA,MAAMC,eAAA,GAAkBH,gCAAA,CAAiCI,IAAI,CAC1DC,CAAA,IAAMxB,gBAAA,CAAiBwB,CAAA,KAAM,CAACvB,yBAAA,CAA0BuB,CAAA,KAAMA,CAAA,CAAEC,IAAI,KAAKR,UAAA;EAE5E,IAAIS,qBAAA,GAAwB;EAE5B,IAAIJ,eAAA,IAAmBtB,gBAAA,CAAiBsB,eAAA,GAAkB;IACxDI,qBAAA,GAAwBxB,sBAAA,CAAuB;MAAEG,KAAA,EAAOiB,eAAA;MAAiBf;IAAkB;EAC7F;EAEA,IAAI,OAAOG,UAAA,GAAaO,UAAA,CAAW,KAAK,aAAa;IACnDL,aAAA,GAAgBF,UAAU,CAACO,UAAA,CAAW;EACxC,OAAO,IAAI,OAAOP,UAAA,KAAe,YAAY,OAAOA,UAAA,KAAe,UAAU;IAC3E;IACA,IAAI;MACF,MAAMiB,UAAA,GAAa,MAAMnB,GAAA,CAAIM,OAAO,CAACc,QAAQ,CAAC;QAC5CC,EAAA,EAAInB,UAAA;QACJoB,UAAA,EAAYnB,UAAA;QACZoB,KAAA,EAAO;QACPzB,MAAA,EAAQoB,qBAAA,GAAwBpB,MAAA,GAAS0B,SAAA;QACzCxB,GAAA;QACAyB,MAAA,EAAQ;UACN,CAAChB,UAAA,GAAa;QAChB;MACF;MAEA,IAAIU,UAAA,GAAaV,UAAA,CAAW,EAAE;QAC5BL,aAAA,GAAgBe,UAAU,CAACV,UAAA,CAAW;MACxC,OAAO;QACLL,aAAA,GAAgB,GAAGJ,GAAA,CAAI0B,IAAI,CAACC,CAAC,CAAC,6BAA6BzB,UAAA,EAAY;MACzE;IACF,EAAE,OAAO0B,KAAA,EAAO;MACd;MACAxB,aAAA,GAAgB,GAAGJ,GAAA,CAAI0B,IAAI,CAACC,CAAC,CAAC,6BAA6BzB,UAAA,EAAY;IACzE;EACF,OAAO;IACLE,aAAA,GAAgByB,MAAA,CAAO,OAAO3B,UAAA,KAAe,WAAWA,UAAA,CAAWmB,EAAE,GAAGnB,UAAA;EAC1E;EAEA,IACE,OAAOE,aAAA,KAAkB,YACzBA,aAAA,IACAc,qBAAA,IACAd,aAAA,GAAgBN,MAAA,CAAO,EACvB;IACAM,aAAA,GAAgBA,aAAa,CAACN,MAAA,CAAO;EACvC;EAEA,IACEM,aAAC,IAAiB,OAAOA,aAAA,KAAkB,YAAYA,aAAA,KAAkB,QACzE,OAAOA,aAAA,KAAkB,UACzB;IACAA,aAAA,GAAgB0B,IAAA,CAAKC,SAAS,CAAC3B,aAAA;EACjC;EAEA,OAAOA,aAAA;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,oCAAoC,EACpC,UAAU,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1E,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,MAAM,MAAM,iBAAiB,GACzB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;CAAE,GAC3D,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAA;AAElC,eAAO,MAAM,YAAY,EAAE,oCA0C1B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5C,KAAK,EAAE,iBAAiB,CAAA;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,iBAAiB,CAAA;CAC3B,CAqEA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,oCAAoC,EACpC,UAAU,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1E,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,MAAM,MAAM,iBAAiB,GACzB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;CAAE,GAC3D,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAA;AAElC,eAAO,MAAM,YAAY,EAAE,oCA0C1B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5C,KAAK,EAAE,iBAAiB,CAAA;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,iBAAiB,CAAA;CAC3B,CAkGA,CAAA"}
@@ -54,6 +54,21 @@ export const SingleRelationshipDiff = async args => {
54
54
  valueTo
55
55
  } = args;
56
56
  const ReactDOMServer = (await import('react-dom/server')).default;
57
+ const localeToUse = locale ?? (req.payload.config?.localization && req.payload.config?.localization?.defaultLocale) ?? 'en';
58
+ // Generate titles asynchronously before creating components
59
+ const [titleFrom, titleTo] = await Promise.all([valueFrom ? generateLabelFromValue({
60
+ field,
61
+ locale: localeToUse,
62
+ parentIsLocalized,
63
+ req,
64
+ value: valueFrom
65
+ }) : Promise.resolve(null), valueTo ? generateLabelFromValue({
66
+ field,
67
+ locale: localeToUse,
68
+ parentIsLocalized,
69
+ req,
70
+ value: valueTo
71
+ }) : Promise.resolve(null)]);
57
72
  const FromComponent = valueFrom ? /*#__PURE__*/_jsx(RelationshipDocumentDiff, {
58
73
  field: field,
59
74
  i18n: i18n,
@@ -63,6 +78,7 @@ export const SingleRelationshipDiff = async args => {
63
78
  relationTo: polymorphic ? valueFrom.relationTo : field.relationTo,
64
79
  req: req,
65
80
  showPill: true,
81
+ title: titleFrom,
66
82
  value: valueFrom
67
83
  }) : null;
68
84
  const ToComponent = valueTo ? /*#__PURE__*/_jsx(RelationshipDocumentDiff, {
@@ -74,6 +90,7 @@ export const SingleRelationshipDiff = async args => {
74
90
  relationTo: polymorphic ? valueTo.relationTo : field.relationTo,
75
91
  req: req,
76
92
  showPill: true,
93
+ title: titleTo,
77
94
  value: valueTo
78
95
  }) : null;
79
96
  const fromHTML = FromComponent ? ReactDOMServer.renderToStaticMarkup(FromComponent) : `<p></p>`;
@@ -109,7 +126,22 @@ const ManyRelationshipDiff = async ({
109
126
  const ReactDOMServer = (await import('react-dom/server')).default;
110
127
  const fromArr = Array.isArray(valueFrom) ? valueFrom : [];
111
128
  const toArr = Array.isArray(valueTo) ? valueTo : [];
112
- const makeNodes = list => list.map((val, idx) => /*#__PURE__*/_jsx(RelationshipDocumentDiff, {
129
+ const localeToUse = locale ?? (req.payload.config?.localization && req.payload.config?.localization?.defaultLocale) ?? 'en';
130
+ // Generate all titles asynchronously before creating components
131
+ const [titlesFrom, titlesTo] = await Promise.all([Promise.all(fromArr.map(val => generateLabelFromValue({
132
+ field,
133
+ locale: localeToUse,
134
+ parentIsLocalized,
135
+ req,
136
+ value: val
137
+ }))), Promise.all(toArr.map(val => generateLabelFromValue({
138
+ field,
139
+ locale: localeToUse,
140
+ parentIsLocalized,
141
+ req,
142
+ value: val
143
+ })))]);
144
+ const makeNodes = (list, titles) => list.map((val, idx) => /*#__PURE__*/_jsx(RelationshipDocumentDiff, {
113
145
  field: field,
114
146
  i18n: i18n,
115
147
  locale: locale,
@@ -118,12 +150,13 @@ const ManyRelationshipDiff = async ({
118
150
  relationTo: polymorphic ? val.relationTo : field.relationTo,
119
151
  req: req,
120
152
  showPill: polymorphic,
153
+ title: titles[idx],
121
154
  value: val
122
155
  }, idx));
123
- const fromNodes = fromArr.length > 0 ? makeNodes(fromArr) : /*#__PURE__*/_jsx("p", {
156
+ const fromNodes = fromArr.length > 0 ? makeNodes(fromArr, titlesFrom) : /*#__PURE__*/_jsx("p", {
124
157
  className: `${baseClass}__empty`
125
158
  });
126
- const toNodes = toArr.length > 0 ? makeNodes(toArr) : /*#__PURE__*/_jsx("p", {
159
+ const toNodes = toArr.length > 0 ? makeNodes(toArr, titlesTo) : /*#__PURE__*/_jsx("p", {
127
160
  className: `${baseClass}__empty`
128
161
  });
129
162
  const fromHTML = ReactDOMServer.renderToStaticMarkup(fromNodes);
@@ -154,16 +187,9 @@ const RelationshipDocumentDiff = ({
154
187
  relationTo,
155
188
  req,
156
189
  showPill = false,
190
+ title,
157
191
  value
158
192
  }) => {
159
- const localeToUse = locale ?? (req.payload.config?.localization && req.payload.config?.localization?.defaultLocale) ?? 'en';
160
- const title = generateLabelFromValue({
161
- field,
162
- locale: localeToUse,
163
- parentIsLocalized,
164
- req,
165
- value
166
- });
167
193
  let pillLabel = null;
168
194
  if (showPill) {
169
195
  const collectionConfig = req.payload.collections[relationTo].config;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","FieldDiffContainer","getHTMLDiffComponents","React","generateLabelFromValue","baseClass","Relationship","comparisonValue","valueFrom","field","i18n","locale","nestingLevel","parentIsLocalized","req","versionValue","valueTo","hasMany","polymorphic","Array","isArray","relationTo","_jsx","ManyRelationshipDiff","SingleRelationshipDiff","args","ReactDOMServer","default","FromComponent","RelationshipDocumentDiff","showPill","value","ToComponent","fromHTML","renderToStaticMarkup","toHTML","diff","tokenizeByCharacter","className","From","label","To","fromArr","toArr","makeNodes","list","map","val","idx","fromNodes","length","toNodes","localeToUse","payload","config","localization","defaultLocale","title","pillLabel","collectionConfig","collections","labels","singular","slug","_jsxs","id"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"sourcesContent":["import type {\n PayloadRequest,\n RelationshipField,\n RelationshipFieldDiffServerComponent,\n TypeWithID,\n} from 'payload'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\nimport { FieldDiffContainer, getHTMLDiffComponents } from '@payloadcms/ui/rsc'\n\nimport './index.scss'\n\nimport React from 'react'\n\nimport { generateLabelFromValue } from './generateLabelFromValue.js'\n\nconst baseClass = 'relationship-diff'\n\nexport type RelationshipValue =\n | { relationTo: string; value: number | string | TypeWithID }\n | (number | string | TypeWithID)\n\nexport const Relationship: RelationshipFieldDiffServerComponent = ({\n comparisonValue: valueFrom,\n field,\n i18n,\n locale,\n nestingLevel,\n parentIsLocalized,\n req,\n versionValue: valueTo,\n}) => {\n const hasMany = 'hasMany' in field && field.hasMany\n const polymorphic = Array.isArray(field.relationTo)\n\n if (hasMany) {\n return (\n <ManyRelationshipDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n req={req}\n valueFrom={valueFrom as RelationshipValue[] | undefined}\n valueTo={valueTo as RelationshipValue[] | undefined}\n />\n )\n }\n\n return (\n <SingleRelationshipDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n req={req}\n valueFrom={valueFrom as RelationshipValue}\n valueTo={valueTo as RelationshipValue}\n />\n )\n}\n\nexport const SingleRelationshipDiff: React.FC<{\n field: RelationshipField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n parentIsLocalized: boolean\n polymorphic: boolean\n req: PayloadRequest\n valueFrom: RelationshipValue\n valueTo: RelationshipValue\n}> = async (args) => {\n const {\n field,\n i18n,\n locale,\n nestingLevel,\n parentIsLocalized,\n polymorphic,\n req,\n valueFrom,\n valueTo,\n } = args\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const FromComponent = valueFrom ? (\n <RelationshipDocumentDiff\n field={field}\n i18n={i18n}\n locale={locale}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n relationTo={\n polymorphic\n ? (valueFrom as { relationTo: string; value: TypeWithID }).relationTo\n : (field.relationTo as string)\n }\n req={req}\n showPill={true}\n value={valueFrom}\n />\n ) : null\n const ToComponent = valueTo ? (\n <RelationshipDocumentDiff\n field={field}\n i18n={i18n}\n locale={locale}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n relationTo={\n polymorphic\n ? (valueTo as { relationTo: string; value: TypeWithID }).relationTo\n : (field.relationTo as string)\n }\n req={req}\n showPill={true}\n value={valueTo}\n />\n ) : null\n\n const fromHTML = FromComponent ? ReactDOMServer.renderToStaticMarkup(FromComponent) : `<p></p>`\n const toHTML = ToComponent ? ReactDOMServer.renderToStaticMarkup(ToComponent) : `<p></p>`\n\n const diff = getHTMLDiffComponents({\n fromHTML,\n toHTML,\n tokenizeByCharacter: false,\n })\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasOne`}\n From={diff.From}\n i18n={i18n}\n label={{ label: field.label, locale }}\n nestingLevel={nestingLevel}\n To={diff.To}\n />\n )\n}\n\nconst ManyRelationshipDiff: React.FC<{\n field: RelationshipField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n parentIsLocalized: boolean\n polymorphic: boolean\n req: PayloadRequest\n valueFrom: RelationshipValue[] | undefined\n valueTo: RelationshipValue[] | undefined\n}> = async ({\n field,\n i18n,\n locale,\n nestingLevel,\n parentIsLocalized,\n polymorphic,\n req,\n valueFrom,\n valueTo,\n}) => {\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const fromArr = Array.isArray(valueFrom) ? valueFrom : []\n const toArr = Array.isArray(valueTo) ? valueTo : []\n\n const makeNodes = (list: RelationshipValue[]) =>\n list.map((val, idx) => (\n <RelationshipDocumentDiff\n field={field}\n i18n={i18n}\n key={idx}\n locale={locale}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n relationTo={\n polymorphic\n ? (val as { relationTo: string; value: TypeWithID }).relationTo\n : (field.relationTo as string)\n }\n req={req}\n showPill={polymorphic}\n value={val}\n />\n ))\n\n const fromNodes =\n fromArr.length > 0 ? makeNodes(fromArr) : <p className={`${baseClass}__empty`}></p>\n\n const toNodes = toArr.length > 0 ? makeNodes(toArr) : <p className={`${baseClass}__empty`}></p>\n\n const fromHTML = ReactDOMServer.renderToStaticMarkup(fromNodes)\n const toHTML = ReactDOMServer.renderToStaticMarkup(toNodes)\n\n const diff = getHTMLDiffComponents({\n fromHTML,\n toHTML,\n tokenizeByCharacter: false,\n })\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasMany`}\n From={diff.From}\n i18n={i18n}\n label={{ label: field.label, locale }}\n nestingLevel={nestingLevel}\n To={diff.To}\n />\n )\n}\n\nconst RelationshipDocumentDiff = ({\n field,\n i18n,\n locale,\n parentIsLocalized,\n polymorphic,\n relationTo,\n req,\n showPill = false,\n value,\n}: {\n field: RelationshipField\n i18n: I18nClient\n locale: string\n parentIsLocalized: boolean\n polymorphic: boolean\n relationTo: string\n req: PayloadRequest\n showPill?: boolean\n value: RelationshipValue\n}) => {\n const localeToUse =\n locale ??\n (req.payload.config?.localization && req.payload.config?.localization?.defaultLocale) ??\n 'en'\n\n const title = generateLabelFromValue({\n field,\n locale: localeToUse,\n parentIsLocalized,\n req,\n value,\n })\n\n let pillLabel: null | string = null\n if (showPill) {\n const collectionConfig = req.payload.collections[relationTo].config\n pillLabel = collectionConfig.labels?.singular\n ? getTranslation(collectionConfig.labels.singular, i18n)\n : collectionConfig.slug\n }\n\n return (\n <div\n className={`${baseClass}`}\n data-enable-match=\"true\"\n data-id={\n polymorphic\n ? (value as { relationTo: string; value: TypeWithID }).value.id\n : (value as TypeWithID).id\n }\n data-relation-to={relationTo}\n >\n {pillLabel && (\n <span className={`${baseClass}__pill`} data-enable-match=\"false\">\n {pillLabel}\n </span>\n )}\n <strong className={`${baseClass}__info`} data-enable-match=\"false\">\n {title}\n </strong>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","FieldDiffContainer","getHTMLDiffComponents","React","generateLabelFromValue","baseClass","Relationship","comparisonValue","valueFrom","field","i18n","locale","nestingLevel","parentIsLocalized","req","versionValue","valueTo","hasMany","polymorphic","Array","isArray","relationTo","_jsx","ManyRelationshipDiff","SingleRelationshipDiff","args","ReactDOMServer","default","localeToUse","payload","config","localization","defaultLocale","titleFrom","titleTo","Promise","all","value","resolve","FromComponent","RelationshipDocumentDiff","showPill","title","ToComponent","fromHTML","renderToStaticMarkup","toHTML","diff","tokenizeByCharacter","className","From","label","To","fromArr","toArr","titlesFrom","titlesTo","map","val","makeNodes","list","titles","idx","fromNodes","length","toNodes","pillLabel","collectionConfig","collections","labels","singular","slug","_jsxs","id"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"sourcesContent":["import type {\n PayloadRequest,\n RelationshipField,\n RelationshipFieldDiffServerComponent,\n TypeWithID,\n} from 'payload'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\nimport { FieldDiffContainer, getHTMLDiffComponents } from '@payloadcms/ui/rsc'\n\nimport './index.scss'\n\nimport React from 'react'\n\nimport { generateLabelFromValue } from './generateLabelFromValue.js'\n\nconst baseClass = 'relationship-diff'\n\nexport type RelationshipValue =\n | { relationTo: string; value: number | string | TypeWithID }\n | (number | string | TypeWithID)\n\nexport const Relationship: RelationshipFieldDiffServerComponent = ({\n comparisonValue: valueFrom,\n field,\n i18n,\n locale,\n nestingLevel,\n parentIsLocalized,\n req,\n versionValue: valueTo,\n}) => {\n const hasMany = 'hasMany' in field && field.hasMany\n const polymorphic = Array.isArray(field.relationTo)\n\n if (hasMany) {\n return (\n <ManyRelationshipDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n req={req}\n valueFrom={valueFrom as RelationshipValue[] | undefined}\n valueTo={valueTo as RelationshipValue[] | undefined}\n />\n )\n }\n\n return (\n <SingleRelationshipDiff\n field={field}\n i18n={i18n}\n locale={locale}\n nestingLevel={nestingLevel}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n req={req}\n valueFrom={valueFrom as RelationshipValue}\n valueTo={valueTo as RelationshipValue}\n />\n )\n}\n\nexport const SingleRelationshipDiff: React.FC<{\n field: RelationshipField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n parentIsLocalized: boolean\n polymorphic: boolean\n req: PayloadRequest\n valueFrom: RelationshipValue\n valueTo: RelationshipValue\n}> = async (args) => {\n const {\n field,\n i18n,\n locale,\n nestingLevel,\n parentIsLocalized,\n polymorphic,\n req,\n valueFrom,\n valueTo,\n } = args\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const localeToUse =\n locale ??\n (req.payload.config?.localization && req.payload.config?.localization?.defaultLocale) ??\n 'en'\n\n // Generate titles asynchronously before creating components\n const [titleFrom, titleTo] = await Promise.all([\n valueFrom\n ? generateLabelFromValue({\n field,\n locale: localeToUse,\n parentIsLocalized,\n req,\n value: valueFrom,\n })\n : Promise.resolve(null),\n valueTo\n ? generateLabelFromValue({\n field,\n locale: localeToUse,\n parentIsLocalized,\n req,\n value: valueTo,\n })\n : Promise.resolve(null),\n ])\n\n const FromComponent = valueFrom ? (\n <RelationshipDocumentDiff\n field={field}\n i18n={i18n}\n locale={locale}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n relationTo={\n polymorphic\n ? (valueFrom as { relationTo: string; value: TypeWithID }).relationTo\n : (field.relationTo as string)\n }\n req={req}\n showPill={true}\n title={titleFrom}\n value={valueFrom}\n />\n ) : null\n const ToComponent = valueTo ? (\n <RelationshipDocumentDiff\n field={field}\n i18n={i18n}\n locale={locale}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n relationTo={\n polymorphic\n ? (valueTo as { relationTo: string; value: TypeWithID }).relationTo\n : (field.relationTo as string)\n }\n req={req}\n showPill={true}\n title={titleTo}\n value={valueTo}\n />\n ) : null\n\n const fromHTML = FromComponent ? ReactDOMServer.renderToStaticMarkup(FromComponent) : `<p></p>`\n const toHTML = ToComponent ? ReactDOMServer.renderToStaticMarkup(ToComponent) : `<p></p>`\n\n const diff = getHTMLDiffComponents({\n fromHTML,\n toHTML,\n tokenizeByCharacter: false,\n })\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasOne`}\n From={diff.From}\n i18n={i18n}\n label={{ label: field.label, locale }}\n nestingLevel={nestingLevel}\n To={diff.To}\n />\n )\n}\n\nconst ManyRelationshipDiff: React.FC<{\n field: RelationshipField\n i18n: I18nClient\n locale: string\n nestingLevel?: number\n parentIsLocalized: boolean\n polymorphic: boolean\n req: PayloadRequest\n valueFrom: RelationshipValue[] | undefined\n valueTo: RelationshipValue[] | undefined\n}> = async ({\n field,\n i18n,\n locale,\n nestingLevel,\n parentIsLocalized,\n polymorphic,\n req,\n valueFrom,\n valueTo,\n}) => {\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const fromArr = Array.isArray(valueFrom) ? valueFrom : []\n const toArr = Array.isArray(valueTo) ? valueTo : []\n\n const localeToUse =\n locale ??\n (req.payload.config?.localization && req.payload.config?.localization?.defaultLocale) ??\n 'en'\n\n // Generate all titles asynchronously before creating components\n const [titlesFrom, titlesTo] = await Promise.all([\n Promise.all(\n fromArr.map((val) =>\n generateLabelFromValue({\n field,\n locale: localeToUse,\n parentIsLocalized,\n req,\n value: val,\n }),\n ),\n ),\n Promise.all(\n toArr.map((val) =>\n generateLabelFromValue({\n field,\n locale: localeToUse,\n parentIsLocalized,\n req,\n value: val,\n }),\n ),\n ),\n ])\n\n const makeNodes = (list: RelationshipValue[], titles: string[]) =>\n list.map((val, idx) => (\n <RelationshipDocumentDiff\n field={field}\n i18n={i18n}\n key={idx}\n locale={locale}\n parentIsLocalized={parentIsLocalized}\n polymorphic={polymorphic}\n relationTo={\n polymorphic\n ? (val as { relationTo: string; value: TypeWithID }).relationTo\n : (field.relationTo as string)\n }\n req={req}\n showPill={polymorphic}\n title={titles[idx]}\n value={val}\n />\n ))\n\n const fromNodes =\n fromArr.length > 0 ? makeNodes(fromArr, titlesFrom) : <p className={`${baseClass}__empty`}></p>\n\n const toNodes =\n toArr.length > 0 ? makeNodes(toArr, titlesTo) : <p className={`${baseClass}__empty`}></p>\n\n const fromHTML = ReactDOMServer.renderToStaticMarkup(fromNodes)\n const toHTML = ReactDOMServer.renderToStaticMarkup(toNodes)\n\n const diff = getHTMLDiffComponents({\n fromHTML,\n toHTML,\n tokenizeByCharacter: false,\n })\n\n return (\n <FieldDiffContainer\n className={`${baseClass}-container ${baseClass}-container--hasMany`}\n From={diff.From}\n i18n={i18n}\n label={{ label: field.label, locale }}\n nestingLevel={nestingLevel}\n To={diff.To}\n />\n )\n}\n\nconst RelationshipDocumentDiff = ({\n field,\n i18n,\n locale,\n parentIsLocalized,\n polymorphic,\n relationTo,\n req,\n showPill = false,\n title,\n value,\n}: {\n field: RelationshipField\n i18n: I18nClient\n locale: string\n parentIsLocalized: boolean\n polymorphic: boolean\n relationTo: string\n req: PayloadRequest\n showPill?: boolean\n title: null | string\n value: RelationshipValue\n}) => {\n let pillLabel: null | string = null\n if (showPill) {\n const collectionConfig = req.payload.collections[relationTo].config\n pillLabel = collectionConfig.labels?.singular\n ? getTranslation(collectionConfig.labels.singular, i18n)\n : collectionConfig.slug\n }\n\n return (\n <div\n className={`${baseClass}`}\n data-enable-match=\"true\"\n data-id={\n polymorphic\n ? (value as { relationTo: string; value: TypeWithID }).value.id\n : (value as TypeWithID).id\n }\n data-relation-to={relationTo}\n >\n {pillLabel && (\n <span className={`${baseClass}__pill`} data-enable-match=\"false\">\n {pillLabel}\n </span>\n )}\n <strong className={`${baseClass}__info`} data-enable-match=\"false\">\n {title}\n </strong>\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/next",
3
- "version": "3.73.0-canary.5",
3
+ "version": "3.73.0-internal.6ea481d",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -99,9 +99,9 @@
99
99
  "qs-esm": "7.0.2",
100
100
  "sass": "1.77.4",
101
101
  "uuid": "10.0.0",
102
- "@payloadcms/graphql": "3.73.0-canary.5",
103
- "@payloadcms/translations": "3.73.0-canary.5",
104
- "@payloadcms/ui": "3.73.0-canary.5"
102
+ "@payloadcms/graphql": "3.73.0-internal.6ea481d",
103
+ "@payloadcms/translations": "3.73.0-internal.6ea481d",
104
+ "@payloadcms/ui": "3.73.0-internal.6ea481d"
105
105
  },
106
106
  "devDependencies": {
107
107
  "@babel/cli": "7.27.2",
@@ -118,13 +118,13 @@
118
118
  "esbuild": "0.27.1",
119
119
  "esbuild-sass-plugin": "3.3.1",
120
120
  "swc-plugin-transform-remove-imports": "8.3.0",
121
- "payload": "3.73.0-canary.5",
121
+ "payload": "3.73.0-internal.6ea481d",
122
122
  "@payloadcms/eslint-config": "3.28.0"
123
123
  },
124
124
  "peerDependencies": {
125
125
  "graphql": "^16.8.1",
126
126
  "next": "^15.4.10 || >=16.1.1-canary.35 <16.2.0 || ^16.2.0",
127
- "payload": "3.73.0-canary.5"
127
+ "payload": "3.73.0-internal.6ea481d"
128
128
  },
129
129
  "engines": {
130
130
  "node": "^18.20.2 || >=20.9.0"