@strapi/content-manager 0.0.0-experimental.fccfa141baa6df7776ec7cb83f7fe923626ba6f5 → 0.0.0-experimental.fd51913e4ee4e81a845e6f5bcfd4916cac70ca2e
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-CQroR9Qk.mjs → ComponentConfigurationPage-9_4yUE9L.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-CQroR9Qk.mjs.map → ComponentConfigurationPage-9_4yUE9L.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CO977CPh.js → ComponentConfigurationPage-DBSh-kET.js} +4 -5
- package/dist/_chunks/{ComponentConfigurationPage-CO977CPh.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-BPgoE-kf.js → EditConfigurationPage-Bl_U2JgH.js} +4 -5
- package/dist/_chunks/{EditConfigurationPage-BPgoE-kf.js.map → EditConfigurationPage-Bl_U2JgH.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-tVCJ5vWC.mjs → EditConfigurationPage-COe6hjPC.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-tVCJ5vWC.mjs.map → EditConfigurationPage-COe6hjPC.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-BMVgUNOX.js → EditViewPage-D4yFJET6.js} +23 -57
- package/dist/_chunks/EditViewPage-D4yFJET6.js.map +1 -0
- package/dist/_chunks/{EditViewPage-8mOu02ji.mjs → EditViewPage-DrmVmYN0.mjs} +21 -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-eP5bZwap.js → Form-C4rSaGsz.js} +5 -6
- package/dist/_chunks/{Form-eP5bZwap.js.map → Form-C4rSaGsz.js.map} +1 -1
- package/dist/_chunks/{Form-DJOJ-GF1.mjs → Form-DamaxNpG.mjs} +3 -3
- package/dist/_chunks/{Form-DJOJ-GF1.mjs.map → Form-DamaxNpG.mjs.map} +1 -1
- package/dist/_chunks/{History-MnQLtk1g.mjs → History-D1PreDSY.mjs} +51 -97
- package/dist/_chunks/History-D1PreDSY.mjs.map +1 -0
- package/dist/_chunks/{History-B-Mrquzu.js → History-DTm8UCCQ.js} +62 -109
- package/dist/_chunks/History-DTm8UCCQ.js.map +1 -0
- package/dist/_chunks/{Field-CdSLKFQk.js → Input-B7sapvBG.js} +1293 -1271
- package/dist/_chunks/Input-B7sapvBG.js.map +1 -0
- package/dist/_chunks/{Field-CJPYzwD7.mjs → Input-CZ1YvjHR.mjs} +1332 -1310
- package/dist/_chunks/Input-CZ1YvjHR.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-BcycI8Lw.mjs → ListConfigurationPage-Bbi32isk.mjs} +6 -5
- package/dist/_chunks/ListConfigurationPage-Bbi32isk.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-C0n4rUzH.js → ListConfigurationPage-ysFMjKI3.js} +6 -6
- package/dist/_chunks/ListConfigurationPage-ysFMjKI3.js.map +1 -0
- package/dist/_chunks/{ListViewPage-CRXONXwZ.mjs → ListViewPage-Bud_jBDQ.mjs} +67 -41
- package/dist/_chunks/ListViewPage-Bud_jBDQ.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-q0SHVPUS.js → ListViewPage-DTuuxU3n.js} +73 -48
- package/dist/_chunks/ListViewPage-DTuuxU3n.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-Bh3komDV.js → NoContentTypePage-CL7VVeYs.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-Bh3komDV.js.map → NoContentTypePage-CL7VVeYs.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-ukzFRF3z.mjs → NoContentTypePage-DVhkugsf.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-ukzFRF3z.mjs.map → NoContentTypePage-DVhkugsf.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-B4sD7Ble.mjs → NoPermissionsPage-CMdM-dCo.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-B4sD7Ble.mjs.map → NoPermissionsPage-CMdM-dCo.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-BGBpj_Y1.js → NoPermissionsPage-v7I599vC.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-BGBpj_Y1.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-CIexb8gr.mjs → Relations-C2Ahkrdg.mjs} +47 -22
- package/dist/_chunks/Relations-C2Ahkrdg.mjs.map +1 -0
- package/dist/_chunks/{Relations-B53wYe8g.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-DbT2sx-Q.js → index-DQsvBb_N.js} +629 -235
- package/dist/_chunks/index-DQsvBb_N.js.map +1 -0
- package/dist/_chunks/{index-CJ2vYwuT.mjs → index-ZKrsjv-2.mjs} +645 -251
- 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-CeBSIkmP.js → layout-Cl0NhlQB.js} +5 -6
- package/dist/_chunks/{layout-CeBSIkmP.js.map → layout-Cl0NhlQB.js.map} +1 -1
- package/dist/_chunks/{layout-vzKSrr7p.mjs → layout-fQk1rMk9.mjs} +4 -4
- package/dist/_chunks/{layout-vzKSrr7p.mjs.map → layout-fQk1rMk9.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-Cl-6t9iz.js → relations-BRfBxVbX.js} +6 -7
- package/dist/_chunks/relations-BRfBxVbX.js.map +1 -0
- package/dist/_chunks/{relations-DI0lguF0.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-8mOu02ji.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-BMVgUNOX.js.map +0 -1
- package/dist/_chunks/Field-CJPYzwD7.mjs.map +0 -1
- package/dist/_chunks/Field-CdSLKFQk.js.map +0 -1
- package/dist/_chunks/History-B-Mrquzu.js.map +0 -1
- package/dist/_chunks/History-MnQLtk1g.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-BcycI8Lw.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-C0n4rUzH.js.map +0 -1
- package/dist/_chunks/ListViewPage-CRXONXwZ.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-q0SHVPUS.js.map +0 -1
- package/dist/_chunks/Relations-B53wYe8g.js.map +0 -1
- package/dist/_chunks/Relations-CIexb8gr.mjs.map +0 -1
- package/dist/_chunks/index-CJ2vYwuT.mjs.map +0 -1
- package/dist/_chunks/index-DbT2sx-Q.js.map +0 -1
- package/dist/_chunks/relations-Cl-6t9iz.js.map +0 -1
- package/dist/_chunks/relations-DI0lguF0.mjs.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 = () => {
|
@@ -1661,10 +1829,10 @@ const useDocumentActions = () => {
|
|
1661
1829
|
update
|
1662
1830
|
};
|
1663
1831
|
};
|
1664
|
-
const ProtectedHistoryPage = lazy(
|
1665
|
-
() => import("./History-
|
1832
|
+
const ProtectedHistoryPage = React.lazy(
|
1833
|
+
() => import("./History-D1PreDSY.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
|
1666
1834
|
);
|
1667
|
-
const routes$
|
1835
|
+
const routes$2 = [
|
1668
1836
|
{
|
1669
1837
|
path: ":collectionType/:slug/:id/history",
|
1670
1838
|
Component: ProtectedHistoryPage
|
@@ -1674,32 +1842,45 @@ const routes$1 = [
|
|
1674
1842
|
Component: ProtectedHistoryPage
|
1675
1843
|
}
|
1676
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
|
+
];
|
1677
1858
|
const ProtectedEditViewPage = lazy(
|
1678
|
-
() => import("./EditViewPage-
|
1859
|
+
() => import("./EditViewPage-DrmVmYN0.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
|
1679
1860
|
);
|
1680
1861
|
const ProtectedListViewPage = lazy(
|
1681
|
-
() => import("./ListViewPage-
|
1862
|
+
() => import("./ListViewPage-Bud_jBDQ.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
|
1682
1863
|
);
|
1683
1864
|
const ProtectedListConfiguration = lazy(
|
1684
|
-
() => import("./ListConfigurationPage-
|
1865
|
+
() => import("./ListConfigurationPage-Bbi32isk.mjs").then((mod) => ({
|
1685
1866
|
default: mod.ProtectedListConfiguration
|
1686
1867
|
}))
|
1687
1868
|
);
|
1688
1869
|
const ProtectedEditConfigurationPage = lazy(
|
1689
|
-
() => import("./EditConfigurationPage-
|
1870
|
+
() => import("./EditConfigurationPage-COe6hjPC.mjs").then((mod) => ({
|
1690
1871
|
default: mod.ProtectedEditConfigurationPage
|
1691
1872
|
}))
|
1692
1873
|
);
|
1693
1874
|
const ProtectedComponentConfigurationPage = lazy(
|
1694
|
-
() => import("./ComponentConfigurationPage-
|
1875
|
+
() => import("./ComponentConfigurationPage-9_4yUE9L.mjs").then((mod) => ({
|
1695
1876
|
default: mod.ProtectedComponentConfigurationPage
|
1696
1877
|
}))
|
1697
1878
|
);
|
1698
1879
|
const NoPermissions = lazy(
|
1699
|
-
() => import("./NoPermissionsPage-
|
1880
|
+
() => import("./NoPermissionsPage-CMdM-dCo.mjs").then((mod) => ({ default: mod.NoPermissions }))
|
1700
1881
|
);
|
1701
1882
|
const NoContentType = lazy(
|
1702
|
-
() => import("./NoContentTypePage-
|
1883
|
+
() => import("./NoContentTypePage-DVhkugsf.mjs").then((mod) => ({ default: mod.NoContentType }))
|
1703
1884
|
);
|
1704
1885
|
const CollectionTypePages = () => {
|
1705
1886
|
const { collectionType } = useParams();
|
@@ -1711,7 +1892,7 @@ const CollectionTypePages = () => {
|
|
1711
1892
|
const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
|
1712
1893
|
const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
|
1713
1894
|
const LIST_RELATIVE_PATH = ":collectionType/:slug";
|
1714
|
-
const LIST_PATH = `/content-manager
|
1895
|
+
const LIST_PATH = `/content-manager/collection-types/:slug`;
|
1715
1896
|
const routes = [
|
1716
1897
|
{
|
1717
1898
|
path: LIST_RELATIVE_PATH,
|
@@ -1745,6 +1926,7 @@ const routes = [
|
|
1745
1926
|
path: "no-content-types",
|
1746
1927
|
Component: NoContentType
|
1747
1928
|
},
|
1929
|
+
...routes$2,
|
1748
1930
|
...routes$1
|
1749
1931
|
];
|
1750
1932
|
const DocumentActions = ({ actions: actions2 }) => {
|
@@ -1843,6 +2025,11 @@ const DocumentActionButton = (action) => {
|
|
1843
2025
|
) : null
|
1844
2026
|
] });
|
1845
2027
|
};
|
2028
|
+
const MenuItem = styled(Menu.Item)`
|
2029
|
+
&:hover {
|
2030
|
+
background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
|
2031
|
+
}
|
2032
|
+
`;
|
1846
2033
|
const DocumentActionsMenu = ({
|
1847
2034
|
actions: actions2,
|
1848
2035
|
children,
|
@@ -1901,48 +2088,32 @@ const DocumentActionsMenu = ({
|
|
1901
2088
|
/* @__PURE__ */ jsxs(Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
|
1902
2089
|
actions2.map((action) => {
|
1903
2090
|
return /* @__PURE__ */ jsx(
|
1904
|
-
|
2091
|
+
MenuItem,
|
1905
2092
|
{
|
1906
2093
|
disabled: action.disabled,
|
1907
2094
|
onSelect: handleClick(action),
|
1908
2095
|
display: "block",
|
1909
|
-
|
1910
|
-
|
1911
|
-
|
1912
|
-
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
|
1918
|
-
|
1919
|
-
|
1920
|
-
|
1921
|
-
|
1922
|
-
|
1923
|
-
|
1924
|
-
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
Flex,
|
1931
|
-
{
|
1932
|
-
alignItems: "center",
|
1933
|
-
background: "alternative100",
|
1934
|
-
borderStyle: "solid",
|
1935
|
-
borderColor: "alternative200",
|
1936
|
-
borderWidth: "1px",
|
1937
|
-
height: 5,
|
1938
|
-
paddingLeft: 2,
|
1939
|
-
paddingRight: 2,
|
1940
|
-
hasRadius: true,
|
1941
|
-
color: "alternative600",
|
1942
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
|
1943
|
-
}
|
1944
|
-
)
|
1945
|
-
] })
|
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
|
+
) })
|
1946
2117
|
},
|
1947
2118
|
action.id
|
1948
2119
|
);
|
@@ -2053,6 +2224,18 @@ const DocumentActionModal = ({
|
|
2053
2224
|
typeof Footer === "function" ? /* @__PURE__ */ jsx(Footer, { onClose: handleClose }) : Footer
|
2054
2225
|
] }) });
|
2055
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
|
+
};
|
2056
2239
|
const PublishAction$1 = ({
|
2057
2240
|
activeTab,
|
2058
2241
|
documentId,
|
@@ -2067,6 +2250,7 @@ const PublishAction$1 = ({
|
|
2067
2250
|
const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
2068
2251
|
const isListView = useMatch(LIST_PATH) !== null;
|
2069
2252
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2253
|
+
const { id } = useParams();
|
2070
2254
|
const { formatMessage } = useIntl();
|
2071
2255
|
const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
|
2072
2256
|
const { publish } = useDocumentActions();
|
@@ -2166,13 +2350,15 @@ const PublishAction$1 = ({
|
|
2166
2350
|
documentId,
|
2167
2351
|
params
|
2168
2352
|
},
|
2169
|
-
formValues
|
2353
|
+
transformData(formValues)
|
2170
2354
|
);
|
2171
2355
|
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2172
|
-
|
2173
|
-
|
2174
|
-
|
2175
|
-
|
2356
|
+
if (id === "create") {
|
2357
|
+
navigate({
|
2358
|
+
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
2359
|
+
search: rawQuery
|
2360
|
+
});
|
2361
|
+
}
|
2176
2362
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2177
2363
|
setErrors(formatValidationErrors(res.error));
|
2178
2364
|
}
|
@@ -2225,6 +2411,7 @@ const PublishAction$1 = ({
|
|
2225
2411
|
};
|
2226
2412
|
};
|
2227
2413
|
PublishAction$1.type = "publish";
|
2414
|
+
PublishAction$1.position = "panel";
|
2228
2415
|
const UpdateAction = ({
|
2229
2416
|
activeTab,
|
2230
2417
|
documentId,
|
@@ -2247,96 +2434,134 @@ const UpdateAction = ({
|
|
2247
2434
|
const validate = useForm("UpdateAction", (state) => state.validate);
|
2248
2435
|
const setErrors = useForm("UpdateAction", (state) => state.setErrors);
|
2249
2436
|
const resetForm = useForm("PublishAction", ({ resetForm: resetForm2 }) => resetForm2);
|
2250
|
-
|
2251
|
-
|
2252
|
-
|
2253
|
-
|
2254
|
-
|
2255
|
-
|
2256
|
-
|
2257
|
-
|
2258
|
-
|
2259
|
-
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2265
|
-
|
2266
|
-
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
|
+
})
|
2267
2453
|
});
|
2268
|
-
|
2269
|
-
|
2270
|
-
|
2271
|
-
|
2272
|
-
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2276
|
-
|
2277
|
-
|
2278
|
-
|
2279
|
-
|
2280
|
-
|
2281
|
-
model,
|
2282
|
-
documentId: cloneMatch.params.origin,
|
2283
|
-
params
|
2284
|
-
},
|
2285
|
-
document
|
2286
|
-
);
|
2287
|
-
if ("data" in res) {
|
2288
|
-
navigate(
|
2289
|
-
{
|
2290
|
-
pathname: `../${res.data.documentId}`,
|
2291
|
-
search: rawQuery
|
2292
|
-
},
|
2293
|
-
{ relative: "path" }
|
2294
|
-
);
|
2295
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2296
|
-
setErrors(formatValidationErrors(res.error));
|
2297
|
-
}
|
2298
|
-
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2299
|
-
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(
|
2300
2467
|
{
|
2301
|
-
|
2302
|
-
|
2303
|
-
documentId,
|
2304
|
-
params
|
2468
|
+
pathname: `../${res.data.documentId}`,
|
2469
|
+
search: rawQuery
|
2305
2470
|
},
|
2306
|
-
|
2471
|
+
{ relative: "path" }
|
2307
2472
|
);
|
2308
|
-
|
2309
|
-
|
2310
|
-
|
2311
|
-
|
2312
|
-
|
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));
|
2313
2488
|
} else {
|
2314
|
-
|
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(
|
2315
2501
|
{
|
2316
|
-
|
2317
|
-
|
2502
|
+
pathname: `../${res.data.documentId}`,
|
2503
|
+
search: rawQuery
|
2318
2504
|
},
|
2319
|
-
|
2505
|
+
{ replace: true, relative: "path" }
|
2320
2506
|
);
|
2321
|
-
|
2322
|
-
|
2323
|
-
{
|
2324
|
-
pathname: `../${res.data.documentId}`,
|
2325
|
-
search: rawQuery
|
2326
|
-
},
|
2327
|
-
{ replace: true, relative: "path" }
|
2328
|
-
);
|
2329
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2330
|
-
setErrors(formatValidationErrors(res.error));
|
2331
|
-
}
|
2507
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2508
|
+
setErrors(formatValidationErrors(res.error));
|
2332
2509
|
}
|
2333
|
-
} finally {
|
2334
|
-
setSubmitting(false);
|
2335
2510
|
}
|
2511
|
+
} finally {
|
2512
|
+
setSubmitting(false);
|
2336
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
|
2337
2561
|
};
|
2338
2562
|
};
|
2339
2563
|
UpdateAction.type = "update";
|
2564
|
+
UpdateAction.position = "panel";
|
2340
2565
|
const UNPUBLISH_DRAFT_OPTIONS = {
|
2341
2566
|
KEEP: "keep",
|
2342
2567
|
DISCARD: "discard"
|
@@ -2459,6 +2684,7 @@ const UnpublishAction$1 = ({
|
|
2459
2684
|
};
|
2460
2685
|
};
|
2461
2686
|
UnpublishAction$1.type = "unpublish";
|
2687
|
+
UnpublishAction$1.position = "panel";
|
2462
2688
|
const DiscardAction = ({
|
2463
2689
|
activeTab,
|
2464
2690
|
documentId,
|
@@ -2509,6 +2735,7 @@ const DiscardAction = ({
|
|
2509
2735
|
};
|
2510
2736
|
};
|
2511
2737
|
DiscardAction.type = "discard";
|
2738
|
+
DiscardAction.position = "panel";
|
2512
2739
|
const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
|
2513
2740
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
2514
2741
|
const RelativeTime = React.forwardRef(
|
@@ -2521,7 +2748,7 @@ const RelativeTime = React.forwardRef(
|
|
2521
2748
|
});
|
2522
2749
|
const unit = intervals.find((intervalUnit) => {
|
2523
2750
|
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
2524
|
-
});
|
2751
|
+
}) ?? "seconds";
|
2525
2752
|
const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
|
2526
2753
|
const customInterval = customIntervals.find(
|
2527
2754
|
(custom) => interval[custom.unit] < custom.threshold
|
@@ -2555,19 +2782,29 @@ const getDisplayName = ({
|
|
2555
2782
|
return email ?? "";
|
2556
2783
|
};
|
2557
2784
|
const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
2558
|
-
const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
2785
|
+
const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
|
2559
2786
|
const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
|
2560
|
-
|
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
|
+
}) }) });
|
2561
2792
|
};
|
2562
2793
|
const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
2563
2794
|
const { formatMessage } = useIntl();
|
2564
2795
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
2796
|
+
const params = useParams();
|
2565
2797
|
const title = isCreating ? formatMessage({
|
2566
2798
|
id: "content-manager.containers.edit.title.new",
|
2567
2799
|
defaultMessage: "Create an entry"
|
2568
2800
|
}) : documentTitle;
|
2569
2801
|
return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
|
2570
|
-
/* @__PURE__ */ jsx(
|
2802
|
+
/* @__PURE__ */ jsx(
|
2803
|
+
BackButton,
|
2804
|
+
{
|
2805
|
+
fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
|
2806
|
+
}
|
2807
|
+
),
|
2571
2808
|
/* @__PURE__ */ jsxs(Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
|
2572
2809
|
/* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
|
2573
2810
|
/* @__PURE__ */ jsx(HeaderToolbar, {})
|
@@ -2618,7 +2855,7 @@ const HeaderToolbar = () => {
|
|
2618
2855
|
meta: isCloning ? void 0 : meta,
|
2619
2856
|
collectionType
|
2620
2857
|
},
|
2621
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
2858
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("header"),
|
2622
2859
|
children: (actions2) => {
|
2623
2860
|
const headerActions = actions2.filter((action) => {
|
2624
2861
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -2826,6 +3063,7 @@ const ConfigureTheViewAction = ({ collectionType, model }) => {
|
|
2826
3063
|
};
|
2827
3064
|
};
|
2828
3065
|
ConfigureTheViewAction.type = "configure-the-view";
|
3066
|
+
ConfigureTheViewAction.position = "header";
|
2829
3067
|
const EditTheModelAction = ({ model }) => {
|
2830
3068
|
const navigate = useNavigate();
|
2831
3069
|
const { formatMessage } = useIntl();
|
@@ -2842,6 +3080,7 @@ const EditTheModelAction = ({ model }) => {
|
|
2842
3080
|
};
|
2843
3081
|
};
|
2844
3082
|
EditTheModelAction.type = "edit-the-model";
|
3083
|
+
EditTheModelAction.position = "header";
|
2845
3084
|
const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
2846
3085
|
const navigate = useNavigate();
|
2847
3086
|
const { formatMessage } = useIntl();
|
@@ -2915,6 +3154,7 @@ const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
|
2915
3154
|
};
|
2916
3155
|
};
|
2917
3156
|
DeleteAction$1.type = "delete";
|
3157
|
+
DeleteAction$1.position = ["header", "table-row"];
|
2918
3158
|
const DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction$1];
|
2919
3159
|
const Panels = () => {
|
2920
3160
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
@@ -2977,7 +3217,7 @@ const ActionsPanelContent = () => {
|
|
2977
3217
|
DescriptionComponentRenderer,
|
2978
3218
|
{
|
2979
3219
|
props,
|
2980
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
3220
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("panel"),
|
2981
3221
|
children: (actions2) => /* @__PURE__ */ jsx(DocumentActions, { actions: actions2 })
|
2982
3222
|
}
|
2983
3223
|
),
|
@@ -3004,7 +3244,7 @@ const Panel = React.forwardRef(({ children, title }, ref) => {
|
|
3004
3244
|
justifyContent: "stretch",
|
3005
3245
|
alignItems: "flex-start",
|
3006
3246
|
children: [
|
3007
|
-
/* @__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 }),
|
3008
3248
|
children
|
3009
3249
|
]
|
3010
3250
|
}
|
@@ -3035,7 +3275,7 @@ const ConfirmBulkActionDialog = ({
|
|
3035
3275
|
] })
|
3036
3276
|
] }) });
|
3037
3277
|
};
|
3038
|
-
const BoldChunk
|
3278
|
+
const BoldChunk = (chunks) => /* @__PURE__ */ jsx(Typography, { fontWeight: "bold", children: chunks });
|
3039
3279
|
const ConfirmDialogPublishAll = ({
|
3040
3280
|
isOpen,
|
3041
3281
|
onToggleDialog,
|
@@ -3084,7 +3324,7 @@ const ConfirmDialogPublishAll = ({
|
|
3084
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. "
|
3085
3325
|
},
|
3086
3326
|
{
|
3087
|
-
b: BoldChunk
|
3327
|
+
b: BoldChunk,
|
3088
3328
|
count: countDraftRelations,
|
3089
3329
|
entities: selectedEntries.length
|
3090
3330
|
}
|
@@ -3123,6 +3363,16 @@ const ConfirmDialogPublishAll = ({
|
|
3123
3363
|
const TypographyMaxWidth = styled(Typography)`
|
3124
3364
|
max-width: 300px;
|
3125
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
|
+
`;
|
3126
3376
|
const formatErrorMessages = (errors, parentKey, formatMessage) => {
|
3127
3377
|
const messages = [];
|
3128
3378
|
Object.entries(errors).forEach(([key, value]) => {
|
@@ -3227,7 +3477,7 @@ const SelectedEntriesTableContent = ({
|
|
3227
3477
|
)
|
3228
3478
|
] }),
|
3229
3479
|
/* @__PURE__ */ jsx(Table.Loading, {}),
|
3230
|
-
/* @__PURE__ */ jsx(Table.Body, { children: rowsToDisplay.map((row
|
3480
|
+
/* @__PURE__ */ jsx(Table.Body, { children: rowsToDisplay.map((row) => /* @__PURE__ */ jsxs(Table.Row, { children: [
|
3231
3481
|
/* @__PURE__ */ jsx(Table.CheckboxCell, { id: row.id }),
|
3232
3482
|
/* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Typography, { children: row.id }) }),
|
3233
3483
|
shouldDisplayMainField && /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Typography, { children: row[mainField] }) }),
|
@@ -3254,18 +3504,10 @@ const SelectedEntriesTableContent = ({
|
|
3254
3504
|
search: row.locale && `?plugins[i18n][locale]=${row.locale}`
|
3255
3505
|
},
|
3256
3506
|
state: { from: pathname },
|
3257
|
-
label: formatMessage(
|
3258
|
-
|
3259
|
-
|
3260
|
-
|
3261
|
-
{
|
3262
|
-
id: "content-manager.components.ListViewHelperPluginTable.row-line",
|
3263
|
-
defaultMessage: "item line {number}"
|
3264
|
-
},
|
3265
|
-
{ number: index2 + 1 }
|
3266
|
-
)
|
3267
|
-
}
|
3268
|
-
),
|
3507
|
+
label: formatMessage({
|
3508
|
+
id: "content-manager.bulk-publish.edit",
|
3509
|
+
defaultMessage: "Edit"
|
3510
|
+
}),
|
3269
3511
|
target: "_blank",
|
3270
3512
|
marginLeft: "auto",
|
3271
3513
|
variant: "ghost",
|
@@ -3275,7 +3517,73 @@ const SelectedEntriesTableContent = ({
|
|
3275
3517
|
] }, row.id)) })
|
3276
3518
|
] });
|
3277
3519
|
};
|
3278
|
-
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
|
+
};
|
3279
3587
|
const SelectedEntriesModalContent = ({
|
3280
3588
|
listViewSelectedEntries,
|
3281
3589
|
toggleModal,
|
@@ -3334,7 +3642,6 @@ const SelectedEntriesModalContent = ({
|
|
3334
3642
|
validationErrors: {}
|
3335
3643
|
};
|
3336
3644
|
}, [components, data, schema]);
|
3337
|
-
const [publishedCount, setPublishedCount] = React.useState(0);
|
3338
3645
|
const [isDialogOpen, setIsDialogOpen] = React.useState(false);
|
3339
3646
|
const { publishMany: bulkPublishAction } = useDocumentActions();
|
3340
3647
|
const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();
|
@@ -3346,53 +3653,36 @@ const SelectedEntriesModalContent = ({
|
|
3346
3653
|
const selectedEntriesWithErrorsCount = selectedEntries.filter(
|
3347
3654
|
({ documentId }) => validationErrors[documentId]
|
3348
3655
|
).length;
|
3349
|
-
const
|
3656
|
+
const selectedEntriesPublishedCount = selectedEntries.filter(
|
3350
3657
|
({ status }) => status === "published"
|
3351
3658
|
).length;
|
3352
|
-
const
|
3659
|
+
const selectedEntriesModifiedCount = selectedEntries.filter(
|
3660
|
+
({ status, documentId }) => status === "modified" && !validationErrors[documentId]
|
3661
|
+
).length;
|
3662
|
+
const selectedEntriesWithNoErrorsCount = selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;
|
3353
3663
|
const toggleDialog = () => setIsDialogOpen((prev) => !prev);
|
3354
3664
|
const handleConfirmBulkPublish = async () => {
|
3355
3665
|
toggleDialog();
|
3356
3666
|
const res = await bulkPublishAction({ model, documentIds: entriesToPublish, params });
|
3357
3667
|
if (!("error" in res)) {
|
3358
|
-
setPublishedCount(res.count);
|
3359
3668
|
const unpublishedEntries = rows.filter((row) => {
|
3360
3669
|
return !entriesToPublish.includes(row.documentId);
|
3361
3670
|
});
|
3362
3671
|
setListViewSelectedDocuments(unpublishedEntries);
|
3363
3672
|
}
|
3364
3673
|
};
|
3365
|
-
const getFormattedCountMessage = () => {
|
3366
|
-
if (publishedCount) {
|
3367
|
-
return formatMessage(
|
3368
|
-
{
|
3369
|
-
id: getTranslation("containers.list.selectedEntriesModal.publishedCount"),
|
3370
|
-
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."
|
3371
|
-
},
|
3372
|
-
{
|
3373
|
-
publishedCount,
|
3374
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3375
|
-
b: BoldChunk
|
3376
|
-
}
|
3377
|
-
);
|
3378
|
-
}
|
3379
|
-
return formatMessage(
|
3380
|
-
{
|
3381
|
-
id: getTranslation("containers.list.selectedEntriesModal.selectedCount"),
|
3382
|
-
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."
|
3383
|
-
},
|
3384
|
-
{
|
3385
|
-
readyToPublishCount: selectedEntriesWithNoErrorsCount,
|
3386
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3387
|
-
alreadyPublishedCount: selectedEntriesPublished,
|
3388
|
-
b: BoldChunk
|
3389
|
-
}
|
3390
|
-
);
|
3391
|
-
};
|
3392
3674
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
3393
3675
|
/* @__PURE__ */ jsxs(Modal.Body, { children: [
|
3394
|
-
/* @__PURE__ */ jsx(
|
3395
|
-
|
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(
|
3396
3686
|
SelectedEntriesTableContent,
|
3397
3687
|
{
|
3398
3688
|
isPublishing: isSubmittingForm,
|
@@ -3413,7 +3703,7 @@ const SelectedEntriesModalContent = ({
|
|
3413
3703
|
Button,
|
3414
3704
|
{
|
3415
3705
|
onClick: toggleDialog,
|
3416
|
-
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount ||
|
3706
|
+
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount || selectedEntriesPublishedCount === selectedEntries.length || isLoading,
|
3417
3707
|
loading: isSubmittingForm,
|
3418
3708
|
children: formatMessage({ id: "app.utils.publish", defaultMessage: "Publish" })
|
3419
3709
|
}
|
@@ -3439,8 +3729,7 @@ const PublishAction = ({ documents, model }) => {
|
|
3439
3729
|
const refetchList = () => {
|
3440
3730
|
contentManagerApi.util.invalidateTags([{ type: "Document", id: `${model}_LIST` }]);
|
3441
3731
|
};
|
3442
|
-
if (!showPublishButton)
|
3443
|
-
return null;
|
3732
|
+
if (!showPublishButton) return null;
|
3444
3733
|
return {
|
3445
3734
|
actionType: "publish",
|
3446
3735
|
variant: "tertiary",
|
@@ -3508,8 +3797,7 @@ const DeleteAction = ({ documents, model }) => {
|
|
3508
3797
|
selectRow([]);
|
3509
3798
|
}
|
3510
3799
|
};
|
3511
|
-
if (!hasDeletePermission)
|
3512
|
-
return null;
|
3800
|
+
if (!hasDeletePermission) return null;
|
3513
3801
|
return {
|
3514
3802
|
variant: "danger-light",
|
3515
3803
|
label: formatMessage({ id: "global.delete", defaultMessage: "Delete" }),
|
@@ -3558,8 +3846,7 @@ const UnpublishAction = ({ documents, model }) => {
|
|
3558
3846
|
}
|
3559
3847
|
};
|
3560
3848
|
const showUnpublishButton = hasDraftAndPublishEnabled && hasPublishPermission && documents.some((entry) => entry.status === "published" || entry.status === "modified");
|
3561
|
-
if (!showUnpublishButton)
|
3562
|
-
return null;
|
3849
|
+
if (!showUnpublishButton) return null;
|
3563
3850
|
return {
|
3564
3851
|
variant: "tertiary",
|
3565
3852
|
label: formatMessage({ id: "app.utils.unpublish", defaultMessage: "Unpublish" }),
|
@@ -3664,7 +3951,7 @@ const TableActions = ({ document }) => {
|
|
3664
3951
|
DescriptionComponentRenderer,
|
3665
3952
|
{
|
3666
3953
|
props,
|
3667
|
-
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"),
|
3668
3955
|
children: (actions2) => {
|
3669
3956
|
const tableRowActions = actions2.filter((action) => {
|
3670
3957
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -3723,6 +4010,7 @@ const EditAction = ({ documentId }) => {
|
|
3723
4010
|
};
|
3724
4011
|
};
|
3725
4012
|
EditAction.type = "edit";
|
4013
|
+
EditAction.position = "table-row";
|
3726
4014
|
const StyledPencil = styled(Pencil)`
|
3727
4015
|
path {
|
3728
4016
|
fill: currentColor;
|
@@ -3799,6 +4087,7 @@ const CloneAction = ({ model, documentId }) => {
|
|
3799
4087
|
};
|
3800
4088
|
};
|
3801
4089
|
CloneAction.type = "clone";
|
4090
|
+
CloneAction.position = "table-row";
|
3802
4091
|
const StyledDuplicate = styled(Duplicate)`
|
3803
4092
|
path {
|
3804
4093
|
fill: currentColor;
|
@@ -3885,7 +4174,14 @@ class ContentManagerPlugin {
|
|
3885
4174
|
addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),
|
3886
4175
|
addEditViewSidePanel: this.addEditViewSidePanel.bind(this),
|
3887
4176
|
getBulkActions: () => this.bulkActions,
|
3888
|
-
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
|
+
},
|
3889
4185
|
getEditViewSidePanels: () => this.editViewSidePanels,
|
3890
4186
|
getHeaderActions: () => this.headerActions
|
3891
4187
|
}
|
@@ -3895,10 +4191,8 @@ class ContentManagerPlugin {
|
|
3895
4191
|
const getPrintableType = (value) => {
|
3896
4192
|
const nativeType = typeof value;
|
3897
4193
|
if (nativeType === "object") {
|
3898
|
-
if (value === null)
|
3899
|
-
|
3900
|
-
if (Array.isArray(value))
|
3901
|
-
return "array";
|
4194
|
+
if (value === null) return "null";
|
4195
|
+
if (Array.isArray(value)) return "array";
|
3902
4196
|
if (value instanceof Object && value.constructor.name !== "Object") {
|
3903
4197
|
return value.constructor.name;
|
3904
4198
|
}
|
@@ -3909,17 +4203,27 @@ const HistoryAction = ({ model, document }) => {
|
|
3909
4203
|
const { formatMessage } = useIntl();
|
3910
4204
|
const [{ query }] = useQueryParams();
|
3911
4205
|
const navigate = useNavigate();
|
4206
|
+
const { trackUsage } = useTracking();
|
4207
|
+
const { pathname } = useLocation();
|
3912
4208
|
const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
|
3913
4209
|
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
3914
4210
|
return null;
|
3915
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
|
+
};
|
3916
4220
|
return {
|
3917
4221
|
icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
|
3918
4222
|
label: formatMessage({
|
3919
4223
|
id: "content-manager.history.document-action",
|
3920
4224
|
defaultMessage: "Content History"
|
3921
4225
|
}),
|
3922
|
-
onClick:
|
4226
|
+
onClick: handleOnClick,
|
3923
4227
|
disabled: (
|
3924
4228
|
/**
|
3925
4229
|
* The user is creating a new document.
|
@@ -3941,6 +4245,7 @@ const HistoryAction = ({ model, document }) => {
|
|
3941
4245
|
};
|
3942
4246
|
};
|
3943
4247
|
HistoryAction.type = "history";
|
4248
|
+
HistoryAction.position = "header";
|
3944
4249
|
const historyAdmin = {
|
3945
4250
|
bootstrap(app) {
|
3946
4251
|
const { addDocumentAction } = app.getPlugin("content-manager").apis;
|
@@ -3987,6 +4292,88 @@ const { setInitialData } = actions;
|
|
3987
4292
|
const reducer = combineReducers({
|
3988
4293
|
app: reducer$1
|
3989
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
|
+
};
|
3990
4377
|
const index = {
|
3991
4378
|
register(app) {
|
3992
4379
|
const cm = new ContentManagerPlugin();
|
@@ -4006,7 +4393,7 @@ const index = {
|
|
4006
4393
|
app.router.addRoute({
|
4007
4394
|
path: "content-manager/*",
|
4008
4395
|
lazy: async () => {
|
4009
|
-
const { Layout } = await import("./layout-
|
4396
|
+
const { Layout } = await import("./layout-fQk1rMk9.mjs");
|
4010
4397
|
return {
|
4011
4398
|
Component: Layout
|
4012
4399
|
};
|
@@ -4019,11 +4406,14 @@ const index = {
|
|
4019
4406
|
if (typeof historyAdmin.bootstrap === "function") {
|
4020
4407
|
historyAdmin.bootstrap(app);
|
4021
4408
|
}
|
4409
|
+
if (typeof previewAdmin.bootstrap === "function") {
|
4410
|
+
previewAdmin.bootstrap(app);
|
4411
|
+
}
|
4022
4412
|
},
|
4023
4413
|
async registerTrads({ locales }) {
|
4024
4414
|
const importedTrads = await Promise.all(
|
4025
4415
|
locales.map((locale) => {
|
4026
|
-
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 }) => {
|
4027
4417
|
return {
|
4028
4418
|
data: prefixPluginTranslations(data, PLUGIN_ID),
|
4029
4419
|
locale
|
@@ -4040,23 +4430,27 @@ const index = {
|
|
4040
4430
|
}
|
4041
4431
|
};
|
4042
4432
|
export {
|
4043
|
-
|
4433
|
+
useUpdateContentTypeConfigurationMutation as A,
|
4044
4434
|
BulkActionsRenderer as B,
|
4045
4435
|
COLLECTION_TYPES as C,
|
4046
4436
|
DocumentStatus as D,
|
4047
|
-
|
4048
|
-
|
4049
|
-
|
4437
|
+
ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD as E,
|
4438
|
+
extractContentTypeComponents as F,
|
4439
|
+
DEFAULT_SETTINGS as G,
|
4050
4440
|
HOOKS as H,
|
4051
4441
|
InjectionZone as I,
|
4052
|
-
|
4053
|
-
|
4054
|
-
|
4055
|
-
|
4442
|
+
convertEditLayoutToFieldLayouts as J,
|
4443
|
+
removeFieldsThatDontExistOnSchema as K,
|
4444
|
+
prepareTempKeys as L,
|
4445
|
+
useDocument as M,
|
4446
|
+
useGetPreviewUrlQuery as N,
|
4447
|
+
index as O,
|
4056
4448
|
Panels as P,
|
4449
|
+
useContentManagerContext as Q,
|
4057
4450
|
RelativeTime as R,
|
4058
4451
|
SINGLE_TYPES as S,
|
4059
4452
|
TableActions as T,
|
4453
|
+
useDocumentActions as U,
|
4060
4454
|
useGetInitialDataQuery as a,
|
4061
4455
|
useGetAllContentTypeSettingsQuery as b,
|
4062
4456
|
useDoc as c,
|
@@ -4069,19 +4463,19 @@ export {
|
|
4069
4463
|
Header as j,
|
4070
4464
|
PERMISSIONS as k,
|
4071
4465
|
DocumentRBAC as l,
|
4072
|
-
|
4073
|
-
|
4074
|
-
|
4466
|
+
useDocLayout as m,
|
4467
|
+
createDefaultForm as n,
|
4468
|
+
CLONE_PATH as o,
|
4075
4469
|
useGetContentTypeConfigurationQuery as p,
|
4076
4470
|
CREATOR_FIELDS as q,
|
4077
4471
|
getMainField as r,
|
4078
4472
|
setInitialData as s,
|
4079
|
-
|
4473
|
+
transformDocument as t,
|
4080
4474
|
useContentTypeSchema as u,
|
4081
|
-
|
4082
|
-
|
4083
|
-
|
4084
|
-
|
4085
|
-
|
4475
|
+
getDisplayName as v,
|
4476
|
+
checkIfAttributeIsDisplayable as w,
|
4477
|
+
useGetAllDocumentsQuery as x,
|
4478
|
+
convertListLayoutToFieldLayouts as y,
|
4479
|
+
capitalise as z
|
4086
4480
|
};
|
4087
|
-
//# sourceMappingURL=index-
|
4481
|
+
//# sourceMappingURL=index-ZKrsjv-2.mjs.map
|