@strapi/content-manager 0.0.0-experimental.e9303c99ae3c28b4b8421ab6971efae0748dd599 → 0.0.0-experimental.e99215433ba1d6e5497350812df274f426dbdba3

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