@strapi/content-manager 0.0.0-next.929f36e7cd2888f97e66b5159baa15234a283fca → 0.0.0-next.92e60e369ae0e382a5d486de347f6d286ab22987

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 (540) hide show
  1. package/dist/admin/components/ComponentIcon.js +3 -0
  2. package/dist/admin/components/ComponentIcon.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.mjs +3 -0
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +3 -2
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +3 -2
  8. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Fields.js +304 -205
  10. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Fields.mjs +309 -211
  12. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  13. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  14. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  15. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  16. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  26. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  27. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  28. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  29. package/dist/admin/components/LeftMenu.js +94 -50
  30. package/dist/admin/components/LeftMenu.js.map +1 -1
  31. package/dist/admin/components/LeftMenu.mjs +97 -53
  32. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  33. package/dist/admin/components/RelativeTime.js.map +1 -1
  34. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  35. package/dist/admin/components/Widgets.js +437 -0
  36. package/dist/admin/components/Widgets.js.map +1 -0
  37. package/dist/admin/components/Widgets.mjs +414 -0
  38. package/dist/admin/components/Widgets.mjs.map +1 -0
  39. package/dist/admin/content-manager.js.map +1 -1
  40. package/dist/admin/content-manager.mjs.map +1 -1
  41. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  42. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  43. package/dist/admin/history/components/VersionContent.js +24 -3
  44. package/dist/admin/history/components/VersionContent.js.map +1 -1
  45. package/dist/admin/history/components/VersionContent.mjs +25 -4
  46. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  47. package/dist/admin/history/components/VersionHeader.js +7 -0
  48. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  49. package/dist/admin/history/components/VersionHeader.mjs +8 -1
  50. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  51. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  52. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  53. package/dist/admin/history/components/VersionsList.js +1 -1
  54. package/dist/admin/history/components/VersionsList.js.map +1 -1
  55. package/dist/admin/history/components/VersionsList.mjs +1 -1
  56. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  57. package/dist/admin/history/pages/History.js +8 -16
  58. package/dist/admin/history/pages/History.js.map +1 -1
  59. package/dist/admin/history/pages/History.mjs +8 -16
  60. package/dist/admin/history/pages/History.mjs.map +1 -1
  61. package/dist/admin/history/services/historyVersion.js.map +1 -1
  62. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  63. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  64. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  65. package/dist/admin/hooks/useDocumentActions.js +43 -12
  66. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  67. package/dist/admin/hooks/useDocumentActions.mjs +44 -13
  68. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  69. package/dist/admin/hooks/useDocumentContext.js +57 -0
  70. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  71. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  72. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  73. package/dist/admin/index.js +81 -5
  74. package/dist/admin/index.js.map +1 -1
  75. package/dist/admin/index.mjs +80 -3
  76. package/dist/admin/index.mjs.map +1 -1
  77. package/dist/admin/layout.js +28 -33
  78. package/dist/admin/layout.js.map +1 -1
  79. package/dist/admin/layout.mjs +29 -15
  80. package/dist/admin/layout.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/EditViewPage.js +101 -88
  82. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  83. package/dist/admin/pages/EditView/EditViewPage.mjs +103 -90
  84. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  86. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  87. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  88. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  89. package/dist/admin/pages/EditView/components/DocumentActions.js +335 -123
  90. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/DocumentActions.mjs +342 -130
  92. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  94. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  102. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  104. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  106. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  108. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  110. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  112. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  114. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  116. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  118. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  120. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  122. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  124. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  126. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  128. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  130. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  132. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +19 -5
  134. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +20 -6
  136. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  138. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  140. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +27 -24
  142. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +29 -26
  144. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  146. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  148. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +508 -345
  150. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +508 -347
  152. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +180 -70
  154. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +184 -74
  156. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/UID.js +13 -10
  158. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +13 -10
  160. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  166. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  168. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  172. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  174. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormLayout.js +59 -34
  180. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormLayout.mjs +60 -34
  182. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  183. package/dist/admin/pages/EditView/components/Header.js +92 -27
  184. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  185. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  186. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  187. package/dist/admin/pages/EditView/components/InputRenderer.js +42 -34
  188. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  189. package/dist/admin/pages/EditView/components/InputRenderer.mjs +42 -34
  190. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  191. package/dist/admin/pages/EditView/utils/data.js +128 -0
  192. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  193. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  194. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  195. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  196. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  197. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  198. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  199. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  200. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  201. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  202. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  203. package/dist/admin/pages/ListView/ListViewPage.js +225 -132
  204. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  205. package/dist/admin/pages/ListView/ListViewPage.mjs +227 -134
  206. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  207. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  208. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  209. package/dist/admin/pages/ListView/components/BulkActions/Actions.js +6 -16
  210. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  211. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +6 -16
  212. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  213. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +20 -32
  214. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  215. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +21 -33
  216. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  217. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +13 -3
  218. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  219. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +13 -3
  220. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  221. package/dist/admin/pages/ListView/components/Filters.js +8 -2
  222. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  223. package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
  224. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  225. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  226. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  227. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  228. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  229. package/dist/admin/pages/ListView/components/TableCells/CellContent.js +1 -1
  230. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  231. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +1 -1
  232. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  233. package/dist/admin/pages/ListView/components/TableCells/Media.js +1 -1
  234. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  235. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  236. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  237. package/dist/admin/pages/ListView/components/TableCells/Relations.js +8 -4
  238. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  239. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +8 -4
  240. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  241. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  242. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  243. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  244. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  245. package/dist/admin/preview/components/InputPopover.js +189 -0
  246. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  247. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  248. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  249. package/dist/admin/preview/components/PreviewHeader.js +2 -6
  250. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  251. package/dist/admin/preview/components/PreviewHeader.mjs +2 -6
  252. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  253. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  254. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  255. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  256. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  257. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  258. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  259. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  260. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  261. package/dist/admin/preview/pages/Preview.js +180 -84
  262. package/dist/admin/preview/pages/Preview.js.map +1 -1
  263. package/dist/admin/preview/pages/Preview.mjs +182 -86
  264. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  265. package/dist/admin/preview/services/preview.js.map +1 -1
  266. package/dist/admin/preview/services/preview.mjs.map +1 -1
  267. package/dist/admin/preview/utils/constants.js +56 -0
  268. package/dist/admin/preview/utils/constants.js.map +1 -0
  269. package/dist/admin/preview/utils/constants.mjs +52 -0
  270. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  271. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  272. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  273. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  274. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  275. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  276. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  277. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  278. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  279. package/dist/admin/preview/utils/previewScript.js +534 -0
  280. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  281. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  282. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  283. package/dist/admin/router.js.map +1 -1
  284. package/dist/admin/router.mjs.map +1 -1
  285. package/dist/admin/services/api.js +5 -1
  286. package/dist/admin/services/api.js.map +1 -1
  287. package/dist/admin/services/api.mjs +5 -1
  288. package/dist/admin/services/api.mjs.map +1 -1
  289. package/dist/admin/services/documents.js +59 -17
  290. package/dist/admin/services/documents.js.map +1 -1
  291. package/dist/admin/services/documents.mjs +59 -17
  292. package/dist/admin/services/documents.mjs.map +1 -1
  293. package/dist/admin/services/homepage.js +30 -0
  294. package/dist/admin/services/homepage.js.map +1 -0
  295. package/dist/admin/services/homepage.mjs +28 -0
  296. package/dist/admin/services/homepage.mjs.map +1 -0
  297. package/dist/admin/services/relations.js.map +1 -1
  298. package/dist/admin/services/relations.mjs.map +1 -1
  299. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  300. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  301. package/dist/admin/src/components/Widgets.d.ts +8 -0
  302. package/dist/admin/src/content-manager.d.ts +0 -3
  303. package/dist/admin/src/exports.d.ts +1 -0
  304. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  305. package/dist/admin/src/history/pages/History.d.ts +1 -1
  306. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  307. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  308. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  309. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  310. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  311. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  312. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  313. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  314. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  315. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  316. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  317. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
  318. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  319. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -2
  320. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  321. package/dist/admin/src/pages/ListView/components/TableCells/Relations.d.ts +0 -3
  322. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  323. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  324. package/dist/admin/src/preview/pages/Preview.d.ts +14 -1
  325. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  326. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  327. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  328. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  329. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  330. package/dist/admin/src/services/api.d.ts +1 -1
  331. package/dist/admin/src/services/components.d.ts +2 -2
  332. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  333. package/dist/admin/src/services/documents.d.ts +23 -17
  334. package/dist/admin/src/services/homepage.d.ts +5 -0
  335. package/dist/admin/src/services/init.d.ts +1 -1
  336. package/dist/admin/src/services/relations.d.ts +2 -2
  337. package/dist/admin/src/services/uid.d.ts +3 -3
  338. package/dist/admin/src/utils/api.d.ts +1 -1
  339. package/dist/admin/src/utils/validation.d.ts +1 -0
  340. package/dist/admin/translations/en.json.js +15 -1
  341. package/dist/admin/translations/en.json.js.map +1 -1
  342. package/dist/admin/translations/en.json.mjs +15 -1
  343. package/dist/admin/translations/en.json.mjs.map +1 -1
  344. package/dist/admin/translations/es.json.js +6 -2
  345. package/dist/admin/translations/es.json.js.map +1 -1
  346. package/dist/admin/translations/es.json.mjs +6 -2
  347. package/dist/admin/translations/es.json.mjs.map +1 -1
  348. package/dist/admin/translations/fr.json.js +12 -3
  349. package/dist/admin/translations/fr.json.js.map +1 -1
  350. package/dist/admin/translations/fr.json.mjs +12 -3
  351. package/dist/admin/translations/fr.json.mjs.map +1 -1
  352. package/dist/admin/translations/ru.json.js +235 -226
  353. package/dist/admin/translations/ru.json.js.map +1 -1
  354. package/dist/admin/translations/ru.json.mjs +230 -226
  355. package/dist/admin/translations/ru.json.mjs.map +1 -1
  356. package/dist/admin/utils/api.js +1 -1
  357. package/dist/admin/utils/api.js.map +1 -1
  358. package/dist/admin/utils/api.mjs +1 -1
  359. package/dist/admin/utils/api.mjs.map +1 -1
  360. package/dist/admin/utils/translations.js.map +1 -1
  361. package/dist/admin/utils/translations.mjs.map +1 -1
  362. package/dist/admin/utils/urls.js.map +1 -1
  363. package/dist/admin/utils/urls.mjs.map +1 -1
  364. package/dist/admin/utils/users.js.map +1 -1
  365. package/dist/admin/utils/users.mjs.map +1 -1
  366. package/dist/admin/utils/validation.js +19 -7
  367. package/dist/admin/utils/validation.js.map +1 -1
  368. package/dist/admin/utils/validation.mjs +19 -7
  369. package/dist/admin/utils/validation.mjs.map +1 -1
  370. package/dist/server/controllers/collection-types.js +2 -1
  371. package/dist/server/controllers/collection-types.js.map +1 -1
  372. package/dist/server/controllers/collection-types.mjs +2 -1
  373. package/dist/server/controllers/collection-types.mjs.map +1 -1
  374. package/dist/server/controllers/content-types.js +11 -1
  375. package/dist/server/controllers/content-types.js.map +1 -1
  376. package/dist/server/controllers/content-types.mjs +11 -1
  377. package/dist/server/controllers/content-types.mjs.map +1 -1
  378. package/dist/server/controllers/index.js +3 -1
  379. package/dist/server/controllers/index.js.map +1 -1
  380. package/dist/server/controllers/index.mjs +3 -1
  381. package/dist/server/controllers/index.mjs.map +1 -1
  382. package/dist/server/controllers/relations.js +8 -6
  383. package/dist/server/controllers/relations.js.map +1 -1
  384. package/dist/server/controllers/relations.mjs +8 -6
  385. package/dist/server/controllers/relations.mjs.map +1 -1
  386. package/dist/server/controllers/single-types.js +3 -1
  387. package/dist/server/controllers/single-types.js.map +1 -1
  388. package/dist/server/controllers/single-types.mjs +3 -1
  389. package/dist/server/controllers/single-types.mjs.map +1 -1
  390. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  391. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  392. package/dist/server/controllers/validation/index.js +14 -2
  393. package/dist/server/controllers/validation/index.js.map +1 -1
  394. package/dist/server/controllers/validation/index.mjs +14 -2
  395. package/dist/server/controllers/validation/index.mjs.map +1 -1
  396. package/dist/server/controllers/validation/model-configuration.js +2 -2
  397. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  398. package/dist/server/controllers/validation/model-configuration.mjs +2 -2
  399. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  400. package/dist/server/history/services/lifecycles.js +23 -19
  401. package/dist/server/history/services/lifecycles.js.map +1 -1
  402. package/dist/server/history/services/lifecycles.mjs +23 -19
  403. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  404. package/dist/server/history/utils.js.map +1 -1
  405. package/dist/server/history/utils.mjs.map +1 -1
  406. package/dist/server/homepage/controllers/homepage.js +62 -0
  407. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  408. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  409. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  410. package/dist/server/homepage/controllers/index.js +10 -0
  411. package/dist/server/homepage/controllers/index.js.map +1 -0
  412. package/dist/server/homepage/controllers/index.mjs +8 -0
  413. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  414. package/dist/server/homepage/index.js +14 -0
  415. package/dist/server/homepage/index.js.map +1 -0
  416. package/dist/server/homepage/index.mjs +12 -0
  417. package/dist/server/homepage/index.mjs.map +1 -0
  418. package/dist/server/homepage/routes/homepage.js +36 -0
  419. package/dist/server/homepage/routes/homepage.js.map +1 -0
  420. package/dist/server/homepage/routes/homepage.mjs +34 -0
  421. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  422. package/dist/server/homepage/routes/index.js +13 -0
  423. package/dist/server/homepage/routes/index.js.map +1 -0
  424. package/dist/server/homepage/routes/index.mjs +11 -0
  425. package/dist/server/homepage/routes/index.mjs.map +1 -0
  426. package/dist/server/homepage/services/homepage.js +198 -0
  427. package/dist/server/homepage/services/homepage.js.map +1 -0
  428. package/dist/server/homepage/services/homepage.mjs +196 -0
  429. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  430. package/dist/server/homepage/services/index.js +10 -0
  431. package/dist/server/homepage/services/index.js.map +1 -0
  432. package/dist/server/homepage/services/index.mjs +8 -0
  433. package/dist/server/homepage/services/index.mjs.map +1 -0
  434. package/dist/server/middlewares/routing.js.map +1 -1
  435. package/dist/server/middlewares/routing.mjs.map +1 -1
  436. package/dist/server/preview/services/preview-config.js +11 -32
  437. package/dist/server/preview/services/preview-config.js.map +1 -1
  438. package/dist/server/preview/services/preview-config.mjs +12 -33
  439. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  440. package/dist/server/preview/services/preview.js +4 -1
  441. package/dist/server/preview/services/preview.js.map +1 -1
  442. package/dist/server/preview/services/preview.mjs +4 -1
  443. package/dist/server/preview/services/preview.mjs.map +1 -1
  444. package/dist/server/preview/utils.js.map +1 -1
  445. package/dist/server/preview/utils.mjs.map +1 -1
  446. package/dist/server/routes/index.js +3 -1
  447. package/dist/server/routes/index.js.map +1 -1
  448. package/dist/server/routes/index.mjs +3 -1
  449. package/dist/server/routes/index.mjs.map +1 -1
  450. package/dist/server/services/configuration.js.map +1 -1
  451. package/dist/server/services/configuration.mjs.map +1 -1
  452. package/dist/server/services/data-mapper.js +4 -1
  453. package/dist/server/services/data-mapper.js.map +1 -1
  454. package/dist/server/services/data-mapper.mjs +4 -1
  455. package/dist/server/services/data-mapper.mjs.map +1 -1
  456. package/dist/server/services/document-manager.js +8 -1
  457. package/dist/server/services/document-manager.js.map +1 -1
  458. package/dist/server/services/document-manager.mjs +8 -1
  459. package/dist/server/services/document-manager.mjs.map +1 -1
  460. package/dist/server/services/document-metadata.js +26 -2
  461. package/dist/server/services/document-metadata.js.map +1 -1
  462. package/dist/server/services/document-metadata.mjs +26 -2
  463. package/dist/server/services/document-metadata.mjs.map +1 -1
  464. package/dist/server/services/field-sizes.js.map +1 -1
  465. package/dist/server/services/field-sizes.mjs.map +1 -1
  466. package/dist/server/services/index.js +3 -1
  467. package/dist/server/services/index.js.map +1 -1
  468. package/dist/server/services/index.mjs +3 -1
  469. package/dist/server/services/index.mjs.map +1 -1
  470. package/dist/server/services/uid.js.map +1 -1
  471. package/dist/server/services/uid.mjs.map +1 -1
  472. package/dist/server/services/utils/configuration/attributes.js +1 -1
  473. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  474. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  475. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  476. package/dist/server/services/utils/configuration/layouts.js +1 -1
  477. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  478. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  479. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  480. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  481. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  482. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  483. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  484. package/dist/server/services/utils/populate.js +11 -0
  485. package/dist/server/services/utils/populate.js.map +1 -1
  486. package/dist/server/services/utils/populate.mjs +11 -0
  487. package/dist/server/services/utils/populate.mjs.map +1 -1
  488. package/dist/server/services/utils/store.js.map +1 -1
  489. package/dist/server/services/utils/store.mjs.map +1 -1
  490. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  491. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  492. package/dist/server/src/controllers/index.d.ts.map +1 -1
  493. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  494. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  495. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  496. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  497. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  498. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  499. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  500. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  501. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  502. package/dist/server/src/homepage/index.d.ts +23 -0
  503. package/dist/server/src/homepage/index.d.ts.map +1 -0
  504. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  505. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  506. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  507. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  508. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  509. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  510. package/dist/server/src/homepage/services/index.d.ts +16 -0
  511. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  512. package/dist/server/src/index.d.ts +15 -0
  513. package/dist/server/src/index.d.ts.map +1 -1
  514. package/dist/server/src/preview/services/index.d.ts +1 -0
  515. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  516. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  517. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  518. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  519. package/dist/server/src/preview/utils.d.ts +1 -0
  520. package/dist/server/src/preview/utils.d.ts.map +1 -1
  521. package/dist/server/src/routes/index.d.ts +1 -0
  522. package/dist/server/src/routes/index.d.ts.map +1 -1
  523. package/dist/server/src/services/data-mapper.d.ts +1 -0
  524. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  525. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  526. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  527. package/dist/server/src/services/index.d.ts +14 -0
  528. package/dist/server/src/services/index.d.ts.map +1 -1
  529. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  530. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  531. package/dist/shared/contracts/collection-types.d.ts +0 -1
  532. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  533. package/dist/shared/contracts/homepage.d.ts +38 -0
  534. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  535. package/package.json +13 -11
  536. package/dist/admin/features/DocumentContext.js +0 -71
  537. package/dist/admin/features/DocumentContext.js.map +0 -1
  538. package/dist/admin/features/DocumentContext.mjs +0 -49
  539. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  540. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -1,292 +1,458 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { createContext, Form, ConfirmDialog, useStrapiApp, useRBAC, DescriptionComponentRenderer } from '@strapi/admin/strapi-admin';
