@strapi/content-manager 0.0.0-experimental.f8a68bc03b751aa0a66c4dcfaf83553c9b6adf2b → 0.0.0-experimental.fb22a8bd8745528903b2f168fdd286dfd1f5082e

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-B2g3icXu.mjs → ComponentConfigurationPage-BaJMOQyq.mjs} +4 -4
  2. package/dist/_chunks/{ComponentConfigurationPage-B2g3icXu.mjs.map → ComponentConfigurationPage-BaJMOQyq.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-CzDn8Uxh.js → ComponentConfigurationPage-N-CTtgQa.js} +4 -4
  4. package/dist/_chunks/{ComponentConfigurationPage-CzDn8Uxh.js.map → ComponentConfigurationPage-N-CTtgQa.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-Bcbi6r5y.js → EditConfigurationPage-BHkjAbxH.js} +4 -4
  6. package/dist/_chunks/{EditConfigurationPage-Bcbi6r5y.js.map → EditConfigurationPage-BHkjAbxH.js.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-DSA1zONV.mjs → EditConfigurationPage-CKK-5LfX.mjs} +4 -4
  8. package/dist/_chunks/{EditConfigurationPage-DSA1zONV.mjs.map → EditConfigurationPage-CKK-5LfX.mjs.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-Ca2EmJpb.mjs → EditViewPage-B11aeMcf.mjs} +38 -8
  10. package/dist/_chunks/EditViewPage-B11aeMcf.mjs.map +1 -0
  11. package/dist/_chunks/{EditViewPage-BvcMXaP2.js → EditViewPage-QPUftxUd.js} +37 -7
  12. package/dist/_chunks/EditViewPage-QPUftxUd.js.map +1 -0
  13. package/dist/_chunks/{Field-BEYkgCZ0.mjs → Field-Bj_RgtGo.mjs} +44 -25
  14. package/dist/_chunks/Field-Bj_RgtGo.mjs.map +1 -0
  15. package/dist/_chunks/{Field-CmaWxdpf.js → Field-DUK83cfh.js} +43 -24
  16. package/dist/_chunks/Field-DUK83cfh.js.map +1 -0
  17. package/dist/_chunks/{Form-DAUpPBVM.js → Form-DHmBRlHd.js} +2 -2
  18. package/dist/_chunks/{Form-DAUpPBVM.js.map → Form-DHmBRlHd.js.map} +1 -1
  19. package/dist/_chunks/{Form-BJVbU6w4.mjs → Form-DLMSoXV7.mjs} +2 -2
  20. package/dist/_chunks/{Form-BJVbU6w4.mjs.map → Form-DLMSoXV7.mjs.map} +1 -1
  21. package/dist/_chunks/{History-M6Pk9CoY.mjs → History-CfCSNlG9.mjs} +23 -93
  22. package/dist/_chunks/History-CfCSNlG9.mjs.map +1 -0
  23. package/dist/_chunks/{History-Bw9vfT1k.js → History-Di3zm4HT.js} +22 -92
  24. package/dist/_chunks/History-Di3zm4HT.js.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-D7ior2zq.mjs → ListConfigurationPage-0mtv_iqk.mjs} +6 -5
  26. package/dist/_chunks/ListConfigurationPage-0mtv_iqk.mjs.map +1 -0
  27. package/dist/_chunks/{ListConfigurationPage-DBVqF5fc.js → ListConfigurationPage-Cq361KIt.js} +5 -4
  28. package/dist/_chunks/ListConfigurationPage-Cq361KIt.js.map +1 -0
  29. package/dist/_chunks/{ListViewPage-BH37wONY.mjs → ListViewPage-BxLVROX8.mjs} +62 -39
  30. package/dist/_chunks/ListViewPage-BxLVROX8.mjs.map +1 -0
  31. package/dist/_chunks/{ListViewPage-MZu-8OKX.js → ListViewPage-DFDcG8gM.js} +62 -39
  32. package/dist/_chunks/ListViewPage-DFDcG8gM.js.map +1 -0
  33. package/dist/_chunks/{NoContentTypePage-DRp7Aem_.mjs → NoContentTypePage-BRfDd67_.mjs} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-DRp7Aem_.mjs.map → NoContentTypePage-BRfDd67_.mjs.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-C9lRMTCa.js → NoContentTypePage-BSyvnDZZ.js} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-C9lRMTCa.js.map → NoContentTypePage-BSyvnDZZ.js.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-CzhRt5CA.mjs → NoPermissionsPage-CV9V8KWa.mjs} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-CzhRt5CA.mjs.map → NoPermissionsPage-CV9V8KWa.mjs.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-COs61PpB.js → NoPermissionsPage-DyLphsn_.js} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-COs61PpB.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-68XxIzPI.mjs → Relations-C6pwmDXh.mjs} +27 -12
  46. package/dist/_chunks/Relations-C6pwmDXh.mjs.map +1 -0
  47. package/dist/_chunks/{Relations-CsGlulU_.js → Relations-Cne2AlrL.js} +26 -11
  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-CsfwpRfc.mjs → index-BpxR3En4.mjs} +173 -90
  62. package/dist/_chunks/index-BpxR3En4.mjs.map +1 -0
  63. package/dist/_chunks/{index-oDq3VO9j.js → index-T-aWjbj2.js} +169 -86
  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-Euka-kfv.js → layout-BEuNwv-F.js} +3 -3
  70. package/dist/_chunks/{layout-Euka-kfv.js.map → layout-BEuNwv-F.js.map} +1 -1
  71. package/dist/_chunks/{layout-C5uSVTqi.mjs → layout-DhMZ_lDx.mjs} +3 -3
  72. package/dist/_chunks/{layout-C5uSVTqi.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-BpHVgFuV.mjs → relations-BdnxoX6f.mjs} +6 -7
  78. package/dist/_chunks/relations-BdnxoX6f.mjs.map +1 -0
  79. package/dist/_chunks/{relations-DG7kmxa0.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 +392 -148
  96. package/dist/server/index.js.map +1 -1
  97. package/dist/server/index.mjs +393 -149
  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-BvcMXaP2.js.map +0 -1
  151. package/dist/_chunks/EditViewPage-Ca2EmJpb.mjs.map +0 -1
  152. package/dist/_chunks/Field-BEYkgCZ0.mjs.map +0 -1
  153. package/dist/_chunks/Field-CmaWxdpf.js.map +0 -1
  154. package/dist/_chunks/History-Bw9vfT1k.js.map +0 -1
  155. package/dist/_chunks/History-M6Pk9CoY.mjs.map +0 -1
  156. package/dist/_chunks/ListConfigurationPage-D7ior2zq.mjs.map +0 -1
  157. package/dist/_chunks/ListConfigurationPage-DBVqF5fc.js.map +0 -1
  158. package/dist/_chunks/ListViewPage-BH37wONY.mjs.map +0 -1
  159. package/dist/_chunks/ListViewPage-MZu-8OKX.js.map +0 -1
  160. package/dist/_chunks/Relations-68XxIzPI.mjs.map +0 -1
  161. package/dist/_chunks/Relations-CsGlulU_.js.map +0 -1
  162. package/dist/_chunks/index-CsfwpRfc.mjs.map +0 -1
  163. package/dist/_chunks/index-oDq3VO9j.js.map +0 -1
  164. package/dist/_chunks/relations-BpHVgFuV.mjs.map +0 -1
  165. package/dist/_chunks/relations-DG7kmxa0.js.map +0 -1
@@ -7,11 +7,11 @@ 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 qs = require("qs");
11
13
  const pipe = require("lodash/fp/pipe");
12
14
  const dateFns = require("date-fns");
13
- const styledComponents = require("styled-components");
14
- const qs = require("qs");
15
15
  const toolkit = require("@reduxjs/toolkit");
16
16
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
17
17
  function _interopNamespace(e) {
@@ -296,7 +296,7 @@ const documentApi = contentManagerApi.injectEndpoints({
296
296
  url: `/content-manager/collection-types/${model}`,
297
297
  method: "GET",
298
298
  config: {
299
- params
299
+ params: qs.stringify(params, { encode: true })
300
300
  }
301
301
  }),
302
302
  providesTags: (result, _error, arg) => {
@@ -484,9 +484,6 @@ const buildValidParams = (query) => {
484
484
  {}
485
485
  )
486
486
  };
487
- if ("_q" in validQueryParams) {
488
- validQueryParams._q = encodeURIComponent(validQueryParams._q);
489
- }
490
487
  return validQueryParams;
491
488
  };
492
489
  const isBaseQueryError = (error) => {
@@ -991,9 +988,10 @@ const formatEditLayout = (data, {
991
988
  currentPanelIndex += 2;
992
989
  } else {
993
990
  if (!panels[currentPanelIndex]) {
994
- panels.push([]);
991
+ panels.push([row]);
992
+ } else {
993
+ panels[currentPanelIndex].push(row);
995
994
  }
996
- panels[currentPanelIndex].push(row);
997
995
  }
998
996
  return panels;
999
997
  }, []);
@@ -1251,9 +1249,6 @@ const useContentManagerContext = () => {
1251
1249
  };
1252
1250
  };
