@strapi/content-manager 0.0.0-experimental.a4161dd0ce4a6742074cbfc43734281e14a29baa → 0.0.0-experimental.a4cee39f4705cbd534afa66170f94f2f68e65b75

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 (89) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-CDKJ1saA.js → ComponentConfigurationPage-BWB_urBW.js} +3 -3
  2. package/dist/admin/chunks/{ComponentConfigurationPage-CDKJ1saA.js.map → ComponentConfigurationPage-BWB_urBW.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-BdKTyTdt.mjs → ComponentConfigurationPage-Bw3SD5w3.mjs} +3 -3
  4. package/dist/admin/chunks/{ComponentConfigurationPage-BdKTyTdt.mjs.map → ComponentConfigurationPage-Bw3SD5w3.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-BW5fpvkO.js → EditConfigurationPage-BazMqkY5.js} +3 -3
  6. package/dist/admin/chunks/{EditConfigurationPage-BW5fpvkO.js.map → EditConfigurationPage-BazMqkY5.js.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-CaJ_CmJz.mjs → EditConfigurationPage-bP8cL5u8.mjs} +3 -3
  8. package/dist/admin/chunks/{EditConfigurationPage-CaJ_CmJz.mjs.map → EditConfigurationPage-bP8cL5u8.mjs.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-BDekCXSy.mjs → EditViewPage-D3F0FbHV.mjs} +10 -7
  10. package/dist/admin/chunks/EditViewPage-D3F0FbHV.mjs.map +1 -0
  11. package/dist/admin/chunks/{EditViewPage-CNacGhk_.js → EditViewPage-DjB2aEuN.js} +11 -8
  12. package/dist/admin/chunks/EditViewPage-DjB2aEuN.js.map +1 -0
  13. package/dist/admin/chunks/{Form-2LZDIqUE.mjs → Form-CO-twQva.mjs} +2 -2
  14. package/dist/admin/chunks/{Form-2LZDIqUE.mjs.map → Form-CO-twQva.mjs.map} +1 -1
  15. package/dist/admin/chunks/{Form-CouVf26p.js → Form-Dyr8enar.js} +2 -2
  16. package/dist/admin/chunks/{Form-CouVf26p.js.map → Form-Dyr8enar.js.map} +1 -1
  17. package/dist/admin/chunks/{History-Cv3uNjvV.js → History-BsZCxc7e.js} +6 -6
  18. package/dist/admin/chunks/{History-Cv3uNjvV.js.map → History-BsZCxc7e.js.map} +1 -1
  19. package/dist/admin/chunks/{History-B7zZvnQF.mjs → History-DJ_pI0gL.mjs} +5 -5
  20. package/dist/admin/chunks/{History-B7zZvnQF.mjs.map → History-DJ_pI0gL.mjs.map} +1 -1
  21. package/dist/admin/chunks/{Input-DPH5j7Yl.js → Input-D-yPzkxz.js} +634 -848
  22. package/dist/admin/chunks/Input-D-yPzkxz.js.map +1 -0
  23. package/dist/admin/chunks/{Input-BPTHgeyh.mjs → Input-DWQWd5MK.mjs} +634 -847
  24. package/dist/admin/chunks/Input-DWQWd5MK.mjs.map +1 -0
  25. package/dist/admin/chunks/{ListConfigurationPage-FS8YuoKF.mjs → ListConfigurationPage-DlvGrjR_.mjs} +2 -2
  26. package/dist/admin/chunks/{ListConfigurationPage-FS8YuoKF.mjs.map → ListConfigurationPage-DlvGrjR_.mjs.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-Cj1tt01r.js → ListConfigurationPage-dHbA6tve.js} +2 -2
  28. package/dist/admin/chunks/{ListConfigurationPage-Cj1tt01r.js.map → ListConfigurationPage-dHbA6tve.js.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-Xv5mmaJq.mjs → ListViewPage-DaxIL_8o.mjs} +3 -3
  30. package/dist/admin/chunks/{ListViewPage-Xv5mmaJq.mjs.map → ListViewPage-DaxIL_8o.mjs.map} +1 -1
  31. package/dist/admin/chunks/{ListViewPage-BCmGmK7N.js → ListViewPage-gsJS3ulI.js} +3 -3
  32. package/dist/admin/chunks/{ListViewPage-BCmGmK7N.js.map → ListViewPage-gsJS3ulI.js.map} +1 -1
  33. package/dist/admin/chunks/{NoContentTypePage-DpvfQfhU.js → NoContentTypePage-BD-VEn6M.js} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-DpvfQfhU.js.map → NoContentTypePage-BD-VEn6M.js.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-Bbqw5ZV9.mjs → NoContentTypePage-xzAGzlVY.mjs} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-Bbqw5ZV9.mjs.map → NoContentTypePage-xzAGzlVY.mjs.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-igrvpcW0.mjs → NoPermissionsPage-BAKqxUK7.mjs} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-igrvpcW0.mjs.map → NoPermissionsPage-BAKqxUK7.mjs.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-BYEkhBnk.js → NoPermissionsPage-BmE5T_Mq.js} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-BYEkhBnk.js.map → NoPermissionsPage-BmE5T_Mq.js.map} +1 -1
  41. package/dist/admin/chunks/{Preview-DR-9uYxZ.mjs → Preview-Bz2ir5R5.mjs} +102 -182
  42. package/dist/admin/chunks/Preview-Bz2ir5R5.mjs.map +1 -0
  43. package/dist/admin/chunks/{Preview-DlRltQbE.js → Preview-CP4m2RBm.js} +101 -181
  44. package/dist/admin/chunks/Preview-CP4m2RBm.js.map +1 -0
  45. package/dist/admin/chunks/{en-DBP0Gaid.mjs → en-C2zEwS3-.mjs} +3 -1
  46. package/dist/admin/chunks/{en-DBP0Gaid.mjs.map → en-C2zEwS3-.mjs.map} +1 -1
  47. package/dist/admin/chunks/{en-CH__IC8g.js → en-G976DLsg.js} +3 -1
  48. package/dist/admin/chunks/{en-CH__IC8g.js.map → en-G976DLsg.js.map} +1 -1
  49. package/dist/admin/chunks/{index-CISU19oJ.js → index-CFa6xmgK.js} +197 -127
  50. package/dist/admin/chunks/index-CFa6xmgK.js.map +1 -0
  51. package/dist/admin/chunks/{index-C_e5v8f7.mjs → index-ZyDJIuQ1.mjs} +196 -129
  52. package/dist/admin/chunks/index-ZyDJIuQ1.mjs.map +1 -0
  53. package/dist/admin/chunks/{layout-CrqscUTi.mjs → layout-D2tOWWAq.mjs} +4 -4
  54. package/dist/admin/chunks/{layout-CrqscUTi.mjs.map → layout-D2tOWWAq.mjs.map} +1 -1
  55. package/dist/admin/chunks/{layout-CajJum-G.js → layout-XA97mHoN.js} +4 -4
  56. package/dist/admin/chunks/{layout-CajJum-G.js.map → layout-XA97mHoN.js.map} +1 -1
  57. package/dist/admin/chunks/uk-BtM6WnaE.mjs +313 -0
  58. package/dist/admin/chunks/uk-BtM6WnaE.mjs.map +1 -0
  59. package/dist/admin/chunks/uk-DB6OgySY.js +318 -0
  60. package/dist/admin/chunks/uk-DB6OgySY.js.map +1 -0
  61. package/dist/admin/chunks/{usePrev-CHotxABl.js → usePrev-BEkg-rKP.js} +2 -2
  62. package/dist/admin/chunks/{usePrev-CHotxABl.js.map → usePrev-BEkg-rKP.js.map} +1 -1
  63. package/dist/admin/chunks/{usePrev-DF3ZO0z4.mjs → usePrev-DAPoUN3D.mjs} +2 -2
  64. package/dist/admin/chunks/{usePrev-DF3ZO0z4.mjs.map → usePrev-DAPoUN3D.mjs.map} +1 -1
  65. package/dist/admin/index.js +1 -1
  66. package/dist/admin/index.mjs +1 -1
  67. package/dist/admin/src/content-manager.d.ts +1 -0
  68. package/dist/admin/src/features/DocumentContext.d.ts +13 -2
  69. package/dist/admin/src/hooks/useDocument.d.ts +2 -0
  70. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
  71. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +5 -7
  72. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -2
  73. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +3 -1
  74. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +5 -2
  75. package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
  76. package/package.json +8 -8
  77. package/dist/admin/chunks/EditViewPage-BDekCXSy.mjs.map +0 -1
  78. package/dist/admin/chunks/EditViewPage-CNacGhk_.js.map +0 -1
  79. package/dist/admin/chunks/Input-BPTHgeyh.mjs.map +0 -1
  80. package/dist/admin/chunks/Input-DPH5j7Yl.js.map +0 -1
  81. package/dist/admin/chunks/Preview-DR-9uYxZ.mjs.map +0 -1
  82. package/dist/admin/chunks/Preview-DlRltQbE.js.map +0 -1
  83. package/dist/admin/chunks/index-CISU19oJ.js.map +0 -1
  84. package/dist/admin/chunks/index-C_e5v8f7.mjs.map +0 -1
  85. package/dist/admin/chunks/uk-B24MoTVg.js +0 -145
  86. package/dist/admin/chunks/uk-B24MoTVg.js.map +0 -1
  87. package/dist/admin/chunks/uk-Cpgmm7gE.mjs +0 -140
  88. package/dist/admin/chunks/uk-Cpgmm7gE.mjs.map +0 -1
  89. package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -3
