@strapi/content-manager 0.0.0-next.d2d15ef227d67cce89c2673764c0555c841cd29c → 0.0.0-next.eba25ec571b091c6bde1104eb6c753debdf15462

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.
Files changed (165) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs → ComponentConfigurationPage-BaJMOQyq.mjs} +4 -4
  2. package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs.map → ComponentConfigurationPage-BaJMOQyq.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js → ComponentConfigurationPage-N-CTtgQa.js} +4 -4
  4. package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js.map → ComponentConfigurationPage-N-CTtgQa.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js → EditConfigurationPage-BHkjAbxH.js} +4 -4
  6. package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js.map → EditConfigurationPage-BHkjAbxH.js.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs → EditConfigurationPage-CKK-5LfX.mjs} +4 -4
  8. package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs.map → EditConfigurationPage-CKK-5LfX.mjs.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-B82x_x1b.mjs → EditViewPage-B11aeMcf.mjs} +38 -8
  10. package/dist/_chunks/EditViewPage-B11aeMcf.mjs.map +1 -0
  11. package/dist/_chunks/{EditViewPage-DlxEHhUt.js → EditViewPage-QPUftxUd.js} +37 -7
  12. package/dist/_chunks/EditViewPage-QPUftxUd.js.map +1 -0
  13. package/dist/_chunks/{Field-DufHXW17.mjs → Field-Bj_RgtGo.mjs} +44 -25
  14. package/dist/_chunks/Field-Bj_RgtGo.mjs.map +1 -0
  15. package/dist/_chunks/{Field-COL25JiC.js → Field-DUK83cfh.js} +43 -24
  16. package/dist/_chunks/Field-DUK83cfh.js.map +1 -0
  17. package/dist/_chunks/{Form-BssUwrTO.js → Form-DHmBRlHd.js} +2 -2
  18. package/dist/_chunks/{Form-BssUwrTO.js.map → Form-DHmBRlHd.js.map} +1 -1
  19. package/dist/_chunks/{Form-u_kAOhwB.mjs → Form-DLMSoXV7.mjs} +2 -2
  20. package/dist/_chunks/{Form-u_kAOhwB.mjs.map → Form-DLMSoXV7.mjs.map} +1 -1
  21. package/dist/_chunks/{History-DRwA3oMM.mjs → History-CfCSNlG9.mjs} +23 -93
  22. package/dist/_chunks/History-CfCSNlG9.mjs.map +1 -0
  23. package/dist/_chunks/{History-C9t9UqpO.js → History-Di3zm4HT.js} +22 -92
  24. package/dist/_chunks/History-Di3zm4HT.js.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-BxfQJzPk.mjs → ListConfigurationPage-0mtv_iqk.mjs} +6 -5
  26. package/dist/_chunks/ListConfigurationPage-0mtv_iqk.mjs.map +1 -0
  27. package/dist/_chunks/{ListConfigurationPage-BXYPohh-.js → ListConfigurationPage-Cq361KIt.js} +5 -4
  28. package/dist/_chunks/ListConfigurationPage-Cq361KIt.js.map +1 -0
  29. package/dist/_chunks/{ListViewPage-CELx2ysp.mjs → ListViewPage-BxLVROX8.mjs} +62 -39
  30. package/dist/_chunks/ListViewPage-BxLVROX8.mjs.map +1 -0
  31. package/dist/_chunks/{ListViewPage-D2VD8Szg.js → ListViewPage-DFDcG8gM.js} +62 -39
  32. package/dist/_chunks/ListViewPage-DFDcG8gM.js.map +1 -0
  33. package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs → NoContentTypePage-BRfDd67_.mjs} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs.map → NoContentTypePage-BRfDd67_.mjs.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js → NoContentTypePage-BSyvnDZZ.js} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js.map → NoContentTypePage-BSyvnDZZ.js.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs → NoPermissionsPage-CV9V8KWa.mjs} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs.map → NoPermissionsPage-CV9V8KWa.mjs.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js → NoPermissionsPage-DyLphsn_.js} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js.map → NoPermissionsPage-DyLphsn_.js.map} +1 -1
  41. package/dist/_chunks/Preview-C_B1nx3g.mjs +272 -0
  42. package/dist/_chunks/Preview-C_B1nx3g.mjs.map +1 -0
  43. package/dist/_chunks/Preview-D_3aO6Ly.js +291 -0
  44. package/dist/_chunks/Preview-D_3aO6Ly.js.map +1 -0
  45. package/dist/_chunks/{Relations-BTcf5xaw.mjs → Relations-C6pwmDXh.mjs} +44 -17
  46. package/dist/_chunks/Relations-C6pwmDXh.mjs.map +1 -0
  47. package/dist/_chunks/{Relations-DR7EUgyC.js → Relations-Cne2AlrL.js} +43 -16
  48. package/dist/_chunks/Relations-Cne2AlrL.js.map +1 -0
  49. package/dist/_chunks/{en-DKV44jRb.mjs → en-DhFUjrNW.mjs} +15 -4
  50. package/dist/_chunks/{en-DKV44jRb.mjs.map → en-DhFUjrNW.mjs.map} +1 -1
  51. package/dist/_chunks/{en-Bm0D0IWz.js → en-Ic0kXjxB.js} +15 -4
  52. package/dist/_chunks/{en-Bm0D0IWz.js.map → en-Ic0kXjxB.js.map} +1 -1
  53. package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
  54. package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
  55. package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
  56. package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
  57. package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
  58. package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
  59. package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
  60. package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
  61. package/dist/_chunks/{index-wnqzm4Q8.mjs → index-BpxR3En4.mjs} +190 -94
  62. package/dist/_chunks/index-BpxR3En4.mjs.map +1 -0
  63. package/dist/_chunks/{index-BdMf2lfT.js → index-T-aWjbj2.js} +187 -90
  64. package/dist/_chunks/index-T-aWjbj2.js.map +1 -0
  65. package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
  66. package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
  67. package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
  68. package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
  69. package/dist/_chunks/{layout-B2MyZU-_.js → layout-BEuNwv-F.js} +3 -3
  70. package/dist/_chunks/{layout-B2MyZU-_.js.map → layout-BEuNwv-F.js.map} +1 -1
  71. package/dist/_chunks/{layout-2CfjL0T9.mjs → layout-DhMZ_lDx.mjs} +3 -3
  72. package/dist/_chunks/{layout-2CfjL0T9.mjs.map → layout-DhMZ_lDx.mjs.map} +1 -1
  73. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  74. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  75. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  76. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  77. package/dist/_chunks/{relations-C0w0GcXi.mjs → relations-BdnxoX6f.mjs} +6 -7
  78. package/dist/_chunks/relations-BdnxoX6f.mjs.map +1 -0
  79. package/dist/_chunks/{relations-BH7JJGGe.js → relations-kLcuobLk.js} +6 -7
  80. package/dist/_chunks/relations-kLcuobLk.js.map +1 -0
  81. package/dist/admin/index.js +1 -1
  82. package/dist/admin/index.mjs +4 -4
  83. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
  84. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +2 -2
  85. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
  86. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
  87. package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
  88. package/dist/admin/src/preview/constants.d.ts +1 -0
  89. package/dist/admin/src/preview/index.d.ts +4 -0
  90. package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
  91. package/dist/admin/src/preview/routes.d.ts +3 -0
  92. package/dist/admin/src/preview/services/preview.d.ts +3 -0
  93. package/dist/admin/src/router.d.ts +1 -1
  94. package/dist/admin/src/services/documents.d.ts +0 -3
  95. package/dist/server/index.js +391 -144
  96. package/dist/server/index.js.map +1 -1
  97. package/dist/server/index.mjs +392 -145
  98. package/dist/server/index.mjs.map +1 -1
  99. package/dist/server/src/bootstrap.d.ts.map +1 -1
  100. package/dist/server/src/controllers/index.d.ts.map +1 -1
  101. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  102. package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
  103. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  104. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  105. package/dist/server/src/history/services/utils.d.ts +2 -3
  106. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  107. package/dist/server/src/index.d.ts +4 -4
  108. package/dist/server/src/preview/constants.d.ts +2 -0
  109. package/dist/server/src/preview/constants.d.ts.map +1 -0
  110. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  111. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  112. package/dist/server/src/preview/controllers/preview.d.ts +13 -0
  113. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  114. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  115. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  116. package/dist/server/src/preview/index.d.ts +4 -0
  117. package/dist/server/src/preview/index.d.ts.map +1 -0
  118. package/dist/server/src/preview/routes/index.d.ts +8 -0
  119. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  120. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  121. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  122. package/dist/server/src/preview/services/index.d.ts +16 -0
  123. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  124. package/dist/server/src/preview/services/preview-config.d.ts +32 -0
  125. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
  126. package/dist/server/src/preview/services/preview.d.ts +12 -0
  127. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  128. package/dist/server/src/preview/utils.d.ts +19 -0
  129. package/dist/server/src/preview/utils.d.ts.map +1 -0
  130. package/dist/server/src/register.d.ts.map +1 -1
  131. package/dist/server/src/routes/index.d.ts.map +1 -1
  132. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  133. package/dist/server/src/services/document-metadata.d.ts +8 -8
  134. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  135. package/dist/server/src/services/index.d.ts +4 -4
  136. package/dist/server/src/services/index.d.ts.map +1 -1
  137. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  138. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  139. package/dist/server/src/utils/index.d.ts +2 -0
  140. package/dist/server/src/utils/index.d.ts.map +1 -1
  141. package/dist/shared/contracts/index.d.ts +1 -0
  142. package/dist/shared/contracts/index.d.ts.map +1 -1
  143. package/dist/shared/contracts/preview.d.ts +27 -0
  144. package/dist/shared/contracts/preview.d.ts.map +1 -0
  145. package/dist/shared/index.js +4 -0
  146. package/dist/shared/index.js.map +1 -1
  147. package/dist/shared/index.mjs +4 -0
  148. package/dist/shared/index.mjs.map +1 -1
  149. package/package.json +10 -10
  150. package/dist/_chunks/EditViewPage-B82x_x1b.mjs.map +0 -1
  151. package/dist/_chunks/EditViewPage-DlxEHhUt.js.map +0 -1
  152. package/dist/_chunks/Field-COL25JiC.js.map +0 -1
  153. package/dist/_chunks/Field-DufHXW17.mjs.map +0 -1
  154. package/dist/_chunks/History-C9t9UqpO.js.map +0 -1
  155. package/dist/_chunks/History-DRwA3oMM.mjs.map +0 -1
  156. package/dist/_chunks/ListConfigurationPage-BXYPohh-.js.map +0 -1
  157. package/dist/_chunks/ListConfigurationPage-BxfQJzPk.mjs.map +0 -1
  158. package/dist/_chunks/ListViewPage-CELx2ysp.mjs.map +0 -1
  159. package/dist/_chunks/ListViewPage-D2VD8Szg.js.map +0 -1
  160. package/dist/_chunks/Relations-BTcf5xaw.mjs.map +0 -1
  161. package/dist/_chunks/Relations-DR7EUgyC.js.map +0 -1
  162. package/dist/_chunks/index-BdMf2lfT.js.map +0 -1
  163. package/dist/_chunks/index-wnqzm4Q8.mjs.map +0 -1
  164. package/dist/_chunks/relations-BH7JJGGe.js.map +0 -1
  165. package/dist/_chunks/relations-C0w0GcXi.mjs.map +0 -1
