@strapi/content-manager 0.0.0-next.8c98bb4ad3e89fc5a3f45b1925795444d17042d6 → 0.0.0-next.8f0cdd4f9e4697ffed86c783465297fe532713f8

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 (356) 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 +414 -0
  10. package/dist/admin/components/Widgets.js.map +1 -0
  11. package/dist/admin/components/Widgets.mjs +391 -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 -8
  28. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  29. package/dist/admin/hooks/useDocumentActions.mjs +21 -9
  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 +81 -5
  36. package/dist/admin/index.js.map +1 -1
  37. package/dist/admin/index.mjs +80 -3
  38. package/dist/admin/index.mjs.map +1 -1
  39. package/dist/admin/layout.js +1 -27
  40. package/dist/admin/layout.js.map +1 -1
  41. package/dist/admin/layout.mjs +2 -9
  42. package/dist/admin/layout.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/EditViewPage.js +105 -89
  44. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  45. package/dist/admin/pages/EditView/EditViewPage.mjs +107 -91
  46. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/DocumentActions.js +314 -120
  48. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/DocumentActions.mjs +321 -127
  50. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  58. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  64. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  66. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  68. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  70. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  72. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  74. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +17 -4
  76. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +18 -5
  78. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -21
  80. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +25 -23
  82. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  84. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  86. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +507 -345
  88. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +507 -347
  90. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +178 -69
  92. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +182 -73
  94. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  96. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  98. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  100. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  102. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  104. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  106. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  108. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  110. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  112. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  114. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -10
  116. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  117. package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -10
  118. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/utils/data.js +103 -0
  120. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  121. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  122. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  123. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  124. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  125. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  126. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  127. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  128. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  129. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  130. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  131. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  132. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  133. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  134. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  135. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  136. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  137. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  138. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  139. package/dist/admin/preview/components/PreviewHeader.js +3 -6
  140. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  141. package/dist/admin/preview/components/PreviewHeader.mjs +3 -6
  142. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  143. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  144. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  145. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  146. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  147. package/dist/admin/preview/pages/Preview.js +155 -97
  148. package/dist/admin/preview/pages/Preview.js.map +1 -1
  149. package/dist/admin/preview/pages/Preview.mjs +156 -98
  150. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  151. package/dist/admin/services/api.js +3 -1
  152. package/dist/admin/services/api.js.map +1 -1
  153. package/dist/admin/services/api.mjs +3 -1
  154. package/dist/admin/services/api.mjs.map +1 -1
  155. package/dist/admin/services/documents.js +32 -16
  156. package/dist/admin/services/documents.js.map +1 -1
  157. package/dist/admin/services/documents.mjs +32 -16
  158. package/dist/admin/services/documents.mjs.map +1 -1
  159. package/dist/admin/services/homepage.js +39 -0
  160. package/dist/admin/services/homepage.js.map +1 -0
  161. package/dist/admin/services/homepage.mjs +36 -0
  162. package/dist/admin/services/homepage.mjs.map +1 -0
  163. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  164. package/dist/admin/src/components/Widgets.d.ts +4 -0
  165. package/dist/admin/src/content-manager.d.ts +0 -3
  166. package/dist/admin/src/exports.d.ts +1 -0
  167. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  168. package/dist/admin/src/history/pages/History.d.ts +1 -1
  169. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  170. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  171. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  172. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  173. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  174. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  175. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  176. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  177. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  178. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  179. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  180. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  181. package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
  182. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  183. package/dist/admin/src/services/api.d.ts +1 -1
  184. package/dist/admin/src/services/components.d.ts +2 -2
  185. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  186. package/dist/admin/src/services/documents.d.ts +23 -17
  187. package/dist/admin/src/services/homepage.d.ts +9 -0
  188. package/dist/admin/src/services/init.d.ts +1 -1
  189. package/dist/admin/src/services/relations.d.ts +2 -2
  190. package/dist/admin/src/services/uid.d.ts +3 -3
  191. package/dist/admin/src/utils/api.d.ts +1 -1
  192. package/dist/admin/src/utils/validation.d.ts +1 -0
  193. package/dist/admin/translations/en.json.js +9 -1
  194. package/dist/admin/translations/en.json.js.map +1 -1
  195. package/dist/admin/translations/en.json.mjs +9 -1
  196. package/dist/admin/translations/en.json.mjs.map +1 -1
  197. package/dist/admin/translations/es.json.js +5 -2
  198. package/dist/admin/translations/es.json.js.map +1 -1
  199. package/dist/admin/translations/es.json.mjs +5 -2
  200. package/dist/admin/translations/es.json.mjs.map +1 -1
  201. package/dist/admin/translations/fr.json.js +10 -2
  202. package/dist/admin/translations/fr.json.js.map +1 -1
  203. package/dist/admin/translations/fr.json.mjs +10 -2
  204. package/dist/admin/translations/fr.json.mjs.map +1 -1
  205. package/dist/admin/translations/ru.json.js +235 -226
  206. package/dist/admin/translations/ru.json.js.map +1 -1
  207. package/dist/admin/translations/ru.json.mjs +230 -226
  208. package/dist/admin/translations/ru.json.mjs.map +1 -1
  209. package/dist/admin/utils/api.js +1 -1
  210. package/dist/admin/utils/api.js.map +1 -1
  211. package/dist/admin/utils/api.mjs +1 -1
  212. package/dist/admin/utils/api.mjs.map +1 -1
  213. package/dist/admin/utils/validation.js +19 -7
  214. package/dist/admin/utils/validation.js.map +1 -1
  215. package/dist/admin/utils/validation.mjs +19 -7
  216. package/dist/admin/utils/validation.mjs.map +1 -1
  217. package/dist/server/controllers/content-types.js +11 -1
  218. package/dist/server/controllers/content-types.js.map +1 -1
  219. package/dist/server/controllers/content-types.mjs +11 -1
  220. package/dist/server/controllers/content-types.mjs.map +1 -1
  221. package/dist/server/controllers/index.js +3 -1
  222. package/dist/server/controllers/index.js.map +1 -1
  223. package/dist/server/controllers/index.mjs +3 -1
  224. package/dist/server/controllers/index.mjs.map +1 -1
  225. package/dist/server/controllers/relations.js +2 -2
  226. package/dist/server/controllers/relations.js.map +1 -1
  227. package/dist/server/controllers/relations.mjs +2 -2
  228. package/dist/server/controllers/relations.mjs.map +1 -1
  229. package/dist/server/controllers/validation/index.js +14 -2
  230. package/dist/server/controllers/validation/index.js.map +1 -1
  231. package/dist/server/controllers/validation/index.mjs +14 -2
  232. package/dist/server/controllers/validation/index.mjs.map +1 -1
  233. package/dist/server/history/services/lifecycles.js +23 -19
  234. package/dist/server/history/services/lifecycles.js.map +1 -1
  235. package/dist/server/history/services/lifecycles.mjs +23 -19
  236. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  237. package/dist/server/homepage/controllers/homepage.js +62 -0
  238. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  239. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  240. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  241. package/dist/server/homepage/controllers/index.js +10 -0
  242. package/dist/server/homepage/controllers/index.js.map +1 -0
  243. package/dist/server/homepage/controllers/index.mjs +8 -0
  244. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  245. package/dist/server/homepage/index.js +14 -0
  246. package/dist/server/homepage/index.js.map +1 -0
  247. package/dist/server/homepage/index.mjs +12 -0
  248. package/dist/server/homepage/index.mjs.map +1 -0
  249. package/dist/server/homepage/routes/homepage.js +36 -0
  250. package/dist/server/homepage/routes/homepage.js.map +1 -0
  251. package/dist/server/homepage/routes/homepage.mjs +34 -0
  252. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  253. package/dist/server/homepage/routes/index.js +13 -0
  254. package/dist/server/homepage/routes/index.js.map +1 -0
  255. package/dist/server/homepage/routes/index.mjs +11 -0
  256. package/dist/server/homepage/routes/index.mjs.map +1 -0
  257. package/dist/server/homepage/services/homepage.js +197 -0
  258. package/dist/server/homepage/services/homepage.js.map +1 -0
  259. package/dist/server/homepage/services/homepage.mjs +195 -0
  260. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  261. package/dist/server/homepage/services/index.js +10 -0
  262. package/dist/server/homepage/services/index.js.map +1 -0
  263. package/dist/server/homepage/services/index.mjs +8 -0
  264. package/dist/server/homepage/services/index.mjs.map +1 -0
  265. package/dist/server/preview/services/preview-config.js +5 -1
  266. package/dist/server/preview/services/preview-config.js.map +1 -1
  267. package/dist/server/preview/services/preview-config.mjs +5 -1
  268. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  269. package/dist/server/preview/services/preview.js +4 -1
  270. package/dist/server/preview/services/preview.js.map +1 -1
  271. package/dist/server/preview/services/preview.mjs +4 -1
  272. package/dist/server/preview/services/preview.mjs.map +1 -1
  273. package/dist/server/routes/index.js +3 -1
  274. package/dist/server/routes/index.js.map +1 -1
  275. package/dist/server/routes/index.mjs +3 -1
  276. package/dist/server/routes/index.mjs.map +1 -1
  277. package/dist/server/services/data-mapper.js +4 -1
  278. package/dist/server/services/data-mapper.js.map +1 -1
  279. package/dist/server/services/data-mapper.mjs +4 -1
  280. package/dist/server/services/data-mapper.mjs.map +1 -1
  281. package/dist/server/services/document-manager.js +8 -1
  282. package/dist/server/services/document-manager.js.map +1 -1
  283. package/dist/server/services/document-manager.mjs +8 -1
  284. package/dist/server/services/document-manager.mjs.map +1 -1
  285. package/dist/server/services/document-metadata.js +3 -1
  286. package/dist/server/services/document-metadata.js.map +1 -1
  287. package/dist/server/services/document-metadata.mjs +3 -1
  288. package/dist/server/services/document-metadata.mjs.map +1 -1
  289. package/dist/server/services/index.js +3 -1
  290. package/dist/server/services/index.js.map +1 -1
  291. package/dist/server/services/index.mjs +3 -1
  292. package/dist/server/services/index.mjs.map +1 -1
  293. package/dist/server/services/utils/configuration/attributes.js +1 -1
  294. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  295. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  296. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  297. package/dist/server/services/utils/configuration/layouts.js +1 -1
  298. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  299. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  300. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  301. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  302. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  303. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  304. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  305. package/dist/server/services/utils/populate.js +11 -0
  306. package/dist/server/services/utils/populate.js.map +1 -1
  307. package/dist/server/services/utils/populate.mjs +11 -0
  308. package/dist/server/services/utils/populate.mjs.map +1 -1
  309. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  310. package/dist/server/src/controllers/index.d.ts.map +1 -1
  311. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  312. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  313. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  314. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  315. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  316. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  317. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  318. package/dist/server/src/homepage/index.d.ts +23 -0
  319. package/dist/server/src/homepage/index.d.ts.map +1 -0
  320. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  321. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  322. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  323. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  324. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  325. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  326. package/dist/server/src/homepage/services/index.d.ts +16 -0
  327. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  328. package/dist/server/src/index.d.ts +15 -0
  329. package/dist/server/src/index.d.ts.map +1 -1
  330. package/dist/server/src/preview/services/index.d.ts +1 -0
  331. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  332. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  333. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  334. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  335. package/dist/server/src/preview/utils.d.ts +1 -0
  336. package/dist/server/src/preview/utils.d.ts.map +1 -1
  337. package/dist/server/src/routes/index.d.ts +1 -0
  338. package/dist/server/src/routes/index.d.ts.map +1 -1
  339. package/dist/server/src/services/data-mapper.d.ts +1 -0
  340. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  341. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  342. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  343. package/dist/server/src/services/index.d.ts +14 -0
  344. package/dist/server/src/services/index.d.ts.map +1 -1
  345. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  346. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  347. package/dist/shared/contracts/collection-types.d.ts +0 -1
  348. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  349. package/dist/shared/contracts/homepage.d.ts +38 -0
  350. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  351. package/package.json +12 -10
  352. package/dist/admin/features/DocumentContext.js +0 -71
  353. package/dist/admin/features/DocumentContext.js.map +0 -1
  354. package/dist/admin/features/DocumentContext.mjs +0 -49
  355. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  356. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -6,19 +6,24 @@ var strapiAdmin = require('@strapi/admin/strapi-admin');