@@ -119,103 +119,6 @@ const DOCUMENT_META_FIELDS = [
119
119
  const SINGLE_TYPES = 'single-types';
120
120
  const COLLECTION_TYPES = 'collection-types';
121
121
 
122
- const [DocumentRBACProvider, useDocumentRBAC] = strapiAdmin.createContext('DocumentRBAC', {
123
- canCreate: false,
124
- canCreateFields: [],
125
- canDelete: false,
126
- canPublish: false,
127
- canRead: false,
128
- canReadFields: [],
129
- canUpdate: false,
130
- canUpdateFields: [],
131
- canUserAction: ()=>false,
132
- isLoading: false
133
- });
134
- /**
135
- * @internal This component is not meant to be used outside of the Content Manager plugin.
136
- * It depends on knowing the slug/model of the content-type using the params of the URL or the model if it is passed as arg.
137
- * If you do use the hook outside of the context, we default to `false` for all actions.
138
- *
139
- * It then creates an list of `can{Action}` that are passed to the context for consumption
140
- * within the app to enforce RBAC.
141
- */ const DocumentRBAC = ({ children, permissions, model })=>{
142
- const { slug } = reactRouterDom.useParams();
143
- if (!slug && !model) {
144
- throw new Error('Cannot find the slug param in the URL or the model prop is not provided.');
145
- }
146
- const contentTypeUid = model ?? slug;
147
- const [{ rawQuery }] = strapiAdmin.useQueryParams();
148
- const userPermissions = strapiAdmin.useAuth('DocumentRBAC', (state)=>state.permissions);
149
- const contentTypePermissions = React__namespace.useMemo(()=>{
150
- const contentTypePermissions = userPermissions.filter((permission)=>permission.subject === contentTypeUid);
151
- return contentTypePermissions.reduce((acc, permission)=>{
152
- const [action] = permission.action.split('.').slice(-1);
153
- return {
154
- ...acc,
155
- [action]: [
156
- permission
157
- ]
158
- };
159
- }, {});
160
- }, [
161
- contentTypeUid,
162
- userPermissions
163
- ]);
164
- const { isLoading, allowedActions } = strapiAdmin.useRBAC(contentTypePermissions, permissions ?? undefined, // TODO: useRBAC context should be typed and built differently
165
- // We are passing raw query as context to the hook so that it can
166
- // rely on the locale provided from DocumentRBAC for its permission calculations.
167
- rawQuery);
168
- const canCreateFields = !isLoading && allowedActions.canCreate ? extractAndDedupeFields(contentTypePermissions.create) : [];
169
- const canReadFields = !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];
170
- const canUpdateFields = !isLoading && allowedActions.canUpdate ? extractAndDedupeFields(contentTypePermissions.update) : [];
171
- /**
172
- * @description Checks if the user can perform an action on a field based on the field names
173
- * provided as the second argument.
174
- */ const canUserAction = React__namespace.useCallback((fieldName, fieldsUserCanAction, fieldType)=>{
175
- const name = removeNumericalStrings(fieldName.split('.'));
176
- const componentFieldNames = fieldsUserCanAction// filter out fields that aren't components (components are dot separated)
177
- .filter((field)=>field.split('.').length > 1);
178
- if (fieldType === 'component') {
179
- // check if the field name is within any of those arrays
180
- return componentFieldNames.some((field)=>{
181
- return field.includes(name.join('.'));
182
- });
183
- }
184
- /**
185
- * The field is within a component.
186
- */ if (name.length > 1) {
187
- return componentFieldNames.includes(name.join('.'));
188
- }
189
- /**
190
- * just a regular field
191
- */ return fieldsUserCanAction.includes(fieldName);
192
- }, []);
193
- if (isLoading) {
194
- return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
195
- }
196
- return /*#__PURE__*/ jsxRuntime.jsx(DocumentRBACProvider, {
197
- isLoading: isLoading,
198
- canCreateFields: canCreateFields,
199
- canReadFields: canReadFields,
200
- canUpdateFields: canUpdateFields,
201
- canUserAction: canUserAction,
202
- ...allowedActions,
203
- children: children
204
- });
205
- };
206
- /**
207
- * @internal it's really small, but it's used three times in a row and DRY for something this straight forward.
208
- */ const extractAndDedupeFields = (permissions = [])=>permissions.flatMap((permission)=>permission.properties?.fields).filter((field, index, arr)=>arr.indexOf(field) === index && typeof field === 'string');
209
- /**
210
- * @internal removes numerical strings from arrays.
211
- * @example
212
- * ```ts
213
- * const name = 'a.0.b';
214
- * const res = removeNumericalStrings(name.split('.'));
215
- * console.log(res); // ['a', 'b']
216
- * ```
217
- */ const removeNumericalStrings = (arr)=>arr.filter((item)=>isNaN(Number(item)));
218
-
219
122
  const BLOCK_LIST_ATTRIBUTE_KEYS = [
220
123
  '__component',
221
124
  '__temp_key__'
@@ -1526,7 +1429,7 @@ const checkIfAttributeIsDisplayable = (attribute)=>{
1526
1429
  const { toggleNotification } = strapiAdmin.useNotification();
1527
1430
  const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
1528
1431
  const { formatMessage } = reactIntl.useIntl();
1529
- const { currentData: data, isLoading: isLoadingDocument, isFetching: isFetchingDocument, error } = useGetDocumentQuery(args, {
1432
+ const { currentData: data, isLoading: isLoadingDocument, isFetching: isFetchingDocument, error, refetch } = useGetDocumentQuery(args, {
1530
1433
  ...opts,
1531
1434
  skip: !args.documentId && args.collectionType !== SINGLE_TYPES || opts?.skip
1532
1435
  });
@@ -1625,7 +1528,8 @@ const checkIfAttributeIsDisplayable = (attribute)=>{
1625
1528
  schemas,
1626
1529
  validate,
1627
1530
  getTitle,
1628
- getInitialFormValues
1531
+ getInitialFormValues,
1532
+ refetch
1629
1533
  };
1630
1534
  };
1631
1535
  /* -------------------------------------------------------------------------------------------------
@@ -1698,6 +1602,144 @@ const checkIfAttributeIsDisplayable = (attribute)=>{
1698
1602
  };
1699
1603
  };
1700
1604
 
1605
+ const [DocumentProvider, useDocumentContext] = strapiAdmin.createContext('DocumentContext');
1606
+ /**
1607
+ * TODO: Document in contributor docs, Add unit test
1608
+ *
1609
+ * This context provider and its associated hook are used to access a document at its root level
1610
+ * and expose a function to change the current document being viewed to one of the root level docuemnt's relations.
1611
+ *
1612
+ * The useDocumentContext hook exposes:
1613
+ * - meta: information about the currentDocument,
1614
+ * - document: the actual document,
1615
+ * - changeDocument: a function to change the current document to one of its relations.
1616
+ * - rootDocumentMeta: information about the root level document (current page)
1617
+ */ const DocumentContextProvider = ({ children, initialDocument, onPreview })=>{
1618
+ /**
1619
+ * Initialize with the "root" document and expose a setter method to change to
1620
+ * one of the root level document's relations.
1621
+ */ const [currentDocumentMeta, changeDocument] = React__namespace.useState(initialDocument);
1622
+ const params = React__namespace.useMemo(()=>buildValidParams(currentDocumentMeta.params ?? {}), [
1623
+ currentDocumentMeta.params
1624
+ ]);
1625
+ const document = useDocument({
1626
+ ...currentDocumentMeta,
1627
+ params
1628
+ });
1629
+ const [documentHistory, setDocumentHistory] = React__namespace.useState([]);
1630
+ return /*#__PURE__*/ jsxRuntime.jsx(DocumentProvider, {
1631
+ changeDocument: changeDocument,
1632
+ document: document,
1633
+ rootDocumentMeta: {
1634
+ documentId: initialDocument.documentId,
1635
+ model: initialDocument.model,
1636
+ collectionType: initialDocument.collectionType
1637
+ },
1638
+ meta: currentDocumentMeta,
1639
+ documentHistory: documentHistory,
1640
+ setDocumentHistory: setDocumentHistory,
1641
+ onPreview: onPreview,
1642
+ children: children
1643
+ });
1644
+ };
1645
+
1646
+ const [DocumentRBACProvider, useDocumentRBAC] = strapiAdmin.createContext('DocumentRBAC', {
1647
+ canCreate: false,
1648
+ canCreateFields: [],
1649
+ canDelete: false,
1650
+ canPublish: false,
1651
+ canRead: false,
1652
+ canReadFields: [],
1653
+ canUpdate: false,
1654
+ canUpdateFields: [],
1655
+ canUserAction: ()=>false,
1656
+ isLoading: false
1657
+ });
1658
+ /**
1659
+ * @internal This component is not meant to be used outside of the Content Manager plugin.
1660
+ * It depends on knowing the slug/model of the content-type using the params of the URL or the model if it is passed as arg.
1661
+ * If you do use the hook outside of the context, we default to `false` for all actions.
1662
+ *
1663
+ * It then creates an list of `can{Action}` that are passed to the context for consumption
1664
+ * within the app to enforce RBAC.
1665
+ */ const DocumentRBAC = ({ children, permissions, model })=>{
1666
+ const { slug } = reactRouterDom.useParams();
1667
+ if (!slug && !model) {
1668
+ throw new Error('Cannot find the slug param in the URL or the model prop is not provided.');
1669
+ }
1670
+ const contentTypeUid = model ?? slug;
1671
+ const [{ rawQuery }] = strapiAdmin.useQueryParams();
1672
+ const userPermissions = strapiAdmin.useAuth('DocumentRBAC', (state)=>state.permissions);
1673
+ const contentTypePermissions = React__namespace.useMemo(()=>{
1674
+ const contentTypePermissions = userPermissions.filter((permission)=>permission.subject === contentTypeUid);
1675
+ return contentTypePermissions.reduce((acc, permission)=>{
1676
+ const [action] = permission.action.split('.').slice(-1);
1677
+ return {
1678
+ ...acc,
1679
+ [action]: [
1680
+ permission
1681
+ ]
1682
+ };
1683
+ }, {});
1684
+ }, [
1685
+ contentTypeUid,
1686
+ userPermissions
1687
+ ]);
1688
+ const { isLoading, allowedActions } = strapiAdmin.useRBAC(contentTypePermissions, permissions ?? undefined, // TODO: useRBAC context should be typed and built differently
1689
+ // We are passing raw query as context to the hook so that it can
1690
+ // rely on the locale provided from DocumentRBAC for its permission calculations.
1691
+ rawQuery);
1692
+ const canCreateFields = !isLoading && allowedActions.canCreate ? extractAndDedupeFields(contentTypePermissions.create) : [];
1693
+ const canReadFields = !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];
1694
+ const canUpdateFields = !isLoading && allowedActions.canUpdate ? extractAndDedupeFields(contentTypePermissions.update) : [];
1695
+ /**
1696
+ * @description Checks if the user can perform an action on a field based on the field names
1697
+ * provided as the second argument.
1698
+ */ const canUserAction = React__namespace.useCallback((fieldName, fieldsUserCanAction, fieldType)=>{
1699
+ const name = removeNumericalStrings(fieldName.split('.'));
1700
+ const componentFieldNames = fieldsUserCanAction// filter out fields that aren't components (components are dot separated)
1701
+ .filter((field)=>field.split('.').length > 1);
1702
+ if (fieldType === 'component') {
1703
+ // check if the field name is within any of those arrays
1704
+ return componentFieldNames.some((field)=>{
1705
+ return field.includes(name.join('.'));
1706
+ });
1707
+ }
1708
+ /**
1709
+ * The field is within a component.
1710
+ */ if (name.length > 1) {
1711
+ return componentFieldNames.includes(name.join('.'));
1712
+ }
1713
+ /**
1714
+ * just a regular field
1715
+ */ return fieldsUserCanAction.includes(fieldName);
1716
+ }, []);
1717
+ if (isLoading) {
1718
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
1719
+ }
1720
+ return /*#__PURE__*/ jsxRuntime.jsx(DocumentRBACProvider, {
1721
+ isLoading: isLoading,
1722
+ canCreateFields: canCreateFields,
1723
+ canReadFields: canReadFields,
1724
+ canUpdateFields: canUpdateFields,
1725
+ canUserAction: canUserAction,
1726
+ ...allowedActions,
1727
+ children: children
1728
+ });
1729
+ };
1730
+ /**
1731
+ * @internal it's really small, but it's used three times in a row and DRY for something this straight forward.
1732
+ */ const extractAndDedupeFields = (permissions = [])=>permissions.flatMap((permission)=>permission.properties?.fields).filter((field, index, arr)=>arr.indexOf(field) === index && typeof field === 'string');
1733
+ /**
1734
+ * @internal removes numerical strings from arrays.
1735
+ * @example
1736
+ * ```ts
1737
+ * const name = 'a.0.b';
1738
+ * const res = removeNumericalStrings(name.split('.'));
1739
+ * console.log(res); // ['a', 'b']
1740
+ * ```
1741
+ */ const removeNumericalStrings = (arr)=>arr.filter((item)=>isNaN(Number(item)));
1742
+
1701
1743
  const prefixPluginTranslations = (trad, pluginId)=>{
1702
1744
  return Object.keys(trad).reduce((acc, current)=>{
1703
1745
  acc[`${pluginId}.${current}`] = trad[current];
@@ -1870,7 +1912,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1870
1912
  const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();
1871
1913
  const publish = React__namespace.useCallback(async ({ collectionType, model, documentId, params }, data)=>{
1872
1914
  try {
1873
- trackUsage('willPublishEntry');
1915
+ trackUsage('willPublishEntry', {
1916
+ documentId
1917
+ });
1874
1918
  const res = await publishDocument({
1875
1919
  collectionType,
1876
1920
  model,
@@ -1887,7 +1931,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1887
1931
  error: res.error
1888
1932
  };
1889
1933
  }
1890
- trackUsage('didPublishEntry');
1934
+ trackUsage('didPublishEntry', {
1935
+ documentId
1936
+ });
1891
1937
  toggleNotification({
1892
1938
  type: 'success',
1893
1939
  message: formatMessage({
@@ -1974,7 +2020,10 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1974
2020
  error: res.error
1975
2021
  };
1976
2022
  }
1977
- trackUsage('didEditEntry', trackerProperty);
2023
+ trackUsage('didEditEntry', {
2024
+ ...trackerProperty,
2025
+ documentId: res.data.data.documentId
2026
+ });
1978
2027
  toggleNotification({
1979
2028
  type: 'success',
1980
2029
  message: formatMessage({
@@ -2110,7 +2159,10 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
2110
2159
  error: res.error
2111
2160
  };
2112
2161
  }
2113
- trackUsage('didCreateEntry', trackerProperty);
2162
+ trackUsage('didCreateEntry', {
2163
+ ...trackerProperty,
2164
+ documentId: res.data.data.documentId
2165
+ });
2114
2166
  toggleNotification({
2115
2167
  type: 'success',
2116
2168
  message: formatMessage({
@@ -2253,7 +2305,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
2253
2305
  };
2254
2306
  };
2255
2307
 
2256
- const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./History-Cv3uNjvV.js'); }).then((mod)=>({
2308
+ const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./History-BsZCxc7e.js'); }).then((mod)=>({
2257
2309
  default: mod.ProtectedHistoryPage
2258
2310
  })));
2259
2311
  /**
@@ -2269,7 +2321,7 @@ const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.res
2269
2321
  }
2270
2322
  ];
2271
2323
 
2272
- const ProtectedPreviewPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./Preview-DlRltQbE.js'); }).then((mod)=>({
2324
+ const ProtectedPreviewPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./Preview-CP4m2RBm.js'); }).then((mod)=>({
2273
2325
  default: mod.ProtectedPreviewPage
2274
2326
  })));
2275
2327
  const routes$1 = [
@@ -2283,25 +2335,25 @@ const routes$1 = [
2283
2335
  }
2284
2336
  ];
2285
2337
 
2286
- const ProtectedEditViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditViewPage-CNacGhk_.js'); }).then((mod)=>({
2338
+ const ProtectedEditViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditViewPage-DjB2aEuN.js'); }).then((mod)=>({
2287
2339
  default: mod.ProtectedEditViewPage
2288
2340
  })));
2289
- const ProtectedListViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListViewPage-BCmGmK7N.js'); }).then((mod)=>({
2341
+ const ProtectedListViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListViewPage-gsJS3ulI.js'); }).then((mod)=>({
2290
2342
  default: mod.ProtectedListViewPage
2291
2343
  })));
2292
- const ProtectedListConfiguration = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListConfigurationPage-Cj1tt01r.js'); }).then((mod)=>({
2344
+ const ProtectedListConfiguration = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListConfigurationPage-dHbA6tve.js'); }).then((mod)=>({
2293
2345
  default: mod.ProtectedListConfiguration
2294
2346
  })));
2295
- const ProtectedEditConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditConfigurationPage-BW5fpvkO.js'); }).then((mod)=>({
2347
+ const ProtectedEditConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditConfigurationPage-BazMqkY5.js'); }).then((mod)=>({
2296
2348
  default: mod.ProtectedEditConfigurationPage
2297
2349
  })));
2298
- const ProtectedComponentConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ComponentConfigurationPage-CDKJ1saA.js'); }).then((mod)=>({
2350
+ const ProtectedComponentConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ComponentConfigurationPage-BWB_urBW.js'); }).then((mod)=>({
2299
2351
  default: mod.ProtectedComponentConfigurationPage
2300
2352
  })));
2301
- const NoPermissions = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoPermissionsPage-BYEkhBnk.js'); }).then((mod)=>({
2353
+ const NoPermissions = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoPermissionsPage-BmE5T_Mq.js'); }).then((mod)=>({
2302
2354
  default: mod.NoPermissions
2303
2355
  })));
2304
- const NoContentType = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoContentTypePage-DpvfQfhU.js'); }).then((mod)=>({
2356
+ const NoContentType = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoContentTypePage-BD-VEn6M.js'); }).then((mod)=>({
2305
2357
  default: mod.NoContentType
2306
2358
  })));
2307
2359
  const CollectionTypePages = ()=>{
@@ -2688,8 +2740,8 @@ const transformData = (data)=>{
2688
2740
  };
2689
2741
  /* -------------------------------------------------------------------------------------------------
2690
2742
  * DocumentActionComponents
2691
- * -----------------------------------------------------------------------------------------------*/ const PublishAction$1 = ({ activeTab, documentId, model, collectionType, meta, document })=>{
2692
- const { schema } = useDoc();
2743
+ * -----------------------------------------------------------------------------------------------*/ const PublishAction$1 = ({ activeTab, documentId, model, collectionType, meta, document, onPreview })=>{
2744
+ const schema = useDocumentContext('PublishAction', (state)=>state.document.schema);
2693
2745
  const navigate = reactRouterDom.useNavigate();
2694
2746
  const { toggleNotification } = strapiAdmin.useNotification();
2695
2747
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
@@ -2712,6 +2764,8 @@ const transformData = (data)=>{
2712
2764
  const validate = strapiAdmin.useForm('PublishAction', (state)=>state.validate);
2713
2765
  const setErrors = strapiAdmin.useForm('PublishAction', (state)=>state.setErrors);
2714
2766
  const formValues = strapiAdmin.useForm('PublishAction', ({ values })=>values);
2767
+ const rootDocumentMeta = useDocumentContext('PublishAction', (state)=>state.rootDocumentMeta);
2768
+ const currentDocumentMeta = useDocumentContext('PublishAction', (state)=>state.meta);
2715
2769
  React__namespace.useEffect(()=>{
2716
2770
  if (isErrorDraftRelations) {
2717
2771
  toggleNotification({
@@ -2814,11 +2868,12 @@ const transformData = (data)=>{
2814
2868
  });
2815
2869
  return;
2816
2870
  }
2871
+ const isPublishingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
2817
2872
  const res = await publish({
2818
2873
  collectionType,
2819
2874
  model,
2820
2875
  documentId,
2821
- params
2876
+ params: isPublishingRelation ? currentDocumentMeta.params : params
2822
2877
  }, transformData(formValues));
2823
2878
  if ('data' in res && collectionType !== SINGLE_TYPES) {
2824
2879
  /**
@@ -2834,6 +2889,9 @@ const transformData = (data)=>{
2834
2889
  }
2835
2890
  } finally{
2836
2891
  setSubmitting(false);
2892
+ if (onPreview) {
2893
+ onPreview();
2894
+ }
2837
2895
  }
2838
2896
  };
2839
2897
  const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;
@@ -2845,7 +2903,8 @@ const transformData = (data)=>{
2845
2903
  loading: isLoading,
2846
2904
  position: [
2847
2905
  'panel',
2848
- 'preview'
2906
+ 'preview',
2907
+ 'relation-modal'
2849
2908
  ],
2850
2909
  /**
2851
2910
  * Disabled when:
@@ -2886,9 +2945,10 @@ const transformData = (data)=>{
2886
2945
  PublishAction$1.type = 'publish';
2887
2946
  PublishAction$1.position = [
2888
2947
  'panel',
2889
- 'preview'
2948
+ 'preview',
2949
+ 'relation-modal'
2890
2950
  ];
2891
- const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2951
+ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview })=>{
2892
2952
  const navigate = reactRouterDom.useNavigate();
2893
2953
  const { toggleNotification } = strapiAdmin.useNotification();
2894
2954
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
@@ -2907,6 +2967,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2907
2967
  const validate = strapiAdmin.useForm('UpdateAction', (state)=>state.validate);
2908
2968
  const setErrors = strapiAdmin.useForm('UpdateAction', (state)=>state.setErrors);
2909
2969
  const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
2970
+ const rootDocumentMeta = useDocumentContext('UpdateAction', (state)=>state.rootDocumentMeta);
2971
+ const currentDocumentMeta = useDocumentContext('UpdateAction', (state)=>state.meta);
2910
2972
  const handleUpdate = React__namespace.useCallback(async ()=>{
2911
2973
  setSubmitting(true);
2912
2974
  try {
@@ -2943,11 +3005,12 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2943
3005
  setErrors(formatValidationErrors(res.error));
2944
3006
  }
2945
3007
  } else if (documentId || collectionType === SINGLE_TYPES) {
3008
+ const isEditingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
2946
3009
  const res = await update({
2947
3010
  collectionType,
2948
3011
  model,
2949
3012
  documentId,
2950
- params
3013
+ params: isEditingRelation ? currentDocumentMeta.params : params
2951
3014
  }, transformData(document));
2952
3015
  if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
2953
3016
  setErrors(formatValidationErrors(res.error));
@@ -2973,6 +3036,9 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2973
3036
  }
2974
3037
  } finally{
2975
3038
  setSubmitting(false);
3039
+ if (onPreview) {
3040
+ onPreview();
3041
+ }
2976
3042
  }
2977
3043
  }, [
2978
3044
  clone,
@@ -3026,14 +3092,16 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
3026
3092
  onClick: handleUpdate,
3027
3093
  position: [
3028
3094
  'panel',
3029
- 'preview'
3095
+ 'preview',
3096
+ 'relation-modal'
3030
3097
  ]
3031
3098
  };
3032
3099
  };
3033
3100
  UpdateAction.type = 'update';
3034
3101
  UpdateAction.position = [
3035
3102
  'panel',
3036
- 'preview'
3103
+ 'preview',
3104
+ 'relation-modal'
3037
3105
  ];
3038
3106
  const UNPUBLISH_DRAFT_OPTIONS = {
3039
3107
  KEEP: 'keep',
@@ -3326,12 +3394,11 @@ const capitalise = (str)=>str.charAt(0).toUpperCase() + str.slice(1);
3326
3394
  size: size,
3327
3395
  variant: statusVariant,
3328
3396
  role: "status",
3329
- "aria-labelledby": "document-status",
3397
+ "aria-label": status,
3330
3398
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
3331
3399
  tag: "span",
3332
3400
  variant: "omega",
3333
3401
  fontWeight: "bold",
3334
- id: "document-status",
3335
3402
  children: formatMessage({
3336
3403
  id: `content-manager.containers.List.${status}`,
3337
3404
  defaultMessage: capitalise(status)
@@ -5310,7 +5377,7 @@ function __variableDynamicImportRuntime1__(path) {
5310
5377
  case './translations/ca.json': return Promise.resolve().then(function () { return require('./ca-ClDTvatJ.js'); });
5311
5378
  case './translations/cs.json': return Promise.resolve().then(function () { return require('./cs-BJFxwIWj.js'); });
5312
5379
  case './translations/de.json': return Promise.resolve().then(function () { return require('./de-CbImAUA5.js'); });
5313
- case './translations/en.json': return Promise.resolve().then(function () { return require('./en-CH__IC8g.js'); });
5380
+ case './translations/en.json': return Promise.resolve().then(function () { return require('./en-G976DLsg.js'); });
5314
5381
  case './translations/es.json': return Promise.resolve().then(function () { return require('./es-C8vLuvZL.js'); });
5315
5382
  case './translations/eu.json': return Promise.resolve().then(function () { return require('./eu-BJW3AvXu.js'); });
5316
5383
  case './translations/fr.json': return Promise.resolve().then(function () { return require('./fr-gQSilC7w.js'); });
@@ -5333,7 +5400,7 @@ function __variableDynamicImportRuntime1__(path) {
5333
5400
  case './translations/sv.json': return Promise.resolve().then(function () { return require('./sv-BstBC1Yp.js'); });
5334
5401
  case './translations/th.json': return Promise.resolve().then(function () { return require('./th-lXoOCqPC.js'); });
5335
5402
  case './translations/tr.json': return Promise.resolve().then(function () { return require('./tr-CkS6sLIE.js'); });
5336
- case './translations/uk.json': return Promise.resolve().then(function () { return require('./uk-B24MoTVg.js'); });
5403
+ case './translations/uk.json': return Promise.resolve().then(function () { return require('./uk-DB6OgySY.js'); });
5337
5404
  case './translations/vi.json': return Promise.resolve().then(function () { return require('./vi-BGr1X_HZ.js'); });
5338
5405
  case './translations/zh-Hans.json': return Promise.resolve().then(function () { return require('./zh-Hans-JVK9x7xr.js'); });
5339
5406
  case './translations/zh.json': return Promise.resolve().then(function () { return require('./zh-DwFu_Kfj.js'); });
@@ -5364,7 +5431,7 @@ var index = {
5364
5431
  app.router.addRoute({
5365
5432
  path: 'content-manager/*',
5366
5433
  lazy: async ()=>{
5367
- const { Layout } = await Promise.resolve().then(function () { return require('./layout-CajJum-G.js'); });
5434
+ const { Layout } = await Promise.resolve().then(function () { return require('./layout-XA97mHoN.js'); });
5368
5435
  return {
5369
5436
  Component: Layout
5370
5437
  };
@@ -5406,6 +5473,7 @@ exports.COLLECTION_TYPES = COLLECTION_TYPES;
5406
5473
  exports.CREATOR_FIELDS = CREATOR_FIELDS;
5407
5474
  exports.DEFAULT_SETTINGS = DEFAULT_SETTINGS;
5408
5475
  exports.DocumentActionButton = DocumentActionButton;
5476
+ exports.DocumentContextProvider = DocumentContextProvider;
5409
5477
  exports.DocumentRBAC = DocumentRBAC;
5410
5478
  exports.DocumentStatus = DocumentStatus;
5411
5479
  exports.HOOKS = HOOKS;
@@ -5439,6 +5507,7 @@ exports.useDoc = useDoc;
5439
5507
  exports.useDocLayout = useDocLayout;
5440
5508
  exports.useDocument = useDocument;
5441
5509
  exports.useDocumentActions = useDocumentActions;
5510
+ exports.useDocumentContext = useDocumentContext;
5442
5511
  exports.useDocumentLayout = useDocumentLayout;
5443
5512
  exports.useDocumentRBAC = useDocumentRBAC;
5444
5513
  exports.useGetAllContentTypeSettingsQuery = useGetAllContentTypeSettingsQuery;
@@ -5446,5 +5515,6 @@ exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
5446
5515
  exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
5447
5516
  exports.useGetInitialDataQuery = useGetInitialDataQuery;
5448
5517
  exports.useGetPreviewUrlQuery = useGetPreviewUrlQuery;
5518
+ exports.useLazyGetDocumentQuery = useLazyGetDocumentQuery;
5449
5519
  exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
5450
- //# sourceMappingURL=index-CISU19oJ.js.map
5520
+ //# sourceMappingURL=index-CFa6xmgK.js.map