Files
klz-cables.com/.pnpm-store/v10/files/cd/199ba7fdf5f2d5656172da89b82f2221a6a073d0467f411ed2b5fb0aa551003012b9acfd70584391bb4eb7471f07460ed7acf7452c5b436687a2ca9feff87c
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

156 lines
5.2 KiB
Plaintext

import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { DefaultCollectionFolderView, HydrateAuthProvider } from '@payloadcms/ui';
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
import { getFolderResultsComponentAndData, upsertPreferences } from '@payloadcms/ui/rsc';
import { formatAdminURL } from '@payloadcms/ui/shared';
import { redirect } from 'next/navigation.js';
import React from 'react';
/**
* Builds the entire view for collection-folder views on the server
*/
export const buildCollectionFolderView = async args => {
const {
disableBulkDelete,
disableBulkEdit,
enableRowSelections,
folderID,
initPageResult,
isInDrawer,
overrideEntityVisibility,
params,
query: queryFromArgs,
searchParams
} = args;
const {
collectionConfig,
collectionConfig: {
slug: collectionSlug
},
locale: fullLocale,
permissions,
req: {
i18n,
payload,
payload: {
config
},
query: queryFromReq,
user
},
visibleEntities
} = initPageResult;
if (!config.folders) {
throw new Error('not-found');
}
if (!permissions?.collections?.[collectionSlug]?.read || !permissions?.collections?.[config.folders.slug].read) {
throw new Error('not-found');
}
if (collectionConfig) {
if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility || !config.folders) {
throw new Error('not-found');
}
const query = queryFromArgs || queryFromReq;
/**
* @todo: find a pattern to avoid setting preferences on hard navigation, i.e. direct links, page refresh, etc.
* This will ensure that prefs are only updated when explicitly set by the user
* This could potentially be done by injecting a `sessionID` into the params and comparing it against a session cookie
*/
const collectionFolderPreferences = await upsertPreferences({
key: `${collectionSlug}-collection-folder`,
req: initPageResult.req,
value: {
sort: query?.sort
}
});
const sortPreference = collectionFolderPreferences?.sort || 'name';
const viewPreference = collectionFolderPreferences?.viewPreference || 'grid';
const {
routes: {
admin: adminRoute
}
} = config;
const {
breadcrumbs,
documents,
folderAssignedCollections,
FolderResultsComponent,
subfolders
} = await getFolderResultsComponentAndData({
browseByFolder: false,
collectionsToDisplay: [config.folders.slug, collectionSlug],
displayAs: viewPreference,
folderAssignedCollections: [collectionSlug],
folderID,
req: initPageResult.req,
sort: sortPreference
});
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id;
if (!isInDrawer && (resolvedFolderID && folderID && folderID !== resolvedFolderID || folderID && !resolvedFolderID)) {
redirect(formatAdminURL({
adminRoute,
path: `/collections/${collectionSlug}/${config.folders.slug}`
}));
}
const serverProps = {
collectionConfig,
documents,
i18n,
locale: fullLocale,
params,
payload,
permissions,
searchParams,
subfolders,
user
};
// We could support slots in the folder view in the future
// const folderViewSlots = renderFolderViewSlots({
// clientProps: {
// collectionSlug,
// hasCreatePermission,
// newDocumentURL,
// },
// collectionConfig,
// description: typeof collectionConfig.admin.description === 'function'
// ? collectionConfig.admin.description({ t: i18n.t })
// : collectionConfig.admin.description,
// payload,
// serverProps,
// })
const search = query?.search;
return {
View: /*#__PURE__*/_jsxs(_Fragment, {
children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
permissions: permissions
}), RenderServerComponent({
clientProps: {
// ...folderViewSlots,
allCollectionFolderSlugs: [config.folders.slug, collectionSlug],
allowCreateCollectionSlugs: [permissions?.collections?.[config.folders.slug]?.create ? config.folders.slug : null, resolvedFolderID && permissions?.collections?.[collectionSlug]?.create ? collectionSlug : null].filter(Boolean),
baseFolderPath: `/collections/${collectionSlug}/${config.folders.slug}`,
breadcrumbs,
collectionSlug,
disableBulkDelete,
disableBulkEdit,
documents,
enableRowSelections,
folderAssignedCollections,
folderFieldName: config.folders.fieldName,
folderID: resolvedFolderID || null,
FolderResultsComponent,
search,
sort: sortPreference,
subfolders,
viewPreference
},
// Component: collectionConfig?.admin?.components?.views?.Folders?.Component,
Fallback: DefaultCollectionFolderView,
importMap: payload.importMap,
serverProps
})]
})
};
}
throw new Error('not-found');
};
//# sourceMappingURL=buildView.js.map