@payloadcms/ui 3.49.0-canary.7 → 3.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/elements/ColumnSelector/index.js +1 -1
  2. package/dist/elements/ColumnSelector/index.js.map +1 -1
  3. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  4. package/dist/elements/DeleteDocument/index.js +65 -47
  5. package/dist/elements/DeleteDocument/index.js.map +1 -1
  6. package/dist/elements/DeleteDocument/index.scss +10 -0
  7. package/dist/elements/DeleteMany/index.d.ts +17 -2
  8. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  9. package/dist/elements/DeleteMany/index.js +162 -49
  10. package/dist/elements/DeleteMany/index.js.map +1 -1
  11. package/dist/elements/DeleteMany/index.scss +13 -0
  12. package/dist/elements/DocumentControls/index.d.ts +3 -0
  13. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  14. package/dist/elements/DocumentControls/index.js +24 -5
  15. package/dist/elements/DocumentControls/index.js.map +1 -1
  16. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  17. package/dist/elements/DocumentDrawer/DrawerContent.js +4 -2
  18. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  19. package/dist/elements/DocumentDrawer/Provider.d.ts +4 -0
  20. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  21. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  22. package/dist/elements/DocumentDrawer/types.d.ts +1 -0
  23. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  24. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  25. package/dist/elements/DocumentFields/index.d.ts +1 -0
  26. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  27. package/dist/elements/DocumentFields/index.js +3 -1
  28. package/dist/elements/DocumentFields/index.js.map +1 -1
  29. package/dist/elements/EditMany/DrawerContent.d.ts +2 -0
  30. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  31. package/dist/elements/EditMany/DrawerContent.js +7 -3
  32. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  33. package/dist/elements/EditMany/index.d.ts +7 -2
  34. package/dist/elements/EditMany/index.d.ts.map +1 -1
  35. package/dist/elements/EditMany/index.js +39 -34
  36. package/dist/elements/EditMany/index.js.map +1 -1
  37. package/dist/elements/FolderView/Cell/index.client.d.ts +3 -2
  38. package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
  39. package/dist/elements/FolderView/Cell/index.client.js +3 -1
  40. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  41. package/dist/elements/FolderView/Cell/index.server.d.ts.map +1 -1
  42. package/dist/elements/FolderView/Cell/index.server.js +2 -1
  43. package/dist/elements/FolderView/Cell/index.server.js.map +1 -1
  44. package/dist/elements/GroupByBuilder/index.d.ts +9 -0
  45. package/dist/elements/GroupByBuilder/index.d.ts.map +1 -0
  46. package/dist/elements/GroupByBuilder/index.js +112 -0
  47. package/dist/elements/GroupByBuilder/index.js.map +1 -0
  48. package/dist/elements/GroupByBuilder/index.scss +39 -0
  49. package/dist/elements/LeaveWithoutSaving/index.d.ts +6 -1
  50. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  51. package/dist/elements/LeaveWithoutSaving/index.js +69 -49
  52. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  53. package/dist/elements/ListControls/index.d.ts.map +1 -1
  54. package/dist/elements/ListControls/index.js +28 -4
  55. package/dist/elements/ListControls/index.js.map +1 -1
  56. package/dist/elements/ListControls/index.scss +4 -2
  57. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  58. package/dist/elements/ListDrawer/DrawerContent.js +34 -15
  59. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  60. package/dist/elements/ListDrawer/Provider.d.ts +9 -3
  61. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  62. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  63. package/dist/elements/ListDrawer/index.d.ts +19 -0
  64. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  65. package/dist/elements/ListDrawer/index.js +19 -0
  66. package/dist/elements/ListDrawer/index.js.map +1 -1
  67. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts +7 -0
  68. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -0
  69. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +164 -0
  70. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -0
  71. package/dist/elements/ListHeader/TitleActions/index.d.ts +1 -0
  72. package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
  73. package/dist/elements/ListHeader/TitleActions/index.js +1 -0
  74. package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
  75. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts +10 -0
  76. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts.map +1 -0
  77. package/dist/elements/ListHeaderTabs/ByFolderPill.js +70 -0
  78. package/dist/elements/ListHeaderTabs/ByFolderPill.js.map +1 -0
  79. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts +9 -0
  80. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts.map +1 -0
  81. package/dist/elements/ListHeaderTabs/DefaultListPill.js +68 -0
  82. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -0
  83. package/dist/elements/ListHeaderTabs/TrashPill.d.ts +6 -0
  84. package/dist/elements/ListHeaderTabs/TrashPill.d.ts.map +1 -0
  85. package/dist/elements/ListHeaderTabs/TrashPill.js +53 -0
  86. package/dist/elements/ListHeaderTabs/TrashPill.js.map +1 -0
  87. package/dist/elements/{ListFolderPills → ListHeaderTabs}/index.scss +1 -2
  88. package/dist/elements/ListSelection/index.scss +1 -1
  89. package/dist/elements/PageControls/GroupByPageControls.d.ts +16 -0
  90. package/dist/elements/PageControls/GroupByPageControls.d.ts.map +1 -0
  91. package/dist/elements/PageControls/GroupByPageControls.js +83 -0
  92. package/dist/elements/PageControls/GroupByPageControls.js.map +1 -0
  93. package/dist/elements/PageControls/index.d.ts +17 -0
  94. package/dist/elements/PageControls/index.d.ts.map +1 -0
  95. package/dist/elements/PageControls/index.js +70 -0
  96. package/dist/elements/PageControls/index.js.map +1 -0
  97. package/dist/elements/PageControls/index.scss +40 -0
  98. package/dist/elements/Pagination/ClickableArrow/index.scss +3 -3
  99. package/dist/elements/Pagination/index.js +1 -1
  100. package/dist/elements/Pagination/index.js.map +1 -1
  101. package/dist/elements/Pagination/index.scss +4 -4
  102. package/dist/elements/PermanentlyDeleteButton/index.d.ts +14 -0
  103. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -0
  104. package/dist/elements/PermanentlyDeleteButton/index.js +147 -0
  105. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -0
  106. package/dist/elements/PublishMany/DrawerContent.d.ts +2 -0
  107. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  108. package/dist/elements/PublishMany/DrawerContent.js +7 -3
  109. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  110. package/dist/elements/PublishMany/index.d.ts +6 -1
  111. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  112. package/dist/elements/PublishMany/index.js +38 -33
  113. package/dist/elements/PublishMany/index.js.map +1 -1
  114. package/dist/elements/ReactSelect/types.d.ts +1 -0
  115. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  116. package/dist/elements/ReactSelect/types.js.map +1 -1
  117. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  118. package/dist/elements/RelationshipTable/index.js +16 -11
  119. package/dist/elements/RelationshipTable/index.js.map +1 -1
  120. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  121. package/dist/elements/RenderTitle/index.js +1 -0
  122. package/dist/elements/RenderTitle/index.js.map +1 -1
  123. package/dist/elements/RestoreButton/index.d.ts +15 -0
  124. package/dist/elements/RestoreButton/index.d.ts.map +1 -0
  125. package/dist/elements/RestoreButton/index.js +171 -0
  126. package/dist/elements/RestoreButton/index.js.map +1 -0
  127. package/dist/elements/RestoreButton/index.scss +25 -0
  128. package/dist/elements/RestoreMany/index.d.ts +9 -0
  129. package/dist/elements/RestoreMany/index.d.ts.map +1 -0
  130. package/dist/elements/RestoreMany/index.js +193 -0
  131. package/dist/elements/RestoreMany/index.js.map +1 -0
  132. package/dist/elements/RestoreMany/index.scss +25 -0
  133. package/dist/elements/Status/index.d.ts.map +1 -1
  134. package/dist/elements/Status/index.js +6 -4
  135. package/dist/elements/Status/index.js.map +1 -1
  136. package/dist/elements/StickyToolbar/index.d.ts +6 -0
  137. package/dist/elements/StickyToolbar/index.d.ts.map +1 -0
  138. package/dist/elements/StickyToolbar/index.js +11 -0
  139. package/dist/elements/StickyToolbar/index.js.map +1 -0
  140. package/dist/elements/StickyToolbar/index.scss +27 -0
  141. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  142. package/dist/elements/Table/DefaultCell/index.js +10 -8
  143. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  144. package/dist/elements/Table/OrderableTable.d.ts +2 -0
  145. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  146. package/dist/elements/Table/OrderableTable.js +4 -3
  147. package/dist/elements/Table/OrderableTable.js.map +1 -1
  148. package/dist/elements/Table/index.d.ts +1 -0
  149. package/dist/elements/Table/index.d.ts.map +1 -1
  150. package/dist/elements/Table/index.js +5 -4
  151. package/dist/elements/Table/index.js.map +1 -1
  152. package/dist/elements/TrashBanner/index.d.ts +4 -0
  153. package/dist/elements/TrashBanner/index.d.ts.map +1 -0
  154. package/dist/elements/TrashBanner/index.js +37 -0
  155. package/dist/elements/TrashBanner/index.js.map +1 -0
  156. package/dist/elements/TrashBanner/index.scss +20 -0
  157. package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -0
  158. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  159. package/dist/elements/UnpublishMany/DrawerContent.js +6 -2
  160. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  161. package/dist/elements/UnpublishMany/index.d.ts +6 -1
  162. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  163. package/dist/elements/UnpublishMany/index.js +38 -33
  164. package/dist/elements/UnpublishMany/index.js.map +1 -1
  165. package/dist/elements/WhereBuilder/index.js +3 -3
  166. package/dist/elements/WhereBuilder/index.js.map +1 -1
  167. package/dist/exports/client/index.d.ts +2 -0
  168. package/dist/exports/client/index.d.ts.map +1 -1
  169. package/dist/exports/client/index.js +24 -22
  170. package/dist/exports/client/index.js.map +4 -4
  171. package/dist/fields/Blocks/index.d.ts.map +1 -1
  172. package/dist/fields/Blocks/index.js +1 -0
  173. package/dist/fields/Blocks/index.js.map +1 -1
  174. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  175. package/dist/fields/Checkbox/Input.js +2 -0
  176. package/dist/fields/Checkbox/Input.js.map +1 -1
  177. package/dist/fields/Select/Input.d.ts +1 -0
  178. package/dist/fields/Select/Input.d.ts.map +1 -1
  179. package/dist/fields/Select/Input.js +48 -45
  180. package/dist/fields/Select/Input.js.map +1 -1
  181. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  182. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  183. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +7 -0
  184. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  185. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  186. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  187. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  188. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  189. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  190. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  191. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  192. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  193. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  194. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  195. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  196. package/dist/forms/fieldSchemasToFormState/types.d.ts +1 -0
  197. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  198. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  199. package/dist/icons/Trash/index.d.ts +6 -0
  200. package/dist/icons/Trash/index.d.ts.map +1 -0
  201. package/dist/icons/Trash/index.js +22 -0
  202. package/dist/icons/Trash/index.js.map +1 -0
  203. package/dist/icons/Trash/index.scss +6 -0
  204. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  205. package/dist/providers/DocumentInfo/index.js +6 -0
  206. package/dist/providers/DocumentInfo/index.js.map +1 -1
  207. package/dist/providers/DocumentInfo/types.d.ts +7 -0
  208. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  209. package/dist/providers/DocumentInfo/types.js.map +1 -1
  210. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  211. package/dist/providers/ListQuery/index.js +24 -13
  212. package/dist/providers/ListQuery/index.js.map +1 -1
  213. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  214. package/dist/providers/ListQuery/mergeQuery.js +15 -1
  215. package/dist/providers/ListQuery/mergeQuery.js.map +1 -1
  216. package/dist/providers/ListQuery/types.d.ts +7 -3
  217. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  218. package/dist/providers/ListQuery/types.js.map +1 -1
  219. package/dist/providers/Selection/index.d.ts +6 -2
  220. package/dist/providers/Selection/index.d.ts.map +1 -1
  221. package/dist/providers/Selection/index.js +37 -19
  222. package/dist/providers/Selection/index.js.map +1 -1
  223. package/dist/providers/ServerFunctions/index.d.ts +1 -0
  224. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  225. package/dist/providers/ServerFunctions/index.js.map +1 -1
  226. package/dist/providers/TableColumns/buildColumnState/index.d.ts +2 -1
  227. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  228. package/dist/providers/TableColumns/buildColumnState/index.js +4 -2
  229. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  230. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +3 -2
  231. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  232. package/dist/providers/TableColumns/buildColumnState/renderCell.js +4 -2
  233. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  234. package/dist/styles.css +1 -1
  235. package/dist/utilities/buildFormState.d.ts.map +1 -1
  236. package/dist/utilities/buildFormState.js +2 -0
  237. package/dist/utilities/buildFormState.js.map +1 -1
  238. package/dist/utilities/buildTableState.js +5 -7
  239. package/dist/utilities/buildTableState.js.map +1 -1
  240. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  241. package/dist/utilities/copyDataFromLocale.js +29 -19
  242. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  243. package/dist/{elements/WhereBuilder/reduceFields.d.ts → utilities/reduceFieldsToOptions.d.ts} +3 -3
  244. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -0
  245. package/dist/{elements/WhereBuilder/reduceFields.js → utilities/reduceFieldsToOptions.js} +11 -11
  246. package/dist/utilities/reduceFieldsToOptions.js.map +1 -0
  247. package/dist/utilities/renderTable.d.ts +9 -3
  248. package/dist/utilities/renderTable.d.ts.map +1 -1
  249. package/dist/utilities/renderTable.js +63 -22
  250. package/dist/utilities/renderTable.js.map +1 -1
  251. package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +1 -1
  252. package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
  253. package/dist/views/CollectionFolder/index.d.ts.map +1 -1
  254. package/dist/views/CollectionFolder/index.js +15 -5
  255. package/dist/views/CollectionFolder/index.js.map +1 -1
  256. package/dist/views/Edit/Auth/index.js +5 -4
  257. package/dist/views/Edit/Auth/index.js.map +1 -1
  258. package/dist/views/Edit/SetDocumentStepNav/index.d.ts +1 -0
  259. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  260. package/dist/views/Edit/SetDocumentStepNav/index.js +26 -15
  261. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  262. package/dist/views/Edit/index.d.ts.map +1 -1
  263. package/dist/views/Edit/index.js +59 -35
  264. package/dist/views/Edit/index.js.map +1 -1
  265. package/dist/views/List/GroupByHeader/index.d.ts +10 -0
  266. package/dist/views/List/GroupByHeader/index.d.ts.map +1 -0
  267. package/dist/views/List/GroupByHeader/index.js +29 -0
  268. package/dist/views/List/GroupByHeader/index.js.map +1 -0
  269. package/dist/views/List/GroupByHeader/index.scss +17 -0
  270. package/dist/views/List/ListHeader/index.d.ts +4 -2
  271. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  272. package/dist/views/List/ListHeader/index.js +30 -10
  273. package/dist/views/List/ListHeader/index.js.map +1 -1
  274. package/dist/views/List/ListSelection/index.d.ts +5 -1
  275. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  276. package/dist/views/List/ListSelection/index.js +53 -30
  277. package/dist/views/List/ListSelection/index.js.map +1 -1
  278. package/dist/views/List/index.d.ts.map +1 -1
  279. package/dist/views/List/index.js +122 -170
  280. package/dist/views/List/index.js.map +1 -1
  281. package/dist/views/List/index.scss +12 -35
  282. package/package.json +5 -5
  283. package/dist/elements/ListFolderPills/index.d.ts +0 -10
  284. package/dist/elements/ListFolderPills/index.d.ts.map +0 -1
  285. package/dist/elements/ListFolderPills/index.js +0 -97
  286. package/dist/elements/ListFolderPills/index.js.map +0 -1
  287. package/dist/elements/WhereBuilder/reduceFields.d.ts.map +0 -1
  288. package/dist/elements/WhereBuilder/reduceFields.js.map +0 -1