4
- import { Modal, TextButton, Tooltip, Flex, IconButton, Typography, Button, Dialog, Loader, EmptyStateLayout, Box } from '@strapi/design-system';
3
+ import { createContext, useQueryParams, Form, useForm, ConfirmDialog, useStrapiApp, useRBAC, DescriptionComponentRenderer } from '@strapi/admin/strapi-admin';
4
+ import { Modal, TextButton, Flex, IconButton, Typography, Dialog, Loader, EmptyStateLayout, Box } from '@strapi/design-system';
5
5
  import { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';
6
6
  import { useIntl } from 'react-intl';
7
7
  import { useNavigate, useLocation } from 'react-router-dom';
8
8
  import { styled } from 'styled-components';
9
9
  import { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections.mjs';
10
10
  import { PERMISSIONS } from '../../../../../constants/plugin.mjs';
11
- import { useDocumentContext } from '../../../../../features/DocumentContext.mjs';
12
- import { DocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
13
- import { useDocumentLayout } from '../../../../../hooks/useDocumentLayout.mjs';
11
+ import { buildValidParams } from '../../../../../utils/api.mjs';
12
+ import 'date-fns';
13
+ import { DocumentStatus } from '../../DocumentStatus.mjs';
14
+ import { useDoc, useDocument } from '../../../../../hooks/useDocument.mjs';
15
+ import '@strapi/admin/strapi-admin/ee';
16
+ import '../../../../../preview/pages/Preview.mjs';
14
17
  import { useLazyGetDocumentQuery } from '../../../../../services/documents.mjs';
18
+ import { useDocumentLayout } from '../../../../../hooks/useDocumentLayout.mjs';
19
+ import { DocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
15
20
  import { createYupSchema } from '../../../../../utils/validation.mjs';
16
21
  import { DocumentActionButton } from '../../DocumentActions.mjs';
17
- import { DocumentStatus } from '../../DocumentStatus.mjs';
18
22
  import { FormLayout } from '../../FormLayout.mjs';
23
+ import { ComponentProvider } from '../ComponentContext.mjs';
19
24
 
20
25
  function getCollectionType(url) {
21
26
  const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);
22
27
  const match = url.match(regex);
23
28
  return match ? match[1] : undefined;
24
29
  }
25
- const CustomModalContent = styled(Modal.Content)`
30
+ const StyledModalContent = styled(Modal.Content)`
26
31
  width: 90%;
27
32
  max-width: 100%;
28
33
  height: 90%;
29
34
  max-height: 100%;
30
35
  `;
31
- const [RelationModalProvider, useRelationModal] = createContext('RelationModal', {
32
- parentModified: false,
33
- depth: 0
34
- });
35
- const RelationModalForm = ({ relation, triggerButtonLabel })=>{
36
+ const getFullPageUrl = (currentDocumentMeta)=>{
37
+ const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;
38
+ const queryParams = currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : '';
39
+ return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;
40
+ };
41
+ function reducer(state, action) {
42
+ switch(action.type){
43
+ case 'GO_TO_RELATION':
44
+ if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
45
+ return {
46
+ ...state,
47
+ confirmDialogIntent: action.payload.document,
48
+ fieldToConnect: action.payload.fieldToConnect,
49
+ fieldToConnectUID: action.payload.fieldToConnectUID
50
+ };
51
+ }
52
+ const lastItemDocumentHistory = state.documentHistory.at(-1);
53
+ const hasToResetDocumentHistory = lastItemDocumentHistory && !lastItemDocumentHistory.documentId;
54
+ return {
55
+ ...state,
56
+ // Reset document history if the last item has documentId undefined
57
+ documentHistory: hasToResetDocumentHistory ? [
58
+ action.payload.document
59
+ ] : [
60
+ ...state.documentHistory,
61
+ action.payload.document
62
+ ],
63
+ confirmDialogIntent: null,
64
+ isModalOpen: true,
65
+ fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,
66
+ fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID
67
+ };
68
+ case 'GO_BACK':
69
+ if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
70
+ return {
71
+ ...state,
72
+ confirmDialogIntent: 'back'
73
+ };
74
+ }
75
+ return {
76
+ ...state,
77
+ documentHistory: state.documentHistory.slice(0, -1),
78
+ confirmDialogIntent: null
79
+ };
80
+ case 'GO_FULL_PAGE':
81
+ if (state.hasUnsavedChanges) {
82
+ return {
83
+ ...state,
84
+ confirmDialogIntent: 'navigate'
85
+ };
86
+ }
87
+ return {
88
+ ...state,
89
+ documentHistory: [],
90
+ hasUnsavedChanges: false,
91
+ isModalOpen: false,
92
+ confirmDialogIntent: null
93
+ };
94
+ case 'GO_TO_CREATED_RELATION':
95
+ return {
96
+ ...state,
97
+ // Reset document history if the last item has documentId undefined
98
+ documentHistory: state.documentHistory ? [
99
+ ...state.documentHistory.slice(0, -1),
100
+ action.payload.document
101
+ ] : [
102
+ action.payload.document
103
+ ],
104
+ confirmDialogIntent: null,
105
+ isModalOpen: true,
106
+ fieldToConnect: undefined,
107
+ fieldToConnectUID: undefined
108
+ };
109
+ case 'CANCEL_CONFIRM_DIALOG':
110
+ return {
111
+ ...state,
112
+ confirmDialogIntent: null
113
+ };
114
+ case 'CLOSE_MODAL':
115
+ if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
116
+ return {
117
+ ...state,
118
+ confirmDialogIntent: 'close'
119
+ };
120
+ }
121
+ return {
122
+ ...state,
123
+ documentHistory: [],
124
+ confirmDialogIntent: null,
125
+ hasUnsavedChanges: false,
126
+ isModalOpen: false
127
+ };
128
+ case 'SET_HAS_UNSAVED_CHANGES':
129
+ return {
130
+ ...state,
131
+ hasUnsavedChanges: action.payload.hasUnsavedChanges
132
+ };
133
+ default:
134
+ return state;
135
+ }
136
+ }
137
+ const [RelationModalProvider, useRelationModal] = createContext('RelationModal');
138
+ function isRenderProp(children) {
139
+ return typeof children === 'function';
140
+ }
141
+ const RootRelationRenderer = (props)=>{
142
+ const { children } = props;
143
+ const [state, dispatch] = React.useReducer(reducer, {
144
+ documentHistory: [],
145
+ confirmDialogIntent: null,
146
+ isModalOpen: false,
147
+ hasUnsavedChanges: false,
148
+ fieldToConnect: undefined
149
+ });
150
+ const rootDocument = useDoc();
151
+ const [{ query }] = useQueryParams();
152
+ const params = React.useMemo(()=>buildValidParams(query ?? {}), [
153
+ query
154
+ ]);
155
+ const rootDocumentMeta = {
156
+ documentId: rootDocument.document?.documentId || '',
157
+ model: rootDocument.model,
158
+ collectionType: rootDocument.collectionType,
159
+ params
160
+ };
161
+ const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;
162
+ const currentDocument = useDocument(currentDocumentMeta);
163
+ // TODO: check if we can remove the single type check
164
+ const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;
165
+ const isCreating = !currentDocumentMeta.documentId && !isSingleType;
166
+ /**
167
+ * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the
168
+ * pieces that will be used by potential child relations: the context, header, form, and footer.
169
+ */ return /*#__PURE__*/ jsx(RelationModalProvider, {
170
+ state: state,
171
+ dispatch: dispatch,
172
+ rootDocumentMeta: rootDocumentMeta,
173
+ currentDocumentMeta: currentDocumentMeta,
174
+ currentDocument: currentDocument,
175
+ isCreating: isCreating,
176
+ children: /*#__PURE__*/ jsx(RelationModal, {
177
+ children: isRenderProp(children) ? children({
178
+ dispatch
179
+ }) : props.relation && /*#__PURE__*/ jsx(RelationModalTrigger, {
180
+ relation: props.relation,
181
+ children: children
182
+ })
183
+ })
184
+ });
185
+ };
186
+ const NestedRelationRenderer = (props)=>{
187
+ const { children } = props;
188
+ const dispatch = useRelationModal('NestedRelation', (state)=>state.dispatch);
189
+ return isRenderProp(children) ? children({
190
+ dispatch
191
+ }) : props.relation && /*#__PURE__*/ jsx(RelationModalTrigger, {
192
+ relation: props.relation,
193
+ children: children
194
+ }); /* This is the trigger that will be rendered in the parent relation */
195
+ };
196
+ /**
197
+ * Component responsible for rendering its children wrapped in a modal, form and context if needed
198
+ */ const RelationModalRenderer = (props)=>{
199
+ // We're in a nested relation if the relation modal context is not undefined
200
+ const isNested = useRelationModal('RelationContextWrapper', (state)=>state != undefined, false);
201
+ return isNested ? /*#__PURE__*/ jsx(NestedRelationRenderer, {
202
+ ...props
203
+ }) : /*#__PURE__*/ jsx(RootRelationRenderer, {
204
+ ...props
205
+ });
206
+ };
207
+ /* -------------------------------------------------------------------------------------------------
208
+ * RelationModal
209
+ * -----------------------------------------------------------------------------------------------*/ const generateCreateUrl = (currentDocumentMeta)=>{
210
+ return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : ''}`;
211
+ };
212
+ const RelationModal = ({ children })=>{
213
+ const { formatMessage } = useIntl();
214
+ const navigate = useNavigate();
215
+ const state = useRelationModal('RelationModalForm', (state)=>state.state);
216
+ const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
217
+ const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
218
+ const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
219
+ const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
220
+ /*
221
+ * We must wrap the modal window with Component Provider with reset values
222
+ * to avoid inheriting id and uid from the root document and having weird
223
+ * behaviors with simple relationships..
224
+ */ return /*#__PURE__*/ jsx(ComponentProvider, {
225
+ id: undefined,
226
+ level: -1,
227
+ uid: undefined,
228
+ type: undefined,
229
+ children: /*#__PURE__*/ jsxs(Modal.Root, {
230
+ open: state.isModalOpen,
231
+ onOpenChange: (open)=>{
232
+ if (!open) {
233
+ dispatch({
234
+ type: 'CLOSE_MODAL',
235
+ payload: {
236
+ shouldBypassConfirmation: false
237
+ }
238
+ });
239
+ }
240
+ },
241
+ children: [
242
+ children,
243
+ /*#__PURE__*/ jsxs(StyledModalContent, {
244
+ children: [
245
+ /*#__PURE__*/ jsx(Modal.Header, {
246
+ gap: 2,
247
+ children: /*#__PURE__*/ jsxs(Flex, {
248
+ justifyContent: "space-between",
249
+ alignItems: "center",
250
+ width: "100%",
251
+ children: [
252
+ /*#__PURE__*/ jsxs(Flex, {
253
+ gap: 2,
254
+ children: [
255
+ /*#__PURE__*/ jsx(IconButton, {
256
+ withTooltip: false,
257
+ label: formatMessage({
258
+ id: 'global.back',
259
+ defaultMessage: 'Back'
260
+ }),
261
+ variant: "ghost",
262
+ disabled: state.documentHistory.length < 2,
263
+ onClick: ()=>{
264
+ dispatch({
265
+ type: 'GO_BACK',
266
+ payload: {
267
+ shouldBypassConfirmation: false
268
+ }
269
+ });
270
+ },
271
+ marginRight: 1,
272
+ children: /*#__PURE__*/ jsx(ArrowLeft, {})
273
+ }),
274
+ /*#__PURE__*/ jsx(Typography, {
275
+ tag: "span",
276
+ fontWeight: 600,
277
+ children: isCreating ? formatMessage({
278
+ id: 'content-manager.relation.create',
279
+ defaultMessage: 'Create a relation'
280
+ }) : formatMessage({
281
+ id: 'content-manager.components.RelationInputModal.modal-title',
282
+ defaultMessage: 'Edit a relation'
283
+ })
284
+ })
285
+ ]
286
+ }),
287
+ /*#__PURE__*/ jsx(IconButton, {
288
+ onClick: ()=>{
289
+ dispatch({
290
+ type: 'GO_FULL_PAGE'
291
+ });
292
+ if (!state.hasUnsavedChanges) {
293
+ if (isCreating) {
294
+ navigate(generateCreateUrl(currentDocumentMeta));
295
+ } else {
296
+ navigate(getFullPageUrl(currentDocumentMeta));
297
+ }
298
+ }
299
+ },
300
+ variant: "tertiary",
301
+ label: formatMessage({
302
+ id: 'content-manager.components.RelationInputModal.button-fullpage',
303
+ defaultMessage: 'Go to entry'
304
+ }),
305
+ children: /*#__PURE__*/ jsx(ArrowsOut, {})
306
+ })
307
+ ]
308
+ })
309
+ }),
310
+ /*#__PURE__*/ jsx(Modal.Body, {
311
+ children: /*#__PURE__*/ jsx(Form, {
312
+ method: isCreating ? 'POST' : 'PUT',
313
+ initialValues: currentDocument.getInitialFormValues(isCreating),
314
+ validate: (values, options)=>{
315
+ const yupSchema = createYupSchema(currentDocument.schema?.attributes, currentDocument.components, {
316
+ status: currentDocument.document?.status,
317
+ ...options
318
+ });
319
+ return yupSchema.validate(values, {
320
+ abortEarly: false
321
+ });
322
+ },
323
+ children: /*#__PURE__*/ jsx(RelationModalBody, {})
324
+ })
325
+ })
326
+ ]
327
+ })
328
+ ]
329
+ })
330
+ });
331
+ };
332
+ /**
333
+ * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.
334
+ * Will be wrapped in a Modal.Body by the RelationModal component.
335
+ * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.
336
+ */ const RelationModalBody = ()=>{
36
337
  const navigate = useNavigate();
37
338
  const { pathname, search } = useLocation();
38
339
  const { formatMessage } = useIntl();
39
340
  const [triggerRefetchDocument] = useLazyGetDocumentQuery();
40
- const currentDocument = useDocumentContext('RelationModalForm', (state)=>state.document);
41
- const rootDocumentMeta = useDocumentContext('RelationModalForm', (state)=>state.rootDocumentMeta);
42
- const currentDocumentMeta = useDocumentContext('RelationModalForm', (state)=>state.meta);
43
- const changeDocument = useDocumentContext('RelationModalForm', (state)=>state.changeDocument);
44
- const documentHistory = useDocumentContext('RelationModalForm', (state)=>state.documentHistory);
45
- const setDocumentHistory = useDocumentContext('RelationModalForm', (state)=>state.setDocumentHistory);
46
- const [isConfirmationOpen, setIsConfirmationOpen] = React.useState(false);
47
- const [actionPosition, setActionPosition] = React.useState('cancel');
48
- const [isModalOpen, setIsModalOpen] = React.useState(false);
49
- // NOTE: Not sure about this relation modal context, maybe we should move this to DocumentContext?
50
- // Get parent modal context if it exists
51
- const parentContext = useRelationModal('RelationModalForm', (state)=>state);
52
- // Get depth of nested modals
53
- const depth = parentContext ? parentContext.depth + 1 : 0;
54
- // Check if this is a nested modal
55
- const isNested = depth > 0;
56
- const addDocumentToHistory = (document)=>setDocumentHistory((prev)=>[
57
- ...prev,
58
- document
59
- ]);
60
- const getPreviousDocument = ()=>{
61
- if (documentHistory.length === 0) return undefined;
62
- const lastDocument = documentHistory[documentHistory.length - 1];
63
- return lastDocument;
64
- };
65
- const removeLastDocumentFromHistory = ()=>{
66
- setDocumentHistory((prev)=>[
67
- ...prev
68
- ].slice(0, prev.length - 1));
69
- };
70
- const handleToggleModal = ()=>{
71
- if (isModalOpen) {
72
- setIsModalOpen(false);
73
- const document = {
74
- collectionType: rootDocumentMeta.collectionType,
75
- model: rootDocumentMeta.model,
76
- documentId: rootDocumentMeta.documentId
77
- };
78
- // Change back to the root document
79
- changeDocument(document);
80
- // Reset the document history
81
- setDocumentHistory([]);
82
- // Reset action position
83
- setActionPosition('cancel');
84
- // Read from cache or refetch root document
85
- triggerRefetchDocument(document, // Favor the cache
341
+ const state = useRelationModal('RelationModalForm', (state)=>state.state);
342
+ const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
343
+ const rootDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.rootDocumentMeta);
344
+ const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
345
+ const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
346
+ /**
347
+ * One-way sync the modified state from the form to the modal state.
348
+ * It is needed because we need to consume state from the form context in order to lift it up
349
+ * into the modal context. It is not possible otherwise because the modal needs the form state,
350
+ * but it must be a parent of the form.
351
+ */ const modified = useForm('FormWatcher', (state)=>state.modified);
352
+ const isSubmitting = useForm('FormWatcher', (state)=>state.isSubmitting);
353
+ const hasUnsavedChanges = modified && !isSubmitting;
354
+ React.useEffect(()=>{
355
+ dispatch({
356
+ type: 'SET_HAS_UNSAVED_CHANGES',
357
+ payload: {
358
+ hasUnsavedChanges
359
+ }
360
+ });
361
+ }, [
362
+ hasUnsavedChanges,
363
+ dispatch
364
+ ]);
365
+ const handleCloseModal = (shouldBypassConfirmation)=>{
366
+ dispatch({
367
+ type: 'CLOSE_MODAL',
368
+ payload: {
369
+ shouldBypassConfirmation
370
+ }
371
+ });
372
+ {
373
+ // TODO: check if we can avoid this by relying on RTK invalidatesTags.
374
+ // If so we can delete this function and dispatch the events directly
375
+ triggerRefetchDocument(// TODO check if params should be removed (as they were before)
376
+ rootDocumentMeta, // Favor the cache
86
377
  true);
87
- } else {
88
- changeDocument(relation);
89
- setIsModalOpen(true);
90
378
  }
91
379
  };
92
- const getFullPageLink = ()=>{
93
- const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;
94
- const queryParams = currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : '';
95
- return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;
96
- };
97
380
  const handleRedirection = ()=>{
98
381
  const editViewUrl = `${pathname}${search}`;
99
- const isRootDocumentUrl = editViewUrl.includes(getFullPageLink());
382
+ const fullPageUrl = getFullPageUrl(currentDocumentMeta);
383
+ const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);
100
384
  if (isRootDocumentUrl) {
101
- handleToggleModal();
385
+ handleCloseModal(true);
102
386
  } else {
103
- navigate(getFullPageLink());
387
+ if (isCreating) {
388
+ navigate(generateCreateUrl(currentDocumentMeta));
389
+ } else {
390
+ navigate(fullPageUrl);
391
+ }
104
392
  }
105
393
  };
106
394
  const handleConfirm = ()=>{
107
- if (actionPosition === 'navigate') {
108
- handleRedirection();
109
- } else if (actionPosition === 'back') {
110
- const previousRelation = getPreviousDocument();
111
- if (previousRelation) {
112
- removeLastDocumentFromHistory();
113
- changeDocument(previousRelation);
114
- }
115
- } else {
116
- // Add current relation to history before opening a new one in case we are opening a new one
117
- if (currentDocumentMeta && Object.keys(currentDocumentMeta).length > 0) {
118
- addDocumentToHistory(currentDocumentMeta);
119
- }
120
- handleToggleModal();
395
+ if (state.confirmDialogIntent === null) {
396
+ return;
121
397
  }
122
- };
123
- return /*#__PURE__*/ jsx(Form, {
124
- method: "PUT",
125
- initialValues: currentDocument.getInitialFormValues(),
126
- validate: (values, options)=>{
127
- const yupSchema = createYupSchema(currentDocument.schema?.attributes, currentDocument.components, {
128
- status: currentDocument.document?.status,
129
- ...options
398
+ if (state.confirmDialogIntent === 'navigate') {
399
+ handleRedirection();
400
+ } else if (state.confirmDialogIntent === 'back') {
401
+ dispatch({
402
+ type: 'GO_BACK',
403
+ payload: {
404
+ shouldBypassConfirmation: true
405
+ }
130
406
  });
131
- return yupSchema.validate(values, {
132
- abortEarly: false
407
+ } else if (state.confirmDialogIntent === 'close') {
408
+ handleCloseModal(true);
409
+ } else if ('documentId' in state.confirmDialogIntent) {
410
+ dispatch({
411
+ type: 'GO_TO_RELATION',
412
+ payload: {
413
+ document: state.confirmDialogIntent,
414
+ shouldBypassConfirmation: true
415
+ }
133
416
  });
134
- },
135
- children: ({ modified, isSubmitting, resetForm })=>{
136
- // We don't count the root document, so history starts after 1
137
- const hasHistory = documentHistory.length > 1;
138
- return /*#__PURE__*/ jsxs(RelationModalProvider, {
139
- parentModified: modified,
140
- depth: depth,
141
- children: [
142
- /*#__PURE__*/ jsxs(Modal.Root, {
143
- open: isModalOpen,
144
- onOpenChange: ()=>{
145
- if (isModalOpen) {
146
- if (modified && !isSubmitting) {
147
- setIsConfirmationOpen(true);
148
- } else {
149
- handleToggleModal();
150
- }
151
- }
152
- },
153
- children: [
154
- /*#__PURE__*/ jsx(Modal.Trigger, {
155
- children: /*#__PURE__*/ jsx(Tooltip, {
156
- description: triggerButtonLabel,
157
- children: /*#__PURE__*/ jsx(CustomTextButton, {
158
- onClick: ()=>{
159
- // Check if parent modal has unsaved changes
160
- if (isNested && parentContext.parentModified) {
161
- setIsConfirmationOpen(true);
162
- // Return early to avoid opening the modal
163
- return;
164
- } else {
165
- if (modified && !isSubmitting) {
166
- setIsConfirmationOpen(true);
167
- } else {
168
- // Add current relation to history before opening a new one
169
- if (currentDocumentMeta && Object.keys(currentDocumentMeta).length > 0) {
170
- addDocumentToHistory(currentDocumentMeta);
171
- }
172
- handleToggleModal();
173
- }
174
- if (!isModalOpen) {
175
- setIsModalOpen(true);
176
- }
177
- }
178
- },
179
- width: "100%",
180
- children: triggerButtonLabel
181
- })
182
- })
183
- }),
184
- /*#__PURE__*/ jsxs(CustomModalContent, {
185
- children: [
186
- /*#__PURE__*/ jsx(Modal.Header, {
187
- gap: 2,
188
- children: /*#__PURE__*/ jsx(Flex, {
189
- justifyContent: "space-between",
190
- alignItems: "center",
191
- width: "100%",
192
- children: /*#__PURE__*/ jsxs(Flex, {
193
- gap: 2,
194
- children: [
195
- /*#__PURE__*/ jsx(IconButton, {
196
- withTooltip: false,
197
- label: "Back",
198
- variant: "ghost",
199
- disabled: !hasHistory,
200
- onClick: ()=>{
201
- setActionPosition('back');
202
- if (modified && !isSubmitting) {
203
- setIsConfirmationOpen(true);
204
- } else {
205
- const previousRelation = getPreviousDocument();
206
- if (previousRelation) {
207
- removeLastDocumentFromHistory();
208
- changeDocument(previousRelation);
209
- }
210
- }
211
- },
212
- marginRight: 1,
213
- children: /*#__PURE__*/ jsx(ArrowLeft, {})
214
- }),
215
- /*#__PURE__*/ jsx(Typography, {
216
- tag: "span",
217
- fontWeight: 600,
218
- children: formatMessage({
219
- id: 'content-manager.components.RelationInputModal.modal-title',
220
- defaultMessage: 'Edit a relation'
221
- })
222
- })
223
- ]
224
- })
225
- })
226
- }),
227
- /*#__PURE__*/ jsx(RelationModalBody, {
228
- children: /*#__PURE__*/ jsx(IconButton, {
229
- onClick: ()=>{
230
- setActionPosition('navigate');
231
- if (modified && !isSubmitting) {
232
- setIsConfirmationOpen(true);
233
- } else {
234
- navigate(getFullPageLink());
235
- }
236
- },
237
- variant: "tertiary",
238
- label: formatMessage({
239
- id: 'content-manager.components.RelationInputModal.button-fullpage',
240
- defaultMessage: 'Go to entry'
241
- }),
242
- children: /*#__PURE__*/ jsx(ArrowsOut, {})
243
- })
244
- }),
245
- /*#__PURE__*/ jsx(Modal.Footer, {
246
- children: /*#__PURE__*/ jsx(Button, {
247
- onClick: ()=>{
248
- if (modified && !isSubmitting) {
249
- setIsConfirmationOpen(true);
250
- } else {
251
- handleToggleModal();
252
- }
253
- },
254
- variant: "tertiary",
255
- children: formatMessage({
256
- id: 'app.components.Button.cancel',
257
- defaultMessage: 'Cancel'
258
- })
259
- })
260
- })
261
- ]
262
- })
263
- ]
264
- }),
265
- /*#__PURE__*/ jsx(Dialog.Root, {
266
- open: isConfirmationOpen,
267
- onOpenChange: setIsConfirmationOpen,
268
- children: /*#__PURE__*/ jsx(ConfirmDialog, {
269
- onConfirm: ()=>{
270
- handleConfirm();
271
- setIsConfirmationOpen(false);
272
- resetForm();
273
- },
274
- onCancel: ()=>{
275
- setIsConfirmationOpen(false);
276
- },
277
- variant: "danger",
278
- children: formatMessage({
279
- id: 'content-manager.components.RelationInputModal.confirmation-message',
280
- defaultMessage: 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.'
281
- })
282
- })
417
+ }
418
+ };
419
+ return /*#__PURE__*/ jsxs(Fragment, {
420
+ children: [
421
+ /*#__PURE__*/ jsx(RelationModalForm, {}),
422
+ /*#__PURE__*/ jsx(Dialog.Root, {
423
+ open: state.confirmDialogIntent != null,
424
+ children: /*#__PURE__*/ jsx(ConfirmDialog, {
425
+ onConfirm: ()=>handleConfirm(),
426
+ onCancel: ()=>dispatch({
427
+ type: 'CANCEL_CONFIRM_DIALOG'
428
+ }),
429
+ variant: "danger",
430
+ children: formatMessage({
431
+ id: 'content-manager.components.RelationInputModal.confirmation-message',
432
+ defaultMessage: 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.'
283
433
  })
284
- ]
434
+ })
435
+ })
436
+ ]
437
+ });
438
+ };
439
+ const RelationModalTrigger = ({ children, relation })=>{
440
+ const dispatch = useRelationModal('ModalTrigger', (state)=>state.dispatch);
441
+ return /*#__PURE__*/ jsx(StyledTextButton, {
442
+ onClick: ()=>{
443
+ dispatch({
444
+ type: 'GO_TO_RELATION',
445
+ payload: {
446
+ document: relation,
447
+ shouldBypassConfirmation: false
448
+ }
285
449
  });
286
- }
450
+ },
451
+ children: children
287
452
  });
288
453
  };
289
- const CustomTextButton = styled(TextButton)`
454
+ const StyledTextButton = styled(TextButton)`
455
+ max-width: 100%;
290
456
  & > span {
291
457
  font-size: ${({ theme })=>theme.fontSizes[2]};
292
458
  width: inherit;
@@ -295,20 +461,23 @@ const CustomTextButton = styled(TextButton)`
295
461
  text-overflow: ellipsis;
296
462
  }
297
463
  `;
298
- const RelationModalBody = ({ children })=>{
464
+ /**
465
+ * The mini edit view for a relation that is displayed inside a modal.
466
+ * It's complete with its header, document actions and form layout.
467
+ */ const RelationModalForm = ()=>{
299
468
  const { formatMessage } = useIntl();
300
- const documentMeta = useDocumentContext('RelationModalBody', (state)=>state.meta);
301
- const documentResponse = useDocumentContext('RelationModalBody', (state)=>state.document);
302
- const onPreview = useDocumentContext('RelationModalBody', (state)=>state.onPreview);
303
- const documentLayoutResponse = useDocumentLayout(documentMeta.model);
304
- const plugins = useStrapiApp('RelationModalBody', (state)=>state.plugins);
305
- const initialValues = documentResponse.getInitialFormValues();
469
+ const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
470
+ const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
471
+ const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
472
+ const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);
473
+ const plugins = useStrapiApp('RelationModalForm', (state)=>state.plugins);
474
+ const initialValues = isCreating ? currentDocument.getInitialFormValues(isCreating) : currentDocument.getInitialFormValues();
306
475
  const { permissions = [], isLoading: isLoadingPermissions, error } = useRBAC(PERMISSIONS.map((action)=>({
307
476
  action,
308
- subject: documentMeta.model
477
+ subject: currentDocumentMeta.model
309
478
  })));
310
- const isLoading = isLoadingPermissions || documentLayoutResponse.isLoading || documentResponse.isLoading;
311
- if (isLoading && !documentResponse.document?.documentId) {
479
+ const isLoading = isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;
480
+ if (isLoading && !currentDocument.document?.documentId) {
312
481
  return /*#__PURE__*/ jsx(Loader, {
313
482
  small: true,
314
483
  children: formatMessage({
@@ -317,7 +486,7 @@ const RelationModalBody = ({ children })=>{
317
486
  })
318
487
  });
319
488
  }
320
- if (error || !documentMeta.model || documentLayoutResponse.error || !documentResponse.document || !documentResponse.meta || !documentResponse.schema || !initialValues) {
489
+ if (error || !currentDocumentMeta.model || documentLayoutResponse.error || !isCreating && !currentDocument.document || !isCreating && !currentDocument.meta || !currentDocument.schema || !initialValues) {
321
490
  return /*#__PURE__*/ jsx(Flex, {
322
491
  alignItems: "center",
323
492
  height: "100%",
@@ -333,106 +502,98 @@ const RelationModalBody = ({ children })=>{
333
502
  })
334
503
  });
335
504
  }
336
- const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);
337
- const hasDraftAndPublished = documentResponse.schema?.options?.draftAndPublish ?? false;
505
+ const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);
506
+ const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;
338
507
  const props = {
339
508
  activeTab: 'draft',
340
- collectionType: documentMeta.collectionType,
341
- model: documentMeta.model,
342
- documentId: documentMeta.documentId,
343
- document: documentResponse.document,
344
- meta: documentResponse.meta,
345
- onPreview,
346
- fromRelationModal: true,
347
- fromPreview: onPreview !== undefined
509
+ collectionType: currentDocumentMeta.collectionType,
510
+ model: currentDocumentMeta.model,
511
+ documentId: currentDocumentMeta.documentId,
512
+ document: currentDocument.document,
513
+ meta: currentDocument.meta
348
514
  };
349
- return /*#__PURE__*/ jsx(Modal.Body, {
350
- children: /*#__PURE__*/ jsxs(DocumentRBAC, {
351
- permissions: permissions,
352
- model: documentMeta.model,
353
- children: [
354
- /*#__PURE__*/ jsxs(Flex, {
355
- alignItems: "flex-start",
356
- direction: "column",
357
- gap: 2,
358
- children: [
359
- /*#__PURE__*/ jsxs(Flex, {
360
- width: "100%",
361
- justifyContent: "space-between",
362
- gap: 2,
363
- children: [
364
- /*#__PURE__*/ jsx(Typography, {
365
- tag: "h2",
366
- variant: "alpha",
367
- children: documentTitle
368
- }),
369
- /*#__PURE__*/ jsxs(Flex, {
370
- gap: 2,
371
- children: [
372
- children,
373
- /*#__PURE__*/ jsx(DescriptionComponentRenderer, {
374
- props: props,
375
- descriptions: plugins['content-manager'].apis.getDocumentActions('relation-modal'),
376
- children: (actions)=>{
377
- const filteredActions = actions.filter((action)=>{
378
- return [
379
- action.position
380
- ].flat().includes('relation-modal');
381
- });
382
- const [primaryAction, secondaryAction] = filteredActions;
383
- if (!primaryAction && !secondaryAction) return null;
384
- // Both actions are available when draft and publish enabled
385
- if (primaryAction && secondaryAction) {
386
- return /*#__PURE__*/ jsxs(Fragment, {
387
- children: [
388
- /*#__PURE__*/ jsx(DocumentActionButton, {
389
- ...secondaryAction,
390
- variant: secondaryAction.variant || 'secondary'
391
- }),
392
- /*#__PURE__*/ jsx(DocumentActionButton, {
393
- ...primaryAction,
394
- variant: primaryAction.variant || 'default'
395
- })
396
- ]
397
- });
398
- }
399
- // Otherwise we just have the save action
400
- return /*#__PURE__*/ jsx(DocumentActionButton, {
401
- ...primaryAction,
402
- variant: primaryAction.variant || 'secondary'
403
- });
404
- }
405
- })
406
- ]
515
+ return /*#__PURE__*/ jsxs(DocumentRBAC, {
516
+ permissions: permissions,
517
+ model: currentDocumentMeta.model,
518
+ children: [
519
+ /*#__PURE__*/ jsxs(Flex, {
520
+ alignItems: "flex-start",
521
+ direction: "column",
522
+ gap: 2,
523
+ children: [
524
+ /*#__PURE__*/ jsxs(Flex, {
525
+ width: "100%",
526
+ justifyContent: "space-between",
527
+ gap: 2,
528
+ children: [
529
+ /*#__PURE__*/ jsx(Typography, {
530
+ tag: "h2",
531
+ variant: "alpha",
532
+ children: documentTitle
533
+ }),
534
+ /*#__PURE__*/ jsx(Flex, {
535
+ gap: 2,
536
+ children: /*#__PURE__*/ jsx(DescriptionComponentRenderer, {
537
+ props: props,
538
+ descriptions: plugins['content-manager'].apis.getDocumentActions('relation-modal'),
539
+ children: (actions)=>{
540
+ const filteredActions = actions.filter((action)=>{
541
+ return [
542
+ action.position
543
+ ].flat().includes('relation-modal');
544
+ });
545
+ const [primaryAction, secondaryAction] = filteredActions;
546
+ if (!primaryAction && !secondaryAction) return null;
547
+ // Both actions are available when draft and publish enabled
548
+ if (primaryAction && secondaryAction) {
549
+ return /*#__PURE__*/ jsxs(Fragment, {
550
+ children: [
551
+ /*#__PURE__*/ jsx(DocumentActionButton, {
552
+ ...secondaryAction,
553
+ variant: secondaryAction.variant || 'secondary'
554
+ }),
555
+ /*#__PURE__*/ jsx(DocumentActionButton, {
556
+ ...primaryAction,
557
+ variant: primaryAction.variant || 'default'
558
+ })
559
+ ]
560
+ });
561
+ }
562
+ // Otherwise we just have the save action
563
+ return /*#__PURE__*/ jsx(DocumentActionButton, {
564
+ ...primaryAction,
565
+ variant: primaryAction.variant || 'secondary'
566
+ });
567
+ }
407
568
  })
408
- ]
409
- }),
410
- hasDraftAndPublished ? /*#__PURE__*/ jsx(Box, {
411
- children: /*#__PURE__*/ jsx(DocumentStatus, {
412
- status: documentResponse.document?.status
413
569
  })
414
- }) : null
415
- ]
416
- }),
417
- /*#__PURE__*/ jsx(Flex, {
418
- flex: 1,
419
- overflow: "auto",
420
- alignItems: "stretch",
421
- paddingTop: 7,
422
- children: /*#__PURE__*/ jsx(Box, {
423
- overflow: "auto",
424
- flex: 1,
425
- children: /*#__PURE__*/ jsx(FormLayout, {
426
- layout: documentLayoutResponse.edit.layout,
427
- document: documentResponse,
428
- hasBackground: false
570
+ ]
571
+ }),
572
+ hasDraftAndPublished ? /*#__PURE__*/ jsx(Box, {
573
+ children: /*#__PURE__*/ jsx(DocumentStatus, {
574
+ status: currentDocument.document?.status
429
575
  })
576
+ }) : null
577
+ ]
578
+ }),
579
+ /*#__PURE__*/ jsx(Flex, {
580
+ flex: 1,
581
+ overflow: "auto",
582
+ alignItems: "stretch",
583
+ paddingTop: 7,
584
+ children: /*#__PURE__*/ jsx(Box, {
585
+ overflow: "auto",
586
+ flex: 1,
587
+ children: /*#__PURE__*/ jsx(FormLayout, {
588
+ layout: documentLayoutResponse.edit.layout,
589
+ document: currentDocument,
590
+ hasBackground: false
430
591
  })
431
592
  })
432
- ]
433
- })
593
+ })
594
+ ]
434
595
  });
435
596
  };
436
597
 
437
- export { RelationModalForm, getCollectionType };
598
+ export { RelationModalRenderer, getCollectionType, reducer, useRelationModal };
438
599
  //# sourceMappingURL=RelationModal.mjs.map