@strapi/content-manager 0.0.0-experimental.35644b9b8cc9cb7d3104ab14464d2de4f1bd19ed → 0.0.0-experimental.36f6fd69b4f935991d26f27957949ec71f187528

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 (259) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +34 -30
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +36 -32
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/history/components/VersionContent.js +24 -3
  10. package/dist/admin/history/components/VersionContent.js.map +1 -1
  11. package/dist/admin/history/components/VersionContent.mjs +25 -4
  12. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionHeader.js +6 -0
  14. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  15. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  16. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentActions.js +7 -3
  18. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  19. package/dist/admin/hooks/useDocumentActions.mjs +7 -3
  20. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  21. package/dist/admin/index.js +1 -3
  22. package/dist/admin/index.js.map +1 -1
  23. package/dist/admin/pages/EditView/EditViewPage.js +92 -75
  24. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  25. package/dist/admin/pages/EditView/EditViewPage.mjs +93 -76
  26. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/DocumentActions.js +115 -88
  28. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/DocumentActions.mjs +116 -89
  30. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  34. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  36. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  38. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  44. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  46. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -2
  48. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -3
  50. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
  52. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
  54. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +118 -101
  56. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +118 -101
  58. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +155 -99
  60. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +158 -102
  62. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  68. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  70. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  72. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  74. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  76. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  78. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/utils/data.js +103 -0
  80. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  81. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  82. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  83. package/dist/admin/pages/ListView/ListViewPage.js +77 -0
  84. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  85. package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
  86. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  87. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  88. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  89. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  90. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  91. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  92. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  93. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  94. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  95. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  96. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  97. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  98. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  99. package/dist/admin/services/documents.js +2 -2
  100. package/dist/admin/services/documents.js.map +1 -1
  101. package/dist/admin/services/documents.mjs +2 -2
  102. package/dist/admin/services/documents.mjs.map +1 -1
  103. package/dist/admin/services/homepage.js +9 -5
  104. package/dist/admin/services/homepage.js.map +1 -1
  105. package/dist/admin/services/homepage.mjs +9 -5
  106. package/dist/admin/services/homepage.mjs.map +1 -1
  107. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  108. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  109. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +3 -0
  110. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  111. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  112. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  113. package/dist/admin/src/services/documents.d.ts +7 -1
  114. package/dist/admin/src/utils/validation.d.ts +1 -0
  115. package/dist/admin/translations/en.json.js +1 -0
  116. package/dist/admin/translations/en.json.js.map +1 -1
  117. package/dist/admin/translations/en.json.mjs +1 -0
  118. package/dist/admin/translations/en.json.mjs.map +1 -1
  119. package/dist/admin/translations/fr.json.js +6 -1
  120. package/dist/admin/translations/fr.json.js.map +1 -1
  121. package/dist/admin/translations/fr.json.mjs +6 -1
  122. package/dist/admin/translations/fr.json.mjs.map +1 -1
  123. package/dist/admin/translations/ru.json.js +235 -226
  124. package/dist/admin/translations/ru.json.js.map +1 -1
  125. package/dist/admin/translations/ru.json.mjs +230 -226
  126. package/dist/admin/translations/ru.json.mjs.map +1 -1
  127. package/dist/admin/utils/validation.js +17 -6
  128. package/dist/admin/utils/validation.js.map +1 -1
  129. package/dist/admin/utils/validation.mjs +17 -6
  130. package/dist/admin/utils/validation.mjs.map +1 -1
  131. package/dist/server/controllers/content-types.js +11 -1
  132. package/dist/server/controllers/content-types.js.map +1 -1
  133. package/dist/server/controllers/content-types.mjs +11 -1
  134. package/dist/server/controllers/content-types.mjs.map +1 -1
  135. package/dist/server/controllers/index.js +3 -1
  136. package/dist/server/controllers/index.js.map +1 -1
  137. package/dist/server/controllers/index.mjs +3 -1
  138. package/dist/server/controllers/index.mjs.map +1 -1
  139. package/dist/server/controllers/relations.js +2 -2
  140. package/dist/server/controllers/relations.js.map +1 -1
  141. package/dist/server/controllers/relations.mjs +2 -2
  142. package/dist/server/controllers/relations.mjs.map +1 -1
  143. package/dist/server/controllers/validation/index.js +14 -2
  144. package/dist/server/controllers/validation/index.js.map +1 -1
  145. package/dist/server/controllers/validation/index.mjs +14 -2
  146. package/dist/server/controllers/validation/index.mjs.map +1 -1
  147. package/dist/server/history/services/lifecycles.js +3 -0
  148. package/dist/server/history/services/lifecycles.js.map +1 -1
  149. package/dist/server/history/services/lifecycles.mjs +3 -0
  150. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  151. package/dist/server/homepage/controllers/homepage.js +57 -0
  152. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  153. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  154. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  155. package/dist/server/homepage/controllers/index.js +10 -0
  156. package/dist/server/homepage/controllers/index.js.map +1 -0
  157. package/dist/server/homepage/controllers/index.mjs +8 -0
  158. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  159. package/dist/server/homepage/index.js +14 -0
  160. package/dist/server/homepage/index.js.map +1 -0
  161. package/dist/server/homepage/index.mjs +12 -0
  162. package/dist/server/homepage/index.mjs.map +1 -0
  163. package/dist/server/homepage/routes/homepage.js +25 -0
  164. package/dist/server/homepage/routes/homepage.js.map +1 -0
  165. package/dist/server/homepage/routes/homepage.mjs +23 -0
  166. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  167. package/dist/server/homepage/routes/index.js +13 -0
  168. package/dist/server/homepage/routes/index.js.map +1 -0
  169. package/dist/server/homepage/routes/index.mjs +11 -0
  170. package/dist/server/homepage/routes/index.mjs.map +1 -0
  171. package/dist/server/homepage/services/homepage.js +157 -0
  172. package/dist/server/homepage/services/homepage.js.map +1 -0
  173. package/dist/server/homepage/services/homepage.mjs +155 -0
  174. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  175. package/dist/server/homepage/services/index.js +10 -0
  176. package/dist/server/homepage/services/index.js.map +1 -0
  177. package/dist/server/homepage/services/index.mjs +8 -0
  178. package/dist/server/homepage/services/index.mjs.map +1 -0
  179. package/dist/server/preview/services/preview.js +0 -1
  180. package/dist/server/preview/services/preview.js.map +1 -1
  181. package/dist/server/preview/services/preview.mjs +0 -1
  182. package/dist/server/preview/services/preview.mjs.map +1 -1
  183. package/dist/server/routes/index.js +3 -1
  184. package/dist/server/routes/index.js.map +1 -1
  185. package/dist/server/routes/index.mjs +3 -1
  186. package/dist/server/routes/index.mjs.map +1 -1
  187. package/dist/server/services/data-mapper.js +4 -1
  188. package/dist/server/services/data-mapper.js.map +1 -1
  189. package/dist/server/services/data-mapper.mjs +4 -1
  190. package/dist/server/services/data-mapper.mjs.map +1 -1
  191. package/dist/server/services/document-manager.js +8 -1
  192. package/dist/server/services/document-manager.js.map +1 -1
  193. package/dist/server/services/document-manager.mjs +8 -1
  194. package/dist/server/services/document-manager.mjs.map +1 -1
  195. package/dist/server/services/document-metadata.js +3 -1
  196. package/dist/server/services/document-metadata.js.map +1 -1
  197. package/dist/server/services/document-metadata.mjs +3 -1
  198. package/dist/server/services/document-metadata.mjs.map +1 -1
  199. package/dist/server/services/index.js +3 -1
  200. package/dist/server/services/index.js.map +1 -1
  201. package/dist/server/services/index.mjs +3 -1
  202. package/dist/server/services/index.mjs.map +1 -1
  203. package/dist/server/services/utils/configuration/attributes.js +1 -1
  204. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  205. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  206. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  207. package/dist/server/services/utils/configuration/layouts.js +1 -1
  208. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  209. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  210. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  211. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  212. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  213. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  214. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  215. package/dist/server/services/utils/populate.js +11 -0
  216. package/dist/server/services/utils/populate.js.map +1 -1
  217. package/dist/server/services/utils/populate.mjs +11 -0
  218. package/dist/server/services/utils/populate.mjs.map +1 -1
  219. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  220. package/dist/server/src/controllers/index.d.ts.map +1 -1
  221. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  222. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  223. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  224. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  225. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  226. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  227. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  228. package/dist/server/src/homepage/index.d.ts +16 -0
  229. package/dist/server/src/homepage/index.d.ts.map +1 -0
  230. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  231. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  232. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  233. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  234. package/dist/server/src/{services → homepage/services}/homepage.d.ts +1 -1
  235. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  236. package/dist/server/src/homepage/services/index.d.ts +9 -0
  237. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  238. package/dist/server/src/index.d.ts +8 -0
  239. package/dist/server/src/index.d.ts.map +1 -1
  240. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  241. package/dist/server/src/routes/index.d.ts +1 -0
  242. package/dist/server/src/routes/index.d.ts.map +1 -1
  243. package/dist/server/src/services/data-mapper.d.ts +1 -0
  244. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  245. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  246. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  247. package/dist/server/src/services/index.d.ts +7 -0
  248. package/dist/server/src/services/index.d.ts.map +1 -1
  249. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  250. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  251. package/dist/shared/contracts/collection-types.d.ts +0 -1
  252. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  253. package/package.json +11 -8
  254. package/dist/admin/src/utils/mergeObject.d.ts +0 -11
  255. package/dist/admin/utils/mergeObject.js +0 -90
  256. package/dist/admin/utils/mergeObject.js.map +0 -1
  257. package/dist/admin/utils/mergeObject.mjs +0 -87
  258. package/dist/admin/utils/mergeObject.mjs.map +0 -1
  259. package/dist/server/src/services/homepage.d.ts.map +0 -1
