@payloadcms/next 3.0.0-canary.ac498e7 → 3.0.0-canary.b6520aa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/withPayload.cjs +18 -11
- package/dist/cjs/withPayload.cjs.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +7 -5
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +3 -5
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
- package/dist/elements/EmailAndUsername/index.d.ts +14 -0
- package/dist/elements/EmailAndUsername/index.d.ts.map +1 -0
- package/dist/elements/EmailAndUsername/index.js +85 -0
- package/dist/elements/EmailAndUsername/index.js.map +1 -0
- package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
- package/dist/elements/LeaveWithoutSaving/index.js +2 -0
- package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
- package/dist/elements/Nav/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/index.client.js +5 -1
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +0 -17
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
- package/dist/routes/rest/collections/restoreVersion.js +2 -0
- package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
- package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
- package/dist/routes/rest/globals/restoreVersion.js +2 -0
- package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
- package/dist/scss/app.scss +5 -10
- package/dist/scss/toastify.scss +59 -0
- package/dist/scss/toasts.scss +75 -45
- package/dist/scss/type.scss +14 -23
- package/dist/scss/vars.scss +26 -47
- package/dist/utilities/initPage/handleAdminPage.js +16 -5
- package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
- package/dist/utilities/initPage/handleAuthRedirect.js +10 -2
- package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
- package/dist/utilities/initPage/shared.d.ts +14 -2
- package/dist/utilities/initPage/shared.d.ts.map +1 -1
- package/dist/utilities/initPage/shared.js +14 -4
- package/dist/utilities/initPage/shared.js.map +1 -1
- package/dist/utilities/meta.d.ts.map +1 -1
- package/dist/utilities/meta.js +2 -4
- package/dist/utilities/meta.js.map +1 -1
- package/dist/views/CreateFirstUser/index.client.d.ts +2 -3
- package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.client.js +13 -19
- package/dist/views/CreateFirstUser/index.client.js.map +1 -1
- package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.js +8 -49
- package/dist/views/CreateFirstUser/index.js.map +1 -1
- package/dist/views/CreateFirstUser/index.scss +4 -0
- package/dist/views/Dashboard/Default/index.scss +11 -7
- package/dist/views/Document/getDocumentData.d.ts +1 -0
- package/dist/views/Document/getDocumentData.d.ts.map +1 -1
- package/dist/views/Document/getDocumentData.js +3 -2
- package/dist/views/Document/getDocumentData.js.map +1 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +2 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/APIKey.js +2 -1
- package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
- package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/index.js +65 -32
- package/dist/views/Edit/Default/Auth/index.js.map +1 -1
- package/dist/views/Edit/Default/Auth/types.d.ts +2 -0
- package/dist/views/Edit/Default/Auth/types.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/types.js.map +1 -1
- package/dist/views/Edit/Default/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/index.js +16 -9
- package/dist/views/Edit/Default/index.js.map +1 -1
- package/dist/views/Edit/Default/index.scss +2 -2
- package/dist/views/ForgotPassword/index.js +1 -0
- package/dist/views/ForgotPassword/index.js.map +1 -1
- package/dist/views/List/Default/index.scss +2 -5
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +17 -3
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Login/LoginField/index.d.ts +2 -0
- package/dist/views/Login/LoginField/index.d.ts.map +1 -1
- package/dist/views/Login/LoginField/index.js +11 -66
- package/dist/views/Login/LoginField/index.js.map +1 -1
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +2 -19
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
- package/dist/views/Logout/LogoutClient.js +2 -1
- package/dist/views/Logout/LogoutClient.js.map +1 -1
- package/dist/views/NotFound/index.client.d.ts.map +1 -1
- package/dist/views/NotFound/index.client.js +1 -0
- package/dist/views/NotFound/index.client.js.map +1 -1
- package/dist/views/ResetPassword/index.client.d.ts.map +1 -1
- package/dist/views/ResetPassword/index.client.js +11 -27
- package/dist/views/ResetPassword/index.client.js.map +1 -1
- package/dist/views/Unauthorized/index.d.ts.map +1 -1
- package/dist/views/Unauthorized/index.js +1 -0
- package/dist/views/Unauthorized/index.js.map +1 -1
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +3 -1
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +41 -21
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/index.js +3 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +35 -8
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Version/Restore/index.scss +31 -0
- package/dist/views/Version/Restore/types.d.ts +1 -0
- package/dist/views/Version/Restore/types.d.ts.map +1 -1
- package/dist/views/Version/Restore/types.js.map +1 -1
- package/dist/views/Version/index.d.ts.map +1 -1
- package/dist/views/Version/index.js +2 -2
- package/dist/views/Version/index.js.map +1 -1
- package/dist/views/Versions/index.client.d.ts.map +1 -1
- package/dist/views/Versions/index.client.js +3 -2
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/withPayload.d.ts.map +1 -1
- package/dist/withPayload.js +18 -11
- package/dist/withPayload.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { SanitizedConfig } from 'payload';
|
|
2
|
-
export declare const isAdminRoute: (
|
|
3
|
-
|
|
2
|
+
export declare const isAdminRoute: ({ adminRoute, config, route, }: {
|
|
3
|
+
adminRoute: string;
|
|
4
|
+
config: SanitizedConfig;
|
|
5
|
+
route: string;
|
|
6
|
+
}) => boolean;
|
|
7
|
+
export declare const isAdminAuthRoute: ({ adminRoute, config, route, }: {
|
|
8
|
+
adminRoute: string;
|
|
9
|
+
config: SanitizedConfig;
|
|
10
|
+
route: string;
|
|
11
|
+
}) => boolean;
|
|
12
|
+
export declare const getRouteWithoutAdmin: ({ adminRoute, route, }: {
|
|
13
|
+
adminRoute: string;
|
|
14
|
+
route: string;
|
|
15
|
+
}) => string;
|
|
4
16
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAa9C,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAa9C,eAAO,MAAM,YAAY,mCAItB;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,KAAG,OAEH,CAAA;AAED,eAAO,MAAM,gBAAgB,mCAI1B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,KAAG,OAQH,CAAA;AAED,eAAO,MAAM,oBAAoB,2BAG9B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,KAAG,MAEH,CAAA"}
|
|
@@ -8,12 +8,22 @@ const authRouteKeys = [
|
|
|
8
8
|
'unauthorized',
|
|
9
9
|
'reset'
|
|
10
10
|
];
|
|
11
|
-
export const isAdminRoute = (
|
|
12
|
-
return route.startsWith(adminRoute)
|
|
11
|
+
export const isAdminRoute = ({ adminRoute, config, route })=>{
|
|
12
|
+
return route.startsWith(adminRoute) && !isAdminAuthRoute({
|
|
13
|
+
adminRoute,
|
|
14
|
+
config,
|
|
15
|
+
route
|
|
16
|
+
});
|
|
13
17
|
};
|
|
14
|
-
export const isAdminAuthRoute = (config, route
|
|
18
|
+
export const isAdminAuthRoute = ({ adminRoute, config, route })=>{
|
|
15
19
|
const authRoutes = config.admin?.routes ? Object.entries(config.admin.routes).filter(([key])=>authRouteKeys.includes(key)).map(([_, value])=>value) : [];
|
|
16
|
-
return authRoutes.some((r)=>
|
|
20
|
+
return authRoutes.some((r)=>getRouteWithoutAdmin({
|
|
21
|
+
adminRoute,
|
|
22
|
+
route
|
|
23
|
+
}).startsWith(r));
|
|
24
|
+
};
|
|
25
|
+
export const getRouteWithoutAdmin = ({ adminRoute, route })=>{
|
|
26
|
+
return adminRoute && adminRoute !== '/' ? route.replace(adminRoute, '') : route;
|
|
17
27
|
};
|
|
18
28
|
|
|
19
29
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utilities/initPage/shared.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nconst authRouteKeys: (keyof SanitizedConfig['admin']['routes'])[] = [\n 'createFirstUser',\n 'forgot',\n 'login',\n 'logout',\n 'forgot',\n 'inactivity',\n 'unauthorized',\n 'reset',\n]\n\nexport const isAdminRoute = (route: string
|
|
1
|
+
{"version":3,"sources":["../../../src/utilities/initPage/shared.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nconst authRouteKeys: (keyof SanitizedConfig['admin']['routes'])[] = [\n 'createFirstUser',\n 'forgot',\n 'login',\n 'logout',\n 'forgot',\n 'inactivity',\n 'unauthorized',\n 'reset',\n]\n\nexport const isAdminRoute = ({\n adminRoute,\n config,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n route: string\n}): boolean => {\n return route.startsWith(adminRoute) && !isAdminAuthRoute({ adminRoute, config, route })\n}\n\nexport const isAdminAuthRoute = ({\n adminRoute,\n config,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n route: string\n}): boolean => {\n const authRoutes = config.admin?.routes\n ? Object.entries(config.admin.routes)\n .filter(([key]) => authRouteKeys.includes(key as keyof SanitizedConfig['admin']['routes']))\n .map(([_, value]) => value)\n : []\n\n return authRoutes.some((r) => getRouteWithoutAdmin({ adminRoute, route }).startsWith(r))\n}\n\nexport const getRouteWithoutAdmin = ({\n adminRoute,\n route,\n}: {\n adminRoute: string\n route: string\n}): string => {\n return adminRoute && adminRoute !== '/' ? route.replace(adminRoute, '') : route\n}\n"],"names":["authRouteKeys","isAdminRoute","adminRoute","config","route","startsWith","isAdminAuthRoute","authRoutes","admin","routes","Object","entries","filter","key","includes","map","_","value","some","r","getRouteWithoutAdmin","replace"],"mappings":"AAEA,MAAMA,gBAA8D;IAClE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,OAAO,MAAMC,eAAe,CAAC,EAC3BC,UAAU,EACVC,MAAM,EACNC,KAAK,EAKN;IACC,OAAOA,MAAMC,UAAU,CAACH,eAAe,CAACI,iBAAiB;QAAEJ;QAAYC;QAAQC;IAAM;AACvF,EAAC;AAED,OAAO,MAAME,mBAAmB,CAAC,EAC/BJ,UAAU,EACVC,MAAM,EACNC,KAAK,EAKN;IACC,MAAMG,aAAaJ,OAAOK,KAAK,EAAEC,SAC7BC,OAAOC,OAAO,CAACR,OAAOK,KAAK,CAACC,MAAM,EAC/BG,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKb,cAAcc,QAAQ,CAACD,MACzCE,GAAG,CAAC,CAAC,CAACC,GAAGC,MAAM,GAAKA,SACvB,EAAE;IAEN,OAAOV,WAAWW,IAAI,CAAC,CAACC,IAAMC,qBAAqB;YAAElB;YAAYE;QAAM,GAAGC,UAAU,CAACc;AACvF,EAAC;AAED,OAAO,MAAMC,uBAAuB,CAAC,EACnClB,UAAU,EACVE,KAAK,EAIN;IACC,OAAOF,cAAcA,eAAe,MAAME,MAAMiB,OAAO,CAACnB,YAAY,MAAME;AAC5E,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/utilities/meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/utilities/meta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,SAAS,CAAA;AAYrD,eAAO,MAAM,IAAI,SAAgB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,KAAG,OAAO,CAAC,GAAG,CAwFhF,CAAA"}
|
package/dist/utilities/meta.js
CHANGED
|
@@ -22,11 +22,9 @@ export const meta = async (args)=>{
|
|
|
22
22
|
url: typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight
|
|
23
23
|
}
|
|
24
24
|
];
|
|
25
|
-
let icons =
|
|
26
|
-
;
|
|
25
|
+
let icons = payloadIcons;
|
|
27
26
|
if (customIcons && typeof customIcons === 'object' && Array.isArray(customIcons)) {
|
|
28
|
-
icons =
|
|
29
|
-
;
|
|
27
|
+
icons = customIcons;
|
|
30
28
|
}
|
|
31
29
|
const metaTitle = `${title} ${titleSuffix}`;
|
|
32
30
|
const ogTitle = `${typeof openGraphFromProps?.title === 'string' ? openGraphFromProps.title : title} ${titleSuffix}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/meta.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type {
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/meta.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type { IconConfig, MetaConfig } from 'payload'\n\nimport { payloadFaviconDark, payloadFaviconLight, staticOGImage } from '@payloadcms/ui/assets'\nimport * as qs from 'qs-esm'\n\nconst defaultOpenGraph = {\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 meta = async (args: { serverURL: string } & MetaConfig): Promise<any> => {\n const {\n defaultOGImageType,\n description,\n icons: customIcons,\n keywords,\n openGraph: openGraphFromProps,\n serverURL,\n title,\n titleSuffix,\n } = args\n\n const payloadIcons: IconConfig[] = [\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: typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight,\n },\n ]\n\n let icons = payloadIcons\n\n if (customIcons && typeof customIcons === 'object' && Array.isArray(customIcons)) {\n icons = customIcons\n }\n\n const metaTitle = `${title} ${titleSuffix}`\n\n const ogTitle = `${typeof openGraphFromProps?.title === 'string' ? openGraphFromProps.title : 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: openGraphFromProps?.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 ...(openGraphFromProps || {}),\n }\n\n return Promise.resolve({\n description,\n icons,\n keywords,\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"],"names":["payloadFaviconDark","payloadFaviconLight","staticOGImage","qs","defaultOpenGraph","description","siteName","title","meta","args","defaultOGImageType","icons","customIcons","keywords","openGraph","openGraphFromProps","serverURL","titleSuffix","payloadIcons","type","rel","sizes","url","src","media","Array","isArray","metaTitle","ogTitle","mergedOpenGraph","images","alt","height","stringify","addQueryPrefix","width","Promise","resolve","metadataBase","URL","process","env","PAYLOAD_PUBLIC_SERVER_URL","PORT"],"mappings":"AAGA,SAASA,kBAAkB,EAAEC,mBAAmB,EAAEC,aAAa,QAAQ,wBAAuB;AAC9F,YAAYC,QAAQ,SAAQ;AAE5B,MAAMC,mBAAmB;IACvBC,aACE;IACFC,UAAU;IACVC,OAAO;AACT;AAEA,OAAO,MAAMC,OAAO,OAAOC;IACzB,MAAM,EACJC,kBAAkB,EAClBL,WAAW,EACXM,OAAOC,WAAW,EAClBC,QAAQ,EACRC,WAAWC,kBAAkB,EAC7BC,SAAS,EACTT,KAAK,EACLU,WAAW,EACZ,GAAGR;IAEJ,MAAMS,eAA6B;QACjC;YACEC,MAAM;YACNC,KAAK;YACLC,OAAO;YACPC,KAAK,OAAOtB,uBAAuB,WAAWA,oBAAoBuB,MAAMvB;QAC1E;QACA;YACEmB,MAAM;YACNK,OAAO;YACPJ,KAAK;YACLC,OAAO;YACPC,KAAK,OAAOrB,wBAAwB,WAAWA,qBAAqBsB,MAAMtB;QAC5E;KACD;IAED,IAAIU,QAAQO;IAEZ,IAAIN,eAAe,OAAOA,gBAAgB,YAAYa,MAAMC,OAAO,CAACd,cAAc;QAChFD,QAAQC;IACV;IAEA,MAAMe,YAAY,CAAC,EAAEpB,MAAM,CAAC,EAAEU,YAAY,CAAC;IAE3C,MAAMW,UAAU,CAAC,EAAE,OAAOb,oBAAoBR,UAAU,WAAWQ,mBAAmBR,KAAK,GAAGA,MAAM,CAAC,EAAEU,YAAY,CAAC;IAEpH,MAAMY,kBAAyC;QAC7C,GAAIzB,oBAAoB,CAAC,CAAC;QAC1B,GAAIM,uBAAuB,YACvB;YACEoB,QAAQ;gBACN;oBACEC,KAAKH;oBACLI,QAAQ;oBACRV,KAAK,CAAC,OAAO,EAAEnB,GAAG8B,SAAS,CACzB;wBACE5B,aAAaU,oBAAoBV,eAAeD,iBAAiBC,WAAW;wBAC5EE,OAAOqB;oBACT,GACA;wBACEM,gBAAgB;oBAClB,GACA,CAAC;oBACHC,OAAO;gBACT;aACD;QACH,IACA,CAAC,CAAC;QACN,GAAIzB,uBAAuB,WACvB;YACEoB,QAAQ;gBACN;oBACEC,KAAKH;oBACLI,QAAQ;oBACRV,KAAK,OAAOpB,kBAAkB,WAAWA,eAAeqB,MAAMrB;oBAC9DiC,OAAO;gBACT;aACD;QACH,IACA,CAAC,CAAC;QACN5B,OAAOqB;QACP,GAAIb,sBAAsB,CAAC,CAAC;IAC9B;IAEA,OAAOqB,QAAQC,OAAO,CAAC;QACrBhC;QACAM;QACAE;QACAyB,cAAc,IAAIC,IAChBvB,aACEwB,QAAQC,GAAG,CAACC,yBAAyB,IACrC,CAAC,iBAAiB,EAAEF,QAAQC,GAAG,CAACE,IAAI,IAAI,KAAK,CAAC;QAElD7B,WAAWe;QACXtB,OAAOoB;IACT;AACF,EAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { FormState } from 'payload';
|
|
1
|
+
import type { FormState, LoginWithUsernameOptions } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export declare const CreateFirstUserClient: React.FC<{
|
|
4
4
|
initialState: FormState;
|
|
5
|
-
|
|
6
|
-
requireEmail?: boolean;
|
|
5
|
+
loginWithUsername?: LoginWithUsernameOptions | false;
|
|
7
6
|
userSlug: string;
|
|
8
7
|
}>;
|
|
9
8
|
//# sourceMappingURL=index.client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAclE,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,YAAY,EAAE,SAAS,CAAA;IACvB,iBAAiB,CAAC,EAAE,wBAAwB,GAAG,KAAK,CAAA;IACpD,QAAQ,EAAE,MAAM,CAAA;CACjB,CA6DA,CAAA"}
|
|
@@ -3,26 +3,24 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { ConfirmPasswordField, Form, FormSubmit, PasswordField, RenderFields, useComponentMap, useConfig, useTranslation } from '@payloadcms/ui';
|
|
4
4
|
import { getFormState } from '@payloadcms/ui/shared';
|
|
5
5
|
import React from 'react';
|
|
6
|
-
import {
|
|
7
|
-
export const CreateFirstUserClient = ({ initialState,
|
|
6
|
+
import { RenderEmailAndUsernameFields } from '../../elements/EmailAndUsername/index.js';
|
|
7
|
+
export const CreateFirstUserClient = ({ initialState, loginWithUsername, userSlug })=>{
|
|
8
8
|
const { getFieldMap } = useComponentMap();
|
|
9
9
|
const { routes: { admin, api: apiRoute }, serverURL } = useConfig();
|
|
10
10
|
const { t } = useTranslation();
|
|
11
11
|
const fieldMap = getFieldMap({
|
|
12
12
|
collectionSlug: userSlug
|
|
13
13
|
});
|
|
14
|
-
const onChange = React.useCallback(async ({ formState: prevFormState })=>{
|
|
15
|
-
return getFormState({
|
|
14
|
+
const onChange = React.useCallback(async ({ formState: prevFormState })=>getFormState({
|
|
16
15
|
apiRoute,
|
|
17
16
|
body: {
|
|
18
17
|
collectionSlug: userSlug,
|
|
19
18
|
formState: prevFormState,
|
|
20
19
|
operation: 'create',
|
|
21
|
-
schemaPath: userSlug
|
|
20
|
+
schemaPath: `_${userSlug}.auth`
|
|
22
21
|
},
|
|
23
22
|
serverURL
|
|
24
|
-
})
|
|
25
|
-
}, [
|
|
23
|
+
}), [
|
|
26
24
|
apiRoute,
|
|
27
25
|
userSlug,
|
|
28
26
|
serverURL
|
|
@@ -37,34 +35,30 @@ export const CreateFirstUserClient = ({ initialState, loginType, requireEmail =
|
|
|
37
35
|
redirect: admin,
|
|
38
36
|
validationOperation: "create",
|
|
39
37
|
children: [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}),
|
|
46
|
-
[
|
|
47
|
-
'email',
|
|
48
|
-
'emailOrUsername'
|
|
49
|
-
].includes(loginType) && /*#__PURE__*/ _jsx(LoginField, {
|
|
50
|
-
required: requireEmail,
|
|
51
|
-
type: "email"
|
|
38
|
+
/*#__PURE__*/ _jsx(RenderEmailAndUsernameFields, {
|
|
39
|
+
className: "emailAndUsername",
|
|
40
|
+
loginWithUsername: loginWithUsername,
|
|
41
|
+
operation: "create",
|
|
42
|
+
readOnly: false
|
|
52
43
|
}),
|
|
53
44
|
/*#__PURE__*/ _jsx(PasswordField, {
|
|
54
45
|
autoComplete: "off",
|
|
55
46
|
label: t('authentication:newPassword'),
|
|
56
47
|
name: "password",
|
|
48
|
+
path: "password",
|
|
57
49
|
required: true
|
|
58
50
|
}),
|
|
59
51
|
/*#__PURE__*/ _jsx(ConfirmPasswordField, {}),
|
|
60
52
|
/*#__PURE__*/ _jsx(RenderFields, {
|
|
61
53
|
fieldMap: fieldMap,
|
|
54
|
+
forceRender: true,
|
|
62
55
|
operation: "create",
|
|
63
56
|
path: "",
|
|
64
57
|
readOnly: false,
|
|
65
58
|
schemaPath: userSlug
|
|
66
59
|
}),
|
|
67
60
|
/*#__PURE__*/ _jsx(FormSubmit, {
|
|
61
|
+
size: "large",
|
|
68
62
|
children: t('general:create')
|
|
69
63
|
})
|
|
70
64
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n type FormProps,\n FormSubmit,\n PasswordField,\n RenderFields,\n useComponentMap,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormState, LoginWithUsernameOptions } from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n type FormProps,\n FormSubmit,\n PasswordField,\n RenderFields,\n useComponentMap,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport { RenderEmailAndUsernameFields } from '../../elements/EmailAndUsername/index.js'\n\nexport const CreateFirstUserClient: React.FC<{\n initialState: FormState\n loginWithUsername?: LoginWithUsernameOptions | false\n userSlug: string\n}> = ({ initialState, loginWithUsername, userSlug }) => {\n const { getFieldMap } = useComponentMap()\n\n const {\n routes: { admin, api: apiRoute },\n serverURL,\n } = useConfig()\n\n const { t } = useTranslation()\n\n const fieldMap = getFieldMap({ collectionSlug: userSlug })\n\n const onChange: FormProps['onChange'][0] = React.useCallback(\n async ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: userSlug,\n formState: prevFormState,\n operation: 'create',\n schemaPath: `_${userSlug}.auth`,\n },\n serverURL,\n }),\n [apiRoute, userSlug, serverURL],\n )\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={initialState}\n method=\"POST\"\n onChange={[onChange]}\n redirect={admin}\n validationOperation=\"create\"\n >\n <RenderEmailAndUsernameFields\n className=\"emailAndUsername\"\n loginWithUsername={loginWithUsername}\n operation=\"create\"\n readOnly={false}\n />\n <PasswordField\n autoComplete=\"off\"\n label={t('authentication:newPassword')}\n name=\"password\"\n path=\"password\"\n required\n />\n <ConfirmPasswordField />\n <RenderFields\n fieldMap={fieldMap}\n forceRender\n operation=\"create\"\n path=\"\"\n readOnly={false}\n schemaPath={userSlug}\n />\n <FormSubmit size=\"large\">{t('general:create')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["ConfirmPasswordField","Form","FormSubmit","PasswordField","RenderFields","useComponentMap","useConfig","useTranslation","getFormState","React","RenderEmailAndUsernameFields","CreateFirstUserClient","initialState","loginWithUsername","userSlug","getFieldMap","routes","admin","api","apiRoute","serverURL","t","fieldMap","collectionSlug","onChange","useCallback","formState","prevFormState","body","operation","schemaPath","action","method","redirect","validationOperation","className","readOnly","autoComplete","label","name","path","required","forceRender","size"],"mappings":"AAAA;;AAGA,SACEA,oBAAoB,EACpBC,IAAI,EAEJC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,eAAe,EACfC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,SAASC,YAAY,QAAQ,wBAAuB;AACpD,OAAOC,WAAW,QAAO;AAEzB,SAASC,4BAA4B,QAAQ,2CAA0C;AAEvF,OAAO,MAAMC,wBAIR,CAAC,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,QAAQ,EAAE;IACjD,MAAM,EAAEC,WAAW,EAAE,GAAGV;IAExB,MAAM,EACJW,QAAQ,EAAEC,KAAK,EAAEC,KAAKC,QAAQ,EAAE,EAChCC,SAAS,EACV,GAAGd;IAEJ,MAAM,EAAEe,CAAC,EAAE,GAAGd;IAEd,MAAMe,WAAWP,YAAY;QAAEQ,gBAAgBT;IAAS;IAExD,MAAMU,WAAqCf,MAAMgB,WAAW,CAC1D,OAAO,EAAEC,WAAWC,aAAa,EAAE,GACjCnB,aAAa;YACXW;YACAS,MAAM;gBACJL,gBAAgBT;gBAChBY,WAAWC;gBACXE,WAAW;gBACXC,YAAY,CAAC,CAAC,EAAEhB,SAAS,KAAK,CAAC;YACjC;YACAM;QACF,IACF;QAACD;QAAUL;QAAUM;KAAU;IAGjC,qBACE,MAACnB;QACC8B,QAAQ,CAAC,EAAEX,UAAU,EAAED,SAAS,CAAC,EAAEL,SAAS,eAAe,CAAC;QAC5DF,cAAcA;QACdoB,QAAO;QACPR,UAAU;YAACA;SAAS;QACpBS,UAAUhB;QACViB,qBAAoB;;0BAEpB,KAACxB;gBACCyB,WAAU;gBACVtB,mBAAmBA;gBACnBgB,WAAU;gBACVO,UAAU;;0BAEZ,KAACjC;gBACCkC,cAAa;gBACbC,OAAOjB,EAAE;gBACTkB,MAAK;gBACLC,MAAK;gBACLC,QAAQ;;0BAEV,KAACzC;0BACD,KAACI;gBACCkB,UAAUA;gBACVoB,WAAW;gBACXb,WAAU;gBACVW,MAAK;gBACLJ,UAAU;gBACVN,YAAYhB;;0BAEd,KAACZ;gBAAWyC,MAAK;0BAAStB,EAAE;;;;AAGlC,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAA;AAE3D,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAoCxD,CAAA"}
|
|
@@ -1,58 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema';
|
|
3
2
|
import React from 'react';
|
|
3
|
+
import { getDocumentData } from '../Document/getDocumentData.js';
|
|
4
4
|
import { CreateFirstUserClient } from './index.client.js';
|
|
5
5
|
export { generateCreateFirstUserMetadata } from './meta.js';
|
|
6
6
|
export const CreateFirstUserView = async ({ initPageResult })=>{
|
|
7
|
-
const { req, req: { payload: { config: { admin: { user: userSlug } }, config } } } = initPageResult;
|
|
7
|
+
const { locale, req, req: { payload: { config: { admin: { user: userSlug } }, config } } } = initPageResult;
|
|
8
8
|
const collectionConfig = config.collections?.find((collection)=>collection?.slug === userSlug);
|
|
9
9
|
const { auth: authOptions } = collectionConfig;
|
|
10
10
|
const loginWithUsername = authOptions.loginWithUsername;
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
const emailField = {
|
|
18
|
-
name: 'email',
|
|
19
|
-
type: 'email',
|
|
20
|
-
label: req.t('general:emailAddress'),
|
|
21
|
-
required: emailRequired ? true : false
|
|
22
|
-
};
|
|
23
|
-
const usernameField = {
|
|
24
|
-
name: 'username',
|
|
25
|
-
type: 'text',
|
|
26
|
-
label: req.t('authentication:username'),
|
|
27
|
-
required: true
|
|
28
|
-
};
|
|
29
|
-
const fields = [
|
|
30
|
-
...loginWithUsername ? [
|
|
31
|
-
usernameField
|
|
32
|
-
] : [],
|
|
33
|
-
...emailRequired || loginWithEmail ? [
|
|
34
|
-
emailField
|
|
35
|
-
] : [],
|
|
36
|
-
{
|
|
37
|
-
name: 'password',
|
|
38
|
-
type: 'text',
|
|
39
|
-
label: req.t('general:password'),
|
|
40
|
-
required: true
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: 'confirm-password',
|
|
44
|
-
type: 'text',
|
|
45
|
-
label: req.t('authentication:confirmPassword'),
|
|
46
|
-
required: true
|
|
47
|
-
}
|
|
48
|
-
];
|
|
49
|
-
const formState = await buildStateFromSchema({
|
|
50
|
-
fieldSchema: fields,
|
|
51
|
-
operation: 'create',
|
|
52
|
-
preferences: {
|
|
53
|
-
fields: {}
|
|
54
|
-
},
|
|
55
|
-
req
|
|
11
|
+
const { formState } = await getDocumentData({
|
|
12
|
+
collectionConfig,
|
|
13
|
+
locale,
|
|
14
|
+
req,
|
|
15
|
+
schemaPath: `_${collectionConfig.slug}.auth`
|
|
56
16
|
});
|
|
57
17
|
return /*#__PURE__*/ _jsxs("div", {
|
|
58
18
|
className: "create-first-user",
|
|
@@ -65,8 +25,7 @@ export const CreateFirstUserView = async ({ initPageResult })=>{
|
|
|
65
25
|
}),
|
|
66
26
|
/*#__PURE__*/ _jsx(CreateFirstUserClient, {
|
|
67
27
|
initialState: formState,
|
|
68
|
-
|
|
69
|
-
requireEmail: emailRequired,
|
|
28
|
+
loginWithUsername: loginWithUsername,
|
|
70
29
|
userSlug: userSlug
|
|
71
30
|
})
|
|
72
31
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type { AdminViewProps
|
|
1
|
+
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport React from 'react'\n\nimport type { LoginFieldProps } from '../Login/LoginField/index.js'\n\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { CreateFirstUserClient } from './index.client.js'\nimport './index.scss'\n\nexport { generateCreateFirstUserMetadata } from './meta.js'\n\nexport const CreateFirstUserView: React.FC<AdminViewProps> = async ({ initPageResult }) => {\n const {\n locale,\n req,\n req: {\n payload: {\n config: {\n admin: { user: userSlug },\n },\n config,\n },\n },\n } = initPageResult\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n\n const { formState } = await getDocumentData({\n collectionConfig,\n locale,\n req,\n schemaPath: `_${collectionConfig.slug}.auth`,\n })\n\n return (\n <div className=\"create-first-user\">\n <h1>{req.t('general:welcome')}</h1>\n <p>{req.t('authentication:beginCreateFirstUser')}</p>\n <CreateFirstUserClient\n initialState={formState}\n loginWithUsername={loginWithUsername}\n userSlug={userSlug}\n />\n </div>\n )\n}\n"],"names":["React","getDocumentData","CreateFirstUserClient","generateCreateFirstUserMetadata","CreateFirstUserView","initPageResult","locale","req","payload","config","admin","user","userSlug","collectionConfig","collections","find","collection","slug","auth","authOptions","loginWithUsername","formState","schemaPath","div","className","h1","t","p","initialState"],"mappings":";AAEA,OAAOA,WAAW,QAAO;AAIzB,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,qBAAqB,QAAQ,oBAAmB;AAGzD,SAASC,+BAA+B,QAAQ,YAAW;AAE3D,OAAO,MAAMC,sBAAgD,OAAO,EAAEC,cAAc,EAAE;IACpF,MAAM,EACJC,MAAM,EACNC,GAAG,EACHA,KAAK,EACHC,SAAS,EACPC,QAAQ,EACNC,OAAO,EAAEC,MAAMC,QAAQ,EAAE,EAC1B,EACDH,MAAM,EACP,EACF,EACF,GAAGJ;IAEJ,MAAMQ,mBAAmBJ,OAAOK,WAAW,EAAEC,KAAK,CAACC,aAAeA,YAAYC,SAASL;IACvF,MAAM,EAAEM,MAAMC,WAAW,EAAE,GAAGN;IAC9B,MAAMO,oBAAoBD,YAAYC,iBAAiB;IAEvD,MAAM,EAAEC,SAAS,EAAE,GAAG,MAAMpB,gBAAgB;QAC1CY;QACAP;QACAC;QACAe,YAAY,CAAC,CAAC,EAAET,iBAAiBI,IAAI,CAAC,KAAK,CAAC;IAC9C;IAEA,qBACE,MAACM;QAAIC,WAAU;;0BACb,KAACC;0BAAIlB,IAAImB,CAAC,CAAC;;0BACX,KAACC;0BAAGpB,IAAImB,CAAC,CAAC;;0BACV,KAACxB;gBACC0B,cAAcP;gBACdD,mBAAmBA;gBACnBR,UAAUA;;;;AAIlB,EAAC"}
|
|
@@ -26,13 +26,9 @@
|
|
|
26
26
|
padding: 0;
|
|
27
27
|
margin: 0;
|
|
28
28
|
list-style: none;
|
|
29
|
-
display: flex;
|
|
30
29
|
gap: var(--gap);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
li {
|
|
34
|
-
width: calc(100% / var(--cols) - var(--gap) / var(--cols) * (var(--cols) - 1));
|
|
35
|
-
}
|
|
30
|
+
display: grid;
|
|
31
|
+
grid-template-columns: repeat(var(--cols), 1fr);
|
|
36
32
|
|
|
37
33
|
.card {
|
|
38
34
|
height: 100%;
|
|
@@ -49,10 +45,18 @@
|
|
|
49
45
|
}
|
|
50
46
|
|
|
51
47
|
@include small-break {
|
|
52
|
-
--cols:
|
|
48
|
+
--cols: 2;
|
|
53
49
|
|
|
54
50
|
&__wrap {
|
|
55
51
|
gap: var(--base);
|
|
56
52
|
}
|
|
53
|
+
|
|
54
|
+
&__card-list {
|
|
55
|
+
gap: base(0.4);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@include extra-small-break {
|
|
60
|
+
--cols: 1;
|
|
57
61
|
}
|
|
58
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDocumentData.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getDocumentData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,eAAe,SAAgB;IAC1C,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"getDocumentData.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getDocumentData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,eAAe,SAAgB;IAC1C,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,CA8Bf,CAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { buildFormState } from '@payloadcms/ui/utilities/buildFormState';
|
|
2
2
|
import { reduceFieldsToValues } from 'payload/shared';
|
|
3
3
|
export const getDocumentData = async (args)=>{
|
|
4
|
-
const { id, collectionConfig, globalConfig, locale, req } = args;
|
|
4
|
+
const { id, collectionConfig, globalConfig, locale, req, schemaPath: schemaPathFromProps } = args;
|
|
5
|
+
const schemaPath = schemaPathFromProps || collectionConfig?.slug || globalConfig?.slug;
|
|
5
6
|
try {
|
|
6
7
|
const formState = await buildFormState({
|
|
7
8
|
req: {
|
|
@@ -12,7 +13,7 @@ export const getDocumentData = async (args)=>{
|
|
|
12
13
|
globalSlug: globalConfig?.slug,
|
|
13
14
|
locale: locale?.code,
|
|
14
15
|
operation: collectionConfig && id || globalConfig ? 'update' : 'create',
|
|
15
|
-
schemaPath
|
|
16
|
+
schemaPath
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/Document/getDocumentData.tsx"],"sourcesContent":["import type {\n Data,\n Locale,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nexport const getDocumentData = async (args: {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale: Locale\n req: PayloadRequest\n}): Promise<Data> => {\n const { id, collectionConfig, globalConfig, locale, req } = args\n\n try {\n const formState = await buildFormState({\n req: {\n ...req,\n data: {\n id,\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n locale: locale?.code,\n operation: (collectionConfig && id) || globalConfig ? 'update' : 'create',\n schemaPath
|
|
1
|
+
{"version":3,"sources":["../../../src/views/Document/getDocumentData.tsx"],"sourcesContent":["import type {\n Data,\n Locale,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nexport const getDocumentData = async (args: {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale: Locale\n req: PayloadRequest\n schemaPath?: string\n}): Promise<Data> => {\n const { id, collectionConfig, globalConfig, locale, req, schemaPath: schemaPathFromProps } = args\n\n const schemaPath = schemaPathFromProps || collectionConfig?.slug || globalConfig?.slug\n\n try {\n const formState = await buildFormState({\n req: {\n ...req,\n data: {\n id,\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n locale: locale?.code,\n operation: (collectionConfig && id) || globalConfig ? 'update' : 'create',\n schemaPath,\n },\n },\n })\n\n const data = reduceFieldsToValues(formState, true)\n\n return {\n data,\n formState,\n }\n } catch (error) {\n console.error('Error getting document data', error) // eslint-disable-line no-console\n return {}\n }\n}\n"],"names":["buildFormState","reduceFieldsToValues","getDocumentData","args","id","collectionConfig","globalConfig","locale","req","schemaPath","schemaPathFromProps","slug","formState","data","collectionSlug","globalSlug","code","operation","error","console"],"mappings":"AAQA,SAASA,cAAc,QAAQ,0CAAyC;AACxE,SAASC,oBAAoB,QAAQ,iBAAgB;AAErD,OAAO,MAAMC,kBAAkB,OAAOC;IAQpC,MAAM,EAAEC,EAAE,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,MAAM,EAAEC,GAAG,EAAEC,YAAYC,mBAAmB,EAAE,GAAGP;IAE7F,MAAMM,aAAaC,uBAAuBL,kBAAkBM,QAAQL,cAAcK;IAElF,IAAI;QACF,MAAMC,YAAY,MAAMZ,eAAe;YACrCQ,KAAK;gBACH,GAAGA,GAAG;gBACNK,MAAM;oBACJT;oBACAU,gBAAgBT,kBAAkBM;oBAClCI,YAAYT,cAAcK;oBAC1BJ,QAAQA,QAAQS;oBAChBC,WAAW,AAACZ,oBAAoBD,MAAOE,eAAe,WAAW;oBACjEG;gBACF;YACF;QACF;QAEA,MAAMI,OAAOZ,qBAAqBW,WAAW;QAE7C,OAAO;YACLC;YACAD;QACF;IACF,EAAE,OAAOM,OAAO;QACdC,QAAQD,KAAK,CAAC,+BAA+BA,OAAO,iCAAiC;;QACrF,OAAO,CAAC;IACV;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAqB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAqB,MAAM,SAAS,CAAA;AAUpF,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AASrE,eAAO,MAAM,gBAAgB,EAAE,wBAAiE,CAAA;AAEhG,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAmO7C,CAAA"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { DocumentInfoProvider, EditDepthProvider, HydrateClientUser } from '@payloadcms/ui';
|
|
3
3
|
import { RenderCustomComponent, formatAdminURL, isEditing as getIsEditing } from '@payloadcms/ui/shared';
|
|
4
4
|
import { notFound, redirect } from 'next/navigation.js';
|
|
5
|
+
import { deepCopyObjectSimple } from 'payload';
|
|
5
6
|
import React from 'react';
|
|
6
7
|
import { DocumentHeader } from '../../elements/DocumentHeader/index.js';
|
|
7
8
|
import { NotFoundView } from '../NotFound/index.js';
|
|
@@ -149,7 +150,7 @@ export const Document = async ({ initPageResult, params, searchParams })=>{
|
|
|
149
150
|
permissions: permissions
|
|
150
151
|
}),
|
|
151
152
|
/*#__PURE__*/ _jsx(HydrateClientUser, {
|
|
152
|
-
permissions: permissions,
|
|
153
|
+
permissions: deepCopyObjectSimple(permissions),
|
|
153
154
|
user: user
|
|
154
155
|
}),
|
|
155
156
|
/*#__PURE__*/ _jsx(EditDepthProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type { AdminViewComponent, AdminViewProps, EditViewComponent } from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateClientUser } from '@payloadcms/ui'\nimport { RenderCustomComponent, formatAdminURL , isEditing as getIsEditing } from '@payloadcms/ui/shared'\nimport { notFound, redirect } from 'next/navigation.js'\nimport React from 'react'\n\nimport type { GenerateEditViewMetadata } from './getMetaBySegment.js'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { getDocumentData } from './getDocumentData.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\nimport { getMetaBySegment } from './getMetaBySegment.js'\nimport { getViewsFromConfig } from './getViewsFromConfig.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async (args) => getMetaBySegment(args)\n\nexport const Document: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n collectionConfig,\n docID: id,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n\n const isEditing = getIsEditing({ id, collectionSlug, globalSlug })\n\n let ViewOverride: EditViewComponent\n let CustomView: EditViewComponent\n let DefaultView: EditViewComponent\n let ErrorView: AdminViewComponent\n\n let apiURL: string\n\n const { data, formState } = await getDocumentData({\n id,\n collectionConfig,\n globalConfig,\n locale,\n req,\n })\n\n const { docPermissions, hasPublishPermission, hasSavePermission } = await getDocumentPermissions({\n id,\n collectionConfig,\n data,\n globalConfig,\n req,\n })\n\n if (collectionConfig) {\n if (!visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug)) {\n notFound()\n }\n\n const params = new URLSearchParams()\n if (collectionConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${collectionSlug}/${id}${apiQueryParams}`\n\n const editConfig = collectionConfig?.admin?.components?.views?.Edit\n ViewOverride = typeof editConfig === 'function' ? editConfig : null\n\n if (!ViewOverride) {\n const collectionViews = getViewsFromConfig({\n collectionConfig,\n config,\n docPermissions,\n routeSegments: segments,\n })\n\n CustomView = collectionViews?.CustomView\n DefaultView = collectionViews?.DefaultView\n ErrorView = collectionViews?.ErrorView\n }\n\n if (!CustomView && !DefaultView && !ViewOverride && !ErrorView) {\n ErrorView = NotFoundView\n }\n }\n\n if (globalConfig) {\n if (!visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)) {\n notFound()\n }\n\n const params = new URLSearchParams({\n locale: locale?.code,\n })\n if (globalConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${globalSlug}${apiQueryParams}`\n\n const editConfig = globalConfig?.admin?.components?.views?.Edit\n ViewOverride = typeof editConfig === 'function' ? editConfig : null\n\n if (!ViewOverride) {\n const globalViews = getViewsFromConfig({\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n })\n\n CustomView = globalViews?.CustomView\n DefaultView = globalViews?.DefaultView\n ErrorView = globalViews?.ErrorView\n\n if (!CustomView && !DefaultView && !ViewOverride && !ErrorView) {\n ErrorView = NotFoundView\n }\n }\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave =\n hasSavePermission &&\n ((collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave))\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n if (shouldAutosave && !validateDraftData && !id && collectionSlug) {\n const doc = await payload.create({\n collection: collectionSlug,\n data: {},\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n serverURL,\n })\n redirect(redirectURL)\n } else {\n notFound()\n }\n }\n\n return (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n disableActions={false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n initialData={data}\n initialState={formState}\n isEditing={isEditing}\n >\n {!ViewOverride && (\n <DocumentHeader\n collectionConfig={collectionConfig}\n config={payload.config}\n globalConfig={globalConfig}\n i18n={i18n}\n permissions={permissions}\n />\n )}\n <HydrateClientUser permissions={permissions} user={user} />\n <EditDepthProvider\n depth={1}\n key={`${collectionSlug || globalSlug}${locale?.code ? `-${locale?.code}` : ''}`}\n >\n {ErrorView ? (\n <ErrorView initPageResult={initPageResult} searchParams={searchParams} />\n ) : (\n <RenderCustomComponent\n CustomComponent={ViewOverride || CustomView}\n DefaultComponent={DefaultView}\n serverOnlyProps={{\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n user,\n }}\n />\n )}\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n}\n"],"names":["DocumentInfoProvider","EditDepthProvider","HydrateClientUser","RenderCustomComponent","formatAdminURL","isEditing","getIsEditing","notFound","redirect","React","DocumentHeader","NotFoundView","getDocumentData","getDocumentPermissions","getMetaBySegment","getViewsFromConfig","generateMetadata","args","Document","initPageResult","params","searchParams","collectionConfig","docID","id","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","serverURL","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","ViewOverride","CustomView","DefaultView","ErrorView","apiURL","data","formState","docPermissions","hasPublishPermission","hasSavePermission","collections","find","visibleSlug","URLSearchParams","versions","drafts","append","code","apiQueryParams","toString","editConfig","components","views","Edit","collectionViews","routeSegments","globals","globalViews","shouldAutosave","autosave","validateDraftData","validate","doc","create","collection","depth","draft","fallbackLocale","redirectURL","path","disableActions","initialData","initialState","CustomComponent","DefaultComponent","serverOnlyProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type { AdminViewComponent, AdminViewProps, EditViewComponent } from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateClientUser } from '@payloadcms/ui'\nimport {\n RenderCustomComponent,\n formatAdminURL,\n isEditing as getIsEditing,\n} from '@payloadcms/ui/shared'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { deepCopyObjectSimple } from 'payload'\nimport React from 'react'\n\nimport type { GenerateEditViewMetadata } from './getMetaBySegment.js'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { getDocumentData } from './getDocumentData.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\nimport { getMetaBySegment } from './getMetaBySegment.js'\nimport { getViewsFromConfig } from './getViewsFromConfig.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async (args) => getMetaBySegment(args)\n\nexport const Document: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n collectionConfig,\n docID: id,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n\n const isEditing = getIsEditing({ id, collectionSlug, globalSlug })\n\n let ViewOverride: EditViewComponent\n let CustomView: EditViewComponent\n let DefaultView: EditViewComponent\n let ErrorView: AdminViewComponent\n\n let apiURL: string\n\n const { data, formState } = await getDocumentData({\n id,\n collectionConfig,\n globalConfig,\n locale,\n req,\n })\n\n const { docPermissions, hasPublishPermission, hasSavePermission } = await getDocumentPermissions({\n id,\n collectionConfig,\n data,\n globalConfig,\n req,\n })\n\n if (collectionConfig) {\n if (!visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug)) {\n notFound()\n }\n\n const params = new URLSearchParams()\n if (collectionConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${collectionSlug}/${id}${apiQueryParams}`\n\n const editConfig = collectionConfig?.admin?.components?.views?.Edit\n ViewOverride = typeof editConfig === 'function' ? editConfig : null\n\n if (!ViewOverride) {\n const collectionViews = getViewsFromConfig({\n collectionConfig,\n config,\n docPermissions,\n routeSegments: segments,\n })\n\n CustomView = collectionViews?.CustomView\n DefaultView = collectionViews?.DefaultView\n ErrorView = collectionViews?.ErrorView\n }\n\n if (!CustomView && !DefaultView && !ViewOverride && !ErrorView) {\n ErrorView = NotFoundView\n }\n }\n\n if (globalConfig) {\n if (!visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)) {\n notFound()\n }\n\n const params = new URLSearchParams({\n locale: locale?.code,\n })\n if (globalConfig.versions?.drafts) {\n params.append('draft', 'true')\n }\n if (locale?.code) {\n params.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${params.toString()}`\n\n apiURL = `${serverURL}${apiRoute}/${globalSlug}${apiQueryParams}`\n\n const editConfig = globalConfig?.admin?.components?.views?.Edit\n ViewOverride = typeof editConfig === 'function' ? editConfig : null\n\n if (!ViewOverride) {\n const globalViews = getViewsFromConfig({\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n })\n\n CustomView = globalViews?.CustomView\n DefaultView = globalViews?.DefaultView\n ErrorView = globalViews?.ErrorView\n\n if (!CustomView && !DefaultView && !ViewOverride && !ErrorView) {\n ErrorView = NotFoundView\n }\n }\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave =\n hasSavePermission &&\n ((collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave))\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n if (shouldAutosave && !validateDraftData && !id && collectionSlug) {\n const doc = await payload.create({\n collection: collectionSlug,\n data: {},\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n serverURL,\n })\n redirect(redirectURL)\n } else {\n notFound()\n }\n }\n\n return (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n disableActions={false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n initialData={data}\n initialState={formState}\n isEditing={isEditing}\n >\n {!ViewOverride && (\n <DocumentHeader\n collectionConfig={collectionConfig}\n config={payload.config}\n globalConfig={globalConfig}\n i18n={i18n}\n permissions={permissions}\n />\n )}\n {/**\n * After bumping the Next.js canary to 104, and React to 19.0.0-rc-06d0b89e-20240801\" we have to deepCopy the permissions object (https://github.com/payloadcms/payload/pull/7541).\n * If both HydrateClientUser and RenderCustomComponent receive the same permissions object (same object reference), we get a\n * \"TypeError: Cannot read properties of undefined (reading '$$typeof')\" error when loading up some version views - for example a versions\n * view in the draft-posts collection of the versions test suite. RenderCustomComponent is what renders the versions view.\n *\n * // TODO: Revisit this in the future and figure out why this is happening. Might be a React/Next.js bug. We don't know why it happens, and a future React/Next version might unbreak this (keep an eye on this and remove deepCopyObjectSimple if that's the case)\n */}\n <HydrateClientUser permissions={deepCopyObjectSimple(permissions)} user={user} />\n <EditDepthProvider\n depth={1}\n key={`${collectionSlug || globalSlug}${locale?.code ? `-${locale?.code}` : ''}`}\n >\n {ErrorView ? (\n <ErrorView initPageResult={initPageResult} searchParams={searchParams} />\n ) : (\n <RenderCustomComponent\n CustomComponent={ViewOverride || CustomView}\n DefaultComponent={DefaultView}\n serverOnlyProps={{\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n user,\n }}\n />\n )}\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n}\n"],"names":["DocumentInfoProvider","EditDepthProvider","HydrateClientUser","RenderCustomComponent","formatAdminURL","isEditing","getIsEditing","notFound","redirect","deepCopyObjectSimple","React","DocumentHeader","NotFoundView","getDocumentData","getDocumentPermissions","getMetaBySegment","getViewsFromConfig","generateMetadata","args","Document","initPageResult","params","searchParams","collectionConfig","docID","id","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","serverURL","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","ViewOverride","CustomView","DefaultView","ErrorView","apiURL","data","formState","docPermissions","hasPublishPermission","hasSavePermission","collections","find","visibleSlug","URLSearchParams","versions","drafts","append","code","apiQueryParams","toString","editConfig","components","views","Edit","collectionViews","routeSegments","globals","globalViews","shouldAutosave","autosave","validateDraftData","validate","doc","create","collection","depth","draft","fallbackLocale","redirectURL","path","disableActions","initialData","initialState","CustomComponent","DefaultComponent","serverOnlyProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAO3D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAO3D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAgGrE,CAAA"}
|
|
@@ -61,7 +61,7 @@ export const APIKey = ({ enabled, readOnly })=>{
|
|
|
61
61
|
if (!apiKeyValue && enabled) {
|
|
62
62
|
setValue(initialAPIKey);
|
|
63
63
|
}
|
|
64
|
-
if (!enabled) {
|
|
64
|
+
if (!enabled && apiKeyValue) {
|
|
65
65
|
setValue(null);
|
|
66
66
|
}
|
|
67
67
|
}, [
|
|
@@ -96,6 +96,7 @@ export const APIKey = ({ enabled, readOnly })=>{
|
|
|
96
96
|
htmlFor: path
|
|
97
97
|
}),
|
|
98
98
|
/*#__PURE__*/ _jsx("input", {
|
|
99
|
+
"aria-label": "API Key",
|
|
99
100
|
className: highlightedField ? 'highlight' : undefined,
|
|
100
101
|
disabled: true,
|
|
101
102
|
id: "apiKey",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport {\n CopyToClipboard,\n FieldLabel,\n GenerateConfirmation,\n useConfig,\n useField,\n useFormFields,\n useTranslation,\n} from '@payloadcms/ui'\nimport { text } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst path = 'apiKey'\nconst baseClass = 'api-key'\nconst fieldBaseClass = 'field-type'\n\nexport const APIKey: React.FC<{ enabled: boolean; readOnly?: boolean }> = ({\n enabled,\n readOnly,\n}) => {\n const [initialAPIKey] = useState(uuidv4())\n const [highlightedField, setHighlightedField] = useState(false)\n const { t } = useTranslation()\n const config = useConfig()\n\n const apiKey = useFormFields(([fields]) => (fields && fields[path]) || null)\n\n const validate = (val) =>\n text(val, {\n name: 'apiKey',\n type: 'text',\n data: {},\n maxLength: 48,\n minLength: 24,\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as PayloadRequest,\n siblingData: {},\n })\n\n const apiKeyValue = apiKey?.value\n\n const APIKeyLabel = useMemo(\n () => (\n <div className={`${baseClass}__label`}>\n <span>API Key</span>\n <CopyToClipboard value={apiKeyValue as string} />\n </div>\n ),\n [apiKeyValue],\n )\n\n const fieldType = useField({\n path: 'apiKey',\n validate,\n })\n\n const highlightField = () => {\n if (highlightedField) {\n setHighlightedField(false)\n }\n setTimeout(() => {\n setHighlightedField(true)\n }, 1)\n }\n\n const { setValue, value } = fieldType\n\n useEffect(() => {\n if (!apiKeyValue && enabled) {\n setValue(initialAPIKey)\n }\n if (!enabled) {\n setValue(null)\n }\n }, [apiKeyValue, enabled, setValue, initialAPIKey])\n\n useEffect(() => {\n if (highlightedField) {\n setTimeout(() => {\n setHighlightedField(false)\n }, 10000)\n }\n }, [highlightedField])\n\n if (!enabled) {\n return null\n }\n\n return (\n <React.Fragment>\n <div className={[fieldBaseClass, 'api-key', 'read-only'].filter(Boolean).join(' ')}>\n <FieldLabel CustomLabel={APIKeyLabel} htmlFor={path} />\n <input\n className={highlightedField ? 'highlight' : undefined}\n disabled\n id=\"apiKey\"\n name=\"apiKey\"\n type=\"text\"\n value={(value as string) || ''}\n />\n </div>\n {!readOnly && (\n <GenerateConfirmation highlightField={highlightField} setKey={() => setValue(uuidv4())} />\n )}\n </React.Fragment>\n )\n}\n"],"names":["CopyToClipboard","FieldLabel","GenerateConfirmation","useConfig","useField","useFormFields","useTranslation","text","React","useEffect","useMemo","useState","v4","uuidv4","path","baseClass","fieldBaseClass","APIKey","enabled","readOnly","initialAPIKey","highlightedField","setHighlightedField","t","config","apiKey","fields","validate","val","name","type","data","maxLength","minLength","preferences","req","payload","siblingData","apiKeyValue","value","APIKeyLabel","div","className","span","fieldType","highlightField","setTimeout","setValue","Fragment","filter","Boolean","join","CustomLabel","htmlFor","input","undefined","disabled","id","setKey"],"mappings":"AAAA;;AAGA,SACEA,eAAe,EACfC,UAAU,EACVC,oBAAoB,EACpBC,SAAS,EACTC,QAAQ,EACRC,aAAa,EACbC,cAAc,QACT,iBAAgB;AACvB,SAASC,IAAI,QAAQ,iBAAgB;AACrC,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAC3D,SAASC,MAAMC,MAAM,QAAQ,OAAM;AAEnC,MAAMC,OAAO;AACb,MAAMC,YAAY;AAClB,MAAMC,iBAAiB;AAEvB,OAAO,MAAMC,SAA6D,CAAC,EACzEC,OAAO,EACPC,QAAQ,EACT;IACC,MAAM,CAACC,cAAc,GAAGT,SAASE;IACjC,MAAM,CAACQ,kBAAkBC,oBAAoB,GAAGX,SAAS;IACzD,MAAM,EAAEY,CAAC,EAAE,GAAGjB;IACd,MAAMkB,SAASrB;IAEf,MAAMsB,SAASpB,cAAc,CAAC,CAACqB,OAAO,GAAK,AAACA,UAAUA,MAAM,CAACZ,KAAK,IAAK;IAEvE,MAAMa,WAAW,CAACC,MAChBrB,KAAKqB,KAAK;YACRC,MAAM;YACNC,MAAM;YACNC,MAAM,CAAC;YACPC,WAAW;YACXC,WAAW;YACXC,aAAa;gBAAER,QAAQ,CAAC;YAAE;YAC1BS,KAAK;gBACHC,SAAS;oBACPZ;gBACF;gBACAD;YACF;YACAc,aAAa,CAAC;QAChB;IAEF,MAAMC,cAAcb,QAAQc;IAE5B,MAAMC,cAAc9B,QAClB,kBACE,MAAC+B;YAAIC,WAAW,CAAC,EAAE3B,UAAU,OAAO,CAAC;;8BACnC,KAAC4B;8BAAK;;8BACN,KAAC3C;oBAAgBuC,OAAOD;;;YAG5B;QAACA;KAAY;IAGf,MAAMM,YAAYxC,SAAS;QACzBU,MAAM;QACNa;IACF;IAEA,MAAMkB,iBAAiB;QACrB,IAAIxB,kBAAkB;YACpBC,oBAAoB;QACtB;QACAwB,WAAW;YACTxB,oBAAoB;QACtB,GAAG;IACL;IAEA,MAAM,EAAEyB,QAAQ,EAAER,KAAK,EAAE,GAAGK;IAE5BnC,UAAU;QACR,IAAI,CAAC6B,eAAepB,SAAS;YAC3B6B,SAAS3B;QACX;QACA,IAAI,CAACF,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport {\n CopyToClipboard,\n FieldLabel,\n GenerateConfirmation,\n useConfig,\n useField,\n useFormFields,\n useTranslation,\n} from '@payloadcms/ui'\nimport { text } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst path = 'apiKey'\nconst baseClass = 'api-key'\nconst fieldBaseClass = 'field-type'\n\nexport const APIKey: React.FC<{ enabled: boolean; readOnly?: boolean }> = ({\n enabled,\n readOnly,\n}) => {\n const [initialAPIKey] = useState(uuidv4())\n const [highlightedField, setHighlightedField] = useState(false)\n const { t } = useTranslation()\n const config = useConfig()\n\n const apiKey = useFormFields(([fields]) => (fields && fields[path]) || null)\n\n const validate = (val) =>\n text(val, {\n name: 'apiKey',\n type: 'text',\n data: {},\n maxLength: 48,\n minLength: 24,\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as PayloadRequest,\n siblingData: {},\n })\n\n const apiKeyValue = apiKey?.value\n\n const APIKeyLabel = useMemo(\n () => (\n <div className={`${baseClass}__label`}>\n <span>API Key</span>\n <CopyToClipboard value={apiKeyValue as string} />\n </div>\n ),\n [apiKeyValue],\n )\n\n const fieldType = useField({\n path: 'apiKey',\n validate,\n })\n\n const highlightField = () => {\n if (highlightedField) {\n setHighlightedField(false)\n }\n setTimeout(() => {\n setHighlightedField(true)\n }, 1)\n }\n\n const { setValue, value } = fieldType\n\n useEffect(() => {\n if (!apiKeyValue && enabled) {\n setValue(initialAPIKey)\n }\n if (!enabled && apiKeyValue) {\n setValue(null)\n }\n }, [apiKeyValue, enabled, setValue, initialAPIKey])\n\n useEffect(() => {\n if (highlightedField) {\n setTimeout(() => {\n setHighlightedField(false)\n }, 10000)\n }\n }, [highlightedField])\n\n if (!enabled) {\n return null\n }\n\n return (\n <React.Fragment>\n <div className={[fieldBaseClass, 'api-key', 'read-only'].filter(Boolean).join(' ')}>\n <FieldLabel CustomLabel={APIKeyLabel} htmlFor={path} />\n <input\n aria-label=\"API Key\"\n className={highlightedField ? 'highlight' : undefined}\n disabled\n id=\"apiKey\"\n name=\"apiKey\"\n type=\"text\"\n value={(value as string) || ''}\n />\n </div>\n {!readOnly && (\n <GenerateConfirmation highlightField={highlightField} setKey={() => setValue(uuidv4())} />\n )}\n </React.Fragment>\n )\n}\n"],"names":["CopyToClipboard","FieldLabel","GenerateConfirmation","useConfig","useField","useFormFields","useTranslation","text","React","useEffect","useMemo","useState","v4","uuidv4","path","baseClass","fieldBaseClass","APIKey","enabled","readOnly","initialAPIKey","highlightedField","setHighlightedField","t","config","apiKey","fields","validate","val","name","type","data","maxLength","minLength","preferences","req","payload","siblingData","apiKeyValue","value","APIKeyLabel","div","className","span","fieldType","highlightField","setTimeout","setValue","Fragment","filter","Boolean","join","CustomLabel","htmlFor","input","aria-label","undefined","disabled","id","setKey"],"mappings":"AAAA;;AAGA,SACEA,eAAe,EACfC,UAAU,EACVC,oBAAoB,EACpBC,SAAS,EACTC,QAAQ,EACRC,aAAa,EACbC,cAAc,QACT,iBAAgB;AACvB,SAASC,IAAI,QAAQ,iBAAgB;AACrC,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAC3D,SAASC,MAAMC,MAAM,QAAQ,OAAM;AAEnC,MAAMC,OAAO;AACb,MAAMC,YAAY;AAClB,MAAMC,iBAAiB;AAEvB,OAAO,MAAMC,SAA6D,CAAC,EACzEC,OAAO,EACPC,QAAQ,EACT;IACC,MAAM,CAACC,cAAc,GAAGT,SAASE;IACjC,MAAM,CAACQ,kBAAkBC,oBAAoB,GAAGX,SAAS;IACzD,MAAM,EAAEY,CAAC,EAAE,GAAGjB;IACd,MAAMkB,SAASrB;IAEf,MAAMsB,SAASpB,cAAc,CAAC,CAACqB,OAAO,GAAK,AAACA,UAAUA,MAAM,CAACZ,KAAK,IAAK;IAEvE,MAAMa,WAAW,CAACC,MAChBrB,KAAKqB,KAAK;YACRC,MAAM;YACNC,MAAM;YACNC,MAAM,CAAC;YACPC,WAAW;YACXC,WAAW;YACXC,aAAa;gBAAER,QAAQ,CAAC;YAAE;YAC1BS,KAAK;gBACHC,SAAS;oBACPZ;gBACF;gBACAD;YACF;YACAc,aAAa,CAAC;QAChB;IAEF,MAAMC,cAAcb,QAAQc;IAE5B,MAAMC,cAAc9B,QAClB,kBACE,MAAC+B;YAAIC,WAAW,CAAC,EAAE3B,UAAU,OAAO,CAAC;;8BACnC,KAAC4B;8BAAK;;8BACN,KAAC3C;oBAAgBuC,OAAOD;;;YAG5B;QAACA;KAAY;IAGf,MAAMM,YAAYxC,SAAS;QACzBU,MAAM;QACNa;IACF;IAEA,MAAMkB,iBAAiB;QACrB,IAAIxB,kBAAkB;YACpBC,oBAAoB;QACtB;QACAwB,WAAW;YACTxB,oBAAoB;QACtB,GAAG;IACL;IAEA,MAAM,EAAEyB,QAAQ,EAAER,KAAK,EAAE,GAAGK;IAE5BnC,UAAU;QACR,IAAI,CAAC6B,eAAepB,SAAS;YAC3B6B,SAAS3B;QACX;QACA,IAAI,CAACF,WAAWoB,aAAa;YAC3BS,SAAS;QACX;IACF,GAAG;QAACT;QAAapB;QAAS6B;QAAU3B;KAAc;IAElDX,UAAU;QACR,IAAIY,kBAAkB;YACpByB,WAAW;gBACTxB,oBAAoB;YACtB,GAAG;QACL;IACF,GAAG;QAACD;KAAiB;IAErB,IAAI,CAACH,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,MAACV,MAAMwC,QAAQ;;0BACb,MAACP;gBAAIC,WAAW;oBAAC1B;oBAAgB;oBAAW;iBAAY,CAACiC,MAAM,CAACC,SAASC,IAAI,CAAC;;kCAC5E,KAAClD;wBAAWmD,aAAaZ;wBAAaa,SAASvC;;kCAC/C,KAACwC;wBACCC,cAAW;wBACXb,WAAWrB,mBAAmB,cAAcmC;wBAC5CC,QAAQ;wBACRC,IAAG;wBACH7B,MAAK;wBACLC,MAAK;wBACLS,OAAO,AAACA,SAAoB;;;;YAG/B,CAACpB,0BACA,KAACjB;gBAAqB2C,gBAAgBA;gBAAgBc,QAAQ,IAAMZ,SAASlC;;;;AAIrF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6LhC,CAAA"}
|