@payloadcms/next 3.80.0-internal.cdd7ef7 → 3.80.0
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/elements/Nav/getNavPrefs.d.ts.map +1 -1
- package/dist/elements/Nav/getNavPrefs.js +2 -36
- package/dist/elements/Nav/getNavPrefs.js.map +1 -1
- package/dist/elements/Nav/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/index.client.js +44 -27
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/elements/Nav/index.d.ts.map +1 -1
- package/dist/elements/Nav/index.js +7 -35
- package/dist/elements/Nav/index.js.map +1 -1
- package/dist/exports/client.d.ts +1 -2
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +1 -2
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/rsc.d.ts +1 -2
- package/dist/exports/rsc.d.ts.map +1 -1
- package/dist/exports/rsc.js +1 -2
- package/dist/exports/rsc.js.map +1 -1
- package/dist/exports/utilities.d.ts +0 -2
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +0 -1
- package/dist/exports/utilities.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/utilities/handleServerFunctions.js +2 -2
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/views/BrowseByFolder/buildView.d.ts +13 -0
- package/dist/views/BrowseByFolder/buildView.d.ts.map +1 -0
- package/dist/views/BrowseByFolder/buildView.js +170 -0
- package/dist/views/BrowseByFolder/buildView.js.map +1 -0
- package/dist/views/BrowseByFolder/index.d.ts +4 -0
- package/dist/views/BrowseByFolder/index.d.ts.map +1 -0
- package/dist/views/BrowseByFolder/index.js +20 -0
- package/dist/views/BrowseByFolder/index.js.map +1 -0
- package/dist/views/BrowseByFolder/metadata.d.ts +4 -0
- package/dist/views/BrowseByFolder/metadata.d.ts.map +1 -0
- package/dist/views/BrowseByFolder/metadata.js +18 -0
- package/dist/views/BrowseByFolder/metadata.js.map +1 -0
- package/dist/views/CollectionFolders/buildView.d.ts +15 -0
- package/dist/views/CollectionFolders/buildView.d.ts.map +1 -0
- package/dist/views/CollectionFolders/buildView.js +156 -0
- package/dist/views/CollectionFolders/buildView.js.map +1 -0
- package/dist/views/CollectionFolders/index.d.ts +4 -0
- package/dist/views/CollectionFolders/index.d.ts.map +1 -0
- package/dist/views/CollectionFolders/index.js +20 -0
- package/dist/views/CollectionFolders/index.js.map +1 -0
- package/dist/views/CollectionFolders/metadata.d.ts +7 -0
- package/dist/views/CollectionFolders/metadata.d.ts.map +1 -0
- package/dist/views/CollectionFolders/metadata.js +25 -0
- package/dist/views/CollectionFolders/metadata.js.map +1 -0
- package/dist/views/CollectionFolders/renderFolderViewSlots.d.ts +11 -0
- package/dist/views/CollectionFolders/renderFolderViewSlots.d.ts.map +1 -0
- package/dist/views/CollectionFolders/renderFolderViewSlots.js +64 -0
- package/dist/views/CollectionFolders/renderFolderViewSlots.js.map +1 -0
- package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
- package/dist/views/Document/renderDocumentSlots.js +0 -8
- package/dist/views/Document/renderDocumentSlots.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +28 -84
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Root/getRouteData.d.ts +4 -1
- package/dist/views/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +91 -27
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +11 -5
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Root/metadata.d.ts.map +1 -1
- package/dist/views/Root/metadata.js +37 -1
- package/dist/views/Root/metadata.js.map +1 -1
- package/package.json +7 -7
- package/dist/elements/HierarchyTypeField/index.d.ts +0 -9
- package/dist/elements/HierarchyTypeField/index.d.ts.map +0 -1
- package/dist/elements/HierarchyTypeField/index.js +0 -114
- package/dist/elements/HierarchyTypeField/index.js.map +0 -1
- package/dist/elements/HierarchyTypeField/index.server.d.ts +0 -9
- package/dist/elements/HierarchyTypeField/index.server.d.ts.map +0 -1
- package/dist/elements/HierarchyTypeField/index.server.js +0 -32
- package/dist/elements/HierarchyTypeField/index.server.js.map +0 -1
- package/dist/elements/Nav/SidebarTabs/TabError/index.d.ts +0 -8
- package/dist/elements/Nav/SidebarTabs/TabError/index.d.ts.map +0 -1
- package/dist/elements/Nav/SidebarTabs/TabError/index.js +0 -42
- package/dist/elements/Nav/SidebarTabs/TabError/index.js.map +0 -1
- package/dist/elements/Nav/SidebarTabs/constants.d.ts +0 -2
- package/dist/elements/Nav/SidebarTabs/constants.d.ts.map +0 -1
- package/dist/elements/Nav/SidebarTabs/constants.js +0 -2
- package/dist/elements/Nav/SidebarTabs/constants.js.map +0 -1
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts +0 -22
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +0 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +0 -194
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +0 -1
- package/dist/elements/Nav/SidebarTabs/index.d.ts +0 -17
- package/dist/elements/Nav/SidebarTabs/index.d.ts.map +0 -1
- package/dist/elements/Nav/SidebarTabs/index.js +0 -85
- package/dist/elements/Nav/SidebarTabs/index.js.map +0 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +0 -10
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +0 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +0 -54
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +0 -1
- package/dist/utilities/getHierarchyAncestry.d.ts +0 -24
- package/dist/utilities/getHierarchyAncestry.d.ts.map +0 -1
- package/dist/utilities/getHierarchyAncestry.js +0 -103
- package/dist/utilities/getHierarchyAncestry.js.map +0 -1
- package/dist/views/List/handleHierarchy.d.ts +0 -18
- package/dist/views/List/handleHierarchy.d.ts.map +0 -1
- package/dist/views/List/handleHierarchy.js +0 -258
- package/dist/views/List/handleHierarchy.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { _internal_renderFieldHandler, 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
|
-
import { renderTabHandler } from '../elements/Nav/SidebarTabs/renderTabServerFn.js';
|
|
6
6
|
import { getDefaultLayoutHandler } from '../views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js';
|
|
7
7
|
import { renderWidgetHandler } from '../views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js';
|
|
8
8
|
import { renderDocumentHandler } from '../views/Document/handleServerFunction.js';
|
|
@@ -14,11 +14,11 @@ const baseServerFunctions = {
|
|
|
14
14
|
'copy-data-from-locale': copyDataFromLocaleHandler,
|
|
15
15
|
'form-state': buildFormStateHandler,
|
|
16
16
|
'get-default-layout': getDefaultLayoutHandler,
|
|
17
|
+
'get-folder-results-component-and-data': getFolderResultsComponentAndDataHandler,
|
|
17
18
|
'render-document': renderDocumentHandler,
|
|
18
19
|
'render-document-slots': renderDocumentSlotsHandler,
|
|
19
20
|
'render-field': _internal_renderFieldHandler,
|
|
20
21
|
'render-list': renderListHandler,
|
|
21
|
-
'render-tab': renderTabHandler,
|
|
22
22
|
'render-widget': renderWidgetHandler,
|
|
23
23
|
'schedule-publish': schedulePublishHandler,
|
|
24
24
|
slugify: slugifyHandler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunctions.js","names":["_internal_renderFieldHandler","copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","
|
|
1
|
+
{"version":3,"file":"handleServerFunctions.js","names":["_internal_renderFieldHandler","copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","getFolderResultsComponentAndDataHandler","schedulePublishHandler","getDefaultLayoutHandler","renderWidgetHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","slugifyHandler","baseServerFunctions","slugify","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","serverFunctions","extraServerFunctions","cookies","locale","permissions","req","key","augmentedArgs","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { DefaultServerFunctionArgs, ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { _internal_renderFieldHandler, 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 { getDefaultLayoutHandler } from '../views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js'\nimport { renderWidgetHandler } from '../views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js'\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'\nimport { slugifyHandler } from './slugify.js'\n\nconst baseServerFunctions: Record<string, ServerFunction<any, any>> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'get-default-layout': getDefaultLayoutHandler,\n 'get-folder-results-component-and-data': getFolderResultsComponentAndDataHandler,\n 'render-document': renderDocumentHandler,\n 'render-document-slots': renderDocumentSlotsHandler,\n 'render-field': _internal_renderFieldHandler,\n 'render-list': renderListHandler,\n 'render-widget': renderWidgetHandler,\n 'schedule-publish': schedulePublishHandler,\n slugify: slugifyHandler,\n 'table-state': buildTableStateHandler,\n}\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const {\n name: fnKey,\n args: fnArgs,\n config: configPromise,\n importMap,\n serverFunctions: extraServerFunctions,\n } = args\n\n const { cookies, locale, permissions, req } = await initReq({\n configPromise,\n importMap,\n key: 'RootLayout',\n })\n\n const augmentedArgs: DefaultServerFunctionArgs = {\n ...fnArgs,\n cookies,\n importMap,\n locale,\n permissions,\n req,\n }\n\n const fn = extraServerFunctions?.[fnKey] || baseServerFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,yBAAyB,QAAQ;AACxE,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,uCAAuC,QAAQ;AACxD,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,uBAAuB,QAAQ;AACxC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AACxB,SAASC,cAAc,QAAQ;AAE/B,MAAMC,mBAAA,GAAgE;EACpE,yBAAyBZ,yBAAA;EACzB,cAAcC,qBAAA;EACd,sBAAsBI,uBAAA;EACtB,yCAAyCF,uCAAA;EACzC,mBAAmBI,qBAAA;EACnB,yBAAyBC,0BAAA;EACzB,gBAAgBT,4BAAA;EAChB,eAAeU,iBAAA;EACf,iBAAiBH,mBAAA;EACjB,oBAAoBF,sBAAA;EACpBS,OAAA,EAASF,cAAA;EACT,eAAeT;AACjB;AAEA,OAAO,MAAMY,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IACJC,IAAA,EAAMC,KAAK;IACXF,IAAA,EAAMG,MAAM;IACZC,MAAA,EAAQC,aAAa;IACrBC,SAAS;IACTC,eAAA,EAAiBC;EAAoB,CACtC,GAAGR,IAAA;EAEJ,MAAM;IAAES,OAAO;IAAEC,MAAM;IAAEC,WAAW;IAAEC;EAAG,CAAE,GAAG,MAAMjB,OAAA,CAAQ;IAC1DU,aAAA;IACAC,SAAA;IACAO,GAAA,EAAK;EACP;EAEA,MAAMC,aAAA,GAA2C;IAC/C,GAAGX,MAAM;IACTM,OAAA;IACAH,SAAA;IACAI,MAAA;IACAC,WAAA;IACAC;EACF;EAEA,MAAMG,EAAA,GAAKP,oBAAA,GAAuBN,KAAA,CAAM,IAAIL,mBAAmB,CAACK,KAAA,CAAM;EAEtE,IAAI,CAACa,EAAA,EAAI;IACP,MAAM,IAAIC,KAAA,CAAM,4BAA4Bd,KAAA,EAAO;EACrD;EAEA,OAAOa,EAAA,CAAGD,aAAA;AACZ","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AdminViewServerProps, BuildCollectionFolderViewResult, ListQuery } from 'payload';
|
|
2
|
+
export type BuildFolderViewArgs = {
|
|
3
|
+
customCellProps?: Record<string, any>;
|
|
4
|
+
disableBulkDelete?: boolean;
|
|
5
|
+
disableBulkEdit?: boolean;
|
|
6
|
+
enableRowSelections: boolean;
|
|
7
|
+
folderID?: number | string;
|
|
8
|
+
isInDrawer?: boolean;
|
|
9
|
+
overrideEntityVisibility?: boolean;
|
|
10
|
+
query: ListQuery;
|
|
11
|
+
} & AdminViewServerProps;
|
|
12
|
+
export declare const buildBrowseByFolderView: (args: BuildFolderViewArgs) => Promise<BuildCollectionFolderViewResult>;
|
|
13
|
+
//# sourceMappingURL=buildView.d.ts.map
|
|
@@ -0,0 +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,EAI/B,SAAS,EACV,MAAM,SAAS,CAAA;AAUhB,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,CAwMzC,CAAA"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { DefaultBrowseByFolderView, HydrateAuthProvider } from '@payloadcms/ui';
|
|
3
|
+
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
4
|
+
import { getFolderResultsComponentAndData, upsertPreferences } from '@payloadcms/ui/rsc';
|
|
5
|
+
import { formatAdminURL } from '@payloadcms/ui/shared';
|
|
6
|
+
import { redirect } from 'next/navigation.js';
|
|
7
|
+
import { PREFERENCE_KEYS } from 'payload/shared';
|
|
8
|
+
import React from 'react';
|
|
9
|
+
export const buildBrowseByFolderView = async args => {
|
|
10
|
+
const {
|
|
11
|
+
browseByFolderSlugs: browseByFolderSlugsFromArgs = [],
|
|
12
|
+
disableBulkDelete,
|
|
13
|
+
disableBulkEdit,
|
|
14
|
+
enableRowSelections,
|
|
15
|
+
folderID,
|
|
16
|
+
initPageResult,
|
|
17
|
+
isInDrawer,
|
|
18
|
+
params,
|
|
19
|
+
query: queryFromArgs,
|
|
20
|
+
searchParams
|
|
21
|
+
} = args;
|
|
22
|
+
const {
|
|
23
|
+
locale: fullLocale,
|
|
24
|
+
permissions,
|
|
25
|
+
req: {
|
|
26
|
+
i18n,
|
|
27
|
+
payload,
|
|
28
|
+
payload: {
|
|
29
|
+
config
|
|
30
|
+
},
|
|
31
|
+
query: queryFromReq,
|
|
32
|
+
user
|
|
33
|
+
},
|
|
34
|
+
visibleEntities
|
|
35
|
+
} = initPageResult;
|
|
36
|
+
if (config.folders === false || config.folders.browseByFolder === false) {
|
|
37
|
+
throw new Error('not-found');
|
|
38
|
+
}
|
|
39
|
+
const foldersSlug = config.folders.slug;
|
|
40
|
+
/**
|
|
41
|
+
* All visiible folder enabled collection slugs that the user has read permissions for.
|
|
42
|
+
*/
|
|
43
|
+
const allowReadCollectionSlugs = browseByFolderSlugsFromArgs.filter(collectionSlug => permissions?.collections?.[collectionSlug]?.read && visibleEntities.collections.includes(collectionSlug));
|
|
44
|
+
const query = queryFromArgs || (queryFromReq ? {
|
|
45
|
+
...queryFromReq,
|
|
46
|
+
relationTo: typeof queryFromReq?.relationTo === 'string' ? JSON.parse(queryFromReq.relationTo) : undefined
|
|
47
|
+
} : {});
|
|
48
|
+
/**
|
|
49
|
+
* If a folderID is provided and the relationTo query param exists,
|
|
50
|
+
* we filter the collection slugs to only those that are allowed to be read.
|
|
51
|
+
*
|
|
52
|
+
* If no folderID is provided, only folders should be active and displayed (the root view).
|
|
53
|
+
*/
|
|
54
|
+
let collectionsToDisplay = [];
|
|
55
|
+
if (folderID && Array.isArray(query?.relationTo)) {
|
|
56
|
+
collectionsToDisplay = query.relationTo.filter(slug => allowReadCollectionSlugs.includes(slug) || slug === foldersSlug);
|
|
57
|
+
} else if (folderID) {
|
|
58
|
+
collectionsToDisplay = [...allowReadCollectionSlugs, foldersSlug];
|
|
59
|
+
} else {
|
|
60
|
+
collectionsToDisplay = [foldersSlug];
|
|
61
|
+
}
|
|
62
|
+
const {
|
|
63
|
+
routes: {
|
|
64
|
+
admin: adminRoute
|
|
65
|
+
}
|
|
66
|
+
} = config;
|
|
67
|
+
/**
|
|
68
|
+
* @todo: find a pattern to avoid setting preferences on hard navigation, i.e. direct links, page refresh, etc.
|
|
69
|
+
* This will ensure that prefs are only updated when explicitly set by the user
|
|
70
|
+
* This could potentially be done by injecting a `sessionID` into the params and comparing it against a session cookie
|
|
71
|
+
*/
|
|
72
|
+
const browseByFolderPreferences = await upsertPreferences({
|
|
73
|
+
key: PREFERENCE_KEYS.BROWSE_BY_FOLDER,
|
|
74
|
+
req: initPageResult.req,
|
|
75
|
+
value: {
|
|
76
|
+
sort: query?.sort
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const sortPreference = browseByFolderPreferences?.sort || 'name';
|
|
80
|
+
const viewPreference = browseByFolderPreferences?.viewPreference || 'grid';
|
|
81
|
+
const {
|
|
82
|
+
breadcrumbs,
|
|
83
|
+
documents,
|
|
84
|
+
folderAssignedCollections,
|
|
85
|
+
FolderResultsComponent,
|
|
86
|
+
subfolders
|
|
87
|
+
} = await getFolderResultsComponentAndData({
|
|
88
|
+
browseByFolder: true,
|
|
89
|
+
collectionsToDisplay,
|
|
90
|
+
displayAs: viewPreference,
|
|
91
|
+
folderAssignedCollections: collectionsToDisplay.filter(slug => slug !== foldersSlug) || [],
|
|
92
|
+
folderID,
|
|
93
|
+
req: initPageResult.req,
|
|
94
|
+
sort: sortPreference
|
|
95
|
+
});
|
|
96
|
+
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id;
|
|
97
|
+
if (!isInDrawer && (resolvedFolderID && folderID && folderID !== resolvedFolderID || folderID && !resolvedFolderID)) {
|
|
98
|
+
redirect(formatAdminURL({
|
|
99
|
+
adminRoute,
|
|
100
|
+
path: config.admin.routes.browseByFolder
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
const serverProps = {
|
|
104
|
+
documents,
|
|
105
|
+
i18n,
|
|
106
|
+
locale: fullLocale,
|
|
107
|
+
params,
|
|
108
|
+
payload,
|
|
109
|
+
permissions,
|
|
110
|
+
searchParams,
|
|
111
|
+
subfolders,
|
|
112
|
+
user
|
|
113
|
+
};
|
|
114
|
+
// const folderViewSlots = renderFolderViewSlots({
|
|
115
|
+
// clientProps: {
|
|
116
|
+
// },
|
|
117
|
+
// description: staticDescription,
|
|
118
|
+
// payload,
|
|
119
|
+
// serverProps,
|
|
120
|
+
// })
|
|
121
|
+
// Filter down allCollectionFolderSlugs by the ones the current folder is assingned to
|
|
122
|
+
const allAvailableCollectionSlugs = folderID && Array.isArray(folderAssignedCollections) && folderAssignedCollections.length ? allowReadCollectionSlugs.filter(slug => folderAssignedCollections.includes(slug)) : allowReadCollectionSlugs;
|
|
123
|
+
// Filter down activeCollectionFolderSlugs by the ones the current folder is assingned to
|
|
124
|
+
const availableActiveCollectionFolderSlugs = collectionsToDisplay.filter(slug => {
|
|
125
|
+
if (slug === foldersSlug) {
|
|
126
|
+
return permissions?.collections?.[foldersSlug]?.read;
|
|
127
|
+
} else {
|
|
128
|
+
return !folderAssignedCollections || folderAssignedCollections.includes(slug);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
// Documents cannot be created without a parent folder in this view
|
|
132
|
+
const allowCreateCollectionSlugs = (resolvedFolderID ? [foldersSlug, ...allAvailableCollectionSlugs] : [foldersSlug]).filter(collectionSlug => {
|
|
133
|
+
if (collectionSlug === foldersSlug) {
|
|
134
|
+
return permissions?.collections?.[foldersSlug]?.create;
|
|
135
|
+
}
|
|
136
|
+
return permissions?.collections?.[collectionSlug]?.create && visibleEntities.collections.includes(collectionSlug);
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
View: /*#__PURE__*/_jsxs(_Fragment, {
|
|
140
|
+
children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
|
|
141
|
+
permissions: permissions
|
|
142
|
+
}), RenderServerComponent({
|
|
143
|
+
clientProps: {
|
|
144
|
+
// ...folderViewSlots,
|
|
145
|
+
activeCollectionFolderSlugs: availableActiveCollectionFolderSlugs,
|
|
146
|
+
allCollectionFolderSlugs: allAvailableCollectionSlugs,
|
|
147
|
+
allowCreateCollectionSlugs,
|
|
148
|
+
baseFolderPath: `/browse-by-folder`,
|
|
149
|
+
breadcrumbs,
|
|
150
|
+
disableBulkDelete,
|
|
151
|
+
disableBulkEdit,
|
|
152
|
+
documents,
|
|
153
|
+
enableRowSelections,
|
|
154
|
+
folderAssignedCollections,
|
|
155
|
+
folderFieldName: config.folders.fieldName,
|
|
156
|
+
folderID: resolvedFolderID || null,
|
|
157
|
+
FolderResultsComponent,
|
|
158
|
+
sort: sortPreference,
|
|
159
|
+
subfolders,
|
|
160
|
+
viewPreference
|
|
161
|
+
},
|
|
162
|
+
// Component:config.folders?.components?.views?.BrowseByFolders?.Component,
|
|
163
|
+
Fallback: DefaultBrowseByFolderView,
|
|
164
|
+
importMap: payload.importMap,
|
|
165
|
+
serverProps
|
|
166
|
+
})]
|
|
167
|
+
})
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=buildView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildView.js","names":["DefaultBrowseByFolderView","HydrateAuthProvider","RenderServerComponent","getFolderResultsComponentAndData","upsertPreferences","formatAdminURL","redirect","PREFERENCE_KEYS","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","foldersSlug","slug","allowReadCollectionSlugs","filter","collectionSlug","collections","read","includes","relationTo","JSON","parse","undefined","collectionsToDisplay","Array","isArray","routes","admin","adminRoute","browseByFolderPreferences","key","BROWSE_BY_FOLDER","value","sort","sortPreference","viewPreference","breadcrumbs","documents","folderAssignedCollections","FolderResultsComponent","subfolders","displayAs","resolvedFolderID","length","id","path","serverProps","allAvailableCollectionSlugs","availableActiveCollectionFolderSlugs","allowCreateCollectionSlugs","create","View","_jsxs","_Fragment","_jsx","clientProps","activeCollectionFolderSlugs","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 { PREFERENCE_KEYS } from 'payload/shared'\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 foldersSlug = config.folders.slug\n\n /**\n * All visiible folder enabled collection slugs that the user has read permissions for.\n */\n const allowReadCollectionSlugs = browseByFolderSlugsFromArgs.filter(\n (collectionSlug) =>\n permissions?.collections?.[collectionSlug]?.read &&\n visibleEntities.collections.includes(collectionSlug),\n )\n\n const query =\n queryFromArgs ||\n ((queryFromReq\n ? {\n ...queryFromReq,\n relationTo:\n typeof queryFromReq?.relationTo === 'string'\n ? JSON.parse(queryFromReq.relationTo)\n : undefined,\n }\n : {}) as ListQuery)\n\n /**\n * If a folderID is provided and the relationTo query param exists,\n * we filter the collection slugs to only those that are allowed to be read.\n *\n * If no folderID is provided, only folders should be active and displayed (the root view).\n */\n let collectionsToDisplay: string[] = []\n if (folderID && Array.isArray(query?.relationTo)) {\n collectionsToDisplay = query.relationTo.filter(\n (slug) => allowReadCollectionSlugs.includes(slug) || slug === foldersSlug,\n )\n } else if (folderID) {\n collectionsToDisplay = [...allowReadCollectionSlugs, foldersSlug]\n } else {\n collectionsToDisplay = [foldersSlug]\n }\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: PREFERENCE_KEYS.BROWSE_BY_FOLDER,\n req: initPageResult.req,\n value: {\n sort: query?.sort as FolderSortKeys,\n },\n })\n\n const sortPreference: FolderSortKeys = browseByFolderPreferences?.sort || 'name'\n const viewPreference = browseByFolderPreferences?.viewPreference || 'grid'\n\n const { breadcrumbs, documents, folderAssignedCollections, FolderResultsComponent, subfolders } =\n await getFolderResultsComponentAndData({\n browseByFolder: true,\n collectionsToDisplay,\n displayAs: viewPreference,\n folderAssignedCollections: collectionsToDisplay.filter((slug) => slug !== foldersSlug) || [],\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 }),\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 // Filter down allCollectionFolderSlugs by the ones the current folder is assingned to\n const allAvailableCollectionSlugs =\n folderID && Array.isArray(folderAssignedCollections) && folderAssignedCollections.length\n ? allowReadCollectionSlugs.filter((slug) => folderAssignedCollections.includes(slug))\n : allowReadCollectionSlugs\n\n // Filter down activeCollectionFolderSlugs by the ones the current folder is assingned to\n const availableActiveCollectionFolderSlugs = collectionsToDisplay.filter((slug) => {\n if (slug === foldersSlug) {\n return permissions?.collections?.[foldersSlug]?.read\n } else {\n return !folderAssignedCollections || folderAssignedCollections.includes(slug)\n }\n })\n\n // Documents cannot be created without a parent folder in this view\n const allowCreateCollectionSlugs = (\n resolvedFolderID ? [foldersSlug, ...allAvailableCollectionSlugs] : [foldersSlug]\n ).filter((collectionSlug) => {\n if (collectionSlug === foldersSlug) {\n return permissions?.collections?.[foldersSlug]?.create\n }\n return (\n permissions?.collections?.[collectionSlug]?.create &&\n visibleEntities.collections.includes(collectionSlug)\n )\n })\n\n return {\n View: (\n <>\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n activeCollectionFolderSlugs: availableActiveCollectionFolderSlugs,\n allCollectionFolderSlugs: allAvailableCollectionSlugs,\n allowCreateCollectionSlugs,\n baseFolderPath: `/browse-by-folder`,\n breadcrumbs,\n disableBulkDelete,\n disableBulkEdit,\n documents,\n enableRowSelections,\n folderAssignedCollections,\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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/BrowseByFolder/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAIzD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAcxD,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { notFound } from 'next/navigation.js';
|
|
2
|
+
import { buildBrowseByFolderView } from './buildView.js';
|
|
3
|
+
export const BrowseByFolder = async args => {
|
|
4
|
+
try {
|
|
5
|
+
const {
|
|
6
|
+
View
|
|
7
|
+
} = await buildBrowseByFolderView(args);
|
|
8
|
+
return View;
|
|
9
|
+
} catch (error) {
|
|
10
|
+
if (error?.message === 'NEXT_REDIRECT') {
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
13
|
+
if (error.message === 'not-found') {
|
|
14
|
+
notFound();
|
|
15
|
+
} else {
|
|
16
|
+
console.error(error); // eslint-disable-line no-console
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["notFound","buildBrowseByFolderView","BrowseByFolder","args","View","error","message","console"],"sources":["../../../src/views/BrowseByFolder/index.tsx"],"sourcesContent":["import type React from 'react'\n\nimport { notFound } from 'next/navigation.js'\n\nimport type { BuildFolderViewArgs } from './buildView.js'\n\nimport { buildBrowseByFolderView } from './buildView.js'\n\nexport const BrowseByFolder: React.FC<BuildFolderViewArgs> = async (args) => {\n try {\n const { View } = await buildBrowseByFolderView(args)\n return View\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n if (error.message === 'not-found') {\n notFound()\n } else {\n console.error(error) // eslint-disable-line no-console\n }\n }\n}\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ;AAIzB,SAASC,uBAAuB,QAAQ;AAExC,OAAO,MAAMC,cAAA,GAAgD,MAAOC,IAAA;EAClE,IAAI;IACF,MAAM;MAAEC;IAAI,CAAE,GAAG,MAAMH,uBAAA,CAAwBE,IAAA;IAC/C,OAAOC,IAAA;EACT,EAAE,OAAOC,KAAA,EAAO;IACd,IAAIA,KAAA,EAAOC,OAAA,KAAY,iBAAiB;MACtC,MAAMD,KAAA;IACR;IACA,IAAIA,KAAA,CAAMC,OAAO,KAAK,aAAa;MACjCN,QAAA;IACF,OAAO;MACLO,OAAA,CAAQF,KAAK,CAACA,KAAA,GAAO;IACvB;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/views/BrowseByFolder/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAEpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAI5D,eAAO,MAAM,8BAA8B,SACnC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KACxC,OAAO,CAAC,QAAQ,CAclB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { generateMetadata } from '../../utilities/meta.js';
|
|
2
|
+
export const generateBrowseByFolderMetadata = async args => {
|
|
3
|
+
const {
|
|
4
|
+
config,
|
|
5
|
+
i18n
|
|
6
|
+
} = args;
|
|
7
|
+
const title = i18n.t('folder:browseByFolder');
|
|
8
|
+
const description = '';
|
|
9
|
+
const keywords = '';
|
|
10
|
+
return generateMetadata({
|
|
11
|
+
...(config.admin.meta || {}),
|
|
12
|
+
description,
|
|
13
|
+
keywords,
|
|
14
|
+
serverURL: config.serverURL,
|
|
15
|
+
title
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","names":["generateMetadata","generateBrowseByFolderMetadata","args","config","i18n","title","t","description","keywords","admin","meta","serverURL"],"sources":["../../../src/views/BrowseByFolder/metadata.ts"],"sourcesContent":["import type { Metadata } from 'next'\n\nimport type { GenerateViewMetadata } from '../Root/index.js'\n\nimport { generateMetadata } from '../../utilities/meta.js'\n\nexport const generateBrowseByFolderMetadata = async (\n args: Parameters<GenerateViewMetadata>[0],\n): Promise<Metadata> => {\n const { config, i18n } = args\n\n const title: string = i18n.t('folder:browseByFolder')\n const description: string = ''\n const keywords: string = ''\n\n return generateMetadata({\n ...(config.admin.meta || {}),\n description,\n keywords,\n serverURL: config.serverURL,\n title,\n })\n}\n"],"mappings":"AAIA,SAASA,gBAAgB,QAAQ;AAEjC,OAAO,MAAMC,8BAAA,GAAiC,MAC5CC,IAAA;EAEA,MAAM;IAAEC,MAAM;IAAEC;EAAI,CAAE,GAAGF,IAAA;EAEzB,MAAMG,KAAA,GAAgBD,IAAA,CAAKE,CAAC,CAAC;EAC7B,MAAMC,WAAA,GAAsB;EAC5B,MAAMC,QAAA,GAAmB;EAEzB,OAAOR,gBAAA,CAAiB;IACtB,IAAIG,MAAA,CAAOM,KAAK,CAACC,IAAI,IAAI,CAAC,CAAC;IAC3BH,WAAA;IACAC,QAAA;IACAG,SAAA,EAAWR,MAAA,CAAOQ,SAAS;IAC3BN;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AdminViewServerProps, BuildCollectionFolderViewResult, ListQuery } from 'payload';
|
|
2
|
+
export type BuildCollectionFolderViewStateArgs = {
|
|
3
|
+
disableBulkDelete?: boolean;
|
|
4
|
+
disableBulkEdit?: boolean;
|
|
5
|
+
enableRowSelections: boolean;
|
|
6
|
+
folderID?: number | string;
|
|
7
|
+
isInDrawer?: boolean;
|
|
8
|
+
overrideEntityVisibility?: boolean;
|
|
9
|
+
query: ListQuery;
|
|
10
|
+
} & AdminViewServerProps;
|
|
11
|
+
/**
|
|
12
|
+
* Builds the entire view for collection-folder views on the server
|
|
13
|
+
*/
|
|
14
|
+
export declare const buildCollectionFolderView: (args: BuildCollectionFolderViewStateArgs) => Promise<BuildCollectionFolderViewResult>;
|
|
15
|
+
//# sourceMappingURL=buildView.d.ts.map
|
|
@@ -0,0 +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,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,CAiLzC,CAAA"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { DefaultCollectionFolderView, HydrateAuthProvider } from '@payloadcms/ui';
|
|
3
|
+
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
4
|
+
import { getFolderResultsComponentAndData, upsertPreferences } from '@payloadcms/ui/rsc';
|
|
5
|
+
import { formatAdminURL } from '@payloadcms/ui/shared';
|
|
6
|
+
import { redirect } from 'next/navigation.js';
|
|
7
|
+
import React from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* Builds the entire view for collection-folder views on the server
|
|
10
|
+
*/
|
|
11
|
+
export const buildCollectionFolderView = async args => {
|
|
12
|
+
const {
|
|
13
|
+
disableBulkDelete,
|
|
14
|
+
disableBulkEdit,
|
|
15
|
+
enableRowSelections,
|
|
16
|
+
folderID,
|
|
17
|
+
initPageResult,
|
|
18
|
+
isInDrawer,
|
|
19
|
+
overrideEntityVisibility,
|
|
20
|
+
params,
|
|
21
|
+
query: queryFromArgs,
|
|
22
|
+
searchParams
|
|
23
|
+
} = args;
|
|
24
|
+
const {
|
|
25
|
+
collectionConfig,
|
|
26
|
+
collectionConfig: {
|
|
27
|
+
slug: collectionSlug
|
|
28
|
+
},
|
|
29
|
+
locale: fullLocale,
|
|
30
|
+
permissions,
|
|
31
|
+
req: {
|
|
32
|
+
i18n,
|
|
33
|
+
payload,
|
|
34
|
+
payload: {
|
|
35
|
+
config
|
|
36
|
+
},
|
|
37
|
+
query: queryFromReq,
|
|
38
|
+
user
|
|
39
|
+
},
|
|
40
|
+
visibleEntities
|
|
41
|
+
} = initPageResult;
|
|
42
|
+
if (!config.folders) {
|
|
43
|
+
throw new Error('not-found');
|
|
44
|
+
}
|
|
45
|
+
if (!permissions?.collections?.[collectionSlug]?.read || !permissions?.collections?.[config.folders.slug].read) {
|
|
46
|
+
throw new Error('not-found');
|
|
47
|
+
}
|
|
48
|
+
if (collectionConfig) {
|
|
49
|
+
if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility || !config.folders) {
|
|
50
|
+
throw new Error('not-found');
|
|
51
|
+
}
|
|
52
|
+
const query = queryFromArgs || queryFromReq;
|
|
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 || 'name';
|
|
66
|
+
const viewPreference = collectionFolderPreferences?.viewPreference || 'grid';
|
|
67
|
+
const {
|
|
68
|
+
routes: {
|
|
69
|
+
admin: adminRoute
|
|
70
|
+
}
|
|
71
|
+
} = config;
|
|
72
|
+
const {
|
|
73
|
+
breadcrumbs,
|
|
74
|
+
documents,
|
|
75
|
+
folderAssignedCollections,
|
|
76
|
+
FolderResultsComponent,
|
|
77
|
+
subfolders
|
|
78
|
+
} = await getFolderResultsComponentAndData({
|
|
79
|
+
browseByFolder: false,
|
|
80
|
+
collectionsToDisplay: [config.folders.slug, collectionSlug],
|
|
81
|
+
displayAs: viewPreference,
|
|
82
|
+
folderAssignedCollections: [collectionSlug],
|
|
83
|
+
folderID,
|
|
84
|
+
req: initPageResult.req,
|
|
85
|
+
sort: sortPreference
|
|
86
|
+
});
|
|
87
|
+
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id;
|
|
88
|
+
if (!isInDrawer && (resolvedFolderID && folderID && folderID !== resolvedFolderID || folderID && !resolvedFolderID)) {
|
|
89
|
+
redirect(formatAdminURL({
|
|
90
|
+
adminRoute,
|
|
91
|
+
path: `/collections/${collectionSlug}/${config.folders.slug}`
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
const serverProps = {
|
|
95
|
+
collectionConfig,
|
|
96
|
+
documents,
|
|
97
|
+
i18n,
|
|
98
|
+
locale: fullLocale,
|
|
99
|
+
params,
|
|
100
|
+
payload,
|
|
101
|
+
permissions,
|
|
102
|
+
searchParams,
|
|
103
|
+
subfolders,
|
|
104
|
+
user
|
|
105
|
+
};
|
|
106
|
+
// We could support slots in the folder view in the future
|
|
107
|
+
// const folderViewSlots = renderFolderViewSlots({
|
|
108
|
+
// clientProps: {
|
|
109
|
+
// collectionSlug,
|
|
110
|
+
// hasCreatePermission,
|
|
111
|
+
// newDocumentURL,
|
|
112
|
+
// },
|
|
113
|
+
// collectionConfig,
|
|
114
|
+
// description: typeof collectionConfig.admin.description === 'function'
|
|
115
|
+
// ? collectionConfig.admin.description({ t: i18n.t })
|
|
116
|
+
// : collectionConfig.admin.description,
|
|
117
|
+
// payload,
|
|
118
|
+
// serverProps,
|
|
119
|
+
// })
|
|
120
|
+
const search = query?.search;
|
|
121
|
+
return {
|
|
122
|
+
View: /*#__PURE__*/_jsxs(_Fragment, {
|
|
123
|
+
children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
|
|
124
|
+
permissions: permissions
|
|
125
|
+
}), RenderServerComponent({
|
|
126
|
+
clientProps: {
|
|
127
|
+
// ...folderViewSlots,
|
|
128
|
+
allCollectionFolderSlugs: [config.folders.slug, collectionSlug],
|
|
129
|
+
allowCreateCollectionSlugs: [permissions?.collections?.[config.folders.slug]?.create ? config.folders.slug : null, resolvedFolderID && permissions?.collections?.[collectionSlug]?.create ? collectionSlug : null].filter(Boolean),
|
|
130
|
+
baseFolderPath: `/collections/${collectionSlug}/${config.folders.slug}`,
|
|
131
|
+
breadcrumbs,
|
|
132
|
+
collectionSlug,
|
|
133
|
+
disableBulkDelete,
|
|
134
|
+
disableBulkEdit,
|
|
135
|
+
documents,
|
|
136
|
+
enableRowSelections,
|
|
137
|
+
folderAssignedCollections,
|
|
138
|
+
folderFieldName: config.folders.fieldName,
|
|
139
|
+
folderID: resolvedFolderID || null,
|
|
140
|
+
FolderResultsComponent,
|
|
141
|
+
search,
|
|
142
|
+
sort: sortPreference,
|
|
143
|
+
subfolders,
|
|
144
|
+
viewPreference
|
|
145
|
+
},
|
|
146
|
+
// Component: collectionConfig?.admin?.components?.views?.Folders?.Component,
|
|
147
|
+
Fallback: DefaultCollectionFolderView,
|
|
148
|
+
importMap: payload.importMap,
|
|
149
|
+
serverProps
|
|
150
|
+
})]
|
|
151
|
+
})
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
throw new Error('not-found');
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=buildView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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","folderAssignedCollections","FolderResultsComponent","subfolders","browseByFolder","collectionsToDisplay","displayAs","resolvedFolderID","length","id","path","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 = collectionFolderPreferences?.sort || 'name'\n const viewPreference = collectionFolderPreferences?.viewPreference || 'grid'\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n const {\n breadcrumbs,\n documents,\n folderAssignedCollections,\n FolderResultsComponent,\n subfolders,\n } = await getFolderResultsComponentAndData({\n browseByFolder: false,\n collectionsToDisplay: [config.folders.slug, collectionSlug],\n displayAs: viewPreference,\n folderAssignedCollections: [collectionSlug],\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 }),\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 resolvedFolderID && permissions?.collections?.[collectionSlug]?.create\n ? collectionSlug\n : null,\n ].filter(Boolean),\n baseFolderPath: `/collections/${collectionSlug}/${config.folders.slug}`,\n breadcrumbs,\n collectionSlug,\n disableBulkDelete,\n disableBulkEdit,\n documents,\n enableRowSelections,\n folderAssignedCollections,\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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CollectionFolders/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAA;AAIxE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CAc7E,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { notFound } from 'next/navigation.js';
|
|
2
|
+
import { buildCollectionFolderView } from './buildView.js';
|
|
3
|
+
export const CollectionFolderView = async args => {
|
|
4
|
+
try {
|
|
5
|
+
const {
|
|
6
|
+
View
|
|
7
|
+
} = await buildCollectionFolderView(args);
|
|
8
|
+
return View;
|
|
9
|
+
} catch (error) {
|
|
10
|
+
if (error?.message === 'NEXT_REDIRECT') {
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
13
|
+
if (error.message === 'not-found') {
|
|
14
|
+
notFound();
|
|
15
|
+
} else {
|
|
16
|
+
console.error(error); // eslint-disable-line no-console
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["notFound","buildCollectionFolderView","CollectionFolderView","args","View","error","message","console"],"sources":["../../../src/views/CollectionFolders/index.tsx"],"sourcesContent":["import type React from 'react'\n\nimport { notFound } from 'next/navigation.js'\n\nimport type { BuildCollectionFolderViewStateArgs } from './buildView.js'\n\nimport { buildCollectionFolderView } from './buildView.js'\n\nexport const CollectionFolderView: React.FC<BuildCollectionFolderViewStateArgs> = async (args) => {\n try {\n const { View } = await buildCollectionFolderView(args)\n return View\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n if (error.message === 'not-found') {\n notFound()\n } else {\n console.error(error) // eslint-disable-line no-console\n }\n }\n}\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ;AAIzB,SAASC,yBAAyB,QAAQ;AAE1C,OAAO,MAAMC,oBAAA,GAAqE,MAAOC,IAAA;EACvF,IAAI;IACF,MAAM;MAAEC;IAAI,CAAE,GAAG,MAAMH,yBAAA,CAA0BE,IAAA;IACjD,OAAOC,IAAA;EACT,EAAE,OAAOC,KAAA,EAAO;IACd,IAAIA,KAAA,EAAOC,OAAA,KAAY,iBAAiB;MACtC,MAAMD,KAAA;IACR;IACA,IAAIA,KAAA,CAAMC,OAAO,KAAK,aAAa;MACjCN,QAAA;IACF,OAAO;MACLO,OAAA,CAAQF,KAAK,CAACA,KAAA,GAAO;IACvB;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Metadata } from 'next';
|
|
2
|
+
import type { SanitizedCollectionConfig } from 'payload';
|
|
3
|
+
import type { GenerateViewMetadata } from '../Root/index.js';
|
|
4
|
+
export declare const generateCollectionFolderMetadata: (args: {
|
|
5
|
+
collectionConfig: SanitizedCollectionConfig;
|
|
6
|
+
} & Parameters<GenerateViewMetadata>[0]) => Promise<Metadata>;
|
|
7
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/views/CollectionFolders/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAIxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAI5D,eAAO,MAAM,gCAAgC,SACrC;IACJ,gBAAgB,EAAE,yBAAyB,CAAA;CAC5C,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KACtC,OAAO,CAAC,QAAQ,CAqBlB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getTranslation } from '@payloadcms/translations';
|
|
2
|
+
import { generateMetadata } from '../../utilities/meta.js';
|
|
3
|
+
export const generateCollectionFolderMetadata = async args => {
|
|
4
|
+
const {
|
|
5
|
+
collectionConfig,
|
|
6
|
+
config,
|
|
7
|
+
i18n
|
|
8
|
+
} = args;
|
|
9
|
+
let title = '';
|
|
10
|
+
const description = '';
|
|
11
|
+
const keywords = '';
|
|
12
|
+
if (collectionConfig) {
|
|
13
|
+
title = getTranslation(collectionConfig.labels.singular, i18n);
|
|
14
|
+
}
|
|
15
|
+
title = `${title ? `${title} ` : title}${i18n.t('folder:folders')}`;
|
|
16
|
+
return generateMetadata({
|
|
17
|
+
...(config.admin.meta || {}),
|
|
18
|
+
description,
|
|
19
|
+
keywords,
|
|
20
|
+
serverURL: config.serverURL,
|
|
21
|
+
title,
|
|
22
|
+
...(collectionConfig?.admin?.meta || {})
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","names":["getTranslation","generateMetadata","generateCollectionFolderMetadata","args","collectionConfig","config","i18n","title","description","keywords","labels","singular","t","admin","meta","serverURL"],"sources":["../../../src/views/CollectionFolders/metadata.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { GenerateViewMetadata } from '../Root/index.js'\n\nimport { generateMetadata } from '../../utilities/meta.js'\n\nexport const generateCollectionFolderMetadata = async (\n args: {\n collectionConfig: SanitizedCollectionConfig\n } & Parameters<GenerateViewMetadata>[0],\n): Promise<Metadata> => {\n const { collectionConfig, config, i18n } = args\n\n let title: string = ''\n const description: string = ''\n const keywords: string = ''\n\n if (collectionConfig) {\n title = getTranslation(collectionConfig.labels.singular, i18n)\n }\n\n title = `${title ? `${title} ` : title}${i18n.t('folder:folders')}`\n\n return generateMetadata({\n ...(config.admin.meta || {}),\n description,\n keywords,\n serverURL: config.serverURL,\n title,\n ...(collectionConfig?.admin?.meta || {}),\n })\n}\n"],"mappings":"AAGA,SAASA,cAAc,QAAQ;AAI/B,SAASC,gBAAgB,QAAQ;AAEjC,OAAO,MAAMC,gCAAA,GAAmC,MAC9CC,IAAA;EAIA,MAAM;IAAEC,gBAAgB;IAAEC,MAAM;IAAEC;EAAI,CAAE,GAAGH,IAAA;EAE3C,IAAII,KAAA,GAAgB;EACpB,MAAMC,WAAA,GAAsB;EAC5B,MAAMC,QAAA,GAAmB;EAEzB,IAAIL,gBAAA,EAAkB;IACpBG,KAAA,GAAQP,cAAA,CAAeI,gBAAA,CAAiBM,MAAM,CAACC,QAAQ,EAAEL,IAAA;EAC3D;EAEAC,KAAA,GAAQ,GAAGA,KAAA,GAAQ,GAAGA,KAAA,GAAQ,GAAGA,KAAA,GAAQD,IAAA,CAAKM,CAAC,CAAC,mBAAmB;EAEnE,OAAOX,gBAAA,CAAiB;IACtB,IAAII,MAAA,CAAOQ,KAAK,CAACC,IAAI,IAAI,CAAC,CAAC;IAC3BN,WAAA;IACAC,QAAA;IACAM,SAAA,EAAWV,MAAA,CAAOU,SAAS;IAC3BR,KAAA;IACA,IAAIH,gBAAA,EAAkBS,KAAA,EAAOC,IAAA,IAAQ,CAAC,CAAC;EACzC;AACF","ignoreList":[]}
|