@payloadcms/ui 3.0.0-beta.103 → 3.0.0-beta.104

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 (76) hide show
  1. package/dist/elements/DeleteDocument/index.d.ts +9 -6
  2. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  3. package/dist/elements/DeleteDocument/index.js +40 -8
  4. package/dist/elements/DeleteDocument/index.js.map +1 -1
  5. package/dist/elements/DocumentControls/index.d.ts +8 -0
  6. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  7. package/dist/elements/DocumentControls/index.js +26 -8
  8. package/dist/elements/DocumentControls/index.js.map +1 -1
  9. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  10. package/dist/elements/DocumentDrawer/DrawerContent.js +97 -35
  11. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  12. package/dist/elements/DocumentDrawer/types.d.ts +5 -0
  13. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  14. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  15. package/dist/elements/Drawer/index.d.ts +1 -0
  16. package/dist/elements/Drawer/index.d.ts.map +1 -1
  17. package/dist/elements/Drawer/index.js +2 -2
  18. package/dist/elements/Drawer/index.js.map +1 -1
  19. package/dist/elements/DuplicateDocument/index.d.ts +6 -3
  20. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  21. package/dist/elements/DuplicateDocument/index.js +101 -151
  22. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  23. package/dist/elements/ReactSelect/types.d.ts +4 -2
  24. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  25. package/dist/elements/ReactSelect/types.js.map +1 -1
  26. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts +2 -2
  27. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
  28. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  29. package/dist/exports/client/index.js +19 -19
  30. package/dist/exports/client/index.js.map +3 -3
  31. package/dist/fields/Array/index.d.ts.map +1 -1
  32. package/dist/fields/Array/index.js +6 -0
  33. package/dist/fields/Array/index.js.map +1 -1
  34. package/dist/fields/Blocks/BlockRow.d.ts +2 -2
  35. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  36. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  37. package/dist/fields/Blocks/index.d.ts +5 -5
  38. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  39. package/dist/fields/Collapsible/index.js +48 -41
  40. package/dist/fields/Collapsible/index.js.map +1 -1
  41. package/dist/fields/Password/types.d.ts +2 -2
  42. package/dist/fields/Password/types.d.ts.map +1 -1
  43. package/dist/fields/Password/types.js.map +1 -1
  44. package/dist/fields/Relationship/index.d.ts.map +1 -1
  45. package/dist/fields/Relationship/index.js +64 -16
  46. package/dist/fields/Relationship/index.js.map +1 -1
  47. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  48. package/dist/fields/Relationship/optionsReducer.js +17 -0
  49. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  50. package/dist/fields/Relationship/types.d.ts +11 -4
  51. package/dist/fields/Relationship/types.d.ts.map +1 -1
  52. package/dist/fields/Relationship/types.js.map +1 -1
  53. package/dist/fields/Row/index.scss +12 -2
  54. package/dist/fields/Select/Input.d.ts +1 -1
  55. package/dist/fields/Select/Input.d.ts.map +1 -1
  56. package/dist/fields/Select/Input.js.map +1 -1
  57. package/dist/fields/Text/types.d.ts +1 -1
  58. package/dist/fields/Text/types.d.ts.map +1 -1
  59. package/dist/fields/Text/types.js.map +1 -1
  60. package/dist/fields/Textarea/types.d.ts +1 -1
  61. package/dist/fields/Textarea/types.d.ts.map +1 -1
  62. package/dist/fields/Textarea/types.js.map +1 -1
  63. package/dist/fields/Upload/Input.d.ts +1 -1
  64. package/dist/fields/Upload/Input.d.ts.map +1 -1
  65. package/dist/fields/Upload/Input.js.map +1 -1
  66. package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -1
  67. package/dist/providers/Config/createClientConfig/fields.js +31 -11
  68. package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
  69. package/dist/providers/DocumentInfo/index.d.ts +1 -1
  70. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  71. package/dist/providers/DocumentInfo/index.js.map +1 -1
  72. package/dist/providers/DocumentInfo/types.d.ts +18 -1
  73. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  74. package/dist/providers/DocumentInfo/types.js.map +1 -1
  75. package/dist/styles.css +1 -1
  76. package/package.json +4 -4
@@ -1,13 +1,16 @@
1
1
  import type { SanitizedCollectionConfig } from 'payload';
2
2
  import React from 'react';
3
+ import type { DocumentInfoContext } from '../../providers/DocumentInfo/index.js';
3
4
  import './index.scss';
4
5
  export type Props = {
5
- buttonId?: string;
6
- collectionSlug: SanitizedCollectionConfig['slug'];
7
- id?: string;
8
- singularLabel: SanitizedCollectionConfig['labels']['singular'];
9
- title?: string;
10
- useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle'];
6
+ readonly buttonId?: string;
7
+ readonly collectionSlug: SanitizedCollectionConfig['slug'];
8
+ readonly id?: string;
9
+ readonly onDelete?: DocumentInfoContext['onDelete'];
10
+ readonly redirectAfterDelete?: boolean;
11
+ readonly singularLabel: SanitizedCollectionConfig['labels']['singular'];
12
+ readonly title?: string;
13
+ readonly useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle'];
11
14
  };
