@payloadcms/next 3.26.0 → 3.27.0-canary.ecc3f49
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/DocumentHeader/Tabs/Tab/TabLink.js +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
- package/dist/elements/Nav/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/index.client.js +2 -1
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/utilities/initPage/handleAuthRedirect.js +1 -1
- package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
- package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/index.js +2 -1
- package/dist/views/Dashboard/Default/index.js.map +1 -1
- package/dist/views/Document/handleServerFunction.d.ts +1 -0
- package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
- package/dist/views/Document/handleServerFunction.js +2 -0
- package/dist/views/Document/handleServerFunction.js.map +1 -1
- package/dist/views/Document/index.d.ts +4 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +5 -2
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/ForgotPassword/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/index.js +2 -1
- package/dist/views/ForgotPassword/index.js.map +1 -1
- package/dist/views/List/handleServerFunction.d.ts +1 -0
- package/dist/views/List/handleServerFunction.d.ts.map +1 -1
- package/dist/views/List/handleServerFunction.js +2 -0
- package/dist/views/List/handleServerFunction.js.map +1 -1
- package/dist/views/List/index.d.ts +4 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +20 -2
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/LivePreview/index.client.js +2 -1
- package/dist/views/LivePreview/index.client.js.map +1 -1
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +1 -2
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Logout/LogoutClient.js +1 -1
- package/dist/views/Logout/LogoutClient.js.map +1 -1
- package/dist/views/NotFound/index.js +1 -1
- package/dist/views/NotFound/index.js.map +1 -1
- package/dist/views/ResetPassword/ResetPasswordForm/index.js +1 -1
- package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
- package/dist/views/ResetPassword/index.d.ts.map +1 -1
- package/dist/views/ResetPassword/index.js +2 -1
- package/dist/views/ResetPassword/index.js.map +1 -1
- package/dist/views/Root/getViewFromConfig.js +1 -1
- package/dist/views/Root/getViewFromConfig.js.map +1 -1
- package/dist/views/Root/index.js +2 -2
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Unauthorized/index.js +1 -1
- package/dist/views/Unauthorized/index.js.map +1 -1
- package/dist/views/Verify/index.js +1 -1
- package/dist/views/Verify/index.js.map +1 -1
- package/dist/views/Version/Default/SetStepNav.js +2 -2
- package/dist/views/Version/Default/SetStepNav.js.map +1 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +2 -1
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.js +2 -1
- package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleAuthRedirect.js","names":["formatAdminURL","qs","handleAuthRedirect","config","route","searchParams","user","admin","routes","login","loginRouteFromConfig","unauthorized","unauthorizedRoute","adminRoute","redirect","redirectRoute","Object","keys","length","stringify","addQueryPrefix","redirectTo","path","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import type { User } from 'payload'\n\nimport { formatAdminURL } from '
|
|
1
|
+
{"version":3,"file":"handleAuthRedirect.js","names":["formatAdminURL","qs","handleAuthRedirect","config","route","searchParams","user","admin","routes","login","loginRouteFromConfig","unauthorized","unauthorizedRoute","adminRoute","redirect","redirectRoute","Object","keys","length","stringify","addQueryPrefix","redirectTo","path","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import type { User } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\n\ntype Args = {\n config\n route: string\n searchParams: { [key: string]: string | string[] }\n user?: User\n}\n\nexport const handleAuthRedirect = ({ config, route, searchParams, user }: Args): string => {\n const {\n admin: {\n routes: { login: loginRouteFromConfig, unauthorized: unauthorizedRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (searchParams && 'redirect' in searchParams) {\n delete searchParams.redirect\n }\n\n const redirectRoute =\n (route !== adminRoute ? route : '') +\n (Object.keys(searchParams ?? {}).length > 0\n ? `${qs.stringify(searchParams, { addQueryPrefix: true })}`\n : '')\n\n const redirectTo = formatAdminURL({\n adminRoute,\n path: user ? unauthorizedRoute : loginRouteFromConfig,\n })\n\n const parsedLoginRouteSearchParams = qs.parse(redirectTo.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${qs.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n return `${redirectTo.split('?')[0]}${searchParamsWithRedirect}`\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AASpB,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAI,CAAQ;EAC5E,MAAM;IACJC,KAAA,EAAO;MACLC,MAAA,EAAQ;QAAEC,KAAA,EAAOC,oBAAoB;QAAEC,YAAA,EAAcC;MAAiB;IAAE,CACzE;IACDJ,MAAA,EAAQ;MAAED,KAAA,EAAOM;IAAU;EAAE,CAC9B,GAAGV,MAAA;EAEJ,IAAIE,YAAA,IAAgB,cAAcA,YAAA,EAAc;IAC9C,OAAOA,YAAA,CAAaS,QAAQ;EAC9B;EAEA,MAAMC,aAAA,GACJ,CAACX,KAAA,KAAUS,UAAA,GAAaT,KAAA,GAAQ,EAAC,KAChCY,MAAA,CAAOC,IAAI,CAACZ,YAAA,IAAgB,CAAC,GAAGa,MAAM,GAAG,IACtC,GAAGjB,EAAA,CAAGkB,SAAS,CAACd,YAAA,EAAc;IAAEe,cAAA,EAAgB;EAAK,IAAI,GACzD,EAAC;EAEP,MAAMC,UAAA,GAAarB,cAAA,CAAe;IAChCa,UAAA;IACAS,IAAA,EAAMhB,IAAA,GAAOM,iBAAA,GAAoBF;EACnC;EAEA,MAAMa,4BAAA,GAA+BtB,EAAA,CAAGuB,KAAK,CAACH,UAAA,CAAWI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;EAE1E,MAAMC,wBAAA,GAA2B,GAAGzB,EAAA,CAAGkB,SAAS,CAC9C;IACE,GAAGI,4BAA4B;IAC/B,IAAIR,aAAA,GAAgB;MAAED,QAAA,EAAUC;IAAc,IAAI,CAAC,CAAC;EACtD,GACA;IAAEK,cAAA,EAAgB;EAAK,IACtB;EAEH,OAAO,GAAGC,UAAA,CAAWI,KAAK,CAAC,IAAI,CAAC,EAAE,GAAGC,wBAAA,EAA0B;AACjE","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Dashboard/Default/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Dashboard/Default/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAO9D,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;QAC/F,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;CAC7C,GAAG,WAAW,CAAA;AAEf,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,GAAG,4BAA4B,CAAA;AAE9F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,qBA+J/D"}
|
|
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { getTranslation } from '@payloadcms/translations';
|
|
3
3
|
import { Button, Card, Gutter, Locked } from '@payloadcms/ui';
|
|
4
4
|
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
5
|
-
import { EntityType
|
|
5
|
+
import { EntityType } from '@payloadcms/ui/shared';
|
|
6
|
+
import { formatAdminURL } from 'payload/shared';
|
|
6
7
|
import React, { Fragment } from 'react';
|
|
7
8
|
const baseClass = 'dashboard';
|
|
8
9
|
export function DefaultDashboard(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","Button","Card","Gutter","Locked","RenderServerComponent","EntityType","formatAdminURL","React","Fragment","baseClass","DefaultDashboard","props","globalData","i18n","t","locale","navGroups","params","payload","config","admin","components","afterDashboard","beforeDashboard","routes","adminRoute","permissions","searchParams","user","_jsx","className","_jsxs","Component","importMap","serverProps","length","map","entities","label","groupIndex","slug","type","entityIndex","title","buttonAriaLabel","createHREF","href","hasCreatePermission","isLocked","userEditing","collection","path","collections","create","global","globalLockData","find","data","_isLocked","_userEditing","lockDuration","lastEditedAt","Date","_lastEditedAt","getTime","lockDurationInMilliseconds","lockExpirationTime","actions","id","buttonStyle","el","icon","iconStyle","round","to","undefined","titleAs"],"sources":["../../../../src/views/Dashboard/Default/index.tsx"],"sourcesContent":["import type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { ClientUser, Locale, ServerProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, Card, Gutter, Locked } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType, formatAdminURL } from '@payloadcms/ui/shared'\nimport React, { Fragment } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'dashboard'\n\nexport type DashboardViewClientProps = {\n locale: Locale\n}\n\nexport type DashboardViewServerPropsOnly = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }>\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n Link?: React.ComponentType\n navGroups?: ReturnType<typeof groupNavItems>\n} & ServerProps\n\nexport type DashboardViewServerProps = DashboardViewClientProps & DashboardViewServerPropsOnly\n\nexport function DefaultDashboard(props: DashboardViewServerProps) {\n const {\n globalData,\n i18n,\n i18n: { t },\n locale,\n navGroups,\n params,\n payload: {\n config: {\n admin: {\n components: { afterDashboard, beforeDashboard },\n },\n routes: { admin: adminRoute },\n },\n },\n payload,\n permissions,\n searchParams,\n user,\n } = props\n\n return (\n <div className={baseClass}>\n <Gutter className={`${baseClass}__wrap`}>\n {beforeDashboard &&\n RenderServerComponent({\n Component: beforeDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n\n <Fragment>\n {!navGroups || navGroups?.length === 0 ? (\n <p>no nav groups....</p>\n ) : (\n navGroups.map(({ entities, label }, groupIndex) => {\n return (\n <div className={`${baseClass}__group`} key={groupIndex}>\n <h2 className={`${baseClass}__label`}>{label}</h2>\n <ul className={`${baseClass}__card-list`}>\n {entities.map(({ slug, type, label }, entityIndex) => {\n let title: string\n let buttonAriaLabel: string\n let createHREF: string\n let href: string\n let hasCreatePermission: boolean\n let isLocked = null\n let userEditing = null\n\n if (type === EntityType.collection) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:showAllLabel', { label: title })\n\n href = formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n\n createHREF = formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/create`,\n })\n\n hasCreatePermission = permissions?.collections?.[slug]?.create\n }\n\n if (type === EntityType.global) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:editLabel', {\n label: getTranslation(label, i18n),\n })\n\n href = formatAdminURL({\n adminRoute,\n path: `/globals/${slug}`,\n })\n\n // Find the lock status for the global\n const globalLockData = globalData.find((global) => global.slug === slug)\n if (globalLockData) {\n isLocked = globalLockData.data._isLocked\n userEditing = globalLockData.data._userEditing\n\n // Check if the lock is expired\n const lockDuration = globalLockData?.lockDuration\n const lastEditedAt = new Date(\n globalLockData.data?._lastEditedAt,\n ).getTime()\n\n const lockDurationInMilliseconds = lockDuration * 1000\n const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds\n\n if (new Date().getTime() > lockExpirationTime) {\n isLocked = false\n userEditing = null\n }\n }\n }\n\n return (\n <li key={entityIndex}>\n <Card\n actions={\n isLocked && user?.id !== userEditing?.id ? (\n <Locked className={`${baseClass}__locked`} user={userEditing} />\n ) : hasCreatePermission && type === EntityType.collection ? (\n <Button\n aria-label={t('general:createNewLabel', {\n label,\n })}\n buttonStyle=\"icon-label\"\n el=\"link\"\n icon=\"plus\"\n iconStyle=\"with-border\"\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${slug}`}\n title={getTranslation(label, i18n)}\n titleAs=\"h3\"\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n })\n )}\n </Fragment>\n {afterDashboard &&\n RenderServerComponent({\n Component: afterDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n </Gutter>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","Button","Card","Gutter","Locked","RenderServerComponent","EntityType","formatAdminURL","React","Fragment","baseClass","DefaultDashboard","props","globalData","i18n","t","locale","navGroups","params","payload","config","admin","components","afterDashboard","beforeDashboard","routes","adminRoute","permissions","searchParams","user","_jsx","className","_jsxs","Component","importMap","serverProps","length","map","entities","label","groupIndex","slug","type","entityIndex","title","buttonAriaLabel","createHREF","href","hasCreatePermission","isLocked","userEditing","collection","path","collections","create","global","globalLockData","find","data","_isLocked","_userEditing","lockDuration","lastEditedAt","Date","_lastEditedAt","getTime","lockDurationInMilliseconds","lockExpirationTime","actions","id","buttonStyle","el","icon","iconStyle","round","to","undefined","titleAs"],"sources":["../../../../src/views/Dashboard/Default/index.tsx"],"sourcesContent":["import type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { ClientUser, Locale, ServerProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, Card, Gutter, Locked } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType } from '@payloadcms/ui/shared'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'dashboard'\n\nexport type DashboardViewClientProps = {\n locale: Locale\n}\n\nexport type DashboardViewServerPropsOnly = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }>\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n Link?: React.ComponentType\n navGroups?: ReturnType<typeof groupNavItems>\n} & ServerProps\n\nexport type DashboardViewServerProps = DashboardViewClientProps & DashboardViewServerPropsOnly\n\nexport function DefaultDashboard(props: DashboardViewServerProps) {\n const {\n globalData,\n i18n,\n i18n: { t },\n locale,\n navGroups,\n params,\n payload: {\n config: {\n admin: {\n components: { afterDashboard, beforeDashboard },\n },\n routes: { admin: adminRoute },\n },\n },\n payload,\n permissions,\n searchParams,\n user,\n } = props\n\n return (\n <div className={baseClass}>\n <Gutter className={`${baseClass}__wrap`}>\n {beforeDashboard &&\n RenderServerComponent({\n Component: beforeDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n\n <Fragment>\n {!navGroups || navGroups?.length === 0 ? (\n <p>no nav groups....</p>\n ) : (\n navGroups.map(({ entities, label }, groupIndex) => {\n return (\n <div className={`${baseClass}__group`} key={groupIndex}>\n <h2 className={`${baseClass}__label`}>{label}</h2>\n <ul className={`${baseClass}__card-list`}>\n {entities.map(({ slug, type, label }, entityIndex) => {\n let title: string\n let buttonAriaLabel: string\n let createHREF: string\n let href: string\n let hasCreatePermission: boolean\n let isLocked = null\n let userEditing = null\n\n if (type === EntityType.collection) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:showAllLabel', { label: title })\n\n href = formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n\n createHREF = formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/create`,\n })\n\n hasCreatePermission = permissions?.collections?.[slug]?.create\n }\n\n if (type === EntityType.global) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:editLabel', {\n label: getTranslation(label, i18n),\n })\n\n href = formatAdminURL({\n adminRoute,\n path: `/globals/${slug}`,\n })\n\n // Find the lock status for the global\n const globalLockData = globalData.find((global) => global.slug === slug)\n if (globalLockData) {\n isLocked = globalLockData.data._isLocked\n userEditing = globalLockData.data._userEditing\n\n // Check if the lock is expired\n const lockDuration = globalLockData?.lockDuration\n const lastEditedAt = new Date(\n globalLockData.data?._lastEditedAt,\n ).getTime()\n\n const lockDurationInMilliseconds = lockDuration * 1000\n const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds\n\n if (new Date().getTime() > lockExpirationTime) {\n isLocked = false\n userEditing = null\n }\n }\n }\n\n return (\n <li key={entityIndex}>\n <Card\n actions={\n isLocked && user?.id !== userEditing?.id ? (\n <Locked className={`${baseClass}__locked`} user={userEditing} />\n ) : hasCreatePermission && type === EntityType.collection ? (\n <Button\n aria-label={t('general:createNewLabel', {\n label,\n })}\n buttonStyle=\"icon-label\"\n el=\"link\"\n icon=\"plus\"\n iconStyle=\"with-border\"\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${slug}`}\n title={getTranslation(label, i18n)}\n titleAs=\"h3\"\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n })\n )}\n </Fragment>\n {afterDashboard &&\n RenderServerComponent({\n Component: afterDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n </Gutter>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,6 +13,7 @@ export declare const renderDocumentHandler: (args: {
|
|
|
13
13
|
initialState?: FormState;
|
|
14
14
|
locale?: Locale;
|
|
15
15
|
overrideEntityVisibility?: boolean;
|
|
16
|
+
redirectAfterCreate?: boolean;
|
|
16
17
|
redirectAfterDelete: boolean;
|
|
17
18
|
redirectAfterDuplicate: boolean;
|
|
18
19
|
req: PayloadRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,SAAS,EACT,MAAM,EACN,cAAc,EAEf,MAAM,SAAS,CAAA;AAQhB,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,GAAG,CAAA;IACT,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,EAAE,mBAAmB,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAgB;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,SAAS,EACT,MAAM,EACN,cAAc,EAEf,MAAM,SAAS,CAAA;AAQhB,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,GAAG,CAAA;IACT,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,EAAE,mBAAmB,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAgB;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,oBAAoB,CAmJ/B,CAAA"}
|
|
@@ -11,6 +11,7 @@ export const renderDocumentHandler = async args => {
|
|
|
11
11
|
initialData,
|
|
12
12
|
locale,
|
|
13
13
|
overrideEntityVisibility,
|
|
14
|
+
redirectAfterCreate,
|
|
14
15
|
redirectAfterDelete,
|
|
15
16
|
redirectAfterDuplicate,
|
|
16
17
|
req,
|
|
@@ -134,6 +135,7 @@ export const renderDocumentHandler = async args => {
|
|
|
134
135
|
segments: ['collections', collectionSlug, docID]
|
|
135
136
|
},
|
|
136
137
|
payload,
|
|
138
|
+
redirectAfterCreate,
|
|
137
139
|
redirectAfterDelete,
|
|
138
140
|
redirectAfterDuplicate,
|
|
139
141
|
searchParams: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderDocument","renderDocumentHandler","args","collectionSlug","disableActions","docID","drawerSlug","initialData","locale","overrideEntityVisibility","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferences","preferencesKey","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","data","Document","documentSubViewType","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams","viewType"],"sources":["../../../src/views/Document/handleServerFunction.tsx"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n FormState,\n Locale,\n PayloadRequest,\n VisibleEntities,\n} from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderDocument } from './index.js'\n\ntype RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\nexport const renderDocumentHandler = async (args: {\n collectionSlug: string\n disableActions?: boolean\n docID: string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n locale?: Locale\n overrideEntityVisibility?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n req: PayloadRequest\n}): Promise<RenderDocumentResult> => {\n const {\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n locale,\n overrideEntityVisibility,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n })\n\n let preferences: DocumentPreferences\n\n if (docID) {\n const preferencesKey = `${collectionSlug}-edit-${docID}`\n\n preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as DocumentPreferences)\n }\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { data, Document } = await renderDocument({\n clientConfig,\n disableActions,\n documentSubViewType: 'default',\n drawerSlug,\n i18n,\n importMap: payload.importMap,\n initialData,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n docID,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n locale,\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug, docID],\n },\n payload,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n viewType: 'document',\n })\n\n return {\n data,\n Document,\n preferences,\n }\n}\n"],"mappings":"AASA,SAASA,eAAe,QAAQ;AAChC,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SAASC,gBAAgB,EAAEC,cAAc,EAAEC,YAAY,QAAQ;AAE/D,SAASC,cAAc,QAAQ;AAQ/B,OAAO,MAAMC,qBAAA,GAAwB,MAAOC,IAAA;
|
|
1
|
+
{"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderDocument","renderDocumentHandler","args","collectionSlug","disableActions","docID","drawerSlug","initialData","locale","overrideEntityVisibility","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferences","preferencesKey","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","data","Document","documentSubViewType","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams","viewType"],"sources":["../../../src/views/Document/handleServerFunction.tsx"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n FormState,\n Locale,\n PayloadRequest,\n VisibleEntities,\n} from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderDocument } from './index.js'\n\ntype RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\nexport const renderDocumentHandler = async (args: {\n collectionSlug: string\n disableActions?: boolean\n docID: string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n locale?: Locale\n overrideEntityVisibility?: boolean\n redirectAfterCreate?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n req: PayloadRequest\n}): Promise<RenderDocumentResult> => {\n const {\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n locale,\n overrideEntityVisibility,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n })\n\n let preferences: DocumentPreferences\n\n if (docID) {\n const preferencesKey = `${collectionSlug}-edit-${docID}`\n\n preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as DocumentPreferences)\n }\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { data, Document } = await renderDocument({\n clientConfig,\n disableActions,\n documentSubViewType: 'default',\n drawerSlug,\n i18n,\n importMap: payload.importMap,\n initialData,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n docID,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n locale,\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug, docID],\n },\n payload,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n viewType: 'document',\n })\n\n return {\n data,\n Document,\n preferences,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,9 +2,12 @@ import type { AdminViewServerProps, Data } from 'payload';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { GenerateEditViewMetadata } from './getMetaBySegment.js';
|
|
4
4
|
export declare const generateMetadata: GenerateEditViewMetadata;
|
|
5
|
-
export declare const renderDocument: ({ disableActions, documentSubViewType, drawerSlug, importMap, initialData, initPageResult, overrideEntityVisibility, params, redirectAfterDelete, redirectAfterDuplicate, searchParams, viewType, }: {
|
|
5
|
+
export declare const renderDocument: ({ disableActions, documentSubViewType, drawerSlug, importMap, initialData, initPageResult, overrideEntityVisibility, params, redirectAfterCreate, redirectAfterDelete, redirectAfterDuplicate, searchParams, viewType, }: {
|
|
6
6
|
drawerSlug?: string;
|
|
7
7
|
overrideEntityVisibility?: boolean;
|
|
8
|
+
readonly redirectAfterCreate?: boolean;
|
|
9
|
+
readonly redirectAfterDelete?: boolean;
|
|
10
|
+
readonly redirectAfterDuplicate?: boolean;
|
|
8
11
|
} & AdminViewServerProps) => Promise<{
|
|
9
12
|
data: Data;
|
|
10
13
|
Document: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,IAAI,EAKL,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,IAAI,EAKL,MAAM,SAAS,CAAA;AAShB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAcrE,eAAO,MAAM,gBAAgB,EAAE,wBAAiE,CAAA;AAKhG,eAAO,MAAM,cAAc,6NAcxB;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAC1C,GAAG,oBAAoB,KAAG,OAAO,CAAC;IACjC,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAsVA,CAAA;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,oBAAoB,+QAezD"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { DocumentInfoProvider, EditDepthProvider, HydrateAuthProvider } from '@payloadcms/ui';
|
|
3
3
|
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
4
|
-
import {
|
|
4
|
+
import { isEditing as getIsEditing } from '@payloadcms/ui/shared';
|
|
5
5
|
import { buildFormState } from '@payloadcms/ui/utilities/buildFormState';
|
|
6
6
|
import { notFound, redirect } from 'next/navigation.js';
|
|
7
7
|
import { logError } from 'payload';
|
|
8
|
+
import { formatAdminURL } from 'payload/shared';
|
|
8
9
|
import React from 'react';
|
|
9
10
|
import { DocumentHeader } from '../../elements/DocumentHeader/index.js';
|
|
10
11
|
import { NotFoundView } from '../NotFound/index.js';
|
|
@@ -29,6 +30,7 @@ export const renderDocument = async ({
|
|
|
29
30
|
initPageResult,
|
|
30
31
|
overrideEntityVisibility,
|
|
31
32
|
params,
|
|
33
|
+
redirectAfterCreate,
|
|
32
34
|
redirectAfterDelete,
|
|
33
35
|
redirectAfterDuplicate,
|
|
34
36
|
searchParams,
|
|
@@ -249,7 +251,7 @@ export const renderDocument = async ({
|
|
|
249
251
|
collectionSlug,
|
|
250
252
|
globalSlug
|
|
251
253
|
});
|
|
252
|
-
if (!drawerSlug) {
|
|
254
|
+
if (!drawerSlug && redirectAfterCreate !== false) {
|
|
253
255
|
const redirectURL = formatAdminURL({
|
|
254
256
|
adminRoute,
|
|
255
257
|
path: `/collections/${collectionSlug}/${doc.id}`,
|
|
@@ -293,6 +295,7 @@ export const renderDocument = async ({
|
|
|
293
295
|
isLocked: isLocked,
|
|
294
296
|
lastUpdateTime: lastUpdateTime,
|
|
295
297
|
mostRecentVersionIsAutosaved: mostRecentVersionIsAutosaved,
|
|
298
|
+
redirectAfterCreate: redirectAfterCreate,
|
|
296
299
|
redirectAfterDelete: redirectAfterDelete,
|
|
297
300
|
redirectAfterDuplicate: redirectAfterDuplicate,
|
|
298
301
|
unpublishedVersionCount: unpublishedVersionCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderServerComponent","formatAdminURL","isEditing","getIsEditing","buildFormState","notFound","redirect","logError","React","DocumentHeader","NotFoundView","getDocPreferences","getDocumentData","getDocumentPermissions","getIsLocked","getMetaBySegment","getVersions","getViewsFromConfig","renderDocumentSlots","generateMetadata","args","renderDocument","disableActions","documentSubViewType","drawerSlug","importMap","initialData","initPageResult","overrideEntityVisibility","params","redirectAfterDelete","redirectAfterDuplicate","searchParams","viewType","collectionConfig","docID","idFromArgs","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","serverURL","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","id","RootViewOverride","CustomView","DefaultView","ErrorView","apiURL","doc","Error","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","currentEditor","isLocked","lastUpdateTime","Promise","all","data","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","state","formState","code","fallbackLocale","operation","renderAllFields","schemaPath","skipValidation","documentViewServerProps","routeSegments","collections","find","visibleSlug","URLSearchParams","versions","drafts","append","apiQueryParams","toString","components","views","edit","root","Component","collectionViews","globals","globalViews","shouldAutosave","autosave","validateDraftData","validate","create","collection","depth","draft","redirectURL","path","documentSlots","clientProps","Document","_jsxs","initialState","_jsx","ComponentConfig","serverProps","props","RenderedDocument","error","message","err"],"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n Data,\n DocumentViewClientProps,\n DocumentViewServerProps,\n DocumentViewServerPropsOnly,\n PayloadComponent,\n} from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { formatAdminURL, isEditing as getIsEditing } from '@payloadcms/ui/shared'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { logError } from 'payload'\nimport React from 'react'\n\nimport type { GenerateEditViewMetadata } from './getMetaBySegment.js'\nimport type { ViewFromConfig } from './getViewsFromConfig.js'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { getDocPreferences } from './getDocPreferences.js'\nimport { getDocumentData } from './getDocumentData.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\nimport { getIsLocked } from './getIsLocked.js'\nimport { getMetaBySegment } from './getMetaBySegment.js'\nimport { getVersions } from './getVersions.js'\nimport { getViewsFromConfig } from './getViewsFromConfig.js'\nimport { renderDocumentSlots } from './renderDocumentSlots.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async (args) => getMetaBySegment(args)\n\n// This function will be responsible for rendering an Edit Document view\n// it will be called on the server for Edit page views as well as\n// called on-demand from document drawers\nexport const renderDocument = async ({\n disableActions,\n documentSubViewType,\n drawerSlug,\n importMap,\n initialData,\n initPageResult,\n overrideEntityVisibility,\n params,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams,\n viewType,\n}: {\n drawerSlug?: string\n overrideEntityVisibility?: boolean\n} & AdminViewServerProps): Promise<{\n data: Data\n Document: React.ReactNode\n}> => {\n const {\n collectionConfig,\n docID: idFromArgs,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n let isEditing = getIsEditing({ id: idFromArgs, collectionSlug, globalSlug })\n\n let RootViewOverride: PayloadComponent\n let CustomView: ViewFromConfig<DocumentViewServerProps>\n let DefaultView: ViewFromConfig<DocumentViewServerProps>\n let ErrorView: ViewFromConfig<AdminViewServerProps>\n\n let apiURL: string\n\n // Fetch the doc required for the view\n let doc =\n initialData ||\n (await getDocumentData({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n locale,\n payload,\n req,\n user,\n }))\n\n if (isEditing && !doc) {\n throw new Error('not-found')\n }\n\n const [\n docPreferences,\n { docPermissions, hasPublishPermission, hasSavePermission },\n { currentEditor, isLocked, lastUpdateTime },\n ] = await Promise.all([\n // Get document preferences\n getDocPreferences({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n payload,\n user,\n }),\n\n // Get permissions\n getDocumentPermissions({\n id: idFromArgs,\n collectionConfig,\n data: doc,\n globalConfig,\n req,\n }),\n\n // Fetch document lock state\n getIsLocked({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n isEditing,\n req,\n }),\n ])\n\n const [\n { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount },\n { state: formState },\n ] = await Promise.all([\n getVersions({\n id: idFromArgs,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale: locale?.code,\n payload,\n user,\n }),\n buildFormState({\n id: idFromArgs,\n collectionSlug,\n data: doc,\n docPermissions,\n docPreferences,\n fallbackLocale: false,\n globalSlug,\n locale: locale?.code,\n operation: (collectionSlug && idFromArgs) || globalSlug ? 'update' : 'create',\n renderAllFields: true,\n req,\n schemaPath: collectionSlug || globalSlug,\n skipValidation: true,\n }),\n ])\n\n const documentViewServerProps: DocumentViewServerPropsOnly = {\n doc,\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n user,\n }\n\n if (collectionConfig) {\n if (\n !visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug) &&\n !overrideEntityVisibility\n ) {\n throw new Error('not-found')\n }\n\n const params = new URLSearchParams()\n\n if (collectionConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${collectionSlug}/${idFromArgs}${apiQueryParams}`\n\n RootViewOverride =\n collectionConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in collectionConfig.admin.components.views.edit.root\n ? collectionConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (!RootViewOverride) {\n const collectionViews = getViewsFromConfig({\n collectionConfig,\n config,\n docPermissions,\n routeSegments: segments,\n })\n\n CustomView = collectionViews?.CustomView\n DefaultView = collectionViews?.DefaultView\n ErrorView = collectionViews?.ErrorView\n }\n\n if (!CustomView && !DefaultView && !RootViewOverride && !ErrorView) {\n ErrorView = {\n Component: NotFoundView,\n }\n }\n }\n\n if (globalConfig) {\n if (!visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)) {\n throw new Error('not-found')\n }\n\n const params = new URLSearchParams({\n locale: locale?.code,\n })\n\n if (globalConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${globalSlug}${apiQueryParams}`\n\n RootViewOverride =\n globalConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in globalConfig.admin.components.views.edit.root\n ? globalConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (!RootViewOverride) {\n const globalViews = getViewsFromConfig({\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n })\n\n CustomView = globalViews?.CustomView\n DefaultView = globalViews?.DefaultView\n ErrorView = globalViews?.ErrorView\n\n if (!CustomView && !DefaultView && !RootViewOverride && !ErrorView) {\n ErrorView = {\n Component: NotFoundView,\n }\n }\n }\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave =\n hasSavePermission &&\n ((collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave))\n\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n let id = idFromArgs\n\n if (shouldAutosave && !validateDraftData && !idFromArgs && collectionSlug) {\n doc = await payload.create({\n collection: collectionSlug,\n data: initialData || {},\n depth: 0,\n draft: true,\n fallbackLocale: false,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n id = doc.id\n isEditing = getIsEditing({ id: doc.id, collectionSlug, globalSlug })\n\n if (!drawerSlug) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n serverURL,\n })\n\n redirect(redirectURL)\n }\n } else {\n throw new Error('not-found')\n }\n }\n\n const documentSlots = renderDocumentSlots({\n collectionConfig,\n globalConfig,\n hasSavePermission,\n permissions: docPermissions,\n req,\n })\n\n const clientProps: DocumentViewClientProps = {\n formState,\n ...documentSlots,\n documentSubViewType,\n viewType,\n }\n\n return {\n data: doc,\n Document: (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n currentEditor={currentEditor}\n disableActions={disableActions ?? false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n initialData={doc}\n initialState={formState}\n isEditing={isEditing}\n isLocked={isLocked}\n key={locale?.code}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n {!RootViewOverride && !drawerSlug && (\n <DocumentHeader\n collectionConfig={collectionConfig}\n globalConfig={globalConfig}\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n )}\n <HydrateAuthProvider permissions={permissions} />\n <EditDepthProvider>\n {ErrorView\n ? RenderServerComponent({\n clientProps,\n Component: ErrorView.ComponentConfig || ErrorView.Component,\n importMap,\n serverProps: documentViewServerProps,\n })\n : RenderServerComponent({\n clientProps,\n Component: RootViewOverride\n ? RootViewOverride\n : CustomView?.ComponentConfig || CustomView?.Component\n ? CustomView?.ComponentConfig || CustomView?.Component\n : DefaultView?.ComponentConfig || DefaultView?.Component,\n importMap,\n serverProps: documentViewServerProps,\n })}\n </EditDepthProvider>\n </DocumentInfoProvider>\n ),\n }\n}\n\nexport async function Document(props: AdminViewServerProps) {\n try {\n const { Document: RenderedDocument } = await renderDocument(props)\n return RenderedDocument\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n\n logError({ err: error, payload: props.initPageResult.req.payload })\n\n if (error.message === 'not-found') {\n notFound()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderServerComponent","isEditing","getIsEditing","buildFormState","notFound","redirect","logError","formatAdminURL","React","DocumentHeader","NotFoundView","getDocPreferences","getDocumentData","getDocumentPermissions","getIsLocked","getMetaBySegment","getVersions","getViewsFromConfig","renderDocumentSlots","generateMetadata","args","renderDocument","disableActions","documentSubViewType","drawerSlug","importMap","initialData","initPageResult","overrideEntityVisibility","params","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","searchParams","viewType","collectionConfig","docID","idFromArgs","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","serverURL","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","id","RootViewOverride","CustomView","DefaultView","ErrorView","apiURL","doc","Error","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","currentEditor","isLocked","lastUpdateTime","Promise","all","data","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","state","formState","code","fallbackLocale","operation","renderAllFields","schemaPath","skipValidation","documentViewServerProps","routeSegments","collections","find","visibleSlug","URLSearchParams","versions","drafts","append","apiQueryParams","toString","components","views","edit","root","Component","collectionViews","globals","globalViews","shouldAutosave","autosave","validateDraftData","validate","create","collection","depth","draft","redirectURL","path","documentSlots","clientProps","Document","_jsxs","initialState","_jsx","ComponentConfig","serverProps","props","RenderedDocument","error","message","err"],"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n Data,\n DocumentViewClientProps,\n DocumentViewServerProps,\n DocumentViewServerPropsOnly,\n PayloadComponent,\n} from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { isEditing as getIsEditing } from '@payloadcms/ui/shared'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { logError } from 'payload'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport type { GenerateEditViewMetadata } from './getMetaBySegment.js'\nimport type { ViewFromConfig } from './getViewsFromConfig.js'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { getDocPreferences } from './getDocPreferences.js'\nimport { getDocumentData } from './getDocumentData.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\nimport { getIsLocked } from './getIsLocked.js'\nimport { getMetaBySegment } from './getMetaBySegment.js'\nimport { getVersions } from './getVersions.js'\nimport { getViewsFromConfig } from './getViewsFromConfig.js'\nimport { renderDocumentSlots } from './renderDocumentSlots.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async (args) => getMetaBySegment(args)\n\n// This function will be responsible for rendering an Edit Document view\n// it will be called on the server for Edit page views as well as\n// called on-demand from document drawers\nexport const renderDocument = async ({\n disableActions,\n documentSubViewType,\n drawerSlug,\n importMap,\n initialData,\n initPageResult,\n overrideEntityVisibility,\n params,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams,\n viewType,\n}: {\n drawerSlug?: string\n overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n} & AdminViewServerProps): Promise<{\n data: Data\n Document: React.ReactNode\n}> => {\n const {\n collectionConfig,\n docID: idFromArgs,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n let isEditing = getIsEditing({ id: idFromArgs, collectionSlug, globalSlug })\n\n let RootViewOverride: PayloadComponent\n let CustomView: ViewFromConfig<DocumentViewServerProps>\n let DefaultView: ViewFromConfig<DocumentViewServerProps>\n let ErrorView: ViewFromConfig<AdminViewServerProps>\n\n let apiURL: string\n\n // Fetch the doc required for the view\n let doc =\n initialData ||\n (await getDocumentData({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n locale,\n payload,\n req,\n user,\n }))\n\n if (isEditing && !doc) {\n throw new Error('not-found')\n }\n\n const [\n docPreferences,\n { docPermissions, hasPublishPermission, hasSavePermission },\n { currentEditor, isLocked, lastUpdateTime },\n ] = await Promise.all([\n // Get document preferences\n getDocPreferences({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n payload,\n user,\n }),\n\n // Get permissions\n getDocumentPermissions({\n id: idFromArgs,\n collectionConfig,\n data: doc,\n globalConfig,\n req,\n }),\n\n // Fetch document lock state\n getIsLocked({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n isEditing,\n req,\n }),\n ])\n\n const [\n { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount },\n { state: formState },\n ] = await Promise.all([\n getVersions({\n id: idFromArgs,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale: locale?.code,\n payload,\n user,\n }),\n buildFormState({\n id: idFromArgs,\n collectionSlug,\n data: doc,\n docPermissions,\n docPreferences,\n fallbackLocale: false,\n globalSlug,\n locale: locale?.code,\n operation: (collectionSlug && idFromArgs) || globalSlug ? 'update' : 'create',\n renderAllFields: true,\n req,\n schemaPath: collectionSlug || globalSlug,\n skipValidation: true,\n }),\n ])\n\n const documentViewServerProps: DocumentViewServerPropsOnly = {\n doc,\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n user,\n }\n\n if (collectionConfig) {\n if (\n !visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug) &&\n !overrideEntityVisibility\n ) {\n throw new Error('not-found')\n }\n\n const params = new URLSearchParams()\n\n if (collectionConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${collectionSlug}/${idFromArgs}${apiQueryParams}`\n\n RootViewOverride =\n collectionConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in collectionConfig.admin.components.views.edit.root\n ? collectionConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (!RootViewOverride) {\n const collectionViews = getViewsFromConfig({\n collectionConfig,\n config,\n docPermissions,\n routeSegments: segments,\n })\n\n CustomView = collectionViews?.CustomView\n DefaultView = collectionViews?.DefaultView\n ErrorView = collectionViews?.ErrorView\n }\n\n if (!CustomView && !DefaultView && !RootViewOverride && !ErrorView) {\n ErrorView = {\n Component: NotFoundView,\n }\n }\n }\n\n if (globalConfig) {\n if (!visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)) {\n throw new Error('not-found')\n }\n\n const params = new URLSearchParams({\n locale: locale?.code,\n })\n\n if (globalConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${globalSlug}${apiQueryParams}`\n\n RootViewOverride =\n globalConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in globalConfig.admin.components.views.edit.root\n ? globalConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (!RootViewOverride) {\n const globalViews = getViewsFromConfig({\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n })\n\n CustomView = globalViews?.CustomView\n DefaultView = globalViews?.DefaultView\n ErrorView = globalViews?.ErrorView\n\n if (!CustomView && !DefaultView && !RootViewOverride && !ErrorView) {\n ErrorView = {\n Component: NotFoundView,\n }\n }\n }\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave =\n hasSavePermission &&\n ((collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave))\n\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n let id = idFromArgs\n\n if (shouldAutosave && !validateDraftData && !idFromArgs && collectionSlug) {\n doc = await payload.create({\n collection: collectionSlug,\n data: initialData || {},\n depth: 0,\n draft: true,\n fallbackLocale: false,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n id = doc.id\n isEditing = getIsEditing({ id: doc.id, collectionSlug, globalSlug })\n\n if (!drawerSlug && redirectAfterCreate !== false) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n serverURL,\n })\n\n redirect(redirectURL)\n }\n } else {\n throw new Error('not-found')\n }\n }\n\n const documentSlots = renderDocumentSlots({\n collectionConfig,\n globalConfig,\n hasSavePermission,\n permissions: docPermissions,\n req,\n })\n\n const clientProps: DocumentViewClientProps = {\n formState,\n ...documentSlots,\n documentSubViewType,\n viewType,\n }\n\n return {\n data: doc,\n Document: (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n currentEditor={currentEditor}\n disableActions={disableActions ?? false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n initialData={doc}\n initialState={formState}\n isEditing={isEditing}\n isLocked={isLocked}\n key={locale?.code}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n redirectAfterCreate={redirectAfterCreate}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n {!RootViewOverride && !drawerSlug && (\n <DocumentHeader\n collectionConfig={collectionConfig}\n globalConfig={globalConfig}\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n )}\n <HydrateAuthProvider permissions={permissions} />\n <EditDepthProvider>\n {ErrorView\n ? RenderServerComponent({\n clientProps,\n Component: ErrorView.ComponentConfig || ErrorView.Component,\n importMap,\n serverProps: documentViewServerProps,\n })\n : RenderServerComponent({\n clientProps,\n Component: RootViewOverride\n ? RootViewOverride\n : CustomView?.ComponentConfig || CustomView?.Component\n ? CustomView?.ComponentConfig || CustomView?.Component\n : DefaultView?.ComponentConfig || DefaultView?.Component,\n importMap,\n serverProps: documentViewServerProps,\n })}\n </EditDepthProvider>\n </DocumentInfoProvider>\n ),\n }\n}\n\nexport async function Document(props: AdminViewServerProps) {\n try {\n const { Document: RenderedDocument } = await renderDocument(props)\n return RenderedDocument\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n\n logError({ err: error, payload: props.initPageResult.req.payload })\n\n if (error.message === 'not-found') {\n notFound()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/ForgotPassword/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/ForgotPassword/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKnD,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAA;AAE1D,eAAO,MAAM,uBAAuB,oBAAoB,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,EAAE,cAAc,EAAE,EAAE,oBAAoB,qBA8D1E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Button, Link } from '@payloadcms/ui';
|
|
3
|
-
import {
|
|
3
|
+
import { Translation } from '@payloadcms/ui/shared';
|
|
4
|
+
import { formatAdminURL } from 'payload/shared';
|
|
4
5
|
import React, { Fragment } from 'react';
|
|
5
6
|
import { FormHeader } from '../../elements/FormHeader/index.js';
|
|
6
7
|
import { ForgotPasswordForm } from './ForgotPasswordForm/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Button","Link","
|
|
1
|
+
{"version":3,"file":"index.js","names":["Button","Link","Translation","formatAdminURL","React","Fragment","FormHeader","ForgotPasswordForm","generateForgotPasswordMetadata","forgotPasswordBaseClass","ForgotPasswordView","initPageResult","req","i18n","payload","config","user","admin","routes","account","accountRoute","login","loginRoute","adminRoute","_jsxs","_jsx","description","elements","0","children","href","path","prefetch","i18nKey","t","heading","buttonStyle","el","size","to"],"sources":["../../../src/views/ForgotPassword/index.tsx"],"sourcesContent":["import type { AdminViewServerProps } from 'payload'\n\nimport { Button, Link } from '@payloadcms/ui'\nimport { Translation } from '@payloadcms/ui/shared'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport { FormHeader } from '../../elements/FormHeader/index.js'\nimport { ForgotPasswordForm } from './ForgotPasswordForm/index.js'\n\nexport { generateForgotPasswordMetadata } from './meta.js'\n\nexport const forgotPasswordBaseClass = 'forgot-password'\n\nexport function ForgotPasswordView({ initPageResult }: AdminViewServerProps) {\n const {\n req: {\n i18n,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: {\n routes: { account: accountRoute, login: loginRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (user) {\n return (\n <Fragment>\n <FormHeader\n description={\n <Translation\n elements={{\n '0': ({ children }) => (\n <Link\n href={formatAdminURL({\n adminRoute,\n path: accountRoute,\n })}\n prefetch={false}\n >\n {children}\n </Link>\n ),\n }}\n i18nKey=\"authentication:loggedInChangePassword\"\n t={i18n.t}\n />\n }\n heading={i18n.t('authentication:alreadyLoggedIn')}\n />\n <Button buttonStyle=\"secondary\" el=\"link\" size=\"large\" to={adminRoute}>\n {i18n.t('general:backToDashboard')}\n </Button>\n </Fragment>\n )\n }\n\n return (\n <Fragment>\n <ForgotPasswordForm />\n <Link\n href={formatAdminURL({\n adminRoute,\n path: loginRoute,\n })}\n prefetch={false}\n >\n {i18n.t('authentication:backToLogin')}\n </Link>\n </Fragment>\n )\n}\n"],"mappings":";AAEA,SAASA,MAAM,EAAEC,IAAI,QAAQ;AAC7B,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,UAAU,QAAQ;AAC3B,SAASC,kBAAkB,QAAQ;AAEnC,SAASC,8BAA8B,QAAQ;AAE/C,OAAO,MAAMC,uBAAA,GAA0B;AAEvC,OAAO,SAASC,mBAAmB;EAAEC;AAAc,CAAwB;EACzE,MAAM;IACJC,GAAA,EAAK;MACHC,IAAI;MACJC,OAAA,EAAS;QAAEC;MAAM,CAAE;MACnBC;IAAI;EACL,CACF,GAAGL,cAAA;EAEJ,MAAM;IACJM,KAAA,EAAO;MACLC,MAAA,EAAQ;QAAEC,OAAA,EAASC,YAAY;QAAEC,KAAA,EAAOC;MAAU;IAAE,CACrD;IACDJ,MAAA,EAAQ;MAAED,KAAA,EAAOM;IAAU;EAAE,CAC9B,GAAGR,MAAA;EAEJ,IAAIC,IAAA,EAAM;IACR,oBACEQ,KAAA,CAACnB,QAAA;8BACCoB,IAAA,CAACnB,UAAA;QACCoB,WAAA,eACED,IAAA,CAACvB,WAAA;UACCyB,QAAA,EAAU;YACR,KAAKC,CAAC;cAAEC;YAAQ,CAAE,kBAChBJ,IAAA,CAACxB,IAAA;cACC6B,IAAA,EAAM3B,cAAA,CAAe;gBACnBoB,UAAA;gBACAQ,IAAA,EAAMX;cACR;cACAY,QAAA,EAAU;wBAETH;;UAGP;UACAI,OAAA,EAAQ;UACRC,CAAA,EAAGrB,IAAA,CAAKqB;;QAGZC,OAAA,EAAStB,IAAA,CAAKqB,CAAC,CAAC;uBAElBT,IAAA,CAACzB,MAAA;QAAOoC,WAAA,EAAY;QAAYC,EAAA,EAAG;QAAOC,IAAA,EAAK;QAAQC,EAAA,EAAIhB,UAAA;kBACxDV,IAAA,CAAKqB,CAAC,CAAC;;;EAIhB;EAEA,oBACEV,KAAA,CAACnB,QAAA;4BACCoB,IAAA,CAAClB,kBAAA,O,aACDkB,IAAA,CAACxB,IAAA;MACC6B,IAAA,EAAM3B,cAAA,CAAe;QACnBoB,UAAA;QACAQ,IAAA,EAAMT;MACR;MACAU,QAAA,EAAU;gBAETnB,IAAA,CAAKqB,CAAC,CAAC;;;AAIhB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/List/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AAQ1F,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,WAAW,EAAE,eAAe,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,iBAAiB,SAAgB;IAC5C,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/List/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AAQ1F,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,WAAW,EAAE,eAAe,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,iBAAiB,SAAgB;IAC5C,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,gBAAgB,CA+I3B,CAAA"}
|
|
@@ -8,6 +8,7 @@ export const renderListHandler = async args => {
|
|
|
8
8
|
disableActions,
|
|
9
9
|
disableBulkDelete,
|
|
10
10
|
disableBulkEdit,
|
|
11
|
+
disableListPresets,
|
|
11
12
|
drawerSlug,
|
|
12
13
|
enableRowSelections,
|
|
13
14
|
overrideEntityVisibility,
|
|
@@ -111,6 +112,7 @@ export const renderListHandler = async args => {
|
|
|
111
112
|
disableActions,
|
|
112
113
|
disableBulkDelete,
|
|
113
114
|
disableBulkEdit,
|
|
115
|
+
disableListPresets,
|
|
114
116
|
drawerSlug,
|
|
115
117
|
enableRowSelections,
|
|
116
118
|
i18n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderListView","renderListHandler","args","collectionSlug","disableActions","disableBulkDelete","disableBulkEdit","drawerSlug","enableRowSelections","overrideEntityVisibility","query","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferencesKey","preferences","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","List","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams","viewType"],"sources":["../../../src/views/List/handleServerFunction.tsx"],"sourcesContent":["import type { ListPreferences, ListQuery, PayloadRequest, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderListView } from './index.js'\n\ntype RenderListResult = {\n List: React.ReactNode\n preferences: ListPreferences\n}\n\nexport const renderListHandler = async (args: {\n collectionSlug: string\n disableActions?: boolean\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n documentDrawerSlug: string\n drawerSlug?: string\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n req: PayloadRequest\n}): Promise<RenderListResult> => {\n const {\n collectionSlug,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n drawerSlug,\n enableRowSelections,\n overrideEntityVisibility,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n const preferencesKey = `${collectionSlug}-list`\n\n const preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as ListPreferences)\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { List } = await renderListView({\n clientConfig,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n drawerSlug,\n enableRowSelections,\n i18n,\n importMap: payload.importMap,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug],\n },\n payload,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n viewType: 'list',\n })\n\n return {\n List,\n preferences,\n }\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAChC,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SAASC,gBAAgB,EAAEC,cAAc,EAAEC,YAAY,QAAQ;AAE/D,SAASC,cAAc,QAAQ;AAO/B,OAAO,MAAMC,iBAAA,GAAoB,MAAOC,IAAA;
|
|
1
|
+
{"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderListView","renderListHandler","args","collectionSlug","disableActions","disableBulkDelete","disableBulkEdit","disableListPresets","drawerSlug","enableRowSelections","overrideEntityVisibility","query","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferencesKey","preferences","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","List","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams","viewType"],"sources":["../../../src/views/List/handleServerFunction.tsx"],"sourcesContent":["import type { ListPreferences, ListQuery, PayloadRequest, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderListView } from './index.js'\n\ntype RenderListResult = {\n List: React.ReactNode\n preferences: ListPreferences\n}\n\nexport const renderListHandler = async (args: {\n collectionSlug: string\n disableActions?: boolean\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n disableListPresets?: boolean\n documentDrawerSlug: string\n drawerSlug?: string\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n req: PayloadRequest\n}): Promise<RenderListResult> => {\n const {\n collectionSlug,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n disableListPresets,\n drawerSlug,\n enableRowSelections,\n overrideEntityVisibility,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n const preferencesKey = `${collectionSlug}-list`\n\n const preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as ListPreferences)\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { List } = await renderListView({\n clientConfig,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n disableListPresets,\n drawerSlug,\n enableRowSelections,\n i18n,\n importMap: payload.importMap,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug],\n },\n payload,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n viewType: 'list',\n })\n\n return {\n List,\n preferences,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { AdminViewServerProps, ListQuery } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export { generateListMetadata } from './meta.js';
|
|
4
4
|
type RenderListViewArgs = {
|
|
5
5
|
customCellProps?: Record<string, any>;
|
|
6
6
|
disableBulkDelete?: boolean;
|
|
7
7
|
disableBulkEdit?: boolean;
|
|
8
|
+
disableListPresets?: boolean;
|
|
8
9
|
drawerSlug?: string;
|
|
9
10
|
enableRowSelections: boolean;
|
|
10
11
|
overrideEntityVisibility?: boolean;
|
|
11
12
|
query: ListQuery;
|
|
13
|
+
redirectAfterDelete?: boolean;
|
|
14
|
+
redirectAfterDuplicate?: boolean;
|
|
12
15
|
} & AdminViewServerProps;
|
|
13
16
|
export declare const renderListView: (args: RenderListViewArgs) => Promise<{
|
|
14
17
|
List: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAKpB,SAAS,EAIV,MAAM,SAAS,CAAA;AAYhB,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC,GAAG,oBAAoB,CAAA;AAExB,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CACtB,CA2OA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAWjD,CAAA"}
|
package/dist/views/List/index.js
CHANGED
|
@@ -2,9 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { DefaultListView, HydrateAuthProvider, ListQueryProvider } from '@payloadcms/ui';
|
|
3
3
|
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
4
4
|
import { renderFilters, renderTable, upsertPreferences } from '@payloadcms/ui/rsc';
|
|
5
|
-
import { formatAdminURL, mergeListSearchAndWhere } from '@payloadcms/ui/shared';
|
|
6
5
|
import { notFound } from 'next/navigation.js';
|
|
7
|
-
import { isNumber, transformColumnsToPreferences } from 'payload/shared';
|
|
6
|
+
import { formatAdminURL, isNumber, mergeListSearchAndWhere, transformColumnsToPreferences } from 'payload/shared';
|
|
8
7
|
import React, { Fragment } from 'react';
|
|
9
8
|
import { renderListViewSlots } from './renderListViewSlots.js';
|
|
10
9
|
import { resolveAllFilterOptions } from './resolveAllFilterOptions.js';
|
|
@@ -15,6 +14,7 @@ export const renderListView = async args => {
|
|
|
15
14
|
customCellProps,
|
|
16
15
|
disableBulkDelete,
|
|
17
16
|
disableBulkEdit,
|
|
17
|
+
disableListPresets,
|
|
18
18
|
drawerSlug,
|
|
19
19
|
enableRowSelections,
|
|
20
20
|
initPageResult,
|
|
@@ -59,6 +59,7 @@ export const renderListView = async args => {
|
|
|
59
59
|
value: {
|
|
60
60
|
columns,
|
|
61
61
|
limit: isNumber(query?.limit) ? Number(query.limit) : undefined,
|
|
62
|
+
preset: query?.preset || null,
|
|
62
63
|
sort: query?.sort
|
|
63
64
|
}
|
|
64
65
|
});
|
|
@@ -92,6 +93,20 @@ export const renderListView = async args => {
|
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
95
|
}
|
|
96
|
+
let activePreset;
|
|
97
|
+
if (listPreferences?.preset) {
|
|
98
|
+
try {
|
|
99
|
+
activePreset = await payload.findByID({
|
|
100
|
+
id: listPreferences?.preset,
|
|
101
|
+
collection: 'payload-list-presets',
|
|
102
|
+
depth: 0,
|
|
103
|
+
overrideAccess: false,
|
|
104
|
+
user
|
|
105
|
+
});
|
|
106
|
+
} catch (_err) {
|
|
107
|
+
// swallow error
|
|
108
|
+
}
|
|
109
|
+
}
|
|
95
110
|
const data = await payload.find({
|
|
96
111
|
collection: collectionSlug,
|
|
97
112
|
depth: 0,
|
|
@@ -168,6 +183,7 @@ export const renderListView = async args => {
|
|
|
168
183
|
children: [/*#__PURE__*/_jsx(HydrateAuthProvider, {
|
|
169
184
|
permissions: permissions
|
|
170
185
|
}), /*#__PURE__*/_jsx(ListQueryProvider, {
|
|
186
|
+
collectionSlug: collectionSlug,
|
|
171
187
|
columns: transformColumnsToPreferences(columnState),
|
|
172
188
|
data: data,
|
|
173
189
|
defaultLimit: limit,
|
|
@@ -177,10 +193,12 @@ export const renderListView = async args => {
|
|
|
177
193
|
children: RenderServerComponent({
|
|
178
194
|
clientProps: {
|
|
179
195
|
...listViewSlots,
|
|
196
|
+
activePreset,
|
|
180
197
|
collectionSlug,
|
|
181
198
|
columnState,
|
|
182
199
|
disableBulkDelete,
|
|
183
200
|
disableBulkEdit,
|
|
201
|
+
disableListPresets,
|
|
184
202
|
enableRowSelections,
|
|
185
203
|
hasCreatePermission,
|
|
186
204
|
listPreferences,
|