6
6
  var designSystem = require('@strapi/design-system');
7
7
  var Icons = require('@strapi/icons');
8
8
  var mapValues = require('lodash/fp/mapValues');
9
+ var get = require('lodash/get');
10
+ var merge = require('lodash/merge');
11
+ var set = require('lodash/set');
9
12
  var reactIntl = require('react-intl');
10
13
  var reactRouterDom = require('react-router-dom');
11
- var styledComponents = require('styled-components');
12
14
  var attributes = require('../../../constants/attributes.js');
13
15
  var collections = require('../../../constants/collections.js');
14
- var DocumentContext = require('../../../features/DocumentContext.js');
15
16
  var DocumentRBAC = require('../../../features/DocumentRBAC.js');
16
17
  var useDocument = require('../../../hooks/useDocument.js');
17
18
  var useDocumentActions = require('../../../hooks/useDocumentActions.js');
19
+ var useDocumentContext = require('../../../hooks/useDocumentContext.js');
20
+ var Preview = require('../../../preview/pages/Preview.js');
18
21
  var router = require('../../../router.js');
19
22
  var documents = require('../../../services/documents.js');
20
23
  var api = require('../../../utils/api.js');
21
24
  var translations = require('../../../utils/translations.js');
25
+ var data = require('../utils/data.js');
26
+ var RelationModal = require('./FormInputs/Relations/RelationModal.js');
22
27
 