@@ -1,12 +1,14 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { useNotification, useAPIErrorHandler, useQueryParams, useForm } from '@strapi/admin/strapi-admin';
4
- import { Menu, Flex, Button, VisuallyHidden, Dialog, Modal, Typography, Radio } from '@strapi/design-system';
4
+ import { Flex, Button, Menu, VisuallyHidden, Dialog, Modal, Typography, Radio } from '@strapi/design-system';
5
5
  import { More, Cross, WarningCircle } from '@strapi/icons';
6
6
  import mapValues from 'lodash/fp/mapValues';
7
+ import get from 'lodash/get';
8
+ import merge from 'lodash/merge';
9
+ import set from 'lodash/set';
7
10
  import { useIntl } from 'react-intl';
8
11
  import { useNavigate, useMatch, useParams } from 'react-router-dom';
9
- import { styled } from 'styled-components';
10
12
  import { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes.mjs';
11
13
  import { SINGLE_TYPES } from '../../../constants/collections.mjs';
12
14
  import { useDocumentRBAC } from '../../../features/DocumentRBAC.mjs';
@@ -17,10 +19,42 @@ import { usePreviewContext } from '../../../preview/pages/Preview.mjs';
17
19
  import { LIST_PATH, CLONE_PATH } from '../../../router.mjs';
18
20
  import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery, useUpdateDocumentMutation } from '../../../services/documents.mjs';
