@strapi/content-manager 0.0.0-experimental.fdacf4285d1cada9d94ab4dcd756c5362cba1b54 → 0.0.0-next.008421e40e4f0fb98aab7504cea5a2b8ef7099d5
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-CVfoYQ9p.mjs → ComponentConfigurationPage-9_4yUE9L.mjs} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-CVfoYQ9p.mjs.map → ComponentConfigurationPage-9_4yUE9L.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CI7K072v.js → ComponentConfigurationPage-DBSh-kET.js} +5 -6
- package/dist/_chunks/{ComponentConfigurationPage-CI7K072v.js.map → ComponentConfigurationPage-DBSh-kET.js.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-CtnhGgIx.js → EditConfigurationPage-Bl_U2JgH.js} +5 -6
- package/dist/_chunks/{EditConfigurationPage-CtnhGgIx.js.map → EditConfigurationPage-Bl_U2JgH.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-Cg1Esg_N.mjs → EditConfigurationPage-COe6hjPC.mjs} +4 -4
- package/dist/_chunks/{EditConfigurationPage-Cg1Esg_N.mjs.map → EditConfigurationPage-COe6hjPC.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-MURPhGdY.js → EditViewPage-D4yFJET6.js} +15 -57
- package/dist/_chunks/EditViewPage-D4yFJET6.js.map +1 -0
- package/dist/_chunks/{EditViewPage-C_iuCG0Z.mjs → EditViewPage-DrmVmYN0.mjs} +13 -54
- package/dist/_chunks/EditViewPage-DrmVmYN0.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-D1cecnu3.js → Form-C4rSaGsz.js} +5 -6
- package/dist/_chunks/{Form-D1cecnu3.js.map → Form-C4rSaGsz.js.map} +1 -1
- package/dist/_chunks/{Form-oLrvgmvM.mjs → Form-DamaxNpG.mjs} +3 -3
- package/dist/_chunks/{Form-oLrvgmvM.mjs.map → Form-DamaxNpG.mjs.map} +1 -1
- package/dist/_chunks/{History-5VbTZWYl.mjs → History-D1PreDSY.mjs} +51 -97
- package/dist/_chunks/History-D1PreDSY.mjs.map +1 -0
- package/dist/_chunks/{History-DJpjbGJZ.js → History-DTm8UCCQ.js} +62 -109
- package/dist/_chunks/History-DTm8UCCQ.js.map +1 -0
- package/dist/_chunks/{Field-D1c7z74Q.js → Input-B7sapvBG.js} +1258 -1236
- package/dist/_chunks/Input-B7sapvBG.js.map +1 -0
- package/dist/_chunks/{Field-55cGR9kd.mjs → Input-CZ1YvjHR.mjs} +1333 -1311
- package/dist/_chunks/Input-CZ1YvjHR.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-BNs0g27c.mjs → ListConfigurationPage-Bbi32isk.mjs} +7 -6
- package/dist/_chunks/ListConfigurationPage-Bbi32isk.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-DylRESaU.js → ListConfigurationPage-ysFMjKI3.js} +7 -7
- package/dist/_chunks/ListConfigurationPage-ysFMjKI3.js.map +1 -0
- package/dist/_chunks/{ListViewPage-DelIyZ5D.mjs → ListViewPage-Bud_jBDQ.mjs} +67 -41
- package/dist/_chunks/ListViewPage-Bud_jBDQ.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-MbdmfkXa.js → ListViewPage-DTuuxU3n.js} +73 -48
- package/dist/_chunks/ListViewPage-DTuuxU3n.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-BDQ1MdsC.js → NoContentTypePage-CL7VVeYs.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BDQ1MdsC.js.map → NoContentTypePage-CL7VVeYs.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-CoXa1X8-.mjs → NoContentTypePage-DVhkugsf.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-CoXa1X8-.mjs.map → NoContentTypePage-DVhkugsf.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-GgkDXRq3.mjs → NoPermissionsPage-CMdM-dCo.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-GgkDXRq3.mjs.map → NoPermissionsPage-CMdM-dCo.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-CnnuMd2Y.js → NoPermissionsPage-v7I599vC.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-CnnuMd2Y.js.map → NoPermissionsPage-v7I599vC.js.map} +1 -1
- package/dist/_chunks/Preview-BNuU0SuQ.mjs +287 -0
- package/dist/_chunks/Preview-BNuU0SuQ.mjs.map +1 -0
- package/dist/_chunks/Preview-Cxq-uI6D.js +305 -0
- package/dist/_chunks/Preview-Cxq-uI6D.js.map +1 -0
- package/dist/_chunks/{Relations-BKnC9peY.mjs → Relations-C2Ahkrdg.mjs} +47 -22
- package/dist/_chunks/Relations-C2Ahkrdg.mjs.map +1 -0
- package/dist/_chunks/{Relations-DVeWgAT4.js → Relations-CWS79QQn.js} +47 -23
- package/dist/_chunks/Relations-CWS79QQn.js.map +1 -0
- package/dist/_chunks/{en-Bm0D0IWz.js → en-BR48D_RH.js} +23 -4
- package/dist/_chunks/{en-Bm0D0IWz.js.map → en-BR48D_RH.js.map} +1 -1
- package/dist/_chunks/{en-DKV44jRb.mjs → en-D65uIF6Y.mjs} +23 -4
- package/dist/_chunks/{en-DKV44jRb.mjs.map → en-D65uIF6Y.mjs.map} +1 -1
- package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
- package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
- package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
- package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
- package/dist/_chunks/{fr-B7kGGg3E.js → fr-C43IbhA_.js} +16 -3
- package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-C43IbhA_.js.map} +1 -1
- package/dist/_chunks/{fr-CD9VFbPM.mjs → fr-DBseuRuB.mjs} +16 -3
- package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr-DBseuRuB.mjs.map} +1 -1
- package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
- package/dist/_chunks/{index-B9u01WiI.js → index-DQsvBb_N.js} +629 -238
- package/dist/_chunks/index-DQsvBb_N.js.map +1 -0
- package/dist/_chunks/{index-jwACjpe1.mjs → index-ZKrsjv-2.mjs} +645 -254
- package/dist/_chunks/index-ZKrsjv-2.mjs.map +1 -0
- package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
- package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
- package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
- package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
- package/dist/_chunks/{layout-DDtbDqUd.js → layout-Cl0NhlQB.js} +5 -6
- package/dist/_chunks/{layout-DDtbDqUd.js.map → layout-Cl0NhlQB.js.map} +1 -1
- package/dist/_chunks/{layout-D51YDRJV.mjs → layout-fQk1rMk9.mjs} +4 -4
- package/dist/_chunks/{layout-D51YDRJV.mjs.map → layout-fQk1rMk9.mjs.map} +1 -1
- package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
- package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
- package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
- package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
- package/dist/_chunks/{relations-DtsF4GJw.js → relations-BRfBxVbX.js} +6 -7
- package/dist/_chunks/relations-BRfBxVbX.js.map +1 -0
- package/dist/_chunks/{relations-Bgc8jKKt.mjs → relations-BakOFl_1.mjs} +6 -7
- package/dist/_chunks/relations-BakOFl_1.mjs.map +1 -0
- 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/_chunks/{useDebounce-DmuSJIF3.mjs → usePrev-CZGy2Vjf.mjs} +11 -11
- package/dist/_chunks/usePrev-CZGy2Vjf.mjs.map +1 -0
- package/dist/_chunks/{useDebounce-CtcjDB3L.js → usePrev-D5J_2fEu.js} +8 -8
- package/dist/_chunks/usePrev-D5J_2fEu.js.map +1 -0
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +6 -5
- 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/hooks/useDocument.d.ts +19 -2
- package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -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/pages/EditView/components/FormLayout.d.ts +27 -0
- package/dist/admin/src/pages/EditView/utils/data.d.ts +1 -0
- package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
- package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
- package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
- package/dist/admin/src/preview/index.d.ts +4 -0
- package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
- package/dist/admin/src/preview/routes.d.ts +3 -0
- package/dist/admin/src/preview/services/preview.d.ts +3 -0
- 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 +560 -317
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +561 -317
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +16 -1
- 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/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +6 -11
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +7 -6
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/index.d.ts +2 -0
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/preview.d.ts +13 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
- package/dist/server/src/preview/index.d.ts +4 -0
- package/dist/server/src/preview/index.d.ts.map +1 -0
- package/dist/server/src/preview/routes/index.d.ts +8 -0
- package/dist/server/src/preview/routes/index.d.ts.map +1 -0
- package/dist/server/src/preview/routes/preview.d.ts +4 -0
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
- package/dist/server/src/preview/services/index.d.ts +16 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts +32 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview.d.ts +12 -0
- package/dist/server/src/preview/services/preview.d.ts.map +1 -0
- package/dist/server/src/preview/utils.d.ts +19 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -0
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.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 +12 -10
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +7 -6
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/shared/contracts/index.d.ts +1 -0
- package/dist/shared/contracts/index.d.ts.map +1 -1
- package/dist/shared/contracts/preview.d.ts +27 -0
- package/dist/shared/contracts/preview.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +4 -0
- package/dist/shared/index.mjs.map +1 -1
- package/package.json +13 -12
- package/dist/_chunks/EditViewPage-C_iuCG0Z.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-MURPhGdY.js.map +0 -1
- package/dist/_chunks/Field-55cGR9kd.mjs.map +0 -1
- package/dist/_chunks/Field-D1c7z74Q.js.map +0 -1
- package/dist/_chunks/History-5VbTZWYl.mjs.map +0 -1
- package/dist/_chunks/History-DJpjbGJZ.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-BNs0g27c.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-DylRESaU.js.map +0 -1
- package/dist/_chunks/ListViewPage-DelIyZ5D.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-MbdmfkXa.js.map +0 -1
- package/dist/_chunks/Relations-BKnC9peY.mjs.map +0 -1
- package/dist/_chunks/Relations-DVeWgAT4.js.map +0 -1
- package/dist/_chunks/index-B9u01WiI.js.map +0 -1
- package/dist/_chunks/index-jwACjpe1.mjs.map +0 -1
- package/dist/_chunks/relations-Bgc8jKKt.mjs.map +0 -1
- package/dist/_chunks/relations-DtsF4GJw.js.map +0 -1
- package/dist/_chunks/useDebounce-CtcjDB3L.js.map +0 -1
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +0 -1
@@ -1,25 +1,34 @@
|
|
1
|
-
import { More, Cross, WarningCircle, ListPlus, Pencil, Trash, Check,
|
1
|
+
import { More, Cross, WarningCircle, ListPlus, Pencil, Trash, Check, CheckCircle, ArrowsCounterClockwise, CrossCircle, ChevronRight, Duplicate, ClockCounterClockwise, Feather } from "@strapi/icons";
|
2
2
|
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, RawTable, Loader, Tbody, Tr, Td, Tooltip, LinkButton } from "@strapi/design-system";
|
7
|
+
import mapValues from "lodash/fp/mapValues";
|
7
8
|
import { useIntl } from "react-intl";
|
8
9
|
import { useParams, useNavigate, Navigate, useMatch, useLocation, Link, NavLink } from "react-router-dom";
|
10
|
+
import { styled } from "styled-components";
|
9
11
|
import * as yup from "yup";
|
10
12
|
import { ValidationError } from "yup";
|
13
|
+
import { generateNKeysBetween } from "fractional-indexing";
|
11
14
|
import pipe from "lodash/fp/pipe";
|
12
|
-
import { intervalToDuration, isPast } from "date-fns";
|
13
|
-
import { styled } from "styled-components";
|
14
15
|
import { stringify } from "qs";
|
16
|
+
import { intervalToDuration, isPast } from "date-fns";
|
15
17
|
import { createSlice, combineReducers } from "@reduxjs/toolkit";
|
16
|
-
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
18
|
+
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
17
19
|
const v = glob[path];
|
18
20
|
if (v) {
|
19
21
|
return typeof v === "function" ? v() : Promise.resolve(v);
|
20
22
|
}
|
21
23
|
return new Promise((_, reject) => {
|
22
|
-
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
24
|
+
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
25
|
+
reject.bind(
|
26
|
+
null,
|
27
|
+
new Error(
|
28
|
+
"Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
|
29
|
+
)
|
30
|
+
)
|
31
|
+
);
|
23
32
|
});
|
24
33
|
};
|
25
34
|
const PLUGIN_ID = "content-manager";
|
@@ -158,6 +167,113 @@ const extractAndDedupeFields = (permissions = []) => permissions.flatMap((permis
|
|
158
167
|
(field, index2, arr) => arr.indexOf(field) === index2 && typeof field === "string"
|
159
168
|
);
|
160
169
|
const removeNumericalStrings = (arr) => arr.filter((item) => isNaN(Number(item)));
|
170
|
+
const BLOCK_LIST_ATTRIBUTE_KEYS = ["__component", "__temp_key__"];
|
171
|
+
const traverseData = (predicate, transform) => (schema, components = {}) => (data = {}) => {
|
172
|
+
const traverse = (datum, attributes) => {
|
173
|
+
return Object.entries(datum).reduce((acc, [key, value]) => {
|
174
|
+
const attribute = attributes[key];
|
175
|
+
if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === void 0) {
|
176
|
+
acc[key] = value;
|
177
|
+
return acc;
|
178
|
+
}
|
179
|
+
if (attribute.type === "component") {
|
180
|
+
if (attribute.repeatable) {
|
181
|
+
const componentValue = predicate(attribute, value) ? transform(value, attribute) : value;
|
182
|
+
acc[key] = componentValue.map(
|
183
|
+
(componentData) => traverse(componentData, components[attribute.component]?.attributes ?? {})
|
184
|
+
);
|
185
|
+
} else {
|
186
|
+
const componentValue = predicate(attribute, value) ? transform(value, attribute) : value;
|
187
|
+
acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});
|
188
|
+
}
|
189
|
+
} else if (attribute.type === "dynamiczone") {
|
190
|
+
const dynamicZoneValue = predicate(attribute, value) ? transform(value, attribute) : value;
|
191
|
+
acc[key] = dynamicZoneValue.map(
|
192
|
+
(componentData) => traverse(componentData, components[componentData.__component]?.attributes ?? {})
|
193
|
+
);
|
194
|
+
} else if (predicate(attribute, value)) {
|
195
|
+
acc[key] = transform(value, attribute);
|
196
|
+
} else {
|
197
|
+
acc[key] = value;
|
198
|
+
}
|
199
|
+
return acc;
|
200
|
+
}, {});
|
201
|
+
};
|
202
|
+
return traverse(data, schema.attributes);
|
203
|
+
};
|
204
|
+
const removeProhibitedFields = (prohibitedFields) => traverseData(
|
205
|
+
(attribute) => prohibitedFields.includes(attribute.type),
|
206
|
+
() => ""
|
207
|
+
);
|
208
|
+
const prepareRelations = traverseData(
|
209
|
+
(attribute) => attribute.type === "relation",
|
210
|
+
() => ({
|
211
|
+
connect: [],
|
212
|
+
disconnect: []
|
213
|
+
})
|
214
|
+
);
|
215
|
+
const prepareTempKeys = traverseData(
|
216
|
+
(attribute) => attribute.type === "component" && attribute.repeatable || attribute.type === "dynamiczone",
|
217
|
+
(data) => {
|
218
|
+
if (Array.isArray(data) && data.length > 0) {
|
219
|
+
const keys = generateNKeysBetween(void 0, void 0, data.length);
|
220
|
+
return data.map((datum, index2) => ({
|
221
|
+
...datum,
|
222
|
+
__temp_key__: keys[index2]
|
223
|
+
}));
|
224
|
+
}
|
225
|
+
return data;
|
226
|
+
}
|
227
|
+
);
|
228
|
+
const removeFieldsThatDontExistOnSchema = (schema) => (data) => {
|
229
|
+
const schemaKeys = Object.keys(schema.attributes);
|
230
|
+
const dataKeys = Object.keys(data);
|
231
|
+
const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));
|
232
|
+
const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {
|
233
|
+
delete acc[key];
|
234
|
+
return acc;
|
235
|
+
}, structuredClone(data));
|
236
|
+
return revisedData;
|
237
|
+
};
|
238
|
+
const removeNullValues = (data) => {
|
239
|
+
return Object.entries(data).reduce((acc, [key, value]) => {
|
240
|
+
if (value === null) {
|
241
|
+
return acc;
|
242
|
+
}
|
243
|
+
acc[key] = value;
|
244
|
+
return acc;
|
245
|
+
}, {});
|
246
|
+
};
|
247
|
+
const transformDocument = (schema, components = {}) => (document) => {
|
248
|
+
const transformations = pipe(
|
249
|
+
removeFieldsThatDontExistOnSchema(schema),
|
250
|
+
removeProhibitedFields(["password"])(schema, components),
|
251
|
+
removeNullValues,
|
252
|
+
prepareRelations(schema, components),
|
253
|
+
prepareTempKeys(schema, components)
|
254
|
+
);
|
255
|
+
return transformations(document);
|
256
|
+
};
|
257
|
+
const createDefaultForm = (contentType, components = {}) => {
|
258
|
+
const traverseSchema = (attributes) => {
|
259
|
+
return Object.entries(attributes).reduce((acc, [key, attribute]) => {
|
260
|
+
if ("default" in attribute) {
|
261
|
+
acc[key] = attribute.default;
|
262
|
+
} else if (attribute.type === "component" && attribute.required) {
|
263
|
+
const defaultComponentForm = traverseSchema(components[attribute.component].attributes);
|
264
|
+
if (attribute.repeatable) {
|
265
|
+
acc[key] = attribute.min ? [...Array(attribute.min).fill(defaultComponentForm)] : [];
|
266
|
+
} else {
|
267
|
+
acc[key] = defaultComponentForm;
|
268
|
+
}
|
269
|
+
} else if (attribute.type === "dynamiczone" && attribute.required) {
|
270
|
+
acc[key] = [];
|
271
|
+
}
|
272
|
+
return acc;
|
273
|
+
}, {});
|
274
|
+
};
|
275
|
+
return traverseSchema(contentType.attributes);
|
276
|
+
};
|
161
277
|
const contentManagerApi = adminApi.enhanceEndpoints({
|
162
278
|
addTagTypes: [
|
163
279
|
"ComponentConfiguration",
|
@@ -167,7 +283,8 @@ const contentManagerApi = adminApi.enhanceEndpoints({
|
|
167
283
|
"InitialData",
|
168
284
|
"HistoryVersion",
|
169
285
|
"Relations",
|
170
|
-
"UidAvailability"
|
286
|
+
"UidAvailability",
|
287
|
+
"RecentDocumentList"
|
171
288
|
]
|
172
289
|
});
|
173
290
|
const documentApi = contentManagerApi.injectEndpoints({
|
@@ -185,7 +302,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
185
302
|
if (error) {
|
186
303
|
return [];
|
187
304
|
}
|
188
|
-
return [{ type: "Document", id: `${model}_LIST` }];
|
305
|
+
return [{ type: "Document", id: `${model}_LIST` }, "RecentDocumentList"];
|
189
306
|
}
|
190
307
|
}),
|
191
308
|
cloneDocument: builder.mutation({
|
@@ -199,7 +316,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
199
316
|
}),
|
200
317
|
invalidatesTags: (_result, _error, { model }) => [
|
201
318
|
{ type: "Document", id: `${model}_LIST` },
|
202
|
-
{ type: "UidAvailability", id: model }
|
319
|
+
{ type: "UidAvailability", id: model },
|
320
|
+
"RecentDocumentList"
|
203
321
|
]
|
204
322
|
}),
|
205
323
|
/**
|
@@ -218,8 +336,21 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
218
336
|
invalidatesTags: (result, _error, { model }) => [
|
219
337
|
{ type: "Document", id: `${model}_LIST` },
|
220
338
|
"Relations",
|
221
|
-
{ type: "UidAvailability", id: model }
|
222
|
-
|
339
|
+
{ type: "UidAvailability", id: model },
|
340
|
+
"RecentDocumentList"
|
341
|
+
],
|
342
|
+
transformResponse: (response, meta, arg) => {
|
343
|
+
if (!("data" in response) && arg.model === "plugin::users-permissions.user") {
|
344
|
+
return {
|
345
|
+
data: response,
|
346
|
+
meta: {
|
347
|
+
availableStatus: [],
|
348
|
+
availableLocales: []
|
349
|
+
}
|
350
|
+
};
|
351
|
+
}
|
352
|
+
return response;
|
353
|
+
}
|
223
354
|
}),
|
224
355
|
deleteDocument: builder.mutation({
|
225
356
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -230,7 +361,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
230
361
|
}
|
231
362
|
}),
|
232
363
|
invalidatesTags: (_result, _error, { collectionType, model }) => [
|
233
|
-
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model }
|
364
|
+
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },
|
365
|
+
"RecentDocumentList"
|
234
366
|
]
|
235
367
|
}),
|
236
368
|
deleteManyDocuments: builder.mutation({
|
@@ -242,7 +374,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
242
374
|
params
|
243
375
|
}
|
244
376
|
}),
|
245
|
-
invalidatesTags: (_res, _error, { model }) => [
|
377
|
+
invalidatesTags: (_res, _error, { model }) => [
|
378
|
+
{ type: "Document", id: `${model}_LIST` },
|
379
|
+
"RecentDocumentList"
|
380
|
+
]
|
246
381
|
}),
|
247
382
|
discardDocument: builder.mutation({
|
248
383
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -260,7 +395,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
260
395
|
},
|
261
396
|
{ type: "Document", id: `${model}_LIST` },
|
262
397
|
"Relations",
|
263
|
-
{ type: "UidAvailability", id: model }
|
398
|
+
{ type: "UidAvailability", id: model },
|
399
|
+
"RecentDocumentList"
|
264
400
|
];
|
265
401
|
}
|
266
402
|
}),
|
@@ -273,7 +409,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
273
409
|
url: `/content-manager/collection-types/${model}`,
|
274
410
|
method: "GET",
|
275
411
|
config: {
|
276
|
-
params
|
412
|
+
params: stringify(params, { encode: true })
|
277
413
|
}
|
278
414
|
}),
|
279
415
|
providesTags: (result, _error, arg) => {
|
@@ -355,7 +491,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
355
491
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
356
492
|
},
|
357
493
|
{ type: "Document", id: `${model}_LIST` },
|
358
|
-
"Relations"
|
494
|
+
"Relations",
|
495
|
+
"RecentDocumentList"
|
359
496
|
];
|
360
497
|
}
|
361
498
|
}),
|
@@ -386,7 +523,9 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
386
523
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
387
524
|
},
|
388
525
|
"Relations",
|
389
|
-
{ type: "UidAvailability", id: model }
|
526
|
+
{ type: "UidAvailability", id: model },
|
527
|
+
"RecentDocumentList",
|
528
|
+
"RecentDocumentList"
|
390
529
|
];
|
391
530
|
},
|
392
531
|
async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {
|
@@ -416,7 +555,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
416
555
|
{
|
417
556
|
type: "Document",
|
418
557
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
419
|
-
}
|
558
|
+
},
|
559
|
+
"RecentDocumentList"
|
420
560
|
];
|
421
561
|
}
|
422
562
|
}),
|
@@ -429,7 +569,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
429
569
|
params
|
430
570
|
}
|
431
571
|
}),
|
432
|
-
invalidatesTags: (_res, _error, { model, documentIds }) =>
|
572
|
+
invalidatesTags: (_res, _error, { model, documentIds }) => [
|
573
|
+
...documentIds.map((id) => ({ type: "Document", id: `${model}_${id}` })),
|
574
|
+
"RecentDocumentList"
|
575
|
+
]
|
433
576
|
})
|
434
577
|
})
|
435
578
|
});
|
@@ -452,8 +595,7 @@ const {
|
|
452
595
|
useUnpublishManyDocumentsMutation
|
453
596
|
} = documentApi;
|
454
597
|
const buildValidParams = (query) => {
|
455
|
-
if (!query)
|
456
|
-
return query;
|
598
|
+
if (!query) return query;
|
457
599
|
const { plugins: _, ...validQueryParams } = {
|
458
600
|
...query,
|
459
601
|
...Object.values(query?.plugins ?? {}).reduce(
|
@@ -461,9 +603,6 @@ const buildValidParams = (query) => {
|
|
461
603
|
{}
|
462
604
|
)
|
463
605
|
};
|
464
|
-
if ("_q" in validQueryParams) {
|
465
|
-
validQueryParams._q = encodeURIComponent(validQueryParams._q);
|
466
|
-
}
|
467
606
|
return validQueryParams;
|
468
607
|
};
|
469
608
|
const isBaseQueryError = (error) => {
|
@@ -968,9 +1107,10 @@ const formatEditLayout = (data, {
|
|
968
1107
|
currentPanelIndex += 2;
|
969
1108
|
} else {
|
970
1109
|
if (!panels[currentPanelIndex]) {
|
971
|
-
panels.push([]);
|
1110
|
+
panels.push([row]);
|
1111
|
+
} else {
|
1112
|
+
panels[currentPanelIndex].push(row);
|
972
1113
|
}
|
973
|
-
panels[currentPanelIndex].push(row);
|
974
1114
|
}
|
975
1115
|
return panels;
|
976
1116
|
}, []);
|
@@ -1103,6 +1243,7 @@ const convertListLayoutToFieldLayouts = (columns, attributes = {}, metadatas, co
|
|
1103
1243
|
const useDocument = (args, opts) => {
|
1104
1244
|
const { toggleNotification } = useNotification();
|
1105
1245
|
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
|
1246
|
+
const { formatMessage } = useIntl();
|
1106
1247
|
const {
|
1107
1248
|
currentData: data,
|
1108
1249
|
isLoading: isLoadingDocument,
|
@@ -1112,12 +1253,27 @@ const useDocument = (args, opts) => {
|
|
1112
1253
|
...opts,
|
1113
1254
|
skip: !args.documentId && args.collectionType !== SINGLE_TYPES || opts?.skip
|
1114
1255
|
});
|
1256
|
+
const document = data?.data;
|
1257
|
+
const meta = data?.meta;
|
1115
1258
|
const {
|
1116
1259
|
components,
|
1117
1260
|
schema,
|
1118
1261
|
schemas,
|
1119
1262
|
isLoading: isLoadingSchema
|
1120
1263
|
} = useContentTypeSchema(args.model);
|
1264
|
+
const isSingleType = schema?.kind === "singleType";
|
1265
|
+
const getTitle = (mainField) => {
|
1266
|
+
if (mainField !== "id" && document?.[mainField]) {
|
1267
|
+
return document[mainField];
|
1268
|
+
}
|
1269
|
+
if (isSingleType && schema?.info.displayName) {
|
1270
|
+
return schema.info.displayName;
|
1271
|
+
}
|
1272
|
+
return formatMessage({
|
1273
|
+
id: "content-manager.containers.untitled",
|
1274
|
+
defaultMessage: "Untitled"
|
1275
|
+
});
|
1276
|
+
};
|
1121
1277
|
React.useEffect(() => {
|
1122
1278
|
if (error) {
|
1123
1279
|
toggleNotification({
|
@@ -1133,14 +1289,14 @@ const useDocument = (args, opts) => {
|
|
1133
1289
|
return createYupSchema(schema.attributes, components);
|
1134
1290
|
}, [schema, components]);
|
1135
1291
|
const validate = React.useCallback(
|
1136
|
-
(
|
1292
|
+
(document2) => {
|
1137
1293
|
if (!validationSchema) {
|
1138
1294
|
throw new Error(
|
1139
1295
|
"There is no validation schema generated, this is likely due to the schema not being loaded yet."
|
1140
1296
|
);
|
1141
1297
|
}
|
1142
1298
|
try {
|
1143
|
-
validationSchema.validateSync(
|
1299
|
+
validationSchema.validateSync(document2, { abortEarly: false, strict: true });
|
1144
1300
|
return null;
|
1145
1301
|
} catch (error2) {
|
1146
1302
|
if (error2 instanceof ValidationError) {
|
@@ -1151,17 +1307,29 @@ const useDocument = (args, opts) => {
|
|
1151
1307
|
},
|
1152
1308
|
[validationSchema]
|
1153
1309
|
);
|
1310
|
+
const getInitialFormValues = React.useCallback(
|
1311
|
+
(isCreatingDocument = false) => {
|
1312
|
+
if (!document && !isCreatingDocument && !isSingleType || !schema) {
|
1313
|
+
return void 0;
|
1314
|
+
}
|
1315
|
+
const form = document?.id ? document : createDefaultForm(schema, components);
|
1316
|
+
return transformDocument(schema, components)(form);
|
1317
|
+
},
|
1318
|
+
[document, isSingleType, schema, components]
|
1319
|
+
);
|
1154
1320
|
const isLoading = isLoadingDocument || isFetchingDocument || isLoadingSchema;
|
1155
1321
|
const hasError = !!error;
|
1156
1322
|
return {
|
1157
1323
|
components,
|
1158
|
-
document
|
1159
|
-
meta
|
1324
|
+
document,
|
1325
|
+
meta,
|
1160
1326
|
isLoading,
|
1161
1327
|
hasError,
|
1162
1328
|
schema,
|
1163
1329
|
schemas,
|
1164
|
-
validate
|
1330
|
+
validate,
|
1331
|
+
getTitle,
|
1332
|
+
getInitialFormValues
|
1165
1333
|
};
|
1166
1334
|
};
|
1167
1335
|
const useDoc = () => {
|
@@ -1228,9 +1396,6 @@ const useContentManagerContext = () => {
|
|
1228
1396
|
};
|
1229
1397
|
};
|
1230
1398
|
const prefixPluginTranslations = (trad, pluginId) => {
|
1231
|
-
if (!pluginId) {
|
1232
|
-
throw new TypeError("pluginId can't be empty");
|
1233
|
-
}
|
1234
1399
|
return Object.keys(trad).reduce((acc, current) => {
|
1235
1400
|
acc[`${pluginId}.${current}`] = trad[current];
|
1236
1401
|
return acc;
|
@@ -1664,10 +1829,10 @@ const useDocumentActions = () => {
|
|
1664
1829
|
update
|
1665
1830
|
};
|
1666
1831
|
};
|
1667
|
-
const ProtectedHistoryPage = lazy(
|
1668
|
-
() => import("./History-
|
1832
|
+
const ProtectedHistoryPage = React.lazy(
|
1833
|
+
() => import("./History-D1PreDSY.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
|
1669
1834
|
);
|
1670
|
-
const routes$
|
1835
|
+
const routes$2 = [
|
1671
1836
|
{
|
1672
1837
|
path: ":collectionType/:slug/:id/history",
|
1673
1838
|
Component: ProtectedHistoryPage
|
@@ -1677,32 +1842,45 @@ const routes$1 = [
|
|
1677
1842
|
Component: ProtectedHistoryPage
|
1678
1843
|
}
|
1679
1844
|
];
|
1845
|
+
const ProtectedPreviewPage = React.lazy(
|
1846
|
+
() => import("./Preview-BNuU0SuQ.mjs").then((mod) => ({ default: mod.ProtectedPreviewPage }))
|
1847
|
+
);
|
1848
|
+
const routes$1 = [
|
1849
|
+
{
|
1850
|
+
path: ":collectionType/:slug/:id/preview",
|
1851
|
+
Component: ProtectedPreviewPage
|
1852
|
+
},
|
1853
|
+
{
|
1854
|
+
path: ":collectionType/:slug/preview",
|
1855
|
+
Component: ProtectedPreviewPage
|
1856
|
+
}
|
1857
|
+
];
|
1680
1858
|
const ProtectedEditViewPage = lazy(
|
1681
|
-
() => import("./EditViewPage-
|
1859
|
+
() => import("./EditViewPage-DrmVmYN0.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
|
1682
1860
|
);
|
1683
1861
|
const ProtectedListViewPage = lazy(
|
1684
|
-
() => import("./ListViewPage-
|
1862
|
+
() => import("./ListViewPage-Bud_jBDQ.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
|
1685
1863
|
);
|
1686
1864
|
const ProtectedListConfiguration = lazy(
|
1687
|
-
() => import("./ListConfigurationPage-
|
1865
|
+
() => import("./ListConfigurationPage-Bbi32isk.mjs").then((mod) => ({
|
1688
1866
|
default: mod.ProtectedListConfiguration
|
1689
1867
|
}))
|
1690
1868
|
);
|
1691
1869
|
const ProtectedEditConfigurationPage = lazy(
|
1692
|
-
() => import("./EditConfigurationPage-
|
1870
|
+
() => import("./EditConfigurationPage-COe6hjPC.mjs").then((mod) => ({
|
1693
1871
|
default: mod.ProtectedEditConfigurationPage
|
1694
1872
|
}))
|
1695
1873
|
);
|
1696
1874
|
const ProtectedComponentConfigurationPage = lazy(
|
1697
|
-
() => import("./ComponentConfigurationPage-
|
1875
|
+
() => import("./ComponentConfigurationPage-9_4yUE9L.mjs").then((mod) => ({
|
1698
1876
|
default: mod.ProtectedComponentConfigurationPage
|
1699
1877
|
}))
|
1700
1878
|
);
|
1701
1879
|
const NoPermissions = lazy(
|
1702
|
-
() => import("./NoPermissionsPage-
|
1880
|
+
() => import("./NoPermissionsPage-CMdM-dCo.mjs").then((mod) => ({ default: mod.NoPermissions }))
|
1703
1881
|
);
|
1704
1882
|
const NoContentType = lazy(
|
1705
|
-
() => import("./NoContentTypePage-
|
1883
|
+
() => import("./NoContentTypePage-DVhkugsf.mjs").then((mod) => ({ default: mod.NoContentType }))
|
1706
1884
|
);
|
1707
1885
|
const CollectionTypePages = () => {
|
1708
1886
|
const { collectionType } = useParams();
|
@@ -1714,7 +1892,7 @@ const CollectionTypePages = () => {
|
|
1714
1892
|
const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
|
1715
1893
|
const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
|
1716
1894
|
const LIST_RELATIVE_PATH = ":collectionType/:slug";
|
1717
|
-
const LIST_PATH = `/content-manager
|
1895
|
+
const LIST_PATH = `/content-manager/collection-types/:slug`;
|
1718
1896
|
const routes = [
|
1719
1897
|
{
|
1720
1898
|
path: LIST_RELATIVE_PATH,
|
@@ -1748,6 +1926,7 @@ const routes = [
|
|
1748
1926
|
path: "no-content-types",
|
1749
1927
|
Component: NoContentType
|
1750
1928
|
},
|
1929
|
+
...routes$2,
|
1751
1930
|
...routes$1
|
1752
1931
|
];
|
1753
1932
|
const DocumentActions = ({ actions: actions2 }) => {
|
@@ -1846,6 +2025,11 @@ const DocumentActionButton = (action) => {
|
|
1846
2025
|
) : null
|
1847
2026
|
] });
|
1848
2027
|
};
|
2028
|
+
const MenuItem = styled(Menu.Item)`
|
2029
|
+
&:hover {
|
2030
|
+
background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
|
2031
|
+
}
|
2032
|
+
`;
|
1849
2033
|
const DocumentActionsMenu = ({
|
1850
2034
|
actions: actions2,
|
1851
2035
|
children,
|
@@ -1904,48 +2088,32 @@ const DocumentActionsMenu = ({
|
|
1904
2088
|
/* @__PURE__ */ jsxs(Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
|
1905
2089
|
actions2.map((action) => {
|
1906
2090
|
return /* @__PURE__ */ jsx(
|
1907
|
-
|
2091
|
+
MenuItem,
|
1908
2092
|
{
|
1909
2093
|
disabled: action.disabled,
|
1910
2094
|
onSelect: handleClick(action),
|
1911
2095
|
display: "block",
|
1912
|
-
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
|
1918
|
-
|
1919
|
-
|
1920
|
-
|
1921
|
-
|
1922
|
-
|
1923
|
-
|
1924
|
-
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
Flex,
|
1934
|
-
{
|
1935
|
-
alignItems: "center",
|
1936
|
-
background: "alternative100",
|
1937
|
-
borderStyle: "solid",
|
1938
|
-
borderColor: "alternative200",
|
1939
|
-
borderWidth: "1px",
|
1940
|
-
height: 5,
|
1941
|
-
paddingLeft: 2,
|
1942
|
-
paddingRight: 2,
|
1943
|
-
hasRadius: true,
|
1944
|
-
color: "alternative600",
|
1945
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
|
1946
|
-
}
|
1947
|
-
)
|
1948
|
-
] })
|
2096
|
+
isVariantDanger: action.variant === "danger",
|
2097
|
+
isDisabled: action.disabled,
|
2098
|
+
children: /* @__PURE__ */ jsx(Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxs(
|
2099
|
+
Flex,
|
2100
|
+
{
|
2101
|
+
color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
|
2102
|
+
gap: 2,
|
2103
|
+
tag: "span",
|
2104
|
+
children: [
|
2105
|
+
/* @__PURE__ */ jsx(
|
2106
|
+
Flex,
|
2107
|
+
{
|
2108
|
+
tag: "span",
|
2109
|
+
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
|
2110
|
+
children: action.icon
|
2111
|
+
}
|
2112
|
+
),
|
2113
|
+
action.label
|
2114
|
+
]
|
2115
|
+
}
|
2116
|
+
) })
|
1949
2117
|
},
|
1950
2118
|
action.id
|
1951
2119
|
);
|
@@ -2056,6 +2224,18 @@ const DocumentActionModal = ({
|
|
2056
2224
|
typeof Footer === "function" ? /* @__PURE__ */ jsx(Footer, { onClose: handleClose }) : Footer
|
2057
2225
|
] }) });
|
2058
2226
|
};
|
2227
|
+
const transformData = (data) => {
|
2228
|
+
if (Array.isArray(data)) {
|
2229
|
+
return data.map(transformData);
|
2230
|
+
}
|
2231
|
+
if (typeof data === "object" && data !== null) {
|
2232
|
+
if ("apiData" in data) {
|
2233
|
+
return data.apiData;
|
2234
|
+
}
|
2235
|
+
return mapValues(transformData)(data);
|
2236
|
+
}
|
2237
|
+
return data;
|
2238
|
+
};
|
2059
2239
|
const PublishAction$1 = ({
|
2060
2240
|
activeTab,
|
2061
2241
|
documentId,
|
@@ -2070,6 +2250,7 @@ const PublishAction$1 = ({
|
|
2070
2250
|
const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
2071
2251
|
const isListView = useMatch(LIST_PATH) !== null;
|
2072
2252
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2253
|
+
const { id } = useParams();
|
2073
2254
|
const { formatMessage } = useIntl();
|
2074
2255
|
const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
|
2075
2256
|
const { publish } = useDocumentActions();
|
@@ -2169,13 +2350,15 @@ const PublishAction$1 = ({
|
|
2169
2350
|
documentId,
|
2170
2351
|
params
|
2171
2352
|
},
|
2172
|
-
formValues
|
2353
|
+
transformData(formValues)
|
2173
2354
|
);
|
2174
2355
|
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2175
|
-
|
2176
|
-
|
2177
|
-
|
2178
|
-
|
2356
|
+
if (id === "create") {
|
2357
|
+
navigate({
|
2358
|
+
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
2359
|
+
search: rawQuery
|
2360
|
+
});
|
2361
|
+
}
|
2179
2362
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2180
2363
|
setErrors(formatValidationErrors(res.error));
|
2181
2364
|
}
|
@@ -2228,6 +2411,7 @@ const PublishAction$1 = ({
|
|
2228
2411
|
};
|
2229
2412
|
};
|
2230
2413
|
PublishAction$1.type = "publish";
|
2414
|
+
PublishAction$1.position = "panel";
|
2231
2415
|
const UpdateAction = ({
|
2232
2416
|
activeTab,
|
2233
2417
|
documentId,
|
@@ -2250,96 +2434,134 @@ const UpdateAction = ({
|
|
2250
2434
|
const validate = useForm("UpdateAction", (state) => state.validate);
|
2251
2435
|
const setErrors = useForm("UpdateAction", (state) => state.setErrors);
|
2252
2436
|
const resetForm = useForm("PublishAction", ({ resetForm: resetForm2 }) => resetForm2);
|
2253
|
-
|
2254
|
-
|
2255
|
-
|
2256
|
-
|
2257
|
-
|
2258
|
-
|
2259
|
-
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2265
|
-
|
2266
|
-
|
2267
|
-
|
2268
|
-
|
2269
|
-
status: "draft"
|
2437
|
+
const handleUpdate = React.useCallback(async () => {
|
2438
|
+
setSubmitting(true);
|
2439
|
+
try {
|
2440
|
+
if (!modified) {
|
2441
|
+
return;
|
2442
|
+
}
|
2443
|
+
const { errors } = await validate(true, {
|
2444
|
+
status: "draft"
|
2445
|
+
});
|
2446
|
+
if (errors) {
|
2447
|
+
toggleNotification({
|
2448
|
+
type: "danger",
|
2449
|
+
message: formatMessage({
|
2450
|
+
id: "content-manager.validation.error",
|
2451
|
+
defaultMessage: "There are validation errors in your document. Please fix them before saving."
|
2452
|
+
})
|
2270
2453
|
});
|
2271
|
-
|
2272
|
-
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2276
|
-
|
2277
|
-
|
2278
|
-
|
2279
|
-
|
2280
|
-
|
2281
|
-
|
2282
|
-
|
2283
|
-
|
2284
|
-
model,
|
2285
|
-
documentId: cloneMatch.params.origin,
|
2286
|
-
params
|
2287
|
-
},
|
2288
|
-
document
|
2289
|
-
);
|
2290
|
-
if ("data" in res) {
|
2291
|
-
navigate(
|
2292
|
-
{
|
2293
|
-
pathname: `../${res.data.documentId}`,
|
2294
|
-
search: rawQuery
|
2295
|
-
},
|
2296
|
-
{ relative: "path" }
|
2297
|
-
);
|
2298
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2299
|
-
setErrors(formatValidationErrors(res.error));
|
2300
|
-
}
|
2301
|
-
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2302
|
-
const res = await update(
|
2454
|
+
return;
|
2455
|
+
}
|
2456
|
+
if (isCloning) {
|
2457
|
+
const res = await clone(
|
2458
|
+
{
|
2459
|
+
model,
|
2460
|
+
documentId: cloneMatch.params.origin,
|
2461
|
+
params
|
2462
|
+
},
|
2463
|
+
transformData(document)
|
2464
|
+
);
|
2465
|
+
if ("data" in res) {
|
2466
|
+
navigate(
|
2303
2467
|
{
|
2304
|
-
|
2305
|
-
|
2306
|
-
documentId,
|
2307
|
-
params
|
2468
|
+
pathname: `../${res.data.documentId}`,
|
2469
|
+
search: rawQuery
|
2308
2470
|
},
|
2309
|
-
|
2471
|
+
{ relative: "path" }
|
2310
2472
|
);
|
2311
|
-
|
2312
|
-
|
2313
|
-
|
2314
|
-
|
2315
|
-
|
2473
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2474
|
+
setErrors(formatValidationErrors(res.error));
|
2475
|
+
}
|
2476
|
+
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2477
|
+
const res = await update(
|
2478
|
+
{
|
2479
|
+
collectionType,
|
2480
|
+
model,
|
2481
|
+
documentId,
|
2482
|
+
params
|
2483
|
+
},
|
2484
|
+
transformData(document)
|
2485
|
+
);
|
2486
|
+
if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2487
|
+
setErrors(formatValidationErrors(res.error));
|
2316
2488
|
} else {
|
2317
|
-
|
2489
|
+
resetForm();
|
2490
|
+
}
|
2491
|
+
} else {
|
2492
|
+
const res = await create(
|
2493
|
+
{
|
2494
|
+
model,
|
2495
|
+
params
|
2496
|
+
},
|
2497
|
+
transformData(document)
|
2498
|
+
);
|
2499
|
+
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2500
|
+
navigate(
|
2318
2501
|
{
|
2319
|
-
|
2320
|
-
|
2502
|
+
pathname: `../${res.data.documentId}`,
|
2503
|
+
search: rawQuery
|
2321
2504
|
},
|
2322
|
-
|
2505
|
+
{ replace: true, relative: "path" }
|
2323
2506
|
);
|
2324
|
-
|
2325
|
-
|
2326
|
-
{
|
2327
|
-
pathname: `../${res.data.documentId}`,
|
2328
|
-
search: rawQuery
|
2329
|
-
},
|
2330
|
-
{ replace: true, relative: "path" }
|
2331
|
-
);
|
2332
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2333
|
-
setErrors(formatValidationErrors(res.error));
|
2334
|
-
}
|
2507
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2508
|
+
setErrors(formatValidationErrors(res.error));
|
2335
2509
|
}
|
2336
|
-
} finally {
|
2337
|
-
setSubmitting(false);
|
2338
2510
|
}
|
2511
|
+
} finally {
|
2512
|
+
setSubmitting(false);
|
2339
2513
|
}
|
2514
|
+
}, [
|
2515
|
+
clone,
|
2516
|
+
cloneMatch?.params.origin,
|
2517
|
+
collectionType,
|
2518
|
+
create,
|
2519
|
+
document,
|
2520
|
+
documentId,
|
2521
|
+
formatMessage,
|
2522
|
+
formatValidationErrors,
|
2523
|
+
isCloning,
|
2524
|
+
model,
|
2525
|
+
modified,
|
2526
|
+
navigate,
|
2527
|
+
params,
|
2528
|
+
rawQuery,
|
2529
|
+
resetForm,
|
2530
|
+
setErrors,
|
2531
|
+
setSubmitting,
|
2532
|
+
toggleNotification,
|
2533
|
+
update,
|
2534
|
+
validate
|
2535
|
+
]);
|
2536
|
+
React.useEffect(() => {
|
2537
|
+
const handleKeyDown = (e) => {
|
2538
|
+
if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
|
2539
|
+
e.preventDefault();
|
2540
|
+
handleUpdate();
|
2541
|
+
}
|
2542
|
+
};
|
2543
|
+
window.addEventListener("keydown", handleKeyDown);
|
2544
|
+
return () => {
|
2545
|
+
window.removeEventListener("keydown", handleKeyDown);
|
2546
|
+
};
|
2547
|
+
}, [handleUpdate]);
|
2548
|
+
return {
|
2549
|
+
/**
|
2550
|
+
* Disabled when:
|
2551
|
+
* - the form is submitting
|
2552
|
+
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
2553
|
+
* - the active tab is the published tab
|
2554
|
+
*/
|
2555
|
+
disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
|
2556
|
+
label: formatMessage({
|
2557
|
+
id: "global.save",
|
2558
|
+
defaultMessage: "Save"
|
2559
|
+
}),
|
2560
|
+
onClick: handleUpdate
|
2340
2561
|
};
|
2341
2562
|
};
|
2342
2563
|
UpdateAction.type = "update";
|
2564
|
+
UpdateAction.position = "panel";
|
2343
2565
|
const UNPUBLISH_DRAFT_OPTIONS = {
|
2344
2566
|
KEEP: "keep",
|
2345
2567
|
DISCARD: "discard"
|
@@ -2462,6 +2684,7 @@ const UnpublishAction$1 = ({
|
|
2462
2684
|
};
|
2463
2685
|
};
|
2464
2686
|
UnpublishAction$1.type = "unpublish";
|
2687
|
+
UnpublishAction$1.position = "panel";
|
2465
2688
|
const DiscardAction = ({
|
2466
2689
|
activeTab,
|
2467
2690
|
documentId,
|
@@ -2512,6 +2735,7 @@ const DiscardAction = ({
|
|
2512
2735
|
};
|
2513
2736
|
};
|
2514
2737
|
DiscardAction.type = "discard";
|
2738
|
+
DiscardAction.position = "panel";
|
2515
2739
|
const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
|
2516
2740
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
2517
2741
|
const RelativeTime = React.forwardRef(
|
@@ -2524,7 +2748,7 @@ const RelativeTime = React.forwardRef(
|
|
2524
2748
|
});
|
2525
2749
|
const unit = intervals.find((intervalUnit) => {
|
2526
2750
|
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
2527
|
-
});
|
2751
|
+
}) ?? "seconds";
|
2528
2752
|
const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
|
2529
2753
|
const customInterval = customIntervals.find(
|
2530
2754
|
(custom) => interval[custom.unit] < custom.threshold
|
@@ -2558,19 +2782,29 @@ const getDisplayName = ({
|
|
2558
2782
|
return email ?? "";
|
2559
2783
|
};
|
2560
2784
|
const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
2561
|
-
const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
2785
|
+
const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
|
2562
2786
|
const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
|
2563
|
-
|
2787
|
+
const { formatMessage } = useIntl();
|
2788
|
+
return /* @__PURE__ */ jsx(Status, { ...restProps, size, variant: statusVariant, children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: formatMessage({
|
2789
|
+
id: `content-manager.containers.List.${status}`,
|
2790
|
+
defaultMessage: capitalise(status)
|
2791
|
+
}) }) });
|
2564
2792
|
};
|
2565
2793
|
const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
2566
2794
|
const { formatMessage } = useIntl();
|
2567
2795
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2796
|
+
const params = useParams();
|
2568
2797
|
const title = isCreating ? formatMessage({
|
2569
2798
|
id: "content-manager.containers.edit.title.new",
|
2570
2799
|
defaultMessage: "Create an entry"
|
2571
2800
|
}) : documentTitle;
|
2572
2801
|
return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
|
2573
|
-
/* @__PURE__ */ jsx(
|
2802
|
+
/* @__PURE__ */ jsx(
|
2803
|
+
BackButton,
|
2804
|
+
{
|
2805
|
+
fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
|
2806
|
+
}
|
2807
|
+
),
|
2574
2808
|
/* @__PURE__ */ jsxs(Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
|
2575
2809
|
/* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
|
2576
2810
|
/* @__PURE__ */ jsx(HeaderToolbar, {})
|
@@ -2621,7 +2855,7 @@ const HeaderToolbar = () => {
|
|
2621
2855
|
meta: isCloning ? void 0 : meta,
|
2622
2856
|
collectionType
|
2623
2857
|
},
|
2624
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
2858
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("header"),
|
2625
2859
|
children: (actions2) => {
|
2626
2860
|
const headerActions = actions2.filter((action) => {
|
2627
2861
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -2829,6 +3063,7 @@ const ConfigureTheViewAction = ({ collectionType, model }) => {
|
|
2829
3063
|
};
|
2830
3064
|
};
|
2831
3065
|
ConfigureTheViewAction.type = "configure-the-view";
|
3066
|
+
ConfigureTheViewAction.position = "header";
|
2832
3067
|
const EditTheModelAction = ({ model }) => {
|
2833
3068
|
const navigate = useNavigate();
|
2834
3069
|
const { formatMessage } = useIntl();
|
@@ -2845,6 +3080,7 @@ const EditTheModelAction = ({ model }) => {
|
|
2845
3080
|
};
|
2846
3081
|
};
|
2847
3082
|
EditTheModelAction.type = "edit-the-model";
|
3083
|
+
EditTheModelAction.position = "header";
|
2848
3084
|
const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
2849
3085
|
const navigate = useNavigate();
|
2850
3086
|
const { formatMessage } = useIntl();
|
@@ -2918,6 +3154,7 @@ const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
|
2918
3154
|
};
|
2919
3155
|
};
|
2920
3156
|
DeleteAction$1.type = "delete";
|
3157
|
+
DeleteAction$1.position = ["header", "table-row"];
|
2921
3158
|
const DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction$1];
|
2922
3159
|
const Panels = () => {
|
2923
3160
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
@@ -2980,7 +3217,7 @@ const ActionsPanelContent = () => {
|
|
2980
3217
|
DescriptionComponentRenderer,
|
2981
3218
|
{
|
2982
3219
|
props,
|
2983
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
3220
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("panel"),
|
2984
3221
|
children: (actions2) => /* @__PURE__ */ jsx(DocumentActions, { actions: actions2 })
|
2985
3222
|
}
|
2986
3223
|
),
|
@@ -3007,7 +3244,7 @@ const Panel = React.forwardRef(({ children, title }, ref) => {
|
|
3007
3244
|
justifyContent: "stretch",
|
3008
3245
|
alignItems: "flex-start",
|
3009
3246
|
children: [
|
3010
|
-
/* @__PURE__ */ jsx(Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", children: title }),
|
3247
|
+
/* @__PURE__ */ jsx(Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", textColor: "neutral600", children: title }),
|
3011
3248
|
children
|
3012
3249
|
]
|
3013
3250
|
}
|
@@ -3038,7 +3275,7 @@ const ConfirmBulkActionDialog = ({
|
|
3038
3275
|
] })
|
3039
3276
|
] }) });
|
3040
3277
|
};
|
3041
|
-
const BoldChunk
|
3278
|
+
const BoldChunk = (chunks) => /* @__PURE__ */ jsx(Typography, { fontWeight: "bold", children: chunks });
|
3042
3279
|
const ConfirmDialogPublishAll = ({
|
3043
3280
|
isOpen,
|
3044
3281
|
onToggleDialog,
|
@@ -3087,7 +3324,7 @@ const ConfirmDialogPublishAll = ({
|
|
3087
3324
|
defaultMessage: "<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. "
|
3088
3325
|
},
|
3089
3326
|
{
|
3090
|
-
b: BoldChunk
|
3327
|
+
b: BoldChunk,
|
3091
3328
|
count: countDraftRelations,
|
3092
3329
|
entities: selectedEntries.length
|
3093
3330
|
}
|
@@ -3126,6 +3363,16 @@ const ConfirmDialogPublishAll = ({
|
|
3126
3363
|
const TypographyMaxWidth = styled(Typography)`
|
3127
3364
|
max-width: 300px;
|
3128
3365
|
`;
|
3366
|
+
const TableComponent = styled(RawTable)`
|
3367
|
+
width: 100%;
|
3368
|
+
table-layout: fixed;
|
3369
|
+
td:first-child {
|
3370
|
+
border-right: 1px solid ${({ theme }) => theme.colors.neutral150};
|
3371
|
+
}
|
3372
|
+
td:first-of-type {
|
3373
|
+
padding: ${({ theme }) => theme.spaces[4]};
|
3374
|
+
}
|
3375
|
+
`;
|
3129
3376
|
const formatErrorMessages = (errors, parentKey, formatMessage) => {
|
3130
3377
|
const messages = [];
|
3131
3378
|
Object.entries(errors).forEach(([key, value]) => {
|
@@ -3230,7 +3477,7 @@ const SelectedEntriesTableContent = ({
|
|
3230
3477
|
)
|
3231
3478
|
] }),
|
3232
3479
|
/* @__PURE__ */ jsx(Table.Loading, {}),
|
3233
|
-
/* @__PURE__ */ jsx(Table.Body, { children: rowsToDisplay.map((row
|
3480
|
+
/* @__PURE__ */ jsx(Table.Body, { children: rowsToDisplay.map((row) => /* @__PURE__ */ jsxs(Table.Row, { children: [
|
3234
3481
|
/* @__PURE__ */ jsx(Table.CheckboxCell, { id: row.id }),
|
3235
3482
|
/* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Typography, { children: row.id }) }),
|
3236
3483
|
shouldDisplayMainField && /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Typography, { children: row[mainField] }) }),
|
@@ -3257,18 +3504,10 @@ const SelectedEntriesTableContent = ({
|
|
3257
3504
|
search: row.locale && `?plugins[i18n][locale]=${row.locale}`
|
3258
3505
|
},
|
3259
3506
|
state: { from: pathname },
|
3260
|
-
label: formatMessage(
|
3261
|
-
|
3262
|
-
|
3263
|
-
|
3264
|
-
{
|
3265
|
-
id: "content-manager.components.ListViewHelperPluginTable.row-line",
|
3266
|
-
defaultMessage: "item line {number}"
|
3267
|
-
},
|
3268
|
-
{ number: index2 + 1 }
|
3269
|
-
)
|
3270
|
-
}
|
3271
|
-
),
|
3507
|
+
label: formatMessage({
|
3508
|
+
id: "content-manager.bulk-publish.edit",
|
3509
|
+
defaultMessage: "Edit"
|
3510
|
+
}),
|
3272
3511
|
target: "_blank",
|
3273
3512
|
marginLeft: "auto",
|
3274
3513
|
variant: "ghost",
|
@@ -3278,7 +3517,73 @@ const SelectedEntriesTableContent = ({
|
|
3278
3517
|
] }, row.id)) })
|
3279
3518
|
] });
|
3280
3519
|
};
|
3281
|
-
const
|
3520
|
+
const PublicationStatusSummary = ({ count, icon, message }) => {
|
3521
|
+
return /* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", flex: 1, gap: 3, children: [
|
3522
|
+
/* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
3523
|
+
icon,
|
3524
|
+
/* @__PURE__ */ jsx(Typography, { children: message })
|
3525
|
+
] }),
|
3526
|
+
/* @__PURE__ */ jsx(Typography, { fontWeight: "bold", children: count })
|
3527
|
+
] });
|
3528
|
+
};
|
3529
|
+
const PublicationStatusGrid = ({
|
3530
|
+
entriesReadyToPublishCount,
|
3531
|
+
entriesPublishedCount,
|
3532
|
+
entriesModifiedCount,
|
3533
|
+
entriesWithErrorsCount
|
3534
|
+
}) => {
|
3535
|
+
const { formatMessage } = useIntl();
|
3536
|
+
return /* @__PURE__ */ jsx(Box, { hasRadius: true, borderColor: "neutral150", children: /* @__PURE__ */ jsx(TableComponent, { colCount: 2, rowCount: 2, children: /* @__PURE__ */ jsxs(Tbody, { children: [
|
3537
|
+
/* @__PURE__ */ jsxs(Tr, { children: [
|
3538
|
+
/* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(
|
3539
|
+
PublicationStatusSummary,
|
3540
|
+
{
|
3541
|
+
count: entriesReadyToPublishCount,
|
3542
|
+
icon: /* @__PURE__ */ jsx(CheckCircle, { fill: "success600" }),
|
3543
|
+
message: formatMessage({
|
3544
|
+
id: "app.utils.ready-to-publish",
|
3545
|
+
defaultMessage: "Ready to publish"
|
3546
|
+
})
|
3547
|
+
}
|
3548
|
+
) }),
|
3549
|
+
/* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(
|
3550
|
+
PublicationStatusSummary,
|
3551
|
+
{
|
3552
|
+
count: entriesPublishedCount,
|
3553
|
+
icon: /* @__PURE__ */ jsx(CheckCircle, { fill: "success600" }),
|
3554
|
+
message: formatMessage({
|
3555
|
+
id: "app.utils.already-published",
|
3556
|
+
defaultMessage: "Already published"
|
3557
|
+
})
|
3558
|
+
}
|
3559
|
+
) })
|
3560
|
+
] }),
|
3561
|
+
/* @__PURE__ */ jsxs(Tr, { children: [
|
3562
|
+
/* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(
|
3563
|
+
PublicationStatusSummary,
|
3564
|
+
{
|
3565
|
+
count: entriesModifiedCount,
|
3566
|
+
icon: /* @__PURE__ */ jsx(ArrowsCounterClockwise, { fill: "alternative600" }),
|
3567
|
+
message: formatMessage({
|
3568
|
+
id: "content-manager.bulk-publish.modified",
|
3569
|
+
defaultMessage: "Ready to publish changes"
|
3570
|
+
})
|
3571
|
+
}
|
3572
|
+
) }),
|
3573
|
+
/* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(
|
3574
|
+
PublicationStatusSummary,
|
3575
|
+
{
|
3576
|
+
count: entriesWithErrorsCount,
|
3577
|
+
icon: /* @__PURE__ */ jsx(CrossCircle, { fill: "danger600" }),
|
3578
|
+
message: formatMessage({
|
3579
|
+
id: "content-manager.bulk-publish.waiting-for-action",
|
3580
|
+
defaultMessage: "Waiting for action"
|
3581
|
+
})
|
3582
|
+
}
|
3583
|
+
) })
|
3584
|
+
] })
|
3585
|
+
] }) }) });
|
3586
|
+
};
|
3282
3587
|
const SelectedEntriesModalContent = ({
|
3283
3588
|
listViewSelectedEntries,
|
3284
3589
|
toggleModal,
|
@@ -3337,7 +3642,6 @@ const SelectedEntriesModalContent = ({
|
|
3337
3642
|
validationErrors: {}
|
3338
3643
|
};
|
3339
3644
|
}, [components, data, schema]);
|
3340
|
-
const [publishedCount, setPublishedCount] = React.useState(0);
|
3341
3645
|
const [isDialogOpen, setIsDialogOpen] = React.useState(false);
|
3342
3646
|
const { publishMany: bulkPublishAction } = useDocumentActions();
|
3343
3647
|
const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();
|
@@ -3349,53 +3653,36 @@ const SelectedEntriesModalContent = ({
|
|
3349
3653
|
const selectedEntriesWithErrorsCount = selectedEntries.filter(
|
3350
3654
|
({ documentId }) => validationErrors[documentId]
|
3351
3655
|
).length;
|
3352
|
-
const
|
3656
|
+
const selectedEntriesPublishedCount = selectedEntries.filter(
|
3353
3657
|
({ status }) => status === "published"
|
3354
3658
|
).length;
|
3355
|
-
const
|
3659
|
+
const selectedEntriesModifiedCount = selectedEntries.filter(
|
3660
|
+
({ status, documentId }) => status === "modified" && !validationErrors[documentId]
|
3661
|
+
).length;
|
3662
|
+
const selectedEntriesWithNoErrorsCount = selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;
|
3356
3663
|
const toggleDialog = () => setIsDialogOpen((prev) => !prev);
|
3357
3664
|
const handleConfirmBulkPublish = async () => {
|
3358
3665
|
toggleDialog();
|
3359
3666
|
const res = await bulkPublishAction({ model, documentIds: entriesToPublish, params });
|
3360
3667
|
if (!("error" in res)) {
|
3361
|
-
setPublishedCount(res.count);
|
3362
3668
|
const unpublishedEntries = rows.filter((row) => {
|
3363
3669
|
return !entriesToPublish.includes(row.documentId);
|
3364
3670
|
});
|
3365
3671
|
setListViewSelectedDocuments(unpublishedEntries);
|
3366
3672
|
}
|
3367
3673
|
};
|
3368
|
-
const getFormattedCountMessage = () => {
|
3369
|
-
if (publishedCount) {
|
3370
|
-
return formatMessage(
|
3371
|
-
{
|
3372
|
-
id: getTranslation("containers.list.selectedEntriesModal.publishedCount"),
|
3373
|
-
defaultMessage: "<b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} published. <b>{withErrorsCount}</b> {withErrorsCount, plural, =0 {entries} one {entry} other {entries}} waiting for action."
|
3374
|
-
},
|
3375
|
-
{
|
3376
|
-
publishedCount,
|
3377
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3378
|
-
b: BoldChunk
|
3379
|
-
}
|
3380
|
-
);
|
3381
|
-
}
|
3382
|
-
return formatMessage(
|
3383
|
-
{
|
3384
|
-
id: getTranslation("containers.list.selectedEntriesModal.selectedCount"),
|
3385
|
-
defaultMessage: "<b>{alreadyPublishedCount}</b> {alreadyPublishedCount, plural, =0 {entries} one {entry} other {entries}} already published. <b>{readyToPublishCount}</b> {readyToPublishCount, plural, =0 {entries} one {entry} other {entries}} ready to publish. <b>{withErrorsCount}</b> {withErrorsCount, plural, =0 {entries} one {entry} other {entries}} waiting for action."
|
3386
|
-
},
|
3387
|
-
{
|
3388
|
-
readyToPublishCount: selectedEntriesWithNoErrorsCount,
|
3389
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3390
|
-
alreadyPublishedCount: selectedEntriesPublished,
|
3391
|
-
b: BoldChunk
|
3392
|
-
}
|
3393
|
-
);
|
3394
|
-
};
|
3395
3674
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
3396
3675
|
/* @__PURE__ */ jsxs(Modal.Body, { children: [
|
3397
|
-
/* @__PURE__ */ jsx(
|
3398
|
-
|
3676
|
+
/* @__PURE__ */ jsx(
|
3677
|
+
PublicationStatusGrid,
|
3678
|
+
{
|
3679
|
+
entriesReadyToPublishCount: selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount,
|
3680
|
+
entriesPublishedCount: selectedEntriesPublishedCount,
|
3681
|
+
entriesModifiedCount: selectedEntriesModifiedCount,
|
3682
|
+
entriesWithErrorsCount: selectedEntriesWithErrorsCount
|
3683
|
+
}
|
3684
|
+
),
|
3685
|
+
/* @__PURE__ */ jsx(Box, { marginTop: 7, children: /* @__PURE__ */ jsx(
|
3399
3686
|
SelectedEntriesTableContent,
|
3400
3687
|
{
|
3401
3688
|
isPublishing: isSubmittingForm,
|
@@ -3416,7 +3703,7 @@ const SelectedEntriesModalContent = ({
|
|
3416
3703
|
Button,
|
3417
3704
|
{
|
3418
3705
|
onClick: toggleDialog,
|
3419
|
-
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount ||
|
3706
|
+
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount || selectedEntriesPublishedCount === selectedEntries.length || isLoading,
|
3420
3707
|
loading: isSubmittingForm,
|
3421
3708
|
children: formatMessage({ id: "app.utils.publish", defaultMessage: "Publish" })
|
3422
3709
|
}
|
@@ -3442,8 +3729,7 @@ const PublishAction = ({ documents, model }) => {
|
|
3442
3729
|
const refetchList = () => {
|
3443
3730
|
contentManagerApi.util.invalidateTags([{ type: "Document", id: `${model}_LIST` }]);
|
3444
3731
|
};
|
3445
|
-
if (!showPublishButton)
|
3446
|
-
return null;
|
3732
|
+
if (!showPublishButton) return null;
|
3447
3733
|
return {
|
3448
3734
|
actionType: "publish",
|
3449
3735
|
variant: "tertiary",
|
@@ -3511,8 +3797,7 @@ const DeleteAction = ({ documents, model }) => {
|
|
3511
3797
|
selectRow([]);
|
3512
3798
|
}
|
3513
3799
|
};
|
3514
|
-
if (!hasDeletePermission)
|
3515
|
-
return null;
|
3800
|
+
if (!hasDeletePermission) return null;
|
3516
3801
|
return {
|
3517
3802
|
variant: "danger-light",
|
3518
3803
|
label: formatMessage({ id: "global.delete", defaultMessage: "Delete" }),
|
@@ -3561,8 +3846,7 @@ const UnpublishAction = ({ documents, model }) => {
|
|
3561
3846
|
}
|
3562
3847
|
};
|
3563
3848
|
const showUnpublishButton = hasDraftAndPublishEnabled && hasPublishPermission && documents.some((entry) => entry.status === "published" || entry.status === "modified");
|
3564
|
-
if (!showUnpublishButton)
|
3565
|
-
return null;
|
3849
|
+
if (!showUnpublishButton) return null;
|
3566
3850
|
return {
|
3567
3851
|
variant: "tertiary",
|
3568
3852
|
label: formatMessage({ id: "app.utils.unpublish", defaultMessage: "Unpublish" }),
|
@@ -3667,7 +3951,7 @@ const TableActions = ({ document }) => {
|
|
3667
3951
|
DescriptionComponentRenderer,
|
3668
3952
|
{
|
3669
3953
|
props,
|
3670
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions().filter((action) => action.name !== "PublishAction"),
|
3954
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("table-row").filter((action) => action.name !== "PublishAction"),
|
3671
3955
|
children: (actions2) => {
|
3672
3956
|
const tableRowActions = actions2.filter((action) => {
|
3673
3957
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -3726,6 +4010,7 @@ const EditAction = ({ documentId }) => {
|
|
3726
4010
|
};
|
3727
4011
|
};
|
3728
4012
|
EditAction.type = "edit";
|
4013
|
+
EditAction.position = "table-row";
|
3729
4014
|
const StyledPencil = styled(Pencil)`
|
3730
4015
|
path {
|
3731
4016
|
fill: currentColor;
|
@@ -3802,6 +4087,7 @@ const CloneAction = ({ model, documentId }) => {
|
|
3802
4087
|
};
|
3803
4088
|
};
|
3804
4089
|
CloneAction.type = "clone";
|
4090
|
+
CloneAction.position = "table-row";
|
3805
4091
|
const StyledDuplicate = styled(Duplicate)`
|
3806
4092
|
path {
|
3807
4093
|
fill: currentColor;
|
@@ -3888,7 +4174,14 @@ class ContentManagerPlugin {
|
|
3888
4174
|
addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),
|
3889
4175
|
addEditViewSidePanel: this.addEditViewSidePanel.bind(this),
|
3890
4176
|
getBulkActions: () => this.bulkActions,
|
3891
|
-
getDocumentActions: () =>
|
4177
|
+
getDocumentActions: (position) => {
|
4178
|
+
if (position) {
|
4179
|
+
return this.documentActions.filter(
|
4180
|
+
(action) => action.position == void 0 || [action.position].flat().includes(position)
|
4181
|
+
);
|
4182
|
+
}
|
4183
|
+
return this.documentActions;
|
4184
|
+
},
|
3892
4185
|
getEditViewSidePanels: () => this.editViewSidePanels,
|
3893
4186
|
getHeaderActions: () => this.headerActions
|
3894
4187
|
}
|
@@ -3898,10 +4191,8 @@ class ContentManagerPlugin {
|
|
3898
4191
|
const getPrintableType = (value) => {
|
3899
4192
|
const nativeType = typeof value;
|
3900
4193
|
if (nativeType === "object") {
|
3901
|
-
if (value === null)
|
3902
|
-
|
3903
|
-
if (Array.isArray(value))
|
3904
|
-
return "array";
|
4194
|
+
if (value === null) return "null";
|
4195
|
+
if (Array.isArray(value)) return "array";
|
3905
4196
|
if (value instanceof Object && value.constructor.name !== "Object") {
|
3906
4197
|
return value.constructor.name;
|
3907
4198
|
}
|
@@ -3912,17 +4203,27 @@ const HistoryAction = ({ model, document }) => {
|
|
3912
4203
|
const { formatMessage } = useIntl();
|
3913
4204
|
const [{ query }] = useQueryParams();
|
3914
4205
|
const navigate = useNavigate();
|
4206
|
+
const { trackUsage } = useTracking();
|
4207
|
+
const { pathname } = useLocation();
|
3915
4208
|
const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
|
3916
4209
|
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
3917
4210
|
return null;
|
3918
4211
|
}
|
4212
|
+
const handleOnClick = () => {
|
4213
|
+
const destination = { pathname: "history", search: pluginsQueryParams };
|
4214
|
+
trackUsage("willNavigate", {
|
4215
|
+
from: pathname,
|
4216
|
+
to: `${pathname}/${destination.pathname}`
|
4217
|
+
});
|
4218
|
+
navigate(destination);
|
4219
|
+
};
|
3919
4220
|
return {
|
3920
4221
|
icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
|
3921
4222
|
label: formatMessage({
|
3922
4223
|
id: "content-manager.history.document-action",
|
3923
4224
|
defaultMessage: "Content History"
|
3924
4225
|
}),
|
3925
|
-
onClick:
|
4226
|
+
onClick: handleOnClick,
|
3926
4227
|
disabled: (
|
3927
4228
|
/**
|
3928
4229
|
* The user is creating a new document.
|
@@ -3944,6 +4245,7 @@ const HistoryAction = ({ model, document }) => {
|
|
3944
4245
|
};
|
3945
4246
|
};
|
3946
4247
|
HistoryAction.type = "history";
|
4248
|
+
HistoryAction.position = "header";
|
3947
4249
|
const historyAdmin = {
|
3948
4250
|
bootstrap(app) {
|
3949
4251
|
const { addDocumentAction } = app.getPlugin("content-manager").apis;
|
@@ -3990,6 +4292,88 @@ const { setInitialData } = actions;
|
|
3990
4292
|
const reducer = combineReducers({
|
3991
4293
|
app: reducer$1
|
3992
4294
|
});
|
4295
|
+
const previewApi = contentManagerApi.injectEndpoints({
|
4296
|
+
endpoints: (builder) => ({
|
4297
|
+
getPreviewUrl: builder.query({
|
4298
|
+
query({ query, params }) {
|
4299
|
+
return {
|
4300
|
+
url: `/content-manager/preview/url/${params.contentType}`,
|
4301
|
+
method: "GET",
|
4302
|
+
config: {
|
4303
|
+
params: query
|
4304
|
+
}
|
4305
|
+
};
|
4306
|
+
}
|
4307
|
+
})
|
4308
|
+
})
|
4309
|
+
});
|
4310
|
+
const { useGetPreviewUrlQuery } = previewApi;
|
4311
|
+
const ConditionalTooltip = ({ isShown, label, children }) => {
|
4312
|
+
if (isShown) {
|
4313
|
+
return /* @__PURE__ */ jsx(Tooltip, { label, children });
|
4314
|
+
}
|
4315
|
+
return children;
|
4316
|
+
};
|
4317
|
+
const PreviewSidePanel = ({ model, documentId, document }) => {
|
4318
|
+
const { formatMessage } = useIntl();
|
4319
|
+
const { trackUsage } = useTracking();
|
4320
|
+
const { pathname } = useLocation();
|
4321
|
+
const [{ query }] = useQueryParams();
|
4322
|
+
const isModified = useForm("PreviewSidePanel", (state) => state.modified);
|
4323
|
+
const { data, error } = useGetPreviewUrlQuery({
|
4324
|
+
params: {
|
4325
|
+
contentType: model
|
4326
|
+
},
|
4327
|
+
query: {
|
4328
|
+
documentId,
|
4329
|
+
locale: document?.locale,
|
4330
|
+
status: document?.status
|
4331
|
+
}
|
4332
|
+
});
|
4333
|
+
if (!data?.data?.url || error) {
|
4334
|
+
return null;
|
4335
|
+
}
|
4336
|
+
const trackNavigation = () => {
|
4337
|
+
const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
|
4338
|
+
trackUsage("willNavigate", { from: pathname, to: destinationPathname });
|
4339
|
+
};
|
4340
|
+
return {
|
4341
|
+
title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
|
4342
|
+
content: /* @__PURE__ */ jsx(
|
4343
|
+
ConditionalTooltip,
|
4344
|
+
{
|
4345
|
+
label: formatMessage({
|
4346
|
+
id: "content-manager.preview.panel.button-disabled-tooltip",
|
4347
|
+
defaultMessage: "Please save to open the preview"
|
4348
|
+
}),
|
4349
|
+
isShown: isModified,
|
4350
|
+
children: /* @__PURE__ */ jsx(Box, { cursor: "not-allowed", width: "100%", children: /* @__PURE__ */ jsx(
|
4351
|
+
Button,
|
4352
|
+
{
|
4353
|
+
variant: "tertiary",
|
4354
|
+
tag: Link,
|
4355
|
+
to: { pathname: "preview", search: stringify(query, { encode: false }) },
|
4356
|
+
onClick: trackNavigation,
|
4357
|
+
width: "100%",
|
4358
|
+
disabled: isModified,
|
4359
|
+
pointerEvents: isModified ? "none" : void 0,
|
4360
|
+
tabIndex: isModified ? -1 : void 0,
|
4361
|
+
children: formatMessage({
|
4362
|
+
id: "content-manager.preview.panel.button",
|
4363
|
+
defaultMessage: "Open preview"
|
4364
|
+
})
|
4365
|
+
}
|
4366
|
+
) })
|
4367
|
+
}
|
4368
|
+
)
|
4369
|
+
};
|
4370
|
+
};
|
4371
|
+
const previewAdmin = {
|
4372
|
+
bootstrap(app) {
|
4373
|
+
const contentManagerPluginApis = app.getPlugin("content-manager").apis;
|
4374
|
+
contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
|
4375
|
+
}
|
4376
|
+
};
|
3993
4377
|
const index = {
|
3994
4378
|
register(app) {
|
3995
4379
|
const cm = new ContentManagerPlugin();
|
@@ -4009,7 +4393,7 @@ const index = {
|
|
4009
4393
|
app.router.addRoute({
|
4010
4394
|
path: "content-manager/*",
|
4011
4395
|
lazy: async () => {
|
4012
|
-
const { Layout } = await import("./layout-
|
4396
|
+
const { Layout } = await import("./layout-fQk1rMk9.mjs");
|
4013
4397
|
return {
|
4014
4398
|
Component: Layout
|
4015
4399
|
};
|
@@ -4022,11 +4406,14 @@ const index = {
|
|
4022
4406
|
if (typeof historyAdmin.bootstrap === "function") {
|
4023
4407
|
historyAdmin.bootstrap(app);
|
4024
4408
|
}
|
4409
|
+
if (typeof previewAdmin.bootstrap === "function") {
|
4410
|
+
previewAdmin.bootstrap(app);
|
4411
|
+
}
|
4025
4412
|
},
|
4026
4413
|
async registerTrads({ locales }) {
|
4027
4414
|
const importedTrads = await Promise.all(
|
4028
4415
|
locales.map((locale) => {
|
4029
|
-
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-
|
4416
|
+
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-D65uIF6Y.mjs"), "./translations/es.json": () => import("./es-D34tqjMw.mjs"), "./translations/eu.json": () => import("./eu-CdALomew.mjs"), "./translations/fr.json": () => import("./fr-DBseuRuB.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 }) => {
|
4030
4417
|
return {
|
4031
4418
|
data: prefixPluginTranslations(data, PLUGIN_ID),
|
4032
4419
|
locale
|
@@ -4043,23 +4430,27 @@ const index = {
|
|
4043
4430
|
}
|
4044
4431
|
};
|
4045
4432
|
export {
|
4046
|
-
|
4433
|
+
useUpdateContentTypeConfigurationMutation as A,
|
4047
4434
|
BulkActionsRenderer as B,
|
4048
4435
|
COLLECTION_TYPES as C,
|
4049
4436
|
DocumentStatus as D,
|
4050
|
-
|
4051
|
-
|
4052
|
-
|
4437
|
+
ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD as E,
|
4438
|
+
extractContentTypeComponents as F,
|
4439
|
+
DEFAULT_SETTINGS as G,
|
4053
4440
|
HOOKS as H,
|
4054
4441
|
InjectionZone as I,
|
4055
|
-
|
4056
|
-
|
4057
|
-
|
4058
|
-
|
4442
|
+
convertEditLayoutToFieldLayouts as J,
|
4443
|
+
removeFieldsThatDontExistOnSchema as K,
|
4444
|
+
prepareTempKeys as L,
|
4445
|
+
useDocument as M,
|
4446
|
+
useGetPreviewUrlQuery as N,
|
4447
|
+
index as O,
|
4059
4448
|
Panels as P,
|
4449
|
+
useContentManagerContext as Q,
|
4060
4450
|
RelativeTime as R,
|
4061
4451
|
SINGLE_TYPES as S,
|
4062
4452
|
TableActions as T,
|
4453
|
+
useDocumentActions as U,
|
4063
4454
|
useGetInitialDataQuery as a,
|
4064
4455
|
useGetAllContentTypeSettingsQuery as b,
|
4065
4456
|
useDoc as c,
|
@@ -4072,19 +4463,19 @@ export {
|
|
4072
4463
|
Header as j,
|
4073
4464
|
PERMISSIONS as k,
|
4074
4465
|
DocumentRBAC as l,
|
4075
|
-
|
4076
|
-
|
4077
|
-
|
4466
|
+
useDocLayout as m,
|
4467
|
+
createDefaultForm as n,
|
4468
|
+
CLONE_PATH as o,
|
4078
4469
|
useGetContentTypeConfigurationQuery as p,
|
4079
4470
|
CREATOR_FIELDS as q,
|
4080
4471
|
getMainField as r,
|
4081
4472
|
setInitialData as s,
|
4082
|
-
|
4473
|
+
transformDocument as t,
|
4083
4474
|
useContentTypeSchema as u,
|
4084
|
-
|
4085
|
-
|
4086
|
-
|
4087
|
-
|
4088
|
-
|
4475
|
+
getDisplayName as v,
|
4476
|
+
checkIfAttributeIsDisplayable as w,
|
4477
|
+
useGetAllDocumentsQuery as x,
|
4478
|
+
convertListLayoutToFieldLayouts as y,
|
4479
|
+
capitalise as z
|
4089
4480
|
};
|
4090
|
-
//# sourceMappingURL=index-
|
4481
|
+
//# sourceMappingURL=index-ZKrsjv-2.mjs.map
|