12
15
  export declare const DeleteDocument: React.FC<Props>;
13
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAYpD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CAC7D,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA8I1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKhF,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAahF,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACnD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CACtE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA2L1C,CAAA"}
@@ -4,15 +4,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { Modal, useModal } from '@faceless-ui/modal';
5
5
  import { getTranslation } from '@payloadcms/translations';
6
6
  import { useRouter } from 'next/navigation.js';
7
- import React, { useCallback, useState } from 'react';
7
+ import React, { useCallback, useEffect, useState } from 'react';
8
8
  import { toast } from 'sonner';
9
9
  import { useForm } from '../../forms/Form/context.js';
10
10
  import { useConfig } from '../../providers/Config/index.js';
11
11
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
12
+ import { useEditDepth } from '../../providers/EditDepth/index.js';
12
13
  import { useTranslation } from '../../providers/Translation/index.js';
13
14
  import { requests } from '../../utilities/api.js';
14
15
  import { formatAdminURL } from '../../utilities/formatAdminURL.js';
15
16
  import { Button } from '../Button/index.js';
17
+ import { drawerZBase } from '../Drawer/index.js';
16
18
  import { PopupList } from '../Popup/index.js';
17
19
  import { Translation } from '../Translation/index.js';
18
20
  import './index.scss';
@@ -22,6 +24,8 @@ export const DeleteDocument = props => {
22
24
  id,
23
25
  buttonId,
24
26
  collectionSlug,
27
+ onDelete,
28
+ redirectAfterDelete = true,
25
29
  singularLabel,
26
30
  title: titleFromProps
27
31
  } = props;
@@ -32,13 +36,18 @@ export const DeleteDocument = props => {
32
36
  api
33
37
  },
34
38
  serverURL
35
- }
39
+ },
40
+ getEntityConfig
36
41
  } = useConfig();
42
+ const collectionConfig = getEntityConfig({
43
+ collectionSlug
44
+ });
37
45
  const {
38
46
  setModified
39
47
  } = useForm();
40
48
  const [deleting, setDeleting] = useState(false);
41
49
  const {
50
+ closeModal,
42
51
  toggleModal
43
52
  } = useModal();
44
53
  const router = useRouter();
@@ -49,6 +58,7 @@ export const DeleteDocument = props => {
49
58
  const {
50
59
  title
51
60
  } = useDocumentInfo();
61
+ const editDepth = useEditDepth();
52
62
  const titleToRender = titleFromProps || title || id;
53
63
  const modalSlug = `delete-${id}`;
54
64
  const addDefaultError = useCallback(() => {
@@ -57,6 +67,11 @@ export const DeleteDocument = props => {
57
67
  title
58
68
  }));
59
69
  }, [t, title]);
70
+ useEffect(() => {
71
+ return () => {
72
+ closeModal(modalSlug);
73
+ };
74
+ }, [closeModal, modalSlug]);
60
75
  const handleDelete = useCallback(async () => {
61
76
  setDeleting(true);
62
77
  setModified(false);
@@ -76,10 +91,20 @@ export const DeleteDocument = props => {
76
91
  label: getTranslation(singularLabel, i18n),
77
92
  title
78
93
  }) || json.message);
79
- return router.push(formatAdminURL({
80
- adminRoute,
81
- path: `/collections/${collectionSlug}`
82
- }));
94
+ if (redirectAfterDelete) {
95
+ return router.push(formatAdminURL({
96
+ adminRoute,
97
+ path: `/collections/${collectionSlug}`
98
+ }));
99
+ }
100
+ if (typeof onDelete === 'function') {
101
+ await onDelete({
102
+ id,
103
+ collectionConfig
104
+ });
105
+ }
106
+ toggleModal(modalSlug);
107
+ return;
83
108
  }
84
109
  toggleModal(modalSlug);