@@ -3,15 +3,16 @@ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
3
3
  import { useStrapiApp, createContext, useQueryParams, useAuth, useRBAC, Page, adminApi, translatedErrors, useNotification, useAPIErrorHandler, getYupValidationErrors, useForm, useTracking, useGuidedTour, BackButton, DescriptionComponentRenderer, useTable, Table } from "@strapi/admin/strapi-admin";
4
4
  import * as React from "react";
5
5
  import { lazy } from "react";
6
- import { Button, Menu, VisuallyHidden, Flex, Typography, Dialog, Modal, Radio, Status, Box, SingleSelect, SingleSelectOption, IconButton, Loader, Tooltip, LinkButton } from "@strapi/design-system";
6
+ import { Menu, Button, VisuallyHidden, Flex, Dialog, Modal, Typography, Radio, Status, Box, SingleSelect, SingleSelectOption, IconButton, Loader, Tooltip, LinkButton } from "@strapi/design-system";
7
+ import mapValues from "lodash/fp/mapValues";
7
8
  import { useIntl } from "react-intl";
8
9
  import { useParams, useNavigate, Navigate, useMatch, useLocation, Link, NavLink } from "react-router-dom";
10
+ import { styled } from "styled-components";
9
11
  import * as yup from "yup";
10
12
  import { ValidationError } from "yup";
