@payloadcms/ui 3.89.0 → 3.90.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +1 -1
  2. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  3. package/dist/elements/BulkUpload/FormsManager/createFormData.js +7 -3
  4. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  5. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  6. package/dist/elements/BulkUpload/FormsManager/index.js +4 -2
  7. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  8. package/dist/elements/Spinner/index.d.ts +19 -0
  9. package/dist/elements/Spinner/index.d.ts.map +1 -0
  10. package/dist/elements/Spinner/index.js +51 -0
  11. package/dist/elements/Spinner/index.js.map +1 -0
  12. package/dist/elements/Spinner/index.scss +23 -0
  13. package/dist/exports/client/index.d.ts +4 -1
  14. package/dist/exports/client/index.d.ts.map +1 -1
  15. package/dist/exports/client/index.js +12 -12
  16. package/dist/exports/client/index.js.map +4 -4
  17. package/dist/fields/Tabs/index.d.ts.map +1 -1
  18. package/dist/fields/Tabs/index.js +109 -234
  19. package/dist/fields/Tabs/index.js.map +1 -1
  20. package/dist/fields/Tabs/resolveRestoredTabIndex.d.ts +19 -0
  21. package/dist/fields/Tabs/resolveRestoredTabIndex.d.ts.map +1 -0
  22. package/dist/fields/Tabs/resolveRestoredTabIndex.js +20 -0
  23. package/dist/fields/Tabs/resolveRestoredTabIndex.js.map +1 -0
  24. package/dist/fields/Tabs/resolveRestoredTabIndex.spec.js +53 -0
  25. package/dist/fields/Tabs/resolveRestoredTabIndex.spec.js.map +1 -0
  26. package/dist/forms/Form/index.d.ts.map +1 -1
  27. package/dist/forms/Form/index.js +6 -2
  28. package/dist/forms/Form/index.js.map +1 -1
  29. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  30. package/dist/forms/fieldSchemasToFormState/renderField.js +3 -2
  31. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  32. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.d.ts +12 -0
  33. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.d.ts.map +1 -0
  34. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.js +32 -0
  35. package/dist/forms/fieldSchemasToFormState/serverFunctions/mergeAllowedFieldOverrides.js.map +1 -0
  36. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts +8 -6
  37. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -1
  38. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +25 -9
  39. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
  40. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.spec.js +179 -0
  41. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.spec.js.map +1 -0
  42. package/dist/forms/fieldSchemasToFormState/types.d.ts +1 -0
  43. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  44. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  45. package/dist/icons/Eye/index.scss +1 -1
  46. package/dist/icons/Refresh/index.d.ts +7 -0
  47. package/dist/icons/Refresh/index.d.ts.map +1 -0
  48. package/dist/icons/Refresh/index.js +35 -0
  49. package/dist/icons/Refresh/index.js.map +1 -0
  50. package/dist/icons/Refresh/index.scss +11 -0
  51. package/dist/icons/Spinner/index.d.ts +8 -0
  52. package/dist/icons/Spinner/index.d.ts.map +1 -0
  53. package/dist/icons/Spinner/index.js +34 -0
  54. package/dist/icons/Spinner/index.js.map +1 -0
  55. package/dist/icons/Spinner/index.scss +12 -0
  56. package/dist/styles.css +1 -1
  57. package/dist/utilities/buildFormState.d.ts.map +1 -1
  58. package/dist/utilities/buildFormState.js +6 -2
  59. package/dist/utilities/buildFormState.js.map +1 -1
  60. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  61. package/dist/utilities/schedulePublishHandler.js +4 -1
  62. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  63. package/dist/views/Edit/Auth/APIKey.d.ts +1 -1
  64. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  65. package/dist/views/Edit/Auth/APIKey.js +216 -59
  66. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  67. package/dist/views/Edit/Auth/APIKeyGenerationModal.d.ts +11 -0
  68. package/dist/views/Edit/Auth/APIKeyGenerationModal.d.ts.map +1 -0
  69. package/dist/views/Edit/Auth/APIKeyGenerationModal.js +113 -0
  70. package/dist/views/Edit/Auth/APIKeyGenerationModal.js.map +1 -0
  71. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  72. package/dist/views/Edit/Auth/index.js +10 -30
  73. package/dist/views/Edit/Auth/index.js.map +1 -1
  74. package/dist/views/Edit/Auth/index.scss +73 -36
  75. package/dist/views/Edit/Auth/types.d.ts +1 -1
  76. package/dist/views/Edit/Auth/types.d.ts.map +1 -1
  77. package/dist/views/Edit/Auth/types.js.map +1 -1
  78. package/package.json +5 -5
  79. package/dist/elements/GenerateConfirmation/index.d.ts +0 -7
  80. package/dist/elements/GenerateConfirmation/index.d.ts.map +0 -1
  81. package/dist/elements/GenerateConfirmation/index.js +0 -95
  82. package/dist/elements/GenerateConfirmation/index.js.map +0 -1
