@strapi/content-manager 0.0.0-next.f6dca5adf05ef6bed9605a1535999ab0bbbf063e → 0.0.0-next.fc1775f7731f8999840e56e298a216b9a6c5c4ad
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/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -1
- package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -1
- package/dist/_chunks/{ComponentConfigurationPage--MCP7Aew.js → ComponentConfigurationPage-BLWQy8ru.js} +4 -5
- package/dist/_chunks/{ComponentConfigurationPage--MCP7Aew.js.map → ComponentConfigurationPage-BLWQy8ru.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-DT41asyM.mjs → ComponentConfigurationPage-CtIa3aa2.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-DT41asyM.mjs.map → ComponentConfigurationPage-CtIa3aa2.mjs.map} +1 -1
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js → ComponentIcon-CRbtQEUV.js} +2 -3
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js.map → ComponentIcon-CRbtQEUV.js.map} +1 -1
- package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -1
- package/dist/_chunks/{EditConfigurationPage-DznPxn9p.mjs → EditConfigurationPage-DsPR2DVk.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-DznPxn9p.mjs.map → EditConfigurationPage-DsPR2DVk.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-qgnNvv_u.js → EditConfigurationPage-RQkymxCy.js} +4 -5
- package/dist/_chunks/{EditConfigurationPage-qgnNvv_u.js.map → EditConfigurationPage-RQkymxCy.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-Bb4S7p8c.js → EditViewPage-B-kExt8C.js} +36 -8
- package/dist/_chunks/EditViewPage-B-kExt8C.js.map +1 -0
- package/dist/_chunks/{EditViewPage-B_k7z288.mjs → EditViewPage-BPyVuPfM.mjs} +35 -6
- package/dist/_chunks/EditViewPage-BPyVuPfM.mjs.map +1 -0
- package/dist/_chunks/{Field-ByR1mllE.js → Field-DPIsQRre.js} +177 -122
- package/dist/_chunks/Field-DPIsQRre.js.map +1 -0
- package/dist/_chunks/{Field-DmwbE0TL.mjs → Field-Dltnt1km.mjs} +175 -120
- package/dist/_chunks/Field-Dltnt1km.mjs.map +1 -0
- package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
- package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
- package/dist/_chunks/{Form-BpeyAyS1.js → Form-BFi4MXMT.js} +5 -6
- package/dist/_chunks/{Form-BpeyAyS1.js.map → Form-BFi4MXMT.js.map} +1 -1
- package/dist/_chunks/{Form-Dvt5eouJ.mjs → Form-C1IcWm1u.mjs} +3 -3
- package/dist/_chunks/{Form-Dvt5eouJ.mjs.map → Form-C1IcWm1u.mjs.map} +1 -1
- package/dist/_chunks/{History-CAERKpYl.mjs → History-04ChQ4pl.mjs} +37 -60
- package/dist/_chunks/History-04ChQ4pl.mjs.map +1 -0
- package/dist/_chunks/{History-d-IgDGPl.js → History-wjcK4L0C.js} +37 -61
- package/dist/_chunks/History-wjcK4L0C.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-CVVT45M8.mjs → ListConfigurationPage-BYqPYLSU.mjs} +6 -5
- package/dist/_chunks/ListConfigurationPage-BYqPYLSU.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-DSX98CYb.js → ListConfigurationPage-CRbxIC3J.js} +6 -6
- package/dist/_chunks/ListConfigurationPage-CRbxIC3J.js.map +1 -0
- package/dist/_chunks/{ListViewPage-C9gPPp-V.js → ListViewPage-D5NY9183.js} +64 -53
- package/dist/_chunks/ListViewPage-D5NY9183.js.map +1 -0
- package/dist/_chunks/{ListViewPage-Q4g6kHDl.mjs → ListViewPage-FU2LBuhl.mjs} +63 -51
- package/dist/_chunks/ListViewPage-FU2LBuhl.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-D09gppmy.js → NoContentTypePage-BgQVE_Qb.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-D09gppmy.js.map → NoContentTypePage-BgQVE_Qb.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BY4YRGs0.mjs → NoContentTypePage-DCKUkwb8.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-BY4YRGs0.mjs.map → NoContentTypePage-DCKUkwb8.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-32WgThJG.js → NoPermissionsPage-C5jwn70o.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-32WgThJG.js.map → NoPermissionsPage-C5jwn70o.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-CyM16RKL.mjs → NoPermissionsPage-jqve7C8l.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-CyM16RKL.mjs.map → NoPermissionsPage-jqve7C8l.mjs.map} +1 -1
- package/dist/_chunks/{Preview-C2WFq4S8.mjs → Preview-BMYN548c.mjs} +100 -73
- package/dist/_chunks/Preview-BMYN548c.mjs.map +1 -0
- package/dist/_chunks/{Preview-PpV3g9wJ.js → Preview-DaOihysv.js} +98 -72
- package/dist/_chunks/Preview-DaOihysv.js.map +1 -0
- package/dist/_chunks/{Relations-mWaebC5t.js → Relations-CTGM7Hv5.js} +7 -10
- package/dist/_chunks/{Relations-mWaebC5t.js.map → Relations-CTGM7Hv5.js.map} +1 -1
- package/dist/_chunks/{Relations-B_Yn9xGB.mjs → Relations-gscPkxjF.mjs} +6 -8
- package/dist/_chunks/{Relations-B_Yn9xGB.mjs.map → Relations-gscPkxjF.mjs.map} +1 -1
- package/dist/_chunks/{en-CHOp_xJv.js → en-BzQmavmK.js} +11 -3
- package/dist/_chunks/{en-CHOp_xJv.js.map → en-BzQmavmK.js.map} +1 -1
- package/dist/_chunks/{en-D_BMf0hT.mjs → en-CSxLmrh1.mjs} +11 -3
- package/dist/_chunks/{en-D_BMf0hT.mjs.map → en-CSxLmrh1.mjs.map} +1 -1
- package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
- package/dist/_chunks/{index-iun2i4xv.js → index-Ca7YWlAA.js} +300 -204
- package/dist/_chunks/index-Ca7YWlAA.js.map +1 -0
- package/dist/_chunks/{index-CbytGVdz.mjs → index-DqasUQ6Q.mjs} +300 -203
- package/dist/_chunks/index-DqasUQ6Q.mjs.map +1 -0
- package/dist/_chunks/{layout-CkaP4K5_.js → layout-BW80JSCd.js} +5 -6
- package/dist/_chunks/{layout-CkaP4K5_.js.map → layout-BW80JSCd.js.map} +1 -1
- package/dist/_chunks/{layout-Btu_cMRF.mjs → layout-W3clJSCy.mjs} +4 -4
- package/dist/_chunks/{layout-Btu_cMRF.mjs.map → layout-W3clJSCy.mjs.map} +1 -1
- package/dist/_chunks/objects-BcXOv6_9.js.map +1 -1
- package/dist/_chunks/objects-D6yBsdmx.mjs.map +1 -1
- package/dist/_chunks/{relations-Cn5re8ia.mjs → relations-BlDkoeWh.mjs} +2 -2
- package/dist/_chunks/{relations-Cn5re8ia.mjs.map → relations-BlDkoeWh.mjs.map} +1 -1
- package/dist/_chunks/{relations-O_v9g0v_.js → relations-C9Usz9k5.js} +2 -2
- package/dist/_chunks/{relations-O_v9g0v_.js.map → relations-C9Usz9k5.js.map} +1 -1
- package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -1
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -1
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js.map → useDragAndDrop-BMtgCYzL.js.map} +1 -1
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs.map → useDragAndDrop-DJ6jqvZN.mjs.map} +1 -1
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -1
- package/dist/admin/src/content-manager.d.ts +3 -2
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +3 -3
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +7 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +4 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +4 -1
- package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/router.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +16 -19
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/server/index.js +230 -187
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +231 -187
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +1 -0
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/history/controllers/history-version.d.ts +1 -1
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts +3 -3
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +6 -10
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -2
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
- package/dist/server/src/preview/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +2 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +4 -2
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +3 -2
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
- package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/package.json +12 -11
- package/dist/_chunks/EditViewPage-B_k7z288.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-Bb4S7p8c.js.map +0 -1
- package/dist/_chunks/Field-ByR1mllE.js.map +0 -1
- package/dist/_chunks/Field-DmwbE0TL.mjs.map +0 -1
- package/dist/_chunks/History-CAERKpYl.mjs.map +0 -1
- package/dist/_chunks/History-d-IgDGPl.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-CVVT45M8.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-DSX98CYb.js.map +0 -1
- package/dist/_chunks/ListViewPage-C9gPPp-V.js.map +0 -1
- package/dist/_chunks/ListViewPage-Q4g6kHDl.mjs.map +0 -1
- package/dist/_chunks/Preview-C2WFq4S8.mjs.map +0 -1
- package/dist/_chunks/Preview-PpV3g9wJ.js.map +0 -1
- package/dist/_chunks/index-CbytGVdz.mjs.map +0 -1
- package/dist/_chunks/index-iun2i4xv.js.map +0 -1
- package/dist/admin/src/preview/constants.d.ts +0 -1
- package/dist/server/src/preview/constants.d.ts +0 -2
- package/dist/server/src/preview/constants.d.ts.map +0 -1
@@ -3,24 +3,31 @@ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useStrapiApp, createContext, useQueryParams, useAuth, useRBAC, Page, adminApi, translatedErrors, useNotification, useAPIErrorHandler, getYupValidationErrors, useForm, useTracking, useGuidedTour, BackButton, DescriptionComponentRenderer, useTable, Table } from "@strapi/admin/strapi-admin";
|
4
4
|
import * as React from "react";
|
5
5
|
import { lazy } from "react";
|
6
|
-
import {
|
6
|
+
import { Menu, Button, VisuallyHidden, Flex, Dialog, Modal, Typography, Radio, Status, Box, SingleSelect, SingleSelectOption, IconButton, Loader, Tooltip, LinkButton } from "@strapi/design-system";
|
7
7
|
import mapValues from "lodash/fp/mapValues";
|
8
8
|
import { useIntl } from "react-intl";
|
9
9
|
import { useParams, useNavigate, Navigate, useMatch, useLocation, Link, NavLink } from "react-router-dom";
|
10
|
+
import { styled } from "styled-components";
|
10
11
|
import * as yup from "yup";
|
11
12
|
import { ValidationError } from "yup";
|
13
|
+
import { stringify } from "qs";
|
12
14
|
import pipe from "lodash/fp/pipe";
|
13
15
|
import { intervalToDuration, isPast } from "date-fns";
|
14
|
-
import { styled } from "styled-components";
|
15
|
-
import { stringify } from "qs";
|
16
16
|
import { createSlice, combineReducers } from "@reduxjs/toolkit";
|
17
|
-
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
17
|
+
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
18
18
|
const v = glob[path];
|
19
19
|
if (v) {
|
20
20
|
return typeof v === "function" ? v() : Promise.resolve(v);
|
21
21
|
}
|
22
22
|
return new Promise((_, reject) => {
|
23
|
-
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
23
|
+
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
24
|
+
reject.bind(
|
25
|
+
null,
|
26
|
+
new Error(
|
27
|
+
"Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
|
28
|
+
)
|
29
|
+
)
|
30
|
+
);
|
24
31
|
});
|
25
32
|
};
|
26
33
|
const PLUGIN_ID = "content-manager";
|
@@ -168,7 +175,8 @@ const contentManagerApi = adminApi.enhanceEndpoints({
|
|
168
175
|
"InitialData",
|
169
176
|
"HistoryVersion",
|
170
177
|
"Relations",
|
171
|
-
"UidAvailability"
|
178
|
+
"UidAvailability",
|
179
|
+
"RecentDocumentList"
|
172
180
|
]
|
173
181
|
});
|
174
182
|
const documentApi = contentManagerApi.injectEndpoints({
|
@@ -186,7 +194,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
186
194
|
if (error) {
|
187
195
|
return [];
|
188
196
|
}
|
189
|
-
return [{ type: "Document", id: `${model}_LIST` }];
|
197
|
+
return [{ type: "Document", id: `${model}_LIST` }, "RecentDocumentList"];
|
190
198
|
}
|
191
199
|
}),
|
192
200
|
cloneDocument: builder.mutation({
|
@@ -200,7 +208,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
200
208
|
}),
|
201
209
|
invalidatesTags: (_result, _error, { model }) => [
|
202
210
|
{ type: "Document", id: `${model}_LIST` },
|
203
|
-
{ type: "UidAvailability", id: model }
|
211
|
+
{ type: "UidAvailability", id: model },
|
212
|
+
"RecentDocumentList"
|
204
213
|
]
|
205
214
|
}),
|
206
215
|
/**
|
@@ -219,8 +228,21 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
219
228
|
invalidatesTags: (result, _error, { model }) => [
|
220
229
|
{ type: "Document", id: `${model}_LIST` },
|
221
230
|
"Relations",
|
222
|
-
{ type: "UidAvailability", id: model }
|
223
|
-
|
231
|
+
{ type: "UidAvailability", id: model },
|
232
|
+
"RecentDocumentList"
|
233
|
+
],
|
234
|
+
transformResponse: (response, meta, arg) => {
|
235
|
+
if (!("data" in response) && arg.model === "plugin::users-permissions.user") {
|
236
|
+
return {
|
237
|
+
data: response,
|
238
|
+
meta: {
|
239
|
+
availableStatus: [],
|
240
|
+
availableLocales: []
|
241
|
+
}
|
242
|
+
};
|
243
|
+
}
|
244
|
+
return response;
|
245
|
+
}
|
224
246
|
}),
|
225
247
|
deleteDocument: builder.mutation({
|
226
248
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -231,7 +253,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
231
253
|
}
|
232
254
|
}),
|
233
255
|
invalidatesTags: (_result, _error, { collectionType, model }) => [
|
234
|
-
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model }
|
256
|
+
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },
|
257
|
+
"RecentDocumentList"
|
235
258
|
]
|
236
259
|
}),
|
237
260
|
deleteManyDocuments: builder.mutation({
|
@@ -243,7 +266,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
243
266
|
params
|
244
267
|
}
|
245
268
|
}),
|
246
|
-
invalidatesTags: (_res, _error, { model }) => [
|
269
|
+
invalidatesTags: (_res, _error, { model }) => [
|
270
|
+
{ type: "Document", id: `${model}_LIST` },
|
271
|
+
"RecentDocumentList"
|
272
|
+
]
|
247
273
|
}),
|
248
274
|
discardDocument: builder.mutation({
|
249
275
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -261,7 +287,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
261
287
|
},
|
262
288
|
{ type: "Document", id: `${model}_LIST` },
|
263
289
|
"Relations",
|
264
|
-
{ type: "UidAvailability", id: model }
|
290
|
+
{ type: "UidAvailability", id: model },
|
291
|
+
"RecentDocumentList"
|
265
292
|
];
|
266
293
|
}
|
267
294
|
}),
|
@@ -274,7 +301,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
274
301
|
url: `/content-manager/collection-types/${model}`,
|
275
302
|
method: "GET",
|
276
303
|
config: {
|
277
|
-
params
|
304
|
+
params: stringify(params, { encode: true })
|
278
305
|
}
|
279
306
|
}),
|
280
307
|
providesTags: (result, _error, arg) => {
|
@@ -356,7 +383,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
356
383
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
357
384
|
},
|
358
385
|
{ type: "Document", id: `${model}_LIST` },
|
359
|
-
"Relations"
|
386
|
+
"Relations",
|
387
|
+
"RecentDocumentList"
|
360
388
|
];
|
361
389
|
}
|
362
390
|
}),
|
@@ -387,7 +415,9 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
387
415
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
388
416
|
},
|
389
417
|
"Relations",
|
390
|
-
{ type: "UidAvailability", id: model }
|
418
|
+
{ type: "UidAvailability", id: model },
|
419
|
+
"RecentDocumentList",
|
420
|
+
"RecentDocumentList"
|
391
421
|
];
|
392
422
|
},
|
393
423
|
async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {
|
@@ -417,7 +447,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
417
447
|
{
|
418
448
|
type: "Document",
|
419
449
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
420
|
-
}
|
450
|
+
},
|
451
|
+
"RecentDocumentList"
|
421
452
|
];
|
422
453
|
}
|
423
454
|
}),
|
@@ -430,7 +461,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
430
461
|
params
|
431
462
|
}
|
432
463
|
}),
|
433
|
-
invalidatesTags: (_res, _error, { model, documentIds }) =>
|
464
|
+
invalidatesTags: (_res, _error, { model, documentIds }) => [
|
465
|
+
...documentIds.map((id) => ({ type: "Document", id: `${model}_${id}` })),
|
466
|
+
"RecentDocumentList"
|
467
|
+
]
|
434
468
|
})
|
435
469
|
})
|
436
470
|
});
|
@@ -453,8 +487,7 @@ const {
|
|
453
487
|
useUnpublishManyDocumentsMutation
|
454
488
|
} = documentApi;
|
455
489
|
const buildValidParams = (query) => {
|
456
|
-
if (!query)
|
457
|
-
return query;
|
490
|
+
if (!query) return query;
|
458
491
|
const { plugins: _, ...validQueryParams } = {
|
459
492
|
...query,
|
460
493
|
...Object.values(query?.plugins ?? {}).reduce(
|
@@ -462,9 +495,6 @@ const buildValidParams = (query) => {
|
|
462
495
|
{}
|
463
496
|
)
|
464
497
|
};
|
465
|
-
if ("_q" in validQueryParams) {
|
466
|
-
validQueryParams._q = encodeURIComponent(validQueryParams._q);
|
467
|
-
}
|
468
498
|
return validQueryParams;
|
469
499
|
};
|
470
500
|
const isBaseQueryError = (error) => {
|
@@ -1664,7 +1694,7 @@ const useDocumentActions = () => {
|
|
1664
1694
|
};
|
1665
1695
|
};
|
1666
1696
|
const ProtectedHistoryPage = React.lazy(
|
1667
|
-
() => import("./History-
|
1697
|
+
() => import("./History-04ChQ4pl.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
|
1668
1698
|
);
|
1669
1699
|
const routes$2 = [
|
1670
1700
|
{
|
@@ -1677,7 +1707,7 @@ const routes$2 = [
|
|
1677
1707
|
}
|
1678
1708
|
];
|
1679
1709
|
const ProtectedPreviewPage = React.lazy(
|
1680
|
-
() => import("./Preview-
|
1710
|
+
() => import("./Preview-BMYN548c.mjs").then((mod) => ({ default: mod.ProtectedPreviewPage }))
|
1681
1711
|
);
|
1682
1712
|
const routes$1 = [
|
1683
1713
|
{
|
@@ -1690,31 +1720,31 @@ const routes$1 = [
|
|
1690
1720
|
}
|
1691
1721
|
];
|
1692
1722
|
const ProtectedEditViewPage = lazy(
|
1693
|
-
() => import("./EditViewPage-
|
1723
|
+
() => import("./EditViewPage-BPyVuPfM.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
|
1694
1724
|
);
|
1695
1725
|
const ProtectedListViewPage = lazy(
|
1696
|
-
() => import("./ListViewPage-
|
1726
|
+
() => import("./ListViewPage-FU2LBuhl.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
|
1697
1727
|
);
|
1698
1728
|
const ProtectedListConfiguration = lazy(
|
1699
|
-
() => import("./ListConfigurationPage-
|
1729
|
+
() => import("./ListConfigurationPage-BYqPYLSU.mjs").then((mod) => ({
|
1700
1730
|
default: mod.ProtectedListConfiguration
|
1701
1731
|
}))
|
1702
1732
|
);
|
1703
1733
|
const ProtectedEditConfigurationPage = lazy(
|
1704
|
-
() => import("./EditConfigurationPage-
|
1734
|
+
() => import("./EditConfigurationPage-DsPR2DVk.mjs").then((mod) => ({
|
1705
1735
|
default: mod.ProtectedEditConfigurationPage
|
1706
1736
|
}))
|
1707
1737
|
);
|
1708
1738
|
const ProtectedComponentConfigurationPage = lazy(
|
1709
|
-
() => import("./ComponentConfigurationPage-
|
1739
|
+
() => import("./ComponentConfigurationPage-CtIa3aa2.mjs").then((mod) => ({
|
1710
1740
|
default: mod.ProtectedComponentConfigurationPage
|
1711
1741
|
}))
|
1712
1742
|
);
|
1713
1743
|
const NoPermissions = lazy(
|
1714
|
-
() => import("./NoPermissionsPage-
|
1744
|
+
() => import("./NoPermissionsPage-jqve7C8l.mjs").then((mod) => ({ default: mod.NoPermissions }))
|
1715
1745
|
);
|
1716
1746
|
const NoContentType = lazy(
|
1717
|
-
() => import("./NoContentTypePage-
|
1747
|
+
() => import("./NoContentTypePage-DCKUkwb8.mjs").then((mod) => ({ default: mod.NoContentType }))
|
1718
1748
|
);
|
1719
1749
|
const CollectionTypePages = () => {
|
1720
1750
|
const { collectionType } = useParams();
|
@@ -1726,7 +1756,7 @@ const CollectionTypePages = () => {
|
|
1726
1756
|
const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
|
1727
1757
|
const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
|
1728
1758
|
const LIST_RELATIVE_PATH = ":collectionType/:slug";
|
1729
|
-
const LIST_PATH = `/content-manager
|
1759
|
+
const LIST_PATH = `/content-manager/collection-types/:slug`;
|
1730
1760
|
const routes = [
|
1731
1761
|
{
|
1732
1762
|
path: LIST_RELATIVE_PATH,
|
@@ -1859,6 +1889,11 @@ const DocumentActionButton = (action) => {
|
|
1859
1889
|
) : null
|
1860
1890
|
] });
|
1861
1891
|
};
|
1892
|
+
const MenuItem = styled(Menu.Item)`
|
1893
|
+
&:hover {
|
1894
|
+
background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
|
1895
|
+
}
|
1896
|
+
`;
|
1862
1897
|
const DocumentActionsMenu = ({
|
1863
1898
|
actions: actions2,
|
1864
1899
|
children,
|
@@ -1917,48 +1952,32 @@ const DocumentActionsMenu = ({
|
|
1917
1952
|
/* @__PURE__ */ jsxs(Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
|
1918
1953
|
actions2.map((action) => {
|
1919
1954
|
return /* @__PURE__ */ jsx(
|
1920
|
-
|
1955
|
+
MenuItem,
|
1921
1956
|
{
|
1922
1957
|
disabled: action.disabled,
|
1923
1958
|
onSelect: handleClick(action),
|
1924
1959
|
display: "block",
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
Flex,
|
1947
|
-
{
|
1948
|
-
alignItems: "center",
|
1949
|
-
background: "alternative100",
|
1950
|
-
borderStyle: "solid",
|
1951
|
-
borderColor: "alternative200",
|
1952
|
-
borderWidth: "1px",
|
1953
|
-
height: 5,
|
1954
|
-
paddingLeft: 2,
|
1955
|
-
paddingRight: 2,
|
1956
|
-
hasRadius: true,
|
1957
|
-
color: "alternative600",
|
1958
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
|
1959
|
-
}
|
1960
|
-
)
|
1961
|
-
] })
|
1960
|
+
isVariantDanger: action.variant === "danger",
|
1961
|
+
isDisabled: action.disabled,
|
1962
|
+
children: /* @__PURE__ */ jsx(Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxs(
|
1963
|
+
Flex,
|
1964
|
+
{
|
1965
|
+
color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
|
1966
|
+
gap: 2,
|
1967
|
+
tag: "span",
|
1968
|
+
children: [
|
1969
|
+
/* @__PURE__ */ jsx(
|
1970
|
+
Flex,
|
1971
|
+
{
|
1972
|
+
tag: "span",
|
1973
|
+
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
|
1974
|
+
children: action.icon
|
1975
|
+
}
|
1976
|
+
),
|
1977
|
+
action.label
|
1978
|
+
]
|
1979
|
+
}
|
1980
|
+
) })
|
1962
1981
|
},
|
1963
1982
|
action.id
|
1964
1983
|
);
|
@@ -2095,6 +2114,7 @@ const PublishAction$1 = ({
|
|
2095
2114
|
const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
2096
2115
|
const isListView = useMatch(LIST_PATH) !== null;
|
2097
2116
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2117
|
+
const { id } = useParams();
|
2098
2118
|
const { formatMessage } = useIntl();
|
2099
2119
|
const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
|
2100
2120
|
const { publish } = useDocumentActions();
|
@@ -2197,10 +2217,12 @@ const PublishAction$1 = ({
|
|
2197
2217
|
transformData(formValues)
|
2198
2218
|
);
|
2199
2219
|
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2200
|
-
|
2201
|
-
|
2202
|
-
|
2203
|
-
|
2220
|
+
if (id === "create") {
|
2221
|
+
navigate({
|
2222
|
+
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
2223
|
+
search: rawQuery
|
2224
|
+
});
|
2225
|
+
}
|
2204
2226
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2205
2227
|
setErrors(formatValidationErrors(res.error));
|
2206
2228
|
}
|
@@ -2253,6 +2275,7 @@ const PublishAction$1 = ({
|
|
2253
2275
|
};
|
2254
2276
|
};
|
2255
2277
|
PublishAction$1.type = "publish";
|
2278
|
+
PublishAction$1.position = "panel";
|
2256
2279
|
const UpdateAction = ({
|
2257
2280
|
activeTab,
|
2258
2281
|
documentId,
|
@@ -2275,96 +2298,134 @@ const UpdateAction = ({
|
|
2275
2298
|
const validate = useForm("UpdateAction", (state) => state.validate);
|
2276
2299
|
const setErrors = useForm("UpdateAction", (state) => state.setErrors);
|
2277
2300
|
const resetForm = useForm("PublishAction", ({ resetForm: resetForm2 }) => resetForm2);
|
2278
|
-
|
2279
|
-
|
2280
|
-
|
2281
|
-
|
2282
|
-
|
2283
|
-
|
2284
|
-
|
2285
|
-
|
2286
|
-
|
2287
|
-
|
2288
|
-
|
2289
|
-
|
2290
|
-
|
2291
|
-
|
2292
|
-
|
2293
|
-
|
2294
|
-
status: "draft"
|
2301
|
+
const handleUpdate = React.useCallback(async () => {
|
2302
|
+
setSubmitting(true);
|
2303
|
+
try {
|
2304
|
+
if (!modified) {
|
2305
|
+
return;
|
2306
|
+
}
|
2307
|
+
const { errors } = await validate(true, {
|
2308
|
+
status: "draft"
|
2309
|
+
});
|
2310
|
+
if (errors) {
|
2311
|
+
toggleNotification({
|
2312
|
+
type: "danger",
|
2313
|
+
message: formatMessage({
|
2314
|
+
id: "content-manager.validation.error",
|
2315
|
+
defaultMessage: "There are validation errors in your document. Please fix them before saving."
|
2316
|
+
})
|
2295
2317
|
});
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2299
|
-
|
2300
|
-
|
2301
|
-
|
2302
|
-
|
2303
|
-
|
2304
|
-
|
2305
|
-
|
2306
|
-
|
2307
|
-
|
2308
|
-
|
2309
|
-
model,
|
2310
|
-
documentId: cloneMatch.params.origin,
|
2311
|
-
params
|
2312
|
-
},
|
2313
|
-
transformData(document)
|
2314
|
-
);
|
2315
|
-
if ("data" in res) {
|
2316
|
-
navigate(
|
2317
|
-
{
|
2318
|
-
pathname: `../${res.data.documentId}`,
|
2319
|
-
search: rawQuery
|
2320
|
-
},
|
2321
|
-
{ relative: "path" }
|
2322
|
-
);
|
2323
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2324
|
-
setErrors(formatValidationErrors(res.error));
|
2325
|
-
}
|
2326
|
-
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2327
|
-
const res = await update(
|
2318
|
+
return;
|
2319
|
+
}
|
2320
|
+
if (isCloning) {
|
2321
|
+
const res = await clone(
|
2322
|
+
{
|
2323
|
+
model,
|
2324
|
+
documentId: cloneMatch.params.origin,
|
2325
|
+
params
|
2326
|
+
},
|
2327
|
+
transformData(document)
|
2328
|
+
);
|
2329
|
+
if ("data" in res) {
|
2330
|
+
navigate(
|
2328
2331
|
{
|
2329
|
-
|
2330
|
-
|
2331
|
-
documentId,
|
2332
|
-
params
|
2332
|
+
pathname: `../${res.data.documentId}`,
|
2333
|
+
search: rawQuery
|
2333
2334
|
},
|
2334
|
-
|
2335
|
+
{ relative: "path" }
|
2335
2336
|
);
|
2336
|
-
|
2337
|
-
|
2338
|
-
|
2339
|
-
|
2340
|
-
|
2337
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2338
|
+
setErrors(formatValidationErrors(res.error));
|
2339
|
+
}
|
2340
|
+
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2341
|
+
const res = await update(
|
2342
|
+
{
|
2343
|
+
collectionType,
|
2344
|
+
model,
|
2345
|
+
documentId,
|
2346
|
+
params
|
2347
|
+
},
|
2348
|
+
transformData(document)
|
2349
|
+
);
|
2350
|
+
if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2351
|
+
setErrors(formatValidationErrors(res.error));
|
2341
2352
|
} else {
|
2342
|
-
|
2353
|
+
resetForm();
|
2354
|
+
}
|
2355
|
+
} else {
|
2356
|
+
const res = await create(
|
2357
|
+
{
|
2358
|
+
model,
|
2359
|
+
params
|
2360
|
+
},
|
2361
|
+
transformData(document)
|
2362
|
+
);
|
2363
|
+
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2364
|
+
navigate(
|
2343
2365
|
{
|
2344
|
-
|
2345
|
-
|
2366
|
+
pathname: `../${res.data.documentId}`,
|
2367
|
+
search: rawQuery
|
2346
2368
|
},
|
2347
|
-
|
2369
|
+
{ replace: true, relative: "path" }
|
2348
2370
|
);
|
2349
|
-
|
2350
|
-
|
2351
|
-
{
|
2352
|
-
pathname: `../${res.data.documentId}`,
|
2353
|
-
search: rawQuery
|
2354
|
-
},
|
2355
|
-
{ replace: true, relative: "path" }
|
2356
|
-
);
|
2357
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2358
|
-
setErrors(formatValidationErrors(res.error));
|
2359
|
-
}
|
2371
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2372
|
+
setErrors(formatValidationErrors(res.error));
|
2360
2373
|
}
|
2361
|
-
} finally {
|
2362
|
-
setSubmitting(false);
|
2363
2374
|
}
|
2375
|
+
} finally {
|
2376
|
+
setSubmitting(false);
|
2364
2377
|
}
|
2378
|
+
}, [
|
2379
|
+
clone,
|
2380
|
+
cloneMatch?.params.origin,
|
2381
|
+
collectionType,
|
2382
|
+
create,
|
2383
|
+
document,
|
2384
|
+
documentId,
|
2385
|
+
formatMessage,
|
2386
|
+
formatValidationErrors,
|
2387
|
+
isCloning,
|
2388
|
+
model,
|
2389
|
+
modified,
|
2390
|
+
navigate,
|
2391
|
+
params,
|
2392
|
+
rawQuery,
|
2393
|
+
resetForm,
|
2394
|
+
setErrors,
|
2395
|
+
setSubmitting,
|
2396
|
+
toggleNotification,
|
2397
|
+
update,
|
2398
|
+
validate
|
2399
|
+
]);
|
2400
|
+
React.useEffect(() => {
|
2401
|
+
const handleKeyDown = (e) => {
|
2402
|
+
if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
|
2403
|
+
e.preventDefault();
|
2404
|
+
handleUpdate();
|
2405
|
+
}
|
2406
|
+
};
|
2407
|
+
window.addEventListener("keydown", handleKeyDown);
|
2408
|
+
return () => {
|
2409
|
+
window.removeEventListener("keydown", handleKeyDown);
|
2410
|
+
};
|
2411
|
+
}, [handleUpdate]);
|
2412
|
+
return {
|
2413
|
+
/**
|
2414
|
+
* Disabled when:
|
2415
|
+
* - the form is submitting
|
2416
|
+
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
2417
|
+
* - the active tab is the published tab
|
2418
|
+
*/
|
2419
|
+
disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
|
2420
|
+
label: formatMessage({
|
2421
|
+
id: "global.save",
|
2422
|
+
defaultMessage: "Save"
|
2423
|
+
}),
|
2424
|
+
onClick: handleUpdate
|
2365
2425
|
};
|
2366
2426
|
};
|
2367
2427
|
UpdateAction.type = "update";
|
2428
|
+
UpdateAction.position = "panel";
|
2368
2429
|
const UNPUBLISH_DRAFT_OPTIONS = {
|
2369
2430
|
KEEP: "keep",
|
2370
2431
|
DISCARD: "discard"
|
@@ -2487,6 +2548,7 @@ const UnpublishAction$1 = ({
|
|
2487
2548
|
};
|
2488
2549
|
};
|
2489
2550
|
UnpublishAction$1.type = "unpublish";
|
2551
|
+
UnpublishAction$1.position = "panel";
|
2490
2552
|
const DiscardAction = ({
|
2491
2553
|
activeTab,
|
2492
2554
|
documentId,
|
@@ -2537,6 +2599,7 @@ const DiscardAction = ({
|
|
2537
2599
|
};
|
2538
2600
|
};
|
2539
2601
|
DiscardAction.type = "discard";
|
2602
|
+
DiscardAction.position = "panel";
|
2540
2603
|
const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
|
2541
2604
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
2542
2605
|
const RelativeTime = React.forwardRef(
|
@@ -2549,7 +2612,7 @@ const RelativeTime = React.forwardRef(
|
|
2549
2612
|
});
|
2550
2613
|
const unit = intervals.find((intervalUnit) => {
|
2551
2614
|
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
2552
|
-
});
|
2615
|
+
}) ?? "seconds";
|
2553
2616
|
const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
|
2554
2617
|
const customInterval = customIntervals.find(
|
2555
2618
|
(custom) => interval[custom.unit] < custom.threshold
|
@@ -2583,10 +2646,10 @@ const getDisplayName = ({
|
|
2583
2646
|
return email ?? "";
|
2584
2647
|
};
|
2585
2648
|
const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
2586
|
-
const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
2649
|
+
const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
|
2587
2650
|
const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
|
2588
2651
|
const { formatMessage } = useIntl();
|
2589
|
-
return /* @__PURE__ */ jsx(Status, { ...restProps,
|
2652
|
+
return /* @__PURE__ */ jsx(Status, { ...restProps, size, variant: statusVariant, children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: formatMessage({
|
2590
2653
|
id: `content-manager.containers.List.${status}`,
|
2591
2654
|
defaultMessage: capitalise(status)
|
2592
2655
|
}) }) });
|
@@ -2594,12 +2657,18 @@ const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
|
2594
2657
|
const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
2595
2658
|
const { formatMessage } = useIntl();
|
2596
2659
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2660
|
+
const params = useParams();
|
2597
2661
|
const title = isCreating ? formatMessage({
|
2598
2662
|
id: "content-manager.containers.edit.title.new",
|
2599
2663
|
defaultMessage: "Create an entry"
|
2600
2664
|
}) : documentTitle;
|
2601
2665
|
return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
|
2602
|
-
/* @__PURE__ */ jsx(
|
2666
|
+
/* @__PURE__ */ jsx(
|
2667
|
+
BackButton,
|
2668
|
+
{
|
2669
|
+
fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
|
2670
|
+
}
|
2671
|
+
),
|
2603
2672
|
/* @__PURE__ */ jsxs(Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
|
2604
2673
|
/* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
|
2605
2674
|
/* @__PURE__ */ jsx(HeaderToolbar, {})
|
@@ -2650,7 +2719,7 @@ const HeaderToolbar = () => {
|
|
2650
2719
|
meta: isCloning ? void 0 : meta,
|
2651
2720
|
collectionType
|
2652
2721
|
},
|
2653
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
2722
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("header"),
|
2654
2723
|
children: (actions2) => {
|
2655
2724
|
const headerActions = actions2.filter((action) => {
|
2656
2725
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -2858,6 +2927,7 @@ const ConfigureTheViewAction = ({ collectionType, model }) => {
|
|
2858
2927
|
};
|
2859
2928
|
};
|
2860
2929
|
ConfigureTheViewAction.type = "configure-the-view";
|
2930
|
+
ConfigureTheViewAction.position = "header";
|
2861
2931
|
const EditTheModelAction = ({ model }) => {
|
2862
2932
|
const navigate = useNavigate();
|
2863
2933
|
const { formatMessage } = useIntl();
|
@@ -2874,6 +2944,7 @@ const EditTheModelAction = ({ model }) => {
|
|
2874
2944
|
};
|
2875
2945
|
};
|
2876
2946
|
EditTheModelAction.type = "edit-the-model";
|
2947
|
+
EditTheModelAction.position = "header";
|
2877
2948
|
const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
2878
2949
|
const navigate = useNavigate();
|
2879
2950
|
const { formatMessage } = useIntl();
|
@@ -2947,6 +3018,7 @@ const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
|
2947
3018
|
};
|
2948
3019
|
};
|
2949
3020
|
DeleteAction$1.type = "delete";
|
3021
|
+
DeleteAction$1.position = ["header", "table-row"];
|
2950
3022
|
const DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction$1];
|
2951
3023
|
const Panels = () => {
|
2952
3024
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
@@ -3009,7 +3081,7 @@ const ActionsPanelContent = () => {
|
|
3009
3081
|
DescriptionComponentRenderer,
|
3010
3082
|
{
|
3011
3083
|
props,
|
3012
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
3084
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("panel"),
|
3013
3085
|
children: (actions2) => /* @__PURE__ */ jsx(DocumentActions, { actions: actions2 })
|
3014
3086
|
}
|
3015
3087
|
),
|
@@ -3286,18 +3358,10 @@ const SelectedEntriesTableContent = ({
|
|
3286
3358
|
search: row.locale && `?plugins[i18n][locale]=${row.locale}`
|
3287
3359
|
},
|
3288
3360
|
state: { from: pathname },
|
3289
|
-
label: formatMessage(
|
3290
|
-
|
3291
|
-
|
3292
|
-
|
3293
|
-
{
|
3294
|
-
id: "content-manager.components.ListViewHelperPluginTable.row-line",
|
3295
|
-
defaultMessage: "item line {number}"
|
3296
|
-
},
|
3297
|
-
{ number: index2 + 1 }
|
3298
|
-
)
|
3299
|
-
}
|
3300
|
-
),
|
3361
|
+
label: formatMessage({
|
3362
|
+
id: "content-manager.bulk-publish.edit",
|
3363
|
+
defaultMessage: "Edit"
|
3364
|
+
}),
|
3301
3365
|
target: "_blank",
|
3302
3366
|
marginLeft: "auto",
|
3303
3367
|
variant: "ghost",
|
@@ -3471,8 +3535,7 @@ const PublishAction = ({ documents, model }) => {
|
|
3471
3535
|
const refetchList = () => {
|
3472
3536
|
contentManagerApi.util.invalidateTags([{ type: "Document", id: `${model}_LIST` }]);
|
3473
3537
|
};
|
3474
|
-
if (!showPublishButton)
|
3475
|
-
return null;
|
3538
|
+
if (!showPublishButton) return null;
|
3476
3539
|
return {
|
3477
3540
|
actionType: "publish",
|
3478
3541
|
variant: "tertiary",
|
@@ -3540,8 +3603,7 @@ const DeleteAction = ({ documents, model }) => {
|
|
3540
3603
|
selectRow([]);
|
3541
3604
|
}
|
3542
3605
|
};
|
3543
|
-
if (!hasDeletePermission)
|
3544
|
-
return null;
|
3606
|
+
if (!hasDeletePermission) return null;
|
3545
3607
|
return {
|
3546
3608
|
variant: "danger-light",
|
3547
3609
|
label: formatMessage({ id: "global.delete", defaultMessage: "Delete" }),
|
@@ -3590,8 +3652,7 @@ const UnpublishAction = ({ documents, model }) => {
|
|
3590
3652
|
}
|
3591
3653
|
};
|
3592
3654
|
const showUnpublishButton = hasDraftAndPublishEnabled && hasPublishPermission && documents.some((entry) => entry.status === "published" || entry.status === "modified");
|
3593
|
-
if (!showUnpublishButton)
|
3594
|
-
return null;
|
3655
|
+
if (!showUnpublishButton) return null;
|
3595
3656
|
return {
|
3596
3657
|
variant: "tertiary",
|
3597
3658
|
label: formatMessage({ id: "app.utils.unpublish", defaultMessage: "Unpublish" }),
|
@@ -3696,7 +3757,7 @@ const TableActions = ({ document }) => {
|
|
3696
3757
|
DescriptionComponentRenderer,
|
3697
3758
|
{
|
3698
3759
|
props,
|
3699
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions().filter((action) => action.name !== "PublishAction"),
|
3760
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("table-row").filter((action) => action.name !== "PublishAction"),
|
3700
3761
|
children: (actions2) => {
|
3701
3762
|
const tableRowActions = actions2.filter((action) => {
|
3702
3763
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -3755,6 +3816,7 @@ const EditAction = ({ documentId }) => {
|
|
3755
3816
|
};
|
3756
3817
|
};
|
3757
3818
|
EditAction.type = "edit";
|
3819
|
+
EditAction.position = "table-row";
|
3758
3820
|
const StyledPencil = styled(Pencil)`
|
3759
3821
|
path {
|
3760
3822
|
fill: currentColor;
|
@@ -3831,6 +3893,7 @@ const CloneAction = ({ model, documentId }) => {
|
|
3831
3893
|
};
|
3832
3894
|
};
|
3833
3895
|
CloneAction.type = "clone";
|
3896
|
+
CloneAction.position = "table-row";
|
3834
3897
|
const StyledDuplicate = styled(Duplicate)`
|
3835
3898
|
path {
|
3836
3899
|
fill: currentColor;
|
@@ -3917,7 +3980,14 @@ class ContentManagerPlugin {
|
|
3917
3980
|
addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),
|
3918
3981
|
addEditViewSidePanel: this.addEditViewSidePanel.bind(this),
|
3919
3982
|
getBulkActions: () => this.bulkActions,
|
3920
|
-
getDocumentActions: () =>
|
3983
|
+
getDocumentActions: (position) => {
|
3984
|
+
if (position) {
|
3985
|
+
return this.documentActions.filter(
|
3986
|
+
(action) => action.position == void 0 || [action.position].flat().includes(position)
|
3987
|
+
);
|
3988
|
+
}
|
3989
|
+
return this.documentActions;
|
3990
|
+
},
|
3921
3991
|
getEditViewSidePanels: () => this.editViewSidePanels,
|
3922
3992
|
getHeaderActions: () => this.headerActions
|
3923
3993
|
}
|
@@ -3927,10 +3997,8 @@ class ContentManagerPlugin {
|
|
3927
3997
|
const getPrintableType = (value) => {
|
3928
3998
|
const nativeType = typeof value;
|
3929
3999
|
if (nativeType === "object") {
|
3930
|
-
if (value === null)
|
3931
|
-
|
3932
|
-
if (Array.isArray(value))
|
3933
|
-
return "array";
|
4000
|
+
if (value === null) return "null";
|
4001
|
+
if (Array.isArray(value)) return "array";
|
3934
4002
|
if (value instanceof Object && value.constructor.name !== "Object") {
|
3935
4003
|
return value.constructor.name;
|
3936
4004
|
}
|
@@ -3941,17 +4009,27 @@ const HistoryAction = ({ model, document }) => {
|
|
3941
4009
|
const { formatMessage } = useIntl();
|
3942
4010
|
const [{ query }] = useQueryParams();
|
3943
4011
|
const navigate = useNavigate();
|
4012
|
+
const { trackUsage } = useTracking();
|
4013
|
+
const { pathname } = useLocation();
|
3944
4014
|
const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
|
3945
4015
|
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
3946
4016
|
return null;
|
3947
4017
|
}
|
4018
|
+
const handleOnClick = () => {
|
4019
|
+
const destination = { pathname: "history", search: pluginsQueryParams };
|
4020
|
+
trackUsage("willNavigate", {
|
4021
|
+
from: pathname,
|
4022
|
+
to: `${pathname}/${destination.pathname}`
|
4023
|
+
});
|
4024
|
+
navigate(destination);
|
4025
|
+
};
|
3948
4026
|
return {
|
3949
4027
|
icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
|
3950
4028
|
label: formatMessage({
|
3951
4029
|
id: "content-manager.history.document-action",
|
3952
4030
|
defaultMessage: "Content History"
|
3953
4031
|
}),
|
3954
|
-
onClick:
|
4032
|
+
onClick: handleOnClick,
|
3955
4033
|
disabled: (
|
3956
4034
|
/**
|
3957
4035
|
* The user is creating a new document.
|
@@ -3973,6 +4051,7 @@ const HistoryAction = ({ model, document }) => {
|
|
3973
4051
|
};
|
3974
4052
|
};
|
3975
4053
|
HistoryAction.type = "history";
|
4054
|
+
HistoryAction.position = "header";
|
3976
4055
|
const historyAdmin = {
|
3977
4056
|
bootstrap(app) {
|
3978
4057
|
const { addDocumentAction } = app.getPlugin("content-manager").apis;
|
@@ -4035,10 +4114,18 @@ const previewApi = contentManagerApi.injectEndpoints({
|
|
4035
4114
|
})
|
4036
4115
|
});
|
4037
4116
|
const { useGetPreviewUrlQuery } = previewApi;
|
4117
|
+
const ConditionalTooltip = ({ isShown, label, children }) => {
|
4118
|
+
if (isShown) {
|
4119
|
+
return /* @__PURE__ */ jsx(Tooltip, { label, children });
|
4120
|
+
}
|
4121
|
+
return children;
|
4122
|
+
};
|
4038
4123
|
const PreviewSidePanel = ({ model, documentId, document }) => {
|
4039
4124
|
const { formatMessage } = useIntl();
|
4040
4125
|
const { trackUsage } = useTracking();
|
4126
|
+
const { pathname } = useLocation();
|
4041
4127
|
const [{ query }] = useQueryParams();
|
4128
|
+
const isModified = useForm("PreviewSidePanel", (state) => state.modified);
|
4042
4129
|
const { data, error } = useGetPreviewUrlQuery({
|
4043
4130
|
params: {
|
4044
4131
|
contentType: model
|
@@ -4052,33 +4139,43 @@ const PreviewSidePanel = ({ model, documentId, document }) => {
|
|
4052
4139
|
if (!data?.data?.url || error) {
|
4053
4140
|
return null;
|
4054
4141
|
}
|
4055
|
-
const
|
4056
|
-
|
4142
|
+
const trackNavigation = () => {
|
4143
|
+
const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
|
4144
|
+
trackUsage("willNavigate", { from: pathname, to: destinationPathname });
|
4057
4145
|
};
|
4058
4146
|
return {
|
4059
4147
|
title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
|
4060
|
-
content: /* @__PURE__ */ jsx(
|
4061
|
-
|
4148
|
+
content: /* @__PURE__ */ jsx(
|
4149
|
+
ConditionalTooltip,
|
4062
4150
|
{
|
4063
|
-
|
4064
|
-
|
4065
|
-
|
4066
|
-
|
4067
|
-
|
4068
|
-
children:
|
4069
|
-
|
4070
|
-
|
4071
|
-
|
4151
|
+
label: formatMessage({
|
4152
|
+
id: "content-manager.preview.panel.button-disabled-tooltip",
|
4153
|
+
defaultMessage: "Please save to open the preview"
|
4154
|
+
}),
|
4155
|
+
isShown: isModified,
|
4156
|
+
children: /* @__PURE__ */ jsx(Box, { cursor: "not-allowed", width: "100%", children: /* @__PURE__ */ jsx(
|
4157
|
+
Button,
|
4158
|
+
{
|
4159
|
+
variant: "tertiary",
|
4160
|
+
tag: Link,
|
4161
|
+
to: { pathname: "preview", search: stringify(query, { encode: false }) },
|
4162
|
+
onClick: trackNavigation,
|
4163
|
+
width: "100%",
|
4164
|
+
disabled: isModified,
|
4165
|
+
pointerEvents: isModified ? "none" : void 0,
|
4166
|
+
tabIndex: isModified ? -1 : void 0,
|
4167
|
+
children: formatMessage({
|
4168
|
+
id: "content-manager.preview.panel.button",
|
4169
|
+
defaultMessage: "Open preview"
|
4170
|
+
})
|
4171
|
+
}
|
4172
|
+
) })
|
4072
4173
|
}
|
4073
|
-
)
|
4174
|
+
)
|
4074
4175
|
};
|
4075
4176
|
};
|
4076
|
-
const FEATURE_ID = "preview";
|
4077
4177
|
const previewAdmin = {
|
4078
4178
|
bootstrap(app) {
|
4079
|
-
if (!window.strapi.future.isEnabled(FEATURE_ID)) {
|
4080
|
-
return;
|
4081
|
-
}
|
4082
4179
|
const contentManagerPluginApis = app.getPlugin("content-manager").apis;
|
4083
4180
|
contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
|
4084
4181
|
}
|
@@ -4102,7 +4199,7 @@ const index = {
|
|
4102
4199
|
app.router.addRoute({
|
4103
4200
|
path: "content-manager/*",
|
4104
4201
|
lazy: async () => {
|
4105
|
-
const { Layout } = await import("./layout-
|
4202
|
+
const { Layout } = await import("./layout-W3clJSCy.mjs");
|
4106
4203
|
return {
|
4107
4204
|
Component: Layout
|
4108
4205
|
};
|
@@ -4122,7 +4219,7 @@ const index = {
|
|
4122
4219
|
async registerTrads({ locales }) {
|
4123
4220
|
const importedTrads = await Promise.all(
|
4124
4221
|
locales.map((locale) => {
|
4125
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-CCEVvqGG.mjs"), "./translations/ca.json": () => import("./ca-5U32ON2v.mjs"), "./translations/cs.json": () => import("./cs-CM2aBUar.mjs"), "./translations/de.json": () => import("./de-C72KDNOl.mjs"), "./translations/en.json": () => import("./en-
|
4222
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-CCEVvqGG.mjs"), "./translations/ca.json": () => import("./ca-5U32ON2v.mjs"), "./translations/cs.json": () => import("./cs-CM2aBUar.mjs"), "./translations/de.json": () => import("./de-C72KDNOl.mjs"), "./translations/en.json": () => import("./en-CSxLmrh1.mjs"), "./translations/es.json": () => import("./es-D34tqjMw.mjs"), "./translations/eu.json": () => import("./eu-CdALomew.mjs"), "./translations/fr.json": () => import("./fr--pg5jUbt.mjs"), "./translations/gu.json": () => import("./gu-CNpaMDpH.mjs"), "./translations/hi.json": () => import("./hi-Dwvd04m3.mjs"), "./translations/hu.json": () => import("./hu-CeYvaaO0.mjs"), "./translations/id.json": () => import("./id-BtwA9WJT.mjs"), "./translations/it.json": () => import("./it-BrVPqaf1.mjs"), "./translations/ja.json": () => import("./ja-BHqhDq4V.mjs"), "./translations/ko.json": () => import("./ko-HVQRlfUI.mjs"), "./translations/ml.json": () => import("./ml-BihZwQit.mjs"), "./translations/ms.json": () => import("./ms-m_WjyWx7.mjs"), "./translations/nl.json": () => import("./nl-D4R9gHx5.mjs"), "./translations/pl.json": () => import("./pl-sbx9mSt_.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-C71iDxnh.mjs"), "./translations/pt.json": () => import("./pt-BsaFvS8-.mjs"), "./translations/ru.json": () => import("./ru-BE6A4Exp.mjs"), "./translations/sa.json": () => import("./sa-Dag0k-Z8.mjs"), "./translations/sk.json": () => import("./sk-BFg-R8qJ.mjs"), "./translations/sv.json": () => import("./sv-CUnfWGsh.mjs"), "./translations/th.json": () => import("./th-BqbI8lIT.mjs"), "./translations/tr.json": () => import("./tr-CgeK3wJM.mjs"), "./translations/uk.json": () => import("./uk-CR-zDhAY.mjs"), "./translations/vi.json": () => import("./vi-DUXIk_fw.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-BPQcRIyH.mjs"), "./translations/zh.json": () => import("./zh-BWZspA60.mjs") }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
|
4126
4223
|
return {
|
4127
4224
|
data: prefixPluginTranslations(data, PLUGIN_ID),
|
4128
4225
|
locale
|
@@ -4184,4 +4281,4 @@ export {
|
|
4184
4281
|
capitalise as y,
|
4185
4282
|
useUpdateContentTypeConfigurationMutation as z
|
4186
4283
|
};
|
4187
|
-
//# sourceMappingURL=index-
|
4284
|
+
//# sourceMappingURL=index-DqasUQ6Q.mjs.map
|