@strapi/content-manager 0.0.0-experimental.76999222c105ee5da1bc2540e3b5e5f57747300c → 0.0.0-experimental.780730225a7b82dc9f04ceb9ef60710e52d832ab

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 (100) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-WtZ2yaRP.js → ComponentConfigurationPage-ClKl_TA2.js} +3 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-WtZ2yaRP.js.map → ComponentConfigurationPage-ClKl_TA2.js.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-BUOQFZ08.mjs → ComponentConfigurationPage-D3ZWDAHG.mjs} +3 -3
  4. package/dist/_chunks/{ComponentConfigurationPage-BUOQFZ08.mjs.map → ComponentConfigurationPage-D3ZWDAHG.mjs.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-D7HkxcAN.mjs → EditConfigurationPage-BYCBSJxP.mjs} +3 -3
  6. package/dist/_chunks/{EditConfigurationPage-D7HkxcAN.mjs.map → EditConfigurationPage-BYCBSJxP.mjs.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-BVrCP5lF.js → EditConfigurationPage-OWez0Kxp.js} +3 -3
  8. package/dist/_chunks/{EditConfigurationPage-BVrCP5lF.js.map → EditConfigurationPage-OWez0Kxp.js.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-zKmMBER4.mjs → EditViewPage-5pdbvsO_.mjs} +38 -8
  10. package/dist/_chunks/EditViewPage-5pdbvsO_.mjs.map +1 -0
  11. package/dist/_chunks/{EditViewPage-BKQ83NAk.js → EditViewPage-BEs5iGDi.js} +37 -7
  12. package/dist/_chunks/EditViewPage-BEs5iGDi.js.map +1 -0
  13. package/dist/_chunks/{Field-BhN0lyyZ.js → Field-DNHm4wHx.js} +41 -22
  14. package/dist/_chunks/Field-DNHm4wHx.js.map +1 -0
  15. package/dist/_chunks/{Field-BbrX_tUG.mjs → Field-DcKuFHYK.mjs} +41 -22
  16. package/dist/_chunks/Field-DcKuFHYK.mjs.map +1 -0
  17. package/dist/_chunks/{Form-B-E8l73g.mjs → Form-CGwM_-5c.mjs} +2 -2
  18. package/dist/_chunks/{Form-B-E8l73g.mjs.map → Form-CGwM_-5c.mjs.map} +1 -1
  19. package/dist/_chunks/{Form-CkbrtNZd.js → Form-CoRxWJOz.js} +2 -2
  20. package/dist/_chunks/{Form-CkbrtNZd.js.map → Form-CoRxWJOz.js.map} +1 -1
  21. package/dist/_chunks/{History-B2Dg9q7H.js → History-BcUTQrfG.js} +7 -61
  22. package/dist/_chunks/History-BcUTQrfG.js.map +1 -0
  23. package/dist/_chunks/{History-C72HQ0-i.mjs → History-DEvr3Q_V.mjs} +8 -62
  24. package/dist/_chunks/History-DEvr3Q_V.mjs.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-BQCc3BnJ.js → ListConfigurationPage-BE_Ho7tV.js} +4 -3
  26. package/dist/_chunks/ListConfigurationPage-BE_Ho7tV.js.map +1 -0
  27. package/dist/_chunks/{ListConfigurationPage-BalSo5dp.mjs → ListConfigurationPage-BM4zZZcM.mjs} +5 -4
  28. package/dist/_chunks/ListConfigurationPage-BM4zZZcM.mjs.map +1 -0
  29. package/dist/_chunks/{ListViewPage-Dfue5wQ2.mjs → ListViewPage-BK2mkrql.mjs} +16 -5
  30. package/dist/_chunks/{ListViewPage-Dfue5wQ2.mjs.map → ListViewPage-BK2mkrql.mjs.map} +1 -1
  31. package/dist/_chunks/{ListViewPage-Cu5dZKZe.js → ListViewPage-BkT8Eao0.js} +16 -5
  32. package/dist/_chunks/{ListViewPage-Cu5dZKZe.js.map → ListViewPage-BkT8Eao0.js.map} +1 -1
  33. package/dist/_chunks/{NoContentTypePage-BLC8M9U0.mjs → NoContentTypePage-BvcAutu9.mjs} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-BLC8M9U0.mjs.map → NoContentTypePage-BvcAutu9.mjs.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-MGzn4JPu.js → NoContentTypePage-C8mtyc4H.js} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-MGzn4JPu.js.map → NoContentTypePage-C8mtyc4H.js.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-DJPwEpOD.js → NoPermissionsPage-B5Y9Y78B.js} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-DJPwEpOD.js.map → NoPermissionsPage-B5Y9Y78B.js.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-BpAoEQy_.mjs → NoPermissionsPage-BmbRz7PR.mjs} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-BpAoEQy_.mjs.map → NoPermissionsPage-BmbRz7PR.mjs.map} +1 -1
  41. package/dist/_chunks/Preview-BF8ZDYqS.js +286 -0
  42. package/dist/_chunks/Preview-BF8ZDYqS.js.map +1 -0
  43. package/dist/_chunks/Preview-DcexhKJE.mjs +267 -0
  44. package/dist/_chunks/Preview-DcexhKJE.mjs.map +1 -0
  45. package/dist/_chunks/{Relations-DTiqnyGx.js → Relations-BKnoK1R0.js} +3 -3
  46. package/dist/_chunks/{Relations-DTiqnyGx.js.map → Relations-BKnoK1R0.js.map} +1 -1
  47. package/dist/_chunks/{Relations-BULOkyWN.mjs → Relations-BjIzc4EK.mjs} +3 -3
  48. package/dist/_chunks/{Relations-BULOkyWN.mjs.map → Relations-BjIzc4EK.mjs.map} +1 -1
  49. package/dist/_chunks/{en-DPfZ6tPQ.mjs → en-CfIXaZf9.mjs} +11 -2
  50. package/dist/_chunks/{en-DPfZ6tPQ.mjs.map → en-CfIXaZf9.mjs.map} +1 -1
  51. package/dist/_chunks/{en-C-J4DGEe.js → en-DTWPCdTS.js} +11 -2
  52. package/dist/_chunks/{en-C-J4DGEe.js.map → en-DTWPCdTS.js.map} +1 -1
  53. package/dist/_chunks/{index-DW7xp_LG.mjs → index-BW-rXkjn.mjs} +114 -83
  54. package/dist/_chunks/index-BW-rXkjn.mjs.map +1 -0
  55. package/dist/_chunks/{index-76eawJUd.js → index-DOzAG2cq.js} +110 -79
  56. package/dist/_chunks/index-DOzAG2cq.js.map +1 -0
  57. package/dist/_chunks/{layout-DNfLIjbP.mjs → layout-DFVbgjp2.mjs} +3 -3
  58. package/dist/_chunks/{layout-DNfLIjbP.mjs.map → layout-DFVbgjp2.mjs.map} +1 -1
  59. package/dist/_chunks/{layout-CVz8WiDC.js → layout-RC3W2obV.js} +3 -3
  60. package/dist/_chunks/{layout-CVz8WiDC.js.map → layout-RC3W2obV.js.map} +1 -1
  61. package/dist/_chunks/{relations-ByHSIjSe.mjs → relations-Dogh8HWI.mjs} +6 -3
  62. package/dist/_chunks/relations-Dogh8HWI.mjs.map +1 -0
  63. package/dist/_chunks/{relations-B6K4WRjW.js → relations-zam7-5H7.js} +6 -3
  64. package/dist/_chunks/relations-zam7-5H7.js.map +1 -0
  65. package/dist/admin/index.js +1 -1
  66. package/dist/admin/index.mjs +4 -4
  67. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
  68. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +2 -2
  69. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
  70. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
  71. package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
  72. package/dist/admin/src/preview/routes.d.ts +3 -0
  73. package/dist/admin/src/router.d.ts +1 -1
  74. package/dist/server/index.js +56 -9
  75. package/dist/server/index.js.map +1 -1
  76. package/dist/server/index.mjs +57 -10
  77. package/dist/server/index.mjs.map +1 -1
  78. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
  79. package/dist/server/src/preview/index.d.ts.map +1 -1
  80. package/dist/server/src/preview/services/index.d.ts +1 -0
  81. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  82. package/dist/server/src/preview/services/preview-config.d.ts +2 -0
  83. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  84. package/dist/server/src/preview/utils.d.ts +1 -0
  85. package/dist/server/src/preview/utils.d.ts.map +1 -1
  86. package/dist/server/src/register.d.ts.map +1 -1
  87. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  88. package/package.json +9 -9
  89. package/dist/_chunks/EditViewPage-BKQ83NAk.js.map +0 -1
  90. package/dist/_chunks/EditViewPage-zKmMBER4.mjs.map +0 -1
  91. package/dist/_chunks/Field-BbrX_tUG.mjs.map +0 -1
  92. package/dist/_chunks/Field-BhN0lyyZ.js.map +0 -1
  93. package/dist/_chunks/History-B2Dg9q7H.js.map +0 -1
  94. package/dist/_chunks/History-C72HQ0-i.mjs.map +0 -1
  95. package/dist/_chunks/ListConfigurationPage-BQCc3BnJ.js.map +0 -1
  96. package/dist/_chunks/ListConfigurationPage-BalSo5dp.mjs.map +0 -1
  97. package/dist/_chunks/index-76eawJUd.js.map +0 -1
  98. package/dist/_chunks/index-DW7xp_LG.mjs.map +0 -1
  99. package/dist/_chunks/relations-B6K4WRjW.js.map +0 -1
  100. package/dist/_chunks/relations-ByHSIjSe.mjs.map +0 -1
