@strapi/content-manager 0.0.0-experimental.86fea32ae4240d73f76516d7238e302b6b927e88 → 0.0.0-experimental.8e4302929d7fe147203ed0266450d0a565c69660
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-B2g3icXu.mjs → ComponentConfigurationPage-D4H-v0et.mjs} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-B2g3icXu.mjs.map → ComponentConfigurationPage-D4H-v0et.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CzDn8Uxh.js → ComponentConfigurationPage-DdkVGfXC.js} +5 -6
- package/dist/_chunks/{ComponentConfigurationPage-CzDn8Uxh.js.map → ComponentConfigurationPage-DdkVGfXC.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-DSA1zONV.mjs → EditConfigurationPage-D1nvB7Br.mjs} +4 -4
- package/dist/_chunks/{EditConfigurationPage-DSA1zONV.mjs.map → EditConfigurationPage-D1nvB7Br.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-Bcbi6r5y.js → EditConfigurationPage-LYEvR4fW.js} +5 -6
- package/dist/_chunks/{EditConfigurationPage-Bcbi6r5y.js.map → EditConfigurationPage-LYEvR4fW.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-Ca2EmJpb.mjs → EditViewPage-Bcnff6Vd.mjs} +21 -54
- package/dist/_chunks/EditViewPage-Bcnff6Vd.mjs.map +1 -0
- package/dist/_chunks/{EditViewPage-BvcMXaP2.js → EditViewPage-DqelJ9UK.js} +23 -57
- package/dist/_chunks/EditViewPage-DqelJ9UK.js.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-DAUpPBVM.js → Form-CnHfBeiB.js} +5 -6
- package/dist/_chunks/{Form-DAUpPBVM.js.map → Form-CnHfBeiB.js.map} +1 -1
- package/dist/_chunks/{Form-BJVbU6w4.mjs → Form-CzPCJi3B.mjs} +3 -3
- package/dist/_chunks/{Form-BJVbU6w4.mjs.map → Form-CzPCJi3B.mjs.map} +1 -1
- package/dist/_chunks/{History-M6Pk9CoY.mjs → History-CcmSn3Mj.mjs} +51 -97
- package/dist/_chunks/History-CcmSn3Mj.mjs.map +1 -0
- package/dist/_chunks/{History-Bw9vfT1k.js → History-zArjENzj.js} +62 -109
- package/dist/_chunks/History-zArjENzj.js.map +1 -0
- package/dist/_chunks/{Field-CmaWxdpf.js → Input-CDHKQd7o.js} +1259 -1236
- package/dist/_chunks/Input-CDHKQd7o.js.map +1 -0
- package/dist/_chunks/{Field-BEYkgCZ0.mjs → Input-aV8SSoTa.mjs} +1334 -1311
- package/dist/_chunks/Input-aV8SSoTa.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-D7ior2zq.mjs → ListConfigurationPage-BPvzENJJ.mjs} +7 -6
- package/dist/_chunks/ListConfigurationPage-BPvzENJJ.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-DBVqF5fc.js → ListConfigurationPage-ByZAO_9H.js} +7 -7
- package/dist/_chunks/ListConfigurationPage-ByZAO_9H.js.map +1 -0
- package/dist/_chunks/{ListViewPage-MZu-8OKX.js → ListViewPage-BVKBeQAA.js} +73 -48
- package/dist/_chunks/ListViewPage-BVKBeQAA.js.map +1 -0
- package/dist/_chunks/{ListViewPage-BH37wONY.mjs → ListViewPage-HljQVnFH.mjs} +67 -41
- package/dist/_chunks/ListViewPage-HljQVnFH.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-C9lRMTCa.js → NoContentTypePage-BV5zfDxr.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-C9lRMTCa.js.map → NoContentTypePage-BV5zfDxr.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-DRp7Aem_.mjs → NoContentTypePage-BfHaSM-K.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-DRp7Aem_.mjs.map → NoContentTypePage-BfHaSM-K.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-CzhRt5CA.mjs → NoPermissionsPage-D6ze2nQL.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-CzhRt5CA.mjs.map → NoPermissionsPage-D6ze2nQL.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-COs61PpB.js → NoPermissionsPage-vdNpc6jb.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-COs61PpB.js.map → NoPermissionsPage-vdNpc6jb.js.map} +1 -1
- package/dist/_chunks/Preview-DEHdENT1.js +305 -0
- package/dist/_chunks/Preview-DEHdENT1.js.map +1 -0
- package/dist/_chunks/Preview-vfWOtPG5.mjs +287 -0
- package/dist/_chunks/Preview-vfWOtPG5.mjs.map +1 -0
- package/dist/_chunks/{Relations-68XxIzPI.mjs → Relations-B7_hbF0w.mjs} +33 -19
- package/dist/_chunks/Relations-B7_hbF0w.mjs.map +1 -0
- package/dist/_chunks/{Relations-CsGlulU_.js → Relations-DcoOBejP.js} +33 -20
- package/dist/_chunks/Relations-DcoOBejP.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-oDq3VO9j.js → index-CxLSGwnk.js} +614 -237
- package/dist/_chunks/index-CxLSGwnk.js.map +1 -0
- package/dist/_chunks/{index-CsfwpRfc.mjs → index-EH8ZtHd5.mjs} +631 -253
- package/dist/_chunks/index-EH8ZtHd5.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-C5uSVTqi.mjs → layout-CxDMdJ13.mjs} +4 -4
- package/dist/_chunks/{layout-C5uSVTqi.mjs.map → layout-CxDMdJ13.mjs.map} +1 -1
- package/dist/_chunks/{layout-Euka-kfv.js → layout-DSeUTfMv.js} +5 -6
- package/dist/_chunks/{layout-Euka-kfv.js.map → layout-DSeUTfMv.js.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-BpHVgFuV.mjs → relations-B8_Uu38Q.mjs} +21 -8
- package/dist/_chunks/relations-B8_Uu38Q.mjs.map +1 -0
- package/dist/_chunks/{relations-DG7kmxa0.js → relations-S5nNKdN3.js} +20 -7
- package/dist/_chunks/relations-S5nNKdN3.js.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-CtcjDB3L.js → usePrev-B9w_-eYc.js} +1 -14
- package/dist/_chunks/usePrev-B9w_-eYc.js.map +1 -0
- package/dist/_chunks/usePrev-DH6iah0A.mjs +16 -0
- package/dist/_chunks/usePrev-DH6iah0A.mjs.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 +561 -323
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +562 -323
- 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-BvcMXaP2.js.map +0 -1
- package/dist/_chunks/EditViewPage-Ca2EmJpb.mjs.map +0 -1
- package/dist/_chunks/Field-BEYkgCZ0.mjs.map +0 -1
- package/dist/_chunks/Field-CmaWxdpf.js.map +0 -1
- package/dist/_chunks/History-Bw9vfT1k.js.map +0 -1
- package/dist/_chunks/History-M6Pk9CoY.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-D7ior2zq.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-DBVqF5fc.js.map +0 -1
- package/dist/_chunks/ListViewPage-BH37wONY.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-MZu-8OKX.js.map +0 -1
- package/dist/_chunks/Relations-68XxIzPI.mjs.map +0 -1
- package/dist/_chunks/Relations-CsGlulU_.js.map +0 -1
- package/dist/_chunks/index-CsfwpRfc.mjs.map +0 -1
- package/dist/_chunks/index-oDq3VO9j.js.map +0 -1
- package/dist/_chunks/relations-BpHVgFuV.mjs.map +0 -1
- package/dist/_chunks/relations-DG7kmxa0.js.map +0 -1
- package/dist/_chunks/useDebounce-CtcjDB3L.js.map +0 -1
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs +0 -29
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +0 -1
@@ -7,16 +7,16 @@ const designSystem = require("@strapi/design-system");
|
|
7
7
|
const mapValues = require("lodash/fp/mapValues");
|
8
8
|
const reactIntl = require("react-intl");
|
9
9
|
const reactRouterDom = require("react-router-dom");
|
10
|
+
const styledComponents = require("styled-components");
|
10
11
|
const yup = require("yup");
|
12
|
+
const fractionalIndexing = require("fractional-indexing");
|
11
13
|
const pipe = require("lodash/fp/pipe");
|
12
|
-
const dateFns = require("date-fns");
|
13
|
-
const styledComponents = require("styled-components");
|
14
14
|
const qs = require("qs");
|
15
|
+
const dateFns = require("date-fns");
|
15
16
|
const toolkit = require("@reduxjs/toolkit");
|
16
17
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
17
18
|
function _interopNamespace(e) {
|
18
|
-
if (e && e.__esModule)
|
19
|
-
return e;
|
19
|
+
if (e && e.__esModule) return e;
|
20
20
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
21
21
|
if (e) {
|
22
22
|
for (const k in e) {
|
@@ -36,13 +36,20 @@ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
|
36
36
|
const mapValues__default = /* @__PURE__ */ _interopDefault(mapValues);
|
37
37
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
38
38
|
const pipe__default = /* @__PURE__ */ _interopDefault(pipe);
|
39
|
-
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
39
|
+
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
40
40
|
const v = glob[path];
|
41
41
|
if (v) {
|
42
42
|
return typeof v === "function" ? v() : Promise.resolve(v);
|
43
43
|
}
|
44
44
|
return new Promise((_, reject) => {
|
45
|
-
(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
|
+
);
|
46
53
|
});
|
47
54
|
};
|
48
55
|
const PLUGIN_ID = "content-manager";
|
@@ -181,6 +188,113 @@ const extractAndDedupeFields = (permissions = []) => permissions.flatMap((permis
|
|
181
188
|
(field, index2, arr) => arr.indexOf(field) === index2 && typeof field === "string"
|
182
189
|
);
|
183
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
|
+
};
|
184
298
|
const contentManagerApi = strapiAdmin.adminApi.enhanceEndpoints({
|
185
299
|
addTagTypes: [
|
186
300
|
"ComponentConfiguration",
|
@@ -190,7 +304,8 @@ const contentManagerApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
190
304
|
"InitialData",
|
191
305
|
"HistoryVersion",
|
192
306
|
"Relations",
|
193
|
-
"UidAvailability"
|
307
|
+
"UidAvailability",
|
308
|
+
"RecentDocumentList"
|
194
309
|
]
|
195
310
|
});
|
196
311
|
const documentApi = contentManagerApi.injectEndpoints({
|
@@ -208,7 +323,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
208
323
|
if (error) {
|
209
324
|
return [];
|
210
325
|
}
|
211
|
-
return [{ type: "Document", id: `${model}_LIST` }];
|
326
|
+
return [{ type: "Document", id: `${model}_LIST` }, "RecentDocumentList"];
|
212
327
|
}
|
213
328
|
}),
|
214
329
|
cloneDocument: builder.mutation({
|
@@ -222,7 +337,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
222
337
|
}),
|
223
338
|
invalidatesTags: (_result, _error, { model }) => [
|
224
339
|
{ type: "Document", id: `${model}_LIST` },
|
225
|
-
{ type: "UidAvailability", id: model }
|
340
|
+
{ type: "UidAvailability", id: model },
|
341
|
+
"RecentDocumentList"
|
226
342
|
]
|
227
343
|
}),
|
228
344
|
/**
|
@@ -241,8 +357,21 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
241
357
|
invalidatesTags: (result, _error, { model }) => [
|
242
358
|
{ type: "Document", id: `${model}_LIST` },
|
243
359
|
"Relations",
|
244
|
-
{ type: "UidAvailability", id: model }
|
245
|
-
|
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
|
+
}
|
246
375
|
}),
|
247
376
|
deleteDocument: builder.mutation({
|
248
377
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -253,7 +382,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
253
382
|
}
|
254
383
|
}),
|
255
384
|
invalidatesTags: (_result, _error, { collectionType, model }) => [
|
256
|
-
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model }
|
385
|
+
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },
|
386
|
+
"RecentDocumentList"
|
257
387
|
]
|
258
388
|
}),
|
259
389
|
deleteManyDocuments: builder.mutation({
|
@@ -265,7 +395,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
265
395
|
params
|
266
396
|
}
|
267
397
|
}),
|
268
|
-
invalidatesTags: (_res, _error, { model }) => [
|
398
|
+
invalidatesTags: (_res, _error, { model }) => [
|
399
|
+
{ type: "Document", id: `${model}_LIST` },
|
400
|
+
"RecentDocumentList"
|
401
|
+
]
|
269
402
|
}),
|
270
403
|
discardDocument: builder.mutation({
|
271
404
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -283,7 +416,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
283
416
|
},
|
284
417
|
{ type: "Document", id: `${model}_LIST` },
|
285
418
|
"Relations",
|
286
|
-
{ type: "UidAvailability", id: model }
|
419
|
+
{ type: "UidAvailability", id: model },
|
420
|
+
"RecentDocumentList"
|
287
421
|
];
|
288
422
|
}
|
289
423
|
}),
|
@@ -296,7 +430,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
296
430
|
url: `/content-manager/collection-types/${model}`,
|
297
431
|
method: "GET",
|
298
432
|
config: {
|
299
|
-
params
|
433
|
+
params: qs.stringify(params, { encode: true })
|
300
434
|
}
|
301
435
|
}),
|
302
436
|
providesTags: (result, _error, arg) => {
|
@@ -378,7 +512,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
378
512
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
379
513
|
},
|
380
514
|
{ type: "Document", id: `${model}_LIST` },
|
381
|
-
"Relations"
|
515
|
+
"Relations",
|
516
|
+
"RecentDocumentList"
|
382
517
|
];
|
383
518
|
}
|
384
519
|
}),
|
@@ -409,7 +544,9 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
409
544
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
410
545
|
},
|
411
546
|
"Relations",
|
412
|
-
{ type: "UidAvailability", id: model }
|
547
|
+
{ type: "UidAvailability", id: model },
|
548
|
+
"RecentDocumentList",
|
549
|
+
"RecentDocumentList"
|
413
550
|
];
|
414
551
|
},
|
415
552
|
async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {
|
@@ -439,7 +576,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
439
576
|
{
|
440
577
|
type: "Document",
|
441
578
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
442
|
-
}
|
579
|
+
},
|
580
|
+
"RecentDocumentList"
|
443
581
|
];
|
444
582
|
}
|
445
583
|
}),
|
@@ -452,7 +590,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
452
590
|
params
|
453
591
|
}
|
454
592
|
}),
|
455
|
-
invalidatesTags: (_res, _error, { model, documentIds }) =>
|
593
|
+
invalidatesTags: (_res, _error, { model, documentIds }) => [
|
594
|
+
...documentIds.map((id) => ({ type: "Document", id: `${model}_${id}` })),
|
595
|
+
"RecentDocumentList"
|
596
|
+
]
|
456
597
|
})
|
457
598
|
})
|
458
599
|
});
|
@@ -475,8 +616,7 @@ const {
|
|
475
616
|
useUnpublishManyDocumentsMutation
|
476
617
|
} = documentApi;
|
477
618
|
const buildValidParams = (query) => {
|
478
|
-
if (!query)
|
479
|
-
return query;
|
619
|
+
if (!query) return query;
|
480
620
|
const { plugins: _, ...validQueryParams } = {
|
481
621
|
...query,
|
482
622
|
...Object.values(query?.plugins ?? {}).reduce(
|
@@ -484,9 +624,6 @@ const buildValidParams = (query) => {
|
|
484
624
|
{}
|
485
625
|
)
|
486
626
|
};
|
487
|
-
if ("_q" in validQueryParams) {
|
488
|
-
validQueryParams._q = encodeURIComponent(validQueryParams._q);
|
489
|
-
}
|
490
627
|
return validQueryParams;
|
491
628
|
};
|
492
629
|
const isBaseQueryError = (error) => {
|
@@ -991,9 +1128,10 @@ const formatEditLayout = (data, {
|
|
991
1128
|
currentPanelIndex += 2;
|
992
1129
|
} else {
|
993
1130
|
if (!panels[currentPanelIndex]) {
|
994
|
-
panels.push([]);
|
1131
|
+
panels.push([row]);
|
1132
|
+
} else {
|
1133
|
+
panels[currentPanelIndex].push(row);
|
995
1134
|
}
|
996
|
-
panels[currentPanelIndex].push(row);
|
997
1135
|
}
|
998
1136
|
return panels;
|
999
1137
|
}, []);
|
@@ -1126,6 +1264,7 @@ const convertListLayoutToFieldLayouts = (columns, attributes = {}, metadatas, co
|
|
1126
1264
|
const useDocument = (args, opts) => {
|
1127
1265
|
const { toggleNotification } = strapiAdmin.useNotification();
|
1128
1266
|
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
1267
|
+
const { formatMessage } = reactIntl.useIntl();
|
1129
1268
|
const {
|
1130
1269
|
currentData: data,
|
1131
1270
|
isLoading: isLoadingDocument,
|
@@ -1135,12 +1274,27 @@ const useDocument = (args, opts) => {
|
|
1135
1274
|
...opts,
|
1136
1275
|
skip: !args.documentId && args.collectionType !== SINGLE_TYPES || opts?.skip
|
1137
1276
|
});
|
1277
|
+
const document = data?.data;
|
1278
|
+
const meta = data?.meta;
|
1138
1279
|
const {
|
1139
1280
|
components,
|
1140
1281
|
schema,
|
1141
1282
|
schemas,
|
1142
1283
|
isLoading: isLoadingSchema
|
1143
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
|
+
};
|
1144
1298
|
React__namespace.useEffect(() => {
|
1145
1299
|
if (error) {
|
1146
1300
|
toggleNotification({
|
@@ -1156,14 +1310,14 @@ const useDocument = (args, opts) => {
|
|
1156
1310
|
return createYupSchema(schema.attributes, components);
|
1157
1311
|
}, [schema, components]);
|
1158
1312
|
const validate = React__namespace.useCallback(
|
1159
|
-
(
|
1313
|
+
(document2) => {
|
1160
1314
|
if (!validationSchema) {
|
1161
1315
|
throw new Error(
|
1162
1316
|
"There is no validation schema generated, this is likely due to the schema not being loaded yet."
|
1163
1317
|
);
|
1164
1318
|
}
|
1165
1319
|
try {
|
1166
|
-
validationSchema.validateSync(
|
1320
|
+
validationSchema.validateSync(document2, { abortEarly: false, strict: true });
|
1167
1321
|
return null;
|
1168
1322
|
} catch (error2) {
|
1169
1323
|
if (error2 instanceof yup.ValidationError) {
|
@@ -1174,17 +1328,29 @@ const useDocument = (args, opts) => {
|
|
1174
1328
|
},
|
1175
1329
|
[validationSchema]
|
1176
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
|
+
);
|
1177
1341
|
const isLoading = isLoadingDocument || isFetchingDocument || isLoadingSchema;
|
1178
1342
|
const hasError = !!error;
|
1179
1343
|
return {
|
1180
1344
|
components,
|
1181
|
-
document
|
1182
|
-
meta
|
1345
|
+
document,
|
1346
|
+
meta,
|
1183
1347
|
isLoading,
|
1184
1348
|
hasError,
|
1185
1349
|
schema,
|
1186
1350
|
schemas,
|
1187
|
-
validate
|
1351
|
+
validate,
|
1352
|
+
getTitle,
|
1353
|
+
getInitialFormValues
|
1188
1354
|
};
|
1189
1355
|
};
|
1190
1356
|
const useDoc = () => {
|
@@ -1251,9 +1417,6 @@ const useContentManagerContext = () => {
|
|
1251
1417
|
};
|
1252
1418
|
};
|
1253
1419
|
const prefixPluginTranslations = (trad, pluginId) => {
|
1254
|
-
if (!pluginId) {
|
1255
|
-
throw new TypeError("pluginId can't be empty");
|
1256
|
-
}
|
1257
1420
|
return Object.keys(trad).reduce((acc, current) => {
|
1258
1421
|
acc[`${pluginId}.${current}`] = trad[current];
|
1259
1422
|
return acc;
|
@@ -1687,10 +1850,10 @@ const useDocumentActions = () => {
|
|
1687
1850
|
update
|
1688
1851
|
};
|
1689
1852
|
};
|
1690
|
-
const ProtectedHistoryPage =
|
1691
|
-
() => Promise.resolve().then(() => require("./History-
|
1853
|
+
const ProtectedHistoryPage = React__namespace.lazy(
|
1854
|
+
() => Promise.resolve().then(() => require("./History-zArjENzj.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
|
1692
1855
|
);
|
1693
|
-
const routes$
|
1856
|
+
const routes$2 = [
|
1694
1857
|
{
|
1695
1858
|
path: ":collectionType/:slug/:id/history",
|
1696
1859
|
Component: ProtectedHistoryPage
|
@@ -1700,32 +1863,45 @@ const routes$1 = [
|
|
1700
1863
|
Component: ProtectedHistoryPage
|
1701
1864
|
}
|
1702
1865
|
];
|
1866
|
+
const ProtectedPreviewPage = React__namespace.lazy(
|
1867
|
+
() => Promise.resolve().then(() => require("./Preview-DEHdENT1.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
|
+
];
|
1703
1879
|
const ProtectedEditViewPage = React.lazy(
|
1704
|
-
() => Promise.resolve().then(() => require("./EditViewPage-
|
1880
|
+
() => Promise.resolve().then(() => require("./EditViewPage-DqelJ9UK.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
|
1705
1881
|
);
|
1706
1882
|
const ProtectedListViewPage = React.lazy(
|
1707
|
-
() => Promise.resolve().then(() => require("./ListViewPage-
|
1883
|
+
() => Promise.resolve().then(() => require("./ListViewPage-BVKBeQAA.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
|
1708
1884
|
);
|
1709
1885
|
const ProtectedListConfiguration = React.lazy(
|
1710
|
-
() => Promise.resolve().then(() => require("./ListConfigurationPage-
|
1886
|
+
() => Promise.resolve().then(() => require("./ListConfigurationPage-ByZAO_9H.js")).then((mod) => ({
|
1711
1887
|
default: mod.ProtectedListConfiguration
|
1712
1888
|
}))
|
1713
1889
|
);
|
1714
1890
|
const ProtectedEditConfigurationPage = React.lazy(
|
1715
|
-
() => Promise.resolve().then(() => require("./EditConfigurationPage-
|
1891
|
+
() => Promise.resolve().then(() => require("./EditConfigurationPage-LYEvR4fW.js")).then((mod) => ({
|
1716
1892
|
default: mod.ProtectedEditConfigurationPage
|
1717
1893
|
}))
|
1718
1894
|
);
|
1719
1895
|
const ProtectedComponentConfigurationPage = React.lazy(
|
1720
|
-
() => Promise.resolve().then(() => require("./ComponentConfigurationPage-
|
1896
|
+
() => Promise.resolve().then(() => require("./ComponentConfigurationPage-DdkVGfXC.js")).then((mod) => ({
|
1721
1897
|
default: mod.ProtectedComponentConfigurationPage
|
1722
1898
|
}))
|
1723
1899
|
);
|
1724
1900
|
const NoPermissions = React.lazy(
|
1725
|
-
() => Promise.resolve().then(() => require("./NoPermissionsPage-
|
1901
|
+
() => Promise.resolve().then(() => require("./NoPermissionsPage-vdNpc6jb.js")).then((mod) => ({ default: mod.NoPermissions }))
|
1726
1902
|
);
|
1727
1903
|
const NoContentType = React.lazy(
|
1728
|
-
() => Promise.resolve().then(() => require("./NoContentTypePage-
|
1904
|
+
() => Promise.resolve().then(() => require("./NoContentTypePage-BV5zfDxr.js")).then((mod) => ({ default: mod.NoContentType }))
|
1729
1905
|
);
|
1730
1906
|
const CollectionTypePages = () => {
|
1731
1907
|
const { collectionType } = reactRouterDom.useParams();
|
@@ -1737,7 +1913,7 @@ const CollectionTypePages = () => {
|
|
1737
1913
|
const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
|
1738
1914
|
const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
|
1739
1915
|
const LIST_RELATIVE_PATH = ":collectionType/:slug";
|
1740
|
-
const LIST_PATH = `/content-manager
|
1916
|
+
const LIST_PATH = `/content-manager/collection-types/:slug`;
|
1741
1917
|
const routes = [
|
1742
1918
|
{
|
1743
1919
|
path: LIST_RELATIVE_PATH,
|
@@ -1771,6 +1947,7 @@ const routes = [
|
|
1771
1947
|
path: "no-content-types",
|
1772
1948
|
Component: NoContentType
|
1773
1949
|
},
|
1950
|
+
...routes$2,
|
1774
1951
|
...routes$1
|
1775
1952
|
];
|
1776
1953
|
const DocumentActions = ({ actions: actions2 }) => {
|
@@ -1869,6 +2046,11 @@ const DocumentActionButton = (action) => {
|
|
1869
2046
|
) : null
|
1870
2047
|
] });
|
1871
2048
|
};
|
2049
|
+
const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
|
2050
|
+
&:hover {
|
2051
|
+
background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
|
2052
|
+
}
|
2053
|
+
`;
|
1872
2054
|
const DocumentActionsMenu = ({
|
1873
2055
|
actions: actions2,
|
1874
2056
|
children,
|
@@ -1927,48 +2109,32 @@ const DocumentActionsMenu = ({
|
|
1927
2109
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
|
1928
2110
|
actions2.map((action) => {
|
1929
2111
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
1930
|
-
|
2112
|
+
MenuItem,
|
1931
2113
|
{
|
1932
2114
|
disabled: action.disabled,
|
1933
2115
|
onSelect: handleClick(action),
|
1934
2116
|
display: "block",
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
1952
|
-
|
1953
|
-
|
1954
|
-
|
1955
|
-
|
1956
|
-
designSystem.Flex,
|
1957
|
-
{
|
1958
|
-
alignItems: "center",
|
1959
|
-
background: "alternative100",
|
1960
|
-
borderStyle: "solid",
|
1961
|
-
borderColor: "alternative200",
|
1962
|
-
borderWidth: "1px",
|
1963
|
-
height: 5,
|
1964
|
-
paddingLeft: 2,
|
1965
|
-
paddingRight: 2,
|
1966
|
-
hasRadius: true,
|
1967
|
-
color: "alternative600",
|
1968
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
|
1969
|
-
}
|
1970
|
-
)
|
1971
|
-
] })
|
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
|
+
) })
|
1972
2138
|
},
|
1973
2139
|
action.id
|
1974
2140
|
);
|
@@ -2105,6 +2271,7 @@ const PublishAction$1 = ({
|
|
2105
2271
|
const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
|
2106
2272
|
const isListView = reactRouterDom.useMatch(LIST_PATH) !== null;
|
2107
2273
|
const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
|
2274
|
+
const { id } = reactRouterDom.useParams();
|
2108
2275
|
const { formatMessage } = reactIntl.useIntl();
|
2109
2276
|
const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
|
2110
2277
|
const { publish } = useDocumentActions();
|
@@ -2207,10 +2374,12 @@ const PublishAction$1 = ({
|
|
2207
2374
|
transformData(formValues)
|
2208
2375
|
);
|
2209
2376
|
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
2210
|
-
|
2211
|
-
|
2212
|
-
|
2213
|
-
|
2377
|
+
if (id === "create") {
|
2378
|
+
navigate({
|
2379
|
+
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
2380
|
+
search: rawQuery
|
2381
|
+
});
|
2382
|
+
}
|
2214
2383
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2215
2384
|
setErrors(formatValidationErrors(res.error));
|
2216
2385
|
}
|
@@ -2263,6 +2432,7 @@ const PublishAction$1 = ({
|
|
2263
2432
|
};
|
2264
2433
|
};
|
2265
2434
|
PublishAction$1.type = "publish";
|
2435
|
+
PublishAction$1.position = "panel";
|
2266
2436
|
const UpdateAction = ({
|
2267
2437
|
activeTab,
|
2268
2438
|
documentId,
|
@@ -2285,96 +2455,134 @@ const UpdateAction = ({
|
|
2285
2455
|
const validate = strapiAdmin.useForm("UpdateAction", (state) => state.validate);
|
2286
2456
|
const setErrors = strapiAdmin.useForm("UpdateAction", (state) => state.setErrors);
|
2287
2457
|
const resetForm = strapiAdmin.useForm("PublishAction", ({ resetForm: resetForm2 }) => resetForm2);
|
2288
|
-
|
2289
|
-
|
2290
|
-
|
2291
|
-
|
2292
|
-
|
2293
|
-
|
2294
|
-
|
2295
|
-
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2299
|
-
|
2300
|
-
|
2301
|
-
|
2302
|
-
|
2303
|
-
|
2304
|
-
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
|
+
})
|
2305
2474
|
});
|
2306
|
-
|
2307
|
-
|
2308
|
-
|
2309
|
-
|
2310
|
-
|
2311
|
-
|
2312
|
-
|
2313
|
-
|
2314
|
-
|
2315
|
-
|
2316
|
-
|
2317
|
-
|
2318
|
-
|
2319
|
-
model,
|
2320
|
-
documentId: cloneMatch.params.origin,
|
2321
|
-
params
|
2322
|
-
},
|
2323
|
-
transformData(document)
|
2324
|
-
);
|
2325
|
-
if ("data" in res) {
|
2326
|
-
navigate(
|
2327
|
-
{
|
2328
|
-
pathname: `../${res.data.documentId}`,
|
2329
|
-
search: rawQuery
|
2330
|
-
},
|
2331
|
-
{ relative: "path" }
|
2332
|
-
);
|
2333
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2334
|
-
setErrors(formatValidationErrors(res.error));
|
2335
|
-
}
|
2336
|
-
} else if (documentId || collectionType === SINGLE_TYPES) {
|
2337
|
-
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(
|
2338
2488
|
{
|
2339
|
-
|
2340
|
-
|
2341
|
-
documentId,
|
2342
|
-
params
|
2489
|
+
pathname: `../${res.data.documentId}`,
|
2490
|
+
search: rawQuery
|
2343
2491
|
},
|
2344
|
-
|
2492
|
+
{ relative: "path" }
|
2345
2493
|
);
|
2346
|
-
|
2347
|
-
|
2348
|
-
|
2349
|
-
|
2350
|
-
|
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));
|
2351
2509
|
} else {
|
2352
|
-
|
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(
|
2353
2522
|
{
|
2354
|
-
|
2355
|
-
|
2523
|
+
pathname: `../${res.data.documentId}`,
|
2524
|
+
search: rawQuery
|
2356
2525
|
},
|
2357
|
-
|
2526
|
+
{ replace: true, relative: "path" }
|
2358
2527
|
);
|
2359
|
-
|
2360
|
-
|
2361
|
-
{
|
2362
|
-
pathname: `../${res.data.documentId}`,
|
2363
|
-
search: rawQuery
|
2364
|
-
},
|
2365
|
-
{ replace: true, relative: "path" }
|
2366
|
-
);
|
2367
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2368
|
-
setErrors(formatValidationErrors(res.error));
|
2369
|
-
}
|
2528
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
2529
|
+
setErrors(formatValidationErrors(res.error));
|
2370
2530
|
}
|
2371
|
-
} finally {
|
2372
|
-
setSubmitting(false);
|
2373
2531
|
}
|
2532
|
+
} finally {
|
2533
|
+
setSubmitting(false);
|
2374
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
|
2375
2582
|
};
|
2376
2583
|
};
|
2377
2584
|
UpdateAction.type = "update";
|
2585
|
+
UpdateAction.position = "panel";
|
2378
2586
|
const UNPUBLISH_DRAFT_OPTIONS = {
|
2379
2587
|
KEEP: "keep",
|
2380
2588
|
DISCARD: "discard"
|
@@ -2497,6 +2705,7 @@ const UnpublishAction$1 = ({
|
|
2497
2705
|
};
|
2498
2706
|
};
|
2499
2707
|
UnpublishAction$1.type = "unpublish";
|
2708
|
+
UnpublishAction$1.position = "panel";
|
2500
2709
|
const DiscardAction = ({
|
2501
2710
|
activeTab,
|
2502
2711
|
documentId,
|
@@ -2547,6 +2756,7 @@ const DiscardAction = ({
|
|
2547
2756
|
};
|
2548
2757
|
};
|
2549
2758
|
DiscardAction.type = "discard";
|
2759
|
+
DiscardAction.position = "panel";
|
2550
2760
|
const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
|
2551
2761
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
2552
2762
|
const RelativeTime = React__namespace.forwardRef(
|
@@ -2559,7 +2769,7 @@ const RelativeTime = React__namespace.forwardRef(
|
|
2559
2769
|
});
|
2560
2770
|
const unit = intervals.find((intervalUnit) => {
|
2561
2771
|
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
2562
|
-
});
|
2772
|
+
}) ?? "seconds";
|
2563
2773
|
const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
|
2564
2774
|
const customInterval = customIntervals.find(
|
2565
2775
|
(custom) => interval[custom.unit] < custom.threshold
|
@@ -2593,19 +2803,29 @@ const getDisplayName = ({
|
|
2593
2803
|
return email ?? "";
|
2594
2804
|
};
|
2595
2805
|
const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
2596
|
-
const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
2806
|
+
const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
|
2597
2807
|
const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
|
2598
|
-
|
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
|
+
}) }) });
|
2599
2813
|
};
|
2600
2814
|
const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
2601
2815
|
const { formatMessage } = reactIntl.useIntl();
|
2602
2816
|
const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
|
2817
|
+
const params = reactRouterDom.useParams();
|
2603
2818
|
const title = isCreating ? formatMessage({
|
2604
2819
|
id: "content-manager.containers.edit.title.new",
|
2605
2820
|
defaultMessage: "Create an entry"
|
2606
2821
|
}) : documentTitle;
|
2607
2822
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
|
2608
|
-
/* @__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
|
+
),
|
2609
2829
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
|
2610
2830
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", tag: "h1", children: title }),
|
2611
2831
|
/* @__PURE__ */ jsxRuntime.jsx(HeaderToolbar, {})
|
@@ -2656,7 +2876,7 @@ const HeaderToolbar = () => {
|
|
2656
2876
|
meta: isCloning ? void 0 : meta,
|
2657
2877
|
collectionType
|
2658
2878
|
},
|
2659
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
2879
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("header"),
|
2660
2880
|
children: (actions2) => {
|
2661
2881
|
const headerActions = actions2.filter((action) => {
|
2662
2882
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -2864,6 +3084,7 @@ const ConfigureTheViewAction = ({ collectionType, model }) => {
|
|
2864
3084
|
};
|
2865
3085
|
};
|
2866
3086
|
ConfigureTheViewAction.type = "configure-the-view";
|
3087
|
+
ConfigureTheViewAction.position = "header";
|
2867
3088
|
const EditTheModelAction = ({ model }) => {
|
2868
3089
|
const navigate = reactRouterDom.useNavigate();
|
2869
3090
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -2880,6 +3101,7 @@ const EditTheModelAction = ({ model }) => {
|
|
2880
3101
|
};
|
2881
3102
|
};
|
2882
3103
|
EditTheModelAction.type = "edit-the-model";
|
3104
|
+
EditTheModelAction.position = "header";
|
2883
3105
|
const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
2884
3106
|
const navigate = reactRouterDom.useNavigate();
|
2885
3107
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -2953,6 +3175,7 @@ const DeleteAction$1 = ({ documentId, model, collectionType, document }) => {
|
|
2953
3175
|
};
|
2954
3176
|
};
|
2955
3177
|
DeleteAction$1.type = "delete";
|
3178
|
+
DeleteAction$1.position = ["header", "table-row"];
|
2956
3179
|
const DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction$1];
|
2957
3180
|
const Panels = () => {
|
2958
3181
|
const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
|
@@ -3015,7 +3238,7 @@ const ActionsPanelContent = () => {
|
|
3015
3238
|
strapiAdmin.DescriptionComponentRenderer,
|
3016
3239
|
{
|
3017
3240
|
props,
|
3018
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
3241
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions("panel"),
|
3019
3242
|
children: (actions2) => /* @__PURE__ */ jsxRuntime.jsx(DocumentActions, { actions: actions2 })
|
3020
3243
|
}
|
3021
3244
|
),
|
@@ -3042,7 +3265,7 @@ const Panel = React__namespace.forwardRef(({ children, title }, ref) => {
|
|
3042
3265
|
justifyContent: "stretch",
|
3043
3266
|
alignItems: "flex-start",
|
3044
3267
|
children: [
|
3045
|
-
/* @__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 }),
|
3046
3269
|
children
|
3047
3270
|
]
|
3048
3271
|
}
|
@@ -3073,7 +3296,7 @@ const ConfirmBulkActionDialog = ({
|
|
3073
3296
|
] })
|
3074
3297
|
] }) });
|
3075
3298
|
};
|
3076
|
-
const BoldChunk
|
3299
|
+
const BoldChunk = (chunks) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: chunks });
|
3077
3300
|
const ConfirmDialogPublishAll = ({
|
3078
3301
|
isOpen,
|
3079
3302
|
onToggleDialog,
|
@@ -3122,7 +3345,7 @@ const ConfirmDialogPublishAll = ({
|
|
3122
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. "
|
3123
3346
|
},
|
3124
3347
|
{
|
3125
|
-
b: BoldChunk
|
3348
|
+
b: BoldChunk,
|
3126
3349
|
count: countDraftRelations,
|
3127
3350
|
entities: selectedEntries.length
|
3128
3351
|
}
|
@@ -3161,6 +3384,16 @@ const ConfirmDialogPublishAll = ({
|
|
3161
3384
|
const TypographyMaxWidth = styledComponents.styled(designSystem.Typography)`
|
3162
3385
|
max-width: 300px;
|
3163
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
|
+
`;
|
3164
3397
|
const formatErrorMessages = (errors, parentKey, formatMessage) => {
|
3165
3398
|
const messages = [];
|
3166
3399
|
Object.entries(errors).forEach(([key, value]) => {
|
@@ -3265,7 +3498,7 @@ const SelectedEntriesTableContent = ({
|
|
3265
3498
|
)
|
3266
3499
|
] }),
|
3267
3500
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
|
3268
|
-
/* @__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: [
|
3269
3502
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.CheckboxCell, { id: row.id }),
|
3270
3503
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: row.id }) }),
|
3271
3504
|
shouldDisplayMainField && /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: row[mainField] }) }),
|
@@ -3292,18 +3525,10 @@ const SelectedEntriesTableContent = ({
|
|
3292
3525
|
search: row.locale && `?plugins[i18n][locale]=${row.locale}`
|
3293
3526
|
},
|
3294
3527
|
state: { from: pathname },
|
3295
|
-
label: formatMessage(
|
3296
|
-
|
3297
|
-
|
3298
|
-
|
3299
|
-
{
|
3300
|
-
id: "content-manager.components.ListViewHelperPluginTable.row-line",
|
3301
|
-
defaultMessage: "item line {number}"
|
3302
|
-
},
|
3303
|
-
{ number: index2 + 1 }
|
3304
|
-
)
|
3305
|
-
}
|
3306
|
-
),
|
3528
|
+
label: formatMessage({
|
3529
|
+
id: "content-manager.bulk-publish.edit",
|
3530
|
+
defaultMessage: "Edit"
|
3531
|
+
}),
|
3307
3532
|
target: "_blank",
|
3308
3533
|
marginLeft: "auto",
|
3309
3534
|
variant: "ghost",
|
@@ -3313,7 +3538,73 @@ const SelectedEntriesTableContent = ({
|
|
3313
3538
|
] }, row.id)) })
|
3314
3539
|
] });
|
3315
3540
|
};
|
3316
|
-
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
|
+
};
|
3317
3608
|
const SelectedEntriesModalContent = ({
|
3318
3609
|
listViewSelectedEntries,
|
3319
3610
|
toggleModal,
|
@@ -3372,7 +3663,6 @@ const SelectedEntriesModalContent = ({
|
|
3372
3663
|
validationErrors: {}
|
3373
3664
|
};
|
3374
3665
|
}, [components, data, schema]);
|
3375
|
-
const [publishedCount, setPublishedCount] = React__namespace.useState(0);
|
3376
3666
|
const [isDialogOpen, setIsDialogOpen] = React__namespace.useState(false);
|
3377
3667
|
const { publishMany: bulkPublishAction } = useDocumentActions();
|
3378
3668
|
const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();
|
@@ -3384,53 +3674,36 @@ const SelectedEntriesModalContent = ({
|
|
3384
3674
|
const selectedEntriesWithErrorsCount = selectedEntries.filter(
|
3385
3675
|
({ documentId }) => validationErrors[documentId]
|
3386
3676
|
).length;
|
3387
|
-
const
|
3677
|
+
const selectedEntriesPublishedCount = selectedEntries.filter(
|
3388
3678
|
({ status }) => status === "published"
|
3389
3679
|
).length;
|
3390
|
-
const
|
3680
|
+
const selectedEntriesModifiedCount = selectedEntries.filter(
|
3681
|
+
({ status, documentId }) => status === "modified" && !validationErrors[documentId]
|
3682
|
+
).length;
|
3683
|
+
const selectedEntriesWithNoErrorsCount = selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;
|
3391
3684
|
const toggleDialog = () => setIsDialogOpen((prev) => !prev);
|
3392
3685
|
const handleConfirmBulkPublish = async () => {
|
3393
3686
|
toggleDialog();
|
3394
3687
|
const res = await bulkPublishAction({ model, documentIds: entriesToPublish, params });
|
3395
3688
|
if (!("error" in res)) {
|
3396
|
-
setPublishedCount(res.count);
|
3397
3689
|
const unpublishedEntries = rows.filter((row) => {
|
3398
3690
|
return !entriesToPublish.includes(row.documentId);
|
3399
3691
|
});
|
3400
3692
|
setListViewSelectedDocuments(unpublishedEntries);
|
3401
3693
|
}
|
3402
3694
|
};
|
3403
|
-
const getFormattedCountMessage = () => {
|
3404
|
-
if (publishedCount) {
|
3405
|
-
return formatMessage(
|
3406
|
-
{
|
3407
|
-
id: getTranslation("containers.list.selectedEntriesModal.publishedCount"),
|
3408
|
-
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."
|
3409
|
-
},
|
3410
|
-
{
|
3411
|
-
publishedCount,
|
3412
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3413
|
-
b: BoldChunk
|
3414
|
-
}
|
3415
|
-
);
|
3416
|
-
}
|
3417
|
-
return formatMessage(
|
3418
|
-
{
|
3419
|
-
id: getTranslation("containers.list.selectedEntriesModal.selectedCount"),
|
3420
|
-
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."
|
3421
|
-
},
|
3422
|
-
{
|
3423
|
-
readyToPublishCount: selectedEntriesWithNoErrorsCount,
|
3424
|
-
withErrorsCount: selectedEntriesWithErrorsCount,
|
3425
|
-
alreadyPublishedCount: selectedEntriesPublished,
|
3426
|
-
b: BoldChunk
|
3427
|
-
}
|
3428
|
-
);
|
3429
|
-
};
|
3430
3695
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
3431
3696
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Body, { children: [
|
3432
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
3433
|
-
|
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(
|
3434
3707
|
SelectedEntriesTableContent,
|
3435
3708
|
{
|
3436
3709
|
isPublishing: isSubmittingForm,
|
@@ -3451,7 +3724,7 @@ const SelectedEntriesModalContent = ({
|
|
3451
3724
|
designSystem.Button,
|
3452
3725
|
{
|
3453
3726
|
onClick: toggleDialog,
|
3454
|
-
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount ||
|
3727
|
+
disabled: selectedEntries.length === 0 || selectedEntries.length === selectedEntriesWithErrorsCount || selectedEntriesPublishedCount === selectedEntries.length || isLoading,
|
3455
3728
|
loading: isSubmittingForm,
|
3456
3729
|
children: formatMessage({ id: "app.utils.publish", defaultMessage: "Publish" })
|
3457
3730
|
}
|
@@ -3477,8 +3750,7 @@ const PublishAction = ({ documents, model }) => {
|
|
3477
3750
|
const refetchList = () => {
|
3478
3751
|
contentManagerApi.util.invalidateTags([{ type: "Document", id: `${model}_LIST` }]);
|
3479
3752
|
};
|
3480
|
-
if (!showPublishButton)
|
3481
|
-
return null;
|
3753
|
+
if (!showPublishButton) return null;
|
3482
3754
|
return {
|
3483
3755
|
actionType: "publish",
|
3484
3756
|
variant: "tertiary",
|
@@ -3546,8 +3818,7 @@ const DeleteAction = ({ documents, model }) => {
|
|
3546
3818
|
selectRow([]);
|
3547
3819
|
}
|
3548
3820
|
};
|
3549
|
-
if (!hasDeletePermission)
|
3550
|
-
return null;
|
3821
|
+
if (!hasDeletePermission) return null;
|
3551
3822
|
return {
|
3552
3823
|
variant: "danger-light",
|
3553
3824
|
label: formatMessage({ id: "global.delete", defaultMessage: "Delete" }),
|
@@ -3596,8 +3867,7 @@ const UnpublishAction = ({ documents, model }) => {
|
|
3596
3867
|
}
|
3597
3868
|
};
|
3598
3869
|
const showUnpublishButton = hasDraftAndPublishEnabled && hasPublishPermission && documents.some((entry) => entry.status === "published" || entry.status === "modified");
|
3599
|
-
if (!showUnpublishButton)
|
3600
|
-
return null;
|
3870
|
+
if (!showUnpublishButton) return null;
|
3601
3871
|
return {
|
3602
3872
|
variant: "tertiary",
|
3603
3873
|
label: formatMessage({ id: "app.utils.unpublish", defaultMessage: "Unpublish" }),
|
@@ -3702,7 +3972,7 @@ const TableActions = ({ document }) => {
|
|
3702
3972
|
strapiAdmin.DescriptionComponentRenderer,
|
3703
3973
|
{
|
3704
3974
|
props,
|
3705
|
-
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"),
|
3706
3976
|
children: (actions2) => {
|
3707
3977
|
const tableRowActions = actions2.filter((action) => {
|
3708
3978
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -3761,6 +4031,7 @@ const EditAction = ({ documentId }) => {
|
|
3761
4031
|
};
|
3762
4032
|
};
|
3763
4033
|
EditAction.type = "edit";
|
4034
|
+
EditAction.position = "table-row";
|
3764
4035
|
const StyledPencil = styledComponents.styled(Icons.Pencil)`
|
3765
4036
|
path {
|
3766
4037
|
fill: currentColor;
|
@@ -3837,6 +4108,7 @@ const CloneAction = ({ model, documentId }) => {
|
|
3837
4108
|
};
|
3838
4109
|
};
|
3839
4110
|
CloneAction.type = "clone";
|
4111
|
+
CloneAction.position = "table-row";
|
3840
4112
|
const StyledDuplicate = styledComponents.styled(Icons.Duplicate)`
|
3841
4113
|
path {
|
3842
4114
|
fill: currentColor;
|
@@ -3923,7 +4195,14 @@ class ContentManagerPlugin {
|
|
3923
4195
|
addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),
|
3924
4196
|
addEditViewSidePanel: this.addEditViewSidePanel.bind(this),
|
3925
4197
|
getBulkActions: () => this.bulkActions,
|
3926
|
-
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
|
+
},
|
3927
4206
|
getEditViewSidePanels: () => this.editViewSidePanels,
|
3928
4207
|
getHeaderActions: () => this.headerActions
|
3929
4208
|
}
|
@@ -3933,10 +4212,8 @@ class ContentManagerPlugin {
|
|
3933
4212
|
const getPrintableType = (value) => {
|
3934
4213
|
const nativeType = typeof value;
|
3935
4214
|
if (nativeType === "object") {
|
3936
|
-
if (value === null)
|
3937
|
-
|
3938
|
-
if (Array.isArray(value))
|
3939
|
-
return "array";
|
4215
|
+
if (value === null) return "null";
|
4216
|
+
if (Array.isArray(value)) return "array";
|
3940
4217
|
if (value instanceof Object && value.constructor.name !== "Object") {
|
3941
4218
|
return value.constructor.name;
|
3942
4219
|
}
|
@@ -3947,17 +4224,27 @@ const HistoryAction = ({ model, document }) => {
|
|
3947
4224
|
const { formatMessage } = reactIntl.useIntl();
|
3948
4225
|
const [{ query }] = strapiAdmin.useQueryParams();
|
3949
4226
|
const navigate = reactRouterDom.useNavigate();
|
4227
|
+
const { trackUsage } = strapiAdmin.useTracking();
|
4228
|
+
const { pathname } = reactRouterDom.useLocation();
|
3950
4229
|
const pluginsQueryParams = qs.stringify({ plugins: query.plugins }, { encode: false });
|
3951
4230
|
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
3952
4231
|
return null;
|
3953
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
|
+
};
|
3954
4241
|
return {
|
3955
4242
|
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ClockCounterClockwise, {}),
|
3956
4243
|
label: formatMessage({
|
3957
4244
|
id: "content-manager.history.document-action",
|
3958
4245
|
defaultMessage: "Content History"
|
3959
4246
|
}),
|
3960
|
-
onClick:
|
4247
|
+
onClick: handleOnClick,
|
3961
4248
|
disabled: (
|
3962
4249
|
/**
|
3963
4250
|
* The user is creating a new document.
|
@@ -3979,6 +4266,7 @@ const HistoryAction = ({ model, document }) => {
|
|
3979
4266
|
};
|
3980
4267
|
};
|
3981
4268
|
HistoryAction.type = "history";
|
4269
|
+
HistoryAction.position = "header";
|
3982
4270
|
const historyAdmin = {
|
3983
4271
|
bootstrap(app) {
|
3984
4272
|
const { addDocumentAction } = app.getPlugin("content-manager").apis;
|
@@ -4025,6 +4313,88 @@ const { setInitialData } = actions;
|
|
4025
4313
|
const reducer = toolkit.combineReducers({
|
4026
4314
|
app: reducer$1
|
4027
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
|
+
};
|
4028
4398
|
const index = {
|
4029
4399
|
register(app) {
|
4030
4400
|
const cm = new ContentManagerPlugin();
|
@@ -4044,7 +4414,7 @@ const index = {
|
|
4044
4414
|
app.router.addRoute({
|
4045
4415
|
path: "content-manager/*",
|
4046
4416
|
lazy: async () => {
|
4047
|
-
const { Layout } = await Promise.resolve().then(() => require("./layout-
|
4417
|
+
const { Layout } = await Promise.resolve().then(() => require("./layout-DSeUTfMv.js"));
|
4048
4418
|
return {
|
4049
4419
|
Component: Layout
|
4050
4420
|
};
|
@@ -4057,11 +4427,14 @@ const index = {
|
|
4057
4427
|
if (typeof historyAdmin.bootstrap === "function") {
|
4058
4428
|
historyAdmin.bootstrap(app);
|
4059
4429
|
}
|
4430
|
+
if (typeof previewAdmin.bootstrap === "function") {
|
4431
|
+
previewAdmin.bootstrap(app);
|
4432
|
+
}
|
4060
4433
|
},
|
4061
4434
|
async registerTrads({ locales }) {
|
4062
4435
|
const importedTrads = await Promise.all(
|
4063
4436
|
locales.map((locale) => {
|
4064
|
-
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 }) => {
|
4065
4438
|
return {
|
4066
4439
|
data: prefixPluginTranslations(data, PLUGIN_ID),
|
4067
4440
|
locale
|
@@ -4083,7 +4456,6 @@ exports.CLONE_PATH = CLONE_PATH;
|
|
4083
4456
|
exports.COLLECTION_TYPES = COLLECTION_TYPES;
|
4084
4457
|
exports.CREATOR_FIELDS = CREATOR_FIELDS;
|
4085
4458
|
exports.DEFAULT_SETTINGS = DEFAULT_SETTINGS;
|
4086
|
-
exports.DOCUMENT_META_FIELDS = DOCUMENT_META_FIELDS;
|
4087
4459
|
exports.DocumentRBAC = DocumentRBAC;
|
4088
4460
|
exports.DocumentStatus = DocumentStatus;
|
4089
4461
|
exports.HOOKS = HOOKS;
|
@@ -4100,13 +4472,17 @@ exports.checkIfAttributeIsDisplayable = checkIfAttributeIsDisplayable;
|
|
4100
4472
|
exports.contentManagerApi = contentManagerApi;
|
4101
4473
|
exports.convertEditLayoutToFieldLayouts = convertEditLayoutToFieldLayouts;
|
4102
4474
|
exports.convertListLayoutToFieldLayouts = convertListLayoutToFieldLayouts;
|
4475
|
+
exports.createDefaultForm = createDefaultForm;
|
4103
4476
|
exports.createYupSchema = createYupSchema;
|
4104
4477
|
exports.extractContentTypeComponents = extractContentTypeComponents;
|
4105
4478
|
exports.getDisplayName = getDisplayName;
|
4106
4479
|
exports.getMainField = getMainField;
|
4107
4480
|
exports.getTranslation = getTranslation;
|
4108
4481
|
exports.index = index;
|
4482
|
+
exports.prepareTempKeys = prepareTempKeys;
|
4483
|
+
exports.removeFieldsThatDontExistOnSchema = removeFieldsThatDontExistOnSchema;
|
4109
4484
|
exports.setInitialData = setInitialData;
|
4485
|
+
exports.transformDocument = transformDocument;
|
4110
4486
|
exports.useContentManagerContext = useContentManagerContext;
|
4111
4487
|
exports.useContentTypeSchema = useContentTypeSchema;
|
4112
4488
|
exports.useDoc = useDoc;
|
@@ -4119,5 +4495,6 @@ exports.useGetAllContentTypeSettingsQuery = useGetAllContentTypeSettingsQuery;
|
|
4119
4495
|
exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
|
4120
4496
|
exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
|
4121
4497
|
exports.useGetInitialDataQuery = useGetInitialDataQuery;
|
4498
|
+
exports.useGetPreviewUrlQuery = useGetPreviewUrlQuery;
|
4122
4499
|
exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
|
4123
|
-
//# sourceMappingURL=index-
|
4500
|
+
//# sourceMappingURL=index-CxLSGwnk.js.map
|