@strapi/content-manager 0.0.0-next.504076d2165a82f124620a3f1f3e3a6017e97f3f → 0.0.0-next.51dcef446efe662f00da6d85d6bea2218c4c538e

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 (162) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js → ComponentConfigurationPage-BaGEn2nd.js} +4 -4
  2. package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js.map → ComponentConfigurationPage-BaGEn2nd.js.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs → ComponentConfigurationPage-EIYRzIr6.mjs} +4 -4
  4. package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs.map → ComponentConfigurationPage-EIYRzIr6.mjs.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js → EditConfigurationPage-BQGdJb6Z.js} +4 -4
  6. package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js.map → EditConfigurationPage-BQGdJb6Z.js.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs → EditConfigurationPage-ByaNUj_q.mjs} +4 -4
  8. package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs.map → EditConfigurationPage-ByaNUj_q.mjs.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-B82x_x1b.mjs → EditViewPage-BgeC8L9X.mjs} +38 -8
  10. package/dist/_chunks/EditViewPage-BgeC8L9X.mjs.map +1 -0
  11. package/dist/_chunks/{EditViewPage-DlxEHhUt.js → EditViewPage-s_qVLiC6.js} +37 -7
  12. package/dist/_chunks/EditViewPage-s_qVLiC6.js.map +1 -0
  13. package/dist/_chunks/{Field-COL25JiC.js → Field-0AdG2t0D.js} +28 -8
  14. package/dist/_chunks/Field-0AdG2t0D.js.map +1 -0
  15. package/dist/_chunks/{Field-DufHXW17.mjs → Field-DbpDop_h.mjs} +28 -8
  16. package/dist/_chunks/Field-DbpDop_h.mjs.map +1 -0
  17. package/dist/_chunks/{Form-BssUwrTO.js → Form-BpC9hWi-.js} +2 -2
  18. package/dist/_chunks/{Form-BssUwrTO.js.map → Form-BpC9hWi-.js.map} +1 -1
  19. package/dist/_chunks/{Form-u_kAOhwB.mjs → Form-Xb-u04dn.mjs} +2 -2
  20. package/dist/_chunks/{Form-u_kAOhwB.mjs.map → Form-Xb-u04dn.mjs.map} +1 -1
  21. package/dist/_chunks/{History-DRwA3oMM.mjs → History-DLl10NEN.mjs} +22 -92
  22. package/dist/_chunks/History-DLl10NEN.mjs.map +1 -0
  23. package/dist/_chunks/{History-C9t9UqpO.js → History-sJ61vusJ.js} +21 -91
  24. package/dist/_chunks/History-sJ61vusJ.js.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-BXYPohh-.js → ListConfigurationPage-C00guBjQ.js} +5 -4
  26. package/dist/_chunks/ListConfigurationPage-C00guBjQ.js.map +1 -0
  27. package/dist/_chunks/{ListConfigurationPage-BxfQJzPk.mjs → ListConfigurationPage-mbZQmEZ3.mjs} +6 -5
  28. package/dist/_chunks/ListConfigurationPage-mbZQmEZ3.mjs.map +1 -0
  29. package/dist/_chunks/{ListViewPage-D2VD8Szg.js → ListViewPage-DDVpN1ql.js} +28 -6
  30. package/dist/_chunks/ListViewPage-DDVpN1ql.js.map +1 -0
  31. package/dist/_chunks/{ListViewPage-CELx2ysp.mjs → ListViewPage-iRJ5AUjS.mjs} +28 -6
  32. package/dist/_chunks/{ListViewPage-CELx2ysp.mjs.map → ListViewPage-iRJ5AUjS.mjs.map} +1 -1
  33. package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js → NoContentTypePage-BvkII4H4.js} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js.map → NoContentTypePage-BvkII4H4.js.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs → NoContentTypePage-DI8VWkVK.mjs} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs.map → NoContentTypePage-DI8VWkVK.mjs.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js → NoPermissionsPage-BZjHQTpb.js} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js.map → NoPermissionsPage-BZjHQTpb.js.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs → NoPermissionsPage-DckHN3oZ.mjs} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs.map → NoPermissionsPage-DckHN3oZ.mjs.map} +1 -1
  41. package/dist/_chunks/Preview-BDOUHeaW.mjs +267 -0
  42. package/dist/_chunks/Preview-BDOUHeaW.mjs.map +1 -0
  43. package/dist/_chunks/Preview-CS2aV-BU.js +286 -0
  44. package/dist/_chunks/Preview-CS2aV-BU.js.map +1 -0
  45. package/dist/_chunks/{Relations-DR7EUgyC.js → Relations-DEIQO39t.js} +43 -16
  46. package/dist/_chunks/Relations-DEIQO39t.js.map +1 -0
  47. package/dist/_chunks/{Relations-BTcf5xaw.mjs → Relations-J-8HC3zX.mjs} +44 -17
  48. package/dist/_chunks/Relations-J-8HC3zX.mjs.map +1 -0
  49. package/dist/_chunks/{en-DKV44jRb.mjs → en-CfIXaZf9.mjs} +14 -3
  50. package/dist/_chunks/{en-DKV44jRb.mjs.map → en-CfIXaZf9.mjs.map} +1 -1
  51. package/dist/_chunks/{en-Bm0D0IWz.js → en-DTWPCdTS.js} +14 -3
  52. package/dist/_chunks/{en-Bm0D0IWz.js.map → en-DTWPCdTS.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-DzTs9ga-.mjs} +180 -84
  62. package/dist/_chunks/index-DzTs9ga-.mjs.map +1 -0
  63. package/dist/_chunks/{index-BdMf2lfT.js → index-uXHSvmlw.js} +177 -80
  64. package/dist/_chunks/index-uXHSvmlw.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-2CfjL0T9.mjs → layout-BhIZkPuB.mjs} +3 -3
  70. package/dist/_chunks/{layout-2CfjL0T9.mjs.map → layout-BhIZkPuB.mjs.map} +1 -1
  71. package/dist/_chunks/{layout-B2MyZU-_.js → layout-zA_F2rU4.js} +3 -3
  72. package/dist/_chunks/{layout-B2MyZU-_.js.map → layout-zA_F2rU4.js.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-BoCufH_z.mjs} +6 -7
  78. package/dist/_chunks/relations-BoCufH_z.mjs.map +1 -0
  79. package/dist/_chunks/{relations-BH7JJGGe.js → relations-DnUyZQaL.js} +6 -7
  80. package/dist/_chunks/relations-DnUyZQaL.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/server/index.js +344 -144
  95. package/dist/server/index.js.map +1 -1
  96. package/dist/server/index.mjs +344 -144
  97. package/dist/server/index.mjs.map +1 -1
  98. package/dist/server/src/bootstrap.d.ts.map +1 -1
  99. package/dist/server/src/controllers/index.d.ts.map +1 -1
  100. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  101. package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
  102. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  103. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  104. package/dist/server/src/history/services/utils.d.ts +2 -3
  105. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  106. package/dist/server/src/index.d.ts +4 -4
  107. package/dist/server/src/preview/constants.d.ts +2 -0
  108. package/dist/server/src/preview/constants.d.ts.map +1 -0
  109. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  110. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  111. package/dist/server/src/preview/controllers/preview.d.ts +13 -0
  112. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  113. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  114. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  115. package/dist/server/src/preview/index.d.ts +4 -0
  116. package/dist/server/src/preview/index.d.ts.map +1 -0
  117. package/dist/server/src/preview/routes/index.d.ts +8 -0
  118. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  119. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  120. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  121. package/dist/server/src/preview/services/index.d.ts +15 -0
  122. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  123. package/dist/server/src/preview/services/preview-config.d.ts +30 -0
  124. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
  125. package/dist/server/src/preview/services/preview.d.ts +12 -0
  126. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  127. package/dist/server/src/preview/utils.d.ts +18 -0
  128. package/dist/server/src/preview/utils.d.ts.map +1 -0
  129. package/dist/server/src/routes/index.d.ts.map +1 -1
  130. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  131. package/dist/server/src/services/document-metadata.d.ts +8 -8
  132. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  133. package/dist/server/src/services/index.d.ts +4 -4
  134. package/dist/server/src/services/index.d.ts.map +1 -1
  135. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  136. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  137. package/dist/server/src/utils/index.d.ts +2 -0
  138. package/dist/server/src/utils/index.d.ts.map +1 -1
  139. package/dist/shared/contracts/index.d.ts +1 -0
  140. package/dist/shared/contracts/index.d.ts.map +1 -1
  141. package/dist/shared/contracts/preview.d.ts +27 -0
  142. package/dist/shared/contracts/preview.d.ts.map +1 -0
  143. package/dist/shared/index.js +4 -0
  144. package/dist/shared/index.js.map +1 -1
  145. package/dist/shared/index.mjs +4 -0
  146. package/dist/shared/index.mjs.map +1 -1
  147. package/package.json +10 -10
  148. package/dist/_chunks/EditViewPage-B82x_x1b.mjs.map +0 -1
  149. package/dist/_chunks/EditViewPage-DlxEHhUt.js.map +0 -1
  150. package/dist/_chunks/Field-COL25JiC.js.map +0 -1
  151. package/dist/_chunks/Field-DufHXW17.mjs.map +0 -1
  152. package/dist/_chunks/History-C9t9UqpO.js.map +0 -1
  153. package/dist/_chunks/History-DRwA3oMM.mjs.map +0 -1
  154. package/dist/_chunks/ListConfigurationPage-BXYPohh-.js.map +0 -1
  155. package/dist/_chunks/ListConfigurationPage-BxfQJzPk.mjs.map +0 -1
  156. package/dist/_chunks/ListViewPage-D2VD8Szg.js.map +0 -1
  157. package/dist/_chunks/Relations-BTcf5xaw.mjs.map +0 -1
  158. package/dist/_chunks/Relations-DR7EUgyC.js.map +0 -1
  159. package/dist/_chunks/index-BdMf2lfT.js.map +0 -1
  160. package/dist/_chunks/index-wnqzm4Q8.mjs.map +0 -1
  161. package/dist/_chunks/relations-BH7JJGGe.js.map +0 -1
  162. package/dist/_chunks/relations-C0w0GcXi.mjs.map +0 -1
