@strapi/content-manager 0.0.0-next.ce5699024a72ea224891438d5bbe39f904ec6774 → 0.0.0-next.d23f1485e5669cca1cee1bf5f8168b6b8109b78f

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