@payloadcms/ui 3.49.0-canary.8 → 3.49.1

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 (197) hide show
  1. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  2. package/dist/elements/AddNewRelation/index.js +1 -1
  3. package/dist/elements/AddNewRelation/index.js.map +1 -1
  4. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  5. package/dist/elements/DeleteDocument/index.js +65 -47
  6. package/dist/elements/DeleteDocument/index.js.map +1 -1
  7. package/dist/elements/DeleteDocument/index.scss +10 -0
  8. package/dist/elements/DeleteMany/index.d.ts +6 -2
  9. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  10. package/dist/elements/DeleteMany/index.js +153 -51
  11. package/dist/elements/DeleteMany/index.js.map +1 -1
  12. package/dist/elements/DeleteMany/index.scss +13 -0
  13. package/dist/elements/DocumentControls/index.d.ts +3 -0
  14. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  15. package/dist/elements/DocumentControls/index.js +24 -5
  16. package/dist/elements/DocumentControls/index.js.map +1 -1
  17. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  18. package/dist/elements/DocumentDrawer/DrawerContent.js +4 -2
  19. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  20. package/dist/elements/DocumentDrawer/Provider.d.ts +5 -1
  21. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  22. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  23. package/dist/elements/DocumentDrawer/index.d.ts +19 -0
  24. package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
  25. package/dist/elements/DocumentDrawer/index.js +28 -9
  26. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  27. package/dist/elements/DocumentDrawer/types.d.ts +26 -12
  28. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  29. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  30. package/dist/elements/DocumentFields/index.d.ts +1 -0
  31. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  32. package/dist/elements/DocumentFields/index.js +3 -1
  33. package/dist/elements/DocumentFields/index.js.map +1 -1
  34. package/dist/elements/FolderView/Cell/index.client.d.ts +3 -2
  35. package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
  36. package/dist/elements/FolderView/Cell/index.client.js +3 -1
  37. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  38. package/dist/elements/FolderView/Cell/index.server.d.ts.map +1 -1
  39. package/dist/elements/FolderView/Cell/index.server.js +2 -1
  40. package/dist/elements/FolderView/Cell/index.server.js.map +1 -1
  41. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts +7 -0
  42. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -0
  43. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +164 -0
  44. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -0
  45. package/dist/elements/ListHeader/TitleActions/index.d.ts +1 -0
  46. package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
  47. package/dist/elements/ListHeader/TitleActions/index.js +1 -0
  48. package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
  49. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts +10 -0
  50. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts.map +1 -0
  51. package/dist/elements/ListHeaderTabs/ByFolderPill.js +70 -0
  52. package/dist/elements/ListHeaderTabs/ByFolderPill.js.map +1 -0
  53. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts +9 -0
  54. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts.map +1 -0
  55. package/dist/elements/ListHeaderTabs/DefaultListPill.js +68 -0
  56. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -0
  57. package/dist/elements/ListHeaderTabs/TrashPill.d.ts +6 -0
  58. package/dist/elements/ListHeaderTabs/TrashPill.d.ts.map +1 -0
  59. package/dist/elements/ListHeaderTabs/TrashPill.js +53 -0
  60. package/dist/elements/ListHeaderTabs/TrashPill.js.map +1 -0
  61. package/dist/elements/{ListFolderPills → ListHeaderTabs}/index.scss +1 -2
  62. package/dist/elements/ListSelection/index.scss +1 -1
  63. package/dist/elements/PermanentlyDeleteButton/index.d.ts +14 -0
  64. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -0
  65. package/dist/elements/PermanentlyDeleteButton/index.js +147 -0
  66. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -0
  67. package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts +3 -3
  68. package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts.map +1 -1
  69. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +19 -70
  70. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  71. package/dist/elements/RelationshipTable/cells/DrawerLink/index.scss +10 -0
  72. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  73. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  74. package/dist/elements/RelationshipTable/index.js +61 -40
  75. package/dist/elements/RelationshipTable/index.js.map +1 -1
  76. package/dist/elements/RestoreButton/index.d.ts +15 -0
  77. package/dist/elements/RestoreButton/index.d.ts.map +1 -0
  78. package/dist/elements/RestoreButton/index.js +171 -0
  79. package/dist/elements/RestoreButton/index.js.map +1 -0
  80. package/dist/elements/RestoreButton/index.scss +25 -0
  81. package/dist/elements/RestoreMany/index.d.ts +9 -0
  82. package/dist/elements/RestoreMany/index.d.ts.map +1 -0
  83. package/dist/elements/RestoreMany/index.js +193 -0
  84. package/dist/elements/RestoreMany/index.js.map +1 -0
  85. package/dist/elements/RestoreMany/index.scss +25 -0
  86. package/dist/elements/Status/index.d.ts.map +1 -1
  87. package/dist/elements/Status/index.js +6 -4
  88. package/dist/elements/Status/index.js.map +1 -1
  89. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  90. package/dist/elements/Table/DefaultCell/index.js +12 -9
  91. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  92. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  93. package/dist/elements/Toasts/fieldErrors.js +4 -1
  94. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  95. package/dist/elements/TrashBanner/index.d.ts +4 -0
  96. package/dist/elements/TrashBanner/index.d.ts.map +1 -0
  97. package/dist/elements/TrashBanner/index.js +37 -0
  98. package/dist/elements/TrashBanner/index.js.map +1 -0
  99. package/dist/elements/TrashBanner/index.scss +20 -0
  100. package/dist/exports/client/index.js +24 -22
  101. package/dist/exports/client/index.js.map +4 -4
  102. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  103. package/dist/fields/Checkbox/Input.js +2 -0
  104. package/dist/fields/Checkbox/Input.js.map +1 -1
  105. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  106. package/dist/fields/Relationship/Input.js.map +1 -1
  107. package/dist/fields/Relationship/index.d.ts.map +1 -1
  108. package/dist/fields/Relationship/index.js +8 -8
  109. package/dist/fields/Relationship/index.js.map +1 -1
  110. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  111. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  112. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +7 -0
  113. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  114. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  115. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  116. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  117. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  118. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  119. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  120. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  121. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  122. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  123. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  124. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  125. package/dist/forms/fieldSchemasToFormState/types.d.ts +1 -0
  126. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  127. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  128. package/dist/{elements/AddNewRelation → hooks}/useRelatedCollections.d.ts +3 -0
  129. package/dist/hooks/useRelatedCollections.d.ts.map +1 -0
  130. package/dist/{elements/AddNewRelation → hooks}/useRelatedCollections.js +4 -1
  131. package/dist/hooks/useRelatedCollections.js.map +1 -0
  132. package/dist/icons/Trash/index.d.ts +6 -0
  133. package/dist/icons/Trash/index.d.ts.map +1 -0
  134. package/dist/icons/Trash/index.js +22 -0
  135. package/dist/icons/Trash/index.js.map +1 -0
  136. package/dist/icons/Trash/index.scss +6 -0
  137. package/dist/providers/DocumentInfo/types.d.ts +2 -0
  138. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  139. package/dist/providers/DocumentInfo/types.js.map +1 -1
  140. package/dist/providers/ServerFunctions/index.d.ts +1 -0
  141. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  142. package/dist/providers/ServerFunctions/index.js.map +1 -1
  143. package/dist/providers/TableColumns/buildColumnState/index.d.ts +2 -1
  144. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  145. package/dist/providers/TableColumns/buildColumnState/index.js +4 -2
  146. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  147. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +3 -2
  148. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  149. package/dist/providers/TableColumns/buildColumnState/renderCell.js +4 -2
  150. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  151. package/dist/styles.css +1 -1
  152. package/dist/utilities/buildFormState.d.ts.map +1 -1
  153. package/dist/utilities/buildFormState.js +2 -0
  154. package/dist/utilities/buildFormState.js.map +1 -1
  155. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  156. package/dist/utilities/getDisplayedFieldValue.js +2 -2
  157. package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
  158. package/dist/utilities/hasOptionLabelJSXElement.js +2 -2
  159. package/dist/utilities/hasOptionLabelJSXElement.js.map +1 -1
  160. package/dist/utilities/isValidReactElement.d.ts +7 -0
  161. package/dist/utilities/isValidReactElement.d.ts.map +1 -0
  162. package/dist/utilities/isValidReactElement.js +10 -0
  163. package/dist/utilities/isValidReactElement.js.map +1 -0
  164. package/dist/utilities/renderTable.d.ts +4 -3
  165. package/dist/utilities/renderTable.d.ts.map +1 -1
  166. package/dist/utilities/renderTable.js +15 -13
  167. package/dist/utilities/renderTable.js.map +1 -1
  168. package/dist/views/CollectionFolder/index.d.ts.map +1 -1
  169. package/dist/views/CollectionFolder/index.js +15 -5
  170. package/dist/views/CollectionFolder/index.js.map +1 -1
  171. package/dist/views/Edit/Auth/index.js +5 -4
  172. package/dist/views/Edit/Auth/index.js.map +1 -1
  173. package/dist/views/Edit/SetDocumentStepNav/index.d.ts +1 -0
  174. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  175. package/dist/views/Edit/SetDocumentStepNav/index.js +26 -15
  176. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  177. package/dist/views/Edit/index.d.ts.map +1 -1
  178. package/dist/views/Edit/index.js +11 -3
  179. package/dist/views/Edit/index.js.map +1 -1
  180. package/dist/views/List/ListHeader/index.d.ts +4 -2
  181. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  182. package/dist/views/List/ListHeader/index.js +24 -9
  183. package/dist/views/List/ListHeader/index.js.map +1 -1
  184. package/dist/views/List/ListSelection/index.d.ts +2 -1
  185. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  186. package/dist/views/List/ListSelection/index.js +26 -17
  187. package/dist/views/List/ListSelection/index.js.map +1 -1
  188. package/dist/views/List/index.d.ts.map +1 -1
  189. package/dist/views/List/index.js +28 -13
  190. package/dist/views/List/index.js.map +1 -1
  191. package/package.json +7 -7
  192. package/dist/elements/AddNewRelation/useRelatedCollections.d.ts.map +0 -1
  193. package/dist/elements/AddNewRelation/useRelatedCollections.js.map +0 -1
  194. package/dist/elements/ListFolderPills/index.d.ts +0 -10
  195. package/dist/elements/ListFolderPills/index.d.ts.map +0 -1
  196. package/dist/elements/ListFolderPills/index.js +0 -97
  197. package/dist/elements/ListFolderPills/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrashPill.js","names":["c","_c","formatAdminURL","useConfig","useTranslation","Button","TrashPill","t0","$","collectionConfig","viewType","t","config","trash","t1","t2","t3","slug","t4","routes","admin","serverURL","_jsx","buttonStyle","disabled","el","id","to","adminRoute","path","children"],"sources":["../../../src/elements/ListHeaderTabs/TrashPill.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, ViewTypes } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\n\nexport function TrashPill({\n collectionConfig,\n viewType,\n}: {\n collectionConfig: ClientCollectionConfig\n readonly viewType: ViewTypes\n}) {\n const { t } = useTranslation()\n const { config } = useConfig()\n\n if (!collectionConfig.trash) {\n return null\n }\n\n return (\n <Button\n buttonStyle=\"tab\"\n disabled={viewType === 'trash'}\n el={viewType === 'list' || viewType === 'folders' ? 'link' : 'div'}\n id=\"trash-view-pill\"\n key=\"trash-view-pill\"\n to={formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionConfig.slug}/trash`,\n serverURL: config.serverURL,\n })}\n >\n {t('general:trash')}\n </Button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,cAAc,QAAQ;AAE/B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AAEvB,OAAO,SAAAC,UAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAmB;IAAAQ,gBAAA;IAAAC;EAAA,IAAAH,EAMzB;EACC;IAAAI;EAAA,IAAcP,cAAA;EACd;IAAAQ;EAAA,IAAmBT,SAAA;EAAA,KAEdM,gBAAA,CAAAI,KAAA;IAAA;EAAA;EAOS,MAAAC,EAAA,GAAAJ,QAAA,KAAa;EACnB,MAAAK,EAAA,GAAAL,QAAA,KAAa,UAAUA,QAAA,KAAa,YAAY,SAAS;EAKrD,MAAAM,EAAA,mBAAgBP,gBAAA,CAAAQ,IAAA,QAA6B;EAAA,IAAAC,EAAA;EAAA,IAAAV,CAAA,QAAAI,MAAA,CAAAO,MAAA,CAAAC,KAAA,IAAAZ,CAAA,QAAAI,MAAA,CAAAS,SAAA,IAAAb,CAAA,QAAAG,CAAA,IAAAH,CAAA,QAAAM,EAAA,IAAAN,CAAA,QAAAO,EAAA,IAAAP,CAAA,QAAAQ,EAAA;IARvDE,EAAA,GAAAI,IAAA,CAAAjB,MAAA;MAAAkB,WAAA,EACc;MAAAC,QAAA,EACFV,EAAa;MAAAW,EAAA,EACnBV,EAAyD;MAAAW,EAAA,EAC1D;MAAAC,EAAA,EAECzB,cAAA;QAAA0B,UAAA,EACUhB,MAAA,CAAAO,MAAA,CAAAC,KAAA;QAAAS,IAAA,EACNb,EAA6C;QAAAK,SAAA,EACxCT,MAAA,CAAAS;MAAA,CACb;MAAAS,QAAA,EAECnB,CAAA,CAAE;IAAA,GAPC;IAAAH,CAAA,MAAAI,MAAA,CAAAO,MAAA,CAAAC,KAAA;IAAAZ,CAAA,MAAAI,MAAA,CAAAS,SAAA;IAAAb,CAAA,MAAAG,CAAA;IAAAH,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;IAAAR,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,OALNU,EAKM;AAAA","ignoreList":[]}
@@ -1,7 +1,6 @@
1
1
  @layer payload-default {
2
- .list-folder-pills {
2
+ .list-pills {
3
3
  display: flex;
4
4
  gap: calc(var(--base) * 0.5);
5
- margin-left: calc(var(--base) * 0.5);
6
5
  }
7
6
  }
@@ -10,7 +10,7 @@
10
10
 
11
11
  &__actions {
12
12
  display: flex;
13
- gap: calc(var(--base) * 0.3);
13
+ gap: calc(var(--base) * 0.5);
14
14
  }
15
15
 
16
16
  &__button {
@@ -0,0 +1,14 @@
1
+ import type { SanitizedCollectionConfig } from 'payload';
2
+ import React from 'react';
3
+ import type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js';
4
+ export type Props = {
5
+ readonly buttonId?: string;
6
+ readonly collectionSlug: SanitizedCollectionConfig['slug'];
7
+ readonly id?: string;
8
+ readonly onDelete?: DocumentDrawerContextType['onDelete'];
9
+ readonly redirectAfterDelete?: boolean;
10
+ readonly singularLabel: SanitizedCollectionConfig['labels']['singular'];
11
+ readonly title?: string;
12
+ };
13
+ export declare const PermanentlyDeleteButton: React.FC<Props>;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAW9E,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,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACzD,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;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0InD,CAAA"}
@@ -0,0 +1,147 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { useModal } from '@faceless-ui/modal';
5
+ import { getTranslation } from '@payloadcms/translations';
6
+ import { useRouter } from 'next/navigation.js';
7
+ import { formatAdminURL } from 'payload/shared';
8
+ import * as qs from 'qs-esm';
9
+ import React, { Fragment, useCallback } from 'react';
10
+ import { toast } from 'sonner';
11
+ import { useConfig } from '../../providers/Config/index.js';
12
+ import { useDocumentTitle } from '../../providers/DocumentTitle/index.js';
13
+ import { useRouteTransition } from '../../providers/RouteTransition/index.js';
14
+ import { useTranslation } from '../../providers/Translation/index.js';
15
+ import { requests } from '../../utilities/api.js';
16
+ import { Button } from '../Button/index.js';
17
+ import { ConfirmationModal } from '../ConfirmationModal/index.js';
18
+ import { Translation } from '../Translation/index.js';
19
+ export const PermanentlyDeleteButton = props => {
20
+ const {
21
+ id,
22
+ buttonId,
23
+ collectionSlug,
24
+ onDelete,
25
+ redirectAfterDelete = true,
26
+ singularLabel,
27
+ title: titleFromProps
28
+ } = props;
29
+ const {
30
+ config: {
31
+ routes: {
32
+ admin: adminRoute,
33
+ api
34
+ },
35
+ serverURL
36
+ },
37
+ getEntityConfig
38
+ } = useConfig();
39
+ const collectionConfig = getEntityConfig({
40
+ collectionSlug
41
+ });
42
+ const router = useRouter();
43
+ const {
44
+ i18n,
45
+ t
46
+ } = useTranslation();
47
+ const {
48
+ title
49
+ } = useDocumentTitle();
50
+ const {
51
+ startRouteTransition
52
+ } = useRouteTransition();
53
+ const {
54
+ openModal
55
+ } = useModal();
56
+ const modalSlug = `perma-delete-${id}`;
57
+ const addDefaultError = useCallback(() => {
58
+ toast.error(t('error:deletingTitle', {
59
+ title
60
+ }));
61
+ }, [t, title]);
62
+ const handleDelete = useCallback(async () => {
63
+ try {
64
+ const url = `${serverURL}${api}/${collectionSlug}?${qs.stringify({
65
+ trash: true,
66
+ where: {
67
+ and: [{
68
+ id: {
69
+ equals: id
70
+ }
71
+ }, {
72
+ deletedAt: {
73
+ exists: true
74
+ }
75
+ }]
76
+ }
77
+ })}`;
78
+ const res = await requests.delete(url, {
79
+ headers: {
80
+ 'Accept-Language': i18n.language,
81
+ 'Content-Type': 'application/json'
82
+ }
83
+ });
84
+ const json = await res.json();
85
+ if (res.status < 400) {
86
+ toast.success(t('general:titleDeleted', {
87
+ label: getTranslation(singularLabel, i18n),
88
+ title
89
+ }) || json.message);
90
+ if (redirectAfterDelete) {
91
+ return startRouteTransition(() => router.push(formatAdminURL({
92
+ adminRoute,
93
+ path: `/collections/${collectionSlug}/trash`
94
+ })));
95
+ }
96
+ if (typeof onDelete === 'function') {
97
+ await onDelete({
98
+ id,
99
+ collectionConfig
100
+ });
101
+ }
102
+ return;
103
+ }
104
+ if (json.errors) {
105
+ json.errors.forEach(error => toast.error(error.message));
106
+ } else {
107
+ addDefaultError();
108
+ }
109
+ } catch (_err) {
110
+ addDefaultError();
111
+ }
112
+ }, [serverURL, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterDelete, onDelete, collectionConfig, startRouteTransition]);
113
+ if (id) {
114
+ return /*#__PURE__*/_jsxs(Fragment, {
115
+ children: [/*#__PURE__*/_jsx(Button, {
116
+ buttonStyle: "secondary",
117
+ id: buttonId,
118
+ onClick: () => {
119
+ openModal(modalSlug);
120
+ },
121
+ children: t('general:permanentlyDelete')
122
+ }), /*#__PURE__*/_jsx(ConfirmationModal, {
123
+ body: /*#__PURE__*/_jsx(Translation, {
124
+ elements: {
125
+ '1': ({
126
+ children
127
+ }) => /*#__PURE__*/_jsx("strong", {
128
+ children: children
129
+ })
130
+ },
131
+ i18nKey: "general:aboutToPermanentlyDelete",
132
+ t: t,
133
+ variables: {
134
+ label: getTranslation(singularLabel, i18n),
135
+ title: titleFromProps || title || id
136
+ }
137
+ }),
138
+ confirmingLabel: t('general:deleting'),
139
+ heading: t('general:confirmDeletion'),
140
+ modalSlug: modalSlug,
141
+ onConfirm: handleDelete
142
+ })]
143
+ });
144
+ }
145
+ return null;
146
+ };
147
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","qs","React","Fragment","useCallback","toast","useConfig","useDocumentTitle","useRouteTransition","useTranslation","requests","Button","ConfirmationModal","Translation","PermanentlyDeleteButton","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","router","i18n","t","startRouteTransition","openModal","modalSlug","addDefaultError","error","handleDelete","url","stringify","trash","where","and","equals","deletedAt","exists","res","delete","headers","language","json","status","success","label","message","push","path","errors","forEach","_err","_jsxs","_jsx","buttonStyle","onClick","body","elements","1","children","i18nKey","variables","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const PermanentlyDeleteButton: 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 })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `perma-delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n try {\n const url = `${serverURL}${api}/${collectionSlug}?${qs.stringify({\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n })}`\n\n const res = await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n }),\n ),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"secondary\"\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:permanentlyDelete')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import type { DocumentDrawerProps } from '../../../DocumentDrawer/types.js';
2
+ import type { OnDrawerOpen } from '../../index.js';
3
3
  import './index.scss';
4
4
  export declare const DrawerLink: React.FC<{
5
- readonly onDrawerDelete?: DocumentDrawerProps['onDelete'];
6
- readonly onDrawerSave?: DocumentDrawerProps['onSave'];
5
+ currentDrawerID?: string;
6
+ onDrawerOpen: OnDrawerOpen;
7
7
  }>;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/RelationshipTable/cells/DrawerLink/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAM3E,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;CACtD,CAyCA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/RelationshipTable/cells/DrawerLink/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAKlD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;CAC3B,CAiBA,CAAA"}
@@ -2,92 +2,41 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
- import React, { useCallback } from 'react';
5
+ import React from 'react';
6
6
  import { EditIcon } from '../../../../icons/Edit/index.js';
7
7
  import { useCellProps } from '../../../../providers/TableColumns/RenderDefaultCell/index.js';
8
- import { useDocumentDrawer } from '../../../DocumentDrawer/index.js';
9
8
  import { DefaultCell } from '../../../Table/DefaultCell/index.js';
10
9
  import './index.scss';
11
- export const DrawerLink = props => {
12
- const $ = _c(15);
10
+ export const DrawerLink = t0 => {
11
+ const $ = _c(3);
13
12
  const {
14
- onDrawerDelete: onDrawerDeleteFromProps,
15
- onDrawerSave: onDrawerSaveFromProps
16
- } = props;
13
+ onDrawerOpen
14
+ } = t0;
17
15
  const cellProps = useCellProps();
18
- const t0 = cellProps?.rowData.id;
19
- const t1 = cellProps?.collectionSlug;
20
- let t2;
21
- if ($[0] !== t0 || $[1] !== t1) {
22
- t2 = {
23
- id: t0,
24
- collectionSlug: t1
25
- };
26
- $[0] = t0;
27
- $[1] = t1;
28
- $[2] = t2;
29
- } else {
30
- t2 = $[2];
31
- }
32
- const [DocumentDrawer, DocumentDrawerToggler, t3] = useDocumentDrawer(t2);
33
- const {
34
- closeDrawer
35
- } = t3;
36
- let t4;
37
- if ($[3] !== closeDrawer || $[4] !== onDrawerSaveFromProps) {
38
- t4 = args => {
39
- closeDrawer();
40
- if (typeof onDrawerSaveFromProps === "function") {
41
- onDrawerSaveFromProps(args);
42
- }
43
- };
44
- $[3] = closeDrawer;
45
- $[4] = onDrawerSaveFromProps;
46
- $[5] = t4;
47
- } else {
48
- t4 = $[5];
49
- }
50
- const onDrawerSave = t4;
51
- let t5;
52
- if ($[6] !== closeDrawer || $[7] !== onDrawerDeleteFromProps) {
53
- t5 = args_0 => {
54
- closeDrawer();
55
- if (typeof onDrawerDeleteFromProps === "function") {
56
- onDrawerDeleteFromProps(args_0);
57
- }
58
- };
59
- $[6] = closeDrawer;
60
- $[7] = onDrawerDeleteFromProps;
61
- $[8] = t5;
62
- } else {
63
- t5 = $[8];
64
- }
65
- const onDrawerDelete = t5;
66
- let t6;
67
- if ($[9] !== DocumentDrawer || $[10] !== DocumentDrawerToggler || $[11] !== cellProps || $[12] !== onDrawerDelete || $[13] !== onDrawerSave) {
68
- t6 = _jsxs("div", {
16
+ let t1;
17
+ if ($[0] !== cellProps || $[1] !== onDrawerOpen) {
18
+ t1 = _jsxs("div", {
69
19
  className: "drawer-link",
70
20
  children: [_jsx(DefaultCell, {
71
21
  ...cellProps,
72
22
  className: "drawer-link__cell",
73
23
  link: false,
74
24
  onClick: null
75
- }), _jsx(DocumentDrawerToggler, {
25
+ }), _jsx("button", {
26
+ className: "drawer-link__doc-drawer-toggler",
27
+ onClick: () => {
28
+ onDrawerOpen(cellProps.rowData.id);
29
+ },
30
+ type: "button",
76
31
  children: _jsx(EditIcon, {})
77
- }), _jsx(DocumentDrawer, {
78
- onDelete: onDrawerDelete,
79
- onSave: onDrawerSave
80
32
  })]
81
33
  });
82
- $[9] = DocumentDrawer;
83
- $[10] = DocumentDrawerToggler;
84
- $[11] = cellProps;
85
- $[12] = onDrawerDelete;
86
- $[13] = onDrawerSave;
87
- $[14] = t6;
34
+ $[0] = cellProps;
35
+ $[1] = onDrawerOpen;
36
+ $[2] = t1;
88
37
  } else {
89
- t6 = $[14];
38
+ t1 = $[2];
90
39
  }
91
- return t6;
40
+ return t1;
92
41
  };
93
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","EditIcon","useCellProps","useDocumentDrawer","DefaultCell","DrawerLink","props","$","onDrawerDelete","onDrawerDeleteFromProps","onDrawerSave","onDrawerSaveFromProps","cellProps","t0","rowData","id","t1","collectionSlug","t2","DocumentDrawer","DocumentDrawerToggler","t3","closeDrawer","t4","args","t5","args_0","t6","_jsxs","className","children","_jsx","link","onClick","onDelete","onSave"],"sources":["../../../../../src/elements/RelationshipTable/cells/DrawerLink/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback } from 'react'\n\nimport type { DocumentDrawerProps } from '../../../DocumentDrawer/types.js'\n\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useCellProps } from '../../../../providers/TableColumns/RenderDefaultCell/index.js'\nimport { useDocumentDrawer } from '../../../DocumentDrawer/index.js'\nimport { DefaultCell } from '../../../Table/DefaultCell/index.js'\nimport './index.scss'\n\nexport const DrawerLink: React.FC<{\n readonly onDrawerDelete?: DocumentDrawerProps['onDelete']\n readonly onDrawerSave?: DocumentDrawerProps['onSave']\n}> = (props) => {\n const { onDrawerDelete: onDrawerDeleteFromProps, onDrawerSave: onDrawerSaveFromProps } = props\n\n const cellProps = useCellProps()\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: cellProps?.rowData.id,\n collectionSlug: cellProps?.collectionSlug,\n })\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n closeDrawer()\n\n if (typeof onDrawerSaveFromProps === 'function') {\n void onDrawerSaveFromProps(args)\n }\n },\n [closeDrawer, onDrawerSaveFromProps],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n closeDrawer()\n\n if (typeof onDrawerDeleteFromProps === 'function') {\n void onDrawerDeleteFromProps(args)\n }\n },\n [closeDrawer, onDrawerDeleteFromProps],\n )\n\n return (\n <div className=\"drawer-link\">\n <DefaultCell {...cellProps} className=\"drawer-link__cell\" link={false} onClick={null} />\n <DocumentDrawerToggler>\n <EditIcon />\n </DocumentDrawerToggler>\n <DocumentDrawer onDelete={onDrawerDelete} onSave={onDrawerSave} />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,WAAW,QAAQ;AAInC,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,WAAW,QAAQ;AAC5B,OAAO;AAEP,OAAO,MAAMC,UAAA,GAGRC,KAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACH;IAAAU,cAAA,EAAAC,uBAAA;IAAAC,YAAA,EAAAC;EAAA,IAAyFL,KAAA;EAEzF,MAAAM,SAAA,GAAkBV,YAAA;EAGZ,MAAAW,EAAA,GAAAD,SAAA,EAAAE,OAAA,CAAAC,EAAA;EACY,MAAAC,EAAA,GAAAJ,SAAA,EAAAK,cAAA;EAAW,IAAAC,EAAA;EAAA,IAAAX,CAAA,QAAAM,EAAA,IAAAN,CAAA,QAAAS,EAAA;IAFsDE,EAAA;MAAAH,EAAA,EAC7EF,EAAmB;MAAAI,cAAA,EACPD;IAAW;IAC7BT,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAHA,OAAAY,cAAA,EAAAC,qBAAA,EAAAC,EAAA,IAAiElB,iBAAA,CAAkBe,EAGnF;EAH8C;IAAAI;EAAA,IAAAD,EAAe;EAAA,IAAAE,EAAA;EAAA,IAAAhB,CAAA,QAAAe,WAAA,IAAAf,CAAA,QAAAI,qBAAA;IAM3DY,EAAA,GAAAC,IAAA;MACEF,WAAA;MAAA,IAEI,OAAOX,qBAAA,KAA0B;QAC9BA,qBAAA,CAAsBa,IAAA;MAAA;IAAA;IAE/BjB,CAAA,MAAAe,WAAA;IAAAf,CAAA,MAAAI,qBAAA;IAAAJ,CAAA,MAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAPF,MAAAG,YAAA,GAAqBa,EAQiB;EAAA,IAAAE,EAAA;EAAA,IAAAlB,CAAA,QAAAe,WAAA,IAAAf,CAAA,QAAAE,uBAAA;IAIpCgB,EAAA,GAAAC,MAAA;MACEJ,WAAA;MAAA,IAEI,OAAOb,uBAAA,KAA4B;QAChCA,uBAAA,CAAwBe,MAAA;MAAA;IAAA;IAEjCjB,CAAA,MAAAe,WAAA;IAAAf,CAAA,MAAAE,uBAAA;IAAAF,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAPF,MAAAC,cAAA,GAAuBiB,EAQiB;EAAA,IAAAE,EAAA;EAAA,IAAApB,CAAA,QAAAY,cAAA,IAAAZ,CAAA,SAAAa,qBAAA,IAAAb,CAAA,SAAAK,SAAA,IAAAL,CAAA,SAAAC,cAAA,IAAAD,CAAA,SAAAG,YAAA;IAItCiB,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAc;MAAAC,QAAA,GACbC,IAAA,CAAA3B,WAAA;QAAA,GAAiBQ,SAAS;QAAAiB,SAAA,EAAY;QAAAG,IAAA;QAAAC,OAAA;MAAA,C,GACtCF,IAAA,CAACX,qBAAA;QAAAU,QAAA,EACCC,IAAA,CAAA9B,QAAA,IAAC;MAAA,C,GAEH8B,IAAA,CAACZ,cAAA;QAAAe,QAAA,EAAyB1B,cAAA;QAAA2B,MAAA,EAAwBzB;MAAA,C;;;;;;;;;;;SALpDiB,E;CAQJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","EditIcon","useCellProps","DefaultCell","DrawerLink","t0","$","onDrawerOpen","cellProps","t1","_jsxs","className","children","_jsx","link","onClick","rowData","id","type"],"sources":["../../../../../src/elements/RelationshipTable/cells/DrawerLink/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport type { OnDrawerOpen } from '../../index.js'\n\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useCellProps } from '../../../../providers/TableColumns/RenderDefaultCell/index.js'\nimport { DefaultCell } from '../../../Table/DefaultCell/index.js'\nimport './index.scss'\n\nexport const DrawerLink: React.FC<{\n currentDrawerID?: string\n onDrawerOpen: OnDrawerOpen\n}> = ({ onDrawerOpen }) => {\n const cellProps = useCellProps()\n\n return (\n <div className=\"drawer-link\">\n <DefaultCell {...cellProps} className=\"drawer-link__cell\" link={false} onClick={null} />\n <button\n className=\"drawer-link__doc-drawer-toggler\"\n onClick={() => {\n onDrawerOpen(cellProps.rowData.id)\n }}\n type=\"button\"\n >\n <EditIcon />\n </button>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAIlB,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,SAASC,WAAW,QAAQ;AAC5B,OAAO;AAEP,OAAO,MAAMC,UAAA,GAGRC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAC;IAAAQ;EAAA,IAAAF,EAAgB;EACpB,MAAAG,SAAA,GAAkBN,YAAA;EAAA,IAAAO,EAAA;EAAA,IAAAH,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAC,YAAA;IAGhBE,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAc;MAAAC,QAAA,GACbC,IAAA,CAAAV,WAAA;QAAA,GAAiBK,SAAS;QAAAG,SAAA,EAAY;QAAAG,IAAA;QAAAC,OAAA;MAAA,C,GACtCF,IAAA,CAAC;QAAAF,SAAA,EACW;QAAAI,OAAA,EAAAA,CAAA;UAERR,YAAA,CAAaC,SAAA,CAAAQ,OAAA,CAAAC,EAAoB;QAAA;QAAAC,IAAA,EAE9B;QAAAN,QAAA,EAELC,IAAA,CAAAZ,QAAA,IAAC;MAAA,C;;;;;;;;SATLQ,E;CAaJ","ignoreList":[]}
@@ -2,5 +2,15 @@
2
2
  .drawer-link {
3
3
  display: flex;
4
4
  gap: calc(var(--base) / 2);
5
+
6
+ &__doc-drawer-toggler {
7
+ border: none;
8
+ background: none;
9
+ padding: 0;
10
+ cursor: pointer;
11
+ color: var(--color-text);
12
+ font-size: inherit;
13
+ line-height: inherit;
14
+ }
5
15
  }
6
16
  }
@@ -20,6 +20,7 @@ type RelationshipTableComponentProps = {
20
20
  };
21
21
  readonly relationTo: string | string[];
22
22
  };
23
+ export type OnDrawerOpen = (id?: string) => void;
23
24
  export declare const RelationshipTable: React.FC<RelationshipTableComponentProps>;
24
25
  export {};
25
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAqD,MAAM,OAAO,CAAA;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAiBrE,OAAO,cAAc,CAAA;AAKrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,cAAc,EAAE,cAAc,CAAA;QAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAmTvE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAkBrE,OAAO,cAAc,CAAA;AAIrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,cAAc,EAAE,cAAc,CAAA;QAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAEhD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAiVvE,CAAA"}
@@ -3,7 +3,7 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { getTranslation } from '@payloadcms/translations';
5
5
  import { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared';
6
- import React, { Fragment, useCallback, useEffect, useState } from 'react';
6
+ import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react';
7
7
  import { Pill } from '../../elements/Pill/index.js';
8
8
  import { useEffectEvent } from '../../hooks/useEffectEvent.js';
9
9
  import { ChevronIcon } from '../../icons/Chevron/index.js';
@@ -19,8 +19,8 @@ import { useDocumentDrawer } from '../DocumentDrawer/index.js';
19
19
  import { RelationshipProvider } from '../Table/RelationshipProvider/index.js';
20
20
  import { AddNewButton } from './AddNewButton.js';
21
21
  import { DrawerLink } from './cells/DrawerLink/index.js';
22
- import './index.scss';
23
22
  import { RelationshipTablePagination } from './Pagination.js';
23
+ import './index.scss';
24
24
  const baseClass = 'relationship-table';
25
25
  export const RelationshipTable = props => {
26
26
  const {
@@ -42,24 +42,6 @@ export const RelationshipTable = props => {
42
42
  config,
43
43
  getEntityConfig
44
44
  } = useConfig();
45
- const {
46
- permissions
47
- } = useAuth();
48
- const [initialData] = useState(() => {
49
- if (initialDataFromProps) {
50
- return {
51
- ...initialDataFromProps,
52
- docs: Array.isArray(initialDataFromProps.docs) ? initialDataFromProps.docs.reduce((acc, doc) => {
53
- if (typeof doc === 'string') {
54
- return [...acc, {
55
- id: doc
56
- }];
57
- }
58
- return [...acc, doc];
59
- }, []) : []
60
- };
61
- }
62
- });
63
45
  const {
64
46
  i18n,
65
47
  t
@@ -71,8 +53,31 @@ export const RelationshipTable = props => {
71
53
  }));
72
54
  const isPolymorphic = Array.isArray(relationTo);
73
55
  const [selectedCollection, setSelectedCollection] = useState(isPolymorphic ? undefined : relationTo);
56
+ const {
57
+ permissions
58
+ } = useAuth();
59
+ const openDrawerWhenRelationChanges = useRef(false);
60
+ const [currentDrawerID, setCurrentDrawerID] = useState(undefined);
61
+ const [DocumentDrawer,, {
62
+ closeDrawer,
63
+ isDrawerOpen,
64
+ openDrawer
65
+ }] = useDocumentDrawer({
66
+ id: currentDrawerID,
67
+ collectionSlug: selectedCollection
68
+ });
74
69
  const [isLoadingTable, setIsLoadingTable] = useState(!disableTable);
75
- const [data, setData] = useState(initialData);
70
+ const [data, setData] = useState(() => initialDataFromProps ? {
71
+ ...initialDataFromProps,
72
+ docs: Array.isArray(initialDataFromProps.docs) ? initialDataFromProps.docs.reduce((acc, doc) => {
73
+ if (typeof doc === 'string' || typeof doc === 'number') {
74
+ return [...acc, {
75
+ id: doc
76
+ }];
77
+ }
78
+ return [...acc, doc];
79
+ }, []) : []
80
+ } : undefined);
76
81
  const [columnState, setColumnState] = useState();
77
82
  const {
78
83
  getTableState
@@ -122,38 +127,53 @@ export const RelationshipTable = props => {
122
127
  useEffect(() => {
123
128
  handleTableRender(query, disableTable);
124
129
  }, [query, disableTable]);
125
- const [DocumentDrawer,, {
126
- closeDrawer,
127
- isDrawerOpen,
128
- openDrawer
129
- }] = useDocumentDrawer({
130
- collectionSlug: selectedCollection
131
- });
132
- const onDrawerSave = useCallback(args => {
133
- const foundDocIndex = data?.docs?.findIndex(doc => doc.id === args.doc.id);
130
+ const onDrawerSave = useCallback(({
131
+ doc,
132
+ operation
133
+ }) => {
134
+ if (operation === 'create') {
135
+ closeDrawer();
136
+ }
137
+ const foundDocIndex = data?.docs?.findIndex(d => d.id === doc.id);
134
138
  const withNewOrUpdatedData = {
135
139
  docs: []
136
140
  };
137
141
  if (foundDocIndex !== -1) {
138
142
  const newDocs = [...data.docs];
139
- newDocs[foundDocIndex] = args.doc;
143
+ newDocs[foundDocIndex] = doc;
140
144
  withNewOrUpdatedData.docs = newDocs;
141
145
  } else {
142
- withNewOrUpdatedData.docs = [args.doc, ...data.docs];
146
+ withNewOrUpdatedData.docs = [doc, ...data.docs];
143
147
  }
144
148
  void renderTable(withNewOrUpdatedData);
145
- }, [data?.docs, renderTable]);
146
- const onDrawerCreate = useCallback(args => {
147
- closeDrawer();
148
- void onDrawerSave(args);
149
- }, [closeDrawer, onDrawerSave]);
149
+ }, [data?.docs, renderTable, closeDrawer]);
150
150
  const onDrawerDelete = useCallback(args => {
151
151
  const newDocs = data.docs.filter(doc => doc.id !== args.id);
152
152
  void renderTable({
153
153
  ...data,
154
154
  docs: newDocs
155
155
  });
156
+ setCurrentDrawerID(undefined);
156
157
  }, [data, renderTable]);
158
+ const onDrawerOpen = useCallback(id => {
159
+ openDrawerWhenRelationChanges.current = true;
160
+ if (id) {
161
+ setCurrentDrawerID(id);
162
+ } else {
163
+ setCurrentDrawerID(undefined);
164
+ }
165
+ }, []);
166
+ useEffect(() => {
167
+ if (openDrawerWhenRelationChanges.current) {
168
+ openDrawerWhenRelationChanges.current = false;
169
+ openDrawer();
170
+ }
171
+ }, [openDrawer]);
172
+ useEffect(() => {
173
+ if (!isDrawerOpen) {
174
+ setCurrentDrawerID(undefined);
175
+ }
176
+ }, [isDrawerOpen]);
157
177
  const canCreate = allowCreate !== false && permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create;
158
178
  useEffect(() => {
159
179
  if (isPolymorphic && selectedCollection) {
@@ -237,8 +257,8 @@ export const RelationshipTable = props => {
237
257
  collectionSlug: isPolymorphic ? relationTo[0] : relationTo,
238
258
  columnState: columnState,
239
259
  LinkedCellOverride: /*#__PURE__*/_jsx(DrawerLink, {
240
- onDrawerDelete: onDrawerDelete,
241
- onDrawerSave: onDrawerSave
260
+ currentDrawerID: currentDrawerID,
261
+ onDrawerOpen: onDrawerOpen
242
262
  }),
243
263
  children: [/*#__PURE__*/_jsx(AnimateHeight, {
244
264
  className: `${baseClass}__columns`,
@@ -256,7 +276,8 @@ export const RelationshipTable = props => {
256
276
  })]
257
277
  }), AfterInput, /*#__PURE__*/_jsx(DocumentDrawer, {
258
278
  initialData: initialDrawerData,
259
- onSave: onDrawerCreate
279
+ onDelete: onDrawerDelete,
280
+ onSave: onDrawerSave
260
281
  })]
261
282
  });
262
283
  };