23
28
  function _interopNamespaceDefault(e) {
24
29
  var n = Object.create(null);
@@ -39,6 +44,38 @@ function _interopNamespaceDefault(e) {
39
44
 
40
45
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
41
46
 
47
+ const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
48
+ /*
49
+ * Check if the fieldToConnect is already present in the parentDataToUpdate.
50
+ * This happens in particular when in the parentDocument you have created
51
+ * a new component without saving.
52
+ */ const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);
53
+ const fieldToConnectPath = isFieldPresent ? fieldToConnect : fieldToConnect.split('.').slice(0, -1).join('.');
54
+ const fieldToConnectValue = isFieldPresent ? {
55
+ connect: [
56
+ {
57
+ id: data.documentId,
58
+ documentId: data.documentId,
59
+ locale: data.locale
60
+ }
61
+ ]
62
+ } : {
63
+ [fieldToConnect.split('.').pop()]: {
64
+ connect: [
65
+ {
66
+ id: data.documentId,
67
+ documentId: data.documentId,
68
+ locale: data.locale
69
+ }
70
+ ],
71
+ disconnect: []
72
+ },
73
+ // In case the object was not present you need to pass the componentUID of the parent document
74
+ __component: fieldToConnectUID
75
+ };
76
+ const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);
77
+ return merge(parentDataToUpdate, objectToConnect);
78
+ };
42
79
  const DocumentActions = ({ actions })=>{
43
80
  const { formatMessage } = reactIntl.useIntl();
44
81
  const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
@@ -59,23 +96,33 @@ const DocumentActions = ({ actions })=>{
59
96
  alignItems: "stretch",
60
97
  width: "100%",
61
98
  children: [
62
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
63
- gap: 2,
64
- children: [
65
- /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
66
- ...primaryAction,
67
- variant: primaryAction.variant || 'default'
68
- }),
69
- restActions.length > 0 ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionsMenu, {
70
- actions: restActions,
71
- label: formatMessage({
72
- id: 'content-manager.containers.edit.panels.default.more-actions',
73
- defaultMessage: 'More document actions'
74
- })
75
- }) : null
76
- ]
99
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentManager.Publish, {
100
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
101
+ gap: 2,
102
+ children: [
103
+ primaryAction.label === 'Publish' ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
104
+ ...primaryAction,
105
+ variant: primaryAction.variant || 'default'
106
+ }) : /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
107
+ ...primaryAction,
108
+ variant: primaryAction.variant || 'default'
109
+ }),
110
+ restActions.length > 0 ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionsMenu, {
111
+ actions: restActions,
112
+ label: formatMessage({
113
+ id: 'content-manager.containers.edit.panels.default.more-actions',
114
+ defaultMessage: 'More document actions'
115
+ })
116
+ }) : null
117
+ ]
118
+ })
77
119
  }),
