@payloadcms/next 3.0.0-beta.130 → 3.0.0-beta.131

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.
Files changed (61) hide show
  1. package/dist/elements/DocumentHeader/Tabs/index.d.ts +2 -2
  2. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  3. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  4. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  5. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +1 -1
  6. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  7. package/dist/elements/DocumentHeader/index.d.ts +2 -2
  8. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  9. package/dist/elements/DocumentHeader/index.js.map +1 -1
  10. package/dist/prod/styles.css +1 -1
  11. package/dist/utilities/initReq.d.ts +2 -2
  12. package/dist/utilities/initReq.d.ts.map +1 -1
  13. package/dist/utilities/initReq.js.map +1 -1
  14. package/dist/views/CreateFirstUser/index.client.d.ts +2 -2
  15. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  16. package/dist/views/CreateFirstUser/index.client.js +1 -1
  17. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  18. package/dist/views/Dashboard/Default/index.d.ts +2 -2
  19. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  20. package/dist/views/Dashboard/Default/index.js +1 -1
  21. package/dist/views/Dashboard/Default/index.js.map +1 -1
  22. package/dist/views/Dashboard/index.d.ts.map +1 -1
  23. package/dist/views/Dashboard/index.js +2 -2
  24. package/dist/views/Dashboard/index.js.map +1 -1
  25. package/dist/views/Document/getDocumentPermissions.d.ts +2 -2
  26. package/dist/views/Document/getDocumentPermissions.d.ts.map +1 -1
  27. package/dist/views/Document/getDocumentPermissions.js +8 -3
  28. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  29. package/dist/views/Document/getVersions.d.ts +2 -2
  30. package/dist/views/Document/getVersions.d.ts.map +1 -1
  31. package/dist/views/Document/getVersions.js +1 -1
  32. package/dist/views/Document/getVersions.js.map +1 -1
  33. package/dist/views/Document/getViewsFromConfig.d.ts +2 -2
  34. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  35. package/dist/views/Document/getViewsFromConfig.js +8 -8
  36. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  37. package/dist/views/Document/renderDocumentSlots.d.ts +2 -2
  38. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  39. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  40. package/dist/views/List/index.js +2 -2
  41. package/dist/views/List/index.js.map +1 -1
  42. package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts.map +1 -1
  43. package/dist/views/ResetPassword/ResetPasswordForm/index.js +0 -7
  44. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  45. package/dist/views/Version/Default/index.js +1 -1
  46. package/dist/views/Version/Default/index.js.map +1 -1
  47. package/dist/views/Version/Default/types.d.ts +2 -2
  48. package/dist/views/Version/Default/types.d.ts.map +1 -1
  49. package/dist/views/Version/Default/types.js.map +1 -1
  50. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +4 -2
  51. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  52. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  53. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  54. package/dist/views/Version/RenderFieldsToDiff/index.js +3 -3
  55. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  56. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +4 -2
  57. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  58. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  59. package/dist/views/Version/index.d.ts.map +1 -1
  60. package/dist/views/Version/index.js.map +1 -1
  61. package/package.json +6 -6