@@ -0,0 +1,113 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { useModal } from '@faceless-ui/modal';
6
+ import React, { useCallback } from 'react';
7
+ import { toast } from 'sonner';
8
+ import { Button } from '../../../elements/Button/index.js';
9
+ import { ConfirmationModal } from '../../../elements/ConfirmationModal/index.js';
10
+ import { Translation } from '../../../elements/Translation/index.js';
11
+ import { useDocumentInfo } from '../../../providers/DocumentInfo/index.js';
12
+ import { useTranslation } from '../../../providers/Translation/index.js';
13
+ export function APIKeyGenerationModal(props) {
14
+ const $ = _c(16);
15
+ const {
16
+ id,
17
+ highlightField,
18
+ icon,
19
+ setKey,
20
+ willInvalidateExistingKey: t0
21
+ } = props;
22
+ const willInvalidateExistingKey = t0 === undefined ? true : t0;
23
+ const {
24
+ id: documentID
25
+ } = useDocumentInfo();
26
+ const {
27
+ toggleModal
28
+ } = useModal();
29
+ const {
30
+ t
31
+ } = useTranslation();
32
+ const modalSlug = `generate-confirmation-${documentID}`;
33
+ let t1;
34
+ if ($[0] !== highlightField || $[1] !== setKey || $[2] !== t) {
35
+ t1 = async () => {
36
+ if ((await setKey()) === false) {
37
+ return;
38
+ }
39
+ toast.success(t("authentication:newAPIKeyGenerated"));
40
+ highlightField(true);
41
+ };
42
+ $[0] = highlightField;
43
+ $[1] = setKey;
44
+ $[2] = t;
45
+ $[3] = t1;
46
+ } else {
47
+ t1 = $[3];
48
+ }
49
+ const handleGenerate = t1;
50
+ let t2;
51
+ if ($[4] !== documentID || $[5] !== handleGenerate || $[6] !== icon || $[7] !== id || $[8] !== modalSlug || $[9] !== t || $[10] !== toggleModal || $[11] !== willInvalidateExistingKey) {
52
+ let t3;
53
+ if ($[13] !== modalSlug || $[14] !== toggleModal) {
54
+ t3 = () => {
55
+ toggleModal(modalSlug);
56
+ };
57
+ $[13] = modalSlug;
58
+ $[14] = toggleModal;
59
+ $[15] = t3;
60
+ } else {
61
+ t3 = $[15];
62
+ }
63
+ t2 = _jsxs(React.Fragment, {
64
+ children: [_jsx(Button, {
65
+ "aria-label": icon ? t("authentication:generateNewAPIKey") : undefined,
66
+ buttonStyle: icon ? "none" : "secondary",
67
+ className: icon ? "api-key__regenerate-button" : undefined,
68
+ icon,
69
+ id,
70
+ onClick: t3,
71
+ size: "small",
72
+ children: !icon && t("authentication:generateNewAPIKey")
73
+ }), _jsx(ConfirmationModal, {
74
+ body: willInvalidateExistingKey ? _jsx(Translation, {
75
+ elements: {
76
+ 1: _temp
77
+ },
78
+ i18nKey: "authentication:generatingNewAPIKeyWillInvalidate",
79
+ t
80
+ }) : _jsxs("span", {
81
+ children: ["Are you sure you want to generate an API key for user ", _jsx("strong", {
82
+ children: documentID
83
+ }), "? This will take effect immediately."]
84
+ }),
85
+ confirmLabel: t("authentication:generate"),
86
+ heading: t("authentication:confirmGeneration"),
87
+ modalSlug,
88
+ onConfirm: handleGenerate
89
+ })]
90
+ });
91
+ $[4] = documentID;
92
+ $[5] = handleGenerate;
93
+ $[6] = icon;
94
+ $[7] = id;
95
+ $[8] = modalSlug;
96
+ $[9] = t;
97
+ $[10] = toggleModal;
98
+ $[11] = willInvalidateExistingKey;
99
+ $[12] = t2;
100
+ } else {
101
+ t2 = $[12];
102
+ }
103
+ return t2;
104
+ }
105
+ function _temp(t0) {
106
+ const {
107
+ children
108
+ } = t0;
109
+ return _jsx("strong", {
110
+ children
111
+ });
112
+ }
113
+ //# sourceMappingURL=APIKeyGenerationModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIKeyGenerationModal.js","names":["c","_c","useModal","React","useCallback","toast","Button","ConfirmationModal","Translation","useDocumentInfo","useTranslation","APIKeyGenerationModal","props","$","id","highlightField","icon","setKey","willInvalidateExistingKey","t0","undefined","documentID","toggleModal","t","modalSlug","t1","success","handleGenerate","t2","t3","_jsxs","Fragment","children","_jsx","buttonStyle","className","onClick","size","body","elements","1","_temp","i18nKey","heading","onConfirm"],"sources":["../../../../src/views/Edit/Auth/APIKeyGenerationModal.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { ConfirmationModal } from '../../../elements/ConfirmationModal/index.js'\nimport { Translation } from '../../../elements/Translation/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport type APIKeyGenerationModalProps = {\n highlightField: (Boolean) => void\n icon?: React.ReactNode\n id?: string\n setKey: () => boolean | Promise<boolean | void> | void\n willInvalidateExistingKey?: boolean\n}\n\nexport type GenerateConfirmationProps = APIKeyGenerationModalProps\n\nexport function APIKeyGenerationModal(props: APIKeyGenerationModalProps) {\n const { id, highlightField, icon, setKey, willInvalidateExistingKey = true } = props\n\n const { id: documentID } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${documentID}`\n\n const handleGenerate = useCallback(async () => {\n if ((await setKey()) === false) {\n return\n }\n\n toast.success(t('authentication:newAPIKeyGenerated'))\n highlightField(true)\n }, [highlightField, setKey, t])\n\n return (\n <React.Fragment>\n <Button\n aria-label={icon ? t('authentication:generateNewAPIKey') : undefined}\n buttonStyle={icon ? 'none' : 'secondary'}\n className={icon ? 'api-key__regenerate-button' : undefined}\n icon={icon}\n id={id}\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {!icon && t('authentication:generateNewAPIKey')}\n </Button>\n <ConfirmationModal\n body={\n willInvalidateExistingKey ? (\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n ) : (\n <span>\n Are you sure you want to generate an API key for user <strong>{documentID}</strong>?\n This will take effect immediately.\n </span>\n )\n }\n confirmLabel={t('authentication:generate')}\n heading={t('authentication:confirmGeneration')}\n modalSlug={modalSlug}\n onConfirm={handleGenerate}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Auth/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA8D,MAAM,OAAO,CAAA;AAGlF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAWvC,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuRhC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Auth/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAWvC,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAoQhC,CAAA"}
@@ -3,7 +3,7 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { formatAdminURL, getFieldPermissions } from 'payload/shared';
6
- import React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react';
6
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
7
7
  import { toast } from 'sonner';