@@ -3,14 +3,15 @@ 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";
11
13
  import pipe from "lodash/fp/pipe";
12
14
  import { intervalToDuration, isPast } from "date-fns";
13
- import { styled } from "styled-components";
14
15
  import { stringify } from "qs";
15
16
  import { createSlice, combineReducers } from "@reduxjs/toolkit";
16
17
  const __variableDynamicImportRuntimeHelper = (glob, path) => {
@@ -968,9 +969,10 @@ const formatEditLayout = (data, {
968
969
  currentPanelIndex += 2;
969
970
  } else {
970
971
  if (!panels[currentPanelIndex]) {
971
- panels.push([]);
972
+ panels.push([row]);
973
+ } else {
974
+ panels[currentPanelIndex].push(row);
972
975
  }
973
- panels[currentPanelIndex].push(row);
974
976
  }
975
977
  return panels;
976
978
  }, []);
@@ -1228,9 +1230,6 @@ const useContentManagerContext = () => {
1228
1230
  };
1229
1231
  };
1230
1232
  const prefixPluginTranslations = (trad, pluginId) => {
1231
- if (!pluginId) {
1232
- throw new TypeError("pluginId can't be empty");
1233
- }
1234
1233
  return Object.keys(trad).reduce((acc, current) => {
1235
1234
  acc[`${pluginId}.${current}`] = trad[current];
1236
1235
  return acc;
@@ -1664,10 +1663,10 @@ const useDocumentActions = () => {
1664
1663
  update
1665
1664
  };
1666
1665
  };
1667
- const ProtectedHistoryPage = lazy(
1668
- () => import("./History-DRwA3oMM.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
1666
+ const ProtectedHistoryPage = React.lazy(
1667
+ () => import("./History-DLl10NEN.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
1669
1668
  );
1670
- const routes$1 = [
1669
+ const routes$2 = [
1671
1670
  {
1672
1671
  path: ":collectionType/:slug/:id/history",
1673
1672
  Component: ProtectedHistoryPage
@@ -1677,32 +1676,45 @@ const routes$1 = [
1677
1676
  Component: ProtectedHistoryPage
1678
1677
  }
1679
1678
  ];
1679
+ const ProtectedPreviewPage = React.lazy(
1680
+ () => import("./Preview-BDOUHeaW.mjs").then((mod) => ({ default: mod.ProtectedPreviewPage }))
1681
+ );
1682
+ const routes$1 = [
1683
+ {
1684
+ path: ":collectionType/:slug/:id/preview",
1685
+ Component: ProtectedPreviewPage
1686
+ },
1687
+ {
1688
+ path: ":collectionType/:slug/preview",
1689
+ Component: ProtectedPreviewPage
1690
+ }
1691
+ ];
1680
1692
  const ProtectedEditViewPage = lazy(
1681
- () => import("./EditViewPage-B82x_x1b.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
1693
+ () => import("./EditViewPage-BgeC8L9X.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
1682
1694
  );
1683
1695
  const ProtectedListViewPage = lazy(
1684
- () => import("./ListViewPage-CELx2ysp.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
1696
+ () => import("./ListViewPage-iRJ5AUjS.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
1685
1697
  );
1686
1698
  const ProtectedListConfiguration = lazy(
1687
- () => import("./ListConfigurationPage-BxfQJzPk.mjs").then((mod) => ({
1699
+ () => import("./ListConfigurationPage-mbZQmEZ3.mjs").then((mod) => ({
1688
1700
  default: mod.ProtectedListConfiguration
1689
1701
  }))
1690
1702
  );
1691
1703
  const ProtectedEditConfigurationPage = lazy(
1692
- () => import("./EditConfigurationPage-DdPNAbl3.mjs").then((mod) => ({
1704
+ () => import("./EditConfigurationPage-ByaNUj_q.mjs").then((mod) => ({
1693
1705
  default: mod.ProtectedEditConfigurationPage
1694
1706
  }))
1695
1707
  );
1696
1708
  const ProtectedComponentConfigurationPage = lazy(
1697
- () => import("./ComponentConfigurationPage-DfFSZQxe.mjs").then((mod) => ({
1709
+ () => import("./ComponentConfigurationPage-EIYRzIr6.mjs").then((mod) => ({
1698
1710
  default: mod.ProtectedComponentConfigurationPage
1699
1711
  }))
1700
1712
  );
1701
1713
  const NoPermissions = lazy(
1702
- () => import("./NoPermissionsPage-DWleVYK7.mjs").then((mod) => ({ default: mod.NoPermissions }))
1714
+ () => import("./NoPermissionsPage-DckHN3oZ.mjs").then((mod) => ({ default: mod.NoPermissions }))
1703
1715
  );
1704
1716
  const NoContentType = lazy(
1705
- () => import("./NoContentTypePage-DtJ9jcfk.mjs").then((mod) => ({ default: mod.NoContentType }))
1717
+ () => import("./NoContentTypePage-DI8VWkVK.mjs").then((mod) => ({ default: mod.NoContentType }))
1706
1718
  );
1707
1719
  const CollectionTypePages = () => {
1708
1720
  const { collectionType } = useParams();
@@ -1714,7 +1726,7 @@ const CollectionTypePages = () => {
1714
1726
  const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
1715
1727
  const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
1716
1728
  const LIST_RELATIVE_PATH = ":collectionType/:slug";
1717
- const LIST_PATH = `/content-manager/${LIST_RELATIVE_PATH}`;
1729
+ const LIST_PATH = `/content-manager/collection-types/:slug`;
1718
1730
  const routes = [
1719
1731
  {
1720
1732
  path: LIST_RELATIVE_PATH,
@@ -1748,6 +1760,7 @@ const routes = [
1748
1760
  path: "no-content-types",
1749
1761
  Component: NoContentType
1750
1762
  },
1763
+ ...routes$2,
1751
1764
  ...routes$1
1752
1765
  ];
1753
1766
  const DocumentActions = ({ actions: actions2 }) => {
@@ -1846,6 +1859,11 @@ const DocumentActionButton = (action) => {
1846
1859
  ) : null
1847
1860
  ] });
1848
1861
  };
1862
+ const MenuItem = styled(Menu.Item)`
1863
+ &:hover {
1864
+ background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
1865
+ }
1866
+ `;
1849
1867
  const DocumentActionsMenu = ({
1850
1868
  actions: actions2,
1851
1869
  children,
@@ -1904,48 +1922,32 @@ const DocumentActionsMenu = ({
1904
1922
  /* @__PURE__ */ jsxs(Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
1905
1923
  actions2.map((action) => {
1906
1924
  return /* @__PURE__ */ jsx(
1907
- Menu.Item,
1925
+ MenuItem,
1908
1926
  {
1909
1927
  disabled: action.disabled,
1910
1928
  onSelect: handleClick(action),
1911
1929
  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
- ] })
1930
+ isVariantDanger: action.variant === "danger",
1931
+ isDisabled: action.disabled,
1932
+ children: /* @__PURE__ */ jsx(Flex, { justifyContent: "space-between", gap: 4, children: /* @__PURE__ */ jsxs(
1933
+ Flex,
1934
+ {
1935
+ color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1936
+ gap: 2,
1937
+ tag: "span",
1938
+ children: [
1939
+ /* @__PURE__ */ jsx(
1940
+ Flex,
1941
+ {
1942
+ tag: "span",
1943
+ color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1944
+ children: action.icon
1945
+ }
1946
+ ),
1947
+ action.label
1948
+ ]
1949
+ }
1950
+ ) })
1949
1951
  },
1950
1952
  action.id
1951
1953
  );
@@ -2056,6 +2058,18 @@ const DocumentActionModal = ({
2056
2058
  typeof Footer === "function" ? /* @__PURE__ */ jsx(Footer, { onClose: handleClose }) : Footer
2057
2059
  ] }) });
2058
2060
  };
2061
+ const transformData = (data) => {
2062
+ if (Array.isArray(data)) {
2063
+ return data.map(transformData);
2064
+ }
2065
+ if (typeof data === "object" && data !== null) {
2066
+ if ("apiData" in data) {
2067
+ return data.apiData;
2068
+ }
2069
+ return mapValues(transformData)(data);
2070
+ }
2071
+ return data;
2072
+ };
2059
2073
  const PublishAction$1 = ({
2060
2074
  activeTab,
2061
2075
  documentId,
@@ -2169,7 +2183,7 @@ const PublishAction$1 = ({
2169
2183
  documentId,
2170
2184
  params
2171
2185
  },
2172
- formValues
2186
+ transformData(formValues)
2173
2187
  );
2174
2188
  if ("data" in res && collectionType !== SINGLE_TYPES) {
2175
2189
  navigate({
@@ -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-BhIZkPuB.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-CfIXaZf9.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-DzTs9ga-.mjs.map