@strapi/content-manager 0.0.0-next.e21fe90bf2ab9906267ea6e6ca620bdcc729906c → 0.0.0-next.e326c69a49373b420f6566c30aca26f4b6274c6a

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