85
110
  if (json.errors) {
@@ -95,7 +120,7 @@ export const DeleteDocument = props => {
95
120
  } catch (e) {
96
121
  addDefaultError();
97
122
  }
98
- }, [setModified, serverURL, api, collectionSlug, id, toggleModal, modalSlug, t, singularLabel, i18n, title, router, adminRoute, addDefaultError]);
123
+ }, [setModified, serverURL, api, collectionSlug, id, toggleModal, modalSlug, t, singularLabel, i18n, title, router, adminRoute, addDefaultError, redirectAfterDelete, onDelete, collectionConfig]);
99
124
  if (id) {
100
125
  return /*#__PURE__*/_jsxs(React.Fragment, {
101
126
  children: [/*#__PURE__*/_jsx(PopupList.Button, {
@@ -108,6 +133,9 @@ export const DeleteDocument = props => {
108
133
  }), /*#__PURE__*/_jsx(Modal, {
109
134
  className: baseClass,
110
135
  slug: modalSlug,
136
+ style: {
137
+ zIndex: drawerZBase + editDepth
138
+ },
111
139
  children: /*#__PURE__*/_jsxs("div", {
112
140
  className: `${baseClass}__wrapper`,
113
141
  children: [/*#__PURE__*/_jsxs("div", {
@@ -142,7 +170,11 @@ export const DeleteDocument = props => {
142
170
  children: t('general:cancel')
143
171
  }), /*#__PURE__*/_jsx(Button, {
144
172
  id: "confirm-delete",
145
- onClick: deleting ? undefined : handleDelete,
173
+ onClick: () => {
174
+ if (!deleting) {
175
+ void handleDelete();
176
+ }
177
+ },
146
178
  size: "large",
147
179
  children: deleting ? t('general:deleting') : t('general:confirm')
148
180
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useConfig","useDocumentInfo","useTranslation","requests","formatAdminURL","Button","PopupList","Translation","baseClass","DeleteDocument","props","id","buttonId","collectionSlug","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","setModified","deleting","setDeleting","toggleModal","router","i18n","t","titleToRender","modalSlug","addDefaultError","error","handleDelete","delete","headers","language","then","res","json","status","success","label","message","push","path","errors","forEach","e","_jsxs","Fragment","_jsx","onClick","className","slug","elements","1","children","i18nKey","variables","buttonStyle","undefined","size","type"],"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } 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 { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'delete-document'\n\nexport type Props = {\n buttonId?: string\n collectionSlug: SanitizedCollectionConfig['slug']\n id?: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n title?: string\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const DeleteDocument: React.FC<Props> = (props) => {\n const { id, buttonId, collectionSlug, singularLabel, title: titleFromProps } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n } = useConfig()\n\n const { setModified } = useForm()\n const [deleting, setDeleting] = useState(false)\n const { toggleModal } = useModal()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentInfo()\n\n const titleToRender = titleFromProps || title || id\n\n const modalSlug = `delete-${id}`\n\n const addDefaultError = useCallback(() => {\n setDeleting(false)\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n setDeleting(true)\n setModified(false)\n try {\n await requests\n .delete(`${serverURL}${api}/${collectionSlug}/${id}`, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n setDeleting(false)\n toggleModal(modalSlug)\n toast.success(\n t('general:titleDeleted', { label: getTranslation(singularLabel, i18n), title }) ||\n json.message,\n )\n\n return router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n }),\n )\n }\n toggleModal(modalSlug)\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n } catch (e) {\n addDefaultError()\n }\n }, [\n setModified,\n serverURL,\n api,\n collectionSlug,\n id,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n i18n,\n title,\n router,\n adminRoute,\n addDefaultError,\n ])\n\n if (id) {\n return (\n <React.Fragment>\n <PopupList.Button\n id={buttonId}\n onClick={() => {\n setDeleting(false)\n toggleModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <Modal className={baseClass} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:confirmDeletion')}</h1>\n <p>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleToRender,\n }}\n />\n </p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={deleting ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n id=\"confirm-delete\"\n onClick={deleting ? undefined : handleDelete}\n size=\"large\"\n >\n {deleting ? t('general:deleting') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useEffect","useState","toast","useForm","useConfig","useDocumentInfo","useEditDepth","useTranslation","requests","formatAdminURL","Button","drawerZBase","PopupList","Translation","baseClass","DeleteDocument","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","setModified","deleting","setDeleting","closeModal","toggleModal","router","i18n","t","editDepth","titleToRender","modalSlug","addDefaultError","error","handleDelete","delete","headers","language","then","res","json","status","success","label","message","push","path","errors","forEach","e","_jsxs","Fragment","_jsx","onClick","className","slug","style","zIndex","elements","1","children","i18nKey","variables","buttonStyle","undefined","size","type"],"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentInfoContext } from '../../providers/DocumentInfo/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Button } from '../Button/index.js'\nimport { drawerZBase } from '../Drawer/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'delete-document'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentInfoContext['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n readonly useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const DeleteDocument: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const { setModified } = useForm()\n const [deleting, setDeleting] = useState(false)\n const { closeModal, toggleModal } = useModal()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentInfo()\n const editDepth = useEditDepth()\n\n const titleToRender = titleFromProps || title || id\n\n const modalSlug = `delete-${id}`\n\n const addDefaultError = useCallback(() => {\n setDeleting(false)\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n useEffect(() => {\n return () => {\n closeModal(modalSlug)\n }\n }, [closeModal, modalSlug])\n\n const handleDelete = useCallback(async () => {\n setDeleting(true)\n setModified(false)\n\n try {\n await requests\n .delete(`${serverURL}${api}/${collectionSlug}/${id}`, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n setDeleting(false)\n toggleModal(modalSlug)\n\n toast.success(\n t('general:titleDeleted', { label: getTranslation(singularLabel, i18n), title }) ||\n json.message,\n )\n\n if (redirectAfterDelete) {\n return router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n }),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n toggleModal(modalSlug)\n\n return\n }\n\n toggleModal(modalSlug)\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n } catch (e) {\n addDefaultError()\n }\n }, [\n setModified,\n serverURL,\n api,\n collectionSlug,\n id,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n i18n,\n title,\n router,\n adminRoute,\n addDefaultError,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n ])\n\n if (id) {\n return (\n <React.Fragment>\n <PopupList.Button\n id={buttonId}\n onClick={() => {\n setDeleting(false)\n toggleModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <Modal\n className={baseClass}\n slug={modalSlug}\n style={{\n zIndex: drawerZBase + editDepth,\n }}\n >\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:confirmDeletion')}</h1>\n <p>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleToRender,\n }}\n />\n </p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={deleting ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n id=\"confirm-delete\"\n onClick={() => {\n if (!deleting) {\n void handleDelete()\n }\n }}\n size=\"large\"\n >\n {deleting ? t('general:deleting') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,16 +1,24 @@
1
1
  import type { CollectionPermission, GlobalPermission, SanitizedCollectionConfig } from 'payload';
2
2
  import React from 'react';
3
+ import type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js';
3
4
  import './index.scss';
4
5
  export declare const DocumentControls: React.FC<{
5
6
  readonly apiURL: string;
6
7
  readonly data?: any;
7
8
  readonly disableActions?: boolean;
9
+ readonly disableCreate?: boolean;
8
10
  readonly hasPublishPermission?: boolean;
9
11
  readonly hasSavePermission?: boolean;
10
12
  id?: number | string;
11
13
  readonly isAccountView?: boolean;
12
14
  readonly isEditing?: boolean;
15
+ readonly onDelete?: DocumentInfoContext['onDelete'];
16
+ readonly onDrawerCreate?: () => void;
17
+ readonly onDuplicate?: DocumentInfoContext['onDuplicate'];
18
+ readonly onSave?: DocumentInfoContext['onSave'];
13
19
  readonly permissions: CollectionPermission | GlobalPermission | null;
20
+ readonly redirectAfterDelete?: boolean;
21
+ readonly redirectAfterDuplicate?: boolean;
14
22
  readonly slug: SanitizedCollectionConfig['slug'];
15
23
  }>;
16
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAA8B,MAAM,OAAO,CAAA;AAgBlD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAA;IACnB,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,IAAI,CAAA;IACpE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;CACjD,CAsNA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAiBhF,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAA;IACnB,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACnD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAEpC,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,IAAI,CAAA;IACpE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;CACjD,CA4OA,CAAA"}
@@ -5,6 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { getTranslation } from '@payloadcms/translations';
6
6
  import React, { Fragment, useEffect } from 'react';
7
7
  import { useConfig } from '../../providers/Config/index.js';
8
+ import { useEditDepth } from '../../providers/EditDepth/index.js';
8
9
  import { useTranslation } from '../../providers/Translation/index.js';
9
10
  import { formatAdminURL } from '../../utilities/formatAdminURL.js';
10
11
  import { formatDate } from '../../utilities/formatDate.js';
@@ -27,14 +28,21 @@ export const DocumentControls = props => {
27
28
  slug,
28
29
  data,
29
30
  disableActions,
31
+ disableCreate,
30
32
  hasSavePermission,
31
33
  isAccountView,
32
34
  isEditing,
33
- permissions
35
+ onDelete,
36
+ onDrawerCreate,
37
+ onDuplicate,
38
+ permissions,
39
+ redirectAfterDelete,
40
+ redirectAfterDuplicate
34
41
  } = props;
35
42
  const {
36
43
  i18n
37
44
  } = useTranslation();
45
+ const editDepth = useEditDepth();
38
46
  const {
39
47
  config,
40
48
  getEntityConfig
@@ -172,15 +180,23 @@ export const DocumentControls = props => {
172
180
  verticalAlign: "bottom",
173
181
  children: _jsxs(PopupList.ButtonGroup, {
174
182
  children: [hasCreatePermission && _jsxs(React.Fragment, {
175
- children: [_jsx(PopupList.Button, {
176
- href: formatAdminURL({
177
- adminRoute,
178
- path: `/collections/${collectionConfig?.slug}/create`
179
- }),
180
- id: "action-create",
181
- children: i18n.t("general:createNew")
183
+ children: [!disableCreate && _jsx(Fragment, {
184
+ children: editDepth > 1 ? _jsx(PopupList.Button, {
185
+ id: "action-create",
186
+ onClick: onDrawerCreate,
187
+ children: i18n.t("general:createNew")
188
+ }) : _jsx(PopupList.Button, {
189
+ href: formatAdminURL({
190
+ adminRoute,
191
+ path: `/collections/${collectionConfig?.slug}/create`
192
+ }),
193
+ id: "action-create",
194
+ children: i18n.t("general:createNew")
195
+ })
182
196
  }), !collectionConfig.disableDuplicate && isEditing && _jsx(DuplicateDocument, {
183
197
  id: id.toString(),
198
+ onDuplicate,
199
+ redirectAfterDuplicate,
184
200
  singularLabel: collectionConfig?.labels?.singular,
185
201
  slug: collectionConfig?.slug
186
202
  })]
@@ -188,6 +204,8 @@ export const DocumentControls = props => {
188
204
  buttonId: "action-delete",
189
205
  collectionSlug: collectionConfig?.slug,
190
206
  id: id.toString(),
207
+ onDelete,
208
+ redirectAfterDelete,
191
209
  singularLabel: collectionConfig?.labels?.singular,
192
210
  useAsTitle: collectionConfig?.admin?.useAsTitle
193
211
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useEffect","useConfig","useTranslation","formatAdminURL","formatDate","Autosave","DeleteDocument","DuplicateDocument","Gutter","Popup","PopupList","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","$","id","slug","data","disableActions","hasSavePermission","isAccountView","isEditing","permissions","i18n","config","getEntityConfig","collectionConfig","collectionSlug","globalConfig","globalSlug","admin","t0","routes","t1","dateFormat","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","t2","t3","date","pattern","hasCreatePermission","create","permission","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","_jsxs","className","children","_jsx","t","label","labels","singular","filter","join","autosave","collection","global","publishedDocUpdatedAt","timestamps","title","_isPreviewEnabled","CustomComponent","components","edit","elements","button","horizontalAlign","size","verticalAlign","ButtonGroup","Button","href","path","disableDuplicate","toString","singularLabel","buttonId","useAsTitle"],"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n CollectionPermission,\n GlobalPermission,\n SanitizedCollectionConfig,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect } from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { formatDate } from '../../utilities/formatDate.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\nimport './index.scss'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n readonly apiURL: string\n readonly data?: any\n readonly disableActions?: boolean\n readonly hasPublishPermission?: boolean\n readonly hasSavePermission?: boolean\n id?: number | string\n readonly isAccountView?: boolean\n readonly isEditing?: boolean\n readonly permissions: CollectionPermission | GlobalPermission | null\n readonly slug: SanitizedCollectionConfig['slug']\n}> = (props) => {\n const {\n id,\n slug,\n data,\n disableActions,\n hasSavePermission,\n isAccountView,\n isEditing,\n permissions,\n } = props\n\n const { i18n } = useTranslation()\n\n const { config, getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug: slug }) as ClientGlobalConfig\n\n const {\n admin: { dateFormat },\n routes: { admin: adminRoute },\n } = config\n\n // Settings these in state to avoid hydration issues if there is a mismatch between the server and client\n const [updatedAt, setUpdatedAt] = React.useState<string>('')\n const [createdAt, setCreatedAt] = React.useState<string>('')\n\n useEffect(() => {\n if (data?.updatedAt) {\n setUpdatedAt(formatDate({ date: data.updatedAt, i18n, pattern: dateFormat }))\n }\n if (data?.createdAt) {\n setCreatedAt(formatDate({ date: data.createdAt, i18n, pattern: dateFormat }))\n }\n }, [data, i18n, dateFormat])\n\n const hasCreatePermission =\n permissions && 'create' in permissions && permissions.create?.permission\n\n const hasDeletePermission =\n permissions && 'delete' in permissions && permissions.delete?.permission\n\n const showDotMenu = Boolean(\n collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission),\n )\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__value`}>\n {i18n.t('general:creatingNewLabel', {\n label: getTranslation(\n collectionConfig?.labels?.singular ?? i18n.t('general:document'),\n i18n,\n ),\n })}\n </p>\n </li>\n )}\n {(collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li\n className={[`${baseClass}__status`, `${baseClass}__list-item`]\n .filter(Boolean)\n .join(' ')}\n >\n <Status />\n </li>\n )}\n {((collectionConfig?.versions?.drafts &&\n collectionConfig?.versions?.drafts?.autosave &&\n !unsavedDraftWithValidations) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n hasSavePermission && (\n <li className={`${baseClass}__list-item`}>\n <Autosave\n collection={collectionConfig}\n global={globalConfig}\n id={id}\n publishedDocUpdatedAt={data?.createdAt}\n />\n </li>\n )}\n </Fragment>\n )}\n {collectionConfig?.timestamps && (isEditing || isAccountView) && (\n <Fragment>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.updatedAt ? updatedAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:lastModified')}:&nbsp;</p>\n {data?.updatedAt && <p className={`${baseClass}__value`}>{updatedAt}</p>}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.createdAt ? createdAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}:&nbsp;</p>\n {data?.createdAt && <p className={`${baseClass}__value`}>{createdAt}</p>}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {(collectionConfig?._isPreviewEnabled || globalConfig?._isPreviewEnabled) && (\n <PreviewButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.PreviewButton ||\n globalConfig?.admin?.components?.elements?.PreviewButton\n }\n />\n )}\n {hasSavePermission && (\n <React.Fragment>\n {collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? (\n <React.Fragment>\n {((collectionConfig?.versions?.drafts &&\n !collectionConfig?.versions?.drafts?.autosave) ||\n unsavedDraftWithValidations ||\n (globalConfig?.versions?.drafts &&\n !globalConfig?.versions?.drafts?.autosave)) && (\n <SaveDraftButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.SaveDraftButton ||\n globalConfig?.admin?.components?.elements?.SaveDraftButton\n }\n />\n )}\n <PublishButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.PublishButton ||\n globalConfig?.admin?.components?.elements?.PublishButton\n }\n />\n </React.Fragment>\n ) : (\n <SaveButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.SaveButton ||\n globalConfig?.admin?.components?.elements?.SaveButton\n }\n />\n )}\n </React.Fragment>\n )}\n </div>\n {showDotMenu && (\n <Popup\n button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {hasCreatePermission && (\n <React.Fragment>\n <PopupList.Button\n href={formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}/create`,\n })}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n {!collectionConfig.disableDuplicate && isEditing && (\n <DuplicateDocument\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useEffect","useConfig","useEditDepth","useTranslation","formatAdminURL","formatDate","Autosave","DeleteDocument","DuplicateDocument","Gutter","Popup","PopupList","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","$","id","slug","data","disableActions","disableCreate","hasSavePermission","isAccountView","isEditing","onDelete","onDrawerCreate","onDuplicate","permissions","redirectAfterDelete","redirectAfterDuplicate","i18n","editDepth","config","getEntityConfig","collectionConfig","collectionSlug","globalConfig","globalSlug","admin","t0","routes","t1","dateFormat","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","t2","t3","date","pattern","hasCreatePermission","create","permission","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","_jsxs","className","children","_jsx","t","label","labels","singular","filter","join","autosave","collection","global","publishedDocUpdatedAt","timestamps","title","_isPreviewEnabled","CustomComponent","components","edit","elements","button","horizontalAlign","size","verticalAlign","ButtonGroup","Button","onClick","href","path","disableDuplicate","toString","singularLabel","buttonId","useAsTitle"],"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n CollectionPermission,\n GlobalPermission,\n SanitizedCollectionConfig,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect } from 'react'\n\nimport type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { formatDate } from '../../utilities/formatDate.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\nimport './index.scss'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n readonly apiURL: string\n readonly data?: any\n readonly disableActions?: boolean\n readonly disableCreate?: boolean\n readonly hasPublishPermission?: boolean\n readonly hasSavePermission?: boolean\n id?: number | string\n readonly isAccountView?: boolean\n readonly isEditing?: boolean\n readonly onDelete?: DocumentInfoContext['onDelete']\n readonly onDrawerCreate?: () => void\n /* Only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: DocumentInfoContext['onDuplicate']\n readonly onSave?: DocumentInfoContext['onSave']\n readonly permissions: CollectionPermission | GlobalPermission | null\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly slug: SanitizedCollectionConfig['slug']\n}> = (props) => {\n const {\n id,\n slug,\n data,\n disableActions,\n disableCreate,\n hasSavePermission,\n isAccountView,\n isEditing,\n onDelete,\n onDrawerCreate,\n onDuplicate,\n permissions,\n redirectAfterDelete,\n redirectAfterDuplicate,\n } = props\n\n const { i18n } = useTranslation()\n\n const editDepth = useEditDepth()\n\n const { config, getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug: slug }) as ClientGlobalConfig\n\n const {\n admin: { dateFormat },\n routes: { admin: adminRoute },\n } = config\n\n // Settings these in state to avoid hydration issues if there is a mismatch between the server and client\n const [updatedAt, setUpdatedAt] = React.useState<string>('')\n const [createdAt, setCreatedAt] = React.useState<string>('')\n\n useEffect(() => {\n if (data?.updatedAt) {\n setUpdatedAt(formatDate({ date: data.updatedAt, i18n, pattern: dateFormat }))\n }\n if (data?.createdAt) {\n setCreatedAt(formatDate({ date: data.createdAt, i18n, pattern: dateFormat }))\n }\n }, [data, i18n, dateFormat])\n\n const hasCreatePermission =\n permissions && 'create' in permissions && permissions.create?.permission\n\n const hasDeletePermission =\n permissions && 'delete' in permissions && permissions.delete?.permission\n\n const showDotMenu = Boolean(\n collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission),\n )\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__value`}>\n {i18n.t('general:creatingNewLabel', {\n label: getTranslation(\n collectionConfig?.labels?.singular ?? i18n.t('general:document'),\n i18n,\n ),\n })}\n </p>\n </li>\n )}\n {(collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li\n className={[`${baseClass}__status`, `${baseClass}__list-item`]\n .filter(Boolean)\n .join(' ')}\n >\n <Status />\n </li>\n )}\n {((collectionConfig?.versions?.drafts &&\n collectionConfig?.versions?.drafts?.autosave &&\n !unsavedDraftWithValidations) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n hasSavePermission && (\n <li className={`${baseClass}__list-item`}>\n <Autosave\n collection={collectionConfig}\n global={globalConfig}\n id={id}\n publishedDocUpdatedAt={data?.createdAt}\n />\n </li>\n )}\n </Fragment>\n )}\n {collectionConfig?.timestamps && (isEditing || isAccountView) && (\n <Fragment>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.updatedAt ? updatedAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:lastModified')}:&nbsp;</p>\n {data?.updatedAt && <p className={`${baseClass}__value`}>{updatedAt}</p>}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.createdAt ? createdAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}:&nbsp;</p>\n {data?.createdAt && <p className={`${baseClass}__value`}>{createdAt}</p>}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {(collectionConfig?._isPreviewEnabled || globalConfig?._isPreviewEnabled) && (\n <PreviewButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.PreviewButton ||\n globalConfig?.admin?.components?.elements?.PreviewButton\n }\n />\n )}\n {hasSavePermission && (\n <React.Fragment>\n {collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? (\n <React.Fragment>\n {((collectionConfig?.versions?.drafts &&\n !collectionConfig?.versions?.drafts?.autosave) ||\n unsavedDraftWithValidations ||\n (globalConfig?.versions?.drafts &&\n !globalConfig?.versions?.drafts?.autosave)) && (\n <SaveDraftButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.SaveDraftButton ||\n globalConfig?.admin?.components?.elements?.SaveDraftButton\n }\n />\n )}\n <PublishButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.PublishButton ||\n globalConfig?.admin?.components?.elements?.PublishButton\n }\n />\n </React.Fragment>\n ) : (\n <SaveButton\n CustomComponent={\n collectionConfig?.admin?.components?.edit?.SaveButton ||\n globalConfig?.admin?.components?.elements?.SaveButton\n }\n />\n )}\n </React.Fragment>\n )}\n </div>\n {showDotMenu && (\n <Popup\n button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {hasCreatePermission && (\n <React.Fragment>\n {!disableCreate && (\n <Fragment>\n {editDepth > 1 ? (\n <PopupList.Button id=\"action-create\" onClick={onDrawerCreate}>\n {i18n.t('general:createNew')}\n </PopupList.Button>\n ) : (\n <PopupList.Button\n href={formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}/create`,\n })}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n )}\n </Fragment>\n )}\n {!collectionConfig.disableDuplicate && isEditing && (\n <DuplicateDocument\n id={id.toString()}\n onDuplicate={onDuplicate}\n redirectAfterDuplicate={redirectAfterDuplicate}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onDelete={onDelete}\n redirectAfterDelete={redirectAfterDelete}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAcrD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4F/D,CAAA"}
1
+ {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAcrD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoI/D,CAAA"}
@@ -17,14 +17,19 @@ import { IDLabel } from '../IDLabel/index.js';
17
17
  import { RenderTitle } from '../RenderTitle/index.js';
18
18
  import { baseClass } from './index.js';
19
19
  export const DocumentDrawerContent = t0 => {
20
- const $ = _c(30);
20
+ const $ = _c(44);
21
21
  const {
22
22
  id: existingDocID,
23
23
  AfterFields,
24
24
  collectionSlug,
25
+ disableActions,
25
26
  drawerSlug,
26
27
  Header,
27
- onSave: onSaveFromProps
28
+ onDelete: onDeleteFromProps,
29
+ onDuplicate: onDuplicateFromProps,
30
+ onSave: onSaveFromProps,
31
+ redirectAfterDelete,
32
+ redirectAfterDuplicate
28
33
  } = t0;
29
34
  const {
30
35
  config
@@ -103,27 +108,74 @@ export const DocumentDrawerContent = t0 => {
103
108
  }
104
109
  const onSave = t5;
105
110
  let t6;
106
- if ($[12] !== Header) {
107
- t6 = Header || _jsx(RenderTitle, {
111
+ if ($[12] !== onDuplicateFromProps || $[13] !== collectionConfig) {
112
+ t6 = args_0 => {
113
+ setDocID(args_0.doc.id);
114
+ if (typeof onDuplicateFromProps === "function") {
115
+ onDuplicateFromProps({
116
+ ...args_0,
117
+ collectionConfig
118
+ });
119
+ }
120
+ };
121
+ $[12] = onDuplicateFromProps;
122
+ $[13] = collectionConfig;
123
+ $[14] = t6;
124
+ } else {
125
+ t6 = $[14];
126
+ }
127
+ const onDuplicate = t6;
128
+ let t7;
129
+ if ($[15] !== onDeleteFromProps || $[16] !== collectionConfig || $[17] !== closeModal || $[18] !== drawerSlug) {
130
+ t7 = args_1 => {
131
+ if (typeof onDeleteFromProps === "function") {
132
+ onDeleteFromProps({
133
+ ...args_1,
134
+ collectionConfig
135
+ });
136
+ }
137
+ closeModal(drawerSlug);
138
+ };
139
+ $[15] = onDeleteFromProps;
140
+ $[16] = collectionConfig;
141
+ $[17] = closeModal;
142
+ $[18] = drawerSlug;
143
+ $[19] = t7;
144
+ } else {
145
+ t7 = $[19];
146
+ }
147
+ const onDelete = t7;
148
+ let t8;
149
+ if ($[20] !== Header) {
150
+ t8 = Header || _jsx(RenderTitle, {
108
151
  element: "span"
109
152
  });
110
- $[12] = Header;
111
- $[13] = t6;
153
+ $[20] = Header;
154
+ $[21] = t8;
112
155
  } else {
113
- t6 = $[13];
156
+ t8 = $[21];
114
157
  }
115
- let t7;
116
- if ($[14] !== t6 || $[15] !== t || $[16] !== toggleModal || $[17] !== drawerSlug || $[18] !== Edit || $[19] !== AfterFields || $[20] !== apiURL || $[21] !== collectionConfig.slug || $[22] !== docID || $[23] !== isEditing || $[24] !== onLoadError || $[25] !== onSave) {
117
- let t8;
118
- if ($[27] !== toggleModal || $[28] !== drawerSlug) {
119
- t8 = () => toggleModal(drawerSlug);
120
- $[27] = toggleModal;
121
- $[28] = drawerSlug;
122
- $[29] = t8;
158
+ let t9;
159
+ if ($[22] !== t8 || $[23] !== t || $[24] !== toggleModal || $[25] !== drawerSlug || $[26] !== redirectAfterDelete || $[27] !== redirectAfterDuplicate || $[28] !== Edit || $[29] !== AfterFields || $[30] !== apiURL || $[31] !== collectionConfig.slug || $[32] !== disableActions || $[33] !== docID || $[34] !== isEditing || $[35] !== onDelete || $[36] !== onDuplicate || $[37] !== onLoadError || $[38] !== onSave) {
160
+ let t10;
161
+ if ($[40] !== toggleModal || $[41] !== drawerSlug) {
162
+ t10 = () => toggleModal(drawerSlug);
163
+ $[40] = toggleModal;
164
+ $[41] = drawerSlug;
165
+ $[42] = t10;
166
+ } else {
167
+ t10 = $[42];
168
+ }
169
+ let t11;
170
+ if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
171
+ t11 = () => {
172
+ setDocID(null);
173
+ };
174
+ $[43] = t11;
123
175
  } else {
124
- t8 = $[29];
176
+ t11 = $[43];
125
177
  }
126
- t7 = _jsx(DocumentInfoProvider, {
178
+ t9 = _jsx(DocumentInfoProvider, {
127
179
  AfterFields,
128
180
  apiURL,
129
181
  BeforeDocument: _jsxs(Gutter, {
@@ -132,44 +184,54 @@ export const DocumentDrawerContent = t0 => {
132
184
  className: `${baseClass}__header-content`,
133
185
  children: [_jsx("h2", {
134
186
  className: `${baseClass}__header-text`,
135
- children: t6
187
+ children: t8
136
188
  }), _jsx("button", {
137
189
  "aria-label": t("general:close"),
138
190
  className: `${baseClass}__header-close`,
139
- onClick: t8,
191
+ onClick: t10,
140
192
  type: "button",
141
193
  children: _jsx(XIcon, {})
142
194
  })]
143
195
  }), _jsx(DocumentTitle, {})]
144
196
  }),
145
197
  collectionSlug: collectionConfig.slug,
146
- disableActions: true,
198
+ disableActions,
147
199
  disableLeaveWithoutSaving: true,
148
200
  id: docID,
149
201
  isEditing,
202
+ onDelete,
203
+ onDrawerCreate: t11,
204
+ onDuplicate,
150
205
  onLoadError,
151
206
  onSave,
207
+ redirectAfterDelete: redirectAfterDelete !== undefined ? redirectAfterDelete : false,
208
+ redirectAfterDuplicate: redirectAfterDuplicate !== undefined ? redirectAfterDuplicate : false,
152
209
  children: _jsx(RenderComponent, {
153
210
  mappedComponent: Edit
154
211
  })
155
212
  });
156
- $[14] = t6;
157
- $[15] = t;
158
- $[16] = toggleModal;
159
- $[17] = drawerSlug;
160
- $[18] = Edit;
161
- $[19] = AfterFields;
162
- $[20] = apiURL;
163
- $[21] = collectionConfig.slug;
164
- $[22] = docID;
165
- $[23] = isEditing;
166
- $[24] = onLoadError;
167
- $[25] = onSave;
168
- $[26] = t7;
213
+ $[22] = t8;
214
+ $[23] = t;
215
+ $[24] = toggleModal;
216
+ $[25] = drawerSlug;
217
+ $[26] = redirectAfterDelete;
218
+ $[27] = redirectAfterDuplicate;
219
+ $[28] = Edit;
220
+ $[29] = AfterFields;
221
+ $[30] = apiURL;
222
+ $[31] = collectionConfig.slug;
223
+ $[32] = disableActions;
224
+ $[33] = docID;
225
+ $[34] = isEditing;
226
+ $[35] = onDelete;
227
+ $[36] = onDuplicate;
228
+ $[37] = onLoadError;
229
+ $[38] = onSave;
230
+ $[39] = t9;
169
231
  } else {
170
- t7 = $[26];
232
+ t9 = $[39];
171
233
  }
172
- return t7;
234
+ return t9;
173
235
  };
174
236
  const DocumentTitle = () => {
175
237
  const $ = _c(3);