@strapi/content-manager 0.0.0-experimental.c23f51fc41b3ef5de081f427d07e87af93cdcb2c → 0.0.0-experimental.c2b08ee20b017fc174cccf35c56c39438b0237b0

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