@payloadcms/next 3.0.0-beta.72 → 3.0.0-beta.74
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 +10 -5
- package/dist/cjs/withPayload.cjs.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +7 -5
- 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 +84 -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/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/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 +8 -14
- 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 +1 -7
- 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/Edit/Default/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/index.js +11 -33
- package/dist/views/Edit/Default/Auth/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/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 +8 -66
- package/dist/views/Login/LoginField/index.js.map +1 -1
- package/dist/views/Login/LoginForm/index.js +1 -0
- 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.js +1 -0
- 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.js +1 -1
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/withPayload.d.ts.map +1 -1
- package/dist/withPayload.js +10 -5
- package/dist/withPayload.js.map +1 -1
- package/package.json +7 -7
|
@@ -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":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Button, CheckboxField, ConfirmPasswordField,
|
|
4
|
-
import { email as emailValidation } from 'payload/shared';
|
|
3
|
+
import { Button, CheckboxField, ConfirmPasswordField, PasswordField, useAuth, useConfig, useDocumentInfo, useFormFields, useFormModified, useTranslation } from '@payloadcms/ui';
|
|
5
4
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
5
|
import { toast } from 'sonner';
|
|
6
|
+
import { RenderEmailAndUsernameFields } from '../../../../elements/EmailAndUsername/index.js';
|
|
7
7
|
import { APIKey } from './APIKey.js';
|
|
8
8
|
const baseClass = 'auth-fields';
|
|
9
9
|
export const Auth = (props)=>{
|
|
@@ -15,7 +15,7 @@ export const Auth = (props)=>{
|
|
|
15
15
|
const dispatchFields = useFormFields((reducer)=>reducer[1]);
|
|
16
16
|
const modified = useFormModified();
|
|
17
17
|
const { i18n, t } = useTranslation();
|
|
18
|
-
const { isInitializing } = useDocumentInfo();
|
|
18
|
+
const { docPermissions, isInitializing } = useDocumentInfo();
|
|
19
19
|
const { routes: { api }, serverURL } = useConfig();
|
|
20
20
|
const hasPermissionToUnlock = useMemo(()=>{
|
|
21
21
|
const collection = permissions?.collections?.[collectionSlug];
|
|
@@ -119,33 +119,11 @@ export const Auth = (props)=>{
|
|
|
119
119
|
children: [
|
|
120
120
|
!disableLocalStrategy && /*#__PURE__*/ _jsxs(React.Fragment, {
|
|
121
121
|
children: [
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
readOnly: readOnly
|
|
127
|
-
required: true
|
|
128
|
-
}),
|
|
129
|
-
(!loginWithUsername || loginWithUsername?.allowEmailLogin || loginWithUsername?.requireEmail) && /*#__PURE__*/ _jsx(EmailField, {
|
|
130
|
-
autoComplete: "email",
|
|
131
|
-
disabled: disabled,
|
|
132
|
-
label: t('general:email'),
|
|
133
|
-
name: "email",
|
|
134
|
-
readOnly: readOnly,
|
|
135
|
-
required: !loginWithUsername || loginWithUsername?.requireEmail,
|
|
136
|
-
validate: (value)=>emailValidation(value, {
|
|
137
|
-
name: 'email',
|
|
138
|
-
type: 'email',
|
|
139
|
-
data: {},
|
|
140
|
-
preferences: {
|
|
141
|
-
fields: {}
|
|
142
|
-
},
|
|
143
|
-
req: {
|
|
144
|
-
t
|
|
145
|
-
},
|
|
146
|
-
required: true,
|
|
147
|
-
siblingData: {}
|
|
148
|
-
})
|
|
122
|
+
/*#__PURE__*/ _jsx(RenderEmailAndUsernameFields, {
|
|
123
|
+
loginWithUsername: loginWithUsername,
|
|
124
|
+
operation: operation,
|
|
125
|
+
permissions: docPermissions?.fields,
|
|
126
|
+
readOnly: readOnly
|
|
149
127
|
}),
|
|
150
128
|
(showPasswordFields || requirePassword) && /*#__PURE__*/ _jsxs("div", {
|
|
151
129
|
className: `${baseClass}__changing-password`,
|
|
@@ -169,7 +147,7 @@ export const Auth = (props)=>{
|
|
|
169
147
|
buttonStyle: "secondary",
|
|
170
148
|
disabled: disabled,
|
|
171
149
|
onClick: ()=>handleChangePassword(false),
|
|
172
|
-
size: "
|
|
150
|
+
size: "medium",
|
|
173
151
|
children: t('general:cancel')
|
|
174
152
|
}),
|
|
175
153
|
!showPasswordFields && !requirePassword && /*#__PURE__*/ _jsx(Button, {
|
|
@@ -177,14 +155,14 @@ export const Auth = (props)=>{
|
|
|
177
155
|
disabled: disabled,
|
|
178
156
|
id: "change-password",
|
|
179
157
|
onClick: ()=>handleChangePassword(true),
|
|
180
|
-
size: "
|
|
158
|
+
size: "medium",
|
|
181
159
|
children: t('authentication:changePassword')
|
|
182
160
|
}),
|
|
183
161
|
operation === 'update' && hasPermissionToUnlock && /*#__PURE__*/ _jsx(Button, {
|
|
184
162
|
buttonStyle: "secondary",
|
|
185
163
|
disabled: disabled,
|
|
186
164
|
onClick: ()=>void unlock(),
|
|
187
|
-
size: "
|
|
165
|
+
size: "medium",
|
|
188
166
|
children: t('authentication:forceUnlock')
|
|
189
167
|
})
|
|
190
168
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Button,\n CheckboxField,\n ConfirmPasswordField,\n EmailField,\n PasswordField,\n TextField,\n useAuth,\n useConfig,\n useDocumentInfo,\n useFormFields,\n useFormModified,\n useTranslation,\n} from '@payloadcms/ui'\nimport { email as emailValidation } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setSchemaPath,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const { permissions } = useAuth()\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const forceOpenChangePassword = useFormFields(([fields]) => (fields && fields?.password) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { isInitializing } = useDocumentInfo()\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n const collection = permissions?.collections?.[collectionSlug]\n\n if (collection) {\n const unlock = 'unlock' in collection ? collection.unlock : undefined\n\n if (unlock) {\n // current types for permissions do not include auth permissions, this will be fixed in another branch soon, for now we need to ignore the types\n // @todo: fix types\n // @ts-expect-error\n return unlock.permission\n }\n }\n\n return false\n }, [permissions, collectionSlug])\n\n const handleChangePassword = useCallback(\n (showPasswordFields: boolean) => {\n if (showPasswordFields) {\n setValidateBeforeSubmit(true)\n setSchemaPath(`_${collectionSlug}.auth`)\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n setSchemaPath(collectionSlug)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(showPasswordFields)\n },\n [dispatchFields, t, collectionSlug, setSchemaPath, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !useAPIKey) {\n return null\n }\n\n const disabled = readOnly || isInitializing\n\n const showPasswordFields = changingPassword || forceOpenChangePassword\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {!disableLocalStrategy && (\n <React.Fragment>\n {Boolean(loginWithUsername) && (\n <TextField\n disabled={disabled}\n label={t('authentication:username')}\n name=\"username\"\n readOnly={readOnly}\n required\n />\n )}\n {(!loginWithUsername ||\n loginWithUsername?.allowEmailLogin ||\n loginWithUsername?.requireEmail) && (\n <EmailField\n autoComplete=\"email\"\n disabled={disabled}\n label={t('general:email')}\n name=\"email\"\n readOnly={readOnly}\n required={!loginWithUsername || loginWithUsername?.requireEmail}\n validate={(value) =>\n emailValidation(value, {\n name: 'email',\n type: 'email',\n data: {},\n preferences: { fields: {} },\n req: { t } as any,\n required: true,\n siblingData: {},\n })\n }\n />\n )}\n {(showPasswordFields || requirePassword) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n disabled={disabled}\n label={t('authentication:newPassword')}\n name=\"password\"\n path=\"password\"\n required\n />\n <ConfirmPasswordField disabled={readOnly} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {showPasswordFields && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"small\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!showPasswordFields && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"small\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => void unlock()}\n size=\"small\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n <CheckboxField\n disabled={disabled}\n label={t('authentication:enableAPIKey')}\n name=\"enableAPIKey\"\n readOnly={readOnly}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={readOnly} />\n </div>\n )}\n {verify && (\n <CheckboxField\n disabled={disabled}\n label={t('authentication:verified')}\n name=\"_verified\"\n readOnly={readOnly}\n />\n )}\n </div>\n )\n}\n"],"names":["Button","CheckboxField","ConfirmPasswordField","EmailField","PasswordField","TextField","useAuth","useConfig","useDocumentInfo","useFormFields","useFormModified","useTranslation","email","emailValidation","React","useCallback","useEffect","useMemo","useState","toast","APIKey","baseClass","Auth","props","className","collectionSlug","disableLocalStrategy","loginWithUsername","operation","readOnly","requirePassword","setSchemaPath","setValidateBeforeSubmit","useAPIKey","username","verify","permissions","changingPassword","setChangingPassword","enableAPIKey","fields","forceOpenChangePassword","password","dispatchFields","reducer","modified","i18n","t","isInitializing","routes","api","serverURL","hasPermissionToUnlock","collection","collections","unlock","undefined","permission","handleChangePassword","showPasswordFields","type","errorMessage","path","valid","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","disabled","div","filter","Boolean","join","Fragment","label","name","required","allowEmailLogin","requireEmail","autoComplete","validate","value","data","preferences","req","siblingData","buttonStyle","onClick","size","id","enabled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Button,\n CheckboxField,\n ConfirmPasswordField,\n PasswordField,\n useAuth,\n useConfig,\n useDocumentInfo,\n useFormFields,\n useFormModified,\n useTranslation,\n} from '@payloadcms/ui'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { RenderEmailAndUsernameFields } from '../../../../elements/EmailAndUsername/index.js'\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setSchemaPath,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const { permissions } = useAuth()\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const forceOpenChangePassword = useFormFields(([fields]) => (fields && fields?.password) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isInitializing } = useDocumentInfo()\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n const collection = permissions?.collections?.[collectionSlug]\n\n if (collection) {\n const unlock = 'unlock' in collection ? collection.unlock : undefined\n\n if (unlock) {\n // current types for permissions do not include auth permissions, this will be fixed in another branch soon, for now we need to ignore the types\n // @todo: fix types\n // @ts-expect-error\n return unlock.permission\n }\n }\n\n return false\n }, [permissions, collectionSlug])\n\n const handleChangePassword = useCallback(\n (showPasswordFields: boolean) => {\n if (showPasswordFields) {\n setValidateBeforeSubmit(true)\n setSchemaPath(`_${collectionSlug}.auth`)\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n setSchemaPath(collectionSlug)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(showPasswordFields)\n },\n [dispatchFields, t, collectionSlug, setSchemaPath, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !useAPIKey) {\n return null\n }\n\n const disabled = readOnly || isInitializing\n\n const showPasswordFields = changingPassword || forceOpenChangePassword\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {!disableLocalStrategy && (\n <React.Fragment>\n <RenderEmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n />\n {(showPasswordFields || requirePassword) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n disabled={disabled}\n label={t('authentication:newPassword')}\n name=\"password\"\n path=\"password\"\n required\n />\n <ConfirmPasswordField disabled={readOnly} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {showPasswordFields && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!showPasswordFields && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"medium\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => void unlock()}\n size=\"medium\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n <CheckboxField\n disabled={disabled}\n label={t('authentication:enableAPIKey')}\n name=\"enableAPIKey\"\n readOnly={readOnly}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={readOnly} />\n </div>\n )}\n {verify && (\n <CheckboxField\n disabled={disabled}\n label={t('authentication:verified')}\n name=\"_verified\"\n readOnly={readOnly}\n />\n )}\n </div>\n )\n}\n"],"names":["Button","CheckboxField","ConfirmPasswordField","PasswordField","useAuth","useConfig","useDocumentInfo","useFormFields","useFormModified","useTranslation","React","useCallback","useEffect","useMemo","useState","toast","RenderEmailAndUsernameFields","APIKey","baseClass","Auth","props","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","setSchemaPath","setValidateBeforeSubmit","useAPIKey","username","verify","permissions","changingPassword","setChangingPassword","enableAPIKey","fields","forceOpenChangePassword","password","dispatchFields","reducer","modified","i18n","t","docPermissions","isInitializing","routes","api","serverURL","hasPermissionToUnlock","collection","collections","unlock","undefined","permission","handleChangePassword","showPasswordFields","type","errorMessage","path","valid","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","disabled","div","filter","Boolean","join","Fragment","label","name","required","buttonStyle","onClick","size","id","enabled","value"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/ForgotPassword/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { Button, Translation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment } from 'react'\n\nimport { ForgotPasswordForm } from './ForgotPasswordForm/index.js'\n\nexport { generateForgotPasswordMetadata } from './meta.js'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\nexport const forgotPasswordBaseClass = 'forgot-password'\n\nexport const ForgotPasswordView: React.FC<AdminViewProps> = ({ initPageResult }) => {\n const {\n req: {\n i18n,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: {\n routes: { account: accountRoute, login: loginRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (user) {\n return (\n <Fragment>\n <h1>{i18n.t('authentication:alreadyLoggedIn')}</h1>\n <p>\n <Translation\n elements={{\n '0': ({ children }) => (\n <Link\n href={formatAdminURL({\n adminRoute,\n path: accountRoute,\n })}\n >\n {children}\n </Link>\n ),\n }}\n i18nKey=\"authentication:loggedInChangePassword\"\n t={i18n.t}\n />\n </p>\n <br />\n <Button Link={Link} buttonStyle=\"secondary\" el=\"link\" to={adminRoute}>\n {i18n.t('general:backToDashboard')}\n </Button>\n </Fragment>\n )\n }\n\n return (\n <Fragment>\n <ForgotPasswordForm />\n <Link\n href={formatAdminURL({\n adminRoute,\n path: loginRoute,\n })}\n >\n {i18n.t('authentication:backToLogin')}\n </Link>\n </Fragment>\n )\n}\n"],"names":["Button","Translation","formatAdminURL","LinkImport","React","Fragment","ForgotPasswordForm","generateForgotPasswordMetadata","Link","default","forgotPasswordBaseClass","ForgotPasswordView","initPageResult","req","i18n","payload","config","user","admin","routes","account","accountRoute","login","loginRoute","adminRoute","h1","t","p","elements","children","href","path","i18nKey","br","buttonStyle","el","to"],"mappings":";AAEA,SAASA,MAAM,EAAEC,WAAW,QAAQ,iBAAgB;AACpD,SAASC,cAAc,QAAQ,wBAAuB;AACtD,OAAOC,gBAAgB,eAAc;AACrC,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,kBAAkB,QAAQ,gCAA+B;AAElE,SAASC,8BAA8B,QAAQ,YAAW;AAE1D,MAAMC,OAAQL,WAAWM,OAAO,IAAIN;AACpC,OAAO,MAAMO,0BAA0B,kBAAiB;AAExD,OAAO,MAAMC,qBAA+C,CAAC,EAAEC,cAAc,EAAE;IAC7E,MAAM,EACJC,KAAK,EACHC,IAAI,EACJC,SAAS,EAAEC,MAAM,EAAE,EACnBC,IAAI,EACL,EACF,GAAGL;IAEJ,MAAM,EACJM,OAAO,EACLC,QAAQ,EAAEC,SAASC,YAAY,EAAEC,OAAOC,UAAU,EAAE,EACrD,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAE,EAC9B,GAAGR;IAEJ,IAAIC,MAAM;QACR,qBACE,MAACZ;;8BACC,KAACoB;8BAAIX,KAAKY,CAAC,CAAC;;8BACZ,KAACC;8BACC,cAAA,KAAC1B;wBACC2B,UAAU;4BACR,KAAK,CAAC,EAAEC,QAAQ,EAAE,iBAChB,KAACrB;oCACCsB,MAAM5B,eAAe;wCACnBsB;wCACAO,MAAMV;oCACR;8CAECQ;;wBAGP;wBACAG,SAAQ;wBACRN,GAAGZ,KAAKY,CAAC;;;8BAGb,KAACO;8BACD,KAACjC;oBAAOQ,MAAMA;oBAAM0B,aAAY;oBAAYC,IAAG;oBAAOC,
|
|
1
|
+
{"version":3,"sources":["../../../src/views/ForgotPassword/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { Button, Translation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment } from 'react'\n\nimport { ForgotPasswordForm } from './ForgotPasswordForm/index.js'\n\nexport { generateForgotPasswordMetadata } from './meta.js'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\nexport const forgotPasswordBaseClass = 'forgot-password'\n\nexport const ForgotPasswordView: React.FC<AdminViewProps> = ({ initPageResult }) => {\n const {\n req: {\n i18n,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: {\n routes: { account: accountRoute, login: loginRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (user) {\n return (\n <Fragment>\n <h1>{i18n.t('authentication:alreadyLoggedIn')}</h1>\n <p>\n <Translation\n elements={{\n '0': ({ children }) => (\n <Link\n href={formatAdminURL({\n adminRoute,\n path: accountRoute,\n })}\n >\n {children}\n </Link>\n ),\n }}\n i18nKey=\"authentication:loggedInChangePassword\"\n t={i18n.t}\n />\n </p>\n <br />\n <Button Link={Link} buttonStyle=\"secondary\" el=\"link\" size=\"large\" to={adminRoute}>\n {i18n.t('general:backToDashboard')}\n </Button>\n </Fragment>\n )\n }\n\n return (\n <Fragment>\n <ForgotPasswordForm />\n <Link\n href={formatAdminURL({\n adminRoute,\n path: loginRoute,\n })}\n >\n {i18n.t('authentication:backToLogin')}\n </Link>\n </Fragment>\n )\n}\n"],"names":["Button","Translation","formatAdminURL","LinkImport","React","Fragment","ForgotPasswordForm","generateForgotPasswordMetadata","Link","default","forgotPasswordBaseClass","ForgotPasswordView","initPageResult","req","i18n","payload","config","user","admin","routes","account","accountRoute","login","loginRoute","adminRoute","h1","t","p","elements","children","href","path","i18nKey","br","buttonStyle","el","size","to"],"mappings":";AAEA,SAASA,MAAM,EAAEC,WAAW,QAAQ,iBAAgB;AACpD,SAASC,cAAc,QAAQ,wBAAuB;AACtD,OAAOC,gBAAgB,eAAc;AACrC,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,kBAAkB,QAAQ,gCAA+B;AAElE,SAASC,8BAA8B,QAAQ,YAAW;AAE1D,MAAMC,OAAQL,WAAWM,OAAO,IAAIN;AACpC,OAAO,MAAMO,0BAA0B,kBAAiB;AAExD,OAAO,MAAMC,qBAA+C,CAAC,EAAEC,cAAc,EAAE;IAC7E,MAAM,EACJC,KAAK,EACHC,IAAI,EACJC,SAAS,EAAEC,MAAM,EAAE,EACnBC,IAAI,EACL,EACF,GAAGL;IAEJ,MAAM,EACJM,OAAO,EACLC,QAAQ,EAAEC,SAASC,YAAY,EAAEC,OAAOC,UAAU,EAAE,EACrD,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAE,EAC9B,GAAGR;IAEJ,IAAIC,MAAM;QACR,qBACE,MAACZ;;8BACC,KAACoB;8BAAIX,KAAKY,CAAC,CAAC;;8BACZ,KAACC;8BACC,cAAA,KAAC1B;wBACC2B,UAAU;4BACR,KAAK,CAAC,EAAEC,QAAQ,EAAE,iBAChB,KAACrB;oCACCsB,MAAM5B,eAAe;wCACnBsB;wCACAO,MAAMV;oCACR;8CAECQ;;wBAGP;wBACAG,SAAQ;wBACRN,GAAGZ,KAAKY,CAAC;;;8BAGb,KAACO;8BACD,KAACjC;oBAAOQ,MAAMA;oBAAM0B,aAAY;oBAAYC,IAAG;oBAAOC,MAAK;oBAAQC,IAAIb;8BACpEV,KAAKY,CAAC,CAAC;;;;IAIhB;IAEA,qBACE,MAACrB;;0BACC,KAACC;0BACD,KAACE;gBACCsB,MAAM5B,eAAe;oBACnBsB;oBACAO,MAAMR;gBACR;0BAECT,KAAKY,CAAC,CAAC;;;;AAIhB,EAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
.collection-list {
|
|
4
4
|
width: 100%;
|
|
5
|
-
margin-top: base(0.5);
|
|
6
5
|
|
|
7
6
|
&__wrap {
|
|
8
7
|
padding-bottom: var(--spacing-view-bottom);
|
|
@@ -14,7 +13,7 @@
|
|
|
14
13
|
|
|
15
14
|
&__header {
|
|
16
15
|
display: flex;
|
|
17
|
-
align-items:
|
|
16
|
+
align-items: center;
|
|
18
17
|
flex-wrap: wrap;
|
|
19
18
|
gap: base(0.75);
|
|
20
19
|
|
|
@@ -28,14 +27,12 @@
|
|
|
28
27
|
|
|
29
28
|
.pill {
|
|
30
29
|
position: relative;
|
|
31
|
-
top: -14px;
|
|
32
30
|
margin: 0;
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
33
|
|
|
36
34
|
&__sub-header {
|
|
37
35
|
flex-basis: 100%;
|
|
38
|
-
margin-top: base(0.25);
|
|
39
36
|
}
|
|
40
37
|
|
|
41
38
|
.table {
|
|
@@ -57,7 +54,7 @@
|
|
|
57
54
|
#heading-_select,
|
|
58
55
|
.cell-_select {
|
|
59
56
|
min-width: unset;
|
|
60
|
-
width:
|
|
57
|
+
width: base(1);
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
60
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { Validate } from 'payload';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
export type LoginFieldProps = {
|
|
3
4
|
required?: boolean;
|
|
4
5
|
type: 'email' | 'emailOrUsername' | 'username';
|
|
6
|
+
validate?: Validate;
|
|
5
7
|
};
|
|
6
8
|
export declare const LoginField: React.FC<LoginFieldProps>;
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginField/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,SAAS,CAAA;AAIxD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,UAAU,CAAA;IAC9C,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAA;AACD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqDhD,CAAA"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { EmailField, TextField,
|
|
3
|
+
import { EmailField, TextField, useTranslation } from '@payloadcms/ui';
|
|
4
4
|
import { email, username } from 'payload/shared';
|
|
5
5
|
import React from 'react';
|
|
6
6
|
export const LoginField = ({ type, required = true })=>{
|
|
7
7
|
const { t } = useTranslation();
|
|
8
|
-
const config = useConfig();
|
|
9
8
|
if (type === 'email') {
|
|
10
9
|
return /*#__PURE__*/ _jsx(EmailField, {
|
|
11
10
|
autoComplete: "email",
|
|
@@ -13,19 +12,7 @@ export const LoginField = ({ type, required = true })=>{
|
|
|
13
12
|
name: "email",
|
|
14
13
|
path: "email",
|
|
15
14
|
required: required,
|
|
16
|
-
validate:
|
|
17
|
-
name: 'email',
|
|
18
|
-
type: 'email',
|
|
19
|
-
data: {},
|
|
20
|
-
preferences: {
|
|
21
|
-
fields: {}
|
|
22
|
-
},
|
|
23
|
-
req: {
|
|
24
|
-
t
|
|
25
|
-
},
|
|
26
|
-
required: true,
|
|
27
|
-
siblingData: {}
|
|
28
|
-
})
|
|
15
|
+
validate: email
|
|
29
16
|
});
|
|
30
17
|
}
|
|
31
18
|
if (type === 'username') {
|
|
@@ -33,23 +20,8 @@ export const LoginField = ({ type, required = true })=>{
|
|
|
33
20
|
label: t('authentication:username'),
|
|
34
21
|
name: "username",
|
|
35
22
|
path: "username",
|
|
36
|
-
required:
|
|
37
|
-
validate:
|
|
38
|
-
name: 'username',
|
|
39
|
-
type: 'text',
|
|
40
|
-
data: {},
|
|
41
|
-
preferences: {
|
|
42
|
-
fields: {}
|
|
43
|
-
},
|
|
44
|
-
req: {
|
|
45
|
-
payload: {
|
|
46
|
-
config
|
|
47
|
-
},
|
|
48
|
-
t
|
|
49
|
-
},
|
|
50
|
-
required: true,
|
|
51
|
-
siblingData: {}
|
|
52
|
-
})
|
|
23
|
+
required: required,
|
|
24
|
+
validate: username
|
|
53
25
|
});
|
|
54
26
|
}
|
|
55
27
|
if (type === 'emailOrUsername') {
|
|
@@ -57,40 +29,10 @@ export const LoginField = ({ type, required = true })=>{
|
|
|
57
29
|
label: t('authentication:emailOrUsername'),
|
|
58
30
|
name: "username",
|
|
59
31
|
path: "username",
|
|
60
|
-
required:
|
|
61
|
-
validate: (value)=>{
|
|
62
|
-
const passesUsername = username(value,
|
|
63
|
-
|
|
64
|
-
type: 'text',
|
|
65
|
-
data: {},
|
|
66
|
-
preferences: {
|
|
67
|
-
fields: {}
|
|
68
|
-
},
|
|
69
|
-
req: {
|
|
70
|
-
payload: {
|
|
71
|
-
config
|
|
72
|
-
},
|
|
73
|
-
t
|
|
74
|
-
},
|
|
75
|
-
required: true,
|
|
76
|
-
siblingData: {}
|
|
77
|
-
});
|
|
78
|
-
const passesEmail = email(value, {
|
|
79
|
-
name: 'username',
|
|
80
|
-
type: 'email',
|
|
81
|
-
data: {},
|
|
82
|
-
preferences: {
|
|
83
|
-
fields: {}
|
|
84
|
-
},
|
|
85
|
-
req: {
|
|
86
|
-
payload: {
|
|
87
|
-
config
|
|
88
|
-
},
|
|
89
|
-
t
|
|
90
|
-
},
|
|
91
|
-
required: true,
|
|
92
|
-
siblingData: {}
|
|
93
|
-
});
|
|
32
|
+
required: required,
|
|
33
|
+
validate: (value, options)=>{
|
|
34
|
+
const passesUsername = username(value, options);
|
|
35
|
+
const passesEmail = email(value, options);
|
|
94
36
|
if (!passesEmail && !passesUsername) {
|
|
95
37
|
return `${t('general:email')}: ${passesEmail} ${t('general:username')}: ${passesUsername}`;
|
|
96
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/views/Login/LoginField/index.tsx"],"sourcesContent":["'use client'\nimport type {
|
|
1
|
+
{"version":3,"sources":["../../../../src/views/Login/LoginField/index.tsx"],"sourcesContent":["'use client'\nimport type { Validate, ValidateOptions } from 'payload'\n\nimport { EmailField, TextField, useTranslation } from '@payloadcms/ui'\nimport { email, username } from 'payload/shared'\nimport React from 'react'\nexport type LoginFieldProps = {\n required?: boolean\n type: 'email' | 'emailOrUsername' | 'username'\n validate?: Validate\n}\nexport const LoginField: React.FC<LoginFieldProps> = ({ type, required = true }) => {\n const { t } = useTranslation()\n\n if (type === 'email') {\n return (\n <EmailField\n autoComplete=\"email\"\n label={t('general:email')}\n name=\"email\"\n path=\"email\"\n required={required}\n validate={email}\n />\n )\n }\n\n if (type === 'username') {\n return (\n <TextField\n label={t('authentication:username')}\n name=\"username\"\n path=\"username\"\n required={required}\n validate={username}\n />\n )\n }\n\n if (type === 'emailOrUsername') {\n return (\n <TextField\n label={t('authentication:emailOrUsername')}\n name=\"username\"\n path=\"username\"\n required={required}\n validate={(value, options) => {\n const passesUsername = username(value, options)\n const passesEmail = email(\n value,\n options as ValidateOptions<any, { username?: string }, any, any>,\n )\n\n if (!passesEmail && !passesUsername) {\n return `${t('general:email')}: ${passesEmail} ${t('general:username')}: ${passesUsername}`\n }\n\n return true\n }}\n />\n )\n }\n\n return null\n}\n"],"names":["EmailField","TextField","useTranslation","email","username","React","LoginField","type","required","t","autoComplete","label","name","path","validate","value","options","passesUsername","passesEmail"],"mappings":"AAAA;;AAGA,SAASA,UAAU,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AACtE,SAASC,KAAK,EAAEC,QAAQ,QAAQ,iBAAgB;AAChD,OAAOC,WAAW,QAAO;AAMzB,OAAO,MAAMC,aAAwC,CAAC,EAAEC,IAAI,EAAEC,WAAW,IAAI,EAAE;IAC7E,MAAM,EAAEC,CAAC,EAAE,GAAGP;IAEd,IAAIK,SAAS,SAAS;QACpB,qBACE,KAACP;YACCU,cAAa;YACbC,OAAOF,EAAE;YACTG,MAAK;YACLC,MAAK;YACLL,UAAUA;YACVM,UAAUX;;IAGhB;IAEA,IAAII,SAAS,YAAY;QACvB,qBACE,KAACN;YACCU,OAAOF,EAAE;YACTG,MAAK;YACLC,MAAK;YACLL,UAAUA;YACVM,UAAUV;;IAGhB;IAEA,IAAIG,SAAS,mBAAmB;QAC9B,qBACE,KAACN;YACCU,OAAOF,EAAE;YACTG,MAAK;YACLC,MAAK;YACLL,UAAUA;YACVM,UAAU,CAACC,OAAOC;gBAChB,MAAMC,iBAAiBb,SAASW,OAAOC;gBACvC,MAAME,cAAcf,MAClBY,OACAC;gBAGF,IAAI,CAACE,eAAe,CAACD,gBAAgB;oBACnC,OAAO,CAAC,EAAER,EAAE,iBAAiB,EAAE,EAAES,YAAY,CAAC,EAAET,EAAE,oBAAoB,EAAE,EAAEQ,eAAe,CAAC;gBAC5F;gBAEA,OAAO;YACT;;IAGN;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { FormState } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const config = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) return 'emailOrUsername'\n if (canLoginWithUsername) return 'username'\n return 'email'\n })\n\n const { t } = useTranslation()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField label={t('general:password')} name=\"password\" required />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit>{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","routes","forgot","forgotRoute","user","userSlug","adminRoute","api","apiRoute","collectionConfig","collections","find","collection","slug","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","loginType","useState","t","initialState","password","initialValue","undefined","valid","value","username","email","action","className","disableSuccessStatus","method","redirect","waitForAutocomplete","div","type","label","name","required","href","path"],"mappings":"AAAA;;AAEA,OAAOA,gBAAgB,eAAc;AACrC,OAAOC,WAAW,QAAO;AAEzB,MAAMC,YAAY;AAClB,MAAMC,OAAQH,WAAWI,OAAO,IAAIJ;AAIpC,SAASK,IAAI,EAAEC,UAAU,EAAEC,aAAa,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AAC3F,SAASC,cAAc,QAAQ,wBAAuB;AAItD,SAASC,UAAU,QAAQ,yBAAwB;AAGnD,OAAO,MAAMC,YAKR,CAAC,EAAEC,YAAY,EAAEC,eAAe,EAAEC,eAAe,EAAEC,YAAY,EAAE;IACpE,MAAMC,SAAST;IAEf,MAAM,EACJU,OAAO,EACLC,QAAQ,EAAEC,QAAQC,WAAW,EAAE,EAC/BC,MAAMC,QAAQ,EACf,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC7C,GAAGT;IAEJ,MAAMU,mBAAmBV,OAAOW,WAAW,EAAEC,KAAK,CAACC,aAAeA,YAAYC,SAASR;IACvF,MAAM,EAAES,MAAMC,WAAW,EAAE,GAAGN;IAC9B,MAAMO,oBAAoBD,YAAYC,iBAAiB;IACvD,MAAMC,oBACJ,CAACF,YAAYC,iBAAiB,IAAID,YAAYC,iBAAiB,CAACE,eAAe;IACjF,MAAMC,uBAAuBJ,YAAYC,iBAAiB;IAE1D,MAAM,CAACI,UAAU,GAAGrC,MAAMsC,QAAQ,CAA0B;QAC1D,IAAIJ,qBAAqBE,sBAAsB,OAAO;QACtD,IAAIA,sBAAsB,OAAO;QACjC,OAAO;IACT;IAEA,MAAM,EAAEG,CAAC,EAAE,GAAG/B;IAEd,MAAMgC,eAA0B;QAC9BC,UAAU;YACRC,cAAc7B,mBAAmB8B;YACjCC,OAAO;YACPC,OAAOhC,mBAAmB8B;QAC5B;IACF;IAEA,IAAIV,mBAAmB;QACrBO,aAAaM,QAAQ,GAAG;YACtBJ,cAAc5B,mBAAmB6B;YACjCC,OAAO;YACPC,OAAO/B,mBAAmB6B;QAC5B;IACF,OAAO;QACLH,aAAaO,KAAK,GAAG;YACnBL,cAAc9B,gBAAgB+B;YAC9BC,OAAO;YACPC,OAAOjC,gBAAgB+B;QACzB;IACF;IAEA,qBACE,MAACvC;QACC4C,QAAQ,CAAC,EAAEvB,SAAS,CAAC,EAAEH,SAAS,MAAM,CAAC;QACvC2B,WAAWhD;QACXiD,oBAAoB;QACpBV,cAAcA;QACdW,QAAO;QACPC,UAAU,OAAOrC,cAAcqC,aAAa,WAAWrC,aAAaqC,QAAQ,GAAG7B;QAC/E8B,mBAAmB;;0BAEnB,MAACC;gBAAIL,WAAW,CAAC,EAAEhD,UAAU,WAAW,CAAC;;kCACvC,KAACS;wBAAW6C,MAAMlB;;kCAClB,KAAC/B;wBAAckD,OAAOjB,EAAE;wBAAqBkB,MAAK;wBAAWC,QAAQ;;;;0BAEvE,KAACxD;gBACCyD,MAAMlD,eAAe;oBACnBc;oBACAqC,MAAMxC;gBACR;0BAECmB,EAAE;;0BAEL,KAAClC;
|
|
1
|
+
{"version":3,"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { FormState } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const config = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) return 'emailOrUsername'\n if (canLoginWithUsername) return 'username'\n return 'email'\n })\n\n const { t } = useTranslation()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField label={t('general:password')} name=\"password\" required />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","routes","forgot","forgotRoute","user","userSlug","adminRoute","api","apiRoute","collectionConfig","collections","find","collection","slug","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","loginType","useState","t","initialState","password","initialValue","undefined","valid","value","username","email","action","className","disableSuccessStatus","method","redirect","waitForAutocomplete","div","type","label","name","required","href","path","size"],"mappings":"AAAA;;AAEA,OAAOA,gBAAgB,eAAc;AACrC,OAAOC,WAAW,QAAO;AAEzB,MAAMC,YAAY;AAClB,MAAMC,OAAQH,WAAWI,OAAO,IAAIJ;AAIpC,SAASK,IAAI,EAAEC,UAAU,EAAEC,aAAa,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AAC3F,SAASC,cAAc,QAAQ,wBAAuB;AAItD,SAASC,UAAU,QAAQ,yBAAwB;AAGnD,OAAO,MAAMC,YAKR,CAAC,EAAEC,YAAY,EAAEC,eAAe,EAAEC,eAAe,EAAEC,YAAY,EAAE;IACpE,MAAMC,SAAST;IAEf,MAAM,EACJU,OAAO,EACLC,QAAQ,EAAEC,QAAQC,WAAW,EAAE,EAC/BC,MAAMC,QAAQ,EACf,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC7C,GAAGT;IAEJ,MAAMU,mBAAmBV,OAAOW,WAAW,EAAEC,KAAK,CAACC,aAAeA,YAAYC,SAASR;IACvF,MAAM,EAAES,MAAMC,WAAW,EAAE,GAAGN;IAC9B,MAAMO,oBAAoBD,YAAYC,iBAAiB;IACvD,MAAMC,oBACJ,CAACF,YAAYC,iBAAiB,IAAID,YAAYC,iBAAiB,CAACE,eAAe;IACjF,MAAMC,uBAAuBJ,YAAYC,iBAAiB;IAE1D,MAAM,CAACI,UAAU,GAAGrC,MAAMsC,QAAQ,CAA0B;QAC1D,IAAIJ,qBAAqBE,sBAAsB,OAAO;QACtD,IAAIA,sBAAsB,OAAO;QACjC,OAAO;IACT;IAEA,MAAM,EAAEG,CAAC,EAAE,GAAG/B;IAEd,MAAMgC,eAA0B;QAC9BC,UAAU;YACRC,cAAc7B,mBAAmB8B;YACjCC,OAAO;YACPC,OAAOhC,mBAAmB8B;QAC5B;IACF;IAEA,IAAIV,mBAAmB;QACrBO,aAAaM,QAAQ,GAAG;YACtBJ,cAAc5B,mBAAmB6B;YACjCC,OAAO;YACPC,OAAO/B,mBAAmB6B;QAC5B;IACF,OAAO;QACLH,aAAaO,KAAK,GAAG;YACnBL,cAAc9B,gBAAgB+B;YAC9BC,OAAO;YACPC,OAAOjC,gBAAgB+B;QACzB;IACF;IAEA,qBACE,MAACvC;QACC4C,QAAQ,CAAC,EAAEvB,SAAS,CAAC,EAAEH,SAAS,MAAM,CAAC;QACvC2B,WAAWhD;QACXiD,oBAAoB;QACpBV,cAAcA;QACdW,QAAO;QACPC,UAAU,OAAOrC,cAAcqC,aAAa,WAAWrC,aAAaqC,QAAQ,GAAG7B;QAC/E8B,mBAAmB;;0BAEnB,MAACC;gBAAIL,WAAW,CAAC,EAAEhD,UAAU,WAAW,CAAC;;kCACvC,KAACS;wBAAW6C,MAAMlB;;kCAClB,KAAC/B;wBAAckD,OAAOjB,EAAE;wBAAqBkB,MAAK;wBAAWC,QAAQ;;;;0BAEvE,KAACxD;gBACCyD,MAAMlD,eAAe;oBACnBc;oBACAqC,MAAMxC;gBACR;0BAECmB,EAAE;;0BAEL,KAAClC;gBAAWwD,MAAK;0BAAStB,EAAE;;;;AAGlC,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoutClient.d.ts","sourceRoot":"","sources":["../../../src/views/Logout/LogoutClient.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,
|
|
1
|
+
{"version":3,"file":"LogoutClient.d.ts","sourceRoot":"","sources":["../../../src/views/Logout/LogoutClient.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAsCA,CAAA"}
|
|
@@ -13,7 +13,7 @@ export const LogoutClient = (props)=>{
|
|
|
13
13
|
useEffect(()=>{
|
|
14
14
|
if (!isLoggingOut) {
|
|
15
15
|
setIsLoggingOut(true);
|
|
16
|
-
logOut();
|
|
16
|
+
void logOut();
|
|
17
17
|
}
|
|
18
18
|
}, [
|
|
19
19
|
isLoggingOut,
|
|
@@ -32,6 +32,7 @@ export const LogoutClient = (props)=>{
|
|
|
32
32
|
Link: Link,
|
|
33
33
|
buttonStyle: "secondary",
|
|
34
34
|
el: "link",
|
|
35
|
+
size: "large",
|
|
35
36
|
url: formatAdminURL({
|
|
36
37
|
adminRoute,
|
|
37
38
|
path: `/login${redirect && redirect.length > 0 ? `?redirect=${encodeURIComponent(redirect)}` : ''}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/Logout/LogoutClient.tsx"],"sourcesContent":["'use client'\nimport { Button, useAuth, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment, useEffect } from 'react'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const LogoutClient: React.FC<{\n adminRoute: string\n inactivity?: boolean\n redirect: string\n}> = (props) => {\n const { adminRoute, inactivity, redirect } = props\n\n const [isLoggingOut, setIsLoggingOut] = React.useState<boolean | undefined>(undefined)\n const { logOut } = useAuth()\n const { t } = useTranslation()\n\n useEffect(() => {\n if (!isLoggingOut) {\n setIsLoggingOut(true)\n logOut()\n }\n }, [isLoggingOut, logOut])\n\n if (isLoggingOut) {\n return (\n <Fragment>\n {inactivity && <h2>{t('authentication:loggedOutInactivity')}</h2>}\n {!inactivity && <h2>{t('authentication:loggedOutSuccessfully')}</h2>}\n <Button\n Link={Link}\n buttonStyle=\"secondary\"\n el=\"link\"\n url={formatAdminURL({\n adminRoute,\n path: `/login${\n redirect && redirect.length > 0 ? `?redirect=${encodeURIComponent(redirect)}` : ''\n }`,\n })}\n >\n {t('authentication:logBackIn')}\n </Button>\n </Fragment>\n )\n }\n\n return <Fragment>{t('authentication:loggingOut')}</Fragment>\n}\n"],"names":["Button","useAuth","useTranslation","formatAdminURL","LinkImport","React","Fragment","useEffect","Link","default","LogoutClient","props","adminRoute","inactivity","redirect","isLoggingOut","setIsLoggingOut","useState","undefined","logOut","t","h2","buttonStyle","el","url","path","length","encodeURIComponent"],"mappings":"AAAA;;AACA,SAASA,MAAM,EAAEC,OAAO,EAAEC,cAAc,QAAQ,iBAAgB;AAChE,SAASC,cAAc,QAAQ,wBAAuB;AACtD,OAAOC,gBAAgB,eAAc;AACrC,OAAOC,SAASC,QAAQ,EAAEC,SAAS,QAAQ,QAAO;AAElD,MAAMC,OAAQJ,WAAWK,OAAO,IAAIL;AAEpC,OAAO,MAAMM,eAIR,CAACC;IACJ,MAAM,EAAEC,UAAU,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAE7C,MAAM,CAACI,cAAcC,gBAAgB,GAAGX,MAAMY,QAAQ,CAAsBC;IAC5E,MAAM,EAAEC,MAAM,EAAE,GAAGlB;IACnB,MAAM,EAAEmB,CAAC,EAAE,GAAGlB;IAEdK,UAAU;QACR,IAAI,CAACQ,cAAc;YACjBC,gBAAgB;
|
|
1
|
+
{"version":3,"sources":["../../../src/views/Logout/LogoutClient.tsx"],"sourcesContent":["'use client'\nimport { Button, useAuth, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment, useEffect } from 'react'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const LogoutClient: React.FC<{\n adminRoute: string\n inactivity?: boolean\n redirect: string\n}> = (props) => {\n const { adminRoute, inactivity, redirect } = props\n\n const [isLoggingOut, setIsLoggingOut] = React.useState<boolean | undefined>(undefined)\n const { logOut } = useAuth()\n const { t } = useTranslation()\n\n useEffect(() => {\n if (!isLoggingOut) {\n setIsLoggingOut(true)\n void logOut()\n }\n }, [isLoggingOut, logOut])\n\n if (isLoggingOut) {\n return (\n <Fragment>\n {inactivity && <h2>{t('authentication:loggedOutInactivity')}</h2>}\n {!inactivity && <h2>{t('authentication:loggedOutSuccessfully')}</h2>}\n <Button\n Link={Link}\n buttonStyle=\"secondary\"\n el=\"link\"\n size=\"large\"\n url={formatAdminURL({\n adminRoute,\n path: `/login${\n redirect && redirect.length > 0 ? `?redirect=${encodeURIComponent(redirect)}` : ''\n }`,\n })}\n >\n {t('authentication:logBackIn')}\n </Button>\n </Fragment>\n )\n }\n\n return <Fragment>{t('authentication:loggingOut')}</Fragment>\n}\n"],"names":["Button","useAuth","useTranslation","formatAdminURL","LinkImport","React","Fragment","useEffect","Link","default","LogoutClient","props","adminRoute","inactivity","redirect","isLoggingOut","setIsLoggingOut","useState","undefined","logOut","t","h2","buttonStyle","el","size","url","path","length","encodeURIComponent"],"mappings":"AAAA;;AACA,SAASA,MAAM,EAAEC,OAAO,EAAEC,cAAc,QAAQ,iBAAgB;AAChE,SAASC,cAAc,QAAQ,wBAAuB;AACtD,OAAOC,gBAAgB,eAAc;AACrC,OAAOC,SAASC,QAAQ,EAAEC,SAAS,QAAQ,QAAO;AAElD,MAAMC,OAAQJ,WAAWK,OAAO,IAAIL;AAEpC,OAAO,MAAMM,eAIR,CAACC;IACJ,MAAM,EAAEC,UAAU,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAE7C,MAAM,CAACI,cAAcC,gBAAgB,GAAGX,MAAMY,QAAQ,CAAsBC;IAC5E,MAAM,EAAEC,MAAM,EAAE,GAAGlB;IACnB,MAAM,EAAEmB,CAAC,EAAE,GAAGlB;IAEdK,UAAU;QACR,IAAI,CAACQ,cAAc;YACjBC,gBAAgB;YAChB,KAAKG;QACP;IACF,GAAG;QAACJ;QAAcI;KAAO;IAEzB,IAAIJ,cAAc;QAChB,qBACE,MAACT;;gBACEO,4BAAc,KAACQ;8BAAID,EAAE;;gBACrB,CAACP,4BAAc,KAACQ;8BAAID,EAAE;;8BACvB,KAACpB;oBACCQ,MAAMA;oBACNc,aAAY;oBACZC,IAAG;oBACHC,MAAK;oBACLC,KAAKtB,eAAe;wBAClBS;wBACAc,MAAM,CAAC,MAAM,EACXZ,YAAYA,SAASa,MAAM,GAAG,IAAI,CAAC,UAAU,EAAEC,mBAAmBd,UAAU,CAAC,GAAG,GACjF,CAAC;oBACJ;8BAECM,EAAE;;;;IAIX;IAEA,qBAAO,KAACd;kBAAUc,EAAE;;AACtB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/NotFound/index.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAExC,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,
|
|
1
|
+
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/NotFound/index.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAExC,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAuCA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/NotFound/index.client.tsx"],"sourcesContent":["'use client'\nimport { Button, Gutter, useConfig, useStepNav, useTranslation } from '@payloadcms/ui'\nimport LinkImport from 'next/link.js'\nimport React, { useEffect } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'not-found'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const NotFoundClient: React.FC<{\n marginTop?: 'large'\n}> = (props) => {\n const { marginTop = 'large' } = props\n\n const { setStepNav } = useStepNav()\n const { t } = useTranslation()\n\n const {\n routes: { admin: adminRoute },\n } = useConfig()\n\n useEffect(() => {\n setStepNav([\n {\n label: t('general:notFound'),\n },\n ])\n }, [setStepNav, t])\n\n return (\n <div\n className={[baseClass, marginTop && `${baseClass}--margin-top-${marginTop}`]\n .filter(Boolean)\n .join(' ')}\n >\n <Gutter className={`${baseClass}__wrap`}>\n <h1>{t('general:nothingFound')}</h1>\n <p>{t('general:sorryNotFound')}</p>\n <Button
|
|
1
|
+
{"version":3,"sources":["../../../src/views/NotFound/index.client.tsx"],"sourcesContent":["'use client'\nimport { Button, Gutter, useConfig, useStepNav, useTranslation } from '@payloadcms/ui'\nimport LinkImport from 'next/link.js'\nimport React, { useEffect } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'not-found'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const NotFoundClient: React.FC<{\n marginTop?: 'large'\n}> = (props) => {\n const { marginTop = 'large' } = props\n\n const { setStepNav } = useStepNav()\n const { t } = useTranslation()\n\n const {\n routes: { admin: adminRoute },\n } = useConfig()\n\n useEffect(() => {\n setStepNav([\n {\n label: t('general:notFound'),\n },\n ])\n }, [setStepNav, t])\n\n return (\n <div\n className={[baseClass, marginTop && `${baseClass}--margin-top-${marginTop}`]\n .filter(Boolean)\n .join(' ')}\n >\n <Gutter className={`${baseClass}__wrap`}>\n <h1>{t('general:nothingFound')}</h1>\n <p>{t('general:sorryNotFound')}</p>\n <Button\n Link={Link}\n className={`${baseClass}__button`}\n el=\"link\"\n size=\"large\"\n to={adminRoute}\n >\n {t('general:backToDashboard')}\n </Button>\n </Gutter>\n </div>\n )\n}\n"],"names":["Button","Gutter","useConfig","useStepNav","useTranslation","LinkImport","React","useEffect","baseClass","Link","default","NotFoundClient","props","marginTop","setStepNav","t","routes","admin","adminRoute","label","div","className","filter","Boolean","join","h1","p","el","size","to"],"mappings":"AAAA;;AACA,SAASA,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAEC,cAAc,QAAQ,iBAAgB;AACtF,OAAOC,gBAAgB,eAAc;AACrC,OAAOC,SAASC,SAAS,QAAQ,QAAO;AAIxC,MAAMC,YAAY;AAElB,MAAMC,OAAQJ,WAAWK,OAAO,IAAIL;AAEpC,OAAO,MAAMM,iBAER,CAACC;IACJ,MAAM,EAAEC,YAAY,OAAO,EAAE,GAAGD;IAEhC,MAAM,EAAEE,UAAU,EAAE,GAAGX;IACvB,MAAM,EAAEY,CAAC,EAAE,GAAGX;IAEd,MAAM,EACJY,QAAQ,EAAEC,OAAOC,UAAU,EAAE,EAC9B,GAAGhB;IAEJK,UAAU;QACRO,WAAW;YACT;gBACEK,OAAOJ,EAAE;YACX;SACD;IACH,GAAG;QAACD;QAAYC;KAAE;IAElB,qBACE,KAACK;QACCC,WAAW;YAACb;YAAWK,aAAa,CAAC,EAAEL,UAAU,aAAa,EAAEK,UAAU,CAAC;SAAC,CACzES,MAAM,CAACC,SACPC,IAAI,CAAC;kBAER,cAAA,MAACvB;YAAOoB,WAAW,CAAC,EAAEb,UAAU,MAAM,CAAC;;8BACrC,KAACiB;8BAAIV,EAAE;;8BACP,KAACW;8BAAGX,EAAE;;8BACN,KAACf;oBACCS,MAAMA;oBACNY,WAAW,CAAC,EAAEb,UAAU,QAAQ,CAAC;oBACjCmB,IAAG;oBACHC,MAAK;oBACLC,IAAIX;8BAEHH,EAAE;;;;;AAKb,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/ResetPassword/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n FormSubmit,\n HiddenField,\n PasswordField,\n useAuth,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\nimport { toast } from 'sonner'\n\ntype Args = {\n token: string\n}\n\nconst initialState: FormState = {\n 'confirm-password': {\n initialValue: '',\n valid: false,\n value: '',\n },\n password: {\n initialValue: '',\n valid: false,\n value: '',\n },\n}\n\nexport const ResetPasswordClient: React.FC<Args> = ({ token }) => {\n const i18n = useTranslation()\n const {\n admin: {\n routes: { login: loginRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = useConfig()\n\n const history = useRouter()\n\n const { fetchFullUser } = useAuth()\n\n const onSuccess = React.useCallback(\n async (data) => {\n if (data.token) {\n await fetchFullUser()\n history.push(adminRoute)\n } else {\n history.push(\n formatAdminURL({\n adminRoute,\n path: loginRoute,\n }),\n )\n toast.success(i18n.t('general:updatedSuccessfully'))\n }\n },\n [adminRoute, fetchFullUser, history, i18n, loginRoute],\n )\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/reset-password`}\n initialState={initialState}\n method=\"POST\"\n onSuccess={onSuccess}\n >\n <PasswordField\n label={i18n.t('authentication:newPassword')}\n name=\"password\"\n path=\"password\"\n required\n />\n <ConfirmPasswordField />\n <HiddenField forceUsePathFromProps name=\"token\" value={token} />\n <FormSubmit>{i18n.t('authentication:resetPassword')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["ConfirmPasswordField","Form","FormSubmit","HiddenField","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","useRouter","React","toast","initialState","initialValue","valid","value","password","ResetPasswordClient","token","i18n","admin","routes","login","loginRoute","user","userSlug","adminRoute","api","apiRoute","serverURL","history","fetchFullUser","onSuccess","useCallback","data","push","path","success","t","action","method","label","name","required","forceUsePathFromProps"],"mappings":"AAAA;;AAGA,SACEA,oBAAoB,EACpBC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,aAAa,EACbC,OAAO,EACPC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,SAASC,cAAc,QAAQ,wBAAuB;AACtD,SAASC,SAAS,QAAQ,qBAAoB;AAC9C,OAAOC,WAAW,QAAO;AACzB,SAASC,KAAK,QAAQ,SAAQ;AAM9B,MAAMC,eAA0B;IAC9B,oBAAoB;QAClBC,cAAc;QACdC,OAAO;QACPC,OAAO;IACT;IACAC,UAAU;QACRH,cAAc;QACdC,OAAO;QACPC,OAAO;IACT;AACF;AAEA,OAAO,MAAME,sBAAsC,CAAC,EAAEC,KAAK,EAAE;IAC3D,MAAMC,OAAOZ;IACb,MAAM,EACJa,OAAO,EACLC,QAAQ,EAAEC,OAAOC,UAAU,EAAE,EAC7BC,MAAMC,QAAQ,EACf,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC5CC,SAAS,EACV,GAAGvB;IAEJ,MAAMwB,UAAUrB;IAEhB,MAAM,EAAEsB,aAAa,EAAE,GAAG1B;IAE1B,MAAM2B,YAAYtB,MAAMuB,WAAW,CACjC,OAAOC;QACL,IAAIA,KAAKhB,KAAK,EAAE;YACd,MAAMa;YACND,QAAQK,IAAI,CAACT;QACf,OAAO;YACLI,QAAQK,IAAI,CACV3B,eAAe;gBACbkB;gBACAU,MAAMb;YACR;YAEFZ,MAAM0B,OAAO,CAAClB,KAAKmB,CAAC,CAAC;QACvB;IACF,GACA;QAACZ;QAAYK;QAAeD;QAASX;QAAMI;KAAW;IAGxD,qBACE,MAACtB;QACCsC,QAAQ,CAAC,EAAEV,UAAU,EAAED,SAAS,CAAC,EAAEH,SAAS,eAAe,CAAC;QAC5Db,cAAcA;QACd4B,QAAO;QACPR,WAAWA;;0BAEX,KAAC5B;gBACCqC,OAAOtB,KAAKmB,CAAC,CAAC;gBACdI,MAAK;gBACLN,MAAK;gBACLO,QAAQ;;0BAEV,KAAC3C;0BACD,KAACG;gBAAYyC,qBAAqB;gBAACF,MAAK;gBAAQ3B,OAAOG;;0BACvD,KAAChB;
|
|
1
|
+
{"version":3,"sources":["../../../src/views/ResetPassword/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n FormSubmit,\n HiddenField,\n PasswordField,\n useAuth,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\nimport { toast } from 'sonner'\n\ntype Args = {\n token: string\n}\n\nconst initialState: FormState = {\n 'confirm-password': {\n initialValue: '',\n valid: false,\n value: '',\n },\n password: {\n initialValue: '',\n valid: false,\n value: '',\n },\n}\n\nexport const ResetPasswordClient: React.FC<Args> = ({ token }) => {\n const i18n = useTranslation()\n const {\n admin: {\n routes: { login: loginRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = useConfig()\n\n const history = useRouter()\n\n const { fetchFullUser } = useAuth()\n\n const onSuccess = React.useCallback(\n async (data) => {\n if (data.token) {\n await fetchFullUser()\n history.push(adminRoute)\n } else {\n history.push(\n formatAdminURL({\n adminRoute,\n path: loginRoute,\n }),\n )\n toast.success(i18n.t('general:updatedSuccessfully'))\n }\n },\n [adminRoute, fetchFullUser, history, i18n, loginRoute],\n )\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/reset-password`}\n initialState={initialState}\n method=\"POST\"\n onSuccess={onSuccess}\n >\n <PasswordField\n label={i18n.t('authentication:newPassword')}\n name=\"password\"\n path=\"password\"\n required\n />\n <ConfirmPasswordField />\n <HiddenField forceUsePathFromProps name=\"token\" value={token} />\n <FormSubmit size=\"large\">{i18n.t('authentication:resetPassword')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["ConfirmPasswordField","Form","FormSubmit","HiddenField","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","useRouter","React","toast","initialState","initialValue","valid","value","password","ResetPasswordClient","token","i18n","admin","routes","login","loginRoute","user","userSlug","adminRoute","api","apiRoute","serverURL","history","fetchFullUser","onSuccess","useCallback","data","push","path","success","t","action","method","label","name","required","forceUsePathFromProps","size"],"mappings":"AAAA;;AAGA,SACEA,oBAAoB,EACpBC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,aAAa,EACbC,OAAO,EACPC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,SAASC,cAAc,QAAQ,wBAAuB;AACtD,SAASC,SAAS,QAAQ,qBAAoB;AAC9C,OAAOC,WAAW,QAAO;AACzB,SAASC,KAAK,QAAQ,SAAQ;AAM9B,MAAMC,eAA0B;IAC9B,oBAAoB;QAClBC,cAAc;QACdC,OAAO;QACPC,OAAO;IACT;IACAC,UAAU;QACRH,cAAc;QACdC,OAAO;QACPC,OAAO;IACT;AACF;AAEA,OAAO,MAAME,sBAAsC,CAAC,EAAEC,KAAK,EAAE;IAC3D,MAAMC,OAAOZ;IACb,MAAM,EACJa,OAAO,EACLC,QAAQ,EAAEC,OAAOC,UAAU,EAAE,EAC7BC,MAAMC,QAAQ,EACf,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC5CC,SAAS,EACV,GAAGvB;IAEJ,MAAMwB,UAAUrB;IAEhB,MAAM,EAAEsB,aAAa,EAAE,GAAG1B;IAE1B,MAAM2B,YAAYtB,MAAMuB,WAAW,CACjC,OAAOC;QACL,IAAIA,KAAKhB,KAAK,EAAE;YACd,MAAMa;YACND,QAAQK,IAAI,CAACT;QACf,OAAO;YACLI,QAAQK,IAAI,CACV3B,eAAe;gBACbkB;gBACAU,MAAMb;YACR;YAEFZ,MAAM0B,OAAO,CAAClB,KAAKmB,CAAC,CAAC;QACvB;IACF,GACA;QAACZ;QAAYK;QAAeD;QAASX;QAAMI;KAAW;IAGxD,qBACE,MAACtB;QACCsC,QAAQ,CAAC,EAAEV,UAAU,EAAED,SAAS,CAAC,EAAEH,SAAS,eAAe,CAAC;QAC5Db,cAAcA;QACd4B,QAAO;QACPR,WAAWA;;0BAEX,KAAC5B;gBACCqC,OAAOtB,KAAKmB,CAAC,CAAC;gBACdI,MAAK;gBACLN,MAAK;gBACLO,QAAQ;;0BAEV,KAAC3C;0BACD,KAACG;gBAAYyC,qBAAqB;gBAACF,MAAK;gBAAQ3B,OAAOG;;0BACvD,KAAChB;gBAAW2C,MAAK;0BAAS1B,KAAKmB,CAAC,CAAC;;;;AAGvC,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Unauthorized/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAMjD,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAIxD,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Unauthorized/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAMjD,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAIxD,eAAO,MAAM,gBAAgB,EAAE,kBA6B9B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/Unauthorized/index.tsx"],"sourcesContent":["import type { AdminViewComponent } from 'payload'\n\nimport { Button, Gutter } from '@payloadcms/ui'\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nimport './index.scss'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport { generateUnauthorizedMetadata } from './meta.js'\n\nconst baseClass = 'unauthorized'\n\nexport const UnauthorizedView: AdminViewComponent = ({ initPageResult }) => {\n const {\n req: {\n i18n,\n payload: {\n config: {\n admin: {\n routes: { logout: logoutRoute },\n },\n },\n },\n },\n } = initPageResult\n\n return (\n <Gutter className={baseClass}>\n <h2>{i18n.t('error:unauthorized')}</h2>\n <p>{i18n.t('error:notAllowedToAccessPage')}</p>\n <Button
|
|
1
|
+
{"version":3,"sources":["../../../src/views/Unauthorized/index.tsx"],"sourcesContent":["import type { AdminViewComponent } from 'payload'\n\nimport { Button, Gutter } from '@payloadcms/ui'\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nimport './index.scss'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport { generateUnauthorizedMetadata } from './meta.js'\n\nconst baseClass = 'unauthorized'\n\nexport const UnauthorizedView: AdminViewComponent = ({ initPageResult }) => {\n const {\n req: {\n i18n,\n payload: {\n config: {\n admin: {\n routes: { logout: logoutRoute },\n },\n },\n },\n },\n } = initPageResult\n\n return (\n <Gutter className={baseClass}>\n <h2>{i18n.t('error:unauthorized')}</h2>\n <p>{i18n.t('error:notAllowedToAccessPage')}</p>\n <Button\n Link={Link}\n className={`${baseClass}__button`}\n el=\"link\"\n size=\"large\"\n to={logoutRoute}\n >\n {i18n.t('authentication:logOut')}\n </Button>\n </Gutter>\n )\n}\n"],"names":["Button","Gutter","LinkImport","React","Link","default","generateUnauthorizedMetadata","baseClass","UnauthorizedView","initPageResult","req","i18n","payload","config","admin","routes","logout","logoutRoute","className","h2","t","p","el","size","to"],"mappings":";AAEA,SAASA,MAAM,EAAEC,MAAM,QAAQ,iBAAgB;AAC/C,OAAOC,gBAAgB,eAAc;AACrC,OAAOC,WAAW,QAAO;AAIzB,MAAMC,OAAQF,WAAWG,OAAO,IAAIH;AAEpC,SAASI,4BAA4B,QAAQ,YAAW;AAExD,MAAMC,YAAY;AAElB,OAAO,MAAMC,mBAAuC,CAAC,EAAEC,cAAc,EAAE;IACrE,MAAM,EACJC,KAAK,EACHC,IAAI,EACJC,SAAS,EACPC,QAAQ,EACNC,OAAO,EACLC,QAAQ,EAAEC,QAAQC,WAAW,EAAE,EAChC,EACF,EACF,EACF,EACF,GAAGR;IAEJ,qBACE,MAACR;QAAOiB,WAAWX;;0BACjB,KAACY;0BAAIR,KAAKS,CAAC,CAAC;;0BACZ,KAACC;0BAAGV,KAAKS,CAAC,CAAC;;0BACX,KAACpB;gBACCI,MAAMA;gBACNc,WAAW,CAAC,EAAEX,UAAU,QAAQ,CAAC;gBACjCe,IAAG;gBACHC,MAAK;gBACLC,IAAIP;0BAEHN,KAAKS,CAAC,CAAC;;;;AAIhB,EAAC"}
|
|
@@ -46,7 +46,7 @@ export const DefaultVersionView = ({ doc, docPermissions, initialComparisonDoc,
|
|
|
46
46
|
const comparison = compareValue?.value && currentComparisonDoc?.version // the `version` key is only present on `versions` documents
|
|
47
47
|
;
|
|
48
48
|
const canUpdate = docPermissions?.update?.permission;
|
|
49
|
-
const localeValues = locales.map((locale)=>locale.value);
|
|
49
|
+
const localeValues = locales && locales.map((locale)=>locale.value);
|
|
50
50
|
return /*#__PURE__*/ _jsxs("main", {
|
|
51
51
|
className: baseClass,
|
|
52
52
|
children: [
|