1253
1251
  const prefixPluginTranslations = (trad, pluginId) => {
1254
- if (!pluginId) {
1255
- throw new TypeError("pluginId can't be empty");
1256
- }
1257
1252
  return Object.keys(trad).reduce((acc, current) => {
1258
1253
  acc[`${pluginId}.${current}`] = trad[current];
1259
1254
  return acc;
@@ -1687,10 +1682,10 @@ const useDocumentActions = () => {
1687
1682
  update
1688
1683
  };
1689
1684
  };
1690
- const ProtectedHistoryPage = React.lazy(
1691
- () => Promise.resolve().then(() => require("./History-Bw9vfT1k.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1685
+ const ProtectedHistoryPage = React__namespace.lazy(
1686
+ () => Promise.resolve().then(() => require("./History-Di3zm4HT.js")).then((mod) => ({ default: mod.ProtectedHistoryPage }))
1692
1687
  );
1693
- const routes$1 = [
1688
+ const routes$2 = [
1694
1689
  {
1695
1690
  path: ":collectionType/:slug/:id/history",
1696
1691
  Component: ProtectedHistoryPage
@@ -1700,32 +1695,45 @@ const routes$1 = [
1700
1695
  Component: ProtectedHistoryPage
1701
1696
  }
1702
1697
  ];
1698
+ const ProtectedPreviewPage = React__namespace.lazy(
1699
+ () => Promise.resolve().then(() => require("./Preview-D_3aO6Ly.js")).then((mod) => ({ default: mod.ProtectedPreviewPage }))
1700
+ );
1701
+ const routes$1 = [
1702
+ {
1703
+ path: ":collectionType/:slug/:id/preview",
1704
+ Component: ProtectedPreviewPage
1705
+ },
1706
+ {
1707
+ path: ":collectionType/:slug/preview",
1708
+ Component: ProtectedPreviewPage
1709
+ }
1710
+ ];
1703
1711
  const ProtectedEditViewPage = React.lazy(
1704
- () => Promise.resolve().then(() => require("./EditViewPage-BvcMXaP2.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1712
+ () => Promise.resolve().then(() => require("./EditViewPage-QPUftxUd.js")).then((mod) => ({ default: mod.ProtectedEditViewPage }))
1705
1713
  );
1706
1714
  const ProtectedListViewPage = React.lazy(
1707
- () => Promise.resolve().then(() => require("./ListViewPage-MZu-8OKX.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1715
+ () => Promise.resolve().then(() => require("./ListViewPage-DFDcG8gM.js")).then((mod) => ({ default: mod.ProtectedListViewPage }))
1708
1716
  );
1709
1717
  const ProtectedListConfiguration = React.lazy(
1710
- () => Promise.resolve().then(() => require("./ListConfigurationPage-DBVqF5fc.js")).then((mod) => ({
1718
+ () => Promise.resolve().then(() => require("./ListConfigurationPage-Cq361KIt.js")).then((mod) => ({
1711
1719
  default: mod.ProtectedListConfiguration
1712
1720
  }))
1713
1721
  );
1714
1722
  const ProtectedEditConfigurationPage = React.lazy(
1715
- () => Promise.resolve().then(() => require("./EditConfigurationPage-Bcbi6r5y.js")).then((mod) => ({
1723
+ () => Promise.resolve().then(() => require("./EditConfigurationPage-BHkjAbxH.js")).then((mod) => ({
1716
1724
  default: mod.ProtectedEditConfigurationPage
1717
1725
  }))
1718
1726
  );
1719
1727
  const ProtectedComponentConfigurationPage = React.lazy(
1720
- () => Promise.resolve().then(() => require("./ComponentConfigurationPage-CzDn8Uxh.js")).then((mod) => ({
1728
+ () => Promise.resolve().then(() => require("./ComponentConfigurationPage-N-CTtgQa.js")).then((mod) => ({
1721
1729
  default: mod.ProtectedComponentConfigurationPage
1722
1730
  }))
1723
1731
  );
1724
1732
  const NoPermissions = React.lazy(
1725
- () => Promise.resolve().then(() => require("./NoPermissionsPage-COs61PpB.js")).then((mod) => ({ default: mod.NoPermissions }))
1733
+ () => Promise.resolve().then(() => require("./NoPermissionsPage-DyLphsn_.js")).then((mod) => ({ default: mod.NoPermissions }))
1726
1734
  );
1727
1735
  const NoContentType = React.lazy(
1728
- () => Promise.resolve().then(() => require("./NoContentTypePage-C9lRMTCa.js")).then((mod) => ({ default: mod.NoContentType }))
1736
+ () => Promise.resolve().then(() => require("./NoContentTypePage-BSyvnDZZ.js")).then((mod) => ({ default: mod.NoContentType }))
1729
1737
  );
1730
1738
  const CollectionTypePages = () => {
1731
1739
  const { collectionType } = reactRouterDom.useParams();
@@ -1737,7 +1745,7 @@ const CollectionTypePages = () => {
1737
1745
  const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
1738
1746
  const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
1739
1747
  const LIST_RELATIVE_PATH = ":collectionType/:slug";
1740
- const LIST_PATH = `/content-manager/${LIST_RELATIVE_PATH}`;
1748
+ const LIST_PATH = `/content-manager/collection-types/:slug`;
1741
1749
  const routes = [
1742
1750
  {
1743
1751
  path: LIST_RELATIVE_PATH,
@@ -1771,6 +1779,7 @@ const routes = [
1771
1779
  path: "no-content-types",
1772
1780
  Component: NoContentType
1773
1781
  },
1782
+ ...routes$2,
1774
1783
  ...routes$1
1775
1784
  ];
1776
1785
  const DocumentActions = ({ actions: actions2 }) => {
@@ -1869,6 +1878,11 @@ const DocumentActionButton = (action) => {
1869
1878
  ) : null
1870
1879
  ] });
1871
1880
  };
1881
+ const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
1882
+ &:hover {
1883
+ background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
1884
+ }
1885
+ `;
1872
1886
  const DocumentActionsMenu = ({
1873
1887
  actions: actions2,
1874
1888
  children,
@@ -1927,48 +1941,32 @@ const DocumentActionsMenu = ({
1927
1941
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
1928
1942
  actions2.map((action) => {
1929
1943
  return /* @__PURE__ */ jsxRuntime.jsx(
1930
- designSystem.Menu.Item,
1944
+ MenuItem,
1931
1945
  {
1932
1946
  disabled: action.disabled,
1933
1947
  onSelect: handleClick(action),
1934
1948
  display: "block",
1935
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", gap: 4, children: [
1936
- /* @__PURE__ */ jsxRuntime.jsxs(
1937
- designSystem.Flex,
1938
- {
1939
- color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1940
- gap: 2,
1941
- tag: "span",
1942
- children: [
1943
- /* @__PURE__ */ jsxRuntime.jsx(
1944
- designSystem.Flex,
1945
- {
1946
- tag: "span",
1947
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1948
- children: action.icon
1949
- }
1950
- ),
1951
- action.label
1952
- ]
1953
- }
1954
- ),
1955
- action.id.startsWith("HistoryAction") && /* @__PURE__ */ jsxRuntime.jsx(
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
- ] })
1949
+ isVariantDanger: action.variant === "danger",
1950
+ isDisabled: action.disabled,
1951
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxRuntime.jsxs(
1952
+ designSystem.Flex,
1953
+ {
1954
+ color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1955
+ gap: 2,
1956
+ tag: "span",
1957
+ children: [
1958
+ /* @__PURE__ */ jsxRuntime.jsx(
1959
+ designSystem.Flex,
1960
+ {
1961
+ tag: "span",
1962
+ color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1963
+ children: action.icon
1964
+ }
1965
+ ),
1966
+ action.label
1967
+ ]
1968
+ }
1969
+ ) })
1972
1970
  },
1973
1971
  action.id
1974
1972
  );
@@ -2105,6 +2103,7 @@ const PublishAction$1 = ({
2105
2103
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
2106
2104
  const isListView = reactRouterDom.useMatch(LIST_PATH) !== null;
2107
2105
  const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
2106
+ const { id } = reactRouterDom.useParams();
2108
2107
  const { formatMessage } = reactIntl.useIntl();
2109
2108
  const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
2110
2109
  const { publish } = useDocumentActions();
@@ -2207,10 +2206,12 @@ const PublishAction$1 = ({
2207
2206
  transformData(formValues)
2208
2207
  );
2209
2208
  if ("data" in res && collectionType !== SINGLE_TYPES) {
2210
- navigate({
2211
- pathname: `../${collectionType}/${model}/${res.data.documentId}`,
2212
- search: rawQuery
2213
- });
2209
+ if (id === "create") {
2210
+ navigate({
2211
+ pathname: `../${collectionType}/${model}/${res.data.documentId}`,
2212
+ search: rawQuery
2213
+ });
2214
+ }
2214
2215
  } else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
2215
2216
  setErrors(formatValidationErrors(res.error));
2216
2217
  }
@@ -2294,7 +2295,7 @@ const UpdateAction = ({
2294
2295
  */
2295
2296
  disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
2296
2297
  label: formatMessage({
2297
- id: "content-manager.containers.Edit.save",
2298
+ id: "global.save",
2298
2299
  defaultMessage: "Save"
2299
2300
  }),
2300
2301
  onClick: async () => {
@@ -2559,7 +2560,7 @@ const RelativeTime = React__namespace.forwardRef(
2559
2560
  });
2560
2561
  const unit = intervals.find((intervalUnit) => {
2561
2562
  return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
2562
- });
2563
+ }) ?? "seconds";
2563
2564
  const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
2564
2565
  const customInterval = customIntervals.find(
2565
2566
  (custom) => interval[custom.unit] < custom.threshold
@@ -2593,19 +2594,29 @@ const getDisplayName = ({
2593
2594
  return email ?? "";
2594
2595
  };
2595
2596
  const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2596
- const DocumentStatus = ({ status = "draft", ...restProps }) => {
2597
+ const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
2597
2598
  const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
2598
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Status, { ...restProps, showBullet: false, size: "S", variant: statusVariant, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: capitalise(status) }) });
2599
+ const { formatMessage } = reactIntl.useIntl();
2600
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Status, { ...restProps, size, variant: statusVariant, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: formatMessage({
2601
+ id: `content-manager.containers.List.${status}`,
2602
+ defaultMessage: capitalise(status)
2603
+ }) }) });
2599
2604
  };
2600
2605
  const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
2601
2606
  const { formatMessage } = reactIntl.useIntl();
2602
2607
  const isCloning = reactRouterDom.useMatch(CLONE_PATH) !== null;
2608
+ const params = reactRouterDom.useParams();
2603
2609
  const title = isCreating ? formatMessage({
2604
2610
  id: "content-manager.containers.edit.title.new",
2605
2611
  defaultMessage: "Create an entry"
2606
2612
  }) : documentTitle;
2607
2613
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
2608
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
2614
+ /* @__PURE__ */ jsxRuntime.jsx(
2615
+ strapiAdmin.BackButton,
2616
+ {
2617
+ fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
2618
+ }
2619
+ ),
2609
2620
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
2610
2621
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", tag: "h1", children: title }),
2611
2622
  /* @__PURE__ */ jsxRuntime.jsx(HeaderToolbar, {})
@@ -3042,7 +3053,7 @@ const Panel = React__namespace.forwardRef(({ children, title }, ref) => {
3042
3053
  justifyContent: "stretch",
3043
3054
  alignItems: "flex-start",
3044
3055
  children: [
3045
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", children: title }),
3056
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "sigma", textTransform: "uppercase", textColor: "neutral600", children: title }),
3046
3057
  children
3047
3058
  ]
3048
3059
  }
@@ -3292,18 +3303,10 @@ const SelectedEntriesTableContent = ({
3292
3303
  search: row.locale && `?plugins[i18n][locale]=${row.locale}`
3293
3304
  },
3294
3305
  state: { from: pathname },
3295
- label: formatMessage(
3296
- { id: "app.component.HelperPluginTable.edit", defaultMessage: "Edit {target}" },
3297
- {
3298
- target: formatMessage(
3299
- {
3300
- id: "content-manager.components.ListViewHelperPluginTable.row-line",
3301
- defaultMessage: "item line {number}"
3302
- },
3303
- { number: index2 + 1 }
3304
- )
3305
- }
3306
- ),
3306
+ label: formatMessage({
3307
+ id: "content-manager.bulk-publish.edit",
3308
+ defaultMessage: "Edit"
3309
+ }),
3307
3310
  target: "_blank",
3308
3311
  marginLeft: "auto",
3309
3312
  variant: "ghost",
@@ -3947,17 +3950,27 @@ const HistoryAction = ({ model, document }) => {
3947
3950
  const { formatMessage } = reactIntl.useIntl();
3948
3951
  const [{ query }] = strapiAdmin.useQueryParams();
3949
3952
  const navigate = reactRouterDom.useNavigate();
3953
+ const { trackUsage } = strapiAdmin.useTracking();
3954
+ const { pathname } = reactRouterDom.useLocation();
3950
3955
  const pluginsQueryParams = qs.stringify({ plugins: query.plugins }, { encode: false });
3951
3956
  if (!window.strapi.features.isEnabled("cms-content-history")) {
3952
3957
  return null;
3953
3958
  }
3959
+ const handleOnClick = () => {
3960
+ const destination = { pathname: "history", search: pluginsQueryParams };
3961
+ trackUsage("willNavigate", {
3962
+ from: pathname,
3963
+ to: `${pathname}/${destination.pathname}`
3964
+ });
3965
+ navigate(destination);
3966
+ };
3954
3967
  return {
3955
3968
  icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ClockCounterClockwise, {}),
3956
3969
  label: formatMessage({
3957
3970
  id: "content-manager.history.document-action",
3958
3971
  defaultMessage: "Content History"
3959
3972
  }),
3960
- onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
3973
+ onClick: handleOnClick,
3961
3974
  disabled: (
3962
3975
  /**
3963
3976
  * The user is creating a new document.
@@ -4025,6 +4038,72 @@ const { setInitialData } = actions;
4025
4038
  const reducer = toolkit.combineReducers({
4026
4039
  app: reducer$1
4027
4040
  });
4041
+ const previewApi = contentManagerApi.injectEndpoints({
4042
+ endpoints: (builder) => ({
4043
+ getPreviewUrl: builder.query({
4044
+ query({ query, params }) {
4045
+ return {
4046
+ url: `/content-manager/preview/url/${params.contentType}`,
4047
+ method: "GET",
4048
+ config: {
4049
+ params: query
4050
+ }
4051
+ };
4052
+ }
4053
+ })
4054
+ })
4055
+ });
4056
+ const { useGetPreviewUrlQuery } = previewApi;
4057
+ const PreviewSidePanel = ({ model, documentId, document }) => {
4058
+ const { formatMessage } = reactIntl.useIntl();
4059
+ const { trackUsage } = strapiAdmin.useTracking();
4060
+ const { pathname } = reactRouterDom.useLocation();
4061
+ const [{ query }] = strapiAdmin.useQueryParams();
4062
+ const { data, error } = useGetPreviewUrlQuery({
4063
+ params: {
4064
+ contentType: model
4065
+ },
4066
+ query: {
4067
+ documentId,
4068
+ locale: document?.locale,
4069
+ status: document?.status
4070
+ }
4071
+ });
4072
+ if (!data?.data?.url || error) {
4073
+ return null;
4074
+ }
4075
+ const trackNavigation = () => {
4076
+ const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
4077
+ trackUsage("willNavigate", { from: pathname, to: destinationPathname });
4078
+ };
4079
+ return {
4080
+ title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
4081
+ content: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { gap: 2, width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
4082
+ designSystem.Button,
4083
+ {
4084
+ variant: "tertiary",
4085
+ tag: reactRouterDom.Link,
4086
+ to: { pathname: "preview", search: qs.stringify(query, { encode: false }) },
4087
+ onClick: trackNavigation,
4088
+ flex: "auto",
4089
+ children: formatMessage({
4090
+ id: "content-manager.preview.panel.button",
4091
+ defaultMessage: "Open preview"
4092
+ })
4093
+ }
4094
+ ) })
4095
+ };
4096
+ };
4097
+ const FEATURE_ID = "preview";
4098
+ const previewAdmin = {
4099
+ bootstrap(app) {
4100
+ if (!window.strapi.future.isEnabled(FEATURE_ID)) {
4101
+ return;
4102
+ }
4103
+ const contentManagerPluginApis = app.getPlugin("content-manager").apis;
4104
+ contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
4105
+ }
4106
+ };
4028
4107
  const index = {
4029
4108
  register(app) {
4030
4109
  const cm = new ContentManagerPlugin();
@@ -4044,7 +4123,7 @@ const index = {
4044
4123
  app.router.addRoute({
4045
4124
  path: "content-manager/*",
4046
4125
  lazy: async () => {
4047
- const { Layout } = await Promise.resolve().then(() => require("./layout-Euka-kfv.js"));
4126
+ const { Layout } = await Promise.resolve().then(() => require("./layout-BEuNwv-F.js"));
4048
4127
  return {
4049
4128
  Component: Layout
4050
4129
  };
@@ -4057,11 +4136,14 @@ const index = {
4057
4136
  if (typeof historyAdmin.bootstrap === "function") {
4058
4137
  historyAdmin.bootstrap(app);
4059
4138
  }
4139
+ if (typeof previewAdmin.bootstrap === "function") {
4140
+ previewAdmin.bootstrap(app);
4141
+ }
4060
4142
  },
4061
4143
  async registerTrads({ locales }) {
4062
4144
  const importedTrads = await Promise.all(
4063
4145
  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-Bm0D0IWz.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-EUonQTon.js")), "./translations/eu.json": () => Promise.resolve().then(() => require("./eu-VDH-3ovk.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-B7kGGg3E.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-CcFe8diO.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`).then(({ default: data }) => {
4146
+ 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-Ic0kXjxB.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-B2Kyv8Z9.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`).then(({ default: data }) => {
4065
4147
  return {
4066
4148
  data: prefixPluginTranslations(data, PLUGIN_ID),
4067
4149
  locale
@@ -4119,5 +4201,6 @@ exports.useGetAllContentTypeSettingsQuery = useGetAllContentTypeSettingsQuery;
4119
4201
  exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
4120
4202
  exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
4121
4203
  exports.useGetInitialDataQuery = useGetInitialDataQuery;
4204
+ exports.useGetPreviewUrlQuery = useGetPreviewUrlQuery;
4122
4205
  exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
4123
- //# sourceMappingURL=index-oDq3VO9j.js.map
4206
+ //# sourceMappingURL=index-T-aWjbj2.js.map