@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
@@ -4,18 +4,19 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
5
5
|
const React = require("react");
|
6
6
|
const designSystem = require("@strapi/design-system");
|
7
|
+
const mapValues = require("lodash/fp/mapValues");
|
7
8
|
const reactIntl = require("react-intl");
|
8
9
|
const reactRouterDom = require("react-router-dom");
|
10
|
+
const styledComponents = require("styled-components");
|
9
11
|
const yup = require("yup");
|
12
|
+
const fractionalIndexing = require("fractional-indexing");
|
10
13
|
const pipe = require("lodash/fp/pipe");
|
11
|
-
const dateFns = require("date-fns");
|
12
|
-
const styledComponents = require("styled-components");
|
13
14
|
const qs = require("qs");
|
15
|
+
const dateFns = require("date-fns");
|
14
16
|
const toolkit = require("@reduxjs/toolkit");
|
15
17
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
16
18
|
function _interopNamespace(e) {
|
17
|
-
if (e && e.__esModule)
|
18
|
-
return e;
|
19
|
+
if (e && e.__esModule) return e;
|
19
20
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
20
21
|
if (e) {
|
21
22
|
for (const k in e) {
|
@@ -32,15 +33,23 @@ function _interopNamespace(e) {
|
|
32
33
|
return Object.freeze(n);
|
33
34
|
}
|
34
35
|
const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
36
|
+
const mapValues__default = /* @__PURE__ */ _interopDefault(mapValues);
|
35
37
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
36
38
|
const pipe__default = /* @__PURE__ */ _interopDefault(pipe);
|
37
|
-
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
39
|
+
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
38
40
|
const v = glob[path];
|
39
41
|
if (v) {
|
40
42
|
return typeof v === "function" ? v() : Promise.resolve(v);
|
41
43
|
}
|
42
44
|
return new Promise((_, reject) => {
|
43
|
-
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
45
|
+
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
46
|
+
reject.bind(
|
47
|
+
null,
|
48
|
+
new Error(
|
49
|
+
"Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
|
50
|
+
)
|
51
|
+
)
|
52
|
+
);
|
44
53
|
});
|
45
54
|
};
|
46
55
|
const PLUGIN_ID = "content-manager";
|
@@ -179,6 +188,113 @@ const extractAndDedupeFields = (permissions = []) => permissions.flatMap((permis
|
|
179
188
|
(field, index2, arr) => arr.indexOf(field) === index2 && typeof field === "string"
|
180
189
|
);
|
181
190
|
const removeNumericalStrings = (arr) => arr.filter((item) => isNaN(Number(item)));
|
191
|
+
const BLOCK_LIST_ATTRIBUTE_KEYS = ["__component", "__temp_key__"];
|
192
|
+
const traverseData = (predicate, transform) => (schema, components = {}) => (data = {}) => {
|
193
|
+
const traverse = (datum, attributes) => {
|
194
|
+
return Object.entries(datum).reduce((acc, [key, value]) => {
|
195
|
+
const attribute = attributes[key];
|
196
|
+
if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === void 0) {
|
197
|
+
acc[key] = value;
|
198
|
+
return acc;
|
199
|
+
}
|
200
|
+
if (attribute.type === "component") {
|
201
|
+
if (attribute.repeatable) {
|
202
|
+
const componentValue = predicate(attribute, value) ? transform(value, attribute) : value;
|
203
|
+
acc[key] = componentValue.map(
|
204
|
+
(componentData) => traverse(componentData, components[attribute.component]?.attributes ?? {})
|
205
|
+
);
|
206
|
+
} else {
|
207
|
+
const componentValue = predicate(attribute, value) ? transform(value, attribute) : value;
|
208
|
+
acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});
|
209
|
+
}
|
210
|
+
} else if (attribute.type === "dynamiczone") {
|
211
|
+
const dynamicZoneValue = predicate(attribute, value) ? transform(value, attribute) : value;
|
212
|
+
acc[key] = dynamicZoneValue.map(
|
213
|
+
(componentData) => traverse(componentData, components[componentData.__component]?.attributes ?? {})
|
214
|
+
);
|
215
|
+
} else if (predicate(attribute, value)) {
|
216
|
+
acc[key] = transform(value, attribute);
|
217
|
+
} else {
|
218
|
+
acc[key] = value;
|
219
|
+
}
|
220
|
+
return acc;
|
221
|
+
}, {});
|
222
|
+
};
|
223
|
+
return traverse(data, schema.attributes);
|
224
|
+
};
|
225
|
+
const removeProhibitedFields = (prohibitedFields) => traverseData(
|
226
|
+
(attribute) => prohibitedFields.includes(attribute.type),
|
227
|
+
() => ""
|
228
|
+
);
|
229
|
+
const prepareRelations = traverseData(
|
230
|
+
(attribute) => attribute.type === "relation",
|
231
|
+
() => ({
|
232
|
+
connect: [],
|
233
|
+
disconnect: []
|
234
|
+
})
|
235
|
+
);
|
236
|
+
const prepareTempKeys = traverseData(
|
237
|
+
(attribute) => attribute.type === "component" && attribute.repeatable || attribute.type === "dynamiczone",
|
238
|
+
(data) => {
|
239
|
+
if (Array.isArray(data) && data.length > 0) {
|
240
|
+
const keys = fractionalIndexing.generateNKeysBetween(void 0, void 0, data.length);
|
241
|
+
return data.map((datum, index2) => ({
|
242
|
+
...datum,
|
243
|
+
__temp_key__: keys[index2]
|
244
|
+
}));
|
245
|
+
}
|
246
|
+
return data;
|
247
|
+
}
|
248
|
+
);
|
249
|
+
const removeFieldsThatDontExistOnSchema = (schema) => (data) => {
|
250
|
+
const schemaKeys = Object.keys(schema.attributes);
|
251
|
+
const dataKeys = Object.keys(data);
|
252
|
+
const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));
|
253
|
+
const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {
|
254
|
+
delete acc[key];
|
255
|
+
return acc;
|
256
|
+
}, structuredClone(data));
|
257
|
+
return revisedData;
|
258
|
+
};
|
259
|
+
const removeNullValues = (data) => {
|
260
|
+
return Object.entries(data).reduce((acc, [key, value]) => {
|
261
|
+
if (value === null) {
|
262
|
+
return acc;
|
263
|
+
}
|
264
|
+
acc[key] = value;
|
265
|
+
return acc;
|
266
|
+
}, {});
|
267
|
+
};
|
268
|
+
const transformDocument = (schema, components = {}) => (document) => {
|
269
|
+
const transformations = pipe__default.default(
|
270
|
+
removeFieldsThatDontExistOnSchema(schema),
|
271
|
+
removeProhibitedFields(["password"])(schema, components),
|
272
|
+
removeNullValues,
|
273
|
+
prepareRelations(schema, components),
|
274
|
+
prepareTempKeys(schema, components)
|
275
|
+
);
|
276
|
+
return transformations(document);
|
277
|
+
};
|
278
|
+
const createDefaultForm = (contentType, components = {}) => {
|
279
|
+
const traverseSchema = (attributes) => {
|
280
|
+
return Object.entries(attributes).reduce((acc, [key, attribute]) => {
|
281
|
+
if ("default" in attribute) {
|
282
|
+
acc[key] = attribute.default;
|
283
|
+
} else if (attribute.type === "component" && attribute.required) {
|
284
|
+
const defaultComponentForm = traverseSchema(components[attribute.component].attributes);
|
285
|
+
if (attribute.repeatable) {
|
286
|
+
acc[key] = attribute.min ? [...Array(attribute.min).fill(defaultComponentForm)] : [];
|
287
|
+
} else {
|
288
|
+
acc[key] = defaultComponentForm;
|
289
|
+
}
|
290
|
+
} else if (attribute.type === "dynamiczone" && attribute.required) {
|
291
|
+
acc[key] = [];
|
292
|
+
}
|
293
|
+
return acc;
|
294
|
+
}, {});
|
295
|
+
};
|
296
|
+
return traverseSchema(contentType.attributes);
|
297
|
+
};
|
182
298
|
const contentManagerApi = strapiAdmin.adminApi.enhanceEndpoints({
|
183
299
|
addTagTypes: [
|
184
300
|
"ComponentConfiguration",
|
@@ -188,7 +304,8 @@ const contentManagerApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
188
304
|
"InitialData",
|
189
305
|
"HistoryVersion",
|
190
306
|
"Relations",
|
191
|
-
"UidAvailability"
|
307
|
+
"UidAvailability",
|
308
|
+
"RecentDocumentList"
|
192
309
|
]
|
193
310
|
});
|
194
311
|
const documentApi = contentManagerApi.injectEndpoints({
|
@@ -206,7 +323,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
206
323
|
if (error) {
|
207
324
|
return [];
|
208
325
|
}
|
209
|
-
return [{ type: "Document", id: `${model}_LIST` }];
|
326
|
+
return [{ type: "Document", id: `${model}_LIST` }, "RecentDocumentList"];
|
210
327
|
}
|
211
328
|
}),
|
212
329
|
cloneDocument: builder.mutation({
|
@@ -220,7 +337,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
220
337
|
}),
|
221
338
|
invalidatesTags: (_result, _error, { model }) => [
|
222
339
|
{ type: "Document", id: `${model}_LIST` },
|
223
|
-
{ type: "UidAvailability", id: model }
|
340
|
+
{ type: "UidAvailability", id: model },
|
341
|
+
"RecentDocumentList"
|
224
342
|
]
|
225
343
|
}),
|
226
344
|
/**
|
@@ -239,8 +357,21 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
239
357
|
invalidatesTags: (result, _error, { model }) => [
|
240
358
|
{ type: "Document", id: `${model}_LIST` },
|
241
359
|
"Relations",
|
242
|
-
{ type: "UidAvailability", id: model }
|
243
|
-
|
360
|
+
{ type: "UidAvailability", id: model },
|
361
|
+
"RecentDocumentList"
|
362
|
+
],
|
363
|
+
transformResponse: (response, meta, arg) => {
|
364
|
+
if (!("data" in response) && arg.model === "plugin::users-permissions.user") {
|
365
|
+
return {
|
366
|
+
data: response,
|
367
|
+
meta: {
|
368
|
+
availableStatus: [],
|
369
|
+
availableLocales: []
|
370
|
+
}
|
371
|
+
};
|
372
|
+
}
|
373
|
+
return response;
|
374
|
+
}
|
244
375
|
}),
|
245
376
|
deleteDocument: builder.mutation({
|
246
377
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -251,7 +382,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
251
382
|
}
|
252
383
|
}),
|
253
384
|
invalidatesTags: (_result, _error, { collectionType, model }) => [
|
254
|
-
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model }
|
385
|
+
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },
|
386
|
+
"RecentDocumentList"
|
255
387
|
]
|
256
388
|
}),
|
257
389
|
deleteManyDocuments: builder.mutation({
|
@@ -263,7 +395,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
263
395
|
params
|
264
396
|
}
|
265
397
|
}),
|
266
|
-
invalidatesTags: (_res, _error, { model }) => [
|
398
|
+
invalidatesTags: (_res, _error, { model }) => [
|
399
|
+
{ type: "Document", id: `${model}_LIST` },
|
400
|
+
"RecentDocumentList"
|
401
|
+
]
|
267
402
|
}),
|
268
403
|
discardDocument: builder.mutation({
|
269
404
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -281,7 +416,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
281
416
|
},
|
282
417
|
{ type: "Document", id: `${model}_LIST` },
|
283
418
|
"Relations",
|
284
|
-
{ type: "UidAvailability", id: model }
|
419
|
+
{ type: "UidAvailability", id: model },
|
420
|
+
"RecentDocumentList"
|
285
421
|
];
|
286
422
|
}
|
287
423
|
}),
|
@@ -294,7 +430,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
294
430
|
url: `/content-manager/collection-types/${model}`,
|
295
431
|
method: "GET",
|
296
432
|
config: {
|
297
|
-
params
|
433
|
+
params: qs.stringify(params, { encode: true })
|
298
434
|
}
|
299
435
|
}),
|
300
436
|
providesTags: (result, _error, arg) => {
|
@@ -376,7 +512,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
376
512
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
377
513
|
},
|
378
514
|
{ type: "Document", id: `${model}_LIST` },
|
379
|
-
"Relations"
|
515
|
+
"Relations",
|
516
|
+
"RecentDocumentList"
|
380
517
|
];
|
381
518
|
}
|
382
519
|
}),
|
@@ -407,7 +544,9 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
407
544
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
408
545
|
},
|
409
546
|
"Relations",
|
410
|
-
{ type: "UidAvailability", id: model }
|
547
|
+
{ type: "UidAvailability", id: model },
|
548
|
+
"RecentDocumentList",
|
549
|
+
"RecentDocumentList"
|
411
550
|
];
|
412
551
|
},
|
413
552
|
async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {
|
@@ -437,7 +576,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
437
576
|
{
|
438
577
|
type: "Document",
|
439
578
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
440
|
-
}
|
579
|
+
},
|
580
|
+
"RecentDocumentList"
|
441
581
|
];
|
442
582
|
}
|
443
583
|
}),
|
@@ -450,7 +590,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
450
590
|
params
|
451
591
|
}
|
452
592
|
}),
|
453
|
-
invalidatesTags: (_res, _error, { model, documentIds }) =>
|
593
|
+
invalidatesTags: (_res, _error, { model, documentIds }) => [
|
594
|
+
...documentIds.map((id) => ({ type: "Document", id: `${model}_${id}` })),
|
595
|
+
"RecentDocumentList"
|
596
|
+
]
|
454
597
|
})
|
455
598
|
})
|
456
599
|
});
|
@@ -473,8 +616,7 @@ const {
|
|
473
616
|
useUnpublishManyDocumentsMutation
|
474
617
|
} = documentApi;
|
475
618
|
const buildValidParams = (query) => {
|
476
|
-
if (!query)
|
477
|
-
return query;
|
619
|
+
if (!query) return query;
|
478
620
|
const { plugins: _, ...validQueryParams } = {
|
479
621
|
...query,
|
480
622
|
...Object.values(query?.plugins ?? {}).reduce(
|
@@ -482,9 +624,6 @@ const buildValidParams = (query) => {
|
|
482
624
|
{}
|
483
625
|
)
|
484
626
|
};
|
485
|
-
if ("_q" in validQueryParams) {
|
486
|
-
validQueryParams._q = encodeURIComponent(validQueryParams._q);
|
487
|
-
}
|
488
627
|
return validQueryParams;
|
489
628
|
};
|
490
629
|
const isBaseQueryError = (error) => {
|
@@ -989,9 +1128,10 @@ const formatEditLayout = (data, {
|
|
989
1128
|
currentPanelIndex += 2;
|
990
1129
|
} else {
|
991
1130
|
if (!panels[currentPanelIndex]) {
|
992
|
-
panels.push([]);
|
1131
|
+
panels.push([row]);
|
1132
|
+
} else {
|
1133
|
+
panels[currentPanelIndex].push(row);
|
993
1134
|
}
|
994
|
-
panels[currentPanelIndex].push(row);
|
995
1135
|
}
|
996
1136
|
return panels;
|
997
1137
|
}, []);
|
@@ -1124,6 +1264,7 @@ const convertListLayoutToFieldLayouts = (columns, attributes = {}, metadatas, co
|
|
1124
1264
|
const useDocument = (args, opts) => {
|
1125
1265
|
const { toggleNotification } = strapiAdmin.useNotification();
|
1126
1266
|
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
1267
|
+
const { formatMessage } = reactIntl.useIntl();
|
1127
1268
|
const {
|
1128
1269
|
currentData: data,
|
1129
1270
|
isLoading: isLoadingDocument,
|
@@ -1133,12 +1274,27 @@ const useDocument = (args, opts) => {
|
|
1133
1274
|
...opts,
|
1134
1275
|
skip: !args.documentId && args.collectionType !== SINGLE_TYPES || opts?.skip
|
1135
1276
|
});
|
1277
|
+
const document = data?.data;
|
1278
|
+
const meta = data?.meta;
|
1136
1279
|
const {
|
1137
1280
|
components,
|
1138
1281
|
schema,
|
1139
1282
|
schemas,
|
1140
1283
|
isLoading: isLoadingSchema
|
1141
1284
|
} = useContentTypeSchema(args.model);
|
1285
|
+
const isSingleType = schema?.kind === "singleType";
|
1286
|
+
const getTitle = (mainField) => {
|
1287
|
+
if (mainField !== "id" && document?.[mainField]) {
|
1288
|
+
return document[mainField];
|
1289
|
+
}
|
1290
|
+
if (isSingleType && schema?.info.displayName) {
|
1291
|
+
return schema.info.displayName;
|
1292
|
+
}
|
1293
|
+
return formatMessage({
|
1294
|
+
id: "content-manager.containers.untitled",
|
1295
|
+
defaultMessage: "Untitled"
|
1296
|
+
});
|
1297
|
+
};
|
1142
1298
|
React__namespace.useEffect(() => {
|
1143
1299
|
if (error) {
|
1144
1300
|
toggleNotification({
|
@@ -1154,14 +1310,14 @@ const useDocument = (args, opts) => {
|
|
1154
1310
|
return createYupSchema(schema.attributes, components);
|
1155
1311
|
}, [schema, components]);
|
1156
1312
|
const validate = React__namespace.useCallback(
|
1157
|
-
(
|
1313
|
+
(document2) => {
|
1158
1314
|
if (!validationSchema) {
|
1159
1315
|
throw new Error(
|
1160
1316
|
"There is no validation schema generated, this is likely due to the schema not being loaded yet."
|
1161
1317
|
);
|
1162
1318
|
}
|
1163
1319
|
try {
|
1164
|
-
validationSchema.validateSync(
|
1320
|
+
validationSchema.validateSync(document2, { abortEarly: false, strict: true });
|
1165
1321
|
return null;
|
1166
1322
|
} catch (error2) {
|
1167
1323
|
if (error2 instanceof yup.ValidationError) {
|
@@ -1172,17 +1328,29 @@ const useDocument = (args, opts) => {
|
|
1172
1328
|
},
|
1173
1329
|
[validationSchema]
|
1174
1330
|
);
|
1331
|
+
const getInitialFormValues = React__namespace.useCallback(
|
1332
|
+
(isCreatingDocument = false) => {
|
1333
|
+
if (!document && !isCreatingDocument && !isSingleType || !schema) {
|
1334
|
+
return void 0;
|
1335
|
+
}
|
1336
|
+
const form = document?.id ? document : createDefaultForm(schema, components);
|
1337
|
+
return transformDocument(schema, components)(form);
|
1338
|
+
},
|
1339
|
+
[document, isSingleType, schema, components]
|
1340
|
+
);
|
1175
1341
|
const isLoading = isLoadingDocument || isFetchingDocument || isLoadingSchema;
|
1176
1342
|
const hasError = !!error;
|
1177
1343
|
return {
|
1178
1344
|
components,
|
1179
|
-
document
|
1180
|
-
meta
|
1345
|
+
document,
|
1346
|
+
meta,
|
1181
1347
|
isLoading,
|
1182
1348
|
hasError,
|
1183
1349
|
schema,
|
1184
1350
|
schemas,
|
1185
|
-
validate
|
1351
|
+
validate,
|
1352
|
+
getTitle,
|
1353
|
+
getInitialFormValues
|
1186
1354
|
};
|
1187
1355
|
};
|
1188
1356
|
const useDoc = () => {
|
@@ -1249,9 +1417,6 @@ const useContentManagerContext = () => {
|
|
1249
1417
|
};
|
1250
1418
|
};
|
1251
1419
|
const prefixPluginTranslations = (trad, pluginId) => {
|
1252
|
-
if (!pluginId) {
|
1253
|
-
throw new TypeError("pluginId can't be empty");
|
1254
|
-
}
|
1255
1420
|
return Object.keys(trad).reduce((acc, current) => {
|
1256
1421
|
acc[`${pluginId}.${current}`] = trad[current];
|
1257
1422
|
return acc;
|
@@ -1685,10 +1850,10 @@ const useDocumentActions = () => {
|
|
1685
1850
|
update
|
1686
1851
|
};
|
1687
1852
|
};
|
1688
|
-
const ProtectedHistoryPage =
|
1689
|
-
() => Promise.resolve().then(() => require("./History-
|
1853
|
+
const ProtectedHistoryPage = React__namespace.lazy(
|
1854
|
+
() => Promise.resolve().then(() => require("./History-DTm8UCCQ.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
|
1690
1855
|
);
|
1691
|
-
const routes$
|
1856
|
+
const routes$2 = [
|
1692
1857
|
{
|
1693
1858
|
path: ":collectionType/:slug/:id/history",
|
1694
1859
|
Component: ProtectedHistoryPage
|
@@ -1698,32 +1863,45 @@ const routes$1 = [
|
|
1698
1863
|
Component: ProtectedHistoryPage
|
1699
1864
|
}
|
1700
1865
|
];
|
1866
|
+
const ProtectedPreviewPage = React__namespace.lazy(
|
1867
|
+
() => Promise.resolve().then(() => require("./Preview-Cxq-uI6D.js")).then((mod) => ({ default: mod.ProtectedPreviewPage }))
|
1868
|
+
);
|
1869
|
+
const routes$1 = [
|
1870
|
+
{
|
1871
|
+
path: ":collectionType/:slug/:id/preview",
|
1872
|
+
Component: ProtectedPreviewPage
|
1873
|
+
},
|
1874
|
+
{
|
1875
|
+
path: ":collectionType/:slug/preview",
|
1876
|
+
Component: ProtectedPreviewPage
|
1877
|
+
}
|
1878
|
+
];
|
1701
1879
|
const ProtectedEditViewPage = React.lazy(
|
1702
|
-
() => Promise.resolve().then(() => require("./EditViewPage-
|
1880
|
+
() => Promise.resolve().then(() => require("./EditViewPage-D4yFJET6.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
|
1703
1881
|
);
|
1704
1882
|
const ProtectedListViewPage = React.lazy(
|
1705
|
-
() => Promise.resolve().then(() => require("./ListViewPage-
|
1883
|
+
() => Promise.resolve().then(() => require("./ListViewPage-DTuuxU3n.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
|
1706
1884
|
);
|
1707
1885
|
const ProtectedListConfiguration = React.lazy(
|
1708
|
-
() => Promise.resolve().then(() => require("./ListConfigurationPage-
|
1886
|
+
() => Promise.resolve().then(() => require("./ListConfigurationPage-ysFMjKI3.js")).then((mod) => ({
|
1709
1887
|
default: mod.ProtectedListConfiguration
|
1710
1888
|
}))
|
1711
1889
|
);
|
1712
1890
|
const ProtectedEditConfigurationPage = React.lazy(
|
1713
|
-
() => Promise.resolve().then(() => require("./EditConfigurationPage-
|
1891
|
+
() => Promise.resolve().then(() => require("./EditConfigurationPage-Bl_U2JgH.js")).then((mod) => ({
|
1714
1892
|
default: mod.ProtectedEditConfigurationPage
|
1715
1893
|
}))
|
1716
1894
|
);
|
1717
1895
|
const ProtectedComponentConfigurationPage = React.lazy(
|
1718
|
-
() => Promise.resolve().then(() => require("./ComponentConfigurationPage-
|
1896
|
+
() => Promise.resolve().then(() => require("./ComponentConfigurationPage-DBSh-kET.js")).then((mod) => ({
|
1719
1897
|
default: mod.ProtectedComponentConfigurationPage
|
1720
1898
|
}))
|
1721
1899
|
);
|
1722
1900
|
const NoPermissions = React.lazy(
|
1723
|
-
() => Promise.resolve().then(() => require("./NoPermissionsPage-
|
1901
|
+
() => Promise.resolve().then(() => require("./NoPermissionsPage-v7I599vC.js")).then((mod) => ({ default: mod.NoPermissions }))
|
1724
1902
|
);
|
1725
1903
|
const NoContentType = React.lazy(
|
1726
|
-
() => Promise.resolve().then(() => require("./NoContentTypePage-
|
1904
|
+
() => Promise.resolve().then(() => require("./NoContentTypePage-CL7VVeYs.js")).then((mod) => ({ default: mod.NoContentType }))
|
1727
1905
|
);
|
1728
1906
|
const CollectionTypePages = () => {
|
1729
1907
|
const { collectionType } = reactRouterDom.useParams();
|
@@ -1735,7 +1913,7 @@ const CollectionTypePages = () => {
|
|
1735
1913
|
const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
|
1736
1914
|
const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
|
1737
1915
|
const LIST_RELATIVE_PATH = ":collectionType/:slug";
|
1738
|
-
const LIST_PATH = `/content-manager
|
1916
|
+
const LIST_PATH = `/content-manager/collection-types/:slug`;
|
1739
1917
|
const routes = [
|
1740
1918
|
{
|
1741
1919
|
path: LIST_RELATIVE_PATH,
|
@@ -1769,6 +1947,7 @@ const routes = [
|
|
1769
1947
|
path: "no-content-types",
|
1770
1948
|
Component: NoContentType
|
1771
1949
|
},
|
1950
|
+
...routes$2,
|
1772
1951
|
...routes$1
|
1773
1952
|
];
|
1774
1953
|
const DocumentActions = ({ actions: actions2 }) => {
|
@@ -1867,6 +2046,11 @@ const DocumentActionButton = (action) => {
|
|
1867
2046
|
) : null
|
1868
2047
|
] });
|
1869
2048
|
};
|
2049
|
+
const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
|
2050
|
+
&:hover {
|
2051
|
+
background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
|
2052
|
+
}
|
2053
|
+
`;
|
1870
2054
|
const DocumentActionsMenu = ({
|
1871
2055
|
actions: actions2,
|
1872
2056
|
children,
|
@@ -1925,48 +2109,32 @@ const DocumentActionsMenu = ({
|
|
1925
2109
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
|
1926
2110
|
actions2.map((action) => {
|
1927
2111
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
1928
|
-
|
2112
|
+
MenuItem,
|
1929
2113
|
{
|
1930
2114
|
disabled: action.disabled,
|
1931
2115
|
onSelect: handleClick(action),
|
1932
2116
|
display: "block",
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
1952
|
-
|
1953
|
-
|
1954
|
-
designSystem.Flex,
|
1955
|
-
{
|
1956
|
-
alignItems: "center",
|
1957
|
-
background: "alternative100",
|
1958
|
-
borderStyle: "solid",
|
1959
|
-
borderColor: "alternative200",
|
1960
|
-
borderWidth: "1px",
|
1961
|
-
height: 5,
|
1962
|
-
paddingLeft: 2,
|
1963
|
-
paddingRight: 2,
|
1964
|
-
hasRadius: true,
|
1965
|
-
color: "alternative600",
|
1966
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
|
1967
|
-
}
|
1968
|
-
)
|
1969
|
-
] })
|
2117
|
+
isVariantDanger: action.variant === "danger",
|
2118
|
+
isDisabled: action.disabled,
|
2119
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
2120
|
+
designSystem.Flex,
|
2121
|
+
{
|
2122
|
+
color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
|
2123
|
+
gap: 2,
|
2124
|
+
tag: "span",
|
2125
|
+
children: [
|
2126
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
2127
|
+
designSystem.Flex,
|
2128
|
+
{
|
2129
|
+
tag: "span",
|
2130
|
+
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
|
2131
|
+
children: action.icon
|
2132
|
+
}
|
2133
|
+
),
|
2134
|
+
action.label
|
2135
|
+
]
|
2136
|
+
}
|
2137
|
+
) })
|
1970
2138
|
},
|
1971
2139
|
action.id
|
1972
2140
|
);
|
@@ -2077,6 +2245,18 @@ const DocumentActionModal = ({
|
|
2077
2245
|
typeof Footer === "function" ? /* @__PURE__ */ jsxRuntime.jsx(Footer, { onClose: handleClose }) : Footer
|
2078
2246
|
] }) });
|
2079
2247
|
};
|
2248
|
+
const transformData = (data) => {
|
2249
|
+
if (Array.isArray(data)) {
|
2250
|
+
return data.map(transformData);
|
2251
|
+
}
|
2252
|
+
if (typeof data === "object" && data !== null) {
|
2253
|
+
if ("apiData" in data) {
|
2254
|
+
return data.apiData;
|
2255
|
+
}
|
2256
|
+
return mapValues__default.default(transformData)(data);
|
2257
|
+
}
|
2258
|
+
return data;
|
2259
|
+
};
|
2080
2260
|
const PublishAction$1 = ({
|
2081
2261
|
activeTab,
|
2082
2262
|
documentId,
|
@@ -2091,6 +2271,7 @@ const PublishAction$1 = ({
|
|
2091
2271
|
const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
|
2092
2272
|
const isListView = reactRouterDom.useMatch(LIST_PATH) !== null;
|
2093
2273
|
const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
|
2274
|
+
const { id } = reactRouterDom.useParams();
|
2094
2275
|
const { formatMessage } = reactIntl.useIntl();
|
2095
2276
|
const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
|
2096
2277
|
const { publish } = useDocumentActions();
|
@@ -2190,13 +2371,15 @@ const PublishAction$1 = ({
|
|
2190
2371
|
documentId,
|
2191
2372
|
params
|
2192
2373
|
},
|
2193
|
-
formValues
|
2374
|
+
transformData(formValues)
|
2194
2375
|
);
|
2195
2376
|
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2196
|
-
|
2197
|
-
|
2198
|
-
|
2199
|
-
|
2377
|
+
if (id === "create") {
|
2378
|
+
navigate({
|
2379
|
+
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
2380
|
+
search: rawQuery
|
2381
|
+
});
|
2382
|
+
}
|
2200
2383
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2201
2384
|
setErrors(formatValidationErrors(res.error));
|
2202
2385
|
}
|
@@ -2249,6 +2432,7 @@ const PublishAction$1 = ({
|
|
2249
2432
|
};
|
2250
2433
|
};
|
2251
2434
|
PublishAction$1.type = "publish";
|
2435
|
+
PublishAction$1.position = "panel";
|
2252
2436
|
const UpdateAction = ({
|
2253
2437
|
activeTab,
|
2254
2438
|
documentId,
|
@@ -2271,96 +2455,134 @@ const UpdateAction = ({
|
|
2271
2455
|
const validate = strapiAdmin.useForm("UpdateAction", (state) => state.validate);
|
2272
2456
|
const setErrors = strapiAdmin.useForm("UpdateAction", (state) => state.setErrors);
|
2273
2457
|
const resetForm = strapiAdmin.useForm("PublishAction", ({ resetForm: resetForm2 }) => resetForm2);
|
2274
|
-
|
2275
|
-
|
2276
|
-
|
2277
|
-
|
2278
|
-
|
2279
|
-
|
2280
|
-
|
2281
|
-
|
2282
|
-
|
2283
|
-
|
2284
|
-
|
2285
|
-
|
2286
|
-
|
2287
|
-
|
2288
|
-
|
2289
|
-
|
2290
|
-
status: "draft"
|
2458
|
+
const handleUpdate = React__namespace.useCallback(async () => {
|
2459
|
+
setSubmitting(true);
|
2460
|
+
try {
|
2461
|
+
if (!modified) {
|
2462
|
+
return;
|
2463
|
+
}
|
2464
|
+
const { errors } = await validate(true, {
|
2465
|
+
status: "draft"
|
2466
|
+
});
|
2467
|
+
if (errors) {
|
2468
|
+
toggleNotification({
|
2469
|
+
type: "danger",
|
2470
|
+
message: formatMessage({
|
2471
|
+
id: "content-manager.validation.error",
|
2472
|
+
defaultMessage: "There are validation errors in your document. Please fix them before saving."
|
2473
|
+
})
|
2291
2474
|
});
|
2292
|
-
|
2293
|
-
|
2294
|
-
|
2295
|
-
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2299
|
-
|
2300
|
-
|
2301
|
-
|
2302
|
-
|
2303
|
-
|
2304
|
-
|
2305
|
-
model,
|
2306
|
-
documentId: cloneMatch.params.origin,
|
2307
|
-
params
|
2308
|
-
},
|
2309
|
-
document
|
2310
|
-
);
|
2311
|
-
if ("data" in res) {
|
2312
|
-
navigate(
|
2313
|
-
{
|
2314
|
-
pathname: `../${res.data.documentId}`,
|
2315
|
-
search: rawQuery
|
2316
|
-
},
|
2317
|
-
{ relative: "path" }
|
2318
|
-
);
|
2319
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2320
|
-
setErrors(formatValidationErrors(res.error));
|
2321
|
-
}
|
2322
|
-
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2323
|
-
const res = await update(
|
2475
|
+
return;
|
2476
|
+
}
|
2477
|
+
if (isCloning) {
|
2478
|
+
const res = await clone(
|
2479
|
+
{
|
2480
|
+
model,
|
2481
|
+
documentId: cloneMatch.params.origin,
|
2482
|
+
params
|
2483
|
+
},
|
2484
|
+
transformData(document)
|
2485
|
+
);
|
2486
|
+
if ("data" in res) {
|
2487
|
+
navigate(
|
2324
2488
|
{
|
2325
|
-
|
2326
|
-
|
2327
|
-
documentId,
|
2328
|
-
params
|
2489
|
+
pathname: `../${res.data.documentId}`,
|
2490
|
+
search: rawQuery
|
2329
2491
|
},
|
2330
|
-
|
2492
|
+
{ relative: "path" }
|
2331
2493
|
);
|
2332
|
-
|
2333
|
-
|
2334
|
-
|
2335
|
-
|
2336
|
-
|
2494
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2495
|
+
setErrors(formatValidationErrors(res.error));
|
2496
|
+
}
|
2497
|
+
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2498
|
+
const res = await update(
|
2499
|
+
{
|
2500
|
+
collectionType,
|
2501
|
+
model,
|
2502
|
+
documentId,
|
2503
|
+
params
|
2504
|
+
},
|
2505
|
+
transformData(document)
|
2506
|
+
);
|
2507
|
+
if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2508
|
+
setErrors(formatValidationErrors(res.error));
|
2337
2509
|
} else {
|
2338
|
-
|
2510
|
+
resetForm();
|
2511
|
+
}
|
2512
|
+
} else {
|
2513
|
+
const res = await create(
|
2514
|
+
{
|
2515
|
+
model,
|
2516
|
+
params
|
2517
|
+
},
|
2518
|
+
transformData(document)
|
2519
|
+
);
|
2520
|
+
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2521
|
+
navigate(
|
2339
2522
|
{
|
2340
|
-
|
2341
|
-
|
2523
|
+
pathname: `../${res.data.documentId}`,
|
2524
|
+
search: rawQuery
|
2342
2525
|
},
|
2343
|
-
|
2526
|
+
{ replace: true, relative: "path" }
|
2344
2527
|
);
|
2345
|
-
|
2346
|
-
|
2347
|
-
{
|
2348
|
-
pathname: `../${res.data.documentId}`,
|
2349
|
-
search: rawQuery
|
2350
|
-
},
|
2351
|
-
{ replace: true, relative: "path" }
|
2352
|
-
);
|
2353
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2354
|
-
setErrors(formatValidationErrors(res.error));
|
2355
|
-
}
|
2528
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2529
|
+
setErrors(formatValidationErrors(res.error));
|
2356
2530
|
}
|
2357
|
-
} finally {
|
2358
|
-
setSubmitting(false);
|
2359
2531
|
}
|
2532
|
+
} finally {
|
2533
|
+
setSubmitting(false);
|
2360
2534
|
}
|
2535
|
+
}, [
|
2536
|
+
clone,
|
2537
|
+
cloneMatch?.params.origin,
|
2538
|
+
collectionType,
|
2539
|
+
create,
|
2540
|
+
document,
|
2541
|
+
documentId,
|
2542
|
+
formatMessage,
|
2543
|
+
formatValidationErrors,
|
2544
|
+
isCloning,
|
2545
|
+
model,
|
2546
|
+
modified,
|
2547
|
+
navigate,
|
2548
|
+
params,
|
2549
|
+
rawQuery,
|
2550
|
+
resetForm,
|
2551
|
+
setErrors,
|
2552
|
+
setSubmitting,
|
2553
|
+
toggleNotification,
|
2554
|
+
update,
|
2555
|
+
validate
|
2556
|
+
]);
|
2557
|
+
React__namespace.useEffect(() => {
|
2558
|
+
const handleKeyDown = (e) => {
|
2559
|
+
if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
|
2560
|
+
e.preventDefault();
|
2561
|
+
handleUpdate();
|
2562
|
+
}
|
2563
|
+
};
|
2564
|
+
window.addEventListener("keydown", handleKeyDown);
|
2565
|
+
return () => {
|
2566
|
+
window.removeEventListener("keydown", handleKeyDown);
|
2567
|
+
};
|
2568
|
+
}, [handleUpdate]);
|
2569
|
+
return {
|
2570
|
+
/**
|
2571
|
+
* Disabled when:
|
2572
|
+
* - the form is submitting
|
2573
|
+
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
2574
|
+
* - the active tab is the published tab
|
2575
|
+
*/
|
2576
|
+
disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
|
2577
|
+
label: formatMessage({
|
2578
|
+
id: "global.save",
|
2579
|
+
defaultMessage: "Save"
|
2580
|
+
}),
|
2581
|
+
onClick: handleUpdate
|
2361
2582
|
};
|
2362
2583
|
};
|
2363
2584
|
UpdateAction.type = "update";
|
2585
|
+
UpdateAction.position = "panel";
|
2364
2586
|
const UNPUBLISH_DRAFT_OPTIONS = {
|
2365
2587
|
KEEP: "keep",
|
2366
2588
|
DISCARD: "discard"
|
@@ -2483,6 +2705,7 @@ const UnpublishAction$1 = ({
|
|
2483
2705
|
};
|
2484
2706
|
};
|
2485
2707
|
UnpublishAction$1.type = "unpublish";
|
2708
|
+
UnpublishAction$1.position = "panel";
|
2486
2709
|
const DiscardAction = ({
|
2487
2710
|
activeTab,
|
2488
2711
|
documentId,
|
@@ -2533,6 +2756,7 @@ const DiscardAction = ({
|
|
2533
2756
|
};
|
2534
2757
|
};
|
2535
2758
|
DiscardAction.type = "discard";
|
2759
|
+
DiscardAction.position = "panel";
|
2536
2760
|
const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
|
2537
2761
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
2538
2762
|
const RelativeTime = React__namespace.forwardRef(
|
@@ -2545,7 +2769,7 @@ const RelativeTime = React__namespace.forwardRef(
|
|
2545
2769
|
});
|
2546
2770
|
const unit = intervals.find((intervalUnit) => {
|
2547
2771
|
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
2548
|
-
});
|
2772
|
+
}) ?? "seconds";
|
2549
2773
|
const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
|
2550
2774
|
const customInterval = customIntervals.find(
|
2551
2775
|
(custom) => interval[custom.unit] < custom.threshold
|
@@ -2579,19 +2803,29 @@ const getDisplayName = ({
|
|
2579
2803
|
return email ?? "";
|
2580
2804
|
};
|
2581
2805
|
const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
2582
|
-
const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
2806
|
+
const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
|
2583
2807
|
const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
|
2584
|
-
|
2808
|
+
const { formatMessage } = reactIntl.useIntl();
|
2809
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Status, { ...restProps, size, variant: statusVariant, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: formatMessage({
|
2810
|
+
id: `content-manager.containers.List.${status}`,
|
2811
|
+
defaultMessage: capitalise(status)
|
2812
|
+
}) }) });
|
2585
2813
|
};
|
2586
2814
|
const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
2587
2815
|
const { formatMessage } = reactIntl.useIntl();
|
2588
2816
|
const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
|
2817
|
+
const params = reactRouterDom.useParams();
|
2589
2818
|
const title = isCreating ? formatMessage({
|
2590
2819
|
id: "content-manager.containers.edit.title.new",
|
2591
2820
|
defaultMessage: "Create an entry"
|
2592
2821
|
}) : documentTitle;
|
2593
2822
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
|
2594
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
2823
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
2824
|
+
strapiAdmin.BackButton,
|
2825
|
+
{
|
2826
|
+
fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
|
2827
|
+
}
|
2828
|
+
),
|
2595
2829
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
|
2596
2830
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", tag: "h1", children: title }),
|
2597
2831
|
/* @__PURE__ */ jsxRuntime.jsx(HeaderToolbar, {})
|
@@ -2642,7 +2876,7 @@ const HeaderToolbar = () => {
|
|
2642
2876
|
meta: isCloning ? void 0 : meta,
|
2643
2877
|
collectionType
|
2644
2878
|
},
|
2645
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
2879
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("header"),
|
2646
2880
|
children: (actions2) => {
|
2647
2881
|
const headerActions = actions2.filter((action) => {
|
2648
2882
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -2850,6 +3084,7 @@ const ConfigureTheViewAction = ({ collectionType, model }) => {
|
|
2850
3084
|
};
|
2851
3085
|
};
|
2852
3086
|
ConfigureTheViewAction.type = "configure-the-view";
|
3087
|
+
ConfigureTheViewAction.position = "header";
|
2853
3088
|
const EditTheModelAction = ({ model }) => {
|
2854
3089
|
const navigate = reactRouterDom.useNavigate();
|
2855
3090
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -2866,6 +3101,7 @@ const EditTheModelAction = ({ model }) => {
|
|
2866
3101
|
};
|
2867
3102
|
};
|
2868
3103
|
EditTheModelAction.type = "edit-the-model";
|
3104
|
+
EditTheModelAction.position = "header";
|
2869
3105
|
const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
2870
3106
|
const navigate = reactRouterDom.useNavigate();
|
2871
3107
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -2939,6 +3175,7 @@ const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
|
2939
3175
|
};
|
2940
3176
|
};
|
2941
3177
|
DeleteAction$1.type = "delete";
|
3178
|
+
DeleteAction$1.position = ["header", "table-row"];
|
2942
3179
|
const DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction$1];
|
2943
3180
|
const Panels = () => {
|
2944
3181
|
const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
|
@@ -3001,7 +3238,7 @@ const ActionsPanelContent = () => {
|
|
3001
3238
|
strapiAdmin.DescriptionComponentRenderer,
|
3002
3239
|
{
|
3003
3240
|
props,
|
3004
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
3241
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("panel"),
|
3005
3242
|
children: (actions2) => /* @__PURE__ */ jsxRuntime.jsx(DocumentActions, { actions: actions2 })
|
3006
3243
|
}
|
3007
3244
|
),
|
@@ -3028,7 +3265,7 @@ const Panel = React__namespace.forwardRef(({ children, title }, ref) => {
|
|
3028
3265
|
justifyContent: "stretch",
|
3029
3266
|
alignItems: "flex-start",
|
3030
3267
|
children: [
|
3031
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", children: title }),
|
3268
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", textColor: "neutral600", children: title }),
|
3032
3269
|
children
|
3033
3270
|
]
|
3034
3271
|
}
|
@@ -3059,7 +3296,7 @@ const ConfirmBulkActionDialog = ({
|
|
3059
3296
|
] })
|
3060
3297
|
] }) });
|
3061
3298
|
};
|
3062
|
-
const BoldChunk
|
3299
|
+
const BoldChunk = (chunks) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: chunks });
|
3063
3300
|
const ConfirmDialogPublishAll = ({
|
3064
3301
|
isOpen,
|
3065
3302
|
onToggleDialog,
|
@@ -3108,7 +3345,7 @@ const ConfirmDialogPublishAll = ({
|
|
3108
3345
|
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. "
|
3109
3346
|
},
|
3110
3347
|
{
|
3111
|
-
b: BoldChunk
|
3348
|
+
b: BoldChunk,
|
3112
3349
|
count: countDraftRelations,
|
3113
3350
|
entities: selectedEntries.length
|
3114
3351
|
}
|
@@ -3147,6 +3384,16 @@ const ConfirmDialogPublishAll = ({
|
|
3147
3384
|
const TypographyMaxWidth = styledComponents.styled(designSystem.Typography)`
|
3148
3385
|
max-width: 300px;
|
3149
3386
|
`;
|
3387
|
+
const TableComponent = styledComponents.styled(designSystem.RawTable)`
|
3388
|
+
width: 100%;
|
3389
|
+
table-layout: fixed;
|
3390
|
+
td:first-child {
|
3391
|
+
border-right: 1px solid ${({ theme }) => theme.colors.neutral150};
|
3392
|
+
}
|
3393
|
+
td:first-of-type {
|
3394
|
+
padding: ${({ theme }) => theme.spaces[4]};
|
3395
|
+
}
|
3396
|
+
`;
|
3150
3397
|
const formatErrorMessages = (errors, parentKey, formatMessage) => {
|
3151
3398
|
const messages = [];
|
3152
3399
|
Object.entries(errors).forEach(([key, value]) => {
|
@@ -3251,7 +3498,7 @@ const SelectedEntriesTableContent = ({
|
|
3251
3498
|
)
|
3252
3499
|
] }),
|
3253
3500
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
|
3254
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: rowsToDisplay.map((row
|
3501
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: rowsToDisplay.map((row) => /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Row, { children: [
|
3255
3502
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.CheckboxCell, { id: row.id }),
|
3256
3503
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: row.id }) }),
|
3257
3504
|
shouldDisplayMainField && /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: row[mainField] }) }),
|
@@ -3278,18 +3525,10 @@ const SelectedEntriesTableContent = ({
|
|
3278
3525
|
search: row.locale && `?plugins[i18n][locale]=${row.locale}`
|
3279
3526
|
},
|
3280
3527
|
state: { from: pathname },
|
3281
|
-
label: formatMessage(
|
3282
|
-
|
3283
|
-
|
3284
|
-
|
3285
|
-
{
|
3286
|
-
id: "content-manager.components.ListViewHelperPluginTable.row-line",
|
3287
|
-
defaultMessage: "item line {number}"
|
3288
|
-
},
|
3289
|
-
{ number: index2 + 1 }
|
3290
|
-
)
|
3291
|
-
}
|
3292
|
-
),
|
3528
|
+
label: formatMessage({
|
3529
|
+
id: "content-manager.bulk-publish.edit",
|
3530
|
+
defaultMessage: "Edit"
|
3531
|
+
}),
|
3293
3532
|
target: "_blank",
|
3294
3533
|
marginLeft: "auto",
|
3295
3534
|
variant: "ghost",
|
@@ -3299,7 +3538,73 @@ const SelectedEntriesTableContent = ({
|
|
3299
3538
|
] }, row.id)) })
|
3300
3539
|
] });
|
3301
3540
|
};
|
3302
|
-
const
|
3541
|
+
const PublicationStatusSummary = ({ count, icon, message }) => {
|
3542
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", flex: 1, gap: 3, children: [
|
3543
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
3544
|
+
icon,
|
3545
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: message })
|
3546
|
+
] }),
|
3547
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: count })
|
3548
|
+
] });
|
3549
|
+
};
|
3550
|
+
const PublicationStatusGrid = ({
|
3551
|
+
entriesReadyToPublishCount,
|
3552
|
+
entriesPublishedCount,
|
3553
|
+
entriesModifiedCount,
|
3554
|
+
entriesWithErrorsCount
|
3555
|
+
}) => {
|
3556
|
+
const { formatMessage } = reactIntl.useIntl();
|
3557
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { hasRadius: true, borderColor: "neutral150", children: /* @__PURE__ */ jsxRuntime.jsx(TableComponent, { colCount: 2, rowCount: 2, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tbody, { children: [
|
3558
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
|
3559
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
3560
|
+
PublicationStatusSummary,
|
3561
|
+
{
|
3562
|
+
count: entriesReadyToPublishCount,
|
3563
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.CheckCircle, { fill: "success600" }),
|
3564
|
+
message: formatMessage({
|
3565
|
+
id: "app.utils.ready-to-publish",
|
3566
|
+
defaultMessage: "Ready to publish"
|
3567
|
+
})
|
3568
|
+
}
|
3569
|
+
) }),
|
3570
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
3571
|
+
PublicationStatusSummary,
|
3572
|
+
{
|
3573
|
+
count: entriesPublishedCount,
|
3574
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.CheckCircle, { fill: "success600" }),
|
3575
|
+
message: formatMessage({
|
3576
|
+
id: "app.utils.already-published",
|
3577
|
+
defaultMessage: "Already published"
|
3578
|
+
})
|
3579
|
+
}
|
3580
|
+
) })
|
3581
|
+
] }),
|
3582
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
|
3583
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
3584
|
+
PublicationStatusSummary,
|
3585
|
+
{
|
3586
|
+
count: entriesModifiedCount,
|
3587
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ArrowsCounterClockwise, { fill: "alternative600" }),
|
3588
|
+
message: formatMessage({
|
3589
|
+
id: "content-manager.bulk-publish.modified",
|
3590
|
+
defaultMessage: "Ready to publish changes"
|
3591
|
+
})
|
3592
|
+
}
|
3593
|
+
) }),
|
3594
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
3595
|
+
PublicationStatusSummary,
|
3596
|
+
{
|
3597
|
+
count: entriesWithErrorsCount,
|
3598
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.CrossCircle, { fill: "danger600" }),
|
3599
|
+
message: formatMessage({
|
3600
|
+
id: "content-manager.bulk-publish.waiting-for-action",
|
3601
|
+
defaultMessage: "Waiting for action"
|
3602
|
+
})
|
3603
|
+
}
|
3604
|
+
) })
|
3605
|
+
] })
|
3606
|
+
] }) }) });
|
3607
|
+
};
|
3303
3608
|
const SelectedEntriesModalContent = ({
|
3304
3609
|
listViewSelectedEntries,
|
3305
3610
|
toggleModal,
|
@@ -3358,7 +3663,6 @@ const SelectedEntriesModalContent = ({
|
|
3358
3663
|
validationErrors: {}
|
3359
3664
|
};
|
3360
3665
|
}, [components, data, schema]);
|
3361
|
-
const [publishedCount, setPublishedCount] = React__namespace.useState(0);
|
3362
3666
|
const [isDialogOpen, setIsDialogOpen] = React__namespace.useState(false);
|
3363
3667
|
const { publishMany: bulkPublishAction } = useDocumentActions();
|
3364
3668
|
const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();
|
@@ -3370,53 +3674,36 @@ const SelectedEntriesModalContent = ({
|
|
3370
3674
|
const selectedEntriesWithErrorsCount = selectedEntries.filter(
|
3371
3675
|
({ documentId }) => validationErrors[documentId]
|
3372
3676
|
).length;
|
3373
|
-
const
|
3677
|
+
const selectedEntriesPublishedCount = selectedEntries.filter(
|
3374
3678
|
({ status }) => status === "published"
|
3375
3679
|
).length;
|
3376
|
-
const
|
3680
|
+
const selectedEntriesModifiedCount = selectedEntries.filter(
|
3681
|
+
({ status, documentId }) => status === "modified" && !validationErrors[documentId]
|
3682
|
+
).length;
|
3683
|
+
const selectedEntriesWithNoErrorsCount = selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;
|
3377
3684
|
const toggleDialog = () => setIsDialogOpen((prev) => !prev);
|
3378
3685
|
const handleConfirmBulkPublish = async () => {
|
3379
3686
|
toggleDialog();
|
3380
3687
|
const res = await bulkPublishAction({ model, documentIds: entriesToPublish, params });
|
3381
3688
|
if (!("error" in res)) {
|
3382
|
-
setPublishedCount(res.count);
|
3383
3689
|
const unpublishedEntries = rows.filter((row) => {
|
3384
3690
|
return !entriesToPublish.includes(row.documentId);
|
3385
3691
|
});
|
3386
3692
|
setListViewSelectedDocuments(unpublishedEntries);
|
3387
3693
|
}
|
3388
3694
|
};
|
3389
|
-
const getFormattedCountMessage = () => {
|
3390
|
-
if (publishedCount) {
|
3391
|
-
return formatMessage(
|
3392
|
-
{
|
3393
|
-
id: getTranslation("containers.list.selectedEntriesModal.publishedCount"),
|
3394
|
-
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."
|
3395
|
-
},
|
3396
|
-
{
|
3397
|
-
publishedCount,
|
3398
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3399
|
-
b: BoldChunk
|
3400
|
-
}
|
3401
|
-
);
|
3402
|
-
}
|
3403
|
-
return formatMessage(
|
3404
|
-
{
|
3405
|
-
id: getTranslation("containers.list.selectedEntriesModal.selectedCount"),
|
3406
|
-
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."
|
3407
|
-
},
|
3408
|
-
{
|
3409
|
-
readyToPublishCount: selectedEntriesWithNoErrorsCount,
|
3410
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3411
|
-
alreadyPublishedCount: selectedEntriesPublished,
|
3412
|
-
b: BoldChunk
|
3413
|
-
}
|
3414
|
-
);
|
3415
|
-
};
|
3416
3695
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
3417
3696
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Body, { children: [
|
3418
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
3419
|
-
|
3697
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
3698
|
+
PublicationStatusGrid,
|
3699
|
+
{
|
3700
|
+
entriesReadyToPublishCount: selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount,
|
3701
|
+
entriesPublishedCount: selectedEntriesPublishedCount,
|
3702
|
+
entriesModifiedCount: selectedEntriesModifiedCount,
|
3703
|
+
entriesWithErrorsCount: selectedEntriesWithErrorsCount
|
3704
|
+
}
|
3705
|
+
),
|
3706
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 7, children: /* @__PURE__ */ jsxRuntime.jsx(
|
3420
3707
|
SelectedEntriesTableContent,
|
3421
3708
|
{
|
3422
3709
|
isPublishing: isSubmittingForm,
|
@@ -3437,7 +3724,7 @@ const SelectedEntriesModalContent = ({
|
|
3437
3724
|
designSystem.Button,
|
3438
3725
|
{
|
3439
3726
|
onClick: toggleDialog,
|
3440
|
-
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount ||
|
3727
|
+
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount || selectedEntriesPublishedCount === selectedEntries.length || isLoading,
|
3441
3728
|
loading: isSubmittingForm,
|
3442
3729
|
children: formatMessage({ id: "app.utils.publish", defaultMessage: "Publish" })
|
3443
3730
|
}
|
@@ -3463,8 +3750,7 @@ const PublishAction = ({ documents, model }) => {
|
|
3463
3750
|
const refetchList = () => {
|
3464
3751
|
contentManagerApi.util.invalidateTags([{ type: "Document", id: `${model}_LIST` }]);
|
3465
3752
|
};
|
3466
|
-
if (!showPublishButton)
|
3467
|
-
return null;
|
3753
|
+
if (!showPublishButton) return null;
|
3468
3754
|
return {
|
3469
3755
|
actionType: "publish",
|
3470
3756
|
variant: "tertiary",
|
@@ -3532,8 +3818,7 @@ const DeleteAction = ({ documents, model }) => {
|
|
3532
3818
|
selectRow([]);
|
3533
3819
|
}
|
3534
3820
|
};
|
3535
|
-
if (!hasDeletePermission)
|
3536
|
-
return null;
|
3821
|
+
if (!hasDeletePermission) return null;
|
3537
3822
|
return {
|
3538
3823
|
variant: "danger-light",
|
3539
3824
|
label: formatMessage({ id: "global.delete", defaultMessage: "Delete" }),
|
@@ -3582,8 +3867,7 @@ const UnpublishAction = ({ documents, model }) => {
|
|
3582
3867
|
}
|
3583
3868
|
};
|
3584
3869
|
const showUnpublishButton = hasDraftAndPublishEnabled && hasPublishPermission && documents.some((entry) => entry.status === "published" || entry.status === "modified");
|
3585
|
-
if (!showUnpublishButton)
|
3586
|
-
return null;
|
3870
|
+
if (!showUnpublishButton) return null;
|
3587
3871
|
return {
|
3588
3872
|
variant: "tertiary",
|
3589
3873
|
label: formatMessage({ id: "app.utils.unpublish", defaultMessage: "Unpublish" }),
|
@@ -3688,7 +3972,7 @@ const TableActions = ({ document }) => {
|
|
3688
3972
|
strapiAdmin.DescriptionComponentRenderer,
|
3689
3973
|
{
|
3690
3974
|
props,
|
3691
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions().filter((action) => action.name !== "PublishAction"),
|
3975
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("table-row").filter((action) => action.name !== "PublishAction"),
|
3692
3976
|
children: (actions2) => {
|
3693
3977
|
const tableRowActions = actions2.filter((action) => {
|
3694
3978
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -3747,6 +4031,7 @@ const EditAction = ({ documentId }) => {
|
|
3747
4031
|
};
|
3748
4032
|
};
|
3749
4033
|
EditAction.type = "edit";
|
4034
|
+
EditAction.position = "table-row";
|
3750
4035
|
const StyledPencil = styledComponents.styled(Icons.Pencil)`
|
3751
4036
|
path {
|
3752
4037
|
fill: currentColor;
|
@@ -3823,6 +4108,7 @@ const CloneAction = ({ model, documentId }) => {
|
|
3823
4108
|
};
|
3824
4109
|
};
|
3825
4110
|
CloneAction.type = "clone";
|
4111
|
+
CloneAction.position = "table-row";
|
3826
4112
|
const StyledDuplicate = styledComponents.styled(Icons.Duplicate)`
|
3827
4113
|
path {
|
3828
4114
|
fill: currentColor;
|
@@ -3909,7 +4195,14 @@ class ContentManagerPlugin {
|
|
3909
4195
|
addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),
|
3910
4196
|
addEditViewSidePanel: this.addEditViewSidePanel.bind(this),
|
3911
4197
|
getBulkActions: () => this.bulkActions,
|
3912
|
-
getDocumentActions: () =>
|
4198
|
+
getDocumentActions: (position) => {
|
4199
|
+
if (position) {
|
4200
|
+
return this.documentActions.filter(
|
4201
|
+
(action) => action.position == void 0 || [action.position].flat().includes(position)
|
4202
|
+
);
|
4203
|
+
}
|
4204
|
+
return this.documentActions;
|
4205
|
+
},
|
3913
4206
|
getEditViewSidePanels: () => this.editViewSidePanels,
|
3914
4207
|
getHeaderActions: () => this.headerActions
|
3915
4208
|
}
|
@@ -3919,10 +4212,8 @@ class ContentManagerPlugin {
|
|
3919
4212
|
const getPrintableType = (value) => {
|
3920
4213
|
const nativeType = typeof value;
|
3921
4214
|
if (nativeType === "object") {
|
3922
|
-
if (value === null)
|
3923
|
-
|
3924
|
-
if (Array.isArray(value))
|
3925
|
-
return "array";
|
4215
|
+
if (value === null) return "null";
|
4216
|
+
if (Array.isArray(value)) return "array";
|
3926
4217
|
if (value instanceof Object && value.constructor.name !== "Object") {
|
3927
4218
|
return value.constructor.name;
|
3928
4219
|
}
|
@@ -3933,17 +4224,27 @@ const HistoryAction = ({ model, document }) => {
|
|
3933
4224
|
const { formatMessage } = reactIntl.useIntl();
|
3934
4225
|
const [{ query }] = strapiAdmin.useQueryParams();
|
3935
4226
|
const navigate = reactRouterDom.useNavigate();
|
4227
|
+
const { trackUsage } = strapiAdmin.useTracking();
|
4228
|
+
const { pathname } = reactRouterDom.useLocation();
|
3936
4229
|
const pluginsQueryParams = qs.stringify({ plugins: query.plugins }, { encode: false });
|
3937
4230
|
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
3938
4231
|
return null;
|
3939
4232
|
}
|
4233
|
+
const handleOnClick = () => {
|
4234
|
+
const destination = { pathname: "history", search: pluginsQueryParams };
|
4235
|
+
trackUsage("willNavigate", {
|
4236
|
+
from: pathname,
|
4237
|
+
to: `${pathname}/${destination.pathname}`
|
4238
|
+
});
|
4239
|
+
navigate(destination);
|
4240
|
+
};
|
3940
4241
|
return {
|
3941
4242
|
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ClockCounterClockwise, {}),
|
3942
4243
|
label: formatMessage({
|
3943
4244
|
id: "content-manager.history.document-action",
|
3944
4245
|
defaultMessage: "Content History"
|
3945
4246
|
}),
|
3946
|
-
onClick:
|
4247
|
+
onClick: handleOnClick,
|
3947
4248
|
disabled: (
|
3948
4249
|
/**
|
3949
4250
|
* The user is creating a new document.
|
@@ -3965,6 +4266,7 @@ const HistoryAction = ({ model, document }) => {
|
|
3965
4266
|
};
|
3966
4267
|
};
|
3967
4268
|
HistoryAction.type = "history";
|
4269
|
+
HistoryAction.position = "header";
|
3968
4270
|
const historyAdmin = {
|
3969
4271
|
bootstrap(app) {
|
3970
4272
|
const { addDocumentAction } = app.getPlugin("content-manager").apis;
|
@@ -4011,6 +4313,88 @@ const { setInitialData } = actions;
|
|
4011
4313
|
const reducer = toolkit.combineReducers({
|
4012
4314
|
app: reducer$1
|
4013
4315
|
});
|
4316
|
+
const previewApi = contentManagerApi.injectEndpoints({
|
4317
|
+
endpoints: (builder) => ({
|
4318
|
+
getPreviewUrl: builder.query({
|
4319
|
+
query({ query, params }) {
|
4320
|
+
return {
|
4321
|
+
url: `/content-manager/preview/url/${params.contentType}`,
|
4322
|
+
method: "GET",
|
4323
|
+
config: {
|
4324
|
+
params: query
|
4325
|
+
}
|
4326
|
+
};
|
4327
|
+
}
|
4328
|
+
})
|
4329
|
+
})
|
4330
|
+
});
|
4331
|
+
const { useGetPreviewUrlQuery } = previewApi;
|
4332
|
+
const ConditionalTooltip = ({ isShown, label, children }) => {
|
4333
|
+
if (isShown) {
|
4334
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { label, children });
|
4335
|
+
}
|
4336
|
+
return children;
|
4337
|
+
};
|
4338
|
+
const PreviewSidePanel = ({ model, documentId, document }) => {
|
4339
|
+
const { formatMessage } = reactIntl.useIntl();
|
4340
|
+
const { trackUsage } = strapiAdmin.useTracking();
|
4341
|
+
const { pathname } = reactRouterDom.useLocation();
|
4342
|
+
const [{ query }] = strapiAdmin.useQueryParams();
|
4343
|
+
const isModified = strapiAdmin.useForm("PreviewSidePanel", (state) => state.modified);
|
4344
|
+
const { data, error } = useGetPreviewUrlQuery({
|
4345
|
+
params: {
|
4346
|
+
contentType: model
|
4347
|
+
},
|
4348
|
+
query: {
|
4349
|
+
documentId,
|
4350
|
+
locale: document?.locale,
|
4351
|
+
status: document?.status
|
4352
|
+
}
|
4353
|
+
});
|
4354
|
+
if (!data?.data?.url || error) {
|
4355
|
+
return null;
|
4356
|
+
}
|
4357
|
+
const trackNavigation = () => {
|
4358
|
+
const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
|
4359
|
+
trackUsage("willNavigate", { from: pathname, to: destinationPathname });
|
4360
|
+
};
|
4361
|
+
return {
|
4362
|
+
title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
|
4363
|
+
content: /* @__PURE__ */ jsxRuntime.jsx(
|
4364
|
+
ConditionalTooltip,
|
4365
|
+
{
|
4366
|
+
label: formatMessage({
|
4367
|
+
id: "content-manager.preview.panel.button-disabled-tooltip",
|
4368
|
+
defaultMessage: "Please save to open the preview"
|
4369
|
+
}),
|
4370
|
+
isShown: isModified,
|
4371
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { cursor: "not-allowed", width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
|
4372
|
+
designSystem.Button,
|
4373
|
+
{
|
4374
|
+
variant: "tertiary",
|
4375
|
+
tag: reactRouterDom.Link,
|
4376
|
+
to: { pathname: "preview", search: qs.stringify(query, { encode: false }) },
|
4377
|
+
onClick: trackNavigation,
|
4378
|
+
width: "100%",
|
4379
|
+
disabled: isModified,
|
4380
|
+
pointerEvents: isModified ? "none" : void 0,
|
4381
|
+
tabIndex: isModified ? -1 : void 0,
|
4382
|
+
children: formatMessage({
|
4383
|
+
id: "content-manager.preview.panel.button",
|
4384
|
+
defaultMessage: "Open preview"
|
4385
|
+
})
|
4386
|
+
}
|
4387
|
+
) })
|
4388
|
+
}
|
4389
|
+
)
|
4390
|
+
};
|
4391
|
+
};
|
4392
|
+
const previewAdmin = {
|
4393
|
+
bootstrap(app) {
|
4394
|
+
const contentManagerPluginApis = app.getPlugin("content-manager").apis;
|
4395
|
+
contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
|
4396
|
+
}
|
4397
|
+
};
|
4014
4398
|
const index = {
|
4015
4399
|
register(app) {
|
4016
4400
|
const cm = new ContentManagerPlugin();
|
@@ -4030,7 +4414,7 @@ const index = {
|
|
4030
4414
|
app.router.addRoute({
|
4031
4415
|
path: "content-manager/*",
|
4032
4416
|
lazy: async () => {
|
4033
|
-
const { Layout } = await Promise.resolve().then(() => require("./layout-
|
4417
|
+
const { Layout } = await Promise.resolve().then(() => require("./layout-Cl0NhlQB.js"));
|
4034
4418
|
return {
|
4035
4419
|
Component: Layout
|
4036
4420
|
};
|
@@ -4043,11 +4427,14 @@ const index = {
|
|
4043
4427
|
if (typeof historyAdmin.bootstrap === "function") {
|
4044
4428
|
historyAdmin.bootstrap(app);
|
4045
4429
|
}
|
4430
|
+
if (typeof previewAdmin.bootstrap === "function") {
|
4431
|
+
previewAdmin.bootstrap(app);
|
4432
|
+
}
|
4046
4433
|
},
|
4047
4434
|
async registerTrads({ locales }) {
|
4048
4435
|
const importedTrads = await Promise.all(
|
4049
4436
|
locales.map((locale) => {
|
4050
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => Promise.resolve().then(() => require("./ar-BUUWXIYu.js")), "./translations/ca.json": () => Promise.resolve().then(() => require("./ca-Cmk45QO6.js")), "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-CkJy6B2v.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-CCEmbAah.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
4437
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => Promise.resolve().then(() => require("./ar-BUUWXIYu.js")), "./translations/ca.json": () => Promise.resolve().then(() => require("./ca-Cmk45QO6.js")), "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-CkJy6B2v.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-CCEmbAah.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-BR48D_RH.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-9K52xZIr.js")), "./translations/eu.json": () => Promise.resolve().then(() => require("./eu-VDH-3ovk.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-C43IbhA_.js")), "./translations/gu.json": () => Promise.resolve().then(() => require("./gu-BRmF601H.js")), "./translations/hi.json": () => Promise.resolve().then(() => require("./hi-CCJBptSq.js")), "./translations/hu.json": () => Promise.resolve().then(() => require("./hu-sNV_yLYy.js")), "./translations/id.json": () => Promise.resolve().then(() => require("./id-B5Ser98A.js")), "./translations/it.json": () => Promise.resolve().then(() => require("./it-DkBIs7vD.js")), "./translations/ja.json": () => Promise.resolve().then(() => require("./ja-7sfIbjxE.js")), "./translations/ko.json": () => Promise.resolve().then(() => require("./ko-woFZPmLk.js")), "./translations/ml.json": () => Promise.resolve().then(() => require("./ml-C2W8N8k1.js")), "./translations/ms.json": () => Promise.resolve().then(() => require("./ms-BuFotyP_.js")), "./translations/nl.json": () => Promise.resolve().then(() => require("./nl-bbEOHChV.js")), "./translations/pl.json": () => Promise.resolve().then(() => require("./pl-uzwG-hk7.js")), "./translations/pt-BR.json": () => Promise.resolve().then(() => require("./pt-BR-BiOz37D9.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-CeXQuq50.js")), "./translations/ru.json": () => Promise.resolve().then(() => require("./ru-BT3ybNny.js")), "./translations/sa.json": () => Promise.resolve().then(() => require("./sa-CcvkYInH.js")), "./translations/sk.json": () => Promise.resolve().then(() => require("./sk-CvY09Xjv.js")), "./translations/sv.json": () => Promise.resolve().then(() => require("./sv-MYDuzgvT.js")), "./translations/th.json": () => Promise.resolve().then(() => require("./th-D9_GfAjc.js")), "./translations/tr.json": () => Promise.resolve().then(() => require("./tr-D9UH-O_R.js")), "./translations/uk.json": () => Promise.resolve().then(() => require("./uk-C8EiqJY7.js")), "./translations/vi.json": () => Promise.resolve().then(() => require("./vi-CJlYDheJ.js")), "./translations/zh-Hans.json": () => Promise.resolve().then(() => require("./zh-Hans-9kOncHGw.js")), "./translations/zh.json": () => Promise.resolve().then(() => require("./zh-CQQfszqR.js")) }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
|
4051
4438
|
return {
|
4052
4439
|
data: prefixPluginTranslations(data, PLUGIN_ID),
|
4053
4440
|
locale
|
@@ -4069,7 +4456,6 @@ exports.CLONE_PATH = CLONE_PATH;
|
|
4069
4456
|
exports.COLLECTION_TYPES = COLLECTION_TYPES;
|
4070
4457
|
exports.CREATOR_FIELDS = CREATOR_FIELDS;
|
4071
4458
|
exports.DEFAULT_SETTINGS = DEFAULT_SETTINGS;
|
4072
|
-
exports.DOCUMENT_META_FIELDS = DOCUMENT_META_FIELDS;
|
4073
4459
|
exports.DocumentRBAC = DocumentRBAC;
|
4074
4460
|
exports.DocumentStatus = DocumentStatus;
|
4075
4461
|
exports.HOOKS = HOOKS;
|
@@ -4086,13 +4472,17 @@ exports.checkIfAttributeIsDisplayable = checkIfAttributeIsDisplayable;
|
|
4086
4472
|
exports.contentManagerApi = contentManagerApi;
|
4087
4473
|
exports.convertEditLayoutToFieldLayouts = convertEditLayoutToFieldLayouts;
|
4088
4474
|
exports.convertListLayoutToFieldLayouts = convertListLayoutToFieldLayouts;
|
4475
|
+
exports.createDefaultForm = createDefaultForm;
|
4089
4476
|
exports.createYupSchema = createYupSchema;
|
4090
4477
|
exports.extractContentTypeComponents = extractContentTypeComponents;
|
4091
4478
|
exports.getDisplayName = getDisplayName;
|
4092
4479
|
exports.getMainField = getMainField;
|
4093
4480
|
exports.getTranslation = getTranslation;
|
4094
4481
|
exports.index = index;
|
4482
|
+
exports.prepareTempKeys = prepareTempKeys;
|
4483
|
+
exports.removeFieldsThatDontExistOnSchema = removeFieldsThatDontExistOnSchema;
|
4095
4484
|
exports.setInitialData = setInitialData;
|
4485
|
+
exports.transformDocument = transformDocument;
|
4096
4486
|
exports.useContentManagerContext = useContentManagerContext;
|
4097
4487
|
exports.useContentTypeSchema = useContentTypeSchema;
|
4098
4488
|
exports.useDoc = useDoc;
|
@@ -4105,5 +4495,6 @@ exports.useGetAllContentTypeSettingsQuery = useGetAllContentTypeSettingsQuery;
|
|
4105
4495
|
exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
|
4106
4496
|
exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
|
4107
4497
|
exports.useGetInitialDataQuery = useGetInitialDataQuery;
|
4498
|
+
exports.useGetPreviewUrlQuery = useGetPreviewUrlQuery;
|
4108
4499
|
exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
|
4109
|
-
//# sourceMappingURL=index-
|
4500
|
+
//# sourceMappingURL=index-DQsvBb_N.js.map
|