@payloadcms/next 3.42.0 → 3.43.0-internal.c5bbc84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/prod/styles.css +1 -1
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +2 -0
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/views/BrowseByFolder/buildView.d.ts.map +1 -1
- package/dist/views/BrowseByFolder/buildView.js +40 -61
- package/dist/views/BrowseByFolder/buildView.js.map +1 -1
- package/dist/views/CollectionFolders/buildView.d.ts.map +1 -1
- package/dist/views/CollectionFolders/buildView.js +45 -59
- package/dist/views/CollectionFolders/buildView.js.map +1 -1
- package/dist/views/LivePreview/index.client.js +3 -1
- package/dist/views/LivePreview/index.client.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAapE,eAAO,MAAM,qBAAqB,EAAE,qBAkCnC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc';
|
|
2
2
|
import { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState';
|
|
3
3
|
import { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState';
|
|
4
|
+
import { getFolderResultsComponentAndDataHandler } from '@payloadcms/ui/utilities/getFolderResultsComponentAndData';
|
|
4
5
|
import { schedulePublishHandler } from '@payloadcms/ui/utilities/schedulePublishHandler';
|
|
5
6
|
import { renderDocumentHandler } from '../views/Document/handleServerFunction.js';
|
|
6
7
|
import { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js';
|
|
@@ -28,6 +29,7 @@ export const handleServerFunctions = async args => {
|
|
|
28
29
|
const serverFunctions = {
|
|
29
30
|
'copy-data-from-locale': copyDataFromLocaleHandler,
|
|
30
31
|
'form-state': buildFormStateHandler,
|
|
32
|
+
'get-folder-results-component-and-data': getFolderResultsComponentAndDataHandler,
|
|
31
33
|
'render-document': renderDocumentHandler,
|
|
32
34
|
'render-document-slots': renderDocumentSlotsHandler,
|
|
33
35
|
'render-list': renderListHandler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunctions.js","names":["copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","schedulePublishHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","req","key","augmentedArgs","serverFunctions","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc'\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\nimport { schedulePublishHandler } from '@payloadcms/ui/utilities/schedulePublishHandler'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const { name: fnKey, args: fnArgs, config: configPromise, importMap } = args\n\n const { req } = await initReq({\n configPromise,\n importMap,\n key: 'RootLayout',\n })\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const serverFunctions = {\n 'copy-data-from-locale': copyDataFromLocaleHandler as any as ServerFunction,\n 'form-state': buildFormStateHandler as any as ServerFunction,\n 'render-document': renderDocumentHandler as any as ServerFunction,\n 'render-document-slots': renderDocumentSlotsHandler as any as ServerFunction,\n 'render-list': renderListHandler as any as ServerFunction,\n 'schedule-publish': schedulePublishHandler as any as ServerFunction,\n 'table-state': buildTableStateHandler as any as ServerFunction,\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ;AAC1C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IAAEC,IAAA,EAAMC,KAAK;IAAEF,IAAA,EAAMG,MAAM;IAAEC,MAAA,EAAQC,aAAa;IAAEC;EAAS,CAAE,GAAGN,IAAA;EAExE,MAAM;IAAEO;EAAG,CAAE,GAAG,MAAMT,OAAA,CAAQ;IAC5BO,aAAA;IACAC,SAAA;IACAE,GAAA,EAAK;EACP;EAEA,MAAMC,aAAA,GAA+C;IACnD,GAAGN,MAAM;IACTG,SAAA;IACAC;EACF;EAEA,MAAMG,eAAA,GAAkB;IACtB,
|
|
1
|
+
{"version":3,"file":"handleServerFunctions.js","names":["copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","getFolderResultsComponentAndDataHandler","schedulePublishHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","req","key","augmentedArgs","serverFunctions","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc'\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\nimport { getFolderResultsComponentAndDataHandler } from '@payloadcms/ui/utilities/getFolderResultsComponentAndData'\nimport { schedulePublishHandler } from '@payloadcms/ui/utilities/schedulePublishHandler'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const { name: fnKey, args: fnArgs, config: configPromise, importMap } = args\n\n const { req } = await initReq({\n configPromise,\n importMap,\n key: 'RootLayout',\n })\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const serverFunctions = {\n 'copy-data-from-locale': copyDataFromLocaleHandler as any as ServerFunction,\n 'form-state': buildFormStateHandler as any as ServerFunction,\n 'get-folder-results-component-and-data':\n getFolderResultsComponentAndDataHandler as any as ServerFunction,\n 'render-document': renderDocumentHandler as any as ServerFunction,\n 'render-document-slots': renderDocumentSlotsHandler as any as ServerFunction,\n 'render-list': renderListHandler as any as ServerFunction,\n 'schedule-publish': schedulePublishHandler as any as ServerFunction,\n 'table-state': buildTableStateHandler as any as ServerFunction,\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ;AAC1C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,uCAAuC,QAAQ;AACxD,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IAAEC,IAAA,EAAMC,KAAK;IAAEF,IAAA,EAAMG,MAAM;IAAEC,MAAA,EAAQC,aAAa;IAAEC;EAAS,CAAE,GAAGN,IAAA;EAExE,MAAM;IAAEO;EAAG,CAAE,GAAG,MAAMT,OAAA,CAAQ;IAC5BO,aAAA;IACAC,SAAA;IACAE,GAAA,EAAK;EACP;EAEA,MAAMC,aAAA,GAA+C;IACnD,GAAGN,MAAM;IACTG,SAAA;IACAC;EACF;EAEA,MAAMG,eAAA,GAAkB;IACtB,yBAAyBpB,yBAAA;IACzB,cAAcC,qBAAA;IACd,yCACEE,uCAAA;IACF,mBAAmBE,qBAAA;IACnB,yBAAyBC,0BAAA;IACzB,eAAeC,iBAAA;IACf,oBAAoBH,sBAAA;IACpB,eAAeF;EACjB;EAEA,MAAMmB,EAAA,GAAKD,eAAe,CAACR,KAAA,CAAM;EAEjC,IAAI,CAACS,EAAA,EAAI;IACP,MAAM,IAAIC,KAAA,CAAM,4BAA4BV,KAAA,EAAO;EACrD;EAEA,OAAOS,EAAA,CAAGF,aAAA;AACZ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,EAI/B,SAAS,EACV,MAAM,SAAS,CAAA;AAShB,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG,oBAAoB,CAAA;AAExB,eAAO,MAAM,uBAAuB,SAC5B,mBAAmB,KACxB,OAAO,CAAC,+BAA+B,CAuJzC,CAAA"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { DefaultBrowseByFolderView,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { DefaultBrowseByFolderView, HydrateAuthProvider } from '@payloadcms/ui';
|
|
3
3
|
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
4
|
+
import { getFolderResultsComponentAndData, upsertPreferences } from '@payloadcms/ui/rsc';
|
|
4
5
|
import { formatAdminURL } from '@payloadcms/ui/shared';
|
|
5
6
|
import { redirect } from 'next/navigation.js';
|
|
6
|
-
import { getFolderData } from 'payload';
|
|
7
|
-
import { buildFolderWhereConstraints } from 'payload/shared';
|
|
8
7
|
import React from 'react';
|
|
9
|
-
import { getPreferences } from '../../utilities/getPreferences.js';
|
|
10
8
|
export const buildBrowseByFolderView = async args => {
|
|
11
9
|
const {
|
|
12
10
|
browseByFolderSlugs: browseByFolderSlugsFromArgs = [],
|
|
@@ -34,64 +32,43 @@ export const buildBrowseByFolderView = async args => {
|
|
|
34
32
|
},
|
|
35
33
|
visibleEntities
|
|
36
34
|
} = initPageResult;
|
|
37
|
-
const browseByFolderSlugs = browseByFolderSlugsFromArgs.filter(collectionSlug => permissions?.collections?.[collectionSlug]?.read && visibleEntities.collections.includes(collectionSlug));
|
|
38
35
|
if (config.folders === false || config.folders.browseByFolder === false) {
|
|
39
36
|
throw new Error('not-found');
|
|
40
37
|
}
|
|
38
|
+
const browseByFolderSlugs = browseByFolderSlugsFromArgs.filter(collectionSlug => permissions?.collections?.[collectionSlug]?.read && visibleEntities.collections.includes(collectionSlug));
|
|
41
39
|
const query = queryFromArgs || queryFromReq;
|
|
42
|
-
const
|
|
40
|
+
const activeCollectionFolderSlugs = Array.isArray(query?.relationTo) && query.relationTo.length ? query.relationTo.filter(slug => browseByFolderSlugs.includes(slug) || config.folders && slug === config.folders.slug) : [...browseByFolderSlugs, config.folders.slug];
|
|
43
41
|
const {
|
|
44
42
|
routes: {
|
|
45
43
|
admin: adminRoute
|
|
46
44
|
}
|
|
47
45
|
} = config;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
localeCode: fullLocale?.code,
|
|
59
|
-
req: initPageResult.req,
|
|
60
|
-
search: typeof query?.search === 'string' ? query.search : undefined
|
|
61
|
-
});
|
|
62
|
-
if (folderCollectionConstraints) {
|
|
63
|
-
folderWhere = folderCollectionConstraints;
|
|
64
|
-
}
|
|
65
|
-
} else if (folderID) {
|
|
66
|
-
if (!documentWhere) {
|
|
67
|
-
documentWhere = {
|
|
68
|
-
or: []
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
const collectionConfig = payload.collections[collectionSlug].config;
|
|
72
|
-
if (collectionConfig.folders && collectionConfig.folders.browseByFolder === true) {
|
|
73
|
-
const collectionConstraints = await buildFolderWhereConstraints({
|
|
74
|
-
collectionConfig,
|
|
75
|
-
folderID,
|
|
76
|
-
localeCode: fullLocale?.code,
|
|
77
|
-
req: initPageResult.req,
|
|
78
|
-
search: typeof query?.search === 'string' ? query.search : undefined
|
|
79
|
-
});
|
|
80
|
-
if (collectionConstraints) {
|
|
81
|
-
documentWhere.or.push(collectionConstraints);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
46
|
+
/**
|
|
47
|
+
* @todo: find a pattern to avoid setting preferences on hard navigation, i.e. direct links, page refresh, etc.
|
|
48
|
+
* This will ensure that prefs are only updated when explicitly set by the user
|
|
49
|
+
* This could potentially be done by injecting a `sessionID` into the params and comparing it against a session cookie
|
|
50
|
+
*/
|
|
51
|
+
const browseByFolderPreferences = await upsertPreferences({
|
|
52
|
+
key: 'browse-by-folder',
|
|
53
|
+
req: initPageResult.req,
|
|
54
|
+
value: {
|
|
55
|
+
sort: query?.sort
|
|
84
56
|
}
|
|
85
|
-
}
|
|
57
|
+
});
|
|
58
|
+
const sortPreference = browseByFolderPreferences?.sort || '_folderOrDocumentTitle';
|
|
59
|
+
const viewPreference = browseByFolderPreferences?.viewPreference || 'grid';
|
|
86
60
|
const {
|
|
87
61
|
breadcrumbs,
|
|
88
62
|
documents,
|
|
63
|
+
FolderResultsComponent,
|
|
89
64
|
subfolders
|
|
90
|
-
} = await
|
|
91
|
-
|
|
65
|
+
} = await getFolderResultsComponentAndData({
|
|
66
|
+
activeCollectionSlugs: activeCollectionFolderSlugs,
|
|
67
|
+
browseByFolder: false,
|
|
68
|
+
displayAs: viewPreference,
|
|
92
69
|
folderID,
|
|
93
|
-
|
|
94
|
-
|
|
70
|
+
req: initPageResult.req,
|
|
71
|
+
sort: sortPreference
|
|
95
72
|
});
|
|
96
73
|
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id;
|
|
97
74
|
if (!isInDrawer && (resolvedFolderID && folderID && folderID !== resolvedFolderID || folderID && !resolvedFolderID)) {
|
|
@@ -120,29 +97,31 @@ export const buildBrowseByFolderView = async args => {
|
|
|
120
97
|
// serverProps,
|
|
121
98
|
// })
|
|
122
99
|
// documents cannot be created without a parent folder in this view
|
|
123
|
-
const
|
|
100
|
+
const allowCreateCollectionSlugs = resolvedFolderID ? [config.folders.slug, ...browseByFolderSlugs] : [config.folders.slug];
|
|
124
101
|
return {
|
|
125
|
-
View: /*#__PURE__*/_jsxs(
|
|
126
|
-
breadcrumbs: breadcrumbs,
|
|
127
|
-
documents: documents,
|
|
128
|
-
filteredCollectionSlugs: selectedCollectionSlugs,
|
|
129
|
-
folderCollectionSlugs: browseByFolderSlugs,
|
|
130
|
-
folderFieldName: config.folders.fieldName,
|
|
131
|
-
folderID: folderID,
|
|
132
|
-
subfolders: subfolders,
|
|
102
|
+
View: /*#__PURE__*/_jsxs(_Fragment, {
|
|
133
103
|
children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
|
|
134
104
|
permissions: permissions
|
|
135
105
|
}), RenderServerComponent({
|
|
136
106
|
clientProps: {
|
|
137
107
|
// ...folderViewSlots,
|
|
108
|
+
activeCollectionFolderSlugs,
|
|
109
|
+
allCollectionFolderSlugs: browseByFolderSlugs,
|
|
110
|
+
allowCreateCollectionSlugs,
|
|
111
|
+
baseFolderPath: `/browse-by-folder`,
|
|
112
|
+
breadcrumbs,
|
|
138
113
|
disableBulkDelete,
|
|
139
114
|
disableBulkEdit,
|
|
115
|
+
documents,
|
|
140
116
|
enableRowSelections,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
117
|
+
folderFieldName: config.folders.fieldName,
|
|
118
|
+
folderID: resolvedFolderID || null,
|
|
119
|
+
FolderResultsComponent,
|
|
120
|
+
sort: sortPreference,
|
|
121
|
+
subfolders,
|
|
122
|
+
viewPreference
|
|
144
123
|
},
|
|
145
|
-
// Component:config.folders?.components?.views?.
|
|
124
|
+
// Component:config.folders?.components?.views?.BrowseByFolders?.Component,
|
|
146
125
|
Fallback: DefaultBrowseByFolderView,
|
|
147
126
|
importMap: payload.importMap,
|
|
148
127
|
serverProps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.js","names":["DefaultBrowseByFolderView","FolderProvider","HydrateAuthProvider","RenderServerComponent","formatAdminURL","redirect","getFolderData","buildFolderWhereConstraints","React","getPreferences","buildBrowseByFolderView","args","browseByFolderSlugs","browseByFolderSlugsFromArgs","disableBulkDelete","disableBulkEdit","enableRowSelections","folderID","initPageResult","isInDrawer","params","query","queryFromArgs","searchParams","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","filter","collectionSlug","collections","read","includes","folders","browseByFolder","Error","selectedCollectionSlugs","Array","isArray","relationTo","length","slug","routes","admin","adminRoute","folderCollectionConfig","browseByFolderPreferences","id","collection","documentWhere","undefined","folderWhere","folderCollectionConstraints","collectionConfig","localeCode","code","search","or","collectionConstraints","push","breadcrumbs","documents","subfolders","resolvedFolderID","path","serverURL","serverProps","hasCreatePermissionCollectionSlugs","View","_jsxs","filteredCollectionSlugs","folderCollectionSlugs","folderFieldName","fieldName","_jsx","clientProps","viewPreference","value","Fallback","importMap"],"sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewServerPropsOnly,\n ListQuery,\n Where,\n} from 'payload'\n\nimport { DefaultBrowseByFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport { getFolderData } from 'payload'\nimport { buildFolderWhereConstraints } from 'payload/shared'\nimport React from 'react'\n\nimport { getPreferences } from '../../utilities/getPreferences.js'\n\nexport type BuildFolderViewArgs = {\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\nexport const buildBrowseByFolderView = async (\n args: BuildFolderViewArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n browseByFolderSlugs: browseByFolderSlugsFromArgs = [],\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderID,\n initPageResult,\n isInDrawer,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n locale: fullLocale,\n permissions,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const browseByFolderSlugs = browseByFolderSlugsFromArgs.filter(\n (collectionSlug) =>\n permissions?.collections?.[collectionSlug]?.read &&\n visibleEntities.collections.includes(collectionSlug),\n )\n\n if (config.folders === false || config.folders.browseByFolder === false) {\n throw new Error('not-found')\n }\n\n const query = queryFromArgs || queryFromReq\n const selectedCollectionSlugs: string[] =\n Array.isArray(query?.relationTo) && query.relationTo.length\n ? query.relationTo.filter(\n (slug) =>\n browseByFolderSlugs.includes(slug) || (config.folders && slug === config.folders.slug),\n )\n : [...browseByFolderSlugs, config.folders.slug]\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n const folderCollectionConfig = payload.collections[config.folders.slug].config\n\n const browseByFolderPreferences = await getPreferences<{ viewPreference: string }>(\n 'browse-by-folder',\n payload,\n user.id,\n user.collection,\n )\n\n let documentWhere: undefined | Where = undefined\n let folderWhere: undefined | Where = undefined\n // if folderID, dont make a documentWhere since it only queries root folders\n for (const collectionSlug of selectedCollectionSlugs) {\n if (collectionSlug === config.folders.slug) {\n const folderCollectionConstraints = await buildFolderWhereConstraints({\n collectionConfig: folderCollectionConfig,\n folderID,\n localeCode: fullLocale?.code,\n req: initPageResult.req,\n search: typeof query?.search === 'string' ? query.search : undefined,\n })\n\n if (folderCollectionConstraints) {\n folderWhere = folderCollectionConstraints\n }\n } else if (folderID) {\n if (!documentWhere) {\n documentWhere = {\n or: [],\n }\n }\n\n const collectionConfig = payload.collections[collectionSlug].config\n if (collectionConfig.folders && collectionConfig.folders.browseByFolder === true) {\n const collectionConstraints = await buildFolderWhereConstraints({\n collectionConfig,\n folderID,\n localeCode: fullLocale?.code,\n req: initPageResult.req,\n search: typeof query?.search === 'string' ? query.search : undefined,\n })\n\n if (collectionConstraints) {\n documentWhere.or.push(collectionConstraints)\n }\n }\n }\n }\n\n const { breadcrumbs, documents, subfolders } = await getFolderData({\n documentWhere,\n folderID,\n folderWhere,\n req: initPageResult.req,\n })\n\n const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id\n\n if (\n !isInDrawer &&\n ((resolvedFolderID && folderID && folderID !== resolvedFolderID) ||\n (folderID && !resolvedFolderID))\n ) {\n redirect(\n formatAdminURL({\n adminRoute,\n path: config.admin.routes.browseByFolder,\n serverURL: config.serverURL,\n }),\n )\n }\n\n const serverProps: Omit<FolderListViewServerPropsOnly, 'collectionConfig' | 'listPreferences'> = {\n documents,\n i18n,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n subfolders,\n user,\n }\n\n // const folderViewSlots = renderFolderViewSlots({\n // clientProps: {\n // },\n // description: staticDescription,\n // payload,\n // serverProps,\n // })\n\n // documents cannot be created without a parent folder in this view\n const hasCreatePermissionCollectionSlugs = folderID\n ? [config.folders.slug, ...browseByFolderSlugs]\n : [config.folders.slug]\n\n return {\n View: (\n <FolderProvider\n breadcrumbs={breadcrumbs}\n documents={documents}\n filteredCollectionSlugs={selectedCollectionSlugs}\n folderCollectionSlugs={browseByFolderSlugs}\n folderFieldName={config.folders.fieldName}\n folderID={folderID}\n subfolders={subfolders}\n >\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n hasCreatePermissionCollectionSlugs,\n selectedCollectionSlugs,\n viewPreference: browseByFolderPreferences?.value?.viewPreference,\n },\n // Component:config.folders?.components?.views?.list?.Component,\n Fallback: DefaultBrowseByFolderView,\n importMap: payload.importMap,\n serverProps,\n })}\n </FolderProvider>\n ),\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildView.js","names":["DefaultBrowseByFolderView","HydrateAuthProvider","RenderServerComponent","getFolderResultsComponentAndData","upsertPreferences","formatAdminURL","redirect","React","buildBrowseByFolderView","args","browseByFolderSlugs","browseByFolderSlugsFromArgs","disableBulkDelete","disableBulkEdit","enableRowSelections","folderID","initPageResult","isInDrawer","params","query","queryFromArgs","searchParams","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","folders","browseByFolder","Error","filter","collectionSlug","collections","read","includes","activeCollectionFolderSlugs","Array","isArray","relationTo","length","slug","routes","admin","adminRoute","browseByFolderPreferences","key","value","sort","sortPreference","viewPreference","breadcrumbs","documents","FolderResultsComponent","subfolders","activeCollectionSlugs","displayAs","resolvedFolderID","id","path","serverURL","serverProps","allowCreateCollectionSlugs","View","_jsxs","_Fragment","_jsx","clientProps","allCollectionFolderSlugs","baseFolderPath","folderFieldName","fieldName","Fallback","importMap"],"sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewClientProps,\n FolderListViewServerPropsOnly,\n FolderSortKeys,\n ListQuery,\n} from 'payload'\n\nimport { DefaultBrowseByFolderView, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { getFolderResultsComponentAndData, upsertPreferences } from '@payloadcms/ui/rsc'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport React from 'react'\n\nexport type BuildFolderViewArgs = {\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\nexport const buildBrowseByFolderView = async (\n args: BuildFolderViewArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n browseByFolderSlugs: browseByFolderSlugsFromArgs = [],\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderID,\n initPageResult,\n isInDrawer,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n locale: fullLocale,\n permissions,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n if (config.folders === false || config.folders.browseByFolder === false) {\n throw new Error('not-found')\n }\n\n const browseByFolderSlugs = browseByFolderSlugsFromArgs.filter(\n (collectionSlug) =>\n permissions?.collections?.[collectionSlug]?.read &&\n visibleEntities.collections.includes(collectionSlug),\n )\n\n const query = queryFromArgs || queryFromReq\n const activeCollectionFolderSlugs: string[] =\n Array.isArray(query?.relationTo) && query.relationTo.length\n ? query.relationTo.filter(\n (slug) =>\n browseByFolderSlugs.includes(slug) || (config.folders && slug === config.folders.slug),\n )\n : [...browseByFolderSlugs, config.folders.slug]\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n /**\n * @todo: find a pattern to avoid setting preferences on hard navigation, i.e. direct links, page refresh, etc.\n * This will ensure that prefs are only updated when explicitly set by the user\n * This could potentially be done by injecting a `sessionID` into the params and comparing it against a session cookie\n */\n const browseByFolderPreferences = await upsertPreferences<{\n sort?: FolderSortKeys\n viewPreference?: 'grid' | 'list'\n }>({\n key: 'browse-by-folder',\n req: initPageResult.req,\n value: {\n sort: query?.sort as FolderSortKeys,\n },\n })\n\n const sortPreference: FolderSortKeys = browseByFolderPreferences?.sort || '_folderOrDocumentTitle'\n const viewPreference = browseByFolderPreferences?.viewPreference || 'grid'\n\n const { breadcrumbs, documents, FolderResultsComponent, subfolders } =\n await getFolderResultsComponentAndData({\n activeCollectionSlugs: activeCollectionFolderSlugs,\n browseByFolder: false,\n displayAs: viewPreference,\n folderID,\n req: initPageResult.req,\n sort: sortPreference,\n })\n\n const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id\n\n if (\n !isInDrawer &&\n ((resolvedFolderID && folderID && folderID !== resolvedFolderID) ||\n (folderID && !resolvedFolderID))\n ) {\n redirect(\n formatAdminURL({\n adminRoute,\n path: config.admin.routes.browseByFolder,\n serverURL: config.serverURL,\n }),\n )\n }\n\n const serverProps: Omit<FolderListViewServerPropsOnly, 'collectionConfig' | 'listPreferences'> = {\n documents,\n i18n,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n subfolders,\n user,\n }\n\n // const folderViewSlots = renderFolderViewSlots({\n // clientProps: {\n // },\n // description: staticDescription,\n // payload,\n // serverProps,\n // })\n\n // documents cannot be created without a parent folder in this view\n const allowCreateCollectionSlugs = resolvedFolderID\n ? [config.folders.slug, ...browseByFolderSlugs]\n : [config.folders.slug]\n\n return {\n View: (\n <>\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n activeCollectionFolderSlugs,\n allCollectionFolderSlugs: browseByFolderSlugs,\n allowCreateCollectionSlugs,\n baseFolderPath: `/browse-by-folder`,\n breadcrumbs,\n disableBulkDelete,\n disableBulkEdit,\n documents,\n enableRowSelections,\n folderFieldName: config.folders.fieldName,\n folderID: resolvedFolderID || null,\n FolderResultsComponent,\n sort: sortPreference,\n subfolders,\n viewPreference,\n } satisfies FolderListViewClientProps,\n // Component:config.folders?.components?.views?.BrowseByFolders?.Component,\n Fallback: DefaultBrowseByFolderView,\n importMap: payload.importMap,\n serverProps,\n })}\n </>\n ),\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/CollectionFolders/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/CollectionFolders/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,EAI/B,SAAS,EACV,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,kCAAkC,GAAG;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG,oBAAoB,CAAA;AAExB;;GAEG;AACH,eAAO,MAAM,yBAAyB,SAC9B,kCAAkC,KACvC,OAAO,CAAC,+BAA+B,CA0KzC,CAAA"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { DefaultCollectionFolderView,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { DefaultCollectionFolderView, HydrateAuthProvider } from '@payloadcms/ui';
|
|
3
3
|
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
4
|
+
import { getFolderResultsComponentAndData, upsertPreferences } from '@payloadcms/ui/rsc';
|
|
4
5
|
import { formatAdminURL } from '@payloadcms/ui/shared';
|
|
5
6
|
import { redirect } from 'next/navigation.js';
|
|
6
|
-
import { getFolderData } from 'payload';
|
|
7
|
-
import { buildFolderWhereConstraints } from 'payload/shared';
|
|
8
7
|
import React from 'react';
|
|
9
|
-
import { getPreferences } from '../../utilities/getPreferences.js';
|
|
10
8
|
/**
|
|
11
9
|
* Builds the entire view for collection-folder views on the server
|
|
12
10
|
*/
|
|
@@ -41,56 +39,48 @@ export const buildCollectionFolderView = async args => {
|
|
|
41
39
|
},
|
|
42
40
|
visibleEntities
|
|
43
41
|
} = initPageResult;
|
|
44
|
-
if (!
|
|
42
|
+
if (!config.folders) {
|
|
43
|
+
throw new Error('not-found');
|
|
44
|
+
}
|
|
45
|
+
if (!permissions?.collections?.[collectionSlug]?.read || !permissions?.collections?.[config.folders.slug].read) {
|
|
45
46
|
throw new Error('not-found');
|
|
46
47
|
}
|
|
47
48
|
if (collectionConfig) {
|
|
49
|
+
if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility || !config.folders) {
|
|
50
|
+
throw new Error('not-found');
|
|
51
|
+
}
|
|
48
52
|
const query = queryFromArgs || queryFromReq;
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
/**
|
|
54
|
+
* @todo: find a pattern to avoid setting preferences on hard navigation, i.e. direct links, page refresh, etc.
|
|
55
|
+
* This will ensure that prefs are only updated when explicitly set by the user
|
|
56
|
+
* This could potentially be done by injecting a `sessionID` into the params and comparing it against a session cookie
|
|
57
|
+
*/
|
|
58
|
+
const collectionFolderPreferences = await upsertPreferences({
|
|
59
|
+
key: `${collectionSlug}-collection-folder`,
|
|
60
|
+
req: initPageResult.req,
|
|
61
|
+
value: {
|
|
62
|
+
sort: query?.sort
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
const sortPreference = collectionFolderPreferences?.sort || '_folderOrDocumentTitle';
|
|
66
|
+
const viewPreference = collectionFolderPreferences?.viewPreference || 'grid';
|
|
51
67
|
const {
|
|
52
68
|
routes: {
|
|
53
69
|
admin: adminRoute
|
|
54
70
|
}
|
|
55
71
|
} = config;
|
|
56
|
-
if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility || !config.folders) {
|
|
57
|
-
throw new Error('not-found');
|
|
58
|
-
}
|
|
59
|
-
let folderWhere;
|
|
60
|
-
const folderCollectionConfig = payload.collections[config.folders.slug].config;
|
|
61
|
-
const folderCollectionConstraints = await buildFolderWhereConstraints({
|
|
62
|
-
collectionConfig: folderCollectionConfig,
|
|
63
|
-
folderID,
|
|
64
|
-
localeCode: fullLocale?.code,
|
|
65
|
-
req: initPageResult.req,
|
|
66
|
-
search: typeof query?.search === 'string' ? query.search : undefined,
|
|
67
|
-
sort: sortPreference
|
|
68
|
-
});
|
|
69
|
-
if (folderCollectionConstraints) {
|
|
70
|
-
folderWhere = folderCollectionConstraints;
|
|
71
|
-
}
|
|
72
|
-
let documentWhere;
|
|
73
|
-
const collectionConstraints = await buildFolderWhereConstraints({
|
|
74
|
-
collectionConfig,
|
|
75
|
-
folderID,
|
|
76
|
-
localeCode: fullLocale?.code,
|
|
77
|
-
req: initPageResult.req,
|
|
78
|
-
search: typeof query?.search === 'string' ? query.search : undefined,
|
|
79
|
-
sort: sortPreference
|
|
80
|
-
});
|
|
81
|
-
if (collectionConstraints) {
|
|
82
|
-
documentWhere = collectionConstraints;
|
|
83
|
-
}
|
|
84
72
|
const {
|
|
85
73
|
breadcrumbs,
|
|
86
74
|
documents,
|
|
75
|
+
FolderResultsComponent,
|
|
87
76
|
subfolders
|
|
88
|
-
} = await
|
|
89
|
-
collectionSlug,
|
|
90
|
-
|
|
77
|
+
} = await getFolderResultsComponentAndData({
|
|
78
|
+
activeCollectionSlugs: [config.folders.slug, collectionSlug],
|
|
79
|
+
browseByFolder: false,
|
|
80
|
+
displayAs: viewPreference,
|
|
91
81
|
folderID,
|
|
92
|
-
|
|
93
|
-
|
|
82
|
+
req: initPageResult.req,
|
|
83
|
+
sort: sortPreference
|
|
94
84
|
});
|
|
95
85
|
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id;
|
|
96
86
|
if (!isInDrawer && (resolvedFolderID && folderID && folderID !== resolvedFolderID || folderID && !resolvedFolderID)) {
|
|
@@ -100,11 +90,6 @@ export const buildCollectionFolderView = async args => {
|
|
|
100
90
|
serverURL: config.serverURL
|
|
101
91
|
}));
|
|
102
92
|
}
|
|
103
|
-
const newDocumentURL = formatAdminURL({
|
|
104
|
-
adminRoute,
|
|
105
|
-
path: `/collections/${collectionSlug}/create`
|
|
106
|
-
});
|
|
107
|
-
const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create;
|
|
108
93
|
const serverProps = {
|
|
109
94
|
collectionConfig,
|
|
110
95
|
documents,
|
|
@@ -133,29 +118,30 @@ export const buildCollectionFolderView = async args => {
|
|
|
133
118
|
// })
|
|
134
119
|
const search = query?.search;
|
|
135
120
|
return {
|
|
136
|
-
View: /*#__PURE__*/_jsxs(
|
|
137
|
-
breadcrumbs: breadcrumbs,
|
|
138
|
-
collectionSlug: collectionSlug,
|
|
139
|
-
documents: documents,
|
|
140
|
-
folderCollectionSlugs: [collectionSlug],
|
|
141
|
-
folderFieldName: config.folders.fieldName,
|
|
142
|
-
folderID: folderID,
|
|
143
|
-
search: search,
|
|
144
|
-
subfolders: subfolders,
|
|
121
|
+
View: /*#__PURE__*/_jsxs(_Fragment, {
|
|
145
122
|
children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
|
|
146
123
|
permissions: permissions
|
|
147
124
|
}), RenderServerComponent({
|
|
148
125
|
clientProps: {
|
|
149
126
|
// ...folderViewSlots,
|
|
127
|
+
allCollectionFolderSlugs: [config.folders.slug, collectionSlug],
|
|
128
|
+
allowCreateCollectionSlugs: [permissions?.collections?.[config.folders.slug]?.create ? config.folders.slug : null, permissions?.collections?.[collectionSlug]?.create ? collectionSlug : null].filter(Boolean),
|
|
129
|
+
baseFolderPath: `/collections/${collectionSlug}/${config.folders.slug}`,
|
|
130
|
+
breadcrumbs,
|
|
150
131
|
collectionSlug,
|
|
151
132
|
disableBulkDelete,
|
|
152
133
|
disableBulkEdit,
|
|
134
|
+
documents,
|
|
153
135
|
enableRowSelections,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
136
|
+
folderFieldName: config.folders.fieldName,
|
|
137
|
+
folderID: resolvedFolderID || null,
|
|
138
|
+
FolderResultsComponent,
|
|
139
|
+
search,
|
|
140
|
+
sort: sortPreference,
|
|
141
|
+
subfolders,
|
|
142
|
+
viewPreference
|
|
157
143
|
},
|
|
158
|
-
Component: collectionConfig?.admin?.components?.views?.
|
|
144
|
+
// Component: collectionConfig?.admin?.components?.views?.Folders?.Component,
|
|
159
145
|
Fallback: DefaultCollectionFolderView,
|
|
160
146
|
importMap: payload.importMap,
|
|
161
147
|
serverProps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.js","names":["DefaultCollectionFolderView","FolderProvider","HydrateAuthProvider","RenderServerComponent","formatAdminURL","redirect","getFolderData","buildFolderWhereConstraints","React","getPreferences","buildCollectionFolderView","args","disableBulkDelete","disableBulkEdit","enableRowSelections","folderID","initPageResult","isInDrawer","overrideEntityVisibility","params","query","queryFromArgs","searchParams","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","read","Error","collectionFolderPreferences","id","collection","sortPreference","value","sort","routes","admin","adminRoute","includes","folders","folderWhere","folderCollectionConfig","folderCollectionConstraints","localeCode","code","search","undefined","documentWhere","collectionConstraints","breadcrumbs","documents","subfolders","resolvedFolderID","length","path","serverURL","newDocumentURL","hasCreatePermission","create","serverProps","View","_jsxs","folderCollectionSlugs","folderFieldName","fieldName","_jsx","clientProps","viewPreference","Component","components","views","list","Fallback","importMap"],"sources":["../../../src/views/CollectionFolders/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewServerPropsOnly,\n ListQuery,\n Where,\n} from 'payload'\n\nimport { DefaultCollectionFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport { getFolderData } from 'payload'\nimport { buildFolderWhereConstraints } from 'payload/shared'\nimport React from 'react'\n\nimport { getPreferences } from '../../utilities/getPreferences.js'\n\n// import { renderFolderViewSlots } from './renderFolderViewSlots.js'\n\nexport type BuildCollectionFolderViewStateArgs = {\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\n/**\n * Builds the entire view for collection-folder views on the server\n */\nexport const buildCollectionFolderView = async (\n args: BuildCollectionFolderViewStateArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderID,\n initPageResult,\n isInDrawer,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\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 if (collectionConfig) {\n const query = queryFromArgs || queryFromReq\n\n const collectionFolderPreferences = await getPreferences<{\n sort?: string\n viewPreference: string\n }>(`${collectionSlug}-collection-folder`, payload, user.id, user.collection)\n\n const sortPreference = collectionFolderPreferences?.value.sort\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n if (\n (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) ||\n !config.folders\n ) {\n throw new Error('not-found')\n }\n\n let folderWhere: undefined | Where\n const folderCollectionConfig = payload.collections[config.folders.slug].config\n const folderCollectionConstraints = await buildFolderWhereConstraints({\n collectionConfig: folderCollectionConfig,\n folderID,\n localeCode: fullLocale?.code,\n req: initPageResult.req,\n search: typeof query?.search === 'string' ? query.search : undefined,\n sort: sortPreference,\n })\n\n if (folderCollectionConstraints) {\n folderWhere = folderCollectionConstraints\n }\n\n let documentWhere: undefined | Where\n const collectionConstraints = await buildFolderWhereConstraints({\n collectionConfig,\n folderID,\n localeCode: fullLocale?.code,\n req: initPageResult.req,\n search: typeof query?.search === 'string' ? query.search : undefined,\n sort: sortPreference,\n })\n if (collectionConstraints) {\n documentWhere = collectionConstraints\n }\n\n const { breadcrumbs, documents, subfolders } = await getFolderData({\n collectionSlug,\n documentWhere,\n folderID,\n folderWhere,\n req: initPageResult.req,\n })\n\n const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id\n\n if (\n !isInDrawer &&\n ((resolvedFolderID && folderID && folderID !== resolvedFolderID) ||\n (folderID && !resolvedFolderID))\n ) {\n redirect(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${config.folders.slug}`,\n serverURL: config.serverURL,\n }),\n )\n }\n\n const newDocumentURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/create`,\n })\n\n const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create\n\n const serverProps: FolderListViewServerPropsOnly = {\n collectionConfig,\n documents,\n i18n,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n subfolders,\n user,\n }\n\n // We could support slots in the folder view in the future\n // const folderViewSlots = renderFolderViewSlots({\n // clientProps: {\n // collectionSlug,\n // hasCreatePermission,\n // newDocumentURL,\n // },\n // collectionConfig,\n // description: typeof collectionConfig.admin.description === 'function'\n // ? collectionConfig.admin.description({ t: i18n.t })\n // : collectionConfig.admin.description,\n // payload,\n // serverProps,\n // })\n\n const search = query?.search as string\n\n return {\n View: (\n <FolderProvider\n breadcrumbs={breadcrumbs}\n collectionSlug={collectionSlug}\n documents={documents}\n folderCollectionSlugs={[collectionSlug]}\n folderFieldName={config.folders.fieldName}\n folderID={folderID}\n search={search}\n subfolders={subfolders}\n >\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n collectionSlug,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n hasCreatePermission,\n newDocumentURL,\n viewPreference: collectionFolderPreferences?.value?.viewPreference,\n },\n Component: collectionConfig?.admin?.components?.views?.list?.Component,\n Fallback: DefaultCollectionFolderView,\n importMap: payload.importMap,\n serverProps,\n })}\n </FolderProvider>\n ),\n }\n }\n\n throw new Error('not-found')\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildView.js","names":["DefaultCollectionFolderView","HydrateAuthProvider","RenderServerComponent","getFolderResultsComponentAndData","upsertPreferences","formatAdminURL","redirect","React","buildCollectionFolderView","args","disableBulkDelete","disableBulkEdit","enableRowSelections","folderID","initPageResult","isInDrawer","overrideEntityVisibility","params","query","queryFromArgs","searchParams","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","folders","Error","collections","read","includes","collectionFolderPreferences","key","value","sort","sortPreference","viewPreference","routes","admin","adminRoute","breadcrumbs","documents","FolderResultsComponent","subfolders","activeCollectionSlugs","browseByFolder","displayAs","resolvedFolderID","length","id","path","serverURL","serverProps","search","View","_jsxs","_Fragment","_jsx","clientProps","allCollectionFolderSlugs","allowCreateCollectionSlugs","create","filter","Boolean","baseFolderPath","folderFieldName","fieldName","Fallback","importMap"],"sources":["../../../src/views/CollectionFolders/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewClientProps,\n FolderListViewServerPropsOnly,\n FolderSortKeys,\n ListQuery,\n} from 'payload'\n\nimport { DefaultCollectionFolderView, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { getFolderResultsComponentAndData, upsertPreferences } from '@payloadcms/ui/rsc'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport React from 'react'\n\n// import { renderFolderViewSlots } from './renderFolderViewSlots.js'\n\nexport type BuildCollectionFolderViewStateArgs = {\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\n/**\n * Builds the entire view for collection-folder views on the server\n */\nexport const buildCollectionFolderView = async (\n args: BuildCollectionFolderViewStateArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderID,\n initPageResult,\n isInDrawer,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n if (!config.folders) {\n throw new Error('not-found')\n }\n\n if (\n !permissions?.collections?.[collectionSlug]?.read ||\n !permissions?.collections?.[config.folders.slug].read\n ) {\n throw new Error('not-found')\n }\n\n if (collectionConfig) {\n if (\n (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) ||\n !config.folders\n ) {\n throw new Error('not-found')\n }\n\n const query = queryFromArgs || queryFromReq\n\n /**\n * @todo: find a pattern to avoid setting preferences on hard navigation, i.e. direct links, page refresh, etc.\n * This will ensure that prefs are only updated when explicitly set by the user\n * This could potentially be done by injecting a `sessionID` into the params and comparing it against a session cookie\n */\n const collectionFolderPreferences = await upsertPreferences<{\n sort?: FolderSortKeys\n viewPreference?: 'grid' | 'list'\n }>({\n key: `${collectionSlug}-collection-folder`,\n req: initPageResult.req,\n value: {\n sort: query?.sort as FolderSortKeys,\n },\n })\n\n const sortPreference: FolderSortKeys =\n collectionFolderPreferences?.sort || '_folderOrDocumentTitle'\n const viewPreference = collectionFolderPreferences?.viewPreference || 'grid'\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n const { breadcrumbs, documents, FolderResultsComponent, subfolders } =\n await getFolderResultsComponentAndData({\n activeCollectionSlugs: [config.folders.slug, collectionSlug],\n browseByFolder: false,\n displayAs: viewPreference,\n folderID,\n req: initPageResult.req,\n sort: sortPreference,\n })\n\n const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id\n\n if (\n !isInDrawer &&\n ((resolvedFolderID && folderID && folderID !== resolvedFolderID) ||\n (folderID && !resolvedFolderID))\n ) {\n redirect(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${config.folders.slug}`,\n serverURL: config.serverURL,\n }),\n )\n }\n\n const serverProps: FolderListViewServerPropsOnly = {\n collectionConfig,\n documents,\n i18n,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n subfolders,\n user,\n }\n\n // We could support slots in the folder view in the future\n // const folderViewSlots = renderFolderViewSlots({\n // clientProps: {\n // collectionSlug,\n // hasCreatePermission,\n // newDocumentURL,\n // },\n // collectionConfig,\n // description: typeof collectionConfig.admin.description === 'function'\n // ? collectionConfig.admin.description({ t: i18n.t })\n // : collectionConfig.admin.description,\n // payload,\n // serverProps,\n // })\n\n const search = query?.search as string\n\n return {\n View: (\n <>\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n allCollectionFolderSlugs: [config.folders.slug, collectionSlug],\n allowCreateCollectionSlugs: [\n permissions?.collections?.[config.folders.slug]?.create\n ? config.folders.slug\n : null,\n permissions?.collections?.[collectionSlug]?.create ? collectionSlug : null,\n ].filter(Boolean),\n baseFolderPath: `/collections/${collectionSlug}/${config.folders.slug}`,\n breadcrumbs,\n collectionSlug,\n disableBulkDelete,\n disableBulkEdit,\n documents,\n enableRowSelections,\n folderFieldName: config.folders.fieldName,\n folderID: resolvedFolderID || null,\n FolderResultsComponent,\n search,\n sort: sortPreference,\n subfolders,\n viewPreference,\n } satisfies FolderListViewClientProps,\n // Component: collectionConfig?.admin?.components?.views?.Folders?.Component,\n Fallback: DefaultCollectionFolderView,\n importMap: payload.importMap,\n serverProps,\n })}\n </>\n ),\n }\n }\n\n throw new Error('not-found')\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -267,7 +267,9 @@ const PreviewView = ({
|
|
|
267
267
|
abortAndIgnore(abortOnSave);
|
|
268
268
|
};
|
|
269
269
|
});
|
|
270
|
-
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal &&
|
|
270
|
+
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal &&
|
|
271
|
+
// eslint-disable-next-line react-compiler/react-compiler
|
|
272
|
+
!documentLockStateRef.current?.hasShownLockedModal && !isLockExpired;
|
|
271
273
|
return /*#__PURE__*/_jsx(OperationProvider, {
|
|
272
274
|
operation: operation,
|
|
273
275
|
children: /*#__PURE__*/_jsxs(Form, {
|