78
- secondaryAction ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
120
+ secondaryAction ? secondaryAction.label === 'Publish' ? /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentManager.Publish, {
121
+ children: /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
122
+ ...secondaryAction,
123
+ variant: secondaryAction.variant || 'secondary'
124
+ })
125
+ }) : /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
79
126
  ...secondaryAction,
80
127
  variant: secondaryAction.variant || 'secondary'
81
128
  }) : null
@@ -137,11 +184,6 @@ const DocumentActionButton = (action)=>{
137
184
  ]
138
185
  });
139
186
  };
140
- const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
141
- &:hover {
142
- background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
143
- }
144
- `;
145
187
  const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
146
188
  const [isOpen, setIsOpen] = React__namespace.useState(false);
147
189
  const [dialogId, setDialogId] = React__namespace.useState(null);
@@ -203,27 +245,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
203
245
  popoverPlacement: "bottom-end",
204
246
  children: [
205
247
  actions.map((action)=>{
206
- return /*#__PURE__*/ jsxRuntime.jsx(MenuItem, {
248
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
207
249
  disabled: action.disabled,
208
250
  /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */ onSelect: handleClick(action),
209
251
  display: "block",
210
- isVariantDanger: action.variant === 'danger',
211
- isDisabled: action.disabled,
252
+ variant: action.variant === 'danger' ? action.variant : 'default',
253
+ startIcon: action.icon,
212
254
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
213
255
  justifyContent: "space-between",
214
256
  gap: 4,
215
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
216
- color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
257
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
217
258
  gap: 2,
218
259
  tag: "span",
219
- children: [
220
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
221
- tag: "span",
222
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
223
- children: action.icon
224
- }),
225
- action.label
226
- ]
260
+ children: action.label
227
261
  })
228
262
  })
229
263
  }, action.id);
@@ -251,30 +285,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
251
285
  ]
252
286
  });
253
287
  };
254
- const convertActionVariantToColor = (variant = 'secondary')=>{
255
- switch(variant){
256
- case 'danger':
257
- return 'danger600';
258
- case 'secondary':
259
- return undefined;
260
- case 'success':
261
- return 'success600';
262
- default:
263
- return 'primary600';
264
- }
265
- };
266
- const convertActionVariantToIconColor = (variant = 'secondary')=>{
267
- switch(variant){
268
- case 'danger':
269
- return 'danger600';
270
- case 'secondary':
271
- return 'neutral500';
272
- case 'success':
273
- return 'success600';
274
- default:
275
- return 'primary600';
276
- }
277
- };
278
288
  const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
279
289
  const { formatMessage } = reactIntl.useIntl();
280
290
  const handleClose = async ()=>{
@@ -371,8 +381,8 @@ const transformData = (data)=>{
371
381
  };
372
382
  /* -------------------------------------------------------------------------------------------------
373
383
  * DocumentActionComponents
374
- * -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document, onPreview, fromPreview = false, fromRelationModal = false })=>{
375
- const schema = DocumentContext.useDocumentContext('PublishAction', (state)=>state.document.schema);
384
+ * -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document })=>{
385
+ const { currentDocument: { schema } } = useDocumentContext.useDocumentContext('PublishAction');
376
386
  const navigate = reactRouterDom.useNavigate();
377
387
  const { toggleNotification } = strapiAdmin.useNotification();
378
388
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
@@ -380,23 +390,36 @@ const transformData = (data)=>{
380
390
  const isCloning = reactRouterDom.useMatch(router.CLONE_PATH) !== null;
381
391
  const { id } = reactRouterDom.useParams();
382
392
  const { formatMessage } = reactIntl.useIntl();
383
- const canPublish = DocumentRBAC.useDocumentRBAC('PublishAction', ({ canPublish })=>canPublish);
384
- const { publish, isLoading } = useDocumentActions.useDocumentActions(fromPreview, fromRelationModal);
393
+ const { canPublish, canReadFields } = DocumentRBAC.useDocumentRBAC('PublishAction', ({ canPublish, canReadFields })=>({
394
+ canPublish,
395
+ canReadFields
396
+ }));
397
+ const { publish, isLoading } = useDocumentActions.useDocumentActions();
398
+ const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
385
399
  const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = documents.useGetDraftRelationCountQuery();
386
400
  const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React__namespace.useState(0);
387
401
  const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React__namespace.useState(0);
388
- const [{ query, rawQuery }] = strapiAdmin.useQueryParams();
389
- const params = React__namespace.useMemo(()=>api.buildValidParams(query), [
390
- query
391
- ]);
402
+ const [{ rawQuery }] = strapiAdmin.useQueryParams();
392
403
  const modified = strapiAdmin.useForm('PublishAction', ({ modified })=>modified);
393
404
  const setSubmitting = strapiAdmin.useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
394
405
  const isSubmitting = strapiAdmin.useForm('PublishAction', ({ isSubmitting })=>isSubmitting);
395
406
  const validate = strapiAdmin.useForm('PublishAction', (state)=>state.validate);
396
407
  const setErrors = strapiAdmin.useForm('PublishAction', (state)=>state.setErrors);
397
408
  const formValues = strapiAdmin.useForm('PublishAction', ({ values })=>values);
398
- const rootDocumentMeta = DocumentContext.useDocumentContext('PublishAction', (state)=>state.rootDocumentMeta);
399
- const currentDocumentMeta = DocumentContext.useDocumentContext('PublishAction', (state)=>state.meta);
409
+ const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
410
+ const { currentDocument: { components } } = useDocumentContext.useDocumentContext('PublishAction');
411
+ // need to discriminate if the publish is coming from a relation modal or in the edit view
412
+ const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
413
+ const fromRelationModal = relationContext != undefined;
414
+ const dispatch = RelationModal.useRelationModal('PublishAction', (state)=>state.dispatch);
415
+ const fieldToConnect = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
416
+ const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
417
+ const documentHistory = RelationModal.useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
418
+ const rootDocumentMeta = RelationModal.useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
419
+ const { currentDocumentMeta } = useDocumentContext.useDocumentContext('PublishAction');
420
+ const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
421
+ const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
422
+ const idToPublish = currentDocumentMeta.documentId || id;
400
423
  React__namespace.useEffect(()=>{
401
424
  if (isErrorDraftRelations) {
402
425
  toggleNotification({
@@ -460,7 +483,7 @@ const transformData = (data)=>{
460
483
  collectionType,
461
484
  model,
462
485
  documentId,
463
- params
486
+ params: currentDocumentMeta.params
464
487
  });
465
488
  if (error) {
466
489
  throw error;
@@ -477,8 +500,18 @@ const transformData = (data)=>{
477
500
  countDraftRelations,
478
501
  collectionType,
479
502
  model,
480
- params
503
+ currentDocumentMeta.params
481
504
  ]);
505
+ const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
506
+ const parentDocumentData = useDocument.useDocument({
507
+ documentId: parentDocumentMetaToUpdate?.documentId,
508
+ model: parentDocumentMetaToUpdate?.model,
509
+ collectionType: parentDocumentMetaToUpdate?.collectionType,
510
+ params: parentDocumentMetaToUpdate?.params
511
+ }, {
512
+ skip: !parentDocumentMetaToUpdate
513
+ });
514
+ const { getInitialFormValues } = useDocument.useDoc();
482
515
  const isDocumentPublished = (document?.[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
483
516
  if (!schema?.options?.draftAndPublish) {
484
517
  return null;
@@ -490,30 +523,99 @@ const transformData = (data)=>{
490
523
  status: 'published'
491
524
  });
492
525
  if (errors) {
493
- toggleNotification({
494
- type: 'danger',
495
- message: formatMessage({
496
- id: 'content-manager.validation.error',
497
- defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
498
- })
526
+ const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName)=>{
527
+ const attribute = schema.attributes[fieldName];
528
+ return attribute?.required && !(canReadFields ?? []).includes(fieldName);
499
529
  });
530
+ if (hasUnreadableRequiredField) {
531
+ toggleNotification({
532
+ type: 'danger',
533
+ message: formatMessage({
534
+ id: 'content-manager.validation.error.unreadable-required-field',
535
+ defaultMessage: 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.'
536
+ })
537
+ });
538
+ } else {
539
+ toggleNotification({
540
+ type: 'danger',
541
+ message: formatMessage({
542
+ id: 'content-manager.validation.error',
543
+ defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
544
+ })
545
+ });
546
+ }
500
547
  return;
501
548
  }
502
- const isPublishingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
549
+ const { data: data$1 } = data.handleInvisibleAttributes(transformData(formValues), {
550
+ schema,
551
+ components
552
+ });
503
553
  const res = await publish({
504
554
  collectionType,
505
555
  model,
506
556
  documentId,
507
- params: isPublishingRelation ? currentDocumentMeta.params : params
508
- }, transformData(formValues));
557
+ params: currentDocumentMeta.params
558
+ }, data$1);
559
+ // Reset form if successful
560
+ if ('data' in res) {
561
+ resetForm();
562
+ }
509
563
  if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
510
564
  /**
511
565
  * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.
512
- */ if (id === 'create') {
566
+ */ if (idToPublish === 'create' && !fromRelationModal) {
513
567
  navigate({
514
568
  pathname: `../${collectionType}/${model}/${res.data.documentId}`,
515
569
  search: rawQuery
516
570
  });
571
+ } else if (fromRelationModal) {
572
+ const newRelation = {
573
+ documentId: res.data.documentId,
574
+ collectionType,
575
+ model,
576
+ params: currentDocumentMeta.params
577
+ };
578
+ /*
579
+ * Update, if needed, the parent relation with the newly published document.
580
+ * Check if in history we have the parent relation otherwise use the
581
+ * rootDocument
582
+ */ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
583
+ const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
584
+ const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
585
+ const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
586
+ try {
587
+ const updateRes = await updateDocumentMutation({
588
+ collectionType: metaDocumentToUpdate.collectionType,
589
+ model: metaDocumentToUpdate.model,
590
+ documentId: metaDocumentToUpdate.collectionType !== collections.SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
591
+ params: metaDocumentToUpdate.params,
592
+ data: dataToUpdate
593
+ });
594
+ if ('error' in updateRes) {
595
+ toggleNotification({
596
+ type: 'danger',
597
+ message: formatAPIError(updateRes.error)
598
+ });
599
+ return;
600
+ }
601
+ } catch (err) {
602
+ toggleNotification({
603
+ type: 'danger',
604
+ message: formatMessage({
605
+ id: 'notification.error',
606
+ defaultMessage: 'An error occurred'
607
+ })
608
+ });
609
+ throw err;
610
+ }
611
+ }
612
+ dispatch({
613
+ type: 'GO_TO_CREATED_RELATION',
614
+ payload: {
615
+ document: newRelation,
616
+ shouldBypassConfirmation: true
617
+ }
618
+ });
517
619
  }
518
620
  } else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
519
621
  setErrors(formatValidationErrors(res.error));
@@ -579,27 +681,48 @@ PublishAction.position = [
579
681
  'preview',
580
682
  'relation-modal'
581
683
  ];
582
- const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview, fromPreview = false, fromRelationModal = false })=>{
684
+ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
583
685
  const navigate = reactRouterDom.useNavigate();
584
686
  const { toggleNotification } = strapiAdmin.useNotification();
585
687
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
586
688
  const cloneMatch = reactRouterDom.useMatch(router.CLONE_PATH);
587
689
  const isCloning = cloneMatch !== null;
588
690
  const { formatMessage } = reactIntl.useIntl();
589
- const { create, update, clone, isLoading } = useDocumentActions.useDocumentActions(fromPreview, fromRelationModal);
590
- const [{ query, rawQuery }] = strapiAdmin.useQueryParams();
591
- const params = React__namespace.useMemo(()=>api.buildValidParams(query), [
592
- query
593
- ]);
691
+ const { create, update, clone, isLoading } = useDocumentActions.useDocumentActions();
692
+ const { currentDocument: { components } } = useDocumentContext.useDocumentContext('UpdateAction');
693
+ const [{ rawQuery }] = strapiAdmin.useQueryParams();
694
+ const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
695
+ const { getInitialFormValues } = useDocument.useDoc();
594
696
  const isSubmitting = strapiAdmin.useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
595
697
  const modified = strapiAdmin.useForm('UpdateAction', ({ modified })=>modified);
596
698
  const setSubmitting = strapiAdmin.useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
699
+ const initialValues = strapiAdmin.useForm('UpdateAction', ({ initialValues })=>initialValues);
597
700
  const document = strapiAdmin.useForm('UpdateAction', ({ values })=>values);
598
701
  const validate = strapiAdmin.useForm('UpdateAction', (state)=>state.validate);
599
702
  const setErrors = strapiAdmin.useForm('UpdateAction', (state)=>state.setErrors);
600
- const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
601
- const rootDocumentMeta = DocumentContext.useDocumentContext('UpdateAction', (state)=>state.rootDocumentMeta);
602
- const currentDocumentMeta = DocumentContext.useDocumentContext('UpdateAction', (state)=>state.meta);
703
+ const resetForm = strapiAdmin.useForm('UpdateAction', ({ resetForm })=>resetForm);
704
+ const dispatch = RelationModal.useRelationModal('UpdateAction', (state)=>state.dispatch);
705
+ // need to discriminate if the update is coming from a relation modal or in the edit view
706
+ const relationContext = RelationModal.useRelationModal('UpdateAction', ()=>true, false);
707
+ const relationalModalSchema = RelationModal.useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
708
+ const fieldToConnect = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
709
+ const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
710
+ const documentHistory = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
711
+ const rootDocumentMeta = RelationModal.useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
712
+ const fromRelationModal = relationContext != undefined;
713
+ const { currentDocumentMeta } = useDocumentContext.useDocumentContext('UpdateAction');
714
+ const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
715
+ const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
716
+ const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
717
+ const parentDocumentData = useDocument.useDocument({
718
+ documentId: parentDocumentMetaToUpdate?.documentId,
719
+ model: parentDocumentMetaToUpdate?.model,
720
+ collectionType: parentDocumentMetaToUpdate?.collectionType,
721
+ params: parentDocumentMetaToUpdate?.params
722
+ }, {
723
+ skip: !parentDocumentMetaToUpdate
724
+ });
725
+ const { schema } = useDocument.useDoc();
603
726
  const handleUpdate = React__namespace.useCallback(async ()=>{
604
727
  setSubmitting(true);
605
728
  try {
@@ -623,7 +746,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
623
746
  const res = await clone({
624
747
  model,
625
748
  documentId: cloneMatch.params.origin,
626
- params
749
+ params: currentDocumentMeta.params
627
750
  }, transformData(document));
628
751
  if ('data' in res) {
629
752
  navigate({
@@ -636,31 +759,91 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
636
759
  setErrors(formatValidationErrors(res.error));
637
760
  }
638
761
  } else if (documentId || collectionType === collections.SINGLE_TYPES) {
639
- const isEditingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
762
+ const { data: data$1 } = data.handleInvisibleAttributes(transformData(document), {
763
+ schema: fromRelationModal ? relationalModalSchema : schema,
764
+ initialValues,
765
+ components
766
+ });
640
767
  const res = await update({
641
768
  collectionType,
642
769
  model,
643
770
  documentId,
644
- params: isEditingRelation ? currentDocumentMeta.params : params
645
- }, transformData(document));
771
+ params: currentDocumentMeta.params
772
+ }, data$1);
646
773
  if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
647
774
  setErrors(formatValidationErrors(res.error));
648
775
  } else {
649
776
  resetForm();
650
777
  }
651
778
  } else {
779
+ const { data: data$1 } = data.handleInvisibleAttributes(transformData(document), {
780
+ schema: fromRelationModal ? relationalModalSchema : schema,
781
+ initialValues,
782
+ components
783
+ });
652
784
  const res = await create({
653
785
  model,
654
- params
655
- }, transformData(document));
786
+ params: currentDocumentMeta.params
787
+ }, data$1);
656
788
  if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
657
- navigate({
658
- pathname: `../${res.data.documentId}`,
659
- search: rawQuery
660
- }, {
661
- replace: true,
662
- relative: 'path'
663
- });
789
+ if (fromRelationModal) {
790
+ const createdRelation = {
791
+ documentId: res.data.documentId,
792
+ collectionType,
793
+ model,
794
+ params: currentDocumentMeta.params
795
+ };
796
+ /*
797
+ * Update, if needed, the parent relation with the newly published document.
798
+ * Check if in history we have the parent relation otherwise use the
799
+ * rootDocument
800
+ */ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
801
+ const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
802
+ const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
803
+ try {
804
+ const updateRes = await updateDocumentMutation({
805
+ collectionType: parentDocumentMetaToUpdate.collectionType,
806
+ model: parentDocumentMetaToUpdate.model,
807
+ documentId: parentDocumentMetaToUpdate.collectionType !== collections.SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
808
+ params: parentDocumentMetaToUpdate.params,
809
+ data: {
810
+ ...dataToUpdate
811
+ }
812
+ });
813
+ if ('error' in updateRes) {
814
+ toggleNotification({
815
+ type: 'danger',
816
+ message: formatAPIError(updateRes.error)
817
+ });
818
+ return;
819
+ }
820
+ } catch (err) {
821
+ toggleNotification({
822
+ type: 'danger',
823
+ message: formatMessage({
824
+ id: 'notification.error',
825
+ defaultMessage: 'An error occurred'
826
+ })
827
+ });
828
+ throw err;
829
+ }
830
+ }
831
+ dispatch({
832
+ type: 'GO_TO_CREATED_RELATION',
833
+ payload: {
834
+ document: createdRelation,
835
+ shouldBypassConfirmation: true
836
+ }
837
+ });
838
+ } else {
839
+ navigate({
840
+ pathname: `../${res.data.documentId}`,
841
+ search: rawQuery
842
+ }, {
843
+ replace: true,
844
+ relative: 'path'
845
+ });
846
+ }
664
847
  } else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
665
848
  setErrors(formatValidationErrors(res.error));
666
849
  }
@@ -672,30 +855,41 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
672
855
  }
673
856
  }
674
857
  }, [
858
+ setSubmitting,
859
+ modified,
860
+ validate,
861
+ isCloning,
862
+ documentId,
863
+ collectionType,
864
+ toggleNotification,
865
+ formatMessage,
675
866
  clone,
867
+ model,
676
868
  cloneMatch?.params.origin,
677
- collectionType,
678
- create,
679
- currentDocumentMeta.documentId,
680
869
  currentDocumentMeta.params,
681
870
  document,
682
- documentId,
683
- formatMessage,
684
- formatValidationErrors,
685
- isCloning,
686
- model,
687
- modified,
688
871
  navigate,
689
- onPreview,
690
- params,
691
872
  rawQuery,
692
- resetForm,
693
- rootDocumentMeta.documentId,
694
873
  setErrors,
695
- setSubmitting,
696
- toggleNotification,
874
+ formatValidationErrors,
697
875
  update,
698
- validate
876
+ resetForm,
877
+ create,
878
+ fromRelationModal,
879
+ fieldToConnect,
880
+ documentHistory,
881
+ parentDocumentMetaToUpdate,
882
+ dispatch,
883
+ getInitialFormValues,
884
+ parentDocumentData,
885
+ fieldToConnectUID,
886
+ updateDocumentMutation,
887
+ formatAPIError,
888
+ onPreview,
889
+ initialValues,
890
+ schema,
891
+ components,
892
+ relationalModalSchema
699
893
  ]);
700
894
  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
701
895
  React__namespace.useEffect(()=>{