19
21
  import { isBaseQueryError, buildValidParams } from '../../../utils/api.mjs';
20
- import { stringToObject, deepMerge } from '../../../utils/mergeObject.mjs';
21
22
  import { getTranslation } from '../../../utils/translations.mjs';
23
+ import { handleInvisibleAttributes } from '../utils/data.mjs';
22
24
  import { useRelationModal } from './FormInputs/Relations/RelationModal.mjs';
23
25
 
26
+ const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
27
+ /*
28
+ * Check if the fieldToConnect is already present in the parentDataToUpdate.
29
+ * This happens in particular when in the parentDocument you have created
30
+ * a new component without saving.
31
+ */ const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);
32
+ const fieldToConnectPath = isFieldPresent ? fieldToConnect : fieldToConnect.split('.').slice(0, -1).join('.');
33
+ const fieldToConnectValue = isFieldPresent ? {
34
+ connect: [
35
+ {
36
+ id: data.documentId,
37
+ documentId: data.documentId,
38
+ locale: data.locale
39
+ }
40
+ ]
41
+ } : {
42
+ [fieldToConnect.split('.').pop()]: {
43
+ connect: [
44
+ {
45
+ id: data.documentId,
46
+ documentId: data.documentId,
47
+ locale: data.locale
48
+ }
49
+ ],
50
+ disconnect: []
51
+ },
52
+ // In case the object was not present you need to pass the componentUID of the parent document
53
+ __component: fieldToConnectUID
54
+ };
55
+ const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);
56
+ return merge(parentDataToUpdate, objectToConnect);
57
+ };
24
58
  const DocumentActions = ({ actions })=>{
25
59
  const { formatMessage } = useIntl();
26
60
  const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
@@ -119,11 +153,6 @@ const DocumentActionButton = (action)=>{
119
153
  ]
120
154
  });
121
155
  };
122
- const MenuItem = styled(Menu.Item)`
123
- &:hover {
124
- background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
125
- }
126
- `;
127
156
  const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
128
157
  const [isOpen, setIsOpen] = React.useState(false);
129
158
  const [dialogId, setDialogId] = React.useState(null);
@@ -185,27 +214,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
185
214
  popoverPlacement: "bottom-end",
186
215
  children: [
187
216
  actions.map((action)=>{
188
- return /*#__PURE__*/ jsx(MenuItem, {
217
+ return /*#__PURE__*/ jsx(Menu.Item, {
189
218
  disabled: action.disabled,
190
219
  /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */ onSelect: handleClick(action),
191
220
  display: "block",
192
- isVariantDanger: action.variant === 'danger',
193
- isDisabled: action.disabled,
221
+ variant: action.variant === 'danger' ? action.variant : 'default',
222
+ startIcon: action.icon,
194
223
  children: /*#__PURE__*/ jsx(Flex, {
195
224
  justifyContent: "space-between",
196
225
  gap: 4,
197
- children: /*#__PURE__*/ jsxs(Flex, {
198
- color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
226
+ children: /*#__PURE__*/ jsx(Flex, {
199
227
  gap: 2,
200
228
  tag: "span",
201
- children: [
202
- /*#__PURE__*/ jsx(Flex, {
203
- tag: "span",
204
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
205
- children: action.icon
206
- }),
207
- action.label
208
- ]
229
+ children: action.label
209
230
  })
210
231
  })
211
232
  }, action.id);
@@ -233,30 +254,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
233
254
  ]
234
255
  });
235
256
  };
236
- const convertActionVariantToColor = (variant = 'secondary')=>{
237
- switch(variant){
238
- case 'danger':
239
- return 'danger600';
240
- case 'secondary':
241
- return undefined;
242
- case 'success':
243
- return 'success600';
244
- default:
245
- return 'primary600';
246
- }
247
- };
248
- const convertActionVariantToIconColor = (variant = 'secondary')=>{
249
- switch(variant){
250
- case 'danger':
251
- return 'danger600';
252
- case 'secondary':
253
- return 'neutral500';
254
- case 'success':
255
- return 'success600';
256
- default:
257
- return 'primary600';
258
- }
259
- };
260
257
  const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
261
258
  const { formatMessage } = useIntl();
262
259
  const handleClose = async ()=>{
@@ -362,7 +359,10 @@ const transformData = (data)=>{
362
359
  const isCloning = useMatch(CLONE_PATH) !== null;
363
360
  const { id } = useParams();
364
361
  const { formatMessage } = useIntl();
365
- const canPublish = useDocumentRBAC('PublishAction', ({ canPublish })=>canPublish);
362
+ const { canPublish, canReadFields } = useDocumentRBAC('PublishAction', ({ canPublish, canReadFields })=>({
363
+ canPublish,
364
+ canReadFields
365
+ }));
366
366
  const { publish, isLoading } = useDocumentActions();
367
367
  const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
368
368
  const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = useLazyGetDraftRelationCountQuery();
@@ -376,11 +376,13 @@ const transformData = (data)=>{
376
376
  const setErrors = useForm('PublishAction', (state)=>state.setErrors);
377
377
  const formValues = useForm('PublishAction', ({ values })=>values);
378
378
  const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
379
+ const { currentDocument: { components } } = useDocumentContext('PublishAction');
379
380
  // need to discriminate if the publish is coming from a relation modal or in the edit view
380
381
  const relationContext = useRelationModal('PublishAction', ()=>true, false);
381
382
  const fromRelationModal = relationContext != undefined;
382
383
  const dispatch = useRelationModal('PublishAction', (state)=>state.dispatch);
383
384
  const fieldToConnect = useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
385
+ const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
384
386
  const documentHistory = useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
385
387
  const rootDocumentMeta = useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
386
388
  const { currentDocumentMeta } = useDocumentContext('PublishAction');
@@ -478,6 +480,7 @@ const transformData = (data)=>{
478
480
  }, {
479
481
  skip: !parentDocumentMetaToUpdate
480
482
  });
483
+ const { getInitialFormValues } = useDoc();
481
484
  const isDocumentPublished = (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
482
485
  if (!schema?.options?.draftAndPublish) {
483
486
  return null;
@@ -489,21 +492,39 @@ const transformData = (data)=>{
489
492
  status: 'published'
490
493
  });
491
494
  if (errors) {
492
- toggleNotification({
493
- type: 'danger',
494
- message: formatMessage({
495
- id: 'content-manager.validation.error',
496
- defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
497
- })
495
+ const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName)=>{
496
+ const attribute = schema.attributes[fieldName];
497
+ return attribute?.required && !(canReadFields ?? []).includes(fieldName);
498
498
  });
499
+ if (hasUnreadableRequiredField) {
500
+ toggleNotification({
501
+ type: 'danger',
502
+ message: formatMessage({
503
+ id: 'content-manager.validation.error.unreadable-required-field',
504
+ defaultMessage: 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.'
505
+ })
506
+ });
507
+ } else {
508
+ toggleNotification({
509
+ type: 'danger',
510
+ message: formatMessage({
511
+ id: 'content-manager.validation.error',
512
+ defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
513
+ })
514
+ });
515
+ }
499
516
  return;
500
517
  }
518
+ const { data } = handleInvisibleAttributes(transformData(formValues), {
519
+ schema,
520
+ components
521
+ });
501
522
  const res = await publish({
502
523
  collectionType,
503
524
  model,
504
525
  documentId,
505
526
  params: currentDocumentMeta.params
506
- }, transformData(formValues));
527
+ }, data);
507
528
  // Reset form if successful
508
529
  if ('data' in res) {
509
530
  resetForm();
@@ -523,30 +544,21 @@ const transformData = (data)=>{
523
544
  model,
524
545
  params: currentDocumentMeta.params
525
546
  };
526
- // Update, if needed, the parent relation with the newly published document
527
- // check if in history we have the parent relation otherwise use the rootDocument
528
- if (fieldToConnect && documentHistory && parentDocumentMetaToUpdate.documentId) {
529
- const parentDataToUpdate = parentDocumentData.getInitialFormValues();
547
+ /*
548
+ * Update, if needed, the parent relation with the newly published document.
549
+ * Check if in history we have the parent relation otherwise use the
550
+ * rootDocument
551
+ */ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)) {
552
+ const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
530
553
  const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
531
- const objectToConnect = stringToObject(fieldToConnect, {
532
- connect: [
533
- {
534
- id: res.data.documentId,
535
- documentId: res.data.documentId,
536
- locale: res.data.locale
537
- }
538
- ]
539
- });
540
- const dataToUpdate = deepMerge(parentDataToUpdate, objectToConnect);
554
+ const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
541
555
  try {
542
556
  const updateRes = await updateDocumentMutation({
543
557
  collectionType: metaDocumentToUpdate.collectionType,
544
558
  model: metaDocumentToUpdate.model,
545
- documentId: metaDocumentToUpdate.documentId,
559
+ documentId: metaDocumentToUpdate.collectionType !== SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
546
560
  params: metaDocumentToUpdate.params,
547
- data: {
548
- ...dataToUpdate
549
- }
561
+ data: dataToUpdate
550
562
  });
551
563
  if ('error' in updateRes) {
552
564
  toggleNotification({
@@ -646,11 +658,14 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
646
658
  const isCloning = cloneMatch !== null;
647
659
  const { formatMessage } = useIntl();
648
660
  const { create, update, clone, isLoading } = useDocumentActions();
661
+ const { currentDocument: { components } } = useDocumentContext('UpdateAction');
649
662
  const [{ rawQuery }] = useQueryParams();
650
663
  const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
664
+ const { getInitialFormValues } = useDoc();
651
665
  const isSubmitting = useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
652
666
  const modified = useForm('UpdateAction', ({ modified })=>modified);
653
667
  const setSubmitting = useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
668
+ const initialValues = useForm('UpdateAction', ({ initialValues })=>initialValues);
654
669
  const document = useForm('UpdateAction', ({ values })=>values);
655
670
  const validate = useForm('UpdateAction', (state)=>state.validate);
656
671
  const setErrors = useForm('UpdateAction', (state)=>state.setErrors);
@@ -658,7 +673,9 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
658
673
  const dispatch = useRelationModal('UpdateAction', (state)=>state.dispatch);
659
674
  // need to discriminate if the update is coming from a relation modal or in the edit view
660
675
  const relationContext = useRelationModal('UpdateAction', ()=>true, false);
676
+ const relationalModalSchema = useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
661
677
  const fieldToConnect = useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
678
+ const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
662
679
  const documentHistory = useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
663
680
  const rootDocumentMeta = useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
664
681
  const fromRelationModal = relationContext != undefined;
@@ -674,6 +691,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
674
691
  }, {
675
692
  skip: !parentDocumentMetaToUpdate
676
693
  });
694
+ const { schema } = useDoc();
677
695
  const handleUpdate = React.useCallback(async ()=>{
678
696
  setSubmitting(true);
679
697
  try {
@@ -710,22 +728,32 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
710
728
  setErrors(formatValidationErrors(res.error));
711
729
  }
712
730
  } else if (documentId || collectionType === SINGLE_TYPES) {
731
+ const { data } = handleInvisibleAttributes(transformData(document), {
732
+ schema: fromRelationModal ? relationalModalSchema : schema,
733
+ initialValues,
734
+ components
735
+ });
713
736
  const res = await update({
714
737
  collectionType,
715
738
  model,
716
739
  documentId,
717
740
  params: currentDocumentMeta.params
718
- }, transformData(document));
741
+ }, data);
719
742
  if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
720
743
  setErrors(formatValidationErrors(res.error));
721
744
  } else {
722
745
  resetForm();
723
746
  }
724
747
  } else {
748
+ const { data } = handleInvisibleAttributes(transformData(document), {
749
+ schema: fromRelationModal ? relationalModalSchema : schema,
750
+ initialValues,
751
+ components
752
+ });
725
753
  const res = await create({
726
754
  model,
727
755
  params: currentDocumentMeta.params
728
- }, transformData(document));
756
+ }, data);
729
757
  if ('data' in res && collectionType !== SINGLE_TYPES) {
730
758
  if (fromRelationModal) {
731
759
  const createdRelation = {
@@ -734,25 +762,18 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
734
762
  model,
735
763
  params: currentDocumentMeta.params
736
764
  };
737
- // Update, if needed, the parent relation with the newly published document
738
- // check if in history we have the parent relation otherwise use the rootDocument
739
- if (fieldToConnect && documentHistory && parentDocumentMetaToUpdate.documentId) {
740
- const parentDataToUpdate = parentDocumentData.getInitialFormValues();
741
- const objectToConnect = stringToObject(fieldToConnect, {
742
- connect: [
743
- {
744
- id: res.data.documentId,
745
- documentId: res.data.documentId,
746
- locale: res.data.locale
747
- }
748
- ]
749
- });
750
- const dataToUpdate = deepMerge(parentDataToUpdate, objectToConnect);
765
+ /*
766
+ * Update, if needed, the parent relation with the newly published document.
767
+ * Check if in history we have the parent relation otherwise use the
768
+ * rootDocument
769
+ */ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)) {
770
+ const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
771
+ const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
751
772
  try {
752
773
  const updateRes = await updateDocumentMutation({
753
774
  collectionType: parentDocumentMetaToUpdate.collectionType,
754
775
  model: parentDocumentMetaToUpdate.model,
755
- documentId: parentDocumentMetaToUpdate.documentId,
776
+ documentId: parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
756
777
  params: parentDocumentMetaToUpdate.params,
757
778
  data: {
758
779
  ...dataToUpdate
@@ -828,10 +849,16 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
828
849
  documentHistory,
829
850
  parentDocumentMetaToUpdate,
830
851
  dispatch,
852
+ getInitialFormValues,
831
853
  parentDocumentData,
854
+ fieldToConnectUID,
832
855
  updateDocumentMutation,
833
856
  formatAPIError,
834
- onPreview
857
+ onPreview,
858
+ initialValues,
859
+ schema,
860
+ components,
861
+ relationalModalSchema
835
862
  ]);
836
863
  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
837
864
  React.useEffect(()=>{