13
+ import { stringify } from "qs";
11
14
  import pipe from "lodash/fp/pipe";
12
15
  import { intervalToDuration, isPast } from "date-fns";
13
- import { styled } from "styled-components";
14
- import { stringify } from "qs";
15
16
  import { createSlice, combineReducers } from "@reduxjs/toolkit";
16
17
  const __variableDynamicImportRuntimeHelper = (glob, path) => {
17
18
  const v = glob[path];
@@ -273,7 +274,7 @@ const documentApi = contentManagerApi.injectEndpoints({
273
274
  url: `/content-manager/collection-types/${model}`,
274
275
  method: "GET",
275
276
  config: {
276
- params
277
+ params: stringify(params, { encode: true })
277
278
  }
278
279
  }),
279
280
  providesTags: (result, _error, arg) => {
@@ -461,9 +462,6 @@ const buildValidParams = (query) => {
461
462
  {}
462
463
  )
463
464
  };
464
- if ("_q" in validQueryParams) {
465
- validQueryParams._q = encodeURIComponent(validQueryParams._q);
466
- }
467
465
  return validQueryParams;
468
466
  };
469
467
  const isBaseQueryError = (error) => {
@@ -968,9 +966,10 @@ const formatEditLayout = (data, {
968
966
  currentPanelIndex += 2;
969
967
  } else {
970
968
  if (!panels[currentPanelIndex]) {
971
- panels.push([]);
969
+ panels.push([row]);
970
+ } else {
971
+ panels[currentPanelIndex].push(row);
972
972
  }
973
- panels[currentPanelIndex].push(row);
974
973
  }
975
974
  return panels;
976
975
  }, []);
@@ -1228,9 +1227,6 @@ const useContentManagerContext = () => {
1228
1227
  };
1229
1228
  };