@@ -1,8 +1,8 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
- import type { PayloadRequest, Permissions, SanitizedConfig, User } from 'payload';
2
+ import type { PayloadRequest, SanitizedConfig, SanitizedPermissions, User } from 'payload';
3
3
  type Result = {
4
4
  i18n: I18nClient;
5
- permissions: Permissions;
5
+ permissions: SanitizedPermissions;
6
6
  req: PayloadRequest;
7
7
  user: User;
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"initReq.d.ts","sourceRoot":"","sources":["../../src/utilities/initReq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAUjF,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,eAAO,MAAM,OAAO,kBACH,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,KACxD,OAAO,CAAC,MAAM,CAuCf,CAAA"}
1
+ {"version":3,"file":"initReq.d.ts","sourceRoot":"","sources":["../../src/utilities/initReq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAU1F,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,EAAE,oBAAoB,CAAA;IACjC,GAAG,EAAE,cAAc,CAAA;IACnB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,eAAO,MAAM,OAAO,kBACH,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,KACxD,OAAO,CAAC,MAAM,CAuCf,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"initReq.js","names":["initI18n","headers","getHeaders","createLocalReq","parseCookies","cache","getPayloadHMR","getRequestLanguage","initReq","configPromise","config","payload","cookies","languageCode","i18n","context","language","req","host","get","url","serverURL","permissions","user","auth"],"sources":["../../src/utilities/initReq.ts"],"sourcesContent":["import type { I18n, I18nClient } from '@payloadcms/translations'\nimport type { PayloadRequest, Permissions, SanitizedConfig, User } from 'payload'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { createLocalReq, parseCookies } from 'payload'\nimport { cache } from 'react'\n\nimport { getPayloadHMR } from './getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Result = {\n i18n: I18nClient\n permissions: Permissions\n req: PayloadRequest\n user: User\n}\n\nexport const initReq = cache(async function (\n configPromise: Promise<SanitizedConfig> | SanitizedConfig,\n): Promise<Result> {\n const config = await configPromise\n const payload = await getPayloadHMR({ config })\n\n const headers = await getHeaders()\n const cookies = parseCookies(headers)\n\n const languageCode = getRequestLanguage({\n config,\n cookies,\n headers,\n })\n\n const i18n: I18nClient = await initI18n({\n config: config.i18n,\n context: 'client',\n language: languageCode,\n })\n\n const req = await createLocalReq(\n {\n req: {\n headers,\n host: headers.get('host'),\n i18n: i18n as I18n,\n url: `${payload.config.serverURL}`,\n },\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n return {\n i18n,\n permissions,\n req,\n user,\n }\n})\n"],"mappings":"AAGA,SAASA,QAAQ,QAAQ;AACzB,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SAASC,cAAc,EAAEC,YAAY,QAAQ;AAC7C,SAASC,KAAK,QAAQ;AAEtB,SAASC,aAAa,QAAQ;AAC9B,SAASC,kBAAkB,QAAQ;AASnC,OAAO,MAAMC,OAAA,GAAUH,KAAA,CAAM,gBAC3BI,aAAyD;EAEzD,MAAMC,MAAA,GAAS,MAAMD,aAAA;EACrB,MAAME,OAAA,GAAU,MAAML,aAAA,CAAc;IAAEI;EAAO;EAE7C,MAAMT,OAAA,GAAU,MAAMC,UAAA;EACtB,MAAMU,OAAA,GAAUR,YAAA,CAAaH,OAAA;EAE7B,MAAMY,YAAA,GAAeN,kBAAA,CAAmB;IACtCG,MAAA;IACAE,OAAA;IACAX;EACF;EAEA,MAAMa,IAAA,GAAmB,MAAMd,QAAA,CAAS;IACtCU,MAAA,EAAQA,MAAA,CAAOI,IAAI;IACnBC,OAAA,EAAS;IACTC,QAAA,EAAUH;EACZ;EAEA,MAAMI,GAAA,GAAM,MAAMd,cAAA,CAChB;IACEc,GAAA,EAAK;MACHhB,OAAA;MACAiB,IAAA,EAAMjB,OAAA,CAAQkB,GAAG,CAAC;MAClBL,IAAA,EAAMA,IAAA;MACNM,GAAA,EAAK,GAAGT,OAAA,CAAQD,MAAM,CAACW,SAAS;IAClC;EACF,GACAV,OAAA;EAGF,MAAM;IAAEW,WAAW;IAAEC;EAAI,CAAE,GAAG,MAAMZ,OAAA,CAAQa,IAAI,CAAC;IAAEvB,OAAA;IAASgB;EAAI;EAEhE,OAAO;IACLH,IAAA;IACAQ,WAAA;IACAL,GAAA;IACAM;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"initReq.js","names":["initI18n","headers","getHeaders","createLocalReq","parseCookies","cache","getPayloadHMR","getRequestLanguage","initReq","configPromise","config","payload","cookies","languageCode","i18n","context","language","req","host","get","url","serverURL","permissions","user","auth"],"sources":["../../src/utilities/initReq.ts"],"sourcesContent":["import type { I18n, I18nClient } from '@payloadcms/translations'\nimport type { PayloadRequest, SanitizedConfig, SanitizedPermissions, User } from 'payload'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { createLocalReq, parseCookies } from 'payload'\nimport { cache } from 'react'\n\nimport { getPayloadHMR } from './getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Result = {\n i18n: I18nClient\n permissions: SanitizedPermissions\n req: PayloadRequest\n user: User\n}\n\nexport const initReq = cache(async function (\n configPromise: Promise<SanitizedConfig> | SanitizedConfig,\n): Promise<Result> {\n const config = await configPromise\n const payload = await getPayloadHMR({ config })\n\n const headers = await getHeaders()\n const cookies = parseCookies(headers)\n\n const languageCode = getRequestLanguage({\n config,\n cookies,\n headers,\n })\n\n const i18n: I18nClient = await initI18n({\n config: config.i18n,\n context: 'client',\n language: languageCode,\n })\n\n const req = await createLocalReq(\n {\n req: {\n headers,\n host: headers.get('host'),\n i18n: i18n as I18n,\n url: `${payload.config.serverURL}`,\n },\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n return {\n i18n,\n permissions,\n req,\n user,\n }\n})\n"],"mappings":"AAGA,SAASA,QAAQ,QAAQ;AACzB,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SAASC,cAAc,EAAEC,YAAY,QAAQ;AAC7C,SAASC,KAAK,QAAQ;AAEtB,SAASC,aAAa,QAAQ;AAC9B,SAASC,kBAAkB,QAAQ;AASnC,OAAO,MAAMC,OAAA,GAAUH,KAAA,CAAM,gBAC3BI,aAAyD;EAEzD,MAAMC,MAAA,GAAS,MAAMD,aAAA;EACrB,MAAME,OAAA,GAAU,MAAML,aAAA,CAAc;IAAEI;EAAO;EAE7C,MAAMT,OAAA,GAAU,MAAMC,UAAA;EACtB,MAAMU,OAAA,GAAUR,YAAA,CAAaH,OAAA;EAE7B,MAAMY,YAAA,GAAeN,kBAAA,CAAmB;IACtCG,MAAA;IACAE,OAAA;IACAX;EACF;EAEA,MAAMa,IAAA,GAAmB,MAAMd,QAAA,CAAS;IACtCU,MAAA,EAAQA,MAAA,CAAOI,IAAI;IACnBC,OAAA,EAAS;IACTC,QAAA,EAAUH;EACZ;EAEA,MAAMI,GAAA,GAAM,MAAMd,cAAA,CAChB;IACEc,GAAA,EAAK;MACHhB,OAAA;MACAiB,IAAA,EAAMjB,OAAA,CAAQkB,GAAG,CAAC;MAClBL,IAAA,EAAMA,IAAA;MACNM,GAAA,EAAK,GAAGT,OAAA,CAAQD,MAAM,CAACW,SAAS;IAClC;EACF,GACAV,OAAA;EAGF,MAAM;IAAEW,WAAW;IAAEC;EAAI,CAAE,GAAG,MAAMZ,OAAA,CAAQa,IAAI,CAAC;IAAEvB,OAAA;IAASgB;EAAI;EAEhE,OAAO;IACLH,IAAA;IACAQ,WAAA;IACAL,GAAA;IACAM;EACF;AACF","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import type { DocumentPermissions, DocumentPreferences, FormState, LoginWithUsernameOptions } from 'payload';
1
+ import type { DocumentPreferences, FormState, LoginWithUsernameOptions, SanitizedDocumentPermissions } from 'payload';
2
2
  import React from 'react';
3
3
  export declare const CreateFirstUserClient: React.FC<{
4
- docPermissions: DocumentPermissions;
4
+ docPermissions: SanitizedDocumentPermissions;
5
5
  docPreferences: DocumentPreferences;
6
6
  initialState: FormState;
7
7
  loginWithUsername?: false | LoginWithUsernameOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,wBAAwB,EACzB,MAAM,SAAS,CAAA;AAehB,OAAO,KAAoB,MAAM,OAAO,CAAA;AAExC,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,cAAc,EAAE,mBAAmB,CAAA;IACnC,cAAc,EAAE,mBAAmB,CAAA;IACnC,YAAY,EAAE,SAAS,CAAA;IACvB,iBAAiB,CAAC,EAAE,KAAK,GAAG,wBAAwB,CAAA;IACpD,QAAQ,EAAE,MAAM,CAAA;CACjB,CA2FA,CAAA"}
1
+ {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACnB,SAAS,EACT,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,SAAS,CAAA;AAehB,OAAO,KAAoB,MAAM,OAAO,CAAA;AAExC,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,cAAc,EAAE,4BAA4B,CAAA;IAC5C,cAAc,EAAE,mBAAmB,CAAA;IACnC,YAAY,EAAE,SAAS,CAAA;IACvB,iBAAiB,CAAC,EAAE,KAAK,GAAG,wBAAwB,CAAA;IACpD,QAAQ,EAAE,MAAM,CAAA;CACjB,CA2FA,CAAA"}
@@ -89,7 +89,7 @@ export const CreateFirstUserClient = ({
89
89
  parentIndexPath: "",
90
90
  parentPath: "",
91
91
  parentSchemaPath: userSlug,
92
- permissions: null,
92
+ permissions: true,
93
93
  readOnly: false
94
94
  }), /*#__PURE__*/_jsx(FormSubmit, {
95
95
  size: "large",
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["ConfirmPasswordField","EmailAndUsernameFields","Form","FormSubmit","PasswordField","RenderFields","useAuth","useConfig","useServerFunctions","useTranslation","abortAndIgnore","React","useEffect","CreateFirstUserClient","docPermissions","docPreferences","initialState","loginWithUsername","userSlug","config","routes","admin","api","apiRoute","serverURL","getEntityConfig","getFormState","t","setUser","formStateAbortControllerRef","useRef","collectionConfig","collectionSlug","onChange","useCallback","formState","prevFormState","current","controller","AbortController","response","operation","schemaPath","signal","state","handleFirstRegister","data","_jsxs","action","method","onSuccess","redirect","validationOperation","_jsx","className","readOnly","autoComplete","field","name","label","required","path","fields","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","size"],"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps, UserWithToken } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n DocumentPermissions,\n DocumentPreferences,\n FormState,\n LoginWithUsernameOptions,\n} from 'payload'\n\nimport {\n ConfirmPasswordField,\n EmailAndUsernameFields,\n Form,\n FormSubmit,\n PasswordField,\n RenderFields,\n useAuth,\n useConfig,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport React, { useEffect } from 'react'\n\nexport const CreateFirstUserClient: React.FC<{\n docPermissions: DocumentPermissions\n docPreferences: DocumentPreferences\n initialState: FormState\n loginWithUsername?: false | LoginWithUsernameOptions\n userSlug: string\n}> = ({ docPermissions, docPreferences, initialState, loginWithUsername, userSlug }) => {\n const {\n config: {\n routes: { admin, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { getFormState } = useServerFunctions()\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const formStateAbortControllerRef = React.useRef<AbortController>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug }) as ClientCollectionConfig\n\n const onChange: FormProps['onChange'][0] = React.useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(formStateAbortControllerRef.current)\n\n const controller = new AbortController()\n formStateAbortControllerRef.current = controller\n\n const response = await getFormState({\n collectionSlug: userSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n operation: 'create',\n schemaPath: `_${userSlug}.auth`,\n signal: controller.signal,\n })\n\n if (response && response.state) {\n return response.state\n }\n },\n [userSlug, getFormState, docPermissions, docPreferences],\n )\n\n const handleFirstRegister = (data: UserWithToken) => {\n setUser(data)\n }\n\n useEffect(() => {\n return () => {\n abortAndIgnore(formStateAbortControllerRef.current)\n }\n }, [])\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={initialState}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={handleFirstRegister}\n redirect={admin}\n validationOperation=\"create\"\n >\n <EmailAndUsernameFields\n className=\"emailAndUsername\"\n loginWithUsername={loginWithUsername}\n operation=\"create\"\n readOnly={false}\n t={t}\n />\n <PasswordField\n autoComplete=\"off\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n path=\"password\"\n />\n <ConfirmPasswordField />\n <RenderFields\n fields={collectionConfig.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={userSlug}\n permissions={null}\n readOnly={false}\n />\n <FormSubmit size=\"large\">{t('general:create')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["ConfirmPasswordField","EmailAndUsernameFields","Form","FormSubmit","PasswordField","RenderFields","useAuth","useConfig","useServerFunctions","useTranslation","abortAndIgnore","React","useEffect","CreateFirstUserClient","docPermissions","docPreferences","initialState","loginWithUsername","userSlug","config","routes","admin","api","apiRoute","serverURL","getEntityConfig","getFormState","t","setUser","formStateAbortControllerRef","useRef","collectionConfig","collectionSlug","onChange","useCallback","formState","prevFormState","current","controller","AbortController","response","operation","schemaPath","signal","state","handleFirstRegister","data","_jsxs","action","method","onSuccess","redirect","validationOperation","_jsx","className","readOnly","autoComplete","field","name","label","required","path","fields","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","size"],"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps, UserWithToken } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n DocumentPreferences,\n FormState,\n LoginWithUsernameOptions,\n SanitizedDocumentPermissions,\n} from 'payload'\n\nimport {\n ConfirmPasswordField,\n EmailAndUsernameFields,\n Form,\n FormSubmit,\n PasswordField,\n RenderFields,\n useAuth,\n useConfig,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport React, { useEffect } from 'react'\n\nexport const CreateFirstUserClient: React.FC<{\n docPermissions: SanitizedDocumentPermissions\n docPreferences: DocumentPreferences\n initialState: FormState\n loginWithUsername?: false | LoginWithUsernameOptions\n userSlug: string\n}> = ({ docPermissions, docPreferences, initialState, loginWithUsername, userSlug }) => {\n const {\n config: {\n routes: { admin, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { getFormState } = useServerFunctions()\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const formStateAbortControllerRef = React.useRef<AbortController>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug }) as ClientCollectionConfig\n\n const onChange: FormProps['onChange'][0] = React.useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(formStateAbortControllerRef.current)\n\n const controller = new AbortController()\n formStateAbortControllerRef.current = controller\n\n const response = await getFormState({\n collectionSlug: userSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n operation: 'create',\n schemaPath: `_${userSlug}.auth`,\n signal: controller.signal,\n })\n\n if (response && response.state) {\n return response.state\n }\n },\n [userSlug, getFormState, docPermissions, docPreferences],\n )\n\n const handleFirstRegister = (data: UserWithToken) => {\n setUser(data)\n }\n\n useEffect(() => {\n return () => {\n abortAndIgnore(formStateAbortControllerRef.current)\n }\n }, [])\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={initialState}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={handleFirstRegister}\n redirect={admin}\n validationOperation=\"create\"\n >\n <EmailAndUsernameFields\n className=\"emailAndUsername\"\n loginWithUsername={loginWithUsername}\n operation=\"create\"\n readOnly={false}\n t={t}\n />\n <PasswordField\n autoComplete=\"off\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n path=\"password\"\n />\n <ConfirmPasswordField />\n <RenderFields\n fields={collectionConfig.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={userSlug}\n permissions={true}\n readOnly={false}\n />\n <FormSubmit size=\"large\">{t('general:create')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { groupNavItems } from '@payloadcms/ui/shared';
2
- import type { ClientUser, Permissions, ServerProps, VisibleEntities } from 'payload';
2
+ import type { ClientUser, SanitizedPermissions, ServerProps, VisibleEntities } from 'payload';
3
3
  import React from 'react';
4
4
  import './index.scss';
5
5
  export type DashboardProps = {
@@ -14,7 +14,7 @@ export type DashboardProps = {
14
14
  }>;
15
15
  Link: React.ComponentType<any>;
16
16
  navGroups?: ReturnType<typeof groupNavItems>;
17
- permissions: Permissions;
17
+ permissions: SanitizedPermissions;
18
18
  visibleEntities: VisibleEntities;
19
19
  } & ServerProps;
20
20
  export declare const DefaultDashboard: React.FC<DashboardProps>;
@@ -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,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAMpF,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,cAAc,GAAG;IAC3B,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,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC9B,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IAC5C,WAAW,EAAE,WAAW,CAAA;IACxB,eAAe,EAAE,eAAe,CAAA;CACjC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAmKrD,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,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAM7F,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,cAAc,GAAG;IAC3B,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,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC9B,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IAC5C,WAAW,EAAE,oBAAoB,CAAA;IACjC,eAAe,EAAE,eAAe,CAAA;CACjC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAmKrD,CAAA"}
@@ -89,7 +89,7 @@ export const DefaultDashboard = props => {
89
89
  adminRoute,
90
90
  path: `/collections/${slug}/create`
91
91
  });
92
- hasCreatePermission = permissions?.collections?.[slug]?.create?.permission;
92
+ hasCreatePermission = permissions?.collections?.[slug]?.create;
93
93
  }
94
94
  if (type === EntityType.global) {
95
95
  title = getTranslation(label, i18n);
@@ -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","Link","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","permission","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, Permissions, ServerProps, VisibleEntities } 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 DashboardProps = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }>\n Link: React.ComponentType<any>\n navGroups?: ReturnType<typeof groupNavItems>\n permissions: Permissions\n visibleEntities: VisibleEntities\n} & ServerProps\n\nexport const DefaultDashboard: React.FC<DashboardProps> = (props) => {\n const {\n globalData,\n i18n,\n i18n: { t },\n Link,\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 }}\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?.permission\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 Link={Link}\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${slug}`}\n Link={Link}\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 }}\n />\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","Link","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, SanitizedPermissions, ServerProps, VisibleEntities } 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 DashboardProps = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }>\n Link: React.ComponentType<any>\n navGroups?: ReturnType<typeof groupNavItems>\n permissions: SanitizedPermissions\n visibleEntities: VisibleEntities\n} & ServerProps\n\nexport const DefaultDashboard: React.FC<DashboardProps> = (props) => {\n const {\n globalData,\n i18n,\n i18n: { t },\n Link,\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 }}\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 Link={Link}\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${slug}`}\n Link={Link}\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 }}\n />\n )}\n </Gutter>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Dashboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAIrD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0H9C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Dashboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAIrD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyH9C,CAAA"}
@@ -27,8 +27,8 @@ export const Dashboard = async ({
27
27
  visibleEntities
28
28
  } = initPageResult;
29
29
  const CustomDashboardComponent = config.admin.components?.views?.Dashboard;
30
- const collections = config.collections.filter(collection => permissions?.collections?.[collection.slug]?.read?.permission && visibleEntities.collections.includes(collection.slug));
31
- const globals = config.globals.filter(global => permissions?.globals?.[global.slug]?.read?.permission && visibleEntities.globals.includes(global.slug));
30
+ const collections = config.collections.filter(collection => permissions?.collections?.[collection.slug]?.read && visibleEntities.collections.includes(collection.slug));
31
+ const globals = config.globals.filter(global => permissions?.globals?.[global.slug]?.read && visibleEntities.globals.includes(global.slug));
32
32
  // Query locked global documents only if there are globals in the config
33
33
  let globalData = [];
34
34
  if (config.globals.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["HydrateAuthProvider","SetStepNav","RenderServerComponent","EntityType","groupNavItems","LinkImport","React","Fragment","DefaultDashboard","generateDashboardMetadata","Link","default","Dashboard","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","visibleEntities","CustomDashboardComponent","admin","components","views","collections","filter","collection","slug","read","permission","includes","globals","global","globalData","length","lockedDocuments","find","depth","overrideAccess","pagination","where","globalSlug","exists","map","lockDurationDefault","lockDuration","lockDocuments","duration","lockedDoc","docs","doc","data","_isLocked","_lastEditedAt","updatedAt","_userEditing","value","navGroups","entityToGroup","type","entity","_jsxs","_jsx","nav","clientProps","Component","Fallback","importMap","serverProps"],"sources":["../../../src/views/Dashboard/index.tsx"],"sourcesContent":["import type { EntityToGroup } from '@payloadcms/ui/shared'\nimport type { AdminViewProps } from 'payload'\n\nimport { HydrateAuthProvider, SetStepNav } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType, groupNavItems } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment } from 'react'\n\nimport { DefaultDashboard } from './Default/index.js'\n\nexport { generateDashboardMetadata } from './meta.js'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const Dashboard: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n locale,\n permissions,\n req: {\n i18n,\n payload: { config },\n payload,\n user,\n },\n req,\n visibleEntities,\n } = initPageResult\n\n const CustomDashboardComponent = config.admin.components?.views?.Dashboard\n\n const collections = config.collections.filter(\n (collection) =>\n permissions?.collections?.[collection.slug]?.read?.permission &&\n visibleEntities.collections.includes(collection.slug),\n )\n\n const globals = config.globals.filter(\n (global) =>\n permissions?.globals?.[global.slug]?.read?.permission &&\n visibleEntities.globals.includes(global.slug),\n )\n\n // Query locked global documents only if there are globals in the config\n let globalData = []\n\n if (config.globals.length > 0) {\n const lockedDocuments = await payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n globalSlug: {\n exists: true,\n },\n },\n })\n\n // Map over globals to include `lockDuration` and lock data for each global slug\n globalData = config.globals.map((global) => {\n const lockDurationDefault = 300\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : lockDurationDefault\n\n const lockedDoc = lockedDocuments.docs.find((doc) => doc.globalSlug === global.slug)\n\n return {\n slug: global.slug,\n data: {\n _isLocked: !!lockedDoc,\n _lastEditedAt: lockedDoc?.updatedAt ?? null,\n _userEditing: lockedDoc?.user?.value ?? null,\n },\n lockDuration,\n }\n })\n }\n\n const navGroups = groupNavItems(\n [\n ...(collections.map((collection) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.collection,\n entity: collection,\n }\n\n return entityToGroup\n }) ?? []),\n ...(globals.map((global) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.global,\n entity: global,\n }\n\n return entityToGroup\n }) ?? []),\n ],\n permissions,\n i18n,\n )\n\n return (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <SetStepNav nav={[]} />\n <RenderServerComponent\n clientProps={{\n Link,\n locale,\n }}\n Component={CustomDashboardComponent}\n Fallback={DefaultDashboard}\n importMap={payload.importMap}\n serverProps={{\n globalData,\n i18n,\n Link,\n locale,\n navGroups,\n params,\n payload,\n permissions,\n searchParams,\n user,\n visibleEntities,\n }}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["HydrateAuthProvider","SetStepNav","RenderServerComponent","EntityType","groupNavItems","LinkImport","React","Fragment","DefaultDashboard","generateDashboardMetadata","Link","default","Dashboard","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","visibleEntities","CustomDashboardComponent","admin","components","views","collections","filter","collection","slug","read","includes","globals","global","globalData","length","lockedDocuments","find","depth","overrideAccess","pagination","where","globalSlug","exists","map","lockDurationDefault","lockDuration","lockDocuments","duration","lockedDoc","docs","doc","data","_isLocked","_lastEditedAt","updatedAt","_userEditing","value","navGroups","entityToGroup","type","entity","_jsxs","_jsx","nav","clientProps","Component","Fallback","importMap","serverProps"],"sources":["../../../src/views/Dashboard/index.tsx"],"sourcesContent":["import type { EntityToGroup } from '@payloadcms/ui/shared'\nimport type { AdminViewProps } from 'payload'\n\nimport { HydrateAuthProvider, SetStepNav } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType, groupNavItems } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment } from 'react'\n\nimport { DefaultDashboard } from './Default/index.js'\n\nexport { generateDashboardMetadata } from './meta.js'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const Dashboard: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n locale,\n permissions,\n req: {\n i18n,\n payload: { config },\n payload,\n user,\n },\n req,\n visibleEntities,\n } = initPageResult\n\n const CustomDashboardComponent = config.admin.components?.views?.Dashboard\n\n const collections = config.collections.filter(\n (collection) =>\n permissions?.collections?.[collection.slug]?.read &&\n visibleEntities.collections.includes(collection.slug),\n )\n\n const globals = config.globals.filter(\n (global) =>\n permissions?.globals?.[global.slug]?.read && visibleEntities.globals.includes(global.slug),\n )\n\n // Query locked global documents only if there are globals in the config\n let globalData = []\n\n if (config.globals.length > 0) {\n const lockedDocuments = await payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n globalSlug: {\n exists: true,\n },\n },\n })\n\n // Map over globals to include `lockDuration` and lock data for each global slug\n globalData = config.globals.map((global) => {\n const lockDurationDefault = 300\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : lockDurationDefault\n\n const lockedDoc = lockedDocuments.docs.find((doc) => doc.globalSlug === global.slug)\n\n return {\n slug: global.slug,\n data: {\n _isLocked: !!lockedDoc,\n _lastEditedAt: lockedDoc?.updatedAt ?? null,\n _userEditing: lockedDoc?.user?.value ?? null,\n },\n lockDuration,\n }\n })\n }\n\n const navGroups = groupNavItems(\n [\n ...(collections.map((collection) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.collection,\n entity: collection,\n }\n\n return entityToGroup\n }) ?? []),\n ...(globals.map((global) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.global,\n entity: global,\n }\n\n return entityToGroup\n }) ?? []),\n ],\n permissions,\n i18n,\n )\n\n return (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <SetStepNav nav={[]} />\n <RenderServerComponent\n clientProps={{\n Link,\n locale,\n }}\n Component={CustomDashboardComponent}\n Fallback={DefaultDashboard}\n importMap={payload.importMap}\n serverProps={{\n globalData,\n i18n,\n Link,\n locale,\n navGroups,\n params,\n payload,\n permissions,\n searchParams,\n user,\n visibleEntities,\n }}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { Data, DocumentPermissions, PayloadRequest, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload';
1
+ import type { Data, PayloadRequest, SanitizedCollectionConfig, SanitizedDocumentPermissions, SanitizedGlobalConfig } from 'payload';
2
2
  export declare const getDocumentPermissions: (args: {
3
3
  collectionConfig?: SanitizedCollectionConfig;
4
4
  data: Data;
@@ -6,7 +6,7 @@ export declare const getDocumentPermissions: (args: {
6
6
  id?: number | string;
7
7
  req: PayloadRequest;
8
8
  }) => Promise<{
9
- docPermissions: DocumentPermissions;
9
+ docPermissions: SanitizedDocumentPermissions;
10
10
  hasPublishPermission: boolean;
11
11
  hasSavePermission: boolean;
12
12
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"getDocumentPermissions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getDocumentPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAQhB,eAAO,MAAM,sBAAsB,SAAgB;IACjD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,IAAI,EAAE,IAAI,CAAA;IACV,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC;IACV,cAAc,EAAE,mBAAmB,CAAA;IACnC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,iBAAiB,EAAE,OAAO,CAAA;CAC3B,CAqFA,CAAA"}
1
+ {"version":3,"file":"getDocumentPermissions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getDocumentPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EAEJ,cAAc,EACd,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAQhB,eAAO,MAAM,sBAAsB,SAAgB;IACjD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,IAAI,EAAE,IAAI,CAAA;IACV,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC;IACV,cAAc,EAAE,4BAA4B,CAAA;IAC5C,oBAAoB,EAAE,OAAO,CAAA;IAC7B,iBAAiB,EAAE,OAAO,CAAA;CAC3B,CAyFA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { hasSavePermission as getHasSavePermission, isEditing as getIsEditing } from '@payloadcms/ui/shared';
2
- import { docAccessOperation, docAccessOperationGlobal } from 'payload';
2
+ import { docAccessOperation, docAccessOperationGlobal, sanitizePermissions } from 'payload';
3
3
  export const getDocumentPermissions = async args => {
4
4
  const {
5
5
  id,
@@ -73,9 +73,14 @@ export const getDocumentPermissions = async args => {
73
73
  req.payload.logger.error(error);
74
74
  }
75
75
  }
76
+ // TODO: do this in a better way. Only doing this bc this is how the fn was written (mutates the original object)
77
+ const sanitizedDocPermissions = {
78
+ ...docPermissions
79
+ };
80
+ sanitizePermissions(sanitizedDocPermissions);
76
81
  const hasSavePermission = getHasSavePermission({
77
82
  collectionSlug: collectionConfig?.slug,
78
- docPermissions,
83
+ docPermissions: sanitizedDocPermissions,
79
84
  globalSlug: globalConfig?.slug,
80
85
  isEditing: getIsEditing({
81
86
  id,
@@ -84,7 +89,7 @@ export const getDocumentPermissions = async args => {
84
89
  })
85
90
  });
86
91
  return {
87
- docPermissions,
92
+ docPermissions: sanitizedDocPermissions,
88
93
  hasPublishPermission,
89
94
  hasSavePermission
90
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getDocumentPermissions.js","names":["hasSavePermission","getHasSavePermission","isEditing","getIsEditing","docAccessOperation","docAccessOperationGlobal","getDocumentPermissions","args","id","collectionConfig","data","globalConfig","req","docPermissions","hasPublishPermission","toString","collection","config","_status","versions","drafts","then","update","permission","error","payload","logger","collectionSlug","slug","globalSlug"],"sources":["../../../src/views/Document/getDocumentPermissions.tsx"],"sourcesContent":["import type {\n Data,\n DocumentPermissions,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport {\n hasSavePermission as getHasSavePermission,\n isEditing as getIsEditing,\n} from '@payloadcms/ui/shared'\nimport { docAccessOperation, docAccessOperationGlobal } from 'payload'\n\nexport const getDocumentPermissions = async (args: {\n collectionConfig?: SanitizedCollectionConfig\n data: Data\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n req: PayloadRequest\n}): Promise<{\n docPermissions: DocumentPermissions\n hasPublishPermission: boolean\n hasSavePermission: boolean\n}> => {\n const { id, collectionConfig, data = {}, globalConfig, req } = args\n\n let docPermissions: DocumentPermissions\n let hasPublishPermission = false\n\n if (collectionConfig) {\n try {\n docPermissions = await docAccessOperation({\n id: id?.toString(),\n collection: {\n config: collectionConfig,\n },\n req: {\n ...req,\n data: {\n ...data,\n _status: 'draft',\n },\n },\n })\n\n if (collectionConfig.versions?.drafts) {\n hasPublishPermission = await docAccessOperation({\n id: id?.toString(),\n collection: {\n config: collectionConfig,\n },\n req: {\n ...req,\n data: {\n ...data,\n _status: 'published',\n },\n },\n }).then(({ update }) => update?.permission)\n }\n } catch (error) {\n req.payload.logger.error(error)\n }\n }\n\n if (globalConfig) {\n try {\n docPermissions = await docAccessOperationGlobal({\n globalConfig,\n req: {\n ...req,\n data,\n },\n })\n\n if (globalConfig.versions?.drafts) {\n hasPublishPermission = await docAccessOperationGlobal({\n globalConfig,\n req: {\n ...req,\n data: {\n ...data,\n _status: 'published',\n },\n },\n }).then(({ update }) => update?.permission)\n }\n } catch (error) {\n req.payload.logger.error(error)\n }\n }\n\n const hasSavePermission = getHasSavePermission({\n collectionSlug: collectionConfig?.slug,\n docPermissions,\n globalSlug: globalConfig?.slug,\n isEditing: getIsEditing({\n id,\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n }),\n })\n\n return {\n docPermissions,\n hasPublishPermission,\n hasSavePermission,\n }\n}\n"],"mappings":"AAQA,SACEA,iBAAA,IAAqBC,oBAAoB,EACzCC,SAAA,IAAaC,YAAY,QACpB;AACP,SAASC,kBAAkB,EAAEC,wBAAwB,QAAQ;AAE7D,OAAO,MAAMC,sBAAA,GAAyB,MAAOC,IAAA;EAW3C,MAAM;IAAEC,EAAE;IAAEC,gBAAgB;IAAEC,IAAA,GAAO,CAAC,CAAC;IAAEC,YAAY;IAAEC;EAAG,CAAE,GAAGL,IAAA;EAE/D,IAAIM,cAAA;EACJ,IAAIC,oBAAA,GAAuB;EAE3B,IAAIL,gBAAA,EAAkB;IACpB,IAAI;MACFI,cAAA,GAAiB,MAAMT,kBAAA,CAAmB;QACxCI,EAAA,EAAIA,EAAA,EAAIO,QAAA;QACRC,UAAA,EAAY;UACVC,MAAA,EAAQR;QACV;QACAG,GAAA,EAAK;UACH,GAAGA,GAAG;UACNF,IAAA,EAAM;YACJ,GAAGA,IAAI;YACPQ,OAAA,EAAS;UACX;QACF;MACF;MAEA,IAAIT,gBAAA,CAAiBU,QAAQ,EAAEC,MAAA,EAAQ;QACrCN,oBAAA,GAAuB,MAAMV,kBAAA,CAAmB;UAC9CI,EAAA,EAAIA,EAAA,EAAIO,QAAA;UACRC,UAAA,EAAY;YACVC,MAAA,EAAQR;UACV;UACAG,GAAA,EAAK;YACH,GAAGA,GAAG;YACNF,IAAA,EAAM;cACJ,GAAGA,IAAI;cACPQ,OAAA,EAAS;YACX;UACF;QACF,GAAGG,IAAI,CAAC,CAAC;UAAEC;QAAM,CAAE,KAAKA,MAAA,EAAQC,UAAA;MAClC;IACF,EAAE,OAAOC,KAAA,EAAO;MACdZ,GAAA,CAAIa,OAAO,CAACC,MAAM,CAACF,KAAK,CAACA,KAAA;IAC3B;EACF;EAEA,IAAIb,YAAA,EAAc;IAChB,IAAI;MACFE,cAAA,GAAiB,MAAMR,wBAAA,CAAyB;QAC9CM,YAAA;QACAC,GAAA,EAAK;UACH,GAAGA,GAAG;UACNF;QACF;MACF;MAEA,IAAIC,YAAA,CAAaQ,QAAQ,EAAEC,MAAA,EAAQ;QACjCN,oBAAA,GAAuB,MAAMT,wBAAA,CAAyB;UACpDM,YAAA;UACAC,GAAA,EAAK;YACH,GAAGA,GAAG;YACNF,IAAA,EAAM;cACJ,GAAGA,IAAI;cACPQ,OAAA,EAAS;YACX;UACF;QACF,GAAGG,IAAI,CAAC,CAAC;UAAEC;QAAM,CAAE,KAAKA,MAAA,EAAQC,UAAA;MAClC;IACF,EAAE,OAAOC,KAAA,EAAO;MACdZ,GAAA,CAAIa,OAAO,CAACC,MAAM,CAACF,KAAK,CAACA,KAAA;IAC3B;EACF;EAEA,MAAMxB,iBAAA,GAAoBC,oBAAA,CAAqB;IAC7C0B,cAAA,EAAgBlB,gBAAA,EAAkBmB,IAAA;IAClCf,cAAA;IACAgB,UAAA,EAAYlB,YAAA,EAAciB,IAAA;IAC1B1B,SAAA,EAAWC,YAAA,CAAa;MACtBK,EAAA;MACAmB,cAAA,EAAgBlB,gBAAA,EAAkBmB,IAAA;MAClCC,UAAA,EAAYlB,YAAA,EAAciB;IAC5B;EACF;EAEA,OAAO;IACLf,cAAA;IACAC,oBAAA;IACAd;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"getDocumentPermissions.js","names":["hasSavePermission","getHasSavePermission","isEditing","getIsEditing","docAccessOperation","docAccessOperationGlobal","sanitizePermissions","getDocumentPermissions","args","id","collectionConfig","data","globalConfig","req","docPermissions","hasPublishPermission","toString","collection","config","_status","versions","drafts","then","update","permission","error","payload","logger","sanitizedDocPermissions","collectionSlug","slug","globalSlug"],"sources":["../../../src/views/Document/getDocumentPermissions.tsx"],"sourcesContent":["import type {\n Data,\n DocumentPermissions,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport {\n hasSavePermission as getHasSavePermission,\n isEditing as getIsEditing,\n} from '@payloadcms/ui/shared'\nimport { docAccessOperation, docAccessOperationGlobal, sanitizePermissions } from 'payload'\n\nexport const getDocumentPermissions = async (args: {\n collectionConfig?: SanitizedCollectionConfig\n data: Data\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n req: PayloadRequest\n}): Promise<{\n docPermissions: SanitizedDocumentPermissions\n hasPublishPermission: boolean\n hasSavePermission: boolean\n}> => {\n const { id, collectionConfig, data = {}, globalConfig, req } = args\n\n let docPermissions: DocumentPermissions\n let hasPublishPermission = false\n\n if (collectionConfig) {\n try {\n docPermissions = await docAccessOperation({\n id: id?.toString(),\n collection: {\n config: collectionConfig,\n },\n req: {\n ...req,\n data: {\n ...data,\n _status: 'draft',\n },\n },\n })\n\n if (collectionConfig.versions?.drafts) {\n hasPublishPermission = await docAccessOperation({\n id: id?.toString(),\n collection: {\n config: collectionConfig,\n },\n req: {\n ...req,\n data: {\n ...data,\n _status: 'published',\n },\n },\n }).then(({ update }) => update?.permission)\n }\n } catch (error) {\n req.payload.logger.error(error)\n }\n }\n\n if (globalConfig) {\n try {\n docPermissions = await docAccessOperationGlobal({\n globalConfig,\n req: {\n ...req,\n data,\n },\n })\n\n if (globalConfig.versions?.drafts) {\n hasPublishPermission = await docAccessOperationGlobal({\n globalConfig,\n req: {\n ...req,\n data: {\n ...data,\n _status: 'published',\n },\n },\n }).then(({ update }) => update?.permission)\n }\n } catch (error) {\n req.payload.logger.error(error)\n }\n }\n\n // TODO: do this in a better way. Only doing this bc this is how the fn was written (mutates the original object)\n const sanitizedDocPermissions = { ...docPermissions } as any as SanitizedDocumentPermissions\n sanitizePermissions(sanitizedDocPermissions)\n\n const hasSavePermission = getHasSavePermission({\n collectionSlug: collectionConfig?.slug,\n docPermissions: sanitizedDocPermissions,\n globalSlug: globalConfig?.slug,\n isEditing: getIsEditing({\n id,\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n }),\n })\n\n return {\n docPermissions: sanitizedDocPermissions,\n hasPublishPermission,\n hasSavePermission,\n }\n}\n"],"mappings":"AASA,SACEA,iBAAA,IAAqBC,oBAAoB,EACzCC,SAAA,IAAaC,YAAY,QACpB;AACP,SAASC,kBAAkB,EAAEC,wBAAwB,EAAEC,mBAAmB,QAAQ;AAElF,OAAO,MAAMC,sBAAA,GAAyB,MAAOC,IAAA;EAW3C,MAAM;IAAEC,EAAE;IAAEC,gBAAgB;IAAEC,IAAA,GAAO,CAAC,CAAC;IAAEC,YAAY;IAAEC;EAAG,CAAE,GAAGL,IAAA;EAE/D,IAAIM,cAAA;EACJ,IAAIC,oBAAA,GAAuB;EAE3B,IAAIL,gBAAA,EAAkB;IACpB,IAAI;MACFI,cAAA,GAAiB,MAAMV,kBAAA,CAAmB;QACxCK,EAAA,EAAIA,EAAA,EAAIO,QAAA;QACRC,UAAA,EAAY;UACVC,MAAA,EAAQR;QACV;QACAG,GAAA,EAAK;UACH,GAAGA,GAAG;UACNF,IAAA,EAAM;YACJ,GAAGA,IAAI;YACPQ,OAAA,EAAS;UACX;QACF;MACF;MAEA,IAAIT,gBAAA,CAAiBU,QAAQ,EAAEC,MAAA,EAAQ;QACrCN,oBAAA,GAAuB,MAAMX,kBAAA,CAAmB;UAC9CK,EAAA,EAAIA,EAAA,EAAIO,QAAA;UACRC,UAAA,EAAY;YACVC,MAAA,EAAQR;UACV;UACAG,GAAA,EAAK;YACH,GAAGA,GAAG;YACNF,IAAA,EAAM;cACJ,GAAGA,IAAI;cACPQ,OAAA,EAAS;YACX;UACF;QACF,GAAGG,IAAI,CAAC,CAAC;UAAEC;QAAM,CAAE,KAAKA,MAAA,EAAQC,UAAA;MAClC;IACF,EAAE,OAAOC,KAAA,EAAO;MACdZ,GAAA,CAAIa,OAAO,CAACC,MAAM,CAACF,KAAK,CAACA,KAAA;IAC3B;EACF;EAEA,IAAIb,YAAA,EAAc;IAChB,IAAI;MACFE,cAAA,GAAiB,MAAMT,wBAAA,CAAyB;QAC9CO,YAAA;QACAC,GAAA,EAAK;UACH,GAAGA,GAAG;UACNF;QACF;MACF;MAEA,IAAIC,YAAA,CAAaQ,QAAQ,EAAEC,MAAA,EAAQ;QACjCN,oBAAA,GAAuB,MAAMV,wBAAA,CAAyB;UACpDO,YAAA;UACAC,GAAA,EAAK;YACH,GAAGA,GAAG;YACNF,IAAA,EAAM;cACJ,GAAGA,IAAI;cACPQ,OAAA,EAAS;YACX;UACF;QACF,GAAGG,IAAI,CAAC,CAAC;UAAEC;QAAM,CAAE,KAAKA,MAAA,EAAQC,UAAA;MAClC;IACF,EAAE,OAAOC,KAAA,EAAO;MACdZ,GAAA,CAAIa,OAAO,CAACC,MAAM,CAACF,KAAK,CAACA,KAAA;IAC3B;EACF;EAEA;EACA,MAAMG,uBAAA,GAA0B;IAAE,GAAGd;EAAe;EACpDR,mBAAA,CAAoBsB,uBAAA;EAEpB,MAAM5B,iBAAA,GAAoBC,oBAAA,CAAqB;IAC7C4B,cAAA,EAAgBnB,gBAAA,EAAkBoB,IAAA;IAClChB,cAAA,EAAgBc,uBAAA;IAChBG,UAAA,EAAYnB,YAAA,EAAckB,IAAA;IAC1B5B,SAAA,EAAWC,YAAA,CAAa;MACtBM,EAAA;MACAoB,cAAA,EAAgBnB,gBAAA,EAAkBoB,IAAA;MAClCC,UAAA,EAAYnB,YAAA,EAAckB;IAC5B;EACF;EAEA,OAAO;IACLhB,cAAA,EAAgBc,uBAAA;IAChBb,oBAAA;IACAf;EACF;AACF","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import type { DocumentPermissions, Payload, SanitizedCollectionConfig, SanitizedGlobalConfig, TypedUser } from 'payload';
1
+ import type { Payload, SanitizedCollectionConfig, SanitizedDocumentPermissions, SanitizedGlobalConfig, TypedUser } from 'payload';
2
2
  type Args = {
3
3
  collectionConfig?: SanitizedCollectionConfig;
4
- docPermissions: DocumentPermissions;
4
+ docPermissions: SanitizedDocumentPermissions;
5
5
  globalConfig?: SanitizedGlobalConfig;
6
6
  id?: number | string;
7
7
  locale?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,OAAO,EACP,yBAAyB,EACzB,qBAAqB,EACrB,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,cAAc,EAAE,mBAAmB,CAAA;IACnC,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAIF,eAAO,MAAM,WAAW,mFAQrB,IAAI,KAAG,MA4MT,CAAA"}
1
+ {"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,cAAc,EAAE,4BAA4B,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAIF,eAAO,MAAM,WAAW,mFAQrB,IAAI,KAAG,MA4MT,CAAA"}
@@ -16,7 +16,7 @@ export const getVersions = async ({
16
16
  let versionCount = 0;
17
17
  const entityConfig = collectionConfig || globalConfig;
18
18
  const versionsConfig = entityConfig?.versions;
19
- const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions?.permission);
19
+ const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions);
20
20
  if (!shouldFetchVersions) {
21
21
  const hasPublishedDoc = Boolean(collectionConfig && id || globalConfig);
22
22
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"getVersions.js","names":["getVersions","id","collectionConfig","docPermissions","globalConfig","locale","payload","user","publishedQuery","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","shouldFetchVersions","Boolean","readVersions","permission","drafts","find","collection","slug","depth","undefined","where","and","or","_status","equals","exists","docs","autosave","mostRecentVersion","findVersions","limit","parent","updatedAt","totalDocs","countVersions","greater_than","findGlobal","findGlobalVersions","select","countGlobalVersions","global"],"sources":["../../../src/views/Document/getVersions.ts"],"sourcesContent":["import type {\n DocumentPermissions,\n Payload,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n docPermissions: DocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\nexport const getVersions = async ({\n id,\n collectionConfig,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n let publishedQuery\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions?.permission)\n\n if (!shouldFetchVersions) {\n const hasPublishedDoc = Boolean((collectionConfig && id) || globalConfig)\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n locale: locale || undefined,\n user,\n where: {\n and: [\n {\n or: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n _status: {\n exists: false,\n },\n },\n ],\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (publishedQuery.docs?.[0]) {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery.docs?.[0]?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.docs[0].updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n }))\n }\n\n if (globalConfig) {\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n user,\n })\n\n if (publishedQuery?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n where: {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getVersions.js","names":["getVersions","id","collectionConfig","docPermissions","globalConfig","locale","payload","user","publishedQuery","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","shouldFetchVersions","Boolean","readVersions","drafts","find","collection","slug","depth","undefined","where","and","or","_status","equals","exists","docs","autosave","mostRecentVersion","findVersions","limit","parent","updatedAt","totalDocs","countVersions","greater_than","findGlobal","findGlobalVersions","select","countGlobalVersions","global"],"sources":["../../../src/views/Document/getVersions.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\nexport const getVersions = async ({\n id,\n collectionConfig,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n let publishedQuery\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n const hasPublishedDoc = Boolean((collectionConfig && id) || globalConfig)\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n locale: locale || undefined,\n user,\n where: {\n and: [\n {\n or: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n _status: {\n exists: false,\n },\n },\n ],\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (publishedQuery.docs?.[0]) {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery.docs?.[0]?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.docs[0].updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n }))\n }\n\n if (globalConfig) {\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n user,\n })\n\n if (publishedQuery?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n where: {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { AdminViewProps, CollectionPermission, GlobalPermission, PayloadComponent, SanitizedCollectionConfig, SanitizedConfig, SanitizedGlobalConfig, ServerSideEditViewProps } from 'payload';
1
+ import type { AdminViewProps, PayloadComponent, SanitizedCollectionConfig, SanitizedCollectionPermission, SanitizedConfig, SanitizedGlobalConfig, SanitizedGlobalPermission, ServerSideEditViewProps } from 'payload';
2
2
  import type React from 'react';
3
3
  export type ViewFromConfig<TProps extends object> = {
4
4
  Component?: React.FC<TProps>;
@@ -10,7 +10,7 @@ export declare const getViewsFromConfig: ({ collectionConfig, config, docPermiss
10
10
  globalConfig?: SanitizedGlobalConfig;
11
11
  routeSegments: string[];
12
12
  } & ({
13
- docPermissions: CollectionPermission | GlobalPermission;
13
+ docPermissions: SanitizedCollectionPermission | SanitizedGlobalPermission;
14
14
  overrideDocPermissions?: false | undefined;
15
15
  } | {
16
16
  docPermissions?: never;
@@ -1 +1 @@
1
- {"version":3,"file":"getViewsFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getViewsFromConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,MAAM,IAAI;IAClD,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC5B,eAAe,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAC3C,CAAA;AAED,eAAO,MAAM,kBAAkB,uGAO5B;IACD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,GAAG,CACA;IACE,cAAc,EAAE,oBAAoB,GAAG,gBAAgB,CAAA;IACvD,sBAAsB,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;CAC3C,GACD;IACE,cAAc,CAAC,EAAE,KAAK,CAAA;IACtB,sBAAsB,EAAE,IAAI,CAAA;CAC7B,CACJ,KAAG;IACF,UAAU,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACnD,WAAW,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACpD;;OAEG;IACH,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;IACzC,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,IA0XH,CAAA"}
1
+ {"version":3,"file":"getViewsFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getViewsFromConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,EAC7B,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,MAAM,IAAI;IAClD,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC5B,eAAe,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAC3C,CAAA;AAED,eAAO,MAAM,kBAAkB,uGAO5B;IACD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,GAAG,CACA;IACE,cAAc,EAAE,6BAA6B,GAAG,yBAAyB,CAAA;IACzE,sBAAsB,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;CAC3C,GACD;IACE,cAAc,CAAC,EAAE,KAAK,CAAA;IACtB,sBAAsB,EAAE,IAAI,CAAA;CAC7B,CACJ,KAAG;IACF,UAAU,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACnD,WAAW,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACpD;;OAEG;IACH,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;IACzC,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,IAsXH,CAAA"}
@@ -28,7 +28,7 @@ export const getViewsFromConfig = ({
28
28
  const livePreviewEnabled = collectionConfig && collectionConfig?.admin?.livePreview || config?.admin?.livePreview?.collections?.includes(collectionConfig?.slug) || globalConfig && globalConfig?.admin?.livePreview || config?.admin?.livePreview?.globals?.includes(globalConfig?.slug);
29
29
  if (collectionConfig) {
30
30
  const [collectionEntity, collectionSlug, segment3, segment4, segment5, ...remainingSegments] = routeSegments;
31
- if (!overrideDocPermissions && !docPermissions?.read?.permission) {
31
+ if (!overrideDocPermissions && !docPermissions?.read) {
32
32
  throw new Error('not-found');
33
33
  } else {
34
34
  // `../:id`, or `../create`
@@ -38,7 +38,7 @@ export const getViewsFromConfig = ({
38
38
  switch (segment3) {
39
39
  case 'create':
40
40
  {
41
- if (!overrideDocPermissions && 'create' in docPermissions && docPermissions?.create?.permission) {
41
+ if (!overrideDocPermissions && 'create' in docPermissions && docPermissions.create) {
42
42
  CustomView = {
43
43
  ComponentConfig: getCustomViewByKey(views, 'default')
44
44
  };
@@ -112,7 +112,7 @@ export const getViewsFromConfig = ({
112
112
  }
113
113
  case 'versions':
114
114
  {
115
- if (!overrideDocPermissions && docPermissions?.readVersions?.permission) {
115
+ if (!overrideDocPermissions && docPermissions?.readVersions) {
116
116
  CustomView = {
117
117
  ComponentConfig: getCustomViewByKey(views, 'versions')
118
118
  };
@@ -153,7 +153,7 @@ export const getViewsFromConfig = ({
153
153
  default:
154
154
  {
155
155
  if (segment4 === 'versions') {
156
- if (!overrideDocPermissions && docPermissions?.readVersions?.permission) {
156
+ if (!overrideDocPermissions && docPermissions?.readVersions) {
157
157
  CustomView = {
158
158
  ComponentConfig: getCustomViewByKey(views, 'version')
159
159
  };
@@ -190,7 +190,7 @@ export const getViewsFromConfig = ({
190
190
  }
191
191
  if (globalConfig) {
192
192
  const [globalEntity, globalSlug, segment3, ...remainingSegments] = routeSegments;
193
- if (!overrideDocPermissions && !docPermissions?.read?.permission) {
193
+ if (!overrideDocPermissions && !docPermissions?.read) {
194
194
  throw new Error('not-found');
195
195
  } else {
196
196
  switch (routeSegments.length) {
@@ -234,7 +234,7 @@ export const getViewsFromConfig = ({
234
234
  }
235
235
  case 'versions':
236
236
  {
237
- if (!overrideDocPermissions && docPermissions?.readVersions?.permission) {
237
+ if (!overrideDocPermissions && docPermissions?.readVersions) {
238
238
  CustomView = {
239
239
  ComponentConfig: getCustomViewByKey(views, 'versions')
240
240
  };
@@ -250,7 +250,7 @@ export const getViewsFromConfig = ({
250
250
  }
251
251
  default:
252
252
  {
253
- if (!overrideDocPermissions && docPermissions?.read?.permission) {
253
+ if (!overrideDocPermissions && docPermissions?.read) {
254
254
  const baseRoute = [adminRoute, globalEntity, globalSlug, segment3].filter(Boolean).join('/');
255
255
  const currentRoute = [baseRoute, segment3, ...remainingSegments].filter(Boolean).join('/');
256
256
  const {
@@ -285,7 +285,7 @@ export const getViewsFromConfig = ({
285
285
  {
286
286
  // `../:slug/versions/:version`, etc
287
287
  if (segment3 === 'versions') {
288
- if (!overrideDocPermissions && docPermissions?.readVersions?.permission) {
288
+ if (!overrideDocPermissions && docPermissions?.readVersions) {
289
289
  CustomView = {
290
290
  ComponentConfig: getCustomViewByKey(views, 'version')
291
291
  };