@strapi/content-manager 0.0.0-next.973df62640087231761ffaeb1c2b5d0d706346d8 → 0.0.0-next.a4bb06d54b493ab973659d0200e0e42937988850
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-BCCTDNe1.js → ComponentConfigurationPage-BLWQy8ru.js} +4 -5
- package/dist/_chunks/{ComponentConfigurationPage-BCCTDNe1.js.map → ComponentConfigurationPage-BLWQy8ru.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CsMNJw_0.mjs → ComponentConfigurationPage-CtIa3aa2.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-CsMNJw_0.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-BkEV5bFT.mjs → EditConfigurationPage-DsPR2DVk.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-BkEV5bFT.mjs.map → EditConfigurationPage-DsPR2DVk.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-DC1Bpfr1.js → EditConfigurationPage-RQkymxCy.js} +4 -5
- package/dist/_chunks/{EditConfigurationPage-DC1Bpfr1.js.map → EditConfigurationPage-RQkymxCy.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-B_Gr-2r6.js → EditViewPage-B-kExt8C.js} +4 -5
- package/dist/_chunks/{EditViewPage-B_Gr-2r6.js.map → EditViewPage-B-kExt8C.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-Bc97GGF4.mjs → EditViewPage-BPyVuPfM.mjs} +3 -3
- package/dist/_chunks/{EditViewPage-Bc97GGF4.mjs.map → EditViewPage-BPyVuPfM.mjs.map} +1 -1
- package/dist/_chunks/{Field-CqmTpeRt.js → Field-DPIsQRre.js} +155 -120
- package/dist/_chunks/Field-DPIsQRre.js.map +1 -0
- package/dist/_chunks/{Field-CIuPhh1m.mjs → Field-Dltnt1km.mjs} +153 -118
- 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-BRlXI9Ey.js → Form-BFi4MXMT.js} +5 -6
- package/dist/_chunks/{Form-BRlXI9Ey.js.map → Form-BFi4MXMT.js.map} +1 -1
- package/dist/_chunks/{Form-C22QTzNy.mjs → Form-C1IcWm1u.mjs} +3 -3
- package/dist/_chunks/{Form-C22QTzNy.mjs.map → Form-C1IcWm1u.mjs.map} +1 -1
- package/dist/_chunks/{History-nFKCaE9Y.mjs → History-04ChQ4pl.mjs} +37 -60
- package/dist/_chunks/History-04ChQ4pl.mjs.map +1 -0
- package/dist/_chunks/{History-mYpwx4Rh.js → History-wjcK4L0C.js} +37 -61
- package/dist/_chunks/History-wjcK4L0C.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-vjQ_UKxh.mjs → ListConfigurationPage-BYqPYLSU.mjs} +6 -5
- package/dist/_chunks/ListConfigurationPage-BYqPYLSU.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-CXwjTP1m.js → ListConfigurationPage-CRbxIC3J.js} +6 -6
- package/dist/_chunks/ListConfigurationPage-CRbxIC3J.js.map +1 -0
- package/dist/_chunks/{ListViewPage-DFq-_rFt.js → ListViewPage-D5NY9183.js} +51 -51
- package/dist/_chunks/ListViewPage-D5NY9183.js.map +1 -0
- package/dist/_chunks/{ListViewPage-Cf1E8F2V.mjs → ListViewPage-FU2LBuhl.mjs} +50 -49
- package/dist/_chunks/ListViewPage-FU2LBuhl.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-BUnPLdSC.js → NoContentTypePage-BgQVE_Qb.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BUnPLdSC.js.map → NoContentTypePage-BgQVE_Qb.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-CpFh_nLX.mjs → NoContentTypePage-DCKUkwb8.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-CpFh_nLX.mjs.map → NoContentTypePage-DCKUkwb8.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DlEaSUxx.js → NoPermissionsPage-C5jwn70o.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DlEaSUxx.js.map → NoPermissionsPage-C5jwn70o.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-GgY8yEd6.mjs → NoPermissionsPage-jqve7C8l.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-GgY8yEd6.mjs.map → NoPermissionsPage-jqve7C8l.mjs.map} +1 -1
- package/dist/_chunks/{Preview-BbRS-OKT.mjs → Preview-BMYN548c.mjs} +78 -72
- package/dist/_chunks/Preview-BMYN548c.mjs.map +1 -0
- package/dist/_chunks/{Preview-BPBvJI2O.js → Preview-DaOihysv.js} +77 -72
- package/dist/_chunks/Preview-DaOihysv.js.map +1 -0
- package/dist/_chunks/{Relations-C1HdkZyt.js → Relations-CTGM7Hv5.js} +7 -10
- package/dist/_chunks/{Relations-C1HdkZyt.js.map → Relations-CTGM7Hv5.js.map} +1 -1
- package/dist/_chunks/{Relations-CkIXcHbJ.mjs → Relations-gscPkxjF.mjs} +6 -8
- package/dist/_chunks/{Relations-CkIXcHbJ.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-BL9NYW88.js → index-Ca7YWlAA.js} +279 -165
- package/dist/_chunks/index-Ca7YWlAA.js.map +1 -0
- package/dist/_chunks/{index-C_KAytfk.mjs → index-DqasUQ6Q.mjs} +279 -164
- package/dist/_chunks/index-DqasUQ6Q.mjs.map +1 -0
- package/dist/_chunks/{layout-_a2iPFa6.js → layout-BW80JSCd.js} +5 -6
- package/dist/_chunks/{layout-_a2iPFa6.js.map → layout-BW80JSCd.js.map} +1 -1
- package/dist/_chunks/{layout-D6QIbKn7.mjs → layout-W3clJSCy.mjs} +4 -4
- package/dist/_chunks/{layout-D6QIbKn7.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-BIejV2xk.mjs → relations-BlDkoeWh.mjs} +2 -2
- package/dist/_chunks/{relations-BIejV2xk.mjs.map → relations-BlDkoeWh.mjs.map} +1 -1
- package/dist/_chunks/{relations-BX-k1SIX.js → relations-C9Usz9k5.js} +2 -2
- package/dist/_chunks/{relations-BX-k1SIX.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/services/preview.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-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/Field-CIuPhh1m.mjs.map +0 -1
- package/dist/_chunks/Field-CqmTpeRt.js.map +0 -1
- package/dist/_chunks/History-mYpwx4Rh.js.map +0 -1
- package/dist/_chunks/History-nFKCaE9Y.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-CXwjTP1m.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-vjQ_UKxh.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-Cf1E8F2V.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-DFq-_rFt.js.map +0 -1
- package/dist/_chunks/Preview-BPBvJI2O.js.map +0 -1
- package/dist/_chunks/Preview-BbRS-OKT.mjs.map +0 -1
- package/dist/_chunks/index-BL9NYW88.js.map +0 -1
- package/dist/_chunks/index-C_KAytfk.mjs.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();
|
@@ -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,11 +1952,13 @@ 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",
|
1960
|
+
isVariantDanger: action.variant === "danger",
|
1961
|
+
isDisabled: action.disabled,
|
1925
1962
|
children: /* @__PURE__ */ jsx(Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxs(
|
1926
1963
|
Flex,
|
1927
1964
|
{
|
@@ -2077,6 +2114,7 @@ const PublishAction$1 = ({
|
|
2077
2114
|
const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
2078
2115
|
const isListView = useMatch(LIST_PATH) !== null;
|
2079
2116
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2117
|
+
const { id } = useParams();
|
2080
2118
|
const { formatMessage } = useIntl();
|
2081
2119
|
const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
|
2082
2120
|
const { publish } = useDocumentActions();
|
@@ -2179,10 +2217,12 @@ const PublishAction$1 = ({
|
|
2179
2217
|
transformData(formValues)
|
2180
2218
|
);
|
2181
2219
|
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2182
|
-
|
2183
|
-
|
2184
|
-
|
2185
|
-
|
2220
|
+
if (id === "create") {
|
2221
|
+
navigate({
|
2222
|
+
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
2223
|
+
search: rawQuery
|
2224
|
+
});
|
2225
|
+
}
|
2186
2226
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2187
2227
|
setErrors(formatValidationErrors(res.error));
|
2188
2228
|
}
|
@@ -2235,6 +2275,7 @@ const PublishAction$1 = ({
|
|
2235
2275
|
};
|
2236
2276
|
};
|
2237
2277
|
PublishAction$1.type = "publish";
|
2278
|
+
PublishAction$1.position = "panel";
|
2238
2279
|
const UpdateAction = ({
|
2239
2280
|
activeTab,
|
2240
2281
|
documentId,
|
@@ -2257,96 +2298,134 @@ const UpdateAction = ({
|
|
2257
2298
|
const validate = useForm("UpdateAction", (state) => state.validate);
|
2258
2299
|
const setErrors = useForm("UpdateAction", (state) => state.setErrors);
|
2259
2300
|
const resetForm = useForm("PublishAction", ({ resetForm: resetForm2 }) => resetForm2);
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2265
|
-
|
2266
|
-
|
2267
|
-
|
2268
|
-
|
2269
|
-
|
2270
|
-
|
2271
|
-
|
2272
|
-
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2276
|
-
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
|
+
})
|
2277
2317
|
});
|
2278
|
-
|
2279
|
-
|
2280
|
-
|
2281
|
-
|
2282
|
-
|
2283
|
-
|
2284
|
-
|
2285
|
-
|
2286
|
-
|
2287
|
-
|
2288
|
-
|
2289
|
-
|
2290
|
-
|
2291
|
-
model,
|
2292
|
-
documentId: cloneMatch.params.origin,
|
2293
|
-
params
|
2294
|
-
},
|
2295
|
-
transformData(document)
|
2296
|
-
);
|
2297
|
-
if ("data" in res) {
|
2298
|
-
navigate(
|
2299
|
-
{
|
2300
|
-
pathname: `../${res.data.documentId}`,
|
2301
|
-
search: rawQuery
|
2302
|
-
},
|
2303
|
-
{ relative: "path" }
|
2304
|
-
);
|
2305
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2306
|
-
setErrors(formatValidationErrors(res.error));
|
2307
|
-
}
|
2308
|
-
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2309
|
-
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(
|
2310
2331
|
{
|
2311
|
-
|
2312
|
-
|
2313
|
-
documentId,
|
2314
|
-
params
|
2332
|
+
pathname: `../${res.data.documentId}`,
|
2333
|
+
search: rawQuery
|
2315
2334
|
},
|
2316
|
-
|
2335
|
+
{ relative: "path" }
|
2317
2336
|
);
|
2318
|
-
|
2319
|
-
|
2320
|
-
|
2321
|
-
|
2322
|
-
|
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));
|
2323
2352
|
} else {
|
2324
|
-
|
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(
|
2325
2365
|
{
|
2326
|
-
|
2327
|
-
|
2366
|
+
pathname: `../${res.data.documentId}`,
|
2367
|
+
search: rawQuery
|
2328
2368
|
},
|
2329
|
-
|
2369
|
+
{ replace: true, relative: "path" }
|
2330
2370
|
);
|
2331
|
-
|
2332
|
-
|
2333
|
-
{
|
2334
|
-
pathname: `../${res.data.documentId}`,
|
2335
|
-
search: rawQuery
|
2336
|
-
},
|
2337
|
-
{ replace: true, relative: "path" }
|
2338
|
-
);
|
2339
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2340
|
-
setErrors(formatValidationErrors(res.error));
|
2341
|
-
}
|
2371
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2372
|
+
setErrors(formatValidationErrors(res.error));
|
2342
2373
|
}
|
2343
|
-
} finally {
|
2344
|
-
setSubmitting(false);
|
2345
2374
|
}
|
2375
|
+
} finally {
|
2376
|
+
setSubmitting(false);
|
2346
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
|
2347
2425
|
};
|
2348
2426
|
};
|
2349
2427
|
UpdateAction.type = "update";
|
2428
|
+
UpdateAction.position = "panel";
|
2350
2429
|
const UNPUBLISH_DRAFT_OPTIONS = {
|
2351
2430
|
KEEP: "keep",
|
2352
2431
|
DISCARD: "discard"
|
@@ -2469,6 +2548,7 @@ const UnpublishAction$1 = ({
|
|
2469
2548
|
};
|
2470
2549
|
};
|
2471
2550
|
UnpublishAction$1.type = "unpublish";
|
2551
|
+
UnpublishAction$1.position = "panel";
|
2472
2552
|
const DiscardAction = ({
|
2473
2553
|
activeTab,
|
2474
2554
|
documentId,
|
@@ -2519,6 +2599,7 @@ const DiscardAction = ({
|
|
2519
2599
|
};
|
2520
2600
|
};
|
2521
2601
|
DiscardAction.type = "discard";
|
2602
|
+
DiscardAction.position = "panel";
|
2522
2603
|
const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
|
2523
2604
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
2524
2605
|
const RelativeTime = React.forwardRef(
|
@@ -2565,10 +2646,10 @@ const getDisplayName = ({
|
|
2565
2646
|
return email ?? "";
|
2566
2647
|
};
|
2567
2648
|
const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
2568
|
-
const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
2649
|
+
const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
|
2569
2650
|
const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
|
2570
2651
|
const { formatMessage } = useIntl();
|
2571
|
-
return /* @__PURE__ */ jsx(Status, { ...restProps, size
|
2652
|
+
return /* @__PURE__ */ jsx(Status, { ...restProps, size, variant: statusVariant, children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: formatMessage({
|
2572
2653
|
id: `content-manager.containers.List.${status}`,
|
2573
2654
|
defaultMessage: capitalise(status)
|
2574
2655
|
}) }) });
|
@@ -2576,12 +2657,18 @@ const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
|
2576
2657
|
const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
2577
2658
|
const { formatMessage } = useIntl();
|
2578
2659
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2660
|
+
const params = useParams();
|
2579
2661
|
const title = isCreating ? formatMessage({
|
2580
2662
|
id: "content-manager.containers.edit.title.new",
|
2581
2663
|
defaultMessage: "Create an entry"
|
2582
2664
|
}) : documentTitle;
|
2583
2665
|
return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
|
2584
|
-
/* @__PURE__ */ jsx(
|
2666
|
+
/* @__PURE__ */ jsx(
|
2667
|
+
BackButton,
|
2668
|
+
{
|
2669
|
+
fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
|
2670
|
+
}
|
2671
|
+
),
|
2585
2672
|
/* @__PURE__ */ jsxs(Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
|
2586
2673
|
/* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
|
2587
2674
|
/* @__PURE__ */ jsx(HeaderToolbar, {})
|
@@ -2632,7 +2719,7 @@ const HeaderToolbar = () => {
|
|
2632
2719
|
meta: isCloning ? void 0 : meta,
|
2633
2720
|
collectionType
|
2634
2721
|
},
|
2635
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
2722
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("header"),
|
2636
2723
|
children: (actions2) => {
|
2637
2724
|
const headerActions = actions2.filter((action) => {
|
2638
2725
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -2840,6 +2927,7 @@ const ConfigureTheViewAction = ({ collectionType, model }) => {
|
|
2840
2927
|
};
|
2841
2928
|
};
|
2842
2929
|
ConfigureTheViewAction.type = "configure-the-view";
|
2930
|
+
ConfigureTheViewAction.position = "header";
|
2843
2931
|
const EditTheModelAction = ({ model }) => {
|
2844
2932
|
const navigate = useNavigate();
|
2845
2933
|
const { formatMessage } = useIntl();
|
@@ -2856,6 +2944,7 @@ const EditTheModelAction = ({ model }) => {
|
|
2856
2944
|
};
|
2857
2945
|
};
|
2858
2946
|
EditTheModelAction.type = "edit-the-model";
|
2947
|
+
EditTheModelAction.position = "header";
|
2859
2948
|
const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
2860
2949
|
const navigate = useNavigate();
|
2861
2950
|
const { formatMessage } = useIntl();
|
@@ -2929,6 +3018,7 @@ const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
|
2929
3018
|
};
|
2930
3019
|
};
|
2931
3020
|
DeleteAction$1.type = "delete";
|
3021
|
+
DeleteAction$1.position = ["header", "table-row"];
|
2932
3022
|
const DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction$1];
|
2933
3023
|
const Panels = () => {
|
2934
3024
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
@@ -2991,7 +3081,7 @@ const ActionsPanelContent = () => {
|
|
2991
3081
|
DescriptionComponentRenderer,
|
2992
3082
|
{
|
2993
3083
|
props,
|
2994
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
3084
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("panel"),
|
2995
3085
|
children: (actions2) => /* @__PURE__ */ jsx(DocumentActions, { actions: actions2 })
|
2996
3086
|
}
|
2997
3087
|
),
|
@@ -3268,18 +3358,10 @@ const SelectedEntriesTableContent = ({
|
|
3268
3358
|
search: row.locale && `?plugins[i18n][locale]=${row.locale}`
|
3269
3359
|
},
|
3270
3360
|
state: { from: pathname },
|
3271
|
-
label: formatMessage(
|
3272
|
-
|
3273
|
-
|
3274
|
-
|
3275
|
-
{
|
3276
|
-
id: "content-manager.components.ListViewHelperPluginTable.row-line",
|
3277
|
-
defaultMessage: "item line {number}"
|
3278
|
-
},
|
3279
|
-
{ number: index2 + 1 }
|
3280
|
-
)
|
3281
|
-
}
|
3282
|
-
),
|
3361
|
+
label: formatMessage({
|
3362
|
+
id: "content-manager.bulk-publish.edit",
|
3363
|
+
defaultMessage: "Edit"
|
3364
|
+
}),
|
3283
3365
|
target: "_blank",
|
3284
3366
|
marginLeft: "auto",
|
3285
3367
|
variant: "ghost",
|
@@ -3453,8 +3535,7 @@ const PublishAction = ({ documents, model }) => {
|
|
3453
3535
|
const refetchList = () => {
|
3454
3536
|
contentManagerApi.util.invalidateTags([{ type: "Document", id: `${model}_LIST` }]);
|
3455
3537
|
};
|
3456
|
-
if (!showPublishButton)
|
3457
|
-
return null;
|
3538
|
+
if (!showPublishButton) return null;
|
3458
3539
|
return {
|
3459
3540
|
actionType: "publish",
|
3460
3541
|
variant: "tertiary",
|
@@ -3522,8 +3603,7 @@ const DeleteAction = ({ documents, model }) => {
|
|
3522
3603
|
selectRow([]);
|
3523
3604
|
}
|
3524
3605
|
};
|
3525
|
-
if (!hasDeletePermission)
|
3526
|
-
return null;
|
3606
|
+
if (!hasDeletePermission) return null;
|
3527
3607
|
return {
|
3528
3608
|
variant: "danger-light",
|
3529
3609
|
label: formatMessage({ id: "global.delete", defaultMessage: "Delete" }),
|
@@ -3572,8 +3652,7 @@ const UnpublishAction = ({ documents, model }) => {
|
|
3572
3652
|
}
|
3573
3653
|
};
|
3574
3654
|
const showUnpublishButton = hasDraftAndPublishEnabled && hasPublishPermission && documents.some((entry) => entry.status === "published" || entry.status === "modified");
|
3575
|
-
if (!showUnpublishButton)
|
3576
|
-
return null;
|
3655
|
+
if (!showUnpublishButton) return null;
|
3577
3656
|
return {
|
3578
3657
|
variant: "tertiary",
|
3579
3658
|
label: formatMessage({ id: "app.utils.unpublish", defaultMessage: "Unpublish" }),
|
@@ -3678,7 +3757,7 @@ const TableActions = ({ document }) => {
|
|
3678
3757
|
DescriptionComponentRenderer,
|
3679
3758
|
{
|
3680
3759
|
props,
|
3681
|
-
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"),
|
3682
3761
|
children: (actions2) => {
|
3683
3762
|
const tableRowActions = actions2.filter((action) => {
|
3684
3763
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -3737,6 +3816,7 @@ const EditAction = ({ documentId }) => {
|
|
3737
3816
|
};
|
3738
3817
|
};
|
3739
3818
|
EditAction.type = "edit";
|
3819
|
+
EditAction.position = "table-row";
|
3740
3820
|
const StyledPencil = styled(Pencil)`
|
3741
3821
|
path {
|
3742
3822
|
fill: currentColor;
|
@@ -3813,6 +3893,7 @@ const CloneAction = ({ model, documentId }) => {
|
|
3813
3893
|
};
|
3814
3894
|
};
|
3815
3895
|
CloneAction.type = "clone";
|
3896
|
+
CloneAction.position = "table-row";
|
3816
3897
|
const StyledDuplicate = styled(Duplicate)`
|
3817
3898
|
path {
|
3818
3899
|
fill: currentColor;
|
@@ -3899,7 +3980,14 @@ class ContentManagerPlugin {
|
|
3899
3980
|
addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),
|
3900
3981
|
addEditViewSidePanel: this.addEditViewSidePanel.bind(this),
|
3901
3982
|
getBulkActions: () => this.bulkActions,
|
3902
|
-
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
|
+
},
|
3903
3991
|
getEditViewSidePanels: () => this.editViewSidePanels,
|
3904
3992
|
getHeaderActions: () => this.headerActions
|
3905
3993
|
}
|
@@ -3909,10 +3997,8 @@ class ContentManagerPlugin {
|
|
3909
3997
|
const getPrintableType = (value) => {
|
3910
3998
|
const nativeType = typeof value;
|
3911
3999
|
if (nativeType === "object") {
|
3912
|
-
if (value === null)
|
3913
|
-
|
3914
|
-
if (Array.isArray(value))
|
3915
|
-
return "array";
|
4000
|
+
if (value === null) return "null";
|
4001
|
+
if (Array.isArray(value)) return "array";
|
3916
4002
|
if (value instanceof Object && value.constructor.name !== "Object") {
|
3917
4003
|
return value.constructor.name;
|
3918
4004
|
}
|
@@ -3923,17 +4009,27 @@ const HistoryAction = ({ model, document }) => {
|
|
3923
4009
|
const { formatMessage } = useIntl();
|
3924
4010
|
const [{ query }] = useQueryParams();
|
3925
4011
|
const navigate = useNavigate();
|
4012
|
+
const { trackUsage } = useTracking();
|
4013
|
+
const { pathname } = useLocation();
|
3926
4014
|
const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
|
3927
4015
|
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
3928
4016
|
return null;
|
3929
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
|
+
};
|
3930
4026
|
return {
|
3931
4027
|
icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
|
3932
4028
|
label: formatMessage({
|
3933
4029
|
id: "content-manager.history.document-action",
|
3934
4030
|
defaultMessage: "Content History"
|
3935
4031
|
}),
|
3936
|
-
onClick:
|
4032
|
+
onClick: handleOnClick,
|
3937
4033
|
disabled: (
|
3938
4034
|
/**
|
3939
4035
|
* The user is creating a new document.
|
@@ -3955,6 +4051,7 @@ const HistoryAction = ({ model, document }) => {
|
|
3955
4051
|
};
|
3956
4052
|
};
|
3957
4053
|
HistoryAction.type = "history";
|
4054
|
+
HistoryAction.position = "header";
|
3958
4055
|
const historyAdmin = {
|
3959
4056
|
bootstrap(app) {
|
3960
4057
|
const { addDocumentAction } = app.getPlugin("content-manager").apis;
|
@@ -4017,10 +4114,18 @@ const previewApi = contentManagerApi.injectEndpoints({
|
|
4017
4114
|
})
|
4018
4115
|
});
|
4019
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
|
+
};
|
4020
4123
|
const PreviewSidePanel = ({ model, documentId, document }) => {
|
4021
4124
|
const { formatMessage } = useIntl();
|
4022
4125
|
const { trackUsage } = useTracking();
|
4126
|
+
const { pathname } = useLocation();
|
4023
4127
|
const [{ query }] = useQueryParams();
|
4128
|
+
const isModified = useForm("PreviewSidePanel", (state) => state.modified);
|
4024
4129
|
const { data, error } = useGetPreviewUrlQuery({
|
4025
4130
|
params: {
|
4026
4131
|
contentType: model
|
@@ -4034,33 +4139,43 @@ const PreviewSidePanel = ({ model, documentId, document }) => {
|
|
4034
4139
|
if (!data?.data?.url || error) {
|
4035
4140
|
return null;
|
4036
4141
|
}
|
4037
|
-
const
|
4038
|
-
|
4142
|
+
const trackNavigation = () => {
|
4143
|
+
const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
|
4144
|
+
trackUsage("willNavigate", { from: pathname, to: destinationPathname });
|
4039
4145
|
};
|
4040
4146
|
return {
|
4041
4147
|
title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
|
4042
|
-
content: /* @__PURE__ */ jsx(
|
4043
|
-
|
4148
|
+
content: /* @__PURE__ */ jsx(
|
4149
|
+
ConditionalTooltip,
|
4044
4150
|
{
|
4045
|
-
|
4046
|
-
|
4047
|
-
|
4048
|
-
|
4049
|
-
|
4050
|
-
children:
|
4051
|
-
|
4052
|
-
|
4053
|
-
|
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
|
+
) })
|
4054
4173
|
}
|
4055
|
-
)
|
4174
|
+
)
|
4056
4175
|
};
|
4057
4176
|
};
|
4058
|
-
const FEATURE_ID = "preview";
|
4059
4177
|
const previewAdmin = {
|
4060
4178
|
bootstrap(app) {
|
4061
|
-
if (!window.strapi.future.isEnabled(FEATURE_ID)) {
|
4062
|
-
return;
|
4063
|
-
}
|
4064
4179
|
const contentManagerPluginApis = app.getPlugin("content-manager").apis;
|
4065
4180
|
contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
|
4066
4181
|
}
|
@@ -4084,7 +4199,7 @@ const index = {
|
|
4084
4199
|
app.router.addRoute({
|
4085
4200
|
path: "content-manager/*",
|
4086
4201
|
lazy: async () => {
|
4087
|
-
const { Layout } = await import("./layout-
|
4202
|
+
const { Layout } = await import("./layout-W3clJSCy.mjs");
|
4088
4203
|
return {
|
4089
4204
|
Component: Layout
|
4090
4205
|
};
|
@@ -4104,7 +4219,7 @@ const index = {
|
|
4104
4219
|
async registerTrads({ locales }) {
|
4105
4220
|
const importedTrads = await Promise.all(
|
4106
4221
|
locales.map((locale) => {
|
4107
|
-
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 }) => {
|
4108
4223
|
return {
|
4109
4224
|
data: prefixPluginTranslations(data, PLUGIN_ID),
|
4110
4225
|
locale
|
@@ -4166,4 +4281,4 @@ export {
|
|
4166
4281
|
capitalise as y,
|
4167
4282
|
useUpdateContentTypeConfigurationMutation as z
|
4168
4283
|
};
|
4169
|
-
//# sourceMappingURL=index-
|
4284
|
+
//# sourceMappingURL=index-DqasUQ6Q.mjs.map
|