8
8
  import { Button } from '../../../elements/Button/index.js';
9
9
  import { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js';
@@ -34,8 +34,7 @@ export const Auth = props => {
34
34
  verify
35
35
  } = props;
36
36
  const [changingPassword, setChangingPassword] = useState(requirePassword);
37
- const enableAPIKey = useFormFields(_temp);
38
- const dispatchFields = useFormFields(_temp2);
37
+ const dispatchFields = useFormFields(_temp);
39
38
  const modified = useFormModified();
40
39
  const {
41
40
  i18n,
@@ -130,10 +129,8 @@ export const Auth = props => {
130
129
  }
131
130
  const enableFields = (!disableLocalStrategy || typeof disableLocalStrategy === "object" && disableLocalStrategy.enableFields === true) && (showUnlock || showPasswordFields);
132
131
  const disabled = readOnly || isInitializing || isTrashed;
133
- const apiKeyPermissions = docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey;
134
- const apiKeyReadOnly = readOnly || apiKeyPermissions === true || apiKeyPermissions && typeof apiKeyPermissions === "object" && !apiKeyPermissions?.update;
135
- const enableAPIKeyReadOnly = readOnly || apiKeyPermissions !== true && !apiKeyPermissions?.update;
136
- const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read;
132
+ const apiKeyPermissions = docPermissions?.fields === true ? true : docPermissions?.fields?.apiKey;
133
+ const canManageAPIKey = apiKeyPermissions === true || typeof apiKeyPermissions === "object" && Boolean(apiKeyPermissions?.[operation]);
137
134
  let t2;
138
135
  bb0: {
139
136
  if (docPermissions) {
@@ -237,7 +234,7 @@ export const Auth = props => {
237
234
  }
238
235
  useEffect(t5, t6);
239
236
  const showAuthBlock = enableFields;
240
- const showAPIKeyBlock = useAPIKey && canReadApiKey;
237
+ const showAPIKeyBlock = useAPIKey && canManageAPIKey;
241
238
  const showVerifyBlock = verify && isEditing;
242
239
  if (!(showAuthBlock || showAPIKeyBlock || showVerifyBlock)) {
243
240
  return null;
@@ -301,24 +298,11 @@ export const Auth = props => {
301
298
  children: t("authentication:forceUnlock")
302
299
  })]
303
300
  })]
304
- }), useAPIKey && _jsx("div", {
301
+ }), showAPIKeyBlock && _jsx("div", {
305
302
  className: `${baseClass}__api-key`,
306
- children: canReadApiKey && _jsxs(Fragment, {
307
- children: [_jsx(CheckboxField, {
308
- field: {
309
- name: "enableAPIKey",
310
- admin: {
311
- disabled,
312
- readOnly: enableAPIKeyReadOnly
313
- },
314
- label: t("authentication:enableAPIKey")
315
- },
316
- path: "enableAPIKey",
317
- schemaPath: `${collectionSlug}.enableAPIKey`
318
- }), _jsx(APIKey, {
319
- enabled: !!enableAPIKey?.value,
320
- readOnly: apiKeyReadOnly
321
- })]
303
+ children: _jsx(APIKey, {
304
+ readOnly: disabled,
305
+ reveal: typeof useAPIKey === "object" && useAPIKey.reveal === true
322
306
  })
323
307
  }), verify && isEditing && _jsx(CheckboxField, {
324
308
  field: {
@@ -334,11 +318,7 @@ export const Auth = props => {
334
318
  })]
335
319
  });
336
320
  };