1230
1229
  const prefixPluginTranslations = (trad, pluginId) => {
1231
- if (!pluginId) {
1232
- throw new TypeError("pluginId can't be empty");
1233
- }
1234
1230
  return Object.keys(trad).reduce((acc, current) => {
1235
1231
  acc[`${pluginId}.${current}`] = trad[current];
1236
1232
  return acc;
@@ -1664,10 +1660,10 @@ const useDocumentActions = () => {
1664
1660
  update
1665
1661
  };
1666
1662
  };
1667
- const ProtectedHistoryPage = lazy(
1668
- () => import("./History-DRwA3oMM.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
1663
+ const ProtectedHistoryPage = React.lazy(
1664
+ () => import("./History-CfCSNlG9.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
1669
1665
  );
1670
- const routes$1 = [
1666
+ const routes$2 = [
1671
1667
  {
1672
1668
  path: ":collectionType/:slug/:id/history",
1673
1669
  Component: ProtectedHistoryPage
@@ -1677,32 +1673,45 @@ const routes$1 = [
1677
1673
  Component: ProtectedHistoryPage
1678
1674
  }
1679
1675
  ];
1676
+ const ProtectedPreviewPage = React.lazy(
1677
+ () => import("./Preview-C_B1nx3g.mjs").then((mod) => ({ default: mod.ProtectedPreviewPage }))
1678
+ );
1679
+ const routes$1 = [
1680
+ {
1681
+ path: ":collectionType/:slug/:id/preview",
1682
+ Component: ProtectedPreviewPage
1683
+ },
1684
+ {
1685
+ path: ":collectionType/:slug/preview",
1686
+ Component: ProtectedPreviewPage
1687
+ }
1688
+ ];
1680
1689
  const ProtectedEditViewPage = lazy(
1681
- () => import("./EditViewPage-B82x_x1b.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
1690
+ () => import("./EditViewPage-B11aeMcf.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
1682
1691
  );
1683
1692
  const ProtectedListViewPage = lazy(
1684
- () => import("./ListViewPage-CELx2ysp.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
1693
+ () => import("./ListViewPage-BxLVROX8.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
1685
1694
  );
1686
1695
  const ProtectedListConfiguration = lazy(
1687
- () => import("./ListConfigurationPage-BxfQJzPk.mjs").then((mod) => ({
1696
+ () => import("./ListConfigurationPage-0mtv_iqk.mjs").then((mod) => ({
1688
1697
  default: mod.ProtectedListConfiguration
1689
1698
  }))
1690
1699
  );
1691
1700
  const ProtectedEditConfigurationPage = lazy(
1692
- () => import("./EditConfigurationPage-DdPNAbl3.mjs").then((mod) => ({
1701
+ () => import("./EditConfigurationPage-CKK-5LfX.mjs").then((mod) => ({
1693
1702
  default: mod.ProtectedEditConfigurationPage
1694
1703
  }))
1695
1704
  );
1696
1705
  const ProtectedComponentConfigurationPage = lazy(
1697
- () => import("./ComponentConfigurationPage-DfFSZQxe.mjs").then((mod) => ({
1706
+ () => import("./ComponentConfigurationPage-BaJMOQyq.mjs").then((mod) => ({
1698
1707
  default: mod.ProtectedComponentConfigurationPage
1699
1708
  }))
1700
1709
  );
1701
1710
  const NoPermissions = lazy(
1702
- () => import("./NoPermissionsPage-DWleVYK7.mjs").then((mod) => ({ default: mod.NoPermissions }))
1711
+ () => import("./NoPermissionsPage-CV9V8KWa.mjs").then((mod) => ({ default: mod.NoPermissions }))
1703
1712
  );
1704
1713
  const NoContentType = lazy(
1705
- () => import("./NoContentTypePage-DtJ9jcfk.mjs").then((mod) => ({ default: mod.NoContentType }))
1714
+ () => import("./NoContentTypePage-BRfDd67_.mjs").then((mod) => ({ default: mod.NoContentType }))
1706
1715
  );
1707
1716
  const CollectionTypePages = () => {
1708
1717
  const { collectionType } = useParams();
@@ -1714,7 +1723,7 @@ const CollectionTypePages = () => {
1714
1723
  const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
1715
1724
  const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
1716
1725
  const LIST_RELATIVE_PATH = ":collectionType/:slug";
1717
- const LIST_PATH = `/content-manager/${LIST_RELATIVE_PATH}`;
1726
+ const LIST_PATH = `/content-manager/collection-types/:slug`;
1718
1727
  const routes = [
1719
1728
  {
1720
1729
  path: LIST_RELATIVE_PATH,
@@ -1748,6 +1757,7 @@ const routes = [
1748
1757
  path: "no-content-types",
1749
1758
  Component: NoContentType
1750
1759
  },
1760
+ ...routes$2,
1751
1761
  ...routes$1
1752
1762
  ];
1753
1763
  const DocumentActions = ({ actions: actions2 }) => {
@@ -1846,6 +1856,11 @@ const DocumentActionButton = (action) => {
1846
1856
  ) : null
1847
1857
  ] });
1848
1858
  };
1859
+ const MenuItem = styled(Menu.Item)`
1860
+ &:hover {
1861
+ background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
1862
+ }
1863
+ `;
1849
1864
  const DocumentActionsMenu = ({
1850
1865
  actions: actions2,
1851
1866
  children,
@@ -1904,48 +1919,32 @@ const DocumentActionsMenu = ({
1904
1919
  /* @__PURE__ */ jsxs(Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
1905
1920
  actions2.map((action) => {
1906
1921
  return /* @__PURE__ */ jsx(
1907
- Menu.Item,
1922
+ MenuItem,
1908
1923
  {
1909
1924
  disabled: action.disabled,
1910
1925
  onSelect: handleClick(action),
1911
1926
  display: "block",
1912
- children: /* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", gap: 4, children: [
1913
- /* @__PURE__ */ jsxs(
1914
- Flex,
1915
- {
1916
- color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1917
- gap: 2,
1918
- tag: "span",
1919
- children: [
1920
- /* @__PURE__ */ jsx(
1921
- Flex,
1922
- {
1923
- tag: "span",
1924
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1925
- children: action.icon
1926
- }
1927
- ),
1928
- action.label
1929
- ]
1930
- }
1931
- ),
1932
- action.id.startsWith("HistoryAction") && /* @__PURE__ */ jsx(
1933
- Flex,
1934
- {
1935
- alignItems: "center",
1936
- background: "alternative100",
1937
- borderStyle: "solid",
1938
- borderColor: "alternative200",
1939
- borderWidth: "1px",
1940
- height: 5,
1941
- paddingLeft: 2,
1942
- paddingRight: 2,
1943
- hasRadius: true,
1944
- color: "alternative600",
1945
- children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
1946
- }
1947
- )
1948
- ] })
1927
+ isVariantDanger: action.variant === "danger",
1928
+ isDisabled: action.disabled,
1929
+ children: /* @__PURE__ */ jsx(Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxs(
1930
+ Flex,
1931
+ {
1932
+ color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1933
+ gap: 2,
1934
+ tag: "span",
1935
+ children: [
1936
+ /* @__PURE__ */ jsx(
1937
+ Flex,
1938
+ {
1939
+ tag: "span",
1940
+ color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1941
+ children: action.icon
1942
+ }
1943
+ ),
1944
+ action.label
1945
+ ]
1946
+ }
1947
+ ) })
1949
1948
  },
1950
1949
  action.id
1951
1950
  );
@@ -2056,6 +2055,18 @@ const DocumentActionModal = ({
2056
2055
  typeof Footer === "function" ? /* @__PURE__ */ jsx(Footer, { onClose: handleClose }) : Footer
2057
2056
  ] }) });
2058
2057
  };
2058
+ const transformData = (data) => {
2059
+ if (Array.isArray(data)) {
2060
+ return data.map(transformData);
2061
+ }
2062
+ if (typeof data === "object" && data !== null) {
2063
+ if ("apiData" in data) {
2064
+ return data.apiData;
2065
+ }
2066
+ return mapValues(transformData)(data);
2067
+ }
2068
+ return data;
2069
+ };
2059
2070
  const PublishAction$1 = ({
2060
2071
  activeTab,
2061
2072
  documentId,
@@ -2070,6 +2081,7 @@ const PublishAction$1 = ({
2070
2081
  const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
2071
2082
  const isListView = useMatch(LIST_PATH) !== null;
2072
2083
  const isCloning = useMatch(CLONE_PATH) !== null;
2084
+ const { id } = useParams();
2073
2085
  const { formatMessage } = useIntl();
2074
2086
  const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
2075
2087
  const { publish } = useDocumentActions();
@@ -2169,13 +2181,15 @@ const PublishAction$1 = ({
2169
2181
  documentId,
2170
2182
  params
2171
2183
  },
2172
- formValues
2184
+ transformData(formValues)
2173
2185
  );
2174
2186
  if ("data" in res && collectionType !== SINGLE_TYPES) {
2175
- navigate({
2176
- pathname: `../${collectionType}/${model}/${res.data.documentId}`,
2177
- search: rawQuery
2178
- });
2187
+ if (id === "create") {
2188
+ navigate({
2189
+ pathname: `../${collectionType}/${model}/${res.data.documentId}`,
2190
+ search: rawQuery
2191
+ });
2192
+ }
2179
2193
  } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2180
2194
  setErrors(formatValidationErrors(res.error));
2181
2195
  }
@@ -2259,7 +2273,7 @@ const UpdateAction = ({
2259
2273
  */
2260
2274
  disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
2261
2275
  label: formatMessage({
2262
- id: "content-manager.containers.Edit.save",
2276
+ id: "global.save",
2263
2277
  defaultMessage: "Save"
2264
2278
  }),
2265
2279
  onClick: async () => {
@@ -2285,7 +2299,7 @@ const UpdateAction = ({
2285
2299
  documentId: cloneMatch.params.origin,
2286
2300
  params
2287
2301
  },
2288
- document
2302
+ transformData(document)
2289
2303
  );
2290
2304
  if ("data" in res) {
2291
2305
  navigate(
@@ -2306,7 +2320,7 @@ const UpdateAction = ({
2306
2320
  documentId,
2307
2321
  params
2308
2322
  },
2309
- document
2323
+ transformData(document)
2310
2324
  );
2311
2325
  if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2312
2326
  setErrors(formatValidationErrors(res.error));
@@ -2319,7 +2333,7 @@ const UpdateAction = ({
2319
2333
  model,
2320
2334
  params
2321
2335
  },
2322
- document
2336
+ transformData(document)
2323
2337
  );
2324
2338
  if ("data" in res && collectionType !== SINGLE_TYPES) {
2325
2339
  navigate(
@@ -2524,7 +2538,7 @@ const RelativeTime = React.forwardRef(
2524
2538
  });
2525
2539
  const unit = intervals.find((intervalUnit) => {
2526
2540
  return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
2527
- });
2541
+ }) ?? "seconds";
2528
2542
  const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
2529
2543
  const customInterval = customIntervals.find(
2530
2544
  (custom) => interval[custom.unit] < custom.threshold
@@ -2558,19 +2572,29 @@ const getDisplayName = ({
2558
2572
  return email ?? "";
2559
2573
  };
2560
2574
  const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2561
- const DocumentStatus = ({ status = "draft", ...restProps }) => {
2575
+ const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
2562
2576
  const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
2563
- return /* @__PURE__ */ jsx(Status, { ...restProps, showBullet: false, size: "S", variant: statusVariant, children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: capitalise(status) }) });
2577
+ const { formatMessage } = useIntl();
2578
+ return /* @__PURE__ */ jsx(Status, { ...restProps, size, variant: statusVariant, children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: formatMessage({
2579
+ id: `content-manager.containers.List.${status}`,
2580
+ defaultMessage: capitalise(status)
2581
+ }) }) });
2564
2582
  };
2565
2583
  const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
2566
2584
  const { formatMessage } = useIntl();
2567
2585
  const isCloning = useMatch(CLONE_PATH) !== null;
2586
+ const params = useParams();
2568
2587
  const title = isCreating ? formatMessage({
2569
2588
  id: "content-manager.containers.edit.title.new",
2570
2589
  defaultMessage: "Create an entry"
2571
2590
  }) : documentTitle;
2572
2591
  return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
2573
- /* @__PURE__ */ jsx(BackButton, {}),
2592
+ /* @__PURE__ */ jsx(
2593
+ BackButton,
2594
+ {
2595
+ fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
2596
+ }
2597
+ ),
2574
2598
  /* @__PURE__ */ jsxs(Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
2575
2599
  /* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
2576
2600
  /* @__PURE__ */ jsx(HeaderToolbar, {})
@@ -3007,7 +3031,7 @@ const Panel = React.forwardRef(({ children, title }, ref) => {
3007
3031
  justifyContent: "stretch",
3008
3032
  alignItems: "flex-start",
3009
3033
  children: [
3010
- /* @__PURE__ */ jsx(Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", children: title }),
3034
+ /* @__PURE__ */ jsx(Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", textColor: "neutral600", children: title }),
3011
3035
  children
3012
3036
  ]
3013
3037
  }
@@ -3257,18 +3281,10 @@ const SelectedEntriesTableContent = ({
3257
3281
  search: row.locale && `?plugins[i18n][locale]=${row.locale}`
3258
3282
  },
3259
3283
  state: { from: pathname },
3260
- label: formatMessage(
3261
- { id: "app.component.HelperPluginTable.edit", defaultMessage: "Edit {target}" },
3262
- {
3263
- target: formatMessage(
3264
- {
3265
- id: "content-manager.components.ListViewHelperPluginTable.row-line",
3266
- defaultMessage: "item line {number}"
3267
- },
3268
- { number: index2 + 1 }
3269
- )
3270
- }
3271
- ),
3284
+ label: formatMessage({
3285
+ id: "content-manager.bulk-publish.edit",
3286
+ defaultMessage: "Edit"
3287
+ }),
3272
3288
  target: "_blank",
3273
3289
  marginLeft: "auto",
3274
3290
  variant: "ghost",
@@ -3912,17 +3928,27 @@ const HistoryAction = ({ model, document }) => {
3912
3928
  const { formatMessage } = useIntl();
3913
3929
  const [{ query }] = useQueryParams();
3914
3930
  const navigate = useNavigate();
3931
+ const { trackUsage } = useTracking();
3932
+ const { pathname } = useLocation();
3915
3933
  const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
3916
3934
  if (!window.strapi.features.isEnabled("cms-content-history")) {
3917
3935
  return null;
3918
3936
  }
3937
+ const handleOnClick = () => {
3938
+ const destination = { pathname: "history", search: pluginsQueryParams };
3939
+ trackUsage("willNavigate", {
3940
+ from: pathname,
3941
+ to: `${pathname}/${destination.pathname}`
3942
+ });
3943
+ navigate(destination);
3944
+ };
3919
3945
  return {
3920
3946
  icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
3921
3947
  label: formatMessage({
3922
3948
  id: "content-manager.history.document-action",
3923
3949
  defaultMessage: "Content History"
3924
3950
  }),
3925
- onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
3951
+ onClick: handleOnClick,
3926
3952
  disabled: (
3927
3953
  /**
3928
3954
  * The user is creating a new document.
@@ -3990,6 +4016,72 @@ const { setInitialData } = actions;
3990
4016
  const reducer = combineReducers({
3991
4017
  app: reducer$1
3992
4018
  });
4019
+ const previewApi = contentManagerApi.injectEndpoints({
4020
+ endpoints: (builder) => ({
4021
+ getPreviewUrl: builder.query({
4022
+ query({ query, params }) {
4023
+ return {
4024
+ url: `/content-manager/preview/url/${params.contentType}`,
4025
+ method: "GET",
4026
+ config: {
4027
+ params: query
4028
+ }
4029
+ };
4030
+ }
4031
+ })
4032
+ })
4033
+ });
4034
+ const { useGetPreviewUrlQuery } = previewApi;
4035
+ const PreviewSidePanel = ({ model, documentId, document }) => {
4036
+ const { formatMessage } = useIntl();
4037
+ const { trackUsage } = useTracking();
4038
+ const { pathname } = useLocation();
4039
+ const [{ query }] = useQueryParams();
4040
+ const { data, error } = useGetPreviewUrlQuery({
4041
+ params: {
4042
+ contentType: model
4043
+ },
4044
+ query: {
4045
+ documentId,
4046
+ locale: document?.locale,
4047
+ status: document?.status
4048
+ }
4049
+ });
4050
+ if (!data?.data?.url || error) {
4051
+ return null;
4052
+ }
4053
+ const trackNavigation = () => {
4054
+ const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
4055
+ trackUsage("willNavigate", { from: pathname, to: destinationPathname });
4056
+ };
4057
+ return {
4058
+ title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
4059
+ content: /* @__PURE__ */ jsx(Flex, { gap: 2, width: "100%", children: /* @__PURE__ */ jsx(
4060
+ Button,
4061
+ {
4062
+ variant: "tertiary",
4063
+ tag: Link,
4064
+ to: { pathname: "preview", search: stringify(query, { encode: false }) },
4065
+ onClick: trackNavigation,
4066
+ flex: "auto",
4067
+ children: formatMessage({
4068
+ id: "content-manager.preview.panel.button",
4069
+ defaultMessage: "Open preview"
4070
+ })
4071
+ }
4072
+ ) })
4073
+ };
4074
+ };
4075
+ const FEATURE_ID = "preview";
4076
+ const previewAdmin = {
4077
+ bootstrap(app) {
4078
+ if (!window.strapi.future.isEnabled(FEATURE_ID)) {
4079
+ return;
4080
+ }
4081
+ const contentManagerPluginApis = app.getPlugin("content-manager").apis;
4082
+ contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
4083
+ }
4084
+ };
3993
4085
  const index = {
3994
4086
  register(app) {
3995
4087
  const cm = new ContentManagerPlugin();
@@ -4009,7 +4101,7 @@ const index = {
4009
4101
  app.router.addRoute({
4010
4102
  path: "content-manager/*",
4011
4103
  lazy: async () => {
4012
- const { Layout } = await import("./layout-2CfjL0T9.mjs");
4104
+ const { Layout } = await import("./layout-DhMZ_lDx.mjs");
4013
4105
  return {
4014
4106
  Component: Layout
4015
4107
  };
@@ -4022,11 +4114,14 @@ const index = {
4022
4114
  if (typeof historyAdmin.bootstrap === "function") {
4023
4115
  historyAdmin.bootstrap(app);
4024
4116
  }
4117
+ if (typeof previewAdmin.bootstrap === "function") {
4118
+ previewAdmin.bootstrap(app);
4119
+ }
4025
4120
  },
4026
4121
  async registerTrads({ locales }) {
4027
4122
  const importedTrads = await Promise.all(
4028
4123
  locales.map((locale) => {
4029
- return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-CCEVvqGG.mjs"), "./translations/ca.json": () => import("./ca-5U32ON2v.mjs"), "./translations/cs.json": () => import("./cs-CM2aBUar.mjs"), "./translations/de.json": () => import("./de-C72KDNOl.mjs"), "./translations/en.json": () => import("./en-DKV44jRb.mjs"), "./translations/es.json": () => import("./es-CeXiYflN.mjs"), "./translations/eu.json": () => import("./eu-CdALomew.mjs"), "./translations/fr.json": () => import("./fr-CD9VFbPM.mjs"), "./translations/gu.json": () => import("./gu-CNpaMDpH.mjs"), "./translations/hi.json": () => import("./hi-Dwvd04m3.mjs"), "./translations/hu.json": () => import("./hu-CeYvaaO0.mjs"), "./translations/id.json": () => import("./id-BtwA9WJT.mjs"), "./translations/it.json": () => import("./it-BrVPqaf1.mjs"), "./translations/ja.json": () => import("./ja-CtsUxOvk.mjs"), "./translations/ko.json": () => import("./ko-HVQRlfUI.mjs"), "./translations/ml.json": () => import("./ml-BihZwQit.mjs"), "./translations/ms.json": () => import("./ms-m_WjyWx7.mjs"), "./translations/nl.json": () => import("./nl-D4R9gHx5.mjs"), "./translations/pl.json": () => import("./pl-sbx9mSt_.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-C71iDxnh.mjs"), "./translations/pt.json": () => import("./pt-BsaFvS8-.mjs"), "./translations/ru.json": () => import("./ru-BE6A4Exp.mjs"), "./translations/sa.json": () => import("./sa-Dag0k-Z8.mjs"), "./translations/sk.json": () => import("./sk-BFg-R8qJ.mjs"), "./translations/sv.json": () => import("./sv-CUnfWGsh.mjs"), "./translations/th.json": () => import("./th-BqbI8lIT.mjs"), "./translations/tr.json": () => import("./tr-CgeK3wJM.mjs"), "./translations/uk.json": () => import("./uk-CR-zDhAY.mjs"), "./translations/vi.json": () => import("./vi-DUXIk_fw.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-BPQcRIyH.mjs"), "./translations/zh.json": () => import("./zh-BWZspA60.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
4124
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-CCEVvqGG.mjs"), "./translations/ca.json": () => import("./ca-5U32ON2v.mjs"), "./translations/cs.json": () => import("./cs-CM2aBUar.mjs"), "./translations/de.json": () => import("./de-C72KDNOl.mjs"), "./translations/en.json": () => import("./en-DhFUjrNW.mjs"), "./translations/es.json": () => import("./es-D34tqjMw.mjs"), "./translations/eu.json": () => import("./eu-CdALomew.mjs"), "./translations/fr.json": () => import("./fr--pg5jUbt.mjs"), "./translations/gu.json": () => import("./gu-CNpaMDpH.mjs"), "./translations/hi.json": () => import("./hi-Dwvd04m3.mjs"), "./translations/hu.json": () => import("./hu-CeYvaaO0.mjs"), "./translations/id.json": () => import("./id-BtwA9WJT.mjs"), "./translations/it.json": () => import("./it-BrVPqaf1.mjs"), "./translations/ja.json": () => import("./ja-BHqhDq4V.mjs"), "./translations/ko.json": () => import("./ko-HVQRlfUI.mjs"), "./translations/ml.json": () => import("./ml-BihZwQit.mjs"), "./translations/ms.json": () => import("./ms-m_WjyWx7.mjs"), "./translations/nl.json": () => import("./nl-D4R9gHx5.mjs"), "./translations/pl.json": () => import("./pl-sbx9mSt_.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-C71iDxnh.mjs"), "./translations/pt.json": () => import("./pt-BsaFvS8-.mjs"), "./translations/ru.json": () => import("./ru-BE6A4Exp.mjs"), "./translations/sa.json": () => import("./sa-Dag0k-Z8.mjs"), "./translations/sk.json": () => import("./sk-BFg-R8qJ.mjs"), "./translations/sv.json": () => import("./sv-CUnfWGsh.mjs"), "./translations/th.json": () => import("./th-BqbI8lIT.mjs"), "./translations/tr.json": () => import("./tr-CgeK3wJM.mjs"), "./translations/uk.json": () => import("./uk-CR-zDhAY.mjs"), "./translations/vi.json": () => import("./vi-DUXIk_fw.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-BPQcRIyH.mjs"), "./translations/zh.json": () => import("./zh-BWZspA60.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
4030
4125
  return {
4031
4126
  data: prefixPluginTranslations(data, PLUGIN_ID),
4032
4127
  locale
@@ -4053,9 +4148,10 @@ export {
4053
4148
  HOOKS as H,
4054
4149
  InjectionZone as I,
4055
4150
  useDocument as J,
4056
- index as K,
4057
- useContentManagerContext as L,
4058
- useDocumentActions as M,
4151
+ useGetPreviewUrlQuery as K,
4152
+ index as L,
4153
+ useContentManagerContext as M,
4154
+ useDocumentActions as N,
4059
4155
  Panels as P,
4060
4156
  RelativeTime as R,
4061
4157
  SINGLE_TYPES as S,
@@ -4087,4 +4183,4 @@ export {
4087
4183
  capitalise as y,
4088
4184
  useUpdateContentTypeConfigurationMutation as z
4089
4185
  };
4090
- //# sourceMappingURL=index-wnqzm4Q8.mjs.map
4186
+ //# sourceMappingURL=index-BpxR3En4.mjs.map