@@ -17,7 +17,7 @@ export const ColumnSelector = ({
17
17
  } = useTableColumns();
18
18
  const uuid = useId();
19
19
  const editDepth = useEditDepth();
20
- const filteredColumns = useMemo(() => columns.filter(col => !(fieldIsHiddenOrDisabled(col.field) && !fieldIsID(col.field)) && !col?.field?.admin?.disableListColumn), [columns]);
20
+ const filteredColumns = useMemo(() => columns?.filter(col => !(fieldIsHiddenOrDisabled(col.field) && !fieldIsID(col.field)) && !col?.field?.admin?.disableListColumn), [columns]);
21
21
  const pills = useMemo(() => {
22
22
  return filteredColumns ? filteredColumns.map((col_0, i) => {
23
23
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["fieldIsHiddenOrDisabled","fieldIsID","React","useId","useMemo","FieldLabel","useEditDepth","useTableColumns","PillSelector","ColumnSelector","collectionSlug","columns","moveColumn","toggleColumn","uuid","editDepth","filteredColumns","filter","col","field","admin","disableListColumn","pills","map","i","accessor","active","label","labelWithPrefix","undefined","name","key","Label","_jsx","unstyled","selected","draggable","onDragEnd","moveFromIndex","moveToIndex","fromIndex","toIndex","onClick","pill"],"sources":["../../../src/elements/ColumnSelector/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig, StaticLabel } from 'payload'\n\nimport { fieldIsHiddenOrDisabled, fieldIsID } from 'payload/shared'\nimport React, { useId, useMemo } from 'react'\n\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTableColumns } from '../../providers/TableColumns/index.js'\nimport { PillSelector, type SelectablePill } from '../PillSelector/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n}\n\nexport const ColumnSelector: React.FC<Props> = ({ collectionSlug }) => {\n const { columns, moveColumn, toggleColumn } = useTableColumns()\n\n const uuid = useId()\n const editDepth = useEditDepth()\n\n const filteredColumns = useMemo(\n () =>\n columns.filter(\n (col) =>\n !(fieldIsHiddenOrDisabled(col.field) && !fieldIsID(col.field)) &&\n !col?.field?.admin?.disableListColumn,\n ),\n [columns],\n )\n\n const pills: SelectablePill[] = useMemo(() => {\n return filteredColumns\n ? filteredColumns.map((col, i) => {\n const { accessor, active, field } = col\n\n const label =\n 'labelWithPrefix' in field && field.labelWithPrefix !== undefined\n ? field.labelWithPrefix\n : 'label' in field && field.label !== undefined\n ? field.label\n : 'name' in field && field.name !== undefined\n ? field.name\n : undefined\n\n return {\n name: accessor,\n key: `${collectionSlug}-${accessor}-${i}${editDepth ? `-${editDepth}-` : ''}${uuid}`,\n Label: <FieldLabel label={label as StaticLabel} unstyled />,\n selected: active,\n } as SelectablePill\n })\n : null\n }, [collectionSlug, editDepth, filteredColumns, uuid])\n\n if (!pills) {\n return null\n }\n\n return (\n <PillSelector\n draggable={{\n onDragEnd: ({ moveFromIndex, moveToIndex }) => {\n void moveColumn({\n fromIndex: moveFromIndex,\n toIndex: moveToIndex,\n })\n },\n }}\n onClick={({ pill }) => {\n void toggleColumn(pill.name)\n }}\n pills={pills}\n />\n )\n}\n"],"mappings":"AAAA;;;AAGA,SAASA,uBAAuB,EAAEC,SAAS,QAAQ;AACnD,OAAOC,KAAA,IAASC,KAAK,EAAEC,OAAO,QAAQ;AAEtC,SAASC,UAAU,QAAQ;AAC3B,SAASC,YAAY,QAAQ;AAC7B,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAA6B;AAMlD,OAAO,MAAMC,cAAA,GAAkCA,CAAC;EAAEC;AAAc,CAAE;EAChE,MAAM;IAAEC,OAAO;IAAEC,UAAU;IAAEC;EAAY,CAAE,GAAGN,eAAA;EAE9C,MAAMO,IAAA,GAAOX,KAAA;EACb,MAAMY,SAAA,GAAYT,YAAA;EAElB,MAAMU,eAAA,GAAkBZ,OAAA,CACtB,MACEO,OAAA,CAAQM,MAAM,CACXC,GAAA,IACC,EAAElB,uBAAA,CAAwBkB,GAAA,CAAIC,KAAK,KAAK,CAAClB,SAAA,CAAUiB,GAAA,CAAIC,KAAK,MAC5D,CAACD,GAAA,EAAKC,KAAA,EAAOC,KAAA,EAAOC,iBAAA,GAE1B,CAACV,OAAA,CAAQ;EAGX,MAAMW,KAAA,GAA0BlB,OAAA,CAAQ;IACtC,OAAOY,eAAA,GACHA,eAAA,CAAgBO,GAAG,CAAC,CAACL,KAAA,EAAKM,CAAA;MACxB,MAAM;QAAEC,QAAQ;QAAEC,MAAM;QAAEP;MAAK,CAAE,GAAGD,KAAA;MAEpC,MAAMS,KAAA,GACJ,qBAAqBR,KAAA,IAASA,KAAA,CAAMS,eAAe,KAAKC,SAAA,GACpDV,KAAA,CAAMS,eAAe,GACrB,WAAWT,KAAA,IAASA,KAAA,CAAMQ,KAAK,KAAKE,SAAA,GAClCV,KAAA,CAAMQ,KAAK,GACX,UAAUR,KAAA,IAASA,KAAA,CAAMW,IAAI,KAAKD,SAAA,GAChCV,KAAA,CAAMW,IAAI,GACVD,SAAA;MAEV,OAAO;QACLC,IAAA,EAAML,QAAA;QACNM,GAAA,EAAK,GAAGrB,cAAA,IAAkBe,QAAA,IAAYD,CAAA,GAAIT,SAAA,GAAY,IAAIA,SAAA,GAAY,GAAG,KAAKD,IAAA,EAAM;QACpFkB,KAAA,eAAOC,IAAA,CAAC5B,UAAA;UAAWsB,KAAA,EAAOA,KAAA;UAAsBO,QAAQ;;QACxDC,QAAA,EAAUT;MACZ;IACF,KACA;EACN,GAAG,CAAChB,cAAA,EAAgBK,SAAA,EAAWC,eAAA,EAAiBF,IAAA,CAAK;EAErD,IAAI,CAACQ,KAAA,EAAO;IACV,OAAO;EACT;EAEA,oBACEW,IAAA,CAACzB,YAAA;IACC4B,SAAA,EAAW;MACTC,SAAA,EAAWA,CAAC;QAAEC,aAAa;QAAEC;MAAW,CAAE;QACxC,KAAK3B,UAAA,CAAW;UACd4B,SAAA,EAAWF,aAAA;UACXG,OAAA,EAASF;QACX;MACF;IACF;IACAG,OAAA,EAASA,CAAC;MAAEC;IAAI,CAAE;MAChB,KAAK9B,YAAA,CAAa8B,IAAA,CAAKb,IAAI;IAC7B;IACAR,KAAA,EAAOA;;AAGb","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["fieldIsHiddenOrDisabled","fieldIsID","React","useId","useMemo","FieldLabel","useEditDepth","useTableColumns","PillSelector","ColumnSelector","collectionSlug","columns","moveColumn","toggleColumn","uuid","editDepth","filteredColumns","filter","col","field","admin","disableListColumn","pills","map","i","accessor","active","label","labelWithPrefix","undefined","name","key","Label","_jsx","unstyled","selected","draggable","onDragEnd","moveFromIndex","moveToIndex","fromIndex","toIndex","onClick","pill"],"sources":["../../../src/elements/ColumnSelector/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig, StaticLabel } from 'payload'\n\nimport { fieldIsHiddenOrDisabled, fieldIsID } from 'payload/shared'\nimport React, { useId, useMemo } from 'react'\n\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTableColumns } from '../../providers/TableColumns/index.js'\nimport { PillSelector, type SelectablePill } from '../PillSelector/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n}\n\nexport const ColumnSelector: React.FC<Props> = ({ collectionSlug }) => {\n const { columns, moveColumn, toggleColumn } = useTableColumns()\n\n const uuid = useId()\n const editDepth = useEditDepth()\n\n const filteredColumns = useMemo(\n () =>\n columns?.filter(\n (col) =>\n !(fieldIsHiddenOrDisabled(col.field) && !fieldIsID(col.field)) &&\n !col?.field?.admin?.disableListColumn,\n ),\n [columns],\n )\n\n const pills: SelectablePill[] = useMemo(() => {\n return filteredColumns\n ? filteredColumns.map((col, i) => {\n const { accessor, active, field } = col\n\n const label =\n 'labelWithPrefix' in field && field.labelWithPrefix !== undefined\n ? field.labelWithPrefix\n : 'label' in field && field.label !== undefined\n ? field.label\n : 'name' in field && field.name !== undefined\n ? field.name\n : undefined\n\n return {\n name: accessor,\n key: `${collectionSlug}-${accessor}-${i}${editDepth ? `-${editDepth}-` : ''}${uuid}`,\n Label: <FieldLabel label={label as StaticLabel} unstyled />,\n selected: active,\n } as SelectablePill\n })\n : null\n }, [collectionSlug, editDepth, filteredColumns, uuid])\n\n if (!pills) {\n return null\n }\n\n return (\n <PillSelector\n draggable={{\n onDragEnd: ({ moveFromIndex, moveToIndex }) => {\n void moveColumn({\n fromIndex: moveFromIndex,\n toIndex: moveToIndex,\n })\n },\n }}\n onClick={({ pill }) => {\n void toggleColumn(pill.name)\n }}\n pills={pills}\n />\n )\n}\n"],"mappings":"AAAA;;;AAGA,SAASA,uBAAuB,EAAEC,SAAS,QAAQ;AACnD,OAAOC,KAAA,IAASC,KAAK,EAAEC,OAAO,QAAQ;AAEtC,SAASC,UAAU,QAAQ;AAC3B,SAASC,YAAY,QAAQ;AAC7B,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAA6B;AAMlD,OAAO,MAAMC,cAAA,GAAkCA,CAAC;EAAEC;AAAc,CAAE;EAChE,MAAM;IAAEC,OAAO;IAAEC,UAAU;IAAEC;EAAY,CAAE,GAAGN,eAAA;EAE9C,MAAMO,IAAA,GAAOX,KAAA;EACb,MAAMY,SAAA,GAAYT,YAAA;EAElB,MAAMU,eAAA,GAAkBZ,OAAA,CACtB,MACEO,OAAA,EAASM,MAAA,CACNC,GAAA,IACC,EAAElB,uBAAA,CAAwBkB,GAAA,CAAIC,KAAK,KAAK,CAAClB,SAAA,CAAUiB,GAAA,CAAIC,KAAK,MAC5D,CAACD,GAAA,EAAKC,KAAA,EAAOC,KAAA,EAAOC,iBAAA,GAE1B,CAACV,OAAA,CAAQ;EAGX,MAAMW,KAAA,GAA0BlB,OAAA,CAAQ;IACtC,OAAOY,eAAA,GACHA,eAAA,CAAgBO,GAAG,CAAC,CAACL,KAAA,EAAKM,CAAA;MACxB,MAAM;QAAEC,QAAQ;QAAEC,MAAM;QAAEP;MAAK,CAAE,GAAGD,KAAA;MAEpC,MAAMS,KAAA,GACJ,qBAAqBR,KAAA,IAASA,KAAA,CAAMS,eAAe,KAAKC,SAAA,GACpDV,KAAA,CAAMS,eAAe,GACrB,WAAWT,KAAA,IAASA,KAAA,CAAMQ,KAAK,KAAKE,SAAA,GAClCV,KAAA,CAAMQ,KAAK,GACX,UAAUR,KAAA,IAASA,KAAA,CAAMW,IAAI,KAAKD,SAAA,GAChCV,KAAA,CAAMW,IAAI,GACVD,SAAA;MAEV,OAAO;QACLC,IAAA,EAAML,QAAA;QACNM,GAAA,EAAK,GAAGrB,cAAA,IAAkBe,QAAA,IAAYD,CAAA,GAAIT,SAAA,GAAY,IAAIA,SAAA,GAAY,GAAG,KAAKD,IAAA,EAAM;QACpFkB,KAAA,eAAOC,IAAA,CAAC5B,UAAA;UAAWsB,KAAA,EAAOA,KAAA;UAAsBO,QAAQ;;QACxDC,QAAA,EAAUT;MACZ;IACF,KACA;EACN,GAAG,CAAChB,cAAA,EAAgBK,SAAA,EAAWC,eAAA,EAAiBF,IAAA,CAAK;EAErD,IAAI,CAACQ,KAAA,EAAO;IACV,OAAO;EACT;EAEA,oBACEW,IAAA,CAACzB,YAAA;IACC4B,SAAA,EAAW;MACTC,SAAA,EAAWA,CAAC;QAAEC,aAAa;QAAEC;MAAW,CAAE;QACxC,KAAK3B,UAAA,CAAW;UACd4B,SAAA,EAAWF,aAAA;UACXG,OAAA,EAASF;QACX;MACF;IACF;IACAG,OAAA,EAASA,CAAC;MAAEC;IAAI,CAAE;MAChB,KAAK9B,YAAA,CAAa8B,IAAA,CAAKb,IAAI;IAC7B;IACAR,KAAA,EAAOA;;AAGb","ignoreList":[]}
@@ -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;AAMxD,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAW9E,OAAO,cAAc,CAAA;AAErB,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;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,CA+I1C,CAAA"}
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;AAMxD,OAAO,KAA0C,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAY9E,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,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;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,CA0K1C,CAAA"}
@@ -5,8 +5,9 @@ import { useModal } from '@faceless-ui/modal';
5
5
  import { getTranslation } from '@payloadcms/translations';
6
6
  import { useRouter } from 'next/navigation.js';
7
7
  import { formatAdminURL } from 'payload/shared';
8
- import React, { useCallback } from 'react';
8
+ import React, { Fragment, useCallback, useState } from 'react';
9
9
  import { toast } from 'sonner';
10
+ import { CheckboxInput } from '../../fields/Checkbox/Input.js';
10
11
  import { useForm } from '../../forms/Form/context.js';
11
12
  import { useConfig } from '../../providers/Config/index.js';
12
13
  import { useDocumentTitle } from '../../providers/DocumentTitle/index.js';
@@ -17,6 +18,7 @@ import { ConfirmationModal } from '../ConfirmationModal/index.js';
17
18
  import { PopupList } from '../Popup/index.js';
18
19
  import { Translation } from '../Translation/index.js';
19
20
  import './index.scss';
21
+ const baseClass = 'delete-document';
20
22
  export const DeleteDocument = props => {
21
23
  const {
22
24
  id,
@@ -58,6 +60,7 @@ export const DeleteDocument = props => {
58
60
  openModal
59
61
  } = useModal();
60
62
  const modalSlug = `delete-${id}`;
63
+ const [deletePermanently, setDeletePermanently] = useState(false);
61
64
  const addDefaultError = useCallback(() => {
62
65
  toast.error(t('error:deletingTitle', {
63
66
  title
@@ -66,49 +69,52 @@ export const DeleteDocument = props => {
66
69
  const handleDelete = useCallback(async () => {
67
70
  setModified(false);
68
71
  try {
69
- await requests.delete(`${serverURL}${api}/${collectionSlug}/${id}`, {
72
+ const res = deletePermanently || !collectionConfig.trash ? await requests.delete(`${serverURL}${api}/${collectionSlug}/${id}`, {
70
73
  headers: {
71
74
  'Accept-Language': i18n.language,
72
75
  'Content-Type': 'application/json'
73
76
  }
74
- }).then(async res => {
75
- try {
76
- const json = await res.json();
77
- if (res.status < 400) {
78
- toast.success(t('general:titleDeleted', {
79
- label: getTranslation(singularLabel, i18n),
80
- title
81
- }) || json.message);
82
- if (redirectAfterDelete) {
83
- return startRouteTransition(() => router.push(formatAdminURL({
84
- adminRoute,
85
- path: `/collections/${collectionSlug}`
86
- })));
87
- }
88
- if (typeof onDelete === 'function') {
89
- await onDelete({
90
- id,
91
- collectionConfig
92
- });
93
- }
94
- return;
95
- }
96
- if (json.errors) {
97
- json.errors.forEach(error => toast.error(error.message));
98
- } else {
99
- addDefaultError();
100
- }
101
- return false;
102
- } catch (_err_0) {
103
- return addDefaultError();
77
+ }) : await requests.patch(`${serverURL}${api}/${collectionSlug}/${id}`, {
78
+ body: JSON.stringify({
79
+ deletedAt: new Date().toISOString()
80
+ }),
81
+ headers: {
82
+ 'Accept-Language': i18n.language,
83
+ 'Content-Type': 'application/json'
104
84
  }
105
85
  });
86
+ const json = await res.json();
87
+ if (res.status < 400) {
88
+ toast.success(t(deletePermanently || !collectionConfig.trash ? 'general:titleDeleted' : 'general:titleTrashed', {
89
+ label: getTranslation(singularLabel, i18n),
90
+ title
91
+ }) || json.message);
92
+ if (redirectAfterDelete) {
93
+ return startRouteTransition(() => router.push(formatAdminURL({
94
+ adminRoute,
95
+ path: `/collections/${collectionSlug}`
96
+ })));
97
+ }
98
+ if (typeof onDelete === 'function') {
99
+ await onDelete({
100
+ id,
101
+ collectionConfig
102
+ });
103
+ }
104
+ return;
105
+ }
106
+ if (json.errors) {
107
+ json.errors.forEach(error => toast.error(error.message));
108
+ } else {
109
+ addDefaultError();
110
+ }
111
+ return;
106
112
  } catch (_err) {
107
113
  return addDefaultError();
108
114
  }
109
- }, [setModified, serverURL, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterDelete, onDelete, collectionConfig, startRouteTransition]);
115
+ }, [deletePermanently, setModified, serverURL, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterDelete, onDelete, collectionConfig, startRouteTransition]);
110
116
  if (id) {
111
- return /*#__PURE__*/_jsxs(React.Fragment, {
117
+ return /*#__PURE__*/_jsxs(Fragment, {
112
118
  children: [/*#__PURE__*/_jsx(PopupList.Button, {
113
119
  id: buttonId,
114
120
  onClick: () => {
@@ -116,21 +122,33 @@ export const DeleteDocument = props => {
116
122
  },
117
123
  children: t('general:delete')
118
124
  }), /*#__PURE__*/_jsx(ConfirmationModal, {
119
- body: /*#__PURE__*/_jsx(Translation, {
120
- elements: {
121
- '1': ({
122
- children
123
- }) => /*#__PURE__*/_jsx("strong", {
124
- children: children
125
+ body: /*#__PURE__*/_jsxs(Fragment, {
126
+ children: [/*#__PURE__*/_jsx(Translation, {
127
+ elements: {
128
+ '1': ({
129
+ children
130
+ }) => /*#__PURE__*/_jsx("strong", {
131
+ children: children
132
+ })
133
+ },
134
+ i18nKey: collectionConfig.trash ? 'general:aboutToTrash' : 'general:aboutToDelete',
135
+ t: t,
136
+ variables: {
137
+ label: getTranslation(singularLabel, i18n),
138
+ title: titleFromProps || title || id
139
+ }
140
+ }), collectionConfig.trash && /*#__PURE__*/_jsx("div", {
141
+ className: `${baseClass}__checkbox`,
142
+ children: /*#__PURE__*/_jsx(CheckboxInput, {
143
+ checked: deletePermanently,
144
+ id: "delete-forever",
145
+ label: t('general:deletePermanently'),
146
+ name: "delete-forever",
147
+ onToggle: e => setDeletePermanently(e.target.checked)
125
148
  })
126
- },
127
- i18nKey: "general:aboutToDelete",
128
- t: t,
129
- variables: {
130
- label: getTranslation(singularLabel, i18n),
131
- title: titleFromProps || title || id
132
- }
149
+ })]
133
150
  }),
151
+ className: baseClass,
134
152
  confirmingLabel: t('general:deleting'),
135
153
  heading: t('general:confirmDeletion'),
136
154
  modalSlug: modalSlug,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","React","useCallback","toast","useForm","useConfig","useDocumentTitle","useRouteTransition","useTranslation","requests","ConfirmationModal","PopupList","Translation","DeleteDocument","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","setModified","router","i18n","t","startRouteTransition","openModal","modalSlug","addDefaultError","error","handleDelete","delete","headers","language","then","res","json","status","success","label","message","push","path","errors","forEach","_err","_jsxs","Fragment","_jsx","Button","onClick","body","elements","1","children","i18nKey","variables","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\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 React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useForm } from '../../forms/Form/context.js'\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 { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\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 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 })\n\n const { setModified } = useForm()\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 = `delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\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 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}`,\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\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n } catch (_err) {\n return addDefaultError()\n }\n }, [\n setModified,\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 <React.Fragment>\n <PopupList.Button\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <ConfirmationModal\n body={\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: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","React","Fragment","useCallback","useState","toast","CheckboxInput","useForm","useConfig","useDocumentTitle","useRouteTransition","useTranslation","requests","ConfirmationModal","PopupList","Translation","baseClass","DeleteDocument","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","setModified","router","i18n","t","startRouteTransition","openModal","modalSlug","deletePermanently","setDeletePermanently","addDefaultError","error","handleDelete","res","trash","delete","headers","language","patch","body","JSON","stringify","deletedAt","Date","toISOString","json","status","success","label","message","push","path","errors","forEach","_err","_jsxs","_jsx","Button","onClick","elements","1","children","i18nKey","variables","className","checked","name","onToggle","e","target","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\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 React, { Fragment, useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useForm } from '../../forms/Form/context.js'\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 { ConfirmationModal } from '../ConfirmationModal/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?: DocumentDrawerContextType['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 })\n\n const { setModified } = useForm()\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 = `delete-${id}`\n\n const [deletePermanently, setDeletePermanently] = useState(false)\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n setModified(false)\n\n try {\n const res =\n deletePermanently || !collectionConfig.trash\n ? await requests.delete(`${serverURL}${api}/${collectionSlug}/${id}`, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(`${serverURL}${api}/${collectionSlug}/${id}`, {\n body: JSON.stringify({\n deletedAt: new Date().toISOString(),\n }),\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(\n deletePermanently || !collectionConfig.trash\n ? 'general:titleDeleted'\n : 'general:titleTrashed',\n {\n label: getTranslation(singularLabel, i18n),\n title,\n },\n ) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\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\n return\n } catch (_err) {\n return addDefaultError()\n }\n }, [\n deletePermanently,\n setModified,\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 <PopupList.Button\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <ConfirmationModal\n body={\n <Fragment>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey={collectionConfig.trash ? 'general:aboutToTrash' : 'general:aboutToDelete'}\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n {collectionConfig.trash && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={deletePermanently}\n id=\"delete-forever\"\n label={t('general:deletePermanently')}\n name=\"delete-forever\"\n onToggle={(e) => setDeletePermanently(e.target.checked)}\n />\n </div>\n )}\n </Fragment>\n }\n className={baseClass}\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":[]}
@@ -11,5 +11,15 @@
11
11
  &__toggle {
12
12
  @extend %btn-reset;
13
13
  }
14
+
15
+ &__checkbox {
16
+ padding: calc(var(--base) * 0.5) 0;
17
+
18
+ .checkbox-input {
19
+ label {
20
+ padding-bottom: 0;
21
+ }
22
+ }
23
+ }
14
24
  }
15
25
  }
@@ -1,8 +1,17 @@
1
- import type { ClientCollectionConfig, Where } from 'payload';
1
+ import type { ClientCollectionConfig, ViewTypes, Where } from 'payload';
2
2
  import React from 'react';
3
+ import './index.scss';
3
4
  export type Props = {
4
5
  collection: ClientCollectionConfig;
6
+ /**
7
+ * When multiple DeleteMany components are rendered on the page, this will differentiate them.
8
+ */
9
+ modalPrefix?: string;
10
+ /**
11
+ * When multiple PublishMany components are rendered on the page, this will differentiate them.
12
+ */
5
13
  title?: string;
14
+ viewType?: ViewTypes;
6
15
  };
7
16
  export declare const DeleteMany: React.FC<Props>;
8
17
  type AfterDeleteResult = {
@@ -18,6 +27,10 @@ type DeleteMany_v4Props = {
18
27
  * A callback function to be called after the delete request is completed.
19
28
  */
20
29
  afterDelete?: (result: AfterDeleteResult) => void;
30
+ /**
31
+ * When multiple DeleteMany components are rendered on the page, this will differentiate them.
32
+ */
33
+ modalPrefix?: string;
21
34
  /**
22
35
  * Optionally pass a search string to filter the documents to be deleted.
23
36
  *
@@ -38,6 +51,8 @@ type DeleteMany_v4Props = {
38
51
  totalCount?: number;
39
52
  };
40
53
  };
54
+ trash?: boolean;
55
+ viewType?: ViewTypes;
41
56
  /**
42
57
  * Optionally pass a where clause to filter the documents to be deleted.
43
58
  * This will be ignored if multiple relations are selected.
@@ -52,6 +67,6 @@ type DeleteMany_v4Props = {
52
67
  *
53
68
  * If you are deleting monomorphic documents, shape your `selections` to match the polymorphic structure.
54
69
  */
55
- export declare function DeleteMany_v4({ afterDelete, search, selections, where }: DeleteMany_v4Props): React.JSX.Element;
70
+ export declare function DeleteMany_v4({ afterDelete, modalPrefix, search, selections, trash, viewType, where, }: DeleteMany_v4Props): React.JSX.Element;
56
71
  export {};
57
72
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAO5D,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,sBAAsB,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiDtC,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,CAAC,UAAU,EAAE,MAAM,GAAG;QACpB,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,OAAO,EAAE,CAAA;QACjB,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;QACxB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AACD,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACjD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,UAAU,EAAE;QACV,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,GAAG,CAAC,EAAE,OAAO,CAAA;YACb,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;YACzB,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,CAAA;KACF,CAAA;IACD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,kBAAkB,qBAsK3F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAOvE,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,sBAAsB,CAAA;IAClC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkEtC,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,CAAC,UAAU,EAAE,MAAM,GAAG;QACpB,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,OAAO,EAAE,CAAA;QACjB,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;QACxB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AACD,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACjD;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,UAAU,EAAE;QACV,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,GAAG,CAAC,EAAE,OAAO,CAAA;YACb,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;YACzB,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,CAAA;KACF,CAAA;IACD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,EACV,KAAK,EACL,QAAQ,EACR,KAAK,GACN,EAAE,kBAAkB,qBAsQpB"}
@@ -9,6 +9,7 @@ import { mergeListSearchAndWhere } from 'payload/shared';
9
9
  import * as qs from 'qs-esm';
10
10
  import React from 'react';
11
11
  import { toast } from 'sonner';
12
+ import { CheckboxInput } from '../../fields/Checkbox/Input.js';
12
13
  import { useAuth } from '../../providers/Auth/index.js';
13
14
  import { useConfig } from '../../providers/Config/index.js';
14
15
  import { useLocale } from '../../providers/Locale/index.js';
@@ -19,11 +20,16 @@ import { requests } from '../../utilities/api.js';
19
20
  import { parseSearchParams } from '../../utilities/parseSearchParams.js';
20
21
  import { ConfirmationModal } from '../ConfirmationModal/index.js';
21
22
  import { ListSelectionButton } from '../ListSelection/index.js';
22
- const confirmManyDeleteDrawerSlug = `confirm-delete-many-docs`;
23
+ import { Translation } from '../Translation/index.js';
24
+ import './index.scss';
23
25
  export const DeleteMany = props => {
24
- const $ = _c(18);
26
+ const $ = _c(24);
25
27
  const {
26
- collection: t0
28
+ viewType
29
+ } = props;
30
+ const {
31
+ collection: t0,
32
+ modalPrefix
27
33
  } = props;
28
34
  let t1;
29
35
  if ($[0] !== t0) {
@@ -34,15 +40,16 @@ export const DeleteMany = props => {
34
40
  t1 = $[1];
35
41
  }
36
42
  const {
37
- slug
43
+ slug,
44
+ trash
38
45
  } = t1;
39
46
  const {
40
47
  permissions
41
48
  } = useAuth();
42
49
  const {
43
50
  count,
44
- getSelectedIds,
45
51
  selectAll,
52
+ selectedIDs,
46
53
  toggleAll
47
54
  } = useSelection();
48
55
  const router = useRouter();
@@ -52,16 +59,33 @@ export const DeleteMany = props => {
52
59
  } = useRouteCache();
53
60
  const collectionPermissions = permissions?.collections?.[slug];
54
61
  const hasDeletePermission = collectionPermissions?.delete;
62
+ const selectingAll = selectAll === SelectAllStatus.AllAvailable;
63
+ let t2;
64
+ if ($[2] !== selectedIDs || $[3] !== selectingAll) {
65
+ t2 = selectingAll ? [] : selectedIDs;
66
+ $[2] = selectedIDs;
67
+ $[3] = selectingAll;
68
+ $[4] = t2;
69
+ } else {
70
+ t2 = $[4];
71
+ }
72
+ const ids = t2;
55
73
  if (selectAll === SelectAllStatus.None || !hasDeletePermission) {
56
74
  return null;
57
75
  }
58
- const selectingAll = selectAll === SelectAllStatus.AllAvailable;
59
- let t2;
60
- if ($[2] !== clearRouteCache || $[3] !== count || $[4] !== getSelectedIds || $[5] !== router || $[6] !== searchParams || $[7] !== selectAll || $[8] !== selectingAll || $[9] !== slug || $[10] !== toggleAll) {
61
- const selectedIDs = !selectingAll ? getSelectedIds() : [];
62
- let t3;
63
- if ($[12] !== clearRouteCache || $[13] !== router || $[14] !== searchParams || $[15] !== selectAll || $[16] !== toggleAll) {
64
- t3 = () => {
76
+ let t3;
77
+ if ($[5] !== clearRouteCache || $[6] !== count || $[7] !== ids || $[8] !== modalPrefix || $[9] !== router || $[10] !== searchParams || $[11] !== selectAll || $[12] !== selectingAll || $[13] !== slug || $[14] !== toggleAll || $[15] !== trash || $[16] !== viewType) {
78
+ const baseWhere = parseSearchParams(searchParams)?.where;
79
+ const finalWhere = viewType === "trash" ? {
80
+ and: [...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []), {
81
+ deletedAt: {
82
+ exists: true
83
+ }
84
+ }]
85
+ } : baseWhere;
86
+ let t4;
87
+ if ($[18] !== clearRouteCache || $[19] !== router || $[20] !== searchParams || $[21] !== selectAll || $[22] !== toggleAll) {
88
+ t4 = () => {
65
89
  toggleAll();
66
90
  router.replace(qs.stringify({
67
91
  ...parseSearchParams(searchParams),
@@ -71,43 +95,49 @@ export const DeleteMany = props => {
71
95
  }));
72
96
  clearRouteCache();
73
97
  };
74
- $[12] = clearRouteCache;
75
- $[13] = router;
76
- $[14] = searchParams;
77
- $[15] = selectAll;
78
- $[16] = toggleAll;
79
- $[17] = t3;
98
+ $[18] = clearRouteCache;
99
+ $[19] = router;
100
+ $[20] = searchParams;
101
+ $[21] = selectAll;
102
+ $[22] = toggleAll;
103
+ $[23] = t4;
80
104
  } else {
81
- t3 = $[17];
105
+ t4 = $[23];
82
106
  }
83
- t2 = _jsx(React.Fragment, {
107
+ t3 = _jsx(React.Fragment, {
84
108
  children: _jsx(DeleteMany_v4, {
85
- afterDelete: t3,
109
+ afterDelete: t4,
110
+ modalPrefix,
86
111
  search: parseSearchParams(searchParams)?.search,
87
112
  selections: {
88
113
  [slug]: {
89
114
  all: selectAll === SelectAllStatus.AllAvailable,
90
- ids: selectedIDs,
91
- totalCount: selectingAll ? count : selectedIDs.length
115
+ ids,
116
+ totalCount: selectingAll ? count : ids.length
92
117
  }
93
118
  },
94
- where: parseSearchParams(searchParams)?.where
119
+ trash,
120
+ viewType,
121
+ where: finalWhere
95
122
  })
96
123
  });
97
- $[2] = clearRouteCache;
98
- $[3] = count;
99
- $[4] = getSelectedIds;
100
- $[5] = router;
101
- $[6] = searchParams;
102
- $[7] = selectAll;
103
- $[8] = selectingAll;
104
- $[9] = slug;
105
- $[10] = toggleAll;
106
- $[11] = t2;
124
+ $[5] = clearRouteCache;
125
+ $[6] = count;
126
+ $[7] = ids;
127
+ $[8] = modalPrefix;
128
+ $[9] = router;
129
+ $[10] = searchParams;
130
+ $[11] = selectAll;
131
+ $[12] = selectingAll;
132
+ $[13] = slug;
133
+ $[14] = toggleAll;
134
+ $[15] = trash;
135
+ $[16] = viewType;
136
+ $[17] = t3;
107
137
  } else {
108
- t2 = $[11];
138
+ t3 = $[17];
109
139
  }
110
- return t2;
140
+ return t3;
111
141
  };
112
142
  /**
113
143
  * Handles polymorphic document delete operations.
@@ -116,8 +146,11 @@ export const DeleteMany = props => {
116
146
  */
117
147
  export function DeleteMany_v4({
118
148
  afterDelete,
149
+ modalPrefix,
119
150
  search,
120
151
  selections,
152
+ trash,
153
+ viewType,
121
154
  where
122
155
  }) {
123
156
  const {
@@ -141,6 +174,8 @@ export function DeleteMany_v4({
141
174
  const {
142
175
  openModal
143
176
  } = useModal();
177
+ const [deletePermanently, setDeletePermanently] = React.useState(false);
178
+ const confirmManyDeleteDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-delete-many-docs`;
144
179
  const handleDelete = React.useCallback(async () => {
145
180
  const deletingOneCollection = Object.keys(selections).length === 1;
146
181
  const result = {};
@@ -156,9 +191,25 @@ export function DeleteMany_v4({
156
191
  if (all) {
157
192
  // selecting all documents with optional where filter
158
193
  if (deletingOneCollection && where) {
159
- whereConstraint = where;
194
+ whereConstraint = viewType === 'trash' ? {
195
+ and: [...(Array.isArray(where.and) ? where.and : [where]), {
196
+ deletedAt: {
197
+ exists: true
198
+ }
199
+ }]
200
+ } : where;
160
201
  } else {
161
- whereConstraint = {
202
+ whereConstraint = viewType === 'trash' ? {
203
+ and: [{
204
+ id: {
205
+ not_equals: ''
206
+ }
207
+ }, {
208
+ deletedAt: {
209
+ exists: true
210
+ }
211
+ }]
212
+ } : {
162
213
  id: {
163
214
  not_equals: ''
164
215
  }
@@ -167,22 +218,40 @@ export function DeleteMany_v4({
167
218
  } else {
168
219
  // selecting specific documents
169
220
  whereConstraint = {
170
- id: {
171
- in: ids
172
- }
221
+ and: [{
222
+ id: {
223
+ in: ids
224
+ }
225
+ }, ...(viewType === 'trash' ? [{
226
+ deletedAt: {
227
+ exists: true
228
+ }
229
+ }] : [])]
173
230
  };
174
231
  }
175
- const deleteManyResponse = await requests.delete(`${serverURL}${api}/${relationTo}${qs.stringify({
232
+ const url = `${serverURL}${api}/${relationTo}${qs.stringify({
176
233
  limit: 0,
177
234
  locale,
178
235
  where: mergeListSearchAndWhere({
179
236
  collectionConfig,
180
237
  search,
181
238
  where: whereConstraint
182
- })
239
+ }),
240
+ ...(viewType === 'trash' ? {
241
+ trash: true
242
+ } : {})
183
243
  }, {
184
244
  addQueryPrefix: true
185
- })}`, {
245
+ })}`;
246
+ const deleteManyResponse = viewType === 'trash' || deletePermanently || !collectionConfig.trash ? await requests.delete(url, {
247
+ headers: {
248
+ 'Accept-Language': i18n.language,
249
+ 'Content-Type': 'application/json'
250
+ }
251
+ }) : await requests.patch(url, {
252
+ body: JSON.stringify({
253
+ deletedAt: new Date().toISOString()
254
+ }),
186
255
  headers: {
187
256
  'Accept-Language': i18n.language,
188
257
  'Content-Type': 'application/json'
@@ -197,7 +266,16 @@ export function DeleteMany_v4({
197
266
  const deletedDocs = json?.docs.length || 0;
198
267
  const successLabel = deletedDocs > 1 ? plural : singular;
199
268
  if (deleteManyResponse.status < 400 || deletedDocs > 0) {
200
- toast.success(t('general:deletedCountSuccessfully', {
269
+ const wasTrashed = collectionConfig.trash && !deletePermanently && viewType !== 'trash';
270
+ let successKey;
271
+ if (wasTrashed) {
272
+ successKey = 'general:trashedCountSuccessfully';
273
+ } else if (viewType === 'trash' || deletePermanently) {
274
+ successKey = 'general:permanentlyDeletedCountSuccessfully';
275
+ } else {
276
+ successKey = 'general:deletedCountSuccessfully';
277
+ }
278
+ toast.success(t(successKey, {
201
279
  count: deletedDocs,
202
280
  label: getTranslation(successLabel, i18n)
203
281
  }));
@@ -233,7 +311,7 @@ export function DeleteMany_v4({
233
311
  if (typeof afterDelete === 'function') {
234
312
  afterDelete(result);
235
313
  }
236
- }, [selections, afterDelete, collections, locale, search, serverURL, api, i18n, where, t]);
314
+ }, [selections, afterDelete, collections, deletePermanently, locale, search, serverURL, api, i18n, viewType, where, t]);
237
315
  const {
238
316
  label: labelString,
239
317
  labelCount: labelCount_0
@@ -271,9 +349,44 @@ export function DeleteMany_v4({
271
349
  },
272
350
  children: t('general:delete')
273
351
  }), /*#__PURE__*/_jsx(ConfirmationModal, {
274
- body: t('general:aboutToDeleteCount', {
275
- count: labelCount_0,
276
- label: labelString
352
+ body: /*#__PURE__*/_jsxs(React.Fragment, {
353
+ children: [/*#__PURE__*/_jsx("p", {
354
+ children: trash ? viewType === 'trash' ? /*#__PURE__*/_jsx(Translation, {
355
+ elements: {
356
+ '0': ({
357
+ children
358
+ }) => /*#__PURE__*/_jsx("strong", {
359
+ children: children
360
+ }),
361
+ '1': ({
362
+ children: children_0
363
+ }) => /*#__PURE__*/_jsx("strong", {
364
+ children: children_0
365
+ })
366
+ },
367
+ i18nKey: "general:aboutToPermanentlyDeleteTrash",
368
+ t: t,
369
+ variables: {
370
+ count: labelCount_0 ?? 0,
371
+ label: labelString
372
+ }
373
+ }) : t('general:aboutToTrashCount', {
374
+ count: labelCount_0,
375
+ label: labelString
376
+ }) : t('general:aboutToDeleteCount', {
377
+ count: labelCount_0,
378
+ label: labelString
379
+ })
380
+ }), trash && viewType !== 'trash' && /*#__PURE__*/_jsx("div", {
381
+ className: "delete-documents__checkbox",
382
+ children: /*#__PURE__*/_jsx(CheckboxInput, {
383
+ checked: deletePermanently,
384
+ id: "delete-forever",
385
+ label: t('general:deletePermanently'),
386
+ name: "delete-forever",
387
+ onToggle: e => setDeletePermanently(e.target.checked)
388
+ })
389
+ })]
277
390
  }),
278
391
  confirmingLabel: t('general:deleting'),
279
392
  heading: t('general:confirmDeletion'),