337
- function _temp(t0) {
338
- const [fields] = t0;
339
- return fields && fields?.enableAPIKey || null;
340
- }
341
- function _temp2(reducer) {
321
+ function _temp(reducer) {
342
322
  return reducer[1];
343
323
  }
344
324
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","getFieldPermissions","React","Fragment","useCallback","useEffect","useMemo","useState","toast","Button","EmailAndUsernameFields","CheckboxField","ConfirmPasswordField","PasswordField","useFormFields","useFormModified","useConfig","useDocumentInfo","useTranslation","APIKey","baseClass","Auth","props","$","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","setValidateBeforeSubmit","useAPIKey","username","verify","changingPassword","setChangingPassword","enableAPIKey","_temp","dispatchFields","_temp2","modified","i18n","t","docPermissions","isEditing","isInitializing","isTrashed","config","t0","routes","t1","api","showPasswordFields","showUnlock","hasPasswordFieldOverride","fields","hasLoginFieldOverride","permissions","passwordPermissions","field","name","type","parentName","create","update","hasEmailAndUsernameFields","requireEmail","allowEmailLogin","t2","emailPermission","t3","usernamePermission","enableFields","disabled","apiKeyPermissions","apiKeyReadOnly","enableAPIKeyReadOnly","canReadApiKey","read","bb0","Boolean","unlock","undefined","hasPermissionToUnlock","changingPassword_0","errorMessage","path","valid","handleChangePassword","t4","url","apiRoute","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","t5","t6","showAuthBlock","showAPIKeyBlock","showVerifyBlock","t7","filter","_jsxs","join","children","_jsx","autoComplete","label","required","indexPath","parentPath","parentSchemaPath","schemaPath","buttonStyle","id","onClick","size","admin","enabled","value","reducer"],"sources":["../../../../src/views/Edit/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedFieldPermissions } from 'payload'\n\nimport { formatAdminURL, getFieldPermissions } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js'\nimport { CheckboxField } from '../../../fields/Checkbox/index.js'\nimport { ConfirmPasswordField } from '../../../fields/ConfirmPassword/index.js'\nimport { PasswordField } from '../../../fields/Password/index.js'\nimport { useFormFields, useFormModified } from '../../../forms/Form/context.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\nimport { APIKey } from './APIKey.js'\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 setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isEditing, isInitializing, isTrashed } = useDocumentInfo()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n let showPasswordFields: SanitizedFieldPermissions = true\n let showUnlock = true\n const hasPasswordFieldOverride =\n typeof docPermissions.fields === 'object' && 'password' in docPermissions.fields\n const hasLoginFieldOverride =\n typeof docPermissions.fields === 'object' &&\n ('username' in docPermissions.fields || 'email' in docPermissions.fields)\n\n if (hasPasswordFieldOverride) {\n const { permissions: passwordPermissions } = getFieldPermissions({\n field: { name: 'password', type: 'text' },\n operation,\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (operation === 'create') {\n showPasswordFields =\n passwordPermissions === true ||\n ((typeof passwordPermissions === 'object' &&\n passwordPermissions.create) as SanitizedFieldPermissions)\n } else {\n showPasswordFields =\n passwordPermissions === true ||\n ((typeof passwordPermissions === 'object' &&\n passwordPermissions.update) as SanitizedFieldPermissions)\n }\n }\n\n if (hasLoginFieldOverride) {\n const hasEmailAndUsernameFields =\n loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin)\n\n const { operation: emailPermission } = getFieldPermissions({\n field: { name: 'email', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n const { operation: usernamePermission } = getFieldPermissions({\n field: { name: 'username', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (hasEmailAndUsernameFields) {\n showUnlock = usernamePermission || emailPermission\n } else if (loginWithUsername && !hasEmailAndUsernameFields) {\n showUnlock = usernamePermission\n } else {\n showUnlock = emailPermission\n }\n }\n\n const enableFields =\n (!disableLocalStrategy ||\n (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true)) &&\n (showUnlock || showPasswordFields)\n\n const disabled = readOnly || isInitializing || isTrashed\n\n const apiKeyPermissions =\n docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey\n\n const apiKeyReadOnly =\n readOnly ||\n apiKeyPermissions === true ||\n (apiKeyPermissions && typeof apiKeyPermissions === 'object' && !apiKeyPermissions?.update)\n\n const enableAPIKeyReadOnly =\n readOnly || (apiKeyPermissions !== true && !apiKeyPermissions?.update)\n\n const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n if (docPermissions) {\n return Boolean('unlock' in docPermissions ? docPermissions.unlock : undefined)\n }\n\n return false\n }, [docPermissions])\n\n const handleChangePassword = useCallback(\n (changingPassword: boolean) => {\n if (changingPassword) {\n setValidateBeforeSubmit(true)\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\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 dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(changingPassword)\n },\n [dispatchFields, t, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/unlock`,\n })\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, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n const showAuthBlock = enableFields\n const showAPIKeyBlock = useAPIKey && canReadApiKey\n const showVerifyBlock = verify && isEditing\n\n if (!(showAuthBlock || showAPIKeyBlock || showVerifyBlock)) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {enableFields && (\n <React.Fragment>\n <EmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly || isTrashed}\n t={t}\n />\n {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"new-password\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath=\"password\"\n />\n <ConfirmPasswordField disabled={readOnly || isTrashed} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"cancel-change-password\"\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword &&\n !requirePassword &&\n !disableLocalStrategy &&\n showPasswordFields && (\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 {!changingPassword && operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled || !showUnlock}\n id=\"force-unlock\"\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 {canReadApiKey && (\n <Fragment>\n <CheckboxField\n field={{\n name: 'enableAPIKey',\n admin: { disabled, readOnly: enableAPIKeyReadOnly },\n label: t('authentication:enableAPIKey'),\n }}\n path=\"enableAPIKey\"\n schemaPath={`${collectionSlug}.enableAPIKey`}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={apiKeyReadOnly} />\n </Fragment>\n )}\n </div>\n )}\n {verify && isEditing && (\n <CheckboxField\n field={{\n name: '_verified',\n admin: { disabled, readOnly },\n label: t('authentication:verified'),\n }}\n path=\"_verified\"\n schemaPath={`${collectionSlug}._verified`}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","getFieldPermissions","React","useCallback","useEffect","useMemo","useState","toast","Button","EmailAndUsernameFields","CheckboxField","ConfirmPasswordField","PasswordField","useFormFields","useFormModified","useConfig","useDocumentInfo","useTranslation","APIKey","baseClass","Auth","props","$","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","setValidateBeforeSubmit","useAPIKey","username","verify","changingPassword","setChangingPassword","dispatchFields","_temp","modified","i18n","t","docPermissions","isEditing","isInitializing","isTrashed","config","t0","routes","t1","api","showPasswordFields","showUnlock","hasPasswordFieldOverride","fields","hasLoginFieldOverride","permissions","passwordPermissions","field","name","type","parentName","create","update","hasEmailAndUsernameFields","requireEmail","allowEmailLogin","t2","emailPermission","t3","usernamePermission","enableFields","disabled","apiKeyPermissions","apiKey","canManageAPIKey","Boolean","bb0","unlock","undefined","hasPermissionToUnlock","changingPassword_0","errorMessage","path","valid","handleChangePassword","t4","url","apiRoute","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","t5","t6","showAuthBlock","showAPIKeyBlock","showVerifyBlock","t7","filter","_jsxs","join","children","Fragment","_jsx","autoComplete","label","required","indexPath","parentPath","parentSchemaPath","schemaPath","buttonStyle","id","onClick","size","reveal","admin","reducer"],"sources":["../../../../src/views/Edit/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedFieldPermissions } from 'payload'\n\nimport { formatAdminURL, getFieldPermissions } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js'\nimport { CheckboxField } from '../../../fields/Checkbox/index.js'\nimport { ConfirmPasswordField } from '../../../fields/ConfirmPassword/index.js'\nimport { PasswordField } from '../../../fields/Password/index.js'\nimport { useFormFields, useFormModified } from '../../../forms/Form/context.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\nimport { APIKey } from './APIKey.js'\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 setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isEditing, isInitializing, isTrashed } = useDocumentInfo()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n let showPasswordFields: SanitizedFieldPermissions = true\n let showUnlock = true\n const hasPasswordFieldOverride =\n typeof docPermissions.fields === 'object' && 'password' in docPermissions.fields\n const hasLoginFieldOverride =\n typeof docPermissions.fields === 'object' &&\n ('username' in docPermissions.fields || 'email' in docPermissions.fields)\n\n if (hasPasswordFieldOverride) {\n const { permissions: passwordPermissions } = getFieldPermissions({\n field: { name: 'password', type: 'text' },\n operation,\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (operation === 'create') {\n showPasswordFields =\n passwordPermissions === true ||\n ((typeof passwordPermissions === 'object' &&\n passwordPermissions.create) as SanitizedFieldPermissions)\n } else {\n showPasswordFields =\n passwordPermissions === true ||\n ((typeof passwordPermissions === 'object' &&\n passwordPermissions.update) as SanitizedFieldPermissions)\n }\n }\n\n if (hasLoginFieldOverride) {\n const hasEmailAndUsernameFields =\n loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin)\n\n const { operation: emailPermission } = getFieldPermissions({\n field: { name: 'email', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n const { operation: usernamePermission } = getFieldPermissions({\n field: { name: 'username', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (hasEmailAndUsernameFields) {\n showUnlock = usernamePermission || emailPermission\n } else if (loginWithUsername && !hasEmailAndUsernameFields) {\n showUnlock = usernamePermission\n } else {\n showUnlock = emailPermission\n }\n }\n\n const enableFields =\n (!disableLocalStrategy ||\n (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true)) &&\n (showUnlock || showPasswordFields)\n\n const disabled = readOnly || isInitializing || isTrashed\n\n const apiKeyPermissions = docPermissions?.fields === true ? true : docPermissions?.fields?.apiKey\n\n const canManageAPIKey =\n apiKeyPermissions === true ||\n (typeof apiKeyPermissions === 'object' && Boolean(apiKeyPermissions?.[operation]))\n const hasPermissionToUnlock: boolean = useMemo(() => {\n if (docPermissions) {\n return Boolean('unlock' in docPermissions ? docPermissions.unlock : undefined)\n }\n\n return false\n }, [docPermissions])\n\n const handleChangePassword = useCallback(\n (changingPassword: boolean) => {\n if (changingPassword) {\n setValidateBeforeSubmit(true)\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\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 dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(changingPassword)\n },\n [dispatchFields, t, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/unlock`,\n })\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, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n const showAuthBlock = enableFields\n const showAPIKeyBlock = useAPIKey && canManageAPIKey\n const showVerifyBlock = verify && isEditing\n\n if (!(showAuthBlock || showAPIKeyBlock || showVerifyBlock)) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {enableFields && (\n <React.Fragment>\n <EmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly || isTrashed}\n t={t}\n />\n {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"new-password\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath=\"password\"\n />\n <ConfirmPasswordField disabled={readOnly || isTrashed} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"cancel-change-password\"\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword &&\n !requirePassword &&\n !disableLocalStrategy &&\n showPasswordFields && (\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 {!changingPassword && operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled || !showUnlock}\n id=\"force-unlock\"\n onClick={() => void unlock()}\n size=\"medium\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {showAPIKeyBlock && (\n <div className={`${baseClass}__api-key`}>\n <APIKey\n readOnly={disabled}\n reveal={typeof useAPIKey === 'object' && useAPIKey.reveal === true}\n />\n </div>\n )}\n {verify && isEditing && (\n <CheckboxField\n field={{\n name: '_verified',\n admin: { disabled, readOnly },\n label: t('authentication:verified'),\n }}\n path=\"_verified\"\n schemaPath={`${collectionSlug}._verified`}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -39,7 +39,7 @@
39
39
  }
40
40
 
41
41
  .field-type.api-key {
42
- margin-bottom: var(--base);
42
+ margin-bottom: calc(var(--base) * 0.75);
43
43
 
44
44
  input {
45
45
  @include formInput;
@@ -50,55 +50,92 @@
50
50
  }
51
51
 
52
52
  .api-key {
53
- &__input-wrap {
53
+ &__label .copy-to-clipboard {
54
+ display: inline-flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ width: $baseline;
58
+ height: $baseline;
59
+ line-height: 0;
60
+ }
61
+
62
+ &__actions {
54
63
  display: flex;
55
64
  align-items: center;
65
+ flex-wrap: wrap;
66
+ gap: calc(var(--base) / 2);
56
67
  }
57
68
 
58
- &__toggle-button-wrap {
69
+ &__input-wrap {
70
+ position: relative;
59
71
  display: flex;
60
- align-self: stretch;
72
+ align-items: center;
73
+
74
+ &--has-regenerate input {
75
+ padding-right: calc(var(--base) * 2);
76
+ }
77
+
78
+ &--highlighted {
79
+ border-radius: var(--style-radius-s);
80
+ box-shadow: 0 0 0 2px var(--theme-success-500);
81
+ }
82
+ }
83
+
84
+ &__revoke-button.btn {
85
+ cursor: pointer;
86
+ --color: var(--theme-error-500);
87
+ --hover-color: var(--theme-error-400);
88
+ --btn-border: 1px solid var(--theme-error-500);
89
+ --hover-btn-border: 1px solid var(--theme-error-400);
61
90
  }
62
91
 
63
- &__toggle-button {
92
+ &__regenerate-button.btn {
64
93
  @include formInput;
65
- background: var(--theme-elevation-100);
66
- border-top-left-radius: 0;
67
- border-bottom-left-radius: 0;
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: center;
97
+ width: calc(var(--base) * 2);
98
+ height: auto;
68
99
  margin: 0 0 0 -1px;
69
100
  padding: 0 calc(var(--base) / 2);
101
+ border-top-left-radius: 0;
102
+ border-bottom-left-radius: 0;
103
+ background: var(--theme-elevation-100);
70
104
  box-shadow: none;
71
- --btn-icon-size: var(--base);
105
+ cursor: pointer;
106
+ --btn-icon-size: 18px;
72
107
  }
73
- }
74
- }
75
-
76
- @keyframes highlight {
77
- 0% {
78
- background: var(--theme-success-250);
79
- border: 1px solid var(--theme-success-500);
80
- }
81
-
82
- 20% {
83
- background: var(--theme-input-bg);
84
- border: 1px solid var(--theme-elevation-250);
85
- color: var(--theme-text);
86
- }
87
108
 
88
- 80% {
89
- background: var(--theme-input-bg);
90
- border: 1px solid var(--theme-elevation-250);
91
- color: var(--theme-text);
92
- }
109
+ &__toggle-button-wrap {
110
+ display: flex;
111
+ align-self: stretch;
112
+ }
93
113
 
94
- 100% {
95
- background: var(--theme-elevation-200);
96
- border: 1px solid transparent;
97
- color: var(--theme-elevation-400);
114
+ &__visibility-button.btn {
115
+ position: absolute;
116
+ z-index: 1;
117
+ top: 0;
118
+ right: 0;
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: center;
122
+ width: calc(var(--base) * 2);
123
+ height: 100%;
124
+ margin: 0;
125
+ padding: 0 calc(var(--base) / 2);
126
+ border: 0;
127
+ background: transparent;
128
+ cursor: pointer;
129
+ --bg-color: transparent;
130
+ --hover-bg: transparent;
131
+ --btn-border: 0;
132
+ --hover-btn-border: 0;
133
+ --btn-icon-size: calc(var(--base) * 0.9);
134
+
135
+ &.api-key__visibility-button--with-regenerate {
136
+ right: calc(var(--base) * 2);
137
+ }
138
+ }
98
139
  }
99
140
  }
100
-
101
- .highlight {
102
- animation: highlight 10s;
103
- }
104
141
  }
@@ -9,7 +9,7 @@ export type Props = {
9
9
  readOnly: boolean;
10
10
  requirePassword?: boolean;
11
11
  setValidateBeforeSubmit: (validate: boolean) => void;
12
- useAPIKey?: boolean;
12
+ useAPIKey?: SanitizedCollectionConfig['auth']['useAPIKey'];
13
13
  username: string;
14
14
  verify?: boolean;
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAExD,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjD,oBAAoB,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAA;IAChF,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAA;IACzE,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,uBAAuB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAExD,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjD,oBAAoB,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAA;IAChF,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAA;IACzE,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,uBAAuB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,SAAS,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAA;IAC1D,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/views/Edit/Auth/types.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from 'payload'\n\nexport type Props = {\n className?: string\n collectionSlug: SanitizedCollectionConfig['slug']\n disableLocalStrategy?: SanitizedCollectionConfig['auth']['disableLocalStrategy']\n email: string\n loginWithUsername: SanitizedCollectionConfig['auth']['loginWithUsername']\n operation: 'create' | 'update'\n readOnly: boolean\n requirePassword?: boolean\n setValidateBeforeSubmit: (validate: boolean) => void\n useAPIKey?: boolean\n username: string\n verify?: boolean\n}\n"],"mappings":"AAEA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/views/Edit/Auth/types.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from 'payload'\n\nexport type Props = {\n className?: string\n collectionSlug: SanitizedCollectionConfig['slug']\n disableLocalStrategy?: SanitizedCollectionConfig['auth']['disableLocalStrategy']\n email: string\n loginWithUsername: SanitizedCollectionConfig['auth']['loginWithUsername']\n operation: 'create' | 'update'\n readOnly: boolean\n requirePassword?: boolean\n setValidateBeforeSubmit: (validate: boolean) => void\n useAPIKey?: SanitizedCollectionConfig['auth']['useAPIKey']\n username: string\n verify?: boolean\n}\n"],"mappings":"AAEA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.89.0",
3
+ "version": "3.90.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -137,7 +137,7 @@
137
137
  "ts-essentials": "10.0.3",
138
138
  "use-context-selector": "2.0.0",
139
139
  "uuid": "13.0.2",
140
- "@payloadcms/translations": "3.89.0"
140
+ "@payloadcms/translations": "3.90.0"
141
141
  },
142
142
  "devDependencies": {
143
143
  "@babel/cli": "7.27.2",
@@ -152,13 +152,13 @@
152
152
  "esbuild": "0.27.1",
153
153
  "esbuild-sass-plugin": "3.3.1",
154
154
  "@payloadcms/eslint-config": "3.28.0",
155
- "payload": "3.89.0"
155
+ "payload": "3.90.0"
156
156
  },
157
157
  "peerDependencies": {
158
- "next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.6 <17.0.0",
158
+ "next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.3.3 <17.0.0",
159
159
  "react": "^19.0.1 || ^19.1.2 || ^19.2.1",
160
160
  "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
161
- "payload": "3.89.0"
161
+ "payload": "3.90.0"
162
162
  },
163
163
  "engines": {
164
164
  "node": "^18.20.2 || >=20.9.0"
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- export type GenerateConfirmationProps = {
3
- highlightField: (Boolean: any) => void;
4
- setKey: () => void;
5
- };
6
- export declare function GenerateConfirmation(props: GenerateConfirmationProps): React.JSX.Element;
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAS1C,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,qBA2CpE"}
@@ -1,95 +0,0 @@
1
- 'use client';
2
-
3
- import { c as _c } from "react/compiler-runtime";
4
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
- import { useModal } from '@faceless-ui/modal';
6
- import React, { useCallback } from 'react';
7
- import { toast } from 'sonner';
8
- import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
9
- import { useTranslation } from '../../providers/Translation/index.js';
10
- import { Button } from '../Button/index.js';
11
- import { ConfirmationModal } from '../ConfirmationModal/index.js';
12
- import { Translation } from '../Translation/index.js';
13
- export function GenerateConfirmation(props) {
14
- const $ = _c(12);
15
- const {
16
- highlightField,
17
- setKey
18
- } = props;
19
- const {
20
- id
21
- } = useDocumentInfo();
22
- const {
23
- toggleModal
24
- } = useModal();
25
- const {
26
- t
27
- } = useTranslation();
28
- const modalSlug = `generate-confirmation-${id}`;
29
- let t0;
30
- if ($[0] !== highlightField || $[1] !== setKey || $[2] !== t) {
31
- t0 = () => {
32
- setKey();
33
- toast.success(t("authentication:newAPIKeyGenerated"));
34
- highlightField(true);
35
- };
36
- $[0] = highlightField;
37
- $[1] = setKey;
38
- $[2] = t;
39
- $[3] = t0;
40
- } else {
41
- t0 = $[3];
42
- }
43
- const handleGenerate = t0;
44
- let t1;
45
- if ($[4] !== modalSlug || $[5] !== toggleModal) {
46
- t1 = () => {
47
- toggleModal(modalSlug);
48
- };
49
- $[4] = modalSlug;
50
- $[5] = toggleModal;
51
- $[6] = t1;
52
- } else {
53
- t1 = $[6];
54
- }
55
- let t2;
56
- if ($[7] !== handleGenerate || $[8] !== modalSlug || $[9] !== t || $[10] !== t1) {
57
- t2 = _jsxs(React.Fragment, {
58
- children: [_jsx(Button, {
59
- buttonStyle: "secondary",
60
- onClick: t1,
61
- size: "small",
62
- children: t("authentication:generateNewAPIKey")
63
- }), _jsx(ConfirmationModal, {
64
- body: _jsx(Translation, {
65
- elements: {
66
- 1: _temp
67
- },
68
- i18nKey: "authentication:generatingNewAPIKeyWillInvalidate",
69
- t
70
- }),
71
- confirmLabel: t("authentication:generate"),
72
- heading: t("authentication:confirmGeneration"),
73
- modalSlug,
74
- onConfirm: handleGenerate
75
- })]
76
- });
77
- $[7] = handleGenerate;
78
- $[8] = modalSlug;
79
- $[9] = t;
80
- $[10] = t1;
81
- $[11] = t2;
82
- } else {
83
- t2 = $[11];
84
- }
85
- return t2;
86
- }
87
- function _temp(t0) {
88
- const {
89
- children
90
- } = t0;
91
- return _jsx("strong", {
92
- children
93
- });
94
- }
95
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","React","useCallback","toast","useDocumentInfo","useTranslation","Button","ConfirmationModal","Translation","GenerateConfirmation","props","$","highlightField","setKey","id","toggleModal","t","modalSlug","t0","success","handleGenerate","t1","t2","_jsxs","Fragment","children","_jsx","buttonStyle","onClick","size","body","elements","1","_temp","i18nKey","heading","onConfirm"],"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport function GenerateConfirmation(props: GenerateConfirmationProps) {\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = useCallback(() => {\n setKey()\n toast.success(t('authentication:newAPIKeyGenerated'))\n highlightField(true)\n }, [highlightField, setKey, t])\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n }\n confirmLabel={t('authentication:generate')}\n heading={t('authentication:confirmGeneration')}\n modalSlug={modalSlug}\n onConfirm={handleGenerate}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,IAASC,WAAW,QAAQ;AACnC,SAASC,KAAK,QAAQ;AAEtB,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,WAAW,QAAQ;AAO5B,OAAO,SAAAC,qBAAAC,KAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EACL;IAAAa,cAAA;IAAAC;EAAA,IAAmCH,KAAA;EAEnC;IAAAI;EAAA,IAAeV,eAAA;EACf;IAAAW;EAAA,IAAwBf,QAAA;EACxB;IAAAgB;EAAA,IAAcX,cAAA;EAEd,MAAAY,SAAA,GAAkB,yBAAyBH,EAAA,EAAI;EAAA,IAAAI,EAAA;EAAA,IAAAP,CAAA,QAAAC,cAAA,IAAAD,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAK,CAAA;IAEZE,EAAA,GAAAA,CAAA;MACjCL,MAAA;MACAV,KAAA,CAAAgB,OAAA,CAAcH,CAAA,CAAE;MAChBJ,cAAA,KAAe;IAAA;IACjBD,CAAA,MAAAC,cAAA;IAAAD,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAK,CAAA;IAAAL,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAJA,MAAAS,cAAA,GAAuBF,EAIO;EAAA,IAAAG,EAAA;EAAA,IAAAV,CAAA,QAAAM,SAAA,IAAAN,CAAA,QAAAI,WAAA;IAMfM,EAAA,GAAAA,CAAA;MACPN,WAAA,CAAYE,SAAA;IAAA;IACdN,CAAA,MAAAM,SAAA;IAAAN,CAAA,MAAAI,WAAA;IAAAJ,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,IAAAW,EAAA;EAAA,IAAAX,CAAA,QAAAS,cAAA,IAAAT,CAAA,QAAAM,SAAA,IAAAN,CAAA,QAAAK,CAAA,IAAAL,CAAA,SAAAU,EAAA;IALJC,EAAA,GAAAC,KAAA,CAAAtB,KAAA,CAAAuB,QAAA;MAAAC,QAAA,GACEC,IAAA,CAAApB,MAAA;QAAAqB,WAAA,EACc;QAAAC,OAAA,EACHP,EAET;QAAAQ,IAAA,EACK;QAAAJ,QAAA,EAEJT,CAAA,CAAE;MAAA,C,GAELU,IAAA,CAAAnB,iBAAA;QAAAuB,IAAA,EAEIJ,IAAA,CAAAlB,WAAA;UAAAuB,QAAA;YAAAC,CAAA,EAAAC;UAAA;UAAAC,OAAA,EAIU;UAAAlB;QAAA,C;sBAIEA,CAAA,CAAE;QAAAmB,OAAA,EACPnB,CAAA,CAAE;QAAAC,SAAA;QAAAmB,SAAA,EAEAhB;MAAA,C;;;;;;;;;;SAvBfE,E;;AAhBG,SAAAW,MAAAf,EAAA;EA8BW;IAAAO;EAAA,IAAAP,EAAY;EAAA,OAAKQ,IAAA,CAAC;IAAAD;EAAA,C","ignoreList":[]}