@@ -106,6 +106,9 @@ const en = {
106
106
  "containers.Home.introduction": "To edit your entries go to the specific link in the left menu. This plugin doesn't have a proper way to edit settings and it's still under active development.",
107
107
  "containers.Home.pluginHeaderDescription": "Manage your entries through a powerful and beautiful interface.",
108
108
  "containers.Home.pluginHeaderTitle": "Content Manager",
109
+ "containers.List.draft": "Draft",
110
+ "containers.List.published": "Published",
111
+ "containers.List.modified": "Modified",
109
112
  "containers.list.displayedFields": "Displayed Fields",
110
113
  "containers.list.items": "{number} {number, plural, =0 {items} one {item} other {items}}",
111
114
  "containers.list.table.row-actions": "Row actions",
@@ -238,6 +241,11 @@ const en = {
238
241
  "popover.display-relations.label": "Display relations",
239
242
  "preview.panel.title": "Preview",
240
243
  "preview.panel.button": "Open preview",
244
+ "preview.page-title": "{contentType} preview",
245
+ "preview.header.close": "Close preview",
246
+ "preview.copy.label": "Copy preview link",
247
+ "preview.copy.success": "Copied preview link",
248
+ "preview.tabs.label": "Preview status",
241
249
  "relation.add": "Add relation",
242
250
  "relation.disconnect": "Remove",
243
251
  "relation.error-adding-relation": "An error occurred while trying to add the relation.",
@@ -286,10 +294,11 @@ const en = {
286
294
  "history.restore.success.title": "Version restored.",
287
295
  "history.restore.success.message": "The content of the restored version is not published yet.",
288
296
  "history.restore.error.message": "Could not restore version.",
289
- "validation.error": "There are validation errors in your document. Please fix them before saving."
297
+ "validation.error": "There are validation errors in your document. Please fix them before saving.",
298
+ "bulk-publish.edit": "Edit"
290
299
  };
291
300
  exports.default = en;
292
301
  exports.groups = groups;
293
302
  exports.models = models;
294
303
  exports.pageNotFound = pageNotFound;
295
- //# sourceMappingURL=en-C-J4DGEe.js.map
304
+ //# sourceMappingURL=en-DTWPCdTS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"en-C-J4DGEe.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en-DTWPCdTS.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,15 +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
7
  import mapValues from "lodash/fp/mapValues";
8
8
  import { useIntl } from "react-intl";
9
9
  import { useParams, useNavigate, Navigate, useMatch, useLocation, Link, NavLink } from "react-router-dom";
10
+ import { styled } from "styled-components";
10
11
  import * as yup from "yup";
11
12
  import { ValidationError } from "yup";
12
13
  import pipe from "lodash/fp/pipe";
13
14
  import { intervalToDuration, isPast } from "date-fns";
14
- import { styled } from "styled-components";
15
15
  import { stringify } from "qs";
16
16
  import { createSlice, combineReducers } from "@reduxjs/toolkit";
17
17
  const __variableDynamicImportRuntimeHelper = (glob, path) => {
@@ -271,7 +271,7 @@ const documentApi = contentManagerApi.injectEndpoints({
271
271
  */
272
272
  getAllDocuments: builder.query({
273
273
  query: ({ model, params }) => ({
274
- url: `/content-manager/collection-types/${model}${params ? `?${params}` : ""}`,
274
+ url: `/content-manager/collection-types/${model}`,
275
275
  method: "GET",
276
276
  config: {
277
277
  params
@@ -1663,10 +1663,10 @@ const useDocumentActions = () => {
1663
1663
  update
1664
1664
  };
1665
1665
  };
1666
- const ProtectedHistoryPage = lazy(
1667
- () => import("./History-C72HQ0-i.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
1666
+ const ProtectedHistoryPage = React.lazy(
1667
+ () => import("./History-DEvr3Q_V.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
1668
1668
  );
1669
- const routes$1 = [
1669
+ const routes$2 = [
1670
1670
  {
1671
1671
  path: ":collectionType/:slug/:id/history",
1672
1672
  Component: ProtectedHistoryPage
@@ -1676,32 +1676,45 @@ const routes$1 = [
1676
1676
  Component: ProtectedHistoryPage
1677
1677
  }
1678
1678
  ];
1679
+ const ProtectedPreviewPage = React.lazy(
1680
+ () => import("./Preview-DcexhKJE.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
+ ];
1679
1692
  const ProtectedEditViewPage = lazy(
1680
- () => import("./EditViewPage-zKmMBER4.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
1693
+ () => import("./EditViewPage-5pdbvsO_.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
1681
1694
  );
1682
1695
  const ProtectedListViewPage = lazy(
1683
- () => import("./ListViewPage-Dfue5wQ2.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
1696
+ () => import("./ListViewPage-BK2mkrql.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
1684
1697
  );
1685
1698
  const ProtectedListConfiguration = lazy(
1686
- () => import("./ListConfigurationPage-BalSo5dp.mjs").then((mod) => ({
1699
+ () => import("./ListConfigurationPage-BM4zZZcM.mjs").then((mod) => ({
1687
1700
  default: mod.ProtectedListConfiguration
1688
1701
  }))
1689
1702
  );
1690
1703
  const ProtectedEditConfigurationPage = lazy(
1691
- () => import("./EditConfigurationPage-D7HkxcAN.mjs").then((mod) => ({
1704
+ () => import("./EditConfigurationPage-BYCBSJxP.mjs").then((mod) => ({
1692
1705
  default: mod.ProtectedEditConfigurationPage
1693
1706
  }))
1694
1707
  );
1695
1708
  const ProtectedComponentConfigurationPage = lazy(
1696
- () => import("./ComponentConfigurationPage-BUOQFZ08.mjs").then((mod) => ({
1709
+ () => import("./ComponentConfigurationPage-D3ZWDAHG.mjs").then((mod) => ({
1697
1710
  default: mod.ProtectedComponentConfigurationPage
1698
1711
  }))
1699
1712
  );
1700
1713
  const NoPermissions = lazy(
1701
- () => import("./NoPermissionsPage-BpAoEQy_.mjs").then((mod) => ({ default: mod.NoPermissions }))
1714
+ () => import("./NoPermissionsPage-BmbRz7PR.mjs").then((mod) => ({ default: mod.NoPermissions }))
1702
1715
  );
1703
1716
  const NoContentType = lazy(
1704
- () => import("./NoContentTypePage-BLC8M9U0.mjs").then((mod) => ({ default: mod.NoContentType }))
1717
+ () => import("./NoContentTypePage-BvcAutu9.mjs").then((mod) => ({ default: mod.NoContentType }))
1705
1718
  );
1706
1719
  const CollectionTypePages = () => {
1707
1720
  const { collectionType } = useParams();
@@ -1713,7 +1726,7 @@ const CollectionTypePages = () => {
1713
1726
  const CLONE_RELATIVE_PATH = ":collectionType/:slug/clone/:origin";
1714
1727
  const CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;
1715
1728
  const LIST_RELATIVE_PATH = ":collectionType/:slug";
1716
- const LIST_PATH = `/content-manager/${LIST_RELATIVE_PATH}`;
1729
+ const LIST_PATH = `/content-manager/collection-types/:slug`;
1717
1730
  const routes = [
1718
1731
  {
1719
1732
  path: LIST_RELATIVE_PATH,
@@ -1747,6 +1760,7 @@ const routes = [
1747
1760
  path: "no-content-types",
1748
1761
  Component: NoContentType
1749
1762
  },
1763
+ ...routes$2,
1750
1764
  ...routes$1
1751
1765
  ];
1752
1766
  const DocumentActions = ({ actions: actions2 }) => {
@@ -1845,6 +1859,11 @@ const DocumentActionButton = (action) => {
1845
1859
  ) : null
1846
1860
  ] });
1847
1861
  };
1862
+ const MenuItem = styled(Menu.Item)`
1863
+ &:hover {
1864
+ background: ${({ theme, isVariantDanger, isDisabled }) => isVariantDanger && !isDisabled ? theme.colors.danger100 : "neutral"};
1865
+ }
1866
+ `;
1848
1867
  const DocumentActionsMenu = ({
1849
1868
  actions: actions2,
1850
1869
  children,
@@ -1903,48 +1922,32 @@ const DocumentActionsMenu = ({
1903
1922
  /* @__PURE__ */ jsxs(Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
1904
1923
  actions2.map((action) => {
1905
1924
  return /* @__PURE__ */ jsx(
1906
- Menu.Item,
1925
+ MenuItem,
1907
1926
  {
1908
1927
  disabled: action.disabled,
1909
1928
  onSelect: handleClick(action),
1910
1929
  display: "block",
1911
- children: /* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", gap: 4, children: [
1912
- /* @__PURE__ */ jsxs(
1913
- Flex,
1914
- {
1915
- color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
1916
- gap: 2,
1917
- tag: "span",
1918
- children: [
1919
- /* @__PURE__ */ jsx(
1920
- Flex,
1921
- {
1922
- tag: "span",
1923
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
1924
- children: action.icon
1925
- }
1926
- ),
1927
- action.label
1928
- ]
1929
- }
1930
- ),
1931
- action.id.startsWith("HistoryAction") && /* @__PURE__ */ jsx(
1932
- Flex,
1933
- {
1934
- alignItems: "center",
1935
- background: "alternative100",
1936
- borderStyle: "solid",
1937
- borderColor: "alternative200",
1938
- borderWidth: "1px",
1939
- height: 5,
1940
- paddingLeft: 2,
1941
- paddingRight: 2,
1942
- hasRadius: true,
1943
- color: "alternative600",
1944
- children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", fontWeight: "bold", lineHeight: 1, children: formatMessage({ id: "global.new", defaultMessage: "New" }) })
1945
- }
1946
- )
1947
- ] })
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
+ ) })
1948
1951
  },
1949
1952
  action.id
1950
1953
  );
@@ -2270,7 +2273,7 @@ const UpdateAction = ({
2270
2273
  */
2271
2274
  disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
2272
2275
  label: formatMessage({
2273
- id: "content-manager.containers.Edit.save",
2276
+ id: "global.save",
2274
2277
  defaultMessage: "Save"
2275
2278
  }),
2276
2279
  onClick: async () => {
@@ -2535,7 +2538,7 @@ const RelativeTime = React.forwardRef(
2535
2538
  });
2536
2539
  const unit = intervals.find((intervalUnit) => {
2537
2540
  return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
2538
- });
2541
+ }) ?? "seconds";
2539
2542
  const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
2540
2543
  const customInterval = customIntervals.find(
2541
2544
  (custom) => interval[custom.unit] < custom.threshold
@@ -2569,19 +2572,29 @@ const getDisplayName = ({
2569
2572
  return email ?? "";
2570
2573
  };
2571
2574
  const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2572
- const DocumentStatus = ({ status = "draft", ...restProps }) => {
2575
+ const DocumentStatus = ({ status = "draft", size = "S", ...restProps }) => {
2573
2576
  const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
2574
- 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
+ }) }) });
2575
2582
  };
2576
2583
  const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
2577
2584
  const { formatMessage } = useIntl();
2578
2585
  const isCloning = useMatch(CLONE_PATH) !== null;
2586
+ const params = useParams();
2579
2587
  const title = isCreating ? formatMessage({
2580
2588
  id: "content-manager.containers.edit.title.new",
2581
2589
  defaultMessage: "Create an entry"
2582
2590
  }) : documentTitle;
2583
2591
  return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
2584
- /* @__PURE__ */ jsx(BackButton, {}),
2592
+ /* @__PURE__ */ jsx(
2593
+ BackButton,
2594
+ {
2595
+ fallback: params.collectionType === SINGLE_TYPES ? void 0 : `../${COLLECTION_TYPES}/${params.slug}`
2596
+ }
2597
+ ),
2585
2598
  /* @__PURE__ */ jsxs(Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
2586
2599
  /* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
2587
2600
  /* @__PURE__ */ jsx(HeaderToolbar, {})
@@ -3268,18 +3281,10 @@ const SelectedEntriesTableContent = ({
3268
3281
  search: row.locale && `?plugins[i18n][locale]=${row.locale}`
3269
3282
  },
3270
3283
  state: { from: pathname },
3271
- label: formatMessage(
3272
- { id: "app.component.HelperPluginTable.edit", defaultMessage: "Edit {target}" },
3273
- {
3274
- target: formatMessage(
3275
- {
3276
- id: "content-manager.components.ListViewHelperPluginTable.row-line",
3277
- defaultMessage: "item line {number}"
3278
- },
3279
- { number: index2 + 1 }
3280
- )
3281
- }
3282
- ),
3284
+ label: formatMessage({
3285
+ id: "content-manager.bulk-publish.edit",
3286
+ defaultMessage: "Edit"
3287
+ }),
3283
3288
  target: "_blank",
3284
3289
  marginLeft: "auto",
3285
3290
  variant: "ghost",
@@ -3923,17 +3928,27 @@ const HistoryAction = ({ model, document }) => {
3923
3928
  const { formatMessage } = useIntl();
3924
3929
  const [{ query }] = useQueryParams();
3925
3930
  const navigate = useNavigate();
3931
+ const { trackUsage } = useTracking();
3932
+ const { pathname } = useLocation();
3926
3933
  const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
3927
3934
  if (!window.strapi.features.isEnabled("cms-content-history")) {
3928
3935
  return null;
3929
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
+ };
3930
3945
  return {
3931
3946
  icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
3932
3947
  label: formatMessage({
3933
3948
  id: "content-manager.history.document-action",
3934
3949
  defaultMessage: "Content History"
3935
3950
  }),
3936
- onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
3951
+ onClick: handleOnClick,
3937
3952
  disabled: (
3938
3953
  /**
3939
3954
  * The user is creating a new document.
@@ -4019,6 +4034,9 @@ const previewApi = contentManagerApi.injectEndpoints({
4019
4034
  const { useGetPreviewUrlQuery } = previewApi;
4020
4035
  const PreviewSidePanel = ({ model, documentId, document }) => {
4021
4036
  const { formatMessage } = useIntl();
4037
+ const { trackUsage } = useTracking();
4038
+ const { pathname } = useLocation();
4039
+ const [{ query }] = useQueryParams();
4022
4040
  const { data, error } = useGetPreviewUrlQuery({
4023
4041
  params: {
4024
4042
  contentType: model
@@ -4032,12 +4050,26 @@ const PreviewSidePanel = ({ model, documentId, document }) => {
4032
4050
  if (!data?.data?.url || error) {
4033
4051
  return null;
4034
4052
  }
4053
+ const trackNavigation = () => {
4054
+ const destinationPathname = pathname.replace(/\/$/, "") + "/preview";
4055
+ trackUsage("willNavigate", { from: pathname, to: destinationPathname });
4056
+ };
4035
4057
  return {
4036
4058
  title: formatMessage({ id: "content-manager.preview.panel.title", defaultMessage: "Preview" }),
4037
- content: /* @__PURE__ */ jsx(Button, { variant: "tertiary", fullWidth: true, tag: Link, to: data.data.url, target: "_blank", children: formatMessage({
4038
- id: "content-manager.preview.panel.button",
4039
- defaultMessage: "Open preview"
4040
- }) })
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
+ ) })
4041
4073
  };
4042
4074
  };
4043
4075
  const FEATURE_ID = "preview";
@@ -4047,9 +4079,7 @@ const previewAdmin = {
4047
4079
  return;
4048
4080
  }
4049
4081
  const contentManagerPluginApis = app.getPlugin("content-manager").apis;
4050
- if ("addEditViewSidePanel" in contentManagerPluginApis && typeof contentManagerPluginApis.addEditViewSidePanel === "function") {
4051
- contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
4052
- }
4082
+ contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);
4053
4083
  }
4054
4084
  };
4055
4085
  const index = {
@@ -4071,7 +4101,7 @@ const index = {
4071
4101
  app.router.addRoute({
4072
4102
  path: "content-manager/*",
4073
4103
  lazy: async () => {
4074
- const { Layout } = await import("./layout-DNfLIjbP.mjs");
4104
+ const { Layout } = await import("./layout-DFVbgjp2.mjs");
4075
4105
  return {
4076
4106
  Component: Layout
4077
4107
  };
@@ -4091,7 +4121,7 @@ const index = {
4091
4121
  async registerTrads({ locales }) {
4092
4122
  const importedTrads = await Promise.all(
4093
4123
  locales.map((locale) => {
4094
- 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-DPfZ6tPQ.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 }) => {
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 }) => {
4095
4125
  return {
4096
4126
  data: prefixPluginTranslations(data, PLUGIN_ID),
4097
4127
  locale
@@ -4118,9 +4148,10 @@ export {
4118
4148
  HOOKS as H,
4119
4149
  InjectionZone as I,
4120
4150
  useDocument as J,
4121
- index as K,
4122
- useContentManagerContext as L,
4123
- useDocumentActions as M,
4151
+ useGetPreviewUrlQuery as K,
4152
+ index as L,
4153
+ useContentManagerContext as M,
4154
+ useDocumentActions as N,
4124
4155
  Panels as P,
4125
4156
  RelativeTime as R,
4126
4157
  SINGLE_TYPES as S,
@@ -4152,4 +4183,4 @@ export {
4152
4183
  capitalise as y,
4153
4184
  useUpdateContentTypeConfigurationMutation as z
4154
4185
  };
4155
- //# sourceMappingURL=index-DW7xp_LG.mjs.map
4186
+ //# sourceMappingURL=index-BW-rXkjn.mjs.map