@strapi/content-manager 0.0.0-next.3dfa46a688dac778822b4cb229acfc1ce41e71ed → 0.0.0-next.3e666b1ad96ac2e82634e548e10ea7c7797a7474

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 (308) 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/components/Widgets.js +161 -0
  10. package/dist/admin/components/Widgets.js.map +1 -0
  11. package/dist/admin/components/Widgets.mjs +158 -0
  12. package/dist/admin/components/Widgets.mjs.map +1 -0
  13. package/dist/admin/content-manager.js.map +1 -1
  14. package/dist/admin/content-manager.mjs.map +1 -1
  15. package/dist/admin/history/components/VersionContent.js +24 -3
  16. package/dist/admin/history/components/VersionContent.js.map +1 -1
  17. package/dist/admin/history/components/VersionContent.mjs +25 -4
  18. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  19. package/dist/admin/history/components/VersionHeader.js +6 -0
  20. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  21. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  22. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  23. package/dist/admin/history/pages/History.js +1 -9
  24. package/dist/admin/history/pages/History.js.map +1 -1
  25. package/dist/admin/history/pages/History.mjs +1 -9
  26. package/dist/admin/history/pages/History.mjs.map +1 -1
  27. package/dist/admin/hooks/useDocumentActions.js +20 -5
  28. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  29. package/dist/admin/hooks/useDocumentActions.mjs +20 -5
  30. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  31. package/dist/admin/hooks/useDocumentContext.js +57 -0
  32. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  33. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  34. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  35. package/dist/admin/index.js +42 -5
  36. package/dist/admin/index.js.map +1 -1
  37. package/dist/admin/index.mjs +42 -3
  38. package/dist/admin/index.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/EditViewPage.js +100 -91
  40. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  41. package/dist/admin/pages/EditView/EditViewPage.mjs +102 -93
  42. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/DocumentActions.js +288 -104
  44. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/DocumentActions.mjs +294 -110
  46. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  58. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  68. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  70. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +17 -4
  72. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +18 -5
  74. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -21
  76. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +25 -23
  78. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  80. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  82. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +506 -345
  84. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +506 -347
  86. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +174 -68
  88. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +178 -72
  90. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  92. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  94. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  98. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  100. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  102. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  104. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  106. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  108. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  110. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -10
  112. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -10
  114. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/utils/data.js +103 -0
  116. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  117. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  118. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  119. package/dist/admin/pages/ListView/ListViewPage.js +77 -0
  120. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  121. package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
  122. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  123. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  124. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  125. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  126. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  127. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  128. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  129. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  130. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  131. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  132. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  133. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  134. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  135. package/dist/admin/preview/components/PreviewHeader.js +3 -6
  136. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  137. package/dist/admin/preview/components/PreviewHeader.mjs +3 -6
  138. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  139. package/dist/admin/preview/pages/Preview.js +94 -102
  140. package/dist/admin/preview/pages/Preview.js.map +1 -1
  141. package/dist/admin/preview/pages/Preview.mjs +94 -102
  142. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  143. package/dist/admin/services/documents.js +2 -2
  144. package/dist/admin/services/documents.js.map +1 -1
  145. package/dist/admin/services/documents.mjs +2 -2
  146. package/dist/admin/services/documents.mjs.map +1 -1
  147. package/dist/admin/services/homepage.js +30 -0
  148. package/dist/admin/services/homepage.js.map +1 -0
  149. package/dist/admin/services/homepage.mjs +28 -0
  150. package/dist/admin/services/homepage.mjs.map +1 -0
  151. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  152. package/dist/admin/src/components/Widgets.d.ts +3 -0
  153. package/dist/admin/src/content-manager.d.ts +0 -3
  154. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  155. package/dist/admin/src/history/pages/History.d.ts +1 -1
  156. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  157. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  158. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  159. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  160. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  161. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  162. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  163. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  164. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  165. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  166. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  167. package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
  168. package/dist/admin/src/services/documents.d.ts +7 -1
  169. package/dist/admin/src/services/homepage.d.ts +5 -0
  170. package/dist/admin/src/utils/validation.d.ts +1 -0
  171. package/dist/admin/translations/en.json.js +3 -1
  172. package/dist/admin/translations/en.json.js.map +1 -1
  173. package/dist/admin/translations/en.json.mjs +3 -1
  174. package/dist/admin/translations/en.json.mjs.map +1 -1
  175. package/dist/admin/translations/ru.json.js +235 -226
  176. package/dist/admin/translations/ru.json.js.map +1 -1
  177. package/dist/admin/translations/ru.json.mjs +230 -226
  178. package/dist/admin/translations/ru.json.mjs.map +1 -1
  179. package/dist/admin/utils/validation.js +17 -6
  180. package/dist/admin/utils/validation.js.map +1 -1
  181. package/dist/admin/utils/validation.mjs +17 -6
  182. package/dist/admin/utils/validation.mjs.map +1 -1
  183. package/dist/server/controllers/content-types.js +11 -1
  184. package/dist/server/controllers/content-types.js.map +1 -1
  185. package/dist/server/controllers/content-types.mjs +11 -1
  186. package/dist/server/controllers/content-types.mjs.map +1 -1
  187. package/dist/server/controllers/index.js +3 -1
  188. package/dist/server/controllers/index.js.map +1 -1
  189. package/dist/server/controllers/index.mjs +3 -1
  190. package/dist/server/controllers/index.mjs.map +1 -1
  191. package/dist/server/controllers/validation/index.js +14 -2
  192. package/dist/server/controllers/validation/index.js.map +1 -1
  193. package/dist/server/controllers/validation/index.mjs +14 -2
  194. package/dist/server/controllers/validation/index.mjs.map +1 -1
  195. package/dist/server/history/services/lifecycles.js +3 -0
  196. package/dist/server/history/services/lifecycles.js.map +1 -1
  197. package/dist/server/history/services/lifecycles.mjs +3 -0
  198. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  199. package/dist/server/homepage/controllers/homepage.js +57 -0
  200. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  201. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  202. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  203. package/dist/server/homepage/controllers/index.js +10 -0
  204. package/dist/server/homepage/controllers/index.js.map +1 -0
  205. package/dist/server/homepage/controllers/index.mjs +8 -0
  206. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  207. package/dist/server/homepage/index.js +14 -0
  208. package/dist/server/homepage/index.js.map +1 -0
  209. package/dist/server/homepage/index.mjs +12 -0
  210. package/dist/server/homepage/index.mjs.map +1 -0
  211. package/dist/server/homepage/routes/homepage.js +25 -0
  212. package/dist/server/homepage/routes/homepage.js.map +1 -0
  213. package/dist/server/homepage/routes/homepage.mjs +23 -0
  214. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  215. package/dist/server/homepage/routes/index.js +13 -0
  216. package/dist/server/homepage/routes/index.js.map +1 -0
  217. package/dist/server/homepage/routes/index.mjs +11 -0
  218. package/dist/server/homepage/routes/index.mjs.map +1 -0
  219. package/dist/server/homepage/services/homepage.js +157 -0
  220. package/dist/server/homepage/services/homepage.js.map +1 -0
  221. package/dist/server/homepage/services/homepage.mjs +155 -0
  222. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  223. package/dist/server/homepage/services/index.js +10 -0
  224. package/dist/server/homepage/services/index.js.map +1 -0
  225. package/dist/server/homepage/services/index.mjs +8 -0
  226. package/dist/server/homepage/services/index.mjs.map +1 -0
  227. package/dist/server/preview/services/preview.js +0 -1
  228. package/dist/server/preview/services/preview.js.map +1 -1
  229. package/dist/server/preview/services/preview.mjs +0 -1
  230. package/dist/server/preview/services/preview.mjs.map +1 -1
  231. package/dist/server/routes/index.js +3 -1
  232. package/dist/server/routes/index.js.map +1 -1
  233. package/dist/server/routes/index.mjs +3 -1
  234. package/dist/server/routes/index.mjs.map +1 -1
  235. package/dist/server/services/data-mapper.js +4 -1
  236. package/dist/server/services/data-mapper.js.map +1 -1
  237. package/dist/server/services/data-mapper.mjs +4 -1
  238. package/dist/server/services/data-mapper.mjs.map +1 -1
  239. package/dist/server/services/document-manager.js +8 -1
  240. package/dist/server/services/document-manager.js.map +1 -1
  241. package/dist/server/services/document-manager.mjs +8 -1
  242. package/dist/server/services/document-manager.mjs.map +1 -1
  243. package/dist/server/services/document-metadata.js +3 -1
  244. package/dist/server/services/document-metadata.js.map +1 -1
  245. package/dist/server/services/document-metadata.mjs +3 -1
  246. package/dist/server/services/document-metadata.mjs.map +1 -1
  247. package/dist/server/services/index.js +3 -1
  248. package/dist/server/services/index.js.map +1 -1
  249. package/dist/server/services/index.mjs +3 -1
  250. package/dist/server/services/index.mjs.map +1 -1
  251. package/dist/server/services/utils/configuration/attributes.js +1 -1
  252. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  253. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  254. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  255. package/dist/server/services/utils/configuration/layouts.js +1 -1
  256. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  257. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  258. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  259. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  260. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  261. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  262. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  263. package/dist/server/services/utils/populate.js +11 -0
  264. package/dist/server/services/utils/populate.js.map +1 -1
  265. package/dist/server/services/utils/populate.mjs +11 -0
  266. package/dist/server/services/utils/populate.mjs.map +1 -1
  267. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  268. package/dist/server/src/controllers/index.d.ts.map +1 -1
  269. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  270. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  271. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  272. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  273. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  274. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  275. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  276. package/dist/server/src/homepage/index.d.ts +16 -0
  277. package/dist/server/src/homepage/index.d.ts.map +1 -0
  278. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  279. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  280. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  281. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  282. package/dist/server/src/homepage/services/homepage.d.ts +11 -0
  283. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  284. package/dist/server/src/homepage/services/index.d.ts +9 -0
  285. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  286. package/dist/server/src/index.d.ts +8 -0
  287. package/dist/server/src/index.d.ts.map +1 -1
  288. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  289. package/dist/server/src/routes/index.d.ts +1 -0
  290. package/dist/server/src/routes/index.d.ts.map +1 -1
  291. package/dist/server/src/services/data-mapper.d.ts +1 -0
  292. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  293. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  294. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  295. package/dist/server/src/services/index.d.ts +7 -0
  296. package/dist/server/src/services/index.d.ts.map +1 -1
  297. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  298. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  299. package/dist/shared/contracts/collection-types.d.ts +0 -1
  300. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  301. package/dist/shared/contracts/homepage.d.ts +25 -0
  302. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  303. package/package.json +12 -9
  304. package/dist/admin/features/DocumentContext.js +0 -71
  305. package/dist/admin/features/DocumentContext.js.map +0 -1
  306. package/dist/admin/features/DocumentContext.mjs +0 -49
  307. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  308. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -1,23 +1,60 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
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, Typography, Radio, Button, VisuallyHidden, Dialog, Modal } from '@strapi/design-system';
5
- import { Cross, WarningCircle, More } from '@strapi/icons';
4
+ import { Flex, Button, Menu, VisuallyHidden, Dialog, Modal, Typography, Radio } from '@strapi/design-system';
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
- import { useDocumentContext } from '../../../features/DocumentContext.mjs';
13
14
  import { useDocumentRBAC } from '../../../features/DocumentRBAC.mjs';
14
- import { useDoc } from '../../../hooks/useDocument.mjs';
15
+ import { useDocument, useDoc } from '../../../hooks/useDocument.mjs';
15
16
  import { useDocumentActions } from '../../../hooks/useDocumentActions.mjs';
17
+ import { useDocumentContext } from '../../../hooks/useDocumentContext.mjs';
18
+ import { usePreviewContext } from '../../../preview/pages/Preview.mjs';
16
19
  import { LIST_PATH, CLONE_PATH } from '../../../router.mjs';
17
- import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery } from '../../../services/documents.mjs';
18
- import { buildValidParams, isBaseQueryError } from '../../../utils/api.mjs';
20
+ import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery, useUpdateDocumentMutation } from '../../../services/documents.mjs';
21
+ import { isBaseQueryError, buildValidParams } from '../../../utils/api.mjs';
19
22
  import { getTranslation } from '../../../utils/translations.mjs';
23
+ import { handleInvisibleAttributes } from '../utils/data.mjs';
24
+ import { useRelationModal } from './FormInputs/Relations/RelationModal.mjs';
20
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
+ };
21
58
  const DocumentActions = ({ actions })=>{
22
59
  const { formatMessage } = useIntl();
23
60
  const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
@@ -116,11 +153,6 @@ const DocumentActionButton = (action)=>{
116
153
  ]
117
154
  });
118
155
  };
119
- const MenuItem = styled(Menu.Item)`
120
- &:hover {
121
- background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
122
- }
123
- `;
124
156
  const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
125
157
  const [isOpen, setIsOpen] = React.useState(false);
126
158
  const [dialogId, setDialogId] = React.useState(null);
@@ -182,27 +214,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
182
214
  popoverPlacement: "bottom-end",
183
215
  children: [
184
216
  actions.map((action)=>{
185
- return /*#__PURE__*/ jsx(MenuItem, {
217
+ return /*#__PURE__*/ jsx(Menu.Item, {
186
218
  disabled: action.disabled,
187
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),
188
220
  display: "block",
189
- isVariantDanger: action.variant === 'danger',
190
- isDisabled: action.disabled,
221
+ variant: action.variant === 'danger' ? action.variant : 'default',
222
+ startIcon: action.icon,
191
223
  children: /*#__PURE__*/ jsx(Flex, {
192
224
  justifyContent: "space-between",
193
225
  gap: 4,
194
- children: /*#__PURE__*/ jsxs(Flex, {
195
- color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
226
+ children: /*#__PURE__*/ jsx(Flex, {
196
227
  gap: 2,
197
228
  tag: "span",
198
- children: [
199
- /*#__PURE__*/ jsx(Flex, {
200
- tag: "span",
201
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
202
- children: action.icon
203
- }),
204
- action.label
205
- ]
229
+ children: action.label
206
230
  })
207
231
  })
208
232
  }, action.id);
@@ -230,30 +254,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
230
254
  ]
231
255
  });
232
256
  };
233
- const convertActionVariantToColor = (variant = 'secondary')=>{
234
- switch(variant){
235
- case 'danger':
236
- return 'danger600';
237
- case 'secondary':
238
- return undefined;
239
- case 'success':
240
- return 'success600';
241
- default:
242
- return 'primary600';
243
- }
244
- };
245
- const convertActionVariantToIconColor = (variant = 'secondary')=>{
246
- switch(variant){
247
- case 'danger':
248
- return 'danger600';
249
- case 'secondary':
250
- return 'neutral500';
251
- case 'success':
252
- return 'success600';
253
- default:
254
- return 'primary600';
255
- }
256
- };
257
257
  const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
258
258
  const { formatMessage } = useIntl();
259
259
  const handleClose = async ()=>{
@@ -350,8 +350,8 @@ const transformData = (data)=>{
350
350
  };
351
351
  /* -------------------------------------------------------------------------------------------------
352
352
  * DocumentActionComponents
353
- * -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document, onPreview, fromPreview = false, fromRelationModal = false })=>{
354
- const schema = useDocumentContext('PublishAction', (state)=>state.document.schema);
353
+ * -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document })=>{
354
+ const { currentDocument: { schema } } = useDocumentContext('PublishAction');
355
355
  const navigate = useNavigate();
356
356
  const { toggleNotification } = useNotification();
357
357
  const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
@@ -359,23 +359,36 @@ const transformData = (data)=>{
359
359
  const isCloning = useMatch(CLONE_PATH) !== null;
360
360
  const { id } = useParams();
361
361
  const { formatMessage } = useIntl();
362
- const canPublish = useDocumentRBAC('PublishAction', ({ canPublish })=>canPublish);
363
- const { publish, isLoading } = useDocumentActions(fromPreview, fromRelationModal);
362
+ const { canPublish, canReadFields } = useDocumentRBAC('PublishAction', ({ canPublish, canReadFields })=>({
363
+ canPublish,
364
+ canReadFields
365
+ }));
366
+ const { publish, isLoading } = useDocumentActions();
367
+ const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
364
368
  const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = useLazyGetDraftRelationCountQuery();
365
369
  const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);
366
370
  const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);
367
- const [{ query, rawQuery }] = useQueryParams();
368
- const params = React.useMemo(()=>buildValidParams(query), [
369
- query
370
- ]);
371
+ const [{ rawQuery }] = useQueryParams();
371
372
  const modified = useForm('PublishAction', ({ modified })=>modified);
372
373
  const setSubmitting = useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
373
374
  const isSubmitting = useForm('PublishAction', ({ isSubmitting })=>isSubmitting);
374
375
  const validate = useForm('PublishAction', (state)=>state.validate);
375
376
  const setErrors = useForm('PublishAction', (state)=>state.setErrors);
376
377
  const formValues = useForm('PublishAction', ({ values })=>values);
377
- const rootDocumentMeta = useDocumentContext('PublishAction', (state)=>state.rootDocumentMeta);
378
- const currentDocumentMeta = useDocumentContext('PublishAction', (state)=>state.meta);
378
+ const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
379
+ const { currentDocument: { components } } = useDocumentContext('PublishAction');
380
+ // need to discriminate if the publish is coming from a relation modal or in the edit view
381
+ const relationContext = useRelationModal('PublishAction', ()=>true, false);
382
+ const fromRelationModal = relationContext != undefined;
383
+ const dispatch = useRelationModal('PublishAction', (state)=>state.dispatch);
384
+ const fieldToConnect = useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
385
+ const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
386
+ const documentHistory = useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
387
+ const rootDocumentMeta = useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
388
+ const { currentDocumentMeta } = useDocumentContext('PublishAction');
389
+ const [updateDocumentMutation] = useUpdateDocumentMutation();
390
+ const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
391
+ const idToPublish = currentDocumentMeta.documentId || id;
379
392
  React.useEffect(()=>{
380
393
  if (isErrorDraftRelations) {
381
394
  toggleNotification({
@@ -439,7 +452,7 @@ const transformData = (data)=>{
439
452
  collectionType,
440
453
  model,
441
454
  documentId,
442
- params
455
+ params: currentDocumentMeta.params
443
456
  });
444
457
  if (error) {
445
458
  throw error;
@@ -456,8 +469,18 @@ const transformData = (data)=>{
456
469
  countDraftRelations,
457
470
  collectionType,
458
471
  model,
459
- params
472
+ currentDocumentMeta.params
460
473
  ]);
474
+ const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
475
+ const parentDocumentData = useDocument({
476
+ documentId: parentDocumentMetaToUpdate?.documentId,
477
+ model: parentDocumentMetaToUpdate?.model,
478
+ collectionType: parentDocumentMetaToUpdate?.collectionType,
479
+ params: parentDocumentMetaToUpdate?.params
480
+ }, {
481
+ skip: !parentDocumentMetaToUpdate
482
+ });
483
+ const { getInitialFormValues } = useDoc();
461
484
  const isDocumentPublished = (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
462
485
  if (!schema?.options?.draftAndPublish) {
463
486
  return null;
@@ -469,30 +492,99 @@ const transformData = (data)=>{
469
492
  status: 'published'
470
493
  });
471
494
  if (errors) {
472
- toggleNotification({
473
- type: 'danger',
474
- message: formatMessage({
475
- id: 'content-manager.validation.error',
476
- defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
477
- })
495
+ const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName)=>{
496
+ const attribute = schema.attributes[fieldName];
497
+ return attribute?.required && !(canReadFields ?? []).includes(fieldName);
478
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
+ }
479
516
  return;
480
517
  }
481
- const isPublishingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
518
+ const { data } = handleInvisibleAttributes(transformData(formValues), {
519
+ schema,
520
+ components
521
+ });
482
522
  const res = await publish({
483
523
  collectionType,
484
524
  model,
485
525
  documentId,
486
- params: isPublishingRelation ? currentDocumentMeta.params : params
487
- }, transformData(formValues));
526
+ params: currentDocumentMeta.params
527
+ }, data);
528
+ // Reset form if successful
529
+ if ('data' in res) {
530
+ resetForm();
531
+ }
488
532
  if ('data' in res && collectionType !== SINGLE_TYPES) {
489
533
  /**
490
534
  * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.
491
- */ if (id === 'create') {
535
+ */ if (idToPublish === 'create' && !fromRelationModal) {
492
536
  navigate({
493
537
  pathname: `../${collectionType}/${model}/${res.data.documentId}`,
494
538
  search: rawQuery
495
539
  });
540
+ } else if (fromRelationModal) {
541
+ const newRelation = {
542
+ documentId: res.data.documentId,
543
+ collectionType,
544
+ model,
545
+ params: currentDocumentMeta.params
546
+ };
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();
553
+ const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
554
+ const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
555
+ try {
556
+ const updateRes = await updateDocumentMutation({
557
+ collectionType: metaDocumentToUpdate.collectionType,
558
+ model: metaDocumentToUpdate.model,
559
+ documentId: metaDocumentToUpdate.collectionType !== SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
560
+ params: metaDocumentToUpdate.params,
561
+ data: dataToUpdate
562
+ });
563
+ if ('error' in updateRes) {
564
+ toggleNotification({
565
+ type: 'danger',
566
+ message: formatAPIError(updateRes.error)
567
+ });
568
+ return;
569
+ }
570
+ } catch (err) {
571
+ toggleNotification({
572
+ type: 'danger',
573
+ message: formatMessage({
574
+ id: 'notification.error',
575
+ defaultMessage: 'An error occurred'
576
+ })
577
+ });
578
+ throw err;
579
+ }
580
+ }
581
+ dispatch({
582
+ type: 'GO_TO_CREATED_RELATION',
583
+ payload: {
584
+ document: newRelation,
585
+ shouldBypassConfirmation: true
586
+ }
587
+ });
496
588
  }
497
589
  } else if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
498
590
  setErrors(formatValidationErrors(res.error));
@@ -558,27 +650,48 @@ PublishAction.position = [
558
650
  'preview',
559
651
  'relation-modal'
560
652
  ];
561
- const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview, fromPreview = false, fromRelationModal = false })=>{
653
+ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
562
654
  const navigate = useNavigate();
563
655
  const { toggleNotification } = useNotification();
564
656
  const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
565
657
  const cloneMatch = useMatch(CLONE_PATH);
566
658
  const isCloning = cloneMatch !== null;
567
659
  const { formatMessage } = useIntl();
568
- const { create, update, clone, isLoading } = useDocumentActions(fromPreview, fromRelationModal);
569
- const [{ query, rawQuery }] = useQueryParams();
570
- const params = React.useMemo(()=>buildValidParams(query), [
571
- query
572
- ]);
660
+ const { create, update, clone, isLoading } = useDocumentActions();
661
+ const { currentDocument: { components } } = useDocumentContext('UpdateAction');
662
+ const [{ rawQuery }] = useQueryParams();
663
+ const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
664
+ const { getInitialFormValues } = useDoc();
573
665
  const isSubmitting = useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
574
666
  const modified = useForm('UpdateAction', ({ modified })=>modified);
575
667
  const setSubmitting = useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
668
+ const initialValues = useForm('UpdateAction', ({ initialValues })=>initialValues);
576
669
  const document = useForm('UpdateAction', ({ values })=>values);
577
670
  const validate = useForm('UpdateAction', (state)=>state.validate);
578
671
  const setErrors = useForm('UpdateAction', (state)=>state.setErrors);
579
- const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
580
- const rootDocumentMeta = useDocumentContext('UpdateAction', (state)=>state.rootDocumentMeta);
581
- const currentDocumentMeta = useDocumentContext('UpdateAction', (state)=>state.meta);
672
+ const resetForm = useForm('UpdateAction', ({ resetForm })=>resetForm);
673
+ const dispatch = useRelationModal('UpdateAction', (state)=>state.dispatch);
674
+ // need to discriminate if the update is coming from a relation modal or in the edit view
675
+ const relationContext = useRelationModal('UpdateAction', ()=>true, false);
676
+ const relationalModalSchema = useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
677
+ const fieldToConnect = useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
678
+ const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
679
+ const documentHistory = useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
680
+ const rootDocumentMeta = useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
681
+ const fromRelationModal = relationContext != undefined;
682
+ const { currentDocumentMeta } = useDocumentContext('UpdateAction');
683
+ const [updateDocumentMutation] = useUpdateDocumentMutation();
684
+ const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
685
+ const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
686
+ const parentDocumentData = useDocument({
687
+ documentId: parentDocumentMetaToUpdate?.documentId,
688
+ model: parentDocumentMetaToUpdate?.model,
689
+ collectionType: parentDocumentMetaToUpdate?.collectionType,
690
+ params: parentDocumentMetaToUpdate?.params
691
+ }, {
692
+ skip: !parentDocumentMetaToUpdate
693
+ });
694
+ const { schema } = useDoc();
582
695
  const handleUpdate = React.useCallback(async ()=>{
583
696
  setSubmitting(true);
584
697
  try {
@@ -602,7 +715,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
602
715
  const res = await clone({
603
716
  model,
604
717
  documentId: cloneMatch.params.origin,
605
- params
718
+ params: currentDocumentMeta.params
606
719
  }, transformData(document));
607
720
  if ('data' in res) {
608
721
  navigate({
@@ -615,31 +728,91 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
615
728
  setErrors(formatValidationErrors(res.error));
616
729
  }
617
730
  } else if (documentId || collectionType === SINGLE_TYPES) {
618
- const isEditingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
731
+ const { data } = handleInvisibleAttributes(transformData(document), {
732
+ schema: fromRelationModal ? relationalModalSchema : schema,
733
+ initialValues,
734
+ components
735
+ });
619
736
  const res = await update({
620
737
  collectionType,
621
738
  model,
622
739
  documentId,
623
- params: isEditingRelation ? currentDocumentMeta.params : params
624
- }, transformData(document));
740
+ params: currentDocumentMeta.params
741
+ }, data);
625
742
  if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
626
743
  setErrors(formatValidationErrors(res.error));
627
744
  } else {
628
745
  resetForm();
629
746
  }
630
747
  } else {
748
+ const { data } = handleInvisibleAttributes(transformData(document), {
749
+ schema: fromRelationModal ? relationalModalSchema : schema,
750
+ initialValues,
751
+ components
752
+ });
631
753
  const res = await create({
632
754
  model,
633
- params
634
- }, transformData(document));
755
+ params: currentDocumentMeta.params
756
+ }, data);
635
757
  if ('data' in res && collectionType !== SINGLE_TYPES) {
636
- navigate({
637
- pathname: `../${res.data.documentId}`,
638
- search: rawQuery
639
- }, {
640
- replace: true,
641
- relative: 'path'
642
- });
758
+ if (fromRelationModal) {
759
+ const createdRelation = {
760
+ documentId: res.data.documentId,
761
+ collectionType,
762
+ model,
763
+ params: currentDocumentMeta.params
764
+ };
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);
772
+ try {
773
+ const updateRes = await updateDocumentMutation({
774
+ collectionType: parentDocumentMetaToUpdate.collectionType,
775
+ model: parentDocumentMetaToUpdate.model,
776
+ documentId: parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
777
+ params: parentDocumentMetaToUpdate.params,
778
+ data: {
779
+ ...dataToUpdate
780
+ }
781
+ });
782
+ if ('error' in updateRes) {
783
+ toggleNotification({
784
+ type: 'danger',
785
+ message: formatAPIError(updateRes.error)
786
+ });
787
+ return;
788
+ }
789
+ } catch (err) {
790
+ toggleNotification({
791
+ type: 'danger',
792
+ message: formatMessage({
793
+ id: 'notification.error',
794
+ defaultMessage: 'An error occurred'
795
+ })
796
+ });
797
+ throw err;
798
+ }
799
+ }
800
+ dispatch({
801
+ type: 'GO_TO_CREATED_RELATION',
802
+ payload: {
803
+ document: createdRelation,
804
+ shouldBypassConfirmation: true
805
+ }
806
+ });
807
+ } else {
808
+ navigate({
809
+ pathname: `../${res.data.documentId}`,
810
+ search: rawQuery
811
+ }, {
812
+ replace: true,
813
+ relative: 'path'
814
+ });
815
+ }
643
816
  } else if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
644
817
  setErrors(formatValidationErrors(res.error));
645
818
  }
@@ -651,30 +824,41 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
651
824
  }
652
825
  }
653
826
  }, [
827
+ setSubmitting,
828
+ modified,
829
+ validate,
830
+ isCloning,
831
+ documentId,
832
+ collectionType,
833
+ toggleNotification,
834
+ formatMessage,
654
835
  clone,
836
+ model,
655
837
  cloneMatch?.params.origin,
656
- collectionType,
657
- create,
658
- currentDocumentMeta.documentId,
659
838
  currentDocumentMeta.params,
660
839
  document,
661
- documentId,
662
- formatMessage,
663
- formatValidationErrors,
664
- isCloning,
665
- model,
666
- modified,
667
840
  navigate,
668
- onPreview,
669
- params,
670
841
  rawQuery,
671
- resetForm,
672
- rootDocumentMeta.documentId,
673
842
  setErrors,
674
- setSubmitting,
675
- toggleNotification,
843
+ formatValidationErrors,
676
844
  update,
677
- validate
845
+ resetForm,
846
+ create,
847
+ fromRelationModal,
848
+ fieldToConnect,
849
+ documentHistory,
850
+ parentDocumentMetaToUpdate,
851
+ dispatch,
852
+ getInitialFormValues,
853
+ parentDocumentData,
854
+ fieldToConnectUID,
855
+ updateDocumentMutation,
856
+ formatAPIError,
857
+ onPreview,
858
+ initialValues,
859
+ schema,
860
+ components,
861
+ relationalModalSchema
678
862
  ]);
679
863
  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
680
864
  React.useEffect(()=>{