@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.
- package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
- package/dist/elements/AddNewRelation/index.js +1 -1
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +65 -47
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.scss +10 -0
- package/dist/elements/DeleteMany/index.d.ts +6 -2
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +153 -51
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.scss +13 -0
- package/dist/elements/DocumentControls/index.d.ts +3 -0
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +24 -5
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +4 -2
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/Provider.d.ts +5 -1
- package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
- package/dist/elements/DocumentDrawer/index.d.ts +19 -0
- package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/index.js +28 -9
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +26 -12
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts +1 -0
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +3 -1
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.d.ts +3 -2
- package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.js +3 -1
- package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
- package/dist/elements/FolderView/Cell/index.server.d.ts.map +1 -1
- package/dist/elements/FolderView/Cell/index.server.js +2 -1
- package/dist/elements/FolderView/Cell/index.server.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts +7 -0
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -0
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +164 -0
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -0
- package/dist/elements/ListHeader/TitleActions/index.d.ts +1 -0
- package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/index.js +1 -0
- package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
- package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts +10 -0
- package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts.map +1 -0
- package/dist/elements/ListHeaderTabs/ByFolderPill.js +70 -0
- package/dist/elements/ListHeaderTabs/ByFolderPill.js.map +1 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts +9 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts.map +1 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.js +68 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -0
- package/dist/elements/ListHeaderTabs/TrashPill.d.ts +6 -0
- package/dist/elements/ListHeaderTabs/TrashPill.d.ts.map +1 -0
- package/dist/elements/ListHeaderTabs/TrashPill.js +53 -0
- package/dist/elements/ListHeaderTabs/TrashPill.js.map +1 -0
- package/dist/elements/{ListFolderPills → ListHeaderTabs}/index.scss +1 -2
- package/dist/elements/ListSelection/index.scss +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.d.ts +14 -0
- package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -0
- package/dist/elements/PermanentlyDeleteButton/index.js +147 -0
- package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -0
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts +3 -3
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +19 -70
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.scss +10 -0
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +61 -40
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RestoreButton/index.d.ts +15 -0
- package/dist/elements/RestoreButton/index.d.ts.map +1 -0
- package/dist/elements/RestoreButton/index.js +171 -0
- package/dist/elements/RestoreButton/index.js.map +1 -0
- package/dist/elements/RestoreButton/index.scss +25 -0
- package/dist/elements/RestoreMany/index.d.ts +9 -0
- package/dist/elements/RestoreMany/index.d.ts.map +1 -0
- package/dist/elements/RestoreMany/index.js +193 -0
- package/dist/elements/RestoreMany/index.js.map +1 -0
- package/dist/elements/RestoreMany/index.scss +25 -0
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +6 -4
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +12 -9
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
- package/dist/elements/Toasts/fieldErrors.js +4 -1
- package/dist/elements/Toasts/fieldErrors.js.map +1 -1
- package/dist/elements/TrashBanner/index.d.ts +4 -0
- package/dist/elements/TrashBanner/index.d.ts.map +1 -0
- package/dist/elements/TrashBanner/index.js +37 -0
- package/dist/elements/TrashBanner/index.js.map +1 -0
- package/dist/elements/TrashBanner/index.scss +20 -0
- package/dist/exports/client/index.js +24 -22
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +2 -0
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +8 -8
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +7 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
- package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.js +2 -0
- package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
- package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.d.ts +1 -0
- package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
- package/dist/{elements/AddNewRelation → hooks}/useRelatedCollections.d.ts +3 -0
- package/dist/hooks/useRelatedCollections.d.ts.map +1 -0
- package/dist/{elements/AddNewRelation → hooks}/useRelatedCollections.js +4 -1
- package/dist/hooks/useRelatedCollections.js.map +1 -0
- package/dist/icons/Trash/index.d.ts +6 -0
- package/dist/icons/Trash/index.d.ts.map +1 -0
- package/dist/icons/Trash/index.js +22 -0
- package/dist/icons/Trash/index.js.map +1 -0
- package/dist/icons/Trash/index.scss +6 -0
- package/dist/providers/DocumentInfo/types.d.ts +2 -0
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +1 -0
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts +2 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js +4 -2
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +3 -2
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.js +4 -2
- package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +2 -0
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.js +2 -2
- package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
- package/dist/utilities/hasOptionLabelJSXElement.js +2 -2
- package/dist/utilities/hasOptionLabelJSXElement.js.map +1 -1
- package/dist/utilities/isValidReactElement.d.ts +7 -0
- package/dist/utilities/isValidReactElement.d.ts.map +1 -0
- package/dist/utilities/isValidReactElement.js +10 -0
- package/dist/utilities/isValidReactElement.js.map +1 -0
- package/dist/utilities/renderTable.d.ts +4 -3
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +15 -13
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/CollectionFolder/index.d.ts.map +1 -1
- package/dist/views/CollectionFolder/index.js +15 -5
- package/dist/views/CollectionFolder/index.js.map +1 -1
- package/dist/views/Edit/Auth/index.js +5 -4
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.d.ts +1 -0
- package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.js +26 -15
- package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +11 -3
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +4 -2
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +24 -9
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.d.ts +2 -1
- package/dist/views/List/ListSelection/index.d.ts.map +1 -1
- package/dist/views/List/ListSelection/index.js +26 -17
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +28 -13
- package/dist/views/List/index.js.map +1 -1
- package/package.json +7 -7
- package/dist/elements/AddNewRelation/useRelatedCollections.d.ts.map +0 -1
- package/dist/elements/AddNewRelation/useRelatedCollections.js.map +0 -1
- package/dist/elements/ListFolderPills/index.d.ts +0 -10
- package/dist/elements/ListFolderPills/index.d.ts.map +0 -1
- package/dist/elements/ListFolderPills/index.js +0 -97
- package/dist/elements/ListFolderPills/index.js.map +0 -1
|
@@ -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,8 +20,13 @@ 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';
|
|
23
|
+
import { Translation } from '../Translation/index.js';
|
|
24
|
+
import './index.scss';
|
|
22
25
|
export const DeleteMany = props => {
|
|
23
|
-
const $ = _c(
|
|
26
|
+
const $ = _c(24);
|
|
27
|
+
const {
|
|
28
|
+
viewType
|
|
29
|
+
} = props;
|
|
24
30
|
const {
|
|
25
31
|
collection: t0,
|
|
26
32
|
modalPrefix
|
|
@@ -34,7 +40,8 @@ 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
|
|
@@ -67,31 +74,39 @@ export const DeleteMany = props => {
|
|
|
67
74
|
return null;
|
|
68
75
|
}
|
|
69
76
|
let t3;
|
|
70
|
-
if ($[5] !== clearRouteCache || $[6] !==
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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 = () => {
|
|
89
|
+
toggleAll();
|
|
90
|
+
router.replace(qs.stringify({
|
|
91
|
+
...parseSearchParams(searchParams),
|
|
92
|
+
page: selectAll ? "1" : undefined
|
|
93
|
+
}, {
|
|
94
|
+
addQueryPrefix: true
|
|
95
|
+
}));
|
|
96
|
+
clearRouteCache();
|
|
97
|
+
};
|
|
98
|
+
$[18] = clearRouteCache;
|
|
99
|
+
$[19] = router;
|
|
100
|
+
$[20] = searchParams;
|
|
101
|
+
$[21] = selectAll;
|
|
102
|
+
$[22] = toggleAll;
|
|
103
|
+
$[23] = t4;
|
|
104
|
+
} else {
|
|
105
|
+
t4 = $[23];
|
|
106
|
+
}
|
|
107
|
+
t3 = _jsx(React.Fragment, {
|
|
93
108
|
children: _jsx(DeleteMany_v4, {
|
|
94
|
-
afterDelete:
|
|
109
|
+
afterDelete: t4,
|
|
95
110
|
modalPrefix,
|
|
96
111
|
search: parseSearchParams(searchParams)?.search,
|
|
97
112
|
selections: {
|
|
@@ -101,22 +116,28 @@ export const DeleteMany = props => {
|
|
|
101
116
|
totalCount: selectingAll ? count : ids.length
|
|
102
117
|
}
|
|
103
118
|
},
|
|
104
|
-
|
|
119
|
+
trash,
|
|
120
|
+
viewType,
|
|
121
|
+
where: finalWhere
|
|
105
122
|
})
|
|
106
123
|
});
|
|
107
|
-
$[
|
|
108
|
-
$[
|
|
109
|
-
$[
|
|
110
|
-
$[
|
|
111
|
-
$[
|
|
112
|
-
$[
|
|
113
|
-
$[
|
|
114
|
-
$[
|
|
115
|
-
$[
|
|
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;
|
|
116
137
|
} else {
|
|
117
|
-
|
|
138
|
+
t3 = $[17];
|
|
118
139
|
}
|
|
119
|
-
return
|
|
140
|
+
return t3;
|
|
120
141
|
};
|
|
121
142
|
/**
|
|
122
143
|
* Handles polymorphic document delete operations.
|
|
@@ -128,6 +149,8 @@ export function DeleteMany_v4({
|
|
|
128
149
|
modalPrefix,
|
|
129
150
|
search,
|
|
130
151
|
selections,
|
|
152
|
+
trash,
|
|
153
|
+
viewType,
|
|
131
154
|
where
|
|
132
155
|
}) {
|
|
133
156
|
const {
|
|
@@ -151,6 +174,7 @@ export function DeleteMany_v4({
|
|
|
151
174
|
const {
|
|
152
175
|
openModal
|
|
153
176
|
} = useModal();
|
|
177
|
+
const [deletePermanently, setDeletePermanently] = React.useState(false);
|
|
154
178
|
const confirmManyDeleteDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-delete-many-docs`;
|
|
155
179
|
const handleDelete = React.useCallback(async () => {
|
|
156
180
|
const deletingOneCollection = Object.keys(selections).length === 1;
|
|
@@ -167,9 +191,25 @@ export function DeleteMany_v4({
|
|
|
167
191
|
if (all) {
|
|
168
192
|
// selecting all documents with optional where filter
|
|
169
193
|
if (deletingOneCollection && where) {
|
|
170
|
-
whereConstraint =
|
|
194
|
+
whereConstraint = viewType === 'trash' ? {
|
|
195
|
+
and: [...(Array.isArray(where.and) ? where.and : [where]), {
|
|
196
|
+
deletedAt: {
|
|
197
|
+
exists: true
|
|
198
|
+
}
|
|
199
|
+
}]
|
|
200
|
+
} : where;
|
|
171
201
|
} else {
|
|
172
|
-
whereConstraint = {
|
|
202
|
+
whereConstraint = viewType === 'trash' ? {
|
|
203
|
+
and: [{
|
|
204
|
+
id: {
|
|
205
|
+
not_equals: ''
|
|
206
|
+
}
|
|
207
|
+
}, {
|
|
208
|
+
deletedAt: {
|
|
209
|
+
exists: true
|
|
210
|
+
}
|
|
211
|
+
}]
|
|
212
|
+
} : {
|
|
173
213
|
id: {
|
|
174
214
|
not_equals: ''
|
|
175
215
|
}
|
|
@@ -178,22 +218,40 @@ export function DeleteMany_v4({
|
|
|
178
218
|
} else {
|
|
179
219
|
// selecting specific documents
|
|
180
220
|
whereConstraint = {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
221
|
+
and: [{
|
|
222
|
+
id: {
|
|
223
|
+
in: ids
|
|
224
|
+
}
|
|
225
|
+
}, ...(viewType === 'trash' ? [{
|
|
226
|
+
deletedAt: {
|
|
227
|
+
exists: true
|
|
228
|
+
}
|
|
229
|
+
}] : [])]
|
|
184
230
|
};
|
|
185
231
|
}
|
|
186
|
-
const
|
|
232
|
+
const url = `${serverURL}${api}/${relationTo}${qs.stringify({
|
|
187
233
|
limit: 0,
|
|
188
234
|
locale,
|
|
189
235
|
where: mergeListSearchAndWhere({
|
|
190
236
|
collectionConfig,
|
|
191
237
|
search,
|
|
192
238
|
where: whereConstraint
|
|
193
|
-
})
|
|
239
|
+
}),
|
|
240
|
+
...(viewType === 'trash' ? {
|
|
241
|
+
trash: true
|
|
242
|
+
} : {})
|
|
194
243
|
}, {
|
|
195
244
|
addQueryPrefix: true
|
|
196
|
-
})}
|
|
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
|
+
}),
|
|
197
255
|
headers: {
|
|
198
256
|
'Accept-Language': i18n.language,
|
|
199
257
|
'Content-Type': 'application/json'
|
|
@@ -208,7 +266,16 @@ export function DeleteMany_v4({
|
|
|
208
266
|
const deletedDocs = json?.docs.length || 0;
|
|
209
267
|
const successLabel = deletedDocs > 1 ? plural : singular;
|
|
210
268
|
if (deleteManyResponse.status < 400 || deletedDocs > 0) {
|
|
211
|
-
|
|
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, {
|
|
212
279
|
count: deletedDocs,
|
|
213
280
|
label: getTranslation(successLabel, i18n)
|
|
214
281
|
}));
|
|
@@ -244,7 +311,7 @@ export function DeleteMany_v4({
|
|
|
244
311
|
if (typeof afterDelete === 'function') {
|
|
245
312
|
afterDelete(result);
|
|
246
313
|
}
|
|
247
|
-
}, [selections, afterDelete, collections, locale, search, serverURL, api, i18n, where, t]);
|
|
314
|
+
}, [selections, afterDelete, collections, deletePermanently, locale, search, serverURL, api, i18n, viewType, where, t]);
|
|
248
315
|
const {
|
|
249
316
|
label: labelString,
|
|
250
317
|
labelCount: labelCount_0
|
|
@@ -282,9 +349,44 @@ export function DeleteMany_v4({
|
|
|
282
349
|
},
|
|
283
350
|
children: t('general:delete')
|
|
284
351
|
}), /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
285
|
-
body:
|
|
286
|
-
|
|
287
|
-
|
|
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
|
+
})]
|
|
288
390
|
}),
|
|
289
391
|
confirmingLabel: t('general:deleting'),
|
|
290
392
|
heading: t('general:confirmDeletion'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","useRouter","useSearchParams","mergeListSearchAndWhere","qs","React","toast","useAuth","useConfig","useLocale","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","parseSearchParams","ConfirmationModal","ListSelectionButton","DeleteMany","props","$","collection","t0","modalPrefix","t1","undefined","slug","permissions","count","selectAll","selectedIDs","toggleAll","router","searchParams","clearRouteCache","collectionPermissions","collections","hasDeletePermission","delete","selectingAll","AllAvailable","t2","ids","None","t3","replace","stringify","page","addQueryPrefix","t4","_jsx","Fragment","children","DeleteMany_v4","afterDelete","search","selections","all","totalCount","length","where","t","config","routes","api","serverURL","code","locale","i18n","openModal","confirmManyDeleteDrawerSlug","handleDelete","useCallback","deletingOneCollection","Object","keys","result","relationTo","entries","collectionConfig","find","whereConstraint","id","not_equals","in","deleteManyResponse","limit","headers","language","plural","singular","labels","json","deletedDocs","docs","successLabel","status","success","label","errors","error","message","description","map","join","deletedCount","doc","totalDocs","_err","labelString","labelCount","reduce","acc","key","value","index","array","collectionLabel","newLabel","_jsxs","className","onClick","body","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/DeleteMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\n\nexport type Props = {\n collection: ClientCollectionConfig\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * When multiple PublishMany components are rendered on the page, this will differentiate them.\n */\n title?: string\n}\n\nexport const DeleteMany: React.FC<Props> = (props) => {\n const { collection: { slug } = {}, modalPrefix } = props\n\n const { permissions } = useAuth()\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasDeletePermission = collectionPermissions?.delete\n\n const selectingAll = selectAll === SelectAllStatus.AllAvailable\n\n const ids = selectingAll ? [] : selectedIDs\n\n if (selectAll === SelectAllStatus.None || !hasDeletePermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <DeleteMany_v4\n afterDelete={() => {\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n }}\n modalPrefix={modalPrefix}\n search={parseSearchParams(searchParams)?.search as string}\n selections={{\n [slug]: {\n all: selectAll === SelectAllStatus.AllAvailable,\n ids,\n totalCount: selectingAll ? count : ids.length,\n },\n }}\n where={parseSearchParams(searchParams)?.where as Where}\n />\n </React.Fragment>\n )\n}\n\ntype AfterDeleteResult = {\n [relationTo: string]: {\n deletedCount: number\n errors: unknown[]\n ids: (number | string)[]\n totalCount: number\n }\n}\ntype DeleteMany_v4Props = {\n /**\n * A callback function to be called after the delete request is completed.\n */\n afterDelete?: (result: AfterDeleteResult) => void\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * Optionally pass a search string to filter the documents to be deleted.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * search string that may not be stored in the URL.\n */\n search?: string\n /**\n * An object containing the relationTo as the key and an object with the following properties:\n * - all: boolean\n * - totalCount: number\n * - ids: (string | number)[]\n */\n selections: {\n [relationTo: string]: {\n all?: boolean\n ids?: (number | string)[]\n totalCount?: number\n }\n }\n /**\n * Optionally pass a where clause to filter the documents to be deleted.\n * This will be ignored if multiple relations are selected.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * where clause that may not be stored in the URL.\n */\n where?: Where\n}\n\n/**\n * Handles polymorphic document delete operations.\n *\n * If you are deleting monomorphic documents, shape your `selections` to match the polymorphic structure.\n */\nexport function DeleteMany_v4({\n afterDelete,\n modalPrefix,\n search,\n selections,\n where,\n}: DeleteMany_v4Props) {\n const { t } = useTranslation()\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { code: locale } = useLocale()\n const { i18n } = useTranslation()\n const { openModal } = useModal()\n\n const confirmManyDeleteDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-delete-many-docs`\n\n const handleDelete = React.useCallback(async () => {\n const deletingOneCollection = Object.keys(selections).length === 1\n const result: AfterDeleteResult = {}\n\n for (const [relationTo, { all, ids = [] }] of Object.entries(selections)) {\n const collectionConfig = collections.find(({ slug }) => slug === relationTo)\n\n if (collectionConfig) {\n let whereConstraint: Where\n\n if (all) {\n // selecting all documents with optional where filter\n if (deletingOneCollection && where) {\n whereConstraint = where\n } else {\n whereConstraint = {\n id: {\n not_equals: '',\n },\n }\n }\n } else {\n // selecting specific documents\n whereConstraint = {\n id: {\n in: ids,\n },\n }\n }\n\n const deleteManyResponse = await requests.delete(\n `${serverURL}${api}/${relationTo}${qs.stringify(\n {\n limit: 0,\n locale,\n where: mergeListSearchAndWhere({\n collectionConfig,\n search,\n where: whereConstraint,\n }),\n },\n { addQueryPrefix: true },\n )}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await deleteManyResponse.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (deleteManyResponse.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:deletedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n result[relationTo] = {\n deletedCount: deletedDocs,\n errors: json?.errors || null,\n ids: json?.docs.map((doc) => doc.id) || [],\n totalCount: json.totalDocs,\n }\n\n if (deleteManyResponse.status > 400 && json?.errors.length === 0) {\n toast.error(t('error:unknown'))\n result[relationTo].errors = [t('error:unknown')]\n }\n\n continue\n } catch (_err) {\n toast.error(t('error:unknown'))\n result[relationTo] = {\n deletedCount: 0,\n errors: [_err],\n ids: [],\n totalCount: 0,\n }\n continue\n }\n }\n }\n\n if (typeof afterDelete === 'function') {\n afterDelete(result)\n }\n }, [selections, afterDelete, collections, locale, search, serverURL, api, i18n, where, t])\n\n const { label: labelString, labelCount } = Object.entries(selections).reduce(\n (acc, [key, value], index, array) => {\n const collectionConfig = collections.find(({ slug }) => slug === key)\n if (collectionConfig) {\n const labelCount = acc.labelCount === undefined ? value.totalCount : acc.labelCount\n const collectionLabel = `${acc.labelCount !== undefined ? `${value.totalCount} ` : ''}${getTranslation(\n value.totalCount > 1 ? collectionConfig.labels.plural : collectionConfig.labels.singular,\n i18n,\n )}`\n\n let newLabel\n\n if (index === array.length - 1 && index !== 0) {\n newLabel = `${acc.label} and ${collectionLabel}`\n } else if (index > 0) {\n newLabel = `${acc.label}, ${collectionLabel}`\n } else {\n newLabel = collectionLabel\n }\n\n return {\n label: newLabel,\n labelCount,\n }\n }\n return acc\n },\n {\n label: '',\n labelCount: undefined,\n },\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:delete')}\n className=\"delete-documents__toggle\"\n onClick={() => {\n openModal(confirmManyDeleteDrawerSlug)\n }}\n >\n {t('general:delete')}\n </ListSelectionButton>\n <ConfirmationModal\n body={t('general:aboutToDeleteCount', {\n count: labelCount,\n label: labelString,\n })}\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmManyDeleteDrawerSlug}\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","useRouter","useSearchParams","mergeListSearchAndWhere","qs","React","toast","CheckboxInput","useAuth","useConfig","useLocale","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","parseSearchParams","ConfirmationModal","ListSelectionButton","Translation","DeleteMany","props","$","viewType","collection","t0","modalPrefix","t1","undefined","slug","trash","permissions","count","selectAll","selectedIDs","toggleAll","router","searchParams","clearRouteCache","collectionPermissions","collections","hasDeletePermission","delete","selectingAll","AllAvailable","t2","ids","None","t3","baseWhere","where","finalWhere","and","Array","isArray","deletedAt","exists","t4","replace","stringify","page","addQueryPrefix","_jsx","Fragment","children","DeleteMany_v4","afterDelete","search","selections","all","totalCount","length","t","config","routes","api","serverURL","code","locale","i18n","openModal","deletePermanently","setDeletePermanently","useState","confirmManyDeleteDrawerSlug","handleDelete","useCallback","deletingOneCollection","Object","keys","result","relationTo","entries","collectionConfig","find","whereConstraint","id","not_equals","in","url","limit","deleteManyResponse","headers","language","patch","body","JSON","Date","toISOString","plural","singular","labels","json","deletedDocs","docs","successLabel","status","wasTrashed","successKey","success","label","errors","error","message","description","map","join","deletedCount","doc","totalDocs","_err","labelString","labelCount","reduce","acc","key","value","index","array","collectionLabel","newLabel","_jsxs","className","onClick","elements","0","1","i18nKey","variables","checked","name","onToggle","e","target","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/DeleteMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nexport type Props = {\n collection: ClientCollectionConfig\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * When multiple PublishMany components are rendered on the page, this will differentiate them.\n */\n title?: string\n viewType?: ViewTypes\n}\n\nexport const DeleteMany: React.FC<Props> = (props) => {\n const { viewType } = props\n const { collection: { slug, trash } = {}, modalPrefix } = props\n\n const { permissions } = useAuth()\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasDeletePermission = collectionPermissions?.delete\n\n const selectingAll = selectAll === SelectAllStatus.AllAvailable\n\n const ids = selectingAll ? [] : selectedIDs\n\n if (selectAll === SelectAllStatus.None || !hasDeletePermission) {\n return null\n }\n\n const baseWhere = parseSearchParams(searchParams)?.where as Where\n\n const finalWhere =\n viewType === 'trash'\n ? {\n and: [\n ...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []),\n { deletedAt: { exists: true } },\n ],\n }\n : baseWhere\n\n return (\n <React.Fragment>\n <DeleteMany_v4\n afterDelete={() => {\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n }}\n modalPrefix={modalPrefix}\n search={parseSearchParams(searchParams)?.search as string}\n selections={{\n [slug]: {\n all: selectAll === SelectAllStatus.AllAvailable,\n ids,\n totalCount: selectingAll ? count : ids.length,\n },\n }}\n trash={trash}\n viewType={viewType}\n where={finalWhere}\n />\n </React.Fragment>\n )\n}\n\ntype AfterDeleteResult = {\n [relationTo: string]: {\n deletedCount: number\n errors: unknown[]\n ids: (number | string)[]\n totalCount: number\n }\n}\ntype DeleteMany_v4Props = {\n /**\n * A callback function to be called after the delete request is completed.\n */\n afterDelete?: (result: AfterDeleteResult) => void\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * Optionally pass a search string to filter the documents to be deleted.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * search string that may not be stored in the URL.\n */\n search?: string\n /**\n * An object containing the relationTo as the key and an object with the following properties:\n * - all: boolean\n * - totalCount: number\n * - ids: (string | number)[]\n */\n selections: {\n [relationTo: string]: {\n all?: boolean\n ids?: (number | string)[]\n totalCount?: number\n }\n }\n trash?: boolean\n viewType?: ViewTypes\n /**\n * Optionally pass a where clause to filter the documents to be deleted.\n * This will be ignored if multiple relations are selected.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * where clause that may not be stored in the URL.\n */\n where?: Where\n}\n\n/**\n * Handles polymorphic document delete operations.\n *\n * If you are deleting monomorphic documents, shape your `selections` to match the polymorphic structure.\n */\nexport function DeleteMany_v4({\n afterDelete,\n modalPrefix,\n search,\n selections,\n trash,\n viewType,\n where,\n}: DeleteMany_v4Props) {\n const { t } = useTranslation()\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { code: locale } = useLocale()\n const { i18n } = useTranslation()\n const { openModal } = useModal()\n\n const [deletePermanently, setDeletePermanently] = React.useState(false)\n const confirmManyDeleteDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-delete-many-docs`\n\n const handleDelete = React.useCallback(async () => {\n const deletingOneCollection = Object.keys(selections).length === 1\n const result: AfterDeleteResult = {}\n\n for (const [relationTo, { all, ids = [] }] of Object.entries(selections)) {\n const collectionConfig = collections.find(({ slug }) => slug === relationTo)\n\n if (collectionConfig) {\n let whereConstraint: Where\n\n if (all) {\n // selecting all documents with optional where filter\n if (deletingOneCollection && where) {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [\n ...(Array.isArray(where.and) ? where.and : [where]),\n { deletedAt: { exists: true } },\n ],\n }\n : where\n } else {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [{ id: { not_equals: '' } }, { deletedAt: { exists: true } }],\n }\n : {\n id: { not_equals: '' },\n }\n }\n } else {\n // selecting specific documents\n whereConstraint = {\n and: [\n { id: { in: ids } },\n ...(viewType === 'trash' ? [{ deletedAt: { exists: true } }] : []),\n ],\n }\n }\n\n const url = `${serverURL}${api}/${relationTo}${qs.stringify(\n {\n limit: 0,\n locale,\n where: mergeListSearchAndWhere({\n collectionConfig,\n search,\n where: whereConstraint,\n }),\n ...(viewType === 'trash' ? { trash: true } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n const deleteManyResponse =\n viewType === 'trash' || deletePermanently || !collectionConfig.trash\n ? await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(url, {\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 try {\n const { plural, singular } = collectionConfig.labels\n const json = await deleteManyResponse.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (deleteManyResponse.status < 400 || deletedDocs > 0) {\n const wasTrashed = collectionConfig.trash && !deletePermanently && viewType !== 'trash'\n\n let successKey:\n | 'general:deletedCountSuccessfully'\n | 'general:permanentlyDeletedCountSuccessfully'\n | 'general:trashedCountSuccessfully'\n\n if (wasTrashed) {\n successKey = 'general:trashedCountSuccessfully'\n } else if (viewType === 'trash' || deletePermanently) {\n successKey = 'general:permanentlyDeletedCountSuccessfully'\n } else {\n successKey = 'general:deletedCountSuccessfully'\n }\n\n toast.success(\n t(successKey, {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n result[relationTo] = {\n deletedCount: deletedDocs,\n errors: json?.errors || null,\n ids: json?.docs.map((doc) => doc.id) || [],\n totalCount: json.totalDocs,\n }\n\n if (deleteManyResponse.status > 400 && json?.errors.length === 0) {\n toast.error(t('error:unknown'))\n result[relationTo].errors = [t('error:unknown')]\n }\n\n continue\n } catch (_err) {\n toast.error(t('error:unknown'))\n result[relationTo] = {\n deletedCount: 0,\n errors: [_err],\n ids: [],\n totalCount: 0,\n }\n continue\n }\n }\n }\n\n if (typeof afterDelete === 'function') {\n afterDelete(result)\n }\n }, [\n selections,\n afterDelete,\n collections,\n deletePermanently,\n locale,\n search,\n serverURL,\n api,\n i18n,\n viewType,\n where,\n t,\n ])\n\n const { label: labelString, labelCount } = Object.entries(selections).reduce(\n (acc, [key, value], index, array) => {\n const collectionConfig = collections.find(({ slug }) => slug === key)\n if (collectionConfig) {\n const labelCount = acc.labelCount === undefined ? value.totalCount : acc.labelCount\n const collectionLabel = `${acc.labelCount !== undefined ? `${value.totalCount} ` : ''}${getTranslation(\n value.totalCount > 1 ? collectionConfig.labels.plural : collectionConfig.labels.singular,\n i18n,\n )}`\n\n let newLabel\n\n if (index === array.length - 1 && index !== 0) {\n newLabel = `${acc.label} and ${collectionLabel}`\n } else if (index > 0) {\n newLabel = `${acc.label}, ${collectionLabel}`\n } else {\n newLabel = collectionLabel\n }\n\n return {\n label: newLabel,\n labelCount,\n }\n }\n return acc\n },\n {\n label: '',\n labelCount: undefined,\n },\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:delete')}\n className=\"delete-documents__toggle\"\n onClick={() => {\n openModal(confirmManyDeleteDrawerSlug)\n }}\n >\n {t('general:delete')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n <p>\n {trash ? (\n viewType === 'trash' ? (\n <Translation\n elements={{\n '0': ({ children }) => <strong>{children}</strong>,\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDeleteTrash\"\n t={t}\n variables={{\n count: labelCount ?? 0,\n label: labelString,\n }}\n />\n ) : (\n t('general:aboutToTrashCount', { count: labelCount, label: labelString })\n )\n ) : (\n t('general:aboutToDeleteCount', { count: labelCount, label: labelString })\n )}\n </p>\n {trash && viewType !== 'trash' && (\n <div className=\"delete-documents__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 </React.Fragment>\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmManyDeleteDrawerSlug}\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,15 +21,18 @@ export declare const DocumentControls: React.FC<{
|
|
|
21
21
|
readonly isAccountView?: boolean;
|
|
22
22
|
readonly isEditing?: boolean;
|
|
23
23
|
readonly isInDrawer?: boolean;
|
|
24
|
+
readonly isTrashed?: boolean;
|
|
24
25
|
readonly onDelete?: DocumentDrawerContextType['onDelete'];
|
|
25
26
|
readonly onDrawerCreateNew?: () => void;
|
|
26
27
|
readonly onDuplicate?: DocumentDrawerContextType['onDuplicate'];
|
|
28
|
+
readonly onRestore?: DocumentDrawerContextType['onRestore'];
|
|
27
29
|
readonly onSave?: DocumentDrawerContextType['onSave'];
|
|
28
30
|
readonly onTakeOver?: () => void;
|
|
29
31
|
readonly permissions: null | SanitizedCollectionPermission | SanitizedGlobalPermission;
|
|
30
32
|
readonly readOnlyForIncomingUser?: boolean;
|
|
31
33
|
readonly redirectAfterDelete?: boolean;
|
|
32
34
|
readonly redirectAfterDuplicate?: boolean;
|
|
35
|
+
readonly redirectAfterRestore?: boolean;
|
|
33
36
|
readonly slug: SanitizedCollectionConfig['slug'];
|
|
34
37
|
readonly user?: ClientUser;
|
|
35
38
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,IAAI,EACJ,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAIhB,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAwB9E,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,IAAI,EACJ,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAIhB,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAwB9E,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACjD,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;QACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;QACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;QACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAC3C,CAAA;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;IACpB,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAEvC,QAAQ,CAAC,WAAW,CAAC,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC,WAAW,CAAC,CAAA;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,6BAA6B,GAAG,yBAAyB,CAAA;IACtF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAC1C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAC3B,CAgUA,CAAA"}
|
|
@@ -20,14 +20,16 @@ import { MoveDocToFolder } from '../FolderView/MoveDocToFolder/index.js';
|
|
|
20
20
|
import { Gutter } from '../Gutter/index.js';
|
|
21
21
|
import { LivePreviewToggler } from '../LivePreview/Toggler/index.js';
|
|
22
22
|
import { Locked } from '../Locked/index.js';
|
|
23
|
+
import { PermanentlyDeleteButton } from '../PermanentlyDeleteButton/index.js';
|
|
23
24
|
import { Popup, PopupList } from '../Popup/index.js';
|
|
24
25
|
import { PreviewButton } from '../PreviewButton/index.js';
|
|
25
26
|
import { PublishButton } from '../PublishButton/index.js';
|
|
26
27
|
import { RenderCustomComponent } from '../RenderCustomComponent/index.js';
|
|
28
|
+
import { RestoreButton } from '../RestoreButton/index.js';
|
|
27
29
|
import { SaveButton } from '../SaveButton/index.js';
|
|
30
|
+
import './index.scss';
|
|
28
31
|
import { SaveDraftButton } from '../SaveDraftButton/index.js';
|
|
29
32
|
import { Status } from '../Status/index.js';
|
|
30
|
-
import './index.scss';
|
|
31
33
|
const baseClass = 'doc-controls';
|
|
32
34
|
export const DocumentControls = props => {
|
|
33
35
|
const $ = _c(15);
|
|
@@ -44,14 +46,17 @@ export const DocumentControls = props => {
|
|
|
44
46
|
isAccountView,
|
|
45
47
|
isEditing,
|
|
46
48
|
isInDrawer,
|
|
49
|
+
isTrashed,
|
|
47
50
|
onDelete,
|
|
48
51
|
onDrawerCreateNew,
|
|
49
52
|
onDuplicate,
|
|
53
|
+
onRestore,
|
|
50
54
|
onTakeOver,
|
|
51
55
|
permissions,
|
|
52
56
|
readOnlyForIncomingUser,
|
|
53
57
|
redirectAfterDelete,
|
|
54
58
|
redirectAfterDuplicate,
|
|
59
|
+
redirectAfterRestore,
|
|
55
60
|
user
|
|
56
61
|
} = props;
|
|
57
62
|
let t1;
|
|
@@ -182,7 +187,7 @@ export const DocumentControls = props => {
|
|
|
182
187
|
children: [showLockedMetaIcon && _jsx(Locked, {
|
|
183
188
|
className: `${baseClass}__locked-controls`,
|
|
184
189
|
user
|
|
185
|
-
}), showFolderMetaIcon && config.folders && _jsx(MoveDocToFolder, {
|
|
190
|
+
}), showFolderMetaIcon && config.folders && !isTrashed && _jsx(MoveDocToFolder, {
|
|
186
191
|
folderCollectionSlug: config.folders.slug,
|
|
187
192
|
folderFieldName: config.folders.fieldName
|
|
188
193
|
})]
|
|
@@ -200,7 +205,7 @@ export const DocumentControls = props => {
|
|
|
200
205
|
children: [(globalConfig || collectionConfig && isEditing) && _jsx("li", {
|
|
201
206
|
className: [`${baseClass}__status`, `${baseClass}__list-item`].filter(Boolean).join(" "),
|
|
202
207
|
children: _jsx(Status, {})
|
|
203
|
-
}), hasSavePermission && autosaveEnabled && !unsavedDraftWithValidations && _jsx("li", {
|
|
208
|
+
}), hasSavePermission && autosaveEnabled && !unsavedDraftWithValidations && !isTrashed && _jsx("li", {
|
|
204
209
|
className: `${baseClass}__list-item`,
|
|
205
210
|
children: _jsx(Autosave, {
|
|
206
211
|
collection: collectionConfig,
|
|
@@ -215,7 +220,7 @@ export const DocumentControls = props => {
|
|
|
215
220
|
title: data?.updatedAt ? updatedAt : "",
|
|
216
221
|
children: [_jsxs("p", {
|
|
217
222
|
className: `${baseClass}__label`,
|
|
218
|
-
children: [i18n.t("general:lastModified"), ":\xA0"]
|
|
223
|
+
children: [i18n.t(isTrashed ? "general:deleted" : "general:lastModified"), ":\xA0"]
|
|
219
224
|
}), data?.updatedAt && _jsx("p", {
|
|
220
225
|
className: `${baseClass}__value`,
|
|
221
226
|
children: updatedAt
|
|
@@ -240,7 +245,7 @@ export const DocumentControls = props => {
|
|
|
240
245
|
children: [BeforeDocumentControls, t6, (collectionConfig?.admin.preview || globalConfig?.admin.preview) && _jsx(RenderCustomComponent, {
|
|
241
246
|
CustomComponent: CustomPreviewButton,
|
|
242
247
|
Fallback: _jsx(PreviewButton, {})
|
|
243
|
-
}), hasSavePermission && _jsx(Fragment, {
|
|
248
|
+
}), hasSavePermission && !isTrashed && _jsx(Fragment, {
|
|
244
249
|
children: collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? _jsxs(Fragment, {
|
|
245
250
|
children: [(unsavedDraftWithValidations || !autosaveEnabled || autosaveEnabled && showSaveDraftButton) && _jsx(RenderCustomComponent, {
|
|
246
251
|
CustomComponent: CustomSaveDraftButton,
|
|
@@ -253,6 +258,20 @@ export const DocumentControls = props => {
|
|
|
253
258
|
CustomComponent: CustomSaveButton,
|
|
254
259
|
Fallback: _jsx(SaveButton, {})
|
|
255
260
|
})
|
|
261
|
+
}), hasDeletePermission && isTrashed && _jsx(PermanentlyDeleteButton, {
|
|
262
|
+
buttonId: "action-permanently-delete",
|
|
263
|
+
collectionSlug: collectionConfig?.slug,
|
|
264
|
+
id: id.toString(),
|
|
265
|
+
onDelete,
|
|
266
|
+
redirectAfterDelete,
|
|
267
|
+
singularLabel: collectionConfig?.labels?.singular
|
|
268
|
+
}), hasSavePermission && isTrashed && _jsx(RestoreButton, {
|
|
269
|
+
buttonId: "action-restore",
|
|
270
|
+
collectionSlug: collectionConfig?.slug,
|
|
271
|
+
id: id.toString(),
|
|
272
|
+
onRestore,
|
|
273
|
+
redirectAfterRestore,
|
|
274
|
+
singularLabel: collectionConfig?.labels?.singular
|
|
256
275
|
}), t7]
|
|
257
276
|
}), showDotMenu && !readOnlyForIncomingUser && _jsx(Popup, {
|
|
258
277
|
button: _jsxs("div", {
|