@payloadcms/next 3.81.0-internal.181753b → 3.82.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"isCustomAdminView.d.ts","sourceRoot":"","sources":["../../src/utilities/isCustomAdminView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;GAEG;AACH,eAAO,MAAM,iBAAiB,mCAI3B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,KAAG,OAmBH,CAAA"}
1
+ {"version":3,"file":"isCustomAdminView.d.ts","sourceRoot":"","sources":["../../src/utilities/isCustomAdminView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;GAEG;AACH,eAAO,MAAM,iBAAiB,mCAI3B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,KAAG,OAuBH,CAAA"}
@@ -18,7 +18,7 @@ export const isCustomAdminView = ({
18
18
  return true;
19
19
  }
20
20
  } else {
21
- if (routeWithoutAdmin.startsWith(view.path)) {
21
+ if (view.path && view.path !== '/' && (routeWithoutAdmin === view.path || routeWithoutAdmin.startsWith(view.path + '/'))) {
22
22
  return true;
23
23
  }
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"isCustomAdminView.js","names":["getRouteWithoutAdmin","isCustomAdminView","adminRoute","config","route","admin","components","views","isPublicAdminRoute","Object","entries","some","_","view","routeWithoutAdmin","exact","path","startsWith"],"sources":["../../src/utilities/isCustomAdminView.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport { getRouteWithoutAdmin } from './getRouteWithoutAdmin.js'\n\n/**\n * Returns an array of views marked with 'public: true' in the config\n */\nexport const isCustomAdminView = ({\n adminRoute,\n config,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n route: string\n}): boolean => {\n if (config.admin?.components?.views) {\n const isPublicAdminRoute = Object.entries(config.admin.components.views).some(([_, view]) => {\n const routeWithoutAdmin = getRouteWithoutAdmin({ adminRoute, route })\n\n if (view.exact) {\n if (routeWithoutAdmin === view.path) {\n return true\n }\n } else {\n if (routeWithoutAdmin.startsWith(view.path)) {\n return true\n }\n }\n return false\n })\n return isPublicAdminRoute\n }\n return false\n}\n"],"mappings":"AAEA,SAASA,oBAAoB,QAAQ;AAErC;;;AAGA,OAAO,MAAMC,iBAAA,GAAoBA,CAAC;EAChCC,UAAU;EACVC,MAAM;EACNC;AAAK,CAKN;EACC,IAAID,MAAA,CAAOE,KAAK,EAAEC,UAAA,EAAYC,KAAA,EAAO;IACnC,MAAMC,kBAAA,GAAqBC,MAAA,CAAOC,OAAO,CAACP,MAAA,CAAOE,KAAK,CAACC,UAAU,CAACC,KAAK,EAAEI,IAAI,CAAC,CAAC,CAACC,CAAA,EAAGC,IAAA,CAAK;MACtF,MAAMC,iBAAA,GAAoBd,oBAAA,CAAqB;QAAEE,UAAA;QAAYE;MAAM;MAEnE,IAAIS,IAAA,CAAKE,KAAK,EAAE;QACd,IAAID,iBAAA,KAAsBD,IAAA,CAAKG,IAAI,EAAE;UACnC,OAAO;QACT;MACF,OAAO;QACL,IAAIF,iBAAA,CAAkBG,UAAU,CAACJ,IAAA,CAAKG,IAAI,GAAG;UAC3C,OAAO;QACT;MACF;MACA,OAAO;IACT;IACA,OAAOR,kBAAA;EACT;EACA,OAAO;AACT","ignoreList":[]}
1
+ {"version":3,"file":"isCustomAdminView.js","names":["getRouteWithoutAdmin","isCustomAdminView","adminRoute","config","route","admin","components","views","isPublicAdminRoute","Object","entries","some","_","view","routeWithoutAdmin","exact","path","startsWith"],"sources":["../../src/utilities/isCustomAdminView.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport { getRouteWithoutAdmin } from './getRouteWithoutAdmin.js'\n\n/**\n * Returns an array of views marked with 'public: true' in the config\n */\nexport const isCustomAdminView = ({\n adminRoute,\n config,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n route: string\n}): boolean => {\n if (config.admin?.components?.views) {\n const isPublicAdminRoute = Object.entries(config.admin.components.views).some(([_, view]) => {\n const routeWithoutAdmin = getRouteWithoutAdmin({ adminRoute, route })\n\n if (view.exact) {\n if (routeWithoutAdmin === view.path) {\n return true\n }\n } else {\n if (\n view.path &&\n view.path !== '/' &&\n (routeWithoutAdmin === view.path || routeWithoutAdmin.startsWith(view.path + '/'))\n ) {\n return true\n }\n }\n return false\n })\n return isPublicAdminRoute\n }\n return false\n}\n"],"mappings":"AAEA,SAASA,oBAAoB,QAAQ;AAErC;;;AAGA,OAAO,MAAMC,iBAAA,GAAoBA,CAAC;EAChCC,UAAU;EACVC,MAAM;EACNC;AAAK,CAKN;EACC,IAAID,MAAA,CAAOE,KAAK,EAAEC,UAAA,EAAYC,KAAA,EAAO;IACnC,MAAMC,kBAAA,GAAqBC,MAAA,CAAOC,OAAO,CAACP,MAAA,CAAOE,KAAK,CAACC,UAAU,CAACC,KAAK,EAAEI,IAAI,CAAC,CAAC,CAACC,CAAA,EAAGC,IAAA,CAAK;MACtF,MAAMC,iBAAA,GAAoBd,oBAAA,CAAqB;QAAEE,UAAA;QAAYE;MAAM;MAEnE,IAAIS,IAAA,CAAKE,KAAK,EAAE;QACd,IAAID,iBAAA,KAAsBD,IAAA,CAAKG,IAAI,EAAE;UACnC,OAAO;QACT;MACF,OAAO;QACL,IACEH,IAAA,CAAKG,IAAI,IACTH,IAAA,CAAKG,IAAI,KAAK,QACbF,iBAAA,KAAsBD,IAAA,CAAKG,IAAI,IAAIF,iBAAA,CAAkBG,UAAU,CAACJ,IAAA,CAAKG,IAAI,GAAG,IAAG,GAChF;UACA,OAAO;QACT;MACF;MACA,OAAO;IACT;IACA,OAAOR,kBAAA;EACT;EACA,OAAO;AACT","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { isCustomAdminView } from './isCustomAdminView.js';
3
+ describe('isCustomAdminView', () => {
4
+ const adminRoute = '/admin';
5
+ const configWithCustomDashboard = {
6
+ admin: {
7
+ components: {
8
+ views: {
9
+ dashboard: {
10
+ path: '/'
11
+ }
12
+ }
13
+ }
14
+ }
15
+ };
16
+ it('should not bypass admin access for the root admin route even with a custom dashboard view', () => {
17
+ // The root path '/' maps to the dashboard — it is not a public custom view.
18
+ // canAccessAdmin must still be enforced for the admin root.
19
+ const result = isCustomAdminView({
20
+ adminRoute,
21
+ config: configWithCustomDashboard,
22
+ route: '/admin'
23
+ });
24
+ expect(result).toBe(false);
25
+ });
26
+ it('should not match collection routes as custom dashboard views when dashboard path is "/"', () => {
27
+ const result = isCustomAdminView({
28
+ adminRoute,
29
+ config: configWithCustomDashboard,
30
+ route: '/admin/collections/tickets'
31
+ });
32
+ expect(result).toBe(false);
33
+ });
34
+ it('should not match document routes as custom dashboard views when dashboard path is "/"', () => {
35
+ const result = isCustomAdminView({
36
+ adminRoute,
37
+ config: configWithCustomDashboard,
38
+ route: '/admin/collections/tickets/123'
39
+ });
40
+ expect(result).toBe(false);
41
+ });
42
+ it('should return false when no custom views are configured', () => {
43
+ const config = {};
44
+ const result = isCustomAdminView({
45
+ adminRoute,
46
+ config,
47
+ route: '/admin/collections/tickets'
48
+ });
49
+ expect(result).toBe(false);
50
+ });
51
+ it('should return true for a custom view with a non-root path', () => {
52
+ const config = {
53
+ admin: {
54
+ components: {
55
+ views: {
56
+ myCustomView: {
57
+ path: '/my-custom-view'
58
+ }
59
+ }
60
+ }
61
+ }
62
+ };
63
+ const result = isCustomAdminView({
64
+ adminRoute,
65
+ config,
66
+ route: '/admin/my-custom-view'
67
+ });
68
+ expect(result).toBe(true);
69
+ });
70
+ it('should not match collection routes when a non-root custom view path is set', () => {
71
+ const config = {
72
+ admin: {
73
+ components: {
74
+ views: {
75
+ myCustomView: {
76
+ path: '/my-custom-view'
77
+ }
78
+ }
79
+ }
80
+ }
81
+ };
82
+ const result = isCustomAdminView({
83
+ adminRoute,
84
+ config,
85
+ route: '/admin/collections/tickets'
86
+ });
87
+ expect(result).toBe(false);
88
+ });
89
+ });
90
+ //# sourceMappingURL=isCustomAdminView.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isCustomAdminView.spec.js","names":["describe","expect","it","isCustomAdminView","adminRoute","configWithCustomDashboard","admin","components","views","dashboard","path","result","config","route","toBe","myCustomView"],"sources":["../../src/utilities/isCustomAdminView.spec.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { isCustomAdminView } from './isCustomAdminView.js'\n\ndescribe('isCustomAdminView', () => {\n const adminRoute = '/admin'\n\n const configWithCustomDashboard = {\n admin: {\n components: {\n views: {\n dashboard: {\n path: '/',\n },\n },\n },\n },\n } as unknown as SanitizedConfig\n\n it('should not bypass admin access for the root admin route even with a custom dashboard view', () => {\n // The root path '/' maps to the dashboard — it is not a public custom view.\n // canAccessAdmin must still be enforced for the admin root.\n const result = isCustomAdminView({\n adminRoute,\n config: configWithCustomDashboard,\n route: '/admin',\n })\n\n expect(result).toBe(false)\n })\n\n it('should not match collection routes as custom dashboard views when dashboard path is \"/\"', () => {\n const result = isCustomAdminView({\n adminRoute,\n config: configWithCustomDashboard,\n route: '/admin/collections/tickets',\n })\n\n expect(result).toBe(false)\n })\n\n it('should not match document routes as custom dashboard views when dashboard path is \"/\"', () => {\n const result = isCustomAdminView({\n adminRoute,\n config: configWithCustomDashboard,\n route: '/admin/collections/tickets/123',\n })\n\n expect(result).toBe(false)\n })\n\n it('should return false when no custom views are configured', () => {\n const config = {} as SanitizedConfig\n\n const result = isCustomAdminView({\n adminRoute,\n config,\n route: '/admin/collections/tickets',\n })\n\n expect(result).toBe(false)\n })\n\n it('should return true for a custom view with a non-root path', () => {\n const config = {\n admin: {\n components: {\n views: {\n myCustomView: {\n path: '/my-custom-view',\n },\n },\n },\n },\n } as unknown as SanitizedConfig\n\n const result = isCustomAdminView({\n adminRoute,\n config,\n route: '/admin/my-custom-view',\n })\n\n expect(result).toBe(true)\n })\n\n it('should not match collection routes when a non-root custom view path is set', () => {\n const config = {\n admin: {\n components: {\n views: {\n myCustomView: {\n path: '/my-custom-view',\n },\n },\n },\n },\n } as unknown as SanitizedConfig\n\n const result = isCustomAdminView({\n adminRoute,\n config,\n route: '/admin/collections/tickets',\n })\n\n expect(result).toBe(false)\n })\n})\n"],"mappings":"AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ;AAErC,SAASC,iBAAiB,QAAQ;AAElCH,QAAA,CAAS,qBAAqB;EAC5B,MAAMI,UAAA,GAAa;EAEnB,MAAMC,yBAAA,GAA4B;IAChCC,KAAA,EAAO;MACLC,UAAA,EAAY;QACVC,KAAA,EAAO;UACLC,SAAA,EAAW;YACTC,IAAA,EAAM;UACR;QACF;MACF;IACF;EACF;EAEAR,EAAA,CAAG,6FAA6F;IAC9F;IACA;IACA,MAAMS,MAAA,GAASR,iBAAA,CAAkB;MAC/BC,UAAA;MACAQ,MAAA,EAAQP,yBAAA;MACRQ,KAAA,EAAO;IACT;IAEAZ,MAAA,CAAOU,MAAA,EAAQG,IAAI,CAAC;EACtB;EAEAZ,EAAA,CAAG,2FAA2F;IAC5F,MAAMS,MAAA,GAASR,iBAAA,CAAkB;MAC/BC,UAAA;MACAQ,MAAA,EAAQP,yBAAA;MACRQ,KAAA,EAAO;IACT;IAEAZ,MAAA,CAAOU,MAAA,EAAQG,IAAI,CAAC;EACtB;EAEAZ,EAAA,CAAG,yFAAyF;IAC1F,MAAMS,MAAA,GAASR,iBAAA,CAAkB;MAC/BC,UAAA;MACAQ,MAAA,EAAQP,yBAAA;MACRQ,KAAA,EAAO;IACT;IAEAZ,MAAA,CAAOU,MAAA,EAAQG,IAAI,CAAC;EACtB;EAEAZ,EAAA,CAAG,2DAA2D;IAC5D,MAAMU,MAAA,GAAS,CAAC;IAEhB,MAAMD,MAAA,GAASR,iBAAA,CAAkB;MAC/BC,UAAA;MACAQ,MAAA;MACAC,KAAA,EAAO;IACT;IAEAZ,MAAA,CAAOU,MAAA,EAAQG,IAAI,CAAC;EACtB;EAEAZ,EAAA,CAAG,6DAA6D;IAC9D,MAAMU,MAAA,GAAS;MACbN,KAAA,EAAO;QACLC,UAAA,EAAY;UACVC,KAAA,EAAO;YACLO,YAAA,EAAc;cACZL,IAAA,EAAM;YACR;UACF;QACF;MACF;IACF;IAEA,MAAMC,MAAA,GAASR,iBAAA,CAAkB;MAC/BC,UAAA;MACAQ,MAAA;MACAC,KAAA,EAAO;IACT;IAEAZ,MAAA,CAAOU,MAAA,EAAQG,IAAI,CAAC;EACtB;EAEAZ,EAAA,CAAG,8EAA8E;IAC/E,MAAMU,MAAA,GAAS;MACbN,KAAA,EAAO;QACLC,UAAA,EAAY;UACVC,KAAA,EAAO;YACLO,YAAA,EAAc;cACZL,IAAA,EAAM;YACR;UACF;QACF;MACF;IACF;IAEA,MAAMC,MAAA,GAASR,iBAAA,CAAkB;MAC/BC,UAAA;MACAQ,MAAA;MACAC,KAAA,EAAO;IACT;IAEAZ,MAAA,CAAOU,MAAA,EAAQG,IAAI,CAAC;EACtB;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/utilities/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAYzC,eAAO,MAAM,gBAAgB,SACrB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,KACvC,OAAO,CAAC,QAAQ,CAqFlB,CAAA"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/utilities/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAkDzC,eAAO,MAAM,gBAAgB,SACrB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,KACvC,OAAO,CAAC,QAAQ,CAwFlB,CAAA"}
@@ -1,5 +1,40 @@
1
1
  import { payloadFaviconDark, payloadFaviconLight, staticOGImage } from '@payloadcms/ui/assets';
2
2
  import * as qs from 'qs-esm';
3
+ const appendTitleSuffix = (title, suffix) => {
4
+ if (!suffix || !title) {
5
+ return title ?? undefined;
6
+ }
7
+ if (typeof title === 'string') {
8
+ return `${title} ${suffix}`;
9
+ }
10
+ if ('default' in title) {
11
+ return {
12
+ default: `${title.default} ${suffix}`,
13
+ template: `${title.template} ${suffix}`
14
+ };
15
+ }
16
+ if ('template' in title) {
17
+ return {
18
+ absolute: `${title.absolute} ${suffix}`,
19
+ template: title.template !== null ? `${title.template} ${suffix}` : null
20
+ };
21
+ }
22
+ return {
23
+ absolute: `${title.absolute} ${suffix}`
24
+ };
25
+ };
26
+ const getTitleString = title => {
27
+ if (!title) {
28
+ return undefined;
29
+ }
30
+ if (typeof title === 'string') {
31
+ return title;
32
+ }
33
+ if ('absolute' in title) {
34
+ return title.absolute;
35
+ }
36
+ return title.default;
37
+ };
3
38
  const defaultOpenGraph = {
4
39
  description: 'Payload is a headless CMS and application framework built with TypeScript, Node.js, and React.',
5
40
  siteName: 'Payload App',
@@ -30,8 +65,9 @@ export const generateMetadata = async args => {
30
65
  sizes: '32x32',
31
66
  url: typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight
32
67
  }];
33
- const metaTitle = [incomingMetadata.title, titleSuffix].filter(Boolean).join(' ');
34
- const ogTitle = `${typeof incomingMetadata.openGraph?.title === 'string' ? incomingMetadata.openGraph.title : incomingMetadata.title} ${titleSuffix}`;
68
+ const metaTitle = appendTitleSuffix(incomingMetadata.title, titleSuffix);
69
+ const titleStringForOg = typeof incomingMetadata.openGraph?.title === 'string' ? incomingMetadata.openGraph.title : getTitleString(incomingMetadata.title);
70
+ const ogTitle = [titleStringForOg, titleSuffix].filter(Boolean).join(' ');
35
71
  const mergedOpenGraph = {
36
72
  ...(defaultOpenGraph || {}),
37
73
  ...(defaultOGImageType === 'dynamic' ? {
@@ -1 +1 @@
1
- {"version":3,"file":"meta.js","names":["payloadFaviconDark","payloadFaviconLight","staticOGImage","qs","defaultOpenGraph","description","siteName","title","generateMetadata","args","defaultOGImageType","serverURL","titleSuffix","rest","incomingMetadata","icons","type","rel","sizes","url","src","media","metaTitle","filter","Boolean","join","ogTitle","openGraph","mergedOpenGraph","images","alt","height","stringify","addQueryPrefix","width","Promise","resolve","metadataBase","URL","process","env","PAYLOAD_PUBLIC_SERVER_URL","PORT"],"sources":["../../src/utilities/meta.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type { Icon } from 'next/dist/lib/metadata/types/metadata-types.js'\nimport type { MetaConfig } from 'payload'\n\nimport { payloadFaviconDark, payloadFaviconLight, staticOGImage } from '@payloadcms/ui/assets'\nimport * as qs from 'qs-esm'\n\nconst defaultOpenGraph: Metadata['openGraph'] = {\n description:\n 'Payload is a headless CMS and application framework built with TypeScript, Node.js, and React.',\n siteName: 'Payload App',\n title: 'Payload App',\n}\n\nexport const generateMetadata = async (\n args: { serverURL: string } & MetaConfig,\n): Promise<Metadata> => {\n const { defaultOGImageType, serverURL, titleSuffix, ...rest } = args\n\n /**\n * @todo find a way to remove the type assertion here.\n * It is a result of needing to `DeepCopy` the `MetaConfig` type from Payload.\n * This is required for the `DeepRequired` from `Config` to `SanitizedConfig`.\n */\n const incomingMetadata = rest as Metadata\n\n const icons: Metadata['icons'] =\n incomingMetadata.icons ||\n ([\n {\n type: 'image/png',\n rel: 'icon',\n sizes: '32x32',\n url: typeof payloadFaviconDark === 'object' ? payloadFaviconDark?.src : payloadFaviconDark,\n },\n {\n type: 'image/png',\n media: '(prefers-color-scheme: dark)',\n rel: 'icon',\n sizes: '32x32',\n url:\n typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight,\n },\n ] satisfies Array<Icon>)\n\n const metaTitle: Metadata['title'] = [incomingMetadata.title, titleSuffix]\n .filter(Boolean)\n .join(' ')\n\n const ogTitle = `${typeof incomingMetadata.openGraph?.title === 'string' ? incomingMetadata.openGraph.title : incomingMetadata.title} ${titleSuffix}`\n\n const mergedOpenGraph: Metadata['openGraph'] = {\n ...(defaultOpenGraph || {}),\n ...(defaultOGImageType === 'dynamic'\n ? {\n images: [\n {\n alt: ogTitle,\n height: 630,\n url: `/api/og${qs.stringify(\n {\n description:\n incomingMetadata.openGraph?.description || defaultOpenGraph.description,\n title: ogTitle,\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n width: 1200,\n },\n ],\n }\n : {}),\n ...(defaultOGImageType === 'static'\n ? {\n images: [\n {\n alt: ogTitle,\n height: 480,\n url: typeof staticOGImage === 'object' ? staticOGImage?.src : staticOGImage,\n width: 640,\n },\n ],\n }\n : {}),\n title: ogTitle,\n ...(incomingMetadata.openGraph || {}),\n }\n\n return Promise.resolve({\n ...incomingMetadata,\n icons,\n metadataBase: new URL(\n serverURL ||\n process.env.PAYLOAD_PUBLIC_SERVER_URL ||\n `http://localhost:${process.env.PORT || 3000}`,\n ),\n openGraph: mergedOpenGraph,\n title: metaTitle,\n })\n}\n"],"mappings":"AAIA,SAASA,kBAAkB,EAAEC,mBAAmB,EAAEC,aAAa,QAAQ;AACvE,YAAYC,EAAA,MAAQ;AAEpB,MAAMC,gBAAA,GAA0C;EAC9CC,WAAA,EACE;EACFC,QAAA,EAAU;EACVC,KAAA,EAAO;AACT;AAEA,OAAO,MAAMC,gBAAA,GAAmB,MAC9BC,IAAA;EAEA,MAAM;IAAEC,kBAAkB;IAAEC,SAAS;IAAEC,WAAW;IAAE,GAAGC;EAAA,CAAM,GAAGJ,IAAA;EAEhE;;;;;EAKA,MAAMK,gBAAA,GAAmBD,IAAA;EAEzB,MAAME,KAAA,GACJD,gBAAA,CAAiBC,KAAK,IACrB,CACC;IACEC,IAAA,EAAM;IACNC,GAAA,EAAK;IACLC,KAAA,EAAO;IACPC,GAAA,EAAK,OAAOnB,kBAAA,KAAuB,WAAWA,kBAAA,EAAoBoB,GAAA,GAAMpB;EAC1E,GACA;IACEgB,IAAA,EAAM;IACNK,KAAA,EAAO;IACPJ,GAAA,EAAK;IACLC,KAAA,EAAO;IACPC,GAAA,EACE,OAAOlB,mBAAA,KAAwB,WAAWA,mBAAA,EAAqBmB,GAAA,GAAMnB;EACzE,EACD;EAEH,MAAMqB,SAAA,GAA+B,CAACR,gBAAA,CAAiBP,KAAK,EAAEK,WAAA,CAAY,CACvEW,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,MAAMC,OAAA,GAAU,GAAG,OAAOZ,gBAAA,CAAiBa,SAAS,EAAEpB,KAAA,KAAU,WAAWO,gBAAA,CAAiBa,SAAS,CAACpB,KAAK,GAAGO,gBAAA,CAAiBP,KAAK,IAAIK,WAAA,EAAa;EAErJ,MAAMgB,eAAA,GAAyC;IAC7C,IAAIxB,gBAAA,IAAoB,CAAC,CAAC;IAC1B,IAAIM,kBAAA,KAAuB,YACvB;MACEmB,MAAA,EAAQ,CACN;QACEC,GAAA,EAAKJ,OAAA;QACLK,MAAA,EAAQ;QACRZ,GAAA,EAAK,UAAUhB,EAAA,CAAG6B,SAAS,CACzB;UACE3B,WAAA,EACES,gBAAA,CAAiBa,SAAS,EAAEtB,WAAA,IAAeD,gBAAA,CAAiBC,WAAW;UACzEE,KAAA,EAAOmB;QACT,GACA;UACEO,cAAA,EAAgB;QAClB,IACC;QACHC,KAAA,EAAO;MACT;IAEJ,IACA,CAAC,CAAC;IACN,IAAIxB,kBAAA,KAAuB,WACvB;MACEmB,MAAA,EAAQ,CACN;QACEC,GAAA,EAAKJ,OAAA;QACLK,MAAA,EAAQ;QACRZ,GAAA,EAAK,OAAOjB,aAAA,KAAkB,WAAWA,aAAA,EAAekB,GAAA,GAAMlB,aAAA;QAC9DgC,KAAA,EAAO;MACT;IAEJ,IACA,CAAC,CAAC;IACN3B,KAAA,EAAOmB,OAAA;IACP,IAAIZ,gBAAA,CAAiBa,SAAS,IAAI,CAAC,CAAC;EACtC;EAEA,OAAOQ,OAAA,CAAQC,OAAO,CAAC;IACrB,GAAGtB,gBAAgB;IACnBC,KAAA;IACAsB,YAAA,EAAc,IAAIC,GAAA,CAChB3B,SAAA,IACE4B,OAAA,CAAQC,GAAG,CAACC,yBAAyB,IACrC,oBAAoBF,OAAA,CAAQC,GAAG,CAACE,IAAI,IAAI,MAAM;IAElDf,SAAA,EAAWC,eAAA;IACXrB,KAAA,EAAOe;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"meta.js","names":["payloadFaviconDark","payloadFaviconLight","staticOGImage","qs","appendTitleSuffix","title","suffix","undefined","default","template","absolute","getTitleString","defaultOpenGraph","description","siteName","generateMetadata","args","defaultOGImageType","serverURL","titleSuffix","rest","incomingMetadata","icons","type","rel","sizes","url","src","media","metaTitle","titleStringForOg","openGraph","ogTitle","filter","Boolean","join","mergedOpenGraph","images","alt","height","stringify","addQueryPrefix","width","Promise","resolve","metadataBase","URL","process","env","PAYLOAD_PUBLIC_SERVER_URL","PORT"],"sources":["../../src/utilities/meta.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type { Icon } from 'next/dist/lib/metadata/types/metadata-types.js'\nimport type { MetaConfig } from 'payload'\n\nimport { payloadFaviconDark, payloadFaviconLight, staticOGImage } from '@payloadcms/ui/assets'\nimport * as qs from 'qs-esm'\n\nconst appendTitleSuffix = (\n title: Metadata['title'],\n suffix: string | undefined,\n): Metadata['title'] => {\n if (!suffix || !title) {\n return title ?? undefined\n }\n if (typeof title === 'string') {\n return `${title} ${suffix}`\n }\n\n if ('default' in title) {\n return { default: `${title.default} ${suffix}`, template: `${title.template} ${suffix}` }\n }\n\n if ('template' in title) {\n return {\n absolute: `${title.absolute} ${suffix}`,\n template: title.template !== null ? `${title.template} ${suffix}` : null,\n }\n }\n\n return { absolute: `${title.absolute} ${suffix}` }\n}\n\nconst getTitleString = (title: Metadata['title']): string | undefined => {\n if (!title) {\n return undefined\n }\n if (typeof title === 'string') {\n return title\n }\n if ('absolute' in title) {\n return title.absolute\n }\n return title.default\n}\n\nconst defaultOpenGraph: Metadata['openGraph'] = {\n description:\n 'Payload is a headless CMS and application framework built with TypeScript, Node.js, and React.',\n siteName: 'Payload App',\n title: 'Payload App',\n}\n\nexport const generateMetadata = async (\n args: { serverURL: string } & MetaConfig,\n): Promise<Metadata> => {\n const { defaultOGImageType, serverURL, titleSuffix, ...rest } = args\n\n /**\n * @todo find a way to remove the type assertion here.\n * It is a result of needing to `DeepCopy` the `MetaConfig` type from Payload.\n * This is required for the `DeepRequired` from `Config` to `SanitizedConfig`.\n */\n const incomingMetadata = rest as Metadata\n\n const icons: Metadata['icons'] =\n incomingMetadata.icons ||\n ([\n {\n type: 'image/png',\n rel: 'icon',\n sizes: '32x32',\n url: typeof payloadFaviconDark === 'object' ? payloadFaviconDark?.src : payloadFaviconDark,\n },\n {\n type: 'image/png',\n media: '(prefers-color-scheme: dark)',\n rel: 'icon',\n sizes: '32x32',\n url:\n typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight,\n },\n ] satisfies Array<Icon>)\n\n const metaTitle: Metadata['title'] = appendTitleSuffix(incomingMetadata.title, titleSuffix)\n\n const titleStringForOg: string | undefined =\n typeof incomingMetadata.openGraph?.title === 'string'\n ? incomingMetadata.openGraph.title\n : getTitleString(incomingMetadata.title)\n\n const ogTitle = [titleStringForOg, titleSuffix].filter(Boolean).join(' ')\n\n const mergedOpenGraph: Metadata['openGraph'] = {\n ...(defaultOpenGraph || {}),\n ...(defaultOGImageType === 'dynamic'\n ? {\n images: [\n {\n alt: ogTitle,\n height: 630,\n url: `/api/og${qs.stringify(\n {\n description:\n incomingMetadata.openGraph?.description || defaultOpenGraph.description,\n title: ogTitle,\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n width: 1200,\n },\n ],\n }\n : {}),\n ...(defaultOGImageType === 'static'\n ? {\n images: [\n {\n alt: ogTitle,\n height: 480,\n url: typeof staticOGImage === 'object' ? staticOGImage?.src : staticOGImage,\n width: 640,\n },\n ],\n }\n : {}),\n title: ogTitle,\n ...(incomingMetadata.openGraph || {}),\n }\n\n return Promise.resolve({\n ...incomingMetadata,\n icons,\n metadataBase: new URL(\n serverURL ||\n process.env.PAYLOAD_PUBLIC_SERVER_URL ||\n `http://localhost:${process.env.PORT || 3000}`,\n ),\n openGraph: mergedOpenGraph,\n title: metaTitle,\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { generateMetadata } from './meta.js';
3
+ describe('generateMetadata', () => {
4
+ it('should handle a string title with titleSuffix', async () => {
5
+ const result = await generateMetadata({
6
+ serverURL: 'http://localhost:3000',
7
+ title: 'Dashboard',
8
+ titleSuffix: '- My CMS'
9
+ });
10
+ expect(result.title).toBe('Dashboard - My CMS');
11
+ });
12
+ it('should apply titleSuffix to default and template fields of a TemplateString title object', async () => {
13
+ const result = await generateMetadata({
14
+ serverURL: 'http://localhost:3000',
15
+ title: {
16
+ default: 'Dashboard',
17
+ template: '%s | Dashboard'
18
+ },
19
+ titleSuffix: '- My CMS'
20
+ });
21
+ expect(typeof result.title).toBe('object');
22
+ expect(result.title.default).toBe('Dashboard - My CMS');
23
+ expect(result.title.template).toBe('%s | Dashboard - My CMS');
24
+ });
25
+ it('should use the TemplateString default for ogTitle when title is a TemplateString object', async () => {
26
+ const result = await generateMetadata({
27
+ serverURL: 'http://localhost:3000',
28
+ title: {
29
+ default: 'My CMS',
30
+ template: '%s | My CMS'
31
+ },
32
+ titleSuffix: '- Payload'
33
+ });
34
+ // OG title must be a plain string — extract from TemplateString.default and append titleSuffix
35
+ expect(result.openGraph?.title).toBe('My CMS - Payload');
36
+ });
37
+ it('should use the TemplateString absolute for ogTitle when title has absolute property', async () => {
38
+ const result = await generateMetadata({
39
+ serverURL: 'http://localhost:3000',
40
+ title: {
41
+ absolute: 'My CMS Absolute'
42
+ },
43
+ titleSuffix: '- Payload'
44
+ });
45
+ expect(result.openGraph?.title).toBe('My CMS Absolute - Payload');
46
+ });
47
+ it('should apply titleSuffix to the absolute field of a TemplateString title object', async () => {
48
+ const result = await generateMetadata({
49
+ serverURL: 'http://localhost:3000',
50
+ title: {
51
+ absolute: 'My CMS Absolute'
52
+ },
53
+ titleSuffix: '- Payload'
54
+ });
55
+ expect(typeof result.title).toBe('object');
56
+ expect(result.title.absolute).toBe('My CMS Absolute - Payload');
57
+ });
58
+ it('should use openGraph.title string over incomingMetadata.title for ogTitle', async () => {
59
+ const result = await generateMetadata({
60
+ serverURL: 'http://localhost:3000',
61
+ title: 'My CMS',
62
+ titleSuffix: '- Payload',
63
+ openGraph: {
64
+ title: 'Custom OG Title'
65
+ }
66
+ });
67
+ expect(result.openGraph?.title).toBe('Custom OG Title');
68
+ });
69
+ it('should return undefined for metaTitle when no title and no titleSuffix are set', async () => {
70
+ const result = await generateMetadata({
71
+ serverURL: 'http://localhost:3000'
72
+ });
73
+ expect(result.title).toBeUndefined();
74
+ });
75
+ it('should return just the title when no titleSuffix is set', async () => {
76
+ const result = await generateMetadata({
77
+ serverURL: 'http://localhost:3000',
78
+ title: 'My CMS'
79
+ });
80
+ expect(result.title).toBe('My CMS');
81
+ });
82
+ });
83
+ //# sourceMappingURL=meta.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.spec.js","names":["describe","expect","it","generateMetadata","result","serverURL","title","titleSuffix","toBe","default","template","openGraph","absolute","toBeUndefined"],"sources":["../../src/utilities/meta.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { generateMetadata } from './meta.js'\n\ndescribe('generateMetadata', () => {\n it('should handle a string title with titleSuffix', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n title: 'Dashboard',\n titleSuffix: '- My CMS',\n })\n\n expect(result.title).toBe('Dashboard - My CMS')\n })\n\n it('should apply titleSuffix to default and template fields of a TemplateString title object', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n title: { default: 'Dashboard', template: '%s | Dashboard' },\n titleSuffix: '- My CMS',\n })\n\n expect(typeof result.title).toBe('object')\n expect((result.title as { default: string; template: string }).default).toBe(\n 'Dashboard - My CMS',\n )\n expect((result.title as { default: string; template: string }).template).toBe(\n '%s | Dashboard - My CMS',\n )\n })\n\n it('should use the TemplateString default for ogTitle when title is a TemplateString object', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n title: { default: 'My CMS', template: '%s | My CMS' },\n titleSuffix: '- Payload',\n })\n\n // OG title must be a plain string — extract from TemplateString.default and append titleSuffix\n expect(result.openGraph?.title).toBe('My CMS - Payload')\n })\n\n it('should use the TemplateString absolute for ogTitle when title has absolute property', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n title: { absolute: 'My CMS Absolute' },\n titleSuffix: '- Payload',\n })\n\n expect(result.openGraph?.title).toBe('My CMS Absolute - Payload')\n })\n\n it('should apply titleSuffix to the absolute field of a TemplateString title object', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n title: { absolute: 'My CMS Absolute' },\n titleSuffix: '- Payload',\n })\n\n expect(typeof result.title).toBe('object')\n expect((result.title as { absolute: string }).absolute).toBe('My CMS Absolute - Payload')\n })\n\n it('should use openGraph.title string over incomingMetadata.title for ogTitle', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n title: 'My CMS',\n titleSuffix: '- Payload',\n openGraph: { title: 'Custom OG Title' },\n })\n\n expect(result.openGraph?.title).toBe('Custom OG Title')\n })\n\n it('should return undefined for metaTitle when no title and no titleSuffix are set', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n })\n\n expect(result.title).toBeUndefined()\n })\n\n it('should return just the title when no titleSuffix is set', async () => {\n const result = await generateMetadata({\n serverURL: 'http://localhost:3000',\n title: 'My CMS',\n })\n\n expect(result.title).toBe('My CMS')\n })\n})\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ;AAErC,SAASC,gBAAgB,QAAQ;AAEjCH,QAAA,CAAS,oBAAoB;EAC3BE,EAAA,CAAG,iDAAiD;IAClD,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;MACXC,KAAA,EAAO;MACPC,WAAA,EAAa;IACf;IAEAN,MAAA,CAAOG,MAAA,CAAOE,KAAK,EAAEE,IAAI,CAAC;EAC5B;EAEAN,EAAA,CAAG,4FAA4F;IAC7F,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;MACXC,KAAA,EAAO;QAAEG,OAAA,EAAS;QAAaC,QAAA,EAAU;MAAiB;MAC1DH,WAAA,EAAa;IACf;IAEAN,MAAA,CAAO,OAAOG,MAAA,CAAOE,KAAK,EAAEE,IAAI,CAAC;IACjCP,MAAA,CAAOG,MAAC,CAAOE,KAAK,CAA2CG,OAAO,EAAED,IAAI,CAC1E;IAEFP,MAAA,CAAOG,MAAC,CAAOE,KAAK,CAA2CI,QAAQ,EAAEF,IAAI,CAC3E;EAEJ;EAEAN,EAAA,CAAG,2FAA2F;IAC5F,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;MACXC,KAAA,EAAO;QAAEG,OAAA,EAAS;QAAUC,QAAA,EAAU;MAAc;MACpDH,WAAA,EAAa;IACf;IAEA;IACAN,MAAA,CAAOG,MAAA,CAAOO,SAAS,EAAEL,KAAA,EAAOE,IAAI,CAAC;EACvC;EAEAN,EAAA,CAAG,uFAAuF;IACxF,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;MACXC,KAAA,EAAO;QAAEM,QAAA,EAAU;MAAkB;MACrCL,WAAA,EAAa;IACf;IAEAN,MAAA,CAAOG,MAAA,CAAOO,SAAS,EAAEL,KAAA,EAAOE,IAAI,CAAC;EACvC;EAEAN,EAAA,CAAG,mFAAmF;IACpF,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;MACXC,KAAA,EAAO;QAAEM,QAAA,EAAU;MAAkB;MACrCL,WAAA,EAAa;IACf;IAEAN,MAAA,CAAO,OAAOG,MAAA,CAAOE,KAAK,EAAEE,IAAI,CAAC;IACjCP,MAAA,CAAOG,MAAC,CAAOE,KAAK,CAA0BM,QAAQ,EAAEJ,IAAI,CAAC;EAC/D;EAEAN,EAAA,CAAG,6EAA6E;IAC9E,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;MACXC,KAAA,EAAO;MACPC,WAAA,EAAa;MACbI,SAAA,EAAW;QAAEL,KAAA,EAAO;MAAkB;IACxC;IAEAL,MAAA,CAAOG,MAAA,CAAOO,SAAS,EAAEL,KAAA,EAAOE,IAAI,CAAC;EACvC;EAEAN,EAAA,CAAG,kFAAkF;IACnF,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;IACb;IAEAJ,MAAA,CAAOG,MAAA,CAAOE,KAAK,EAAEO,aAAa;EACpC;EAEAX,EAAA,CAAG,2DAA2D;IAC5D,MAAME,MAAA,GAAS,MAAMD,gBAAA,CAAiB;MACpCE,SAAA,EAAW;MACXC,KAAA,EAAO;IACT;IAEAL,MAAA,CAAOG,MAAA,CAAOE,KAAK,EAAEE,IAAI,CAAC;EAC5B;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/ForgotPassword/ForgotPasswordForm/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAgItC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/ForgotPassword/ForgotPasswordForm/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAmItC,CAAA"}
@@ -3,7 +3,7 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { EmailField, Form, FormSubmit, TextField, useConfig, useTranslation } from '@payloadcms/ui';
6
- import { email, text } from 'payload/shared';
6
+ import { email, formatAdminURL, text } from 'payload/shared';
7
7
  import React, { useState } from 'react';
8
8
  import { FormHeader } from '../../../elements/FormHeader/index.js';
9
9
  export const ForgotPasswordForm = () => {
@@ -20,7 +20,7 @@ export const ForgotPasswordForm = () => {
20
20
  user: userSlug
21
21
  } = t0;
22
22
  const {
23
- api
23
+ api: apiRoute
24
24
  } = t1;
25
25
  const {
26
26
  t
@@ -58,7 +58,7 @@ export const ForgotPasswordForm = () => {
58
58
  const handleResponse = t3;
59
59
  let t4;
60
60
  let t5;
61
- if ($[6] !== api || $[7] !== config || $[8] !== handleResponse || $[9] !== hasSubmitted || $[10] !== loginWithUsername || $[11] !== t || $[12] !== userSlug) {
61
+ if ($[6] !== apiRoute || $[7] !== config || $[8] !== handleResponse || $[9] !== hasSubmitted || $[10] !== loginWithUsername || $[11] !== t || $[12] !== userSlug) {
62
62
  t5 = Symbol.for("react.early_return_sentinel");
63
63
  bb0: {
64
64
  const initialState = loginWithUsername ? {
@@ -90,7 +90,10 @@ export const ForgotPasswordForm = () => {
90
90
  break bb0;
91
91
  }
92
92
  t4 = _jsxs(Form, {
93
- action: `${api}/${userSlug}/forgot-password`,
93
+ action: formatAdminURL({
94
+ apiRoute,
95
+ path: `/${userSlug}/forgot-password`
96
+ }),
94
97
  handleResponse,
95
98
  initialState,
96
99
  method: "POST",
@@ -158,7 +161,7 @@ export const ForgotPasswordForm = () => {
158
161
  })]
159
162
  });
160
163
  }
161
- $[6] = api;
164
+ $[6] = apiRoute;
162
165
  $[7] = config;
163
166
  $[8] = handleResponse;
164
167
  $[9] = hasSubmitted;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","EmailField","Form","FormSubmit","TextField","useConfig","useTranslation","email","text","React","useState","FormHeader","ForgotPasswordForm","$","config","getEntityConfig","admin","t0","routes","t1","user","userSlug","api","t","hasSubmitted","setHasSubmitted","t2","collectionSlug","collectionConfig","loginWithUsername","auth","t3","res","successToast","errorToast","json","then","catch","handleResponse","t4","t5","Symbol","for","initialState","username","initialValue","valid","value","undefined","t6","_jsx","description","heading","_jsxs","action","method","children","field","name","label","required","path","validate","type","blockData","data","event","preferences","fields","req","payload","siblingData","autoComplete","value_0","size"],"sources":["../../../../src/views/ForgotPassword/ForgotPasswordForm/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormProps } from '@payloadcms/ui'\nimport type { FormState, PayloadRequest } from 'payload'\n\nimport { EmailField, Form, FormSubmit, TextField, useConfig, useTranslation } from '@payloadcms/ui'\nimport { email, text } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport { FormHeader } from '../../../elements/FormHeader/index.js'\n\nexport const ForgotPasswordForm: React.FC = () => {\n const { config, getEntityConfig } = useConfig()\n\n const {\n admin: { user: userSlug },\n routes: { api },\n } = config\n\n const { t } = useTranslation()\n const [hasSubmitted, setHasSubmitted] = useState(false)\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const loginWithUsername = collectionConfig?.auth?.loginWithUsername\n\n const handleResponse: FormProps['handleResponse'] = (res, successToast, errorToast) => {\n res\n .json()\n .then(() => {\n setHasSubmitted(true)\n successToast(t('general:submissionSuccessful'))\n })\n .catch(() => {\n errorToast(\n loginWithUsername\n ? t('authentication:usernameNotValid')\n : t('authentication:emailNotValid'),\n )\n })\n }\n\n const initialState: FormState = loginWithUsername\n ? {\n username: {\n initialValue: '',\n valid: true,\n value: undefined,\n },\n }\n : {\n email: {\n initialValue: '',\n valid: true,\n value: undefined,\n },\n }\n\n if (hasSubmitted) {\n return (\n <FormHeader\n description={t('authentication:checkYourEmailForPasswordReset')}\n heading={t('authentication:emailSent')}\n />\n )\n }\n\n return (\n <Form\n action={`${api}/${userSlug}/forgot-password`}\n handleResponse={handleResponse}\n initialState={initialState}\n method=\"POST\"\n >\n <FormHeader\n description={\n loginWithUsername\n ? t('authentication:forgotPasswordUsernameInstructions')\n : t('authentication:forgotPasswordEmailInstructions')\n }\n heading={t('authentication:forgotPassword')}\n />\n\n {loginWithUsername ? (\n <TextField\n field={{\n name: 'username',\n label: t('authentication:username'),\n required: true,\n }}\n path=\"username\"\n validate={(value) =>\n text(value, {\n name: 'username',\n type: 'text',\n blockData: {},\n data: {},\n event: 'onChange',\n path: ['username'],\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as unknown as PayloadRequest,\n required: true,\n siblingData: {},\n })\n }\n />\n ) : (\n <EmailField\n field={{\n name: 'email',\n admin: {\n autoComplete: 'email',\n },\n label: t('general:email'),\n required: true,\n }}\n path=\"email\"\n validate={(value) =>\n email(value, {\n name: 'email',\n type: 'email',\n blockData: {},\n data: {},\n event: 'onChange',\n path: ['email'],\n preferences: { fields: {} },\n req: { payload: { config }, t } as unknown as PayloadRequest,\n required: true,\n siblingData: {},\n })\n }\n />\n )}\n <FormSubmit size=\"large\">{t('general:submit')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","EmailField","Form","FormSubmit","TextField","useConfig","useTranslation","email","formatAdminURL","text","React","useState","FormHeader","ForgotPasswordForm","$","config","getEntityConfig","admin","t0","routes","t1","user","userSlug","api","apiRoute","t","hasSubmitted","setHasSubmitted","t2","collectionSlug","collectionConfig","loginWithUsername","auth","t3","res","successToast","errorToast","json","then","catch","handleResponse","t4","t5","Symbol","for","initialState","username","initialValue","valid","value","undefined","t6","_jsx","description","heading","_jsxs","action","path","method","children","field","name","label","required","validate","type","blockData","data","event","preferences","fields","req","payload","siblingData","autoComplete","value_0","size"],"sources":["../../../../src/views/ForgotPassword/ForgotPasswordForm/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormProps } from '@payloadcms/ui'\nimport type { FormState, PayloadRequest } from 'payload'\n\nimport { EmailField, Form, FormSubmit, TextField, useConfig, useTranslation } from '@payloadcms/ui'\nimport { email, formatAdminURL, text } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport { FormHeader } from '../../../elements/FormHeader/index.js'\n\nexport const ForgotPasswordForm: React.FC = () => {\n const { config, getEntityConfig } = useConfig()\n\n const {\n admin: { user: userSlug },\n routes: { api: apiRoute },\n } = config\n\n const { t } = useTranslation()\n const [hasSubmitted, setHasSubmitted] = useState(false)\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const loginWithUsername = collectionConfig?.auth?.loginWithUsername\n\n const handleResponse: FormProps['handleResponse'] = (res, successToast, errorToast) => {\n res\n .json()\n .then(() => {\n setHasSubmitted(true)\n successToast(t('general:submissionSuccessful'))\n })\n .catch(() => {\n errorToast(\n loginWithUsername\n ? t('authentication:usernameNotValid')\n : t('authentication:emailNotValid'),\n )\n })\n }\n\n const initialState: FormState = loginWithUsername\n ? {\n username: {\n initialValue: '',\n valid: true,\n value: undefined,\n },\n }\n : {\n email: {\n initialValue: '',\n valid: true,\n value: undefined,\n },\n }\n\n if (hasSubmitted) {\n return (\n <FormHeader\n description={t('authentication:checkYourEmailForPasswordReset')}\n heading={t('authentication:emailSent')}\n />\n )\n }\n\n return (\n <Form\n action={formatAdminURL({\n apiRoute,\n path: `/${userSlug}/forgot-password`,\n })}\n handleResponse={handleResponse}\n initialState={initialState}\n method=\"POST\"\n >\n <FormHeader\n description={\n loginWithUsername\n ? t('authentication:forgotPasswordUsernameInstructions')\n : t('authentication:forgotPasswordEmailInstructions')\n }\n heading={t('authentication:forgotPassword')}\n />\n\n {loginWithUsername ? (\n <TextField\n field={{\n name: 'username',\n label: t('authentication:username'),\n required: true,\n }}\n path=\"username\"\n validate={(value) =>\n text(value, {\n name: 'username',\n type: 'text',\n blockData: {},\n data: {},\n event: 'onChange',\n path: ['username'],\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as unknown as PayloadRequest,\n required: true,\n siblingData: {},\n })\n }\n />\n ) : (\n <EmailField\n field={{\n name: 'email',\n admin: {\n autoComplete: 'email',\n },\n label: t('general:email'),\n required: true,\n }}\n path=\"email\"\n validate={(value) =>\n email(value, {\n name: 'email',\n type: 'email',\n blockData: {},\n data: {},\n event: 'onChange',\n path: ['email'],\n preferences: { fields: {} },\n req: { payload: { config }, t } as unknown as PayloadRequest,\n required: true,\n siblingData: {},\n })\n }\n />\n )}\n <FormSubmit size=\"large\">{t('general:submit')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/next",
3
- "version": "3.81.0-internal.181753b",
3
+ "version": "3.82.0-canary.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -91,17 +91,17 @@
91
91
  "@dnd-kit/sortable": "10.0.0",
92
92
  "busboy": "^1.6.0",
93
93
  "dequal": "2.0.3",
94
- "file-type": "19.3.0",
94
+ "file-type": "21.3.4",
95
95
  "graphql-http": "^1.22.0",
96
96
  "graphql-playground-html": "1.6.30",
97
97
  "http-status": "2.1.0",
98
98
  "path-to-regexp": "6.3.0",
99
- "qs-esm": "7.0.2",
99
+ "qs-esm": "8.0.1",
100
100
  "sass": "1.77.4",
101
101
  "uuid": "10.0.0",
102
- "@payloadcms/graphql": "3.81.0-internal.181753b",
103
- "@payloadcms/translations": "3.81.0-internal.181753b",
104
- "@payloadcms/ui": "3.81.0-internal.181753b"
102
+ "@payloadcms/graphql": "3.82.0-canary.0",
103
+ "@payloadcms/translations": "3.82.0-canary.0",
104
+ "@payloadcms/ui": "3.82.0-canary.0"
105
105
  },
106
106
  "devDependencies": {
107
107
  "@babel/cli": "7.27.2",
@@ -119,12 +119,12 @@
119
119
  "esbuild-sass-plugin": "3.3.1",
120
120
  "swc-plugin-transform-remove-imports": "8.3.0",
121
121
  "@payloadcms/eslint-config": "3.28.0",
122
- "payload": "3.81.0-internal.181753b"
122
+ "payload": "3.82.0-canary.0"
123
123
  },
124
124
  "peerDependencies": {
125
125
  "graphql": "^16.8.1",
126
126
  "next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.0-canary.10 <17.0.0",
127
- "payload": "3.81.0-internal.181753b"
127
+ "payload": "3.82.0-canary.0"
128
128
  },
129
129
  "engines": {
130
130
  "node": "^18.20.2 || >=20.9.0"