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

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 (519) 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 +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
  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 +35 -28
  188. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  189. package/dist/admin/pages/EditView/components/InputRenderer.mjs +35 -28
  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/ConfirmBulkActionDialog.js +2 -1
  210. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  211. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  212. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  213. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  214. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  215. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  216. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  217. package/dist/admin/pages/ListView/components/Filters.js +8 -2
  218. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  219. package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
  220. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  221. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  222. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  223. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  224. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  225. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  226. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  227. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  228. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  229. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  230. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  231. package/dist/admin/preview/components/InputPopover.js +189 -0
  232. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  233. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  234. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  235. package/dist/admin/preview/components/PreviewHeader.js +2 -6
  236. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  237. package/dist/admin/preview/components/PreviewHeader.mjs +2 -6
  238. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  239. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  240. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  241. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  242. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  243. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  244. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  245. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  246. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  247. package/dist/admin/preview/pages/Preview.js +180 -84
  248. package/dist/admin/preview/pages/Preview.js.map +1 -1
  249. package/dist/admin/preview/pages/Preview.mjs +182 -86
  250. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  251. package/dist/admin/preview/services/preview.js.map +1 -1
  252. package/dist/admin/preview/services/preview.mjs.map +1 -1
  253. package/dist/admin/preview/utils/constants.js +56 -0
  254. package/dist/admin/preview/utils/constants.js.map +1 -0
  255. package/dist/admin/preview/utils/constants.mjs +52 -0
  256. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  257. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  258. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  259. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  260. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  261. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  262. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  263. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  264. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  265. package/dist/admin/preview/utils/previewScript.js +534 -0
  266. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  267. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  268. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  269. package/dist/admin/router.js.map +1 -1
  270. package/dist/admin/router.mjs.map +1 -1
  271. package/dist/admin/services/api.js +5 -1
  272. package/dist/admin/services/api.js.map +1 -1
  273. package/dist/admin/services/api.mjs +5 -1
  274. package/dist/admin/services/api.mjs.map +1 -1
  275. package/dist/admin/services/documents.js +59 -17
  276. package/dist/admin/services/documents.js.map +1 -1
  277. package/dist/admin/services/documents.mjs +59 -17
  278. package/dist/admin/services/documents.mjs.map +1 -1
  279. package/dist/admin/services/homepage.js +30 -0
  280. package/dist/admin/services/homepage.js.map +1 -0
  281. package/dist/admin/services/homepage.mjs +28 -0
  282. package/dist/admin/services/homepage.mjs.map +1 -0
  283. package/dist/admin/services/relations.js.map +1 -1
  284. package/dist/admin/services/relations.mjs.map +1 -1
  285. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  286. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  287. package/dist/admin/src/components/Widgets.d.ts +8 -0
  288. package/dist/admin/src/content-manager.d.ts +0 -3
  289. package/dist/admin/src/exports.d.ts +1 -0
  290. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  291. package/dist/admin/src/history/pages/History.d.ts +1 -1
  292. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  293. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  294. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  295. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  296. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  297. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  298. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  299. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  300. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  301. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  302. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  303. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
  304. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  305. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -2
  306. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  307. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  308. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  309. package/dist/admin/src/preview/pages/Preview.d.ts +14 -1
  310. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  311. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  312. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  313. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  314. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  315. package/dist/admin/src/services/api.d.ts +1 -1
  316. package/dist/admin/src/services/components.d.ts +2 -2
  317. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  318. package/dist/admin/src/services/documents.d.ts +23 -17
  319. package/dist/admin/src/services/homepage.d.ts +5 -0
  320. package/dist/admin/src/services/init.d.ts +1 -1
  321. package/dist/admin/src/services/relations.d.ts +2 -2
  322. package/dist/admin/src/services/uid.d.ts +3 -3
  323. package/dist/admin/src/utils/api.d.ts +1 -1
  324. package/dist/admin/src/utils/validation.d.ts +1 -0
  325. package/dist/admin/translations/en.json.js +15 -1
  326. package/dist/admin/translations/en.json.js.map +1 -1
  327. package/dist/admin/translations/en.json.mjs +15 -1
  328. package/dist/admin/translations/en.json.mjs.map +1 -1
  329. package/dist/admin/translations/es.json.js +6 -2
  330. package/dist/admin/translations/es.json.js.map +1 -1
  331. package/dist/admin/translations/es.json.mjs +6 -2
  332. package/dist/admin/translations/es.json.mjs.map +1 -1
  333. package/dist/admin/translations/fr.json.js +12 -3
  334. package/dist/admin/translations/fr.json.js.map +1 -1
  335. package/dist/admin/translations/fr.json.mjs +12 -3
  336. package/dist/admin/translations/fr.json.mjs.map +1 -1
  337. package/dist/admin/translations/ru.json.js +235 -226
  338. package/dist/admin/translations/ru.json.js.map +1 -1
  339. package/dist/admin/translations/ru.json.mjs +230 -226
  340. package/dist/admin/translations/ru.json.mjs.map +1 -1
  341. package/dist/admin/utils/api.js +1 -1
  342. package/dist/admin/utils/api.js.map +1 -1
  343. package/dist/admin/utils/api.mjs +1 -1
  344. package/dist/admin/utils/api.mjs.map +1 -1
  345. package/dist/admin/utils/translations.js.map +1 -1
  346. package/dist/admin/utils/translations.mjs.map +1 -1
  347. package/dist/admin/utils/urls.js.map +1 -1
  348. package/dist/admin/utils/urls.mjs.map +1 -1
  349. package/dist/admin/utils/users.js.map +1 -1
  350. package/dist/admin/utils/users.mjs.map +1 -1
  351. package/dist/admin/utils/validation.js +19 -7
  352. package/dist/admin/utils/validation.js.map +1 -1
  353. package/dist/admin/utils/validation.mjs +19 -7
  354. package/dist/admin/utils/validation.mjs.map +1 -1
  355. package/dist/server/controllers/collection-types.js +2 -1
  356. package/dist/server/controllers/collection-types.js.map +1 -1
  357. package/dist/server/controllers/collection-types.mjs +2 -1
  358. package/dist/server/controllers/collection-types.mjs.map +1 -1
  359. package/dist/server/controllers/content-types.js +11 -1
  360. package/dist/server/controllers/content-types.js.map +1 -1
  361. package/dist/server/controllers/content-types.mjs +11 -1
  362. package/dist/server/controllers/content-types.mjs.map +1 -1
  363. package/dist/server/controllers/index.js +3 -1
  364. package/dist/server/controllers/index.js.map +1 -1
  365. package/dist/server/controllers/index.mjs +3 -1
  366. package/dist/server/controllers/index.mjs.map +1 -1
  367. package/dist/server/controllers/relations.js +8 -6
  368. package/dist/server/controllers/relations.js.map +1 -1
  369. package/dist/server/controllers/relations.mjs +8 -6
  370. package/dist/server/controllers/relations.mjs.map +1 -1
  371. package/dist/server/controllers/single-types.js.map +1 -1
  372. package/dist/server/controllers/single-types.mjs.map +1 -1
  373. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  374. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  375. package/dist/server/controllers/validation/index.js +14 -2
  376. package/dist/server/controllers/validation/index.js.map +1 -1
  377. package/dist/server/controllers/validation/index.mjs +14 -2
  378. package/dist/server/controllers/validation/index.mjs.map +1 -1
  379. package/dist/server/history/services/lifecycles.js +23 -19
  380. package/dist/server/history/services/lifecycles.js.map +1 -1
  381. package/dist/server/history/services/lifecycles.mjs +23 -19
  382. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  383. package/dist/server/history/utils.js.map +1 -1
  384. package/dist/server/history/utils.mjs.map +1 -1
  385. package/dist/server/homepage/controllers/homepage.js +62 -0
  386. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  387. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  388. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  389. package/dist/server/homepage/controllers/index.js +10 -0
  390. package/dist/server/homepage/controllers/index.js.map +1 -0
  391. package/dist/server/homepage/controllers/index.mjs +8 -0
  392. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  393. package/dist/server/homepage/index.js +14 -0
  394. package/dist/server/homepage/index.js.map +1 -0
  395. package/dist/server/homepage/index.mjs +12 -0
  396. package/dist/server/homepage/index.mjs.map +1 -0
  397. package/dist/server/homepage/routes/homepage.js +36 -0
  398. package/dist/server/homepage/routes/homepage.js.map +1 -0
  399. package/dist/server/homepage/routes/homepage.mjs +34 -0
  400. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  401. package/dist/server/homepage/routes/index.js +13 -0
  402. package/dist/server/homepage/routes/index.js.map +1 -0
  403. package/dist/server/homepage/routes/index.mjs +11 -0
  404. package/dist/server/homepage/routes/index.mjs.map +1 -0
  405. package/dist/server/homepage/services/homepage.js +197 -0
  406. package/dist/server/homepage/services/homepage.js.map +1 -0
  407. package/dist/server/homepage/services/homepage.mjs +195 -0
  408. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  409. package/dist/server/homepage/services/index.js +10 -0
  410. package/dist/server/homepage/services/index.js.map +1 -0
  411. package/dist/server/homepage/services/index.mjs +8 -0
  412. package/dist/server/homepage/services/index.mjs.map +1 -0
  413. package/dist/server/middlewares/routing.js.map +1 -1
  414. package/dist/server/middlewares/routing.mjs.map +1 -1
  415. package/dist/server/preview/services/preview-config.js +11 -32
  416. package/dist/server/preview/services/preview-config.js.map +1 -1
  417. package/dist/server/preview/services/preview-config.mjs +12 -33
  418. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  419. package/dist/server/preview/services/preview.js +4 -1
  420. package/dist/server/preview/services/preview.js.map +1 -1
  421. package/dist/server/preview/services/preview.mjs +4 -1
  422. package/dist/server/preview/services/preview.mjs.map +1 -1
  423. package/dist/server/preview/utils.js.map +1 -1
  424. package/dist/server/preview/utils.mjs.map +1 -1
  425. package/dist/server/routes/index.js +3 -1
  426. package/dist/server/routes/index.js.map +1 -1
  427. package/dist/server/routes/index.mjs +3 -1
  428. package/dist/server/routes/index.mjs.map +1 -1
  429. package/dist/server/services/configuration.js.map +1 -1
  430. package/dist/server/services/configuration.mjs.map +1 -1
  431. package/dist/server/services/data-mapper.js +4 -1
  432. package/dist/server/services/data-mapper.js.map +1 -1
  433. package/dist/server/services/data-mapper.mjs +4 -1
  434. package/dist/server/services/data-mapper.mjs.map +1 -1
  435. package/dist/server/services/document-manager.js +8 -1
  436. package/dist/server/services/document-manager.js.map +1 -1
  437. package/dist/server/services/document-manager.mjs +8 -1
  438. package/dist/server/services/document-manager.mjs.map +1 -1
  439. package/dist/server/services/document-metadata.js +26 -2
  440. package/dist/server/services/document-metadata.js.map +1 -1
  441. package/dist/server/services/document-metadata.mjs +26 -2
  442. package/dist/server/services/document-metadata.mjs.map +1 -1
  443. package/dist/server/services/field-sizes.js.map +1 -1
  444. package/dist/server/services/field-sizes.mjs.map +1 -1
  445. package/dist/server/services/index.js +3 -1
  446. package/dist/server/services/index.js.map +1 -1
  447. package/dist/server/services/index.mjs +3 -1
  448. package/dist/server/services/index.mjs.map +1 -1
  449. package/dist/server/services/uid.js.map +1 -1
  450. package/dist/server/services/uid.mjs.map +1 -1
  451. package/dist/server/services/utils/configuration/attributes.js +1 -1
  452. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  453. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  454. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  455. package/dist/server/services/utils/configuration/layouts.js +1 -1
  456. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  457. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  458. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  459. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  460. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  461. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  462. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  463. package/dist/server/services/utils/populate.js +11 -0
  464. package/dist/server/services/utils/populate.js.map +1 -1
  465. package/dist/server/services/utils/populate.mjs +11 -0
  466. package/dist/server/services/utils/populate.mjs.map +1 -1
  467. package/dist/server/services/utils/store.js.map +1 -1
  468. package/dist/server/services/utils/store.mjs.map +1 -1
  469. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  470. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  471. package/dist/server/src/controllers/index.d.ts.map +1 -1
  472. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  473. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  474. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  475. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  476. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  477. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  478. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  479. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  480. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  481. package/dist/server/src/homepage/index.d.ts +23 -0
  482. package/dist/server/src/homepage/index.d.ts.map +1 -0
  483. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  484. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  485. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  486. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  487. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  488. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  489. package/dist/server/src/homepage/services/index.d.ts +16 -0
  490. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  491. package/dist/server/src/index.d.ts +15 -0
  492. package/dist/server/src/index.d.ts.map +1 -1
  493. package/dist/server/src/preview/services/index.d.ts +1 -0
  494. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  495. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  496. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  497. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  498. package/dist/server/src/preview/utils.d.ts +1 -0
  499. package/dist/server/src/preview/utils.d.ts.map +1 -1
  500. package/dist/server/src/routes/index.d.ts +1 -0
  501. package/dist/server/src/routes/index.d.ts.map +1 -1
  502. package/dist/server/src/services/data-mapper.d.ts +1 -0
  503. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  504. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  505. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  506. package/dist/server/src/services/index.d.ts +14 -0
  507. package/dist/server/src/services/index.d.ts.map +1 -1
  508. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  509. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  510. package/dist/shared/contracts/collection-types.d.ts +0 -1
  511. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  512. package/dist/shared/contracts/homepage.d.ts +38 -0
  513. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  514. package/package.json +12 -10
  515. package/dist/admin/features/DocumentContext.js +0 -71
  516. package/dist/admin/features/DocumentContext.js.map +0 -1
  517. package/dist/admin/features/DocumentContext.mjs +0 -49
  518. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  519. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -1 +1 @@
1
- {"version":3,"file":"RelationModal.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n Tooltip,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { type DocumentMeta, useDocumentContext } from '../../../../../features/DocumentContext';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\n\ninterface RelationModalProps {\n triggerButtonLabel: string;\n relation: DocumentMeta;\n}\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst CustomModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\ninterface RelationModalContextValue {\n parentModified: boolean;\n depth: number;\n}\n\nconst [RelationModalProvider, useRelationModal] = createContext<RelationModalContextValue>(\n 'RelationModal',\n {\n parentModified: false,\n depth: 0,\n }\n);\n\nconst RelationModalForm = ({ relation, triggerButtonLabel }: RelationModalProps) => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const currentDocument = useDocumentContext('RelationModalForm', (state) => state.document);\n const rootDocumentMeta = useDocumentContext(\n 'RelationModalForm',\n (state) => state.rootDocumentMeta\n );\n const currentDocumentMeta = useDocumentContext('RelationModalForm', (state) => state.meta);\n const changeDocument = useDocumentContext('RelationModalForm', (state) => state.changeDocument);\n const documentHistory = useDocumentContext('RelationModalForm', (state) => state.documentHistory);\n const setDocumentHistory = useDocumentContext(\n 'RelationModalForm',\n (state) => state.setDocumentHistory\n );\n\n const [isConfirmationOpen, setIsConfirmationOpen] = React.useState(false);\n const [actionPosition, setActionPosition] = React.useState<'cancel' | 'back' | 'navigate'>(\n 'cancel'\n );\n\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n // NOTE: Not sure about this relation modal context, maybe we should move this to DocumentContext?\n // Get parent modal context if it exists\n const parentContext = useRelationModal('RelationModalForm', (state) => state);\n // Get depth of nested modals\n const depth = parentContext ? parentContext.depth + 1 : 0;\n // Check if this is a nested modal\n const isNested = depth > 0;\n\n const addDocumentToHistory = (document: DocumentMeta) =>\n setDocumentHistory((prev) => [...prev, document]);\n\n const getPreviousDocument = () => {\n if (documentHistory.length === 0) return undefined;\n\n const lastDocument = documentHistory[documentHistory.length - 1];\n\n return lastDocument;\n };\n\n const removeLastDocumentFromHistory = () => {\n setDocumentHistory((prev) => [...prev].slice(0, prev.length - 1));\n };\n\n const handleToggleModal = () => {\n if (isModalOpen) {\n setIsModalOpen(false);\n const document = {\n collectionType: rootDocumentMeta.collectionType,\n model: rootDocumentMeta.model,\n documentId: rootDocumentMeta.documentId,\n };\n // Change back to the root document\n changeDocument(document);\n // Reset the document history\n setDocumentHistory([]);\n // Reset action position\n setActionPosition('cancel');\n // Read from cache or refetch root document\n triggerRefetchDocument(\n document,\n // Favor the cache\n true\n );\n } else {\n changeDocument(relation);\n setIsModalOpen(true);\n }\n };\n\n const getFullPageLink = (): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const isRootDocumentUrl = editViewUrl.includes(getFullPageLink());\n\n if (isRootDocumentUrl) {\n handleToggleModal();\n } else {\n navigate(getFullPageLink());\n }\n };\n\n const handleConfirm = () => {\n if (actionPosition === 'navigate') {\n handleRedirection();\n } else if (actionPosition === 'back') {\n const previousRelation = getPreviousDocument();\n if (previousRelation) {\n removeLastDocumentFromHistory();\n changeDocument(previousRelation);\n }\n } else {\n // Add current relation to history before opening a new one in case we are opening a new one\n if (currentDocumentMeta && Object.keys(currentDocumentMeta).length > 0) {\n addDocumentToHistory(currentDocumentMeta);\n }\n handleToggleModal();\n }\n };\n\n return (\n <FormContext\n method=\"PUT\"\n initialValues={currentDocument.getInitialFormValues()}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n {({ modified, isSubmitting, resetForm }) => {\n // We don't count the root document, so history starts after 1\n const hasHistory = documentHistory.length > 1;\n\n return (\n <RelationModalProvider parentModified={modified} depth={depth}>\n <Modal.Root\n open={isModalOpen}\n onOpenChange={() => {\n if (isModalOpen) {\n if (modified && !isSubmitting) {\n setIsConfirmationOpen(true);\n } else {\n handleToggleModal();\n }\n }\n }}\n >\n <Modal.Trigger>\n <Tooltip description={triggerButtonLabel}>\n <CustomTextButton\n onClick={() => {\n // Check if parent modal has unsaved changes\n if (isNested && parentContext.parentModified) {\n setIsConfirmationOpen(true);\n // Return early to avoid opening the modal\n return;\n } else {\n if (modified && !isSubmitting) {\n setIsConfirmationOpen(true);\n } else {\n // Add current relation to history before opening a new one\n if (currentDocumentMeta && Object.keys(currentDocumentMeta).length > 0) {\n addDocumentToHistory(currentDocumentMeta);\n }\n handleToggleModal();\n }\n\n if (!isModalOpen) {\n setIsModalOpen(true);\n }\n }\n }}\n width=\"100%\"\n >\n {triggerButtonLabel}\n </CustomTextButton>\n </Tooltip>\n </Modal.Trigger>\n <CustomModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label=\"Back\"\n variant=\"ghost\"\n disabled={!hasHistory}\n onClick={() => {\n setActionPosition('back');\n if (modified && !isSubmitting) {\n setIsConfirmationOpen(true);\n } else {\n const previousRelation = getPreviousDocument();\n if (previousRelation) {\n removeLastDocumentFromHistory();\n changeDocument(previousRelation);\n }\n }\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n </Flex>\n </Modal.Header>\n <RelationModalBody>\n <IconButton\n onClick={() => {\n setActionPosition('navigate');\n\n if (modified && !isSubmitting) {\n setIsConfirmationOpen(true);\n } else {\n navigate(getFullPageLink());\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </RelationModalBody>\n <Modal.Footer>\n <Button\n onClick={() => {\n if (modified && !isSubmitting) {\n setIsConfirmationOpen(true);\n } else {\n handleToggleModal();\n }\n }}\n variant=\"tertiary\"\n >\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Footer>\n </CustomModalContent>\n </Modal.Root>\n <Dialog.Root open={isConfirmationOpen} onOpenChange={setIsConfirmationOpen}>\n <ConfirmDialog\n onConfirm={() => {\n handleConfirm();\n setIsConfirmationOpen(false);\n resetForm();\n }}\n onCancel={() => {\n setIsConfirmationOpen(false);\n }}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </RelationModalProvider>\n );\n }}\n </FormContext>\n );\n};\n\nconst CustomTextButton = styled(TextButton)`\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\ninterface RelationModalBodyProps {\n /**\n * Additional modal actions such as \"Open in full page\"\n */\n children: React.ReactNode;\n}\n\nconst RelationModalBody = ({ children }: RelationModalBodyProps) => {\n const { formatMessage } = useIntl();\n\n const documentMeta = useDocumentContext('RelationModalBody', (state) => state.meta);\n const documentResponse = useDocumentContext('RelationModalBody', (state) => state.document);\n const onPreview = useDocumentContext('RelationModalBody', (state) => state.onPreview);\n const documentLayoutResponse = useDocumentLayout(documentMeta.model);\n const plugins = useStrapiApp('RelationModalBody', (state) => state.plugins);\n\n const initialValues = documentResponse.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: documentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (isLoading && !documentResponse.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !documentMeta.model ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = documentResponse.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: documentMeta.collectionType,\n model: documentMeta.model,\n documentId: documentMeta.documentId,\n document: documentResponse.document,\n meta: documentResponse.meta,\n onPreview,\n fromRelationModal: true,\n fromPreview: onPreview !== undefined,\n } satisfies DocumentActionProps;\n\n return (\n <Modal.Body>\n <DocumentRBAC permissions={permissions} model={documentMeta.model}>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n {children}\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={documentResponse.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n </Flex>\n </DocumentRBAC>\n </Modal.Body>\n );\n};\n\nexport { RelationModalForm };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","CustomModalContent","styled","Modal","Content","RelationModalProvider","useRelationModal","createContext","parentModified","depth","RelationModalForm","relation","triggerButtonLabel","navigate","useNavigate","pathname","search","useLocation","formatMessage","useIntl","triggerRefetchDocument","useLazyGetDocumentQuery","currentDocument","useDocumentContext","state","document","rootDocumentMeta","currentDocumentMeta","meta","changeDocument","documentHistory","setDocumentHistory","isConfirmationOpen","setIsConfirmationOpen","React","useState","actionPosition","setActionPosition","isModalOpen","setIsModalOpen","parentContext","isNested","addDocumentToHistory","prev","getPreviousDocument","length","lastDocument","removeLastDocumentFromHistory","slice","handleToggleModal","collectionType","model","documentId","getFullPageLink","isSingleType","queryParams","params","locale","handleRedirection","editViewUrl","isRootDocumentUrl","includes","handleConfirm","previousRelation","Object","keys","_jsx","FormContext","method","initialValues","getInitialFormValues","validate","values","options","yupSchema","createYupSchema","schema","attributes","components","status","abortEarly","modified","isSubmitting","resetForm","hasHistory","_jsxs","Root","open","onOpenChange","Trigger","Tooltip","description","CustomTextButton","onClick","width","Header","gap","Flex","justifyContent","alignItems","IconButton","withTooltip","label","variant","disabled","marginRight","ArrowLeft","Typography","tag","fontWeight","id","defaultMessage","RelationModalBody","ArrowsOut","Footer","Button","Dialog","ConfirmDialog","onConfirm","onCancel","TextButton","theme","fontSizes","children","documentMeta","documentResponse","onPreview","documentLayoutResponse","useDocumentLayout","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","action","subject","Loader","small","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","edit","settings","mainField","hasDraftAndPublished","draftAndPublish","props","activeTab","fromRelationModal","fromPreview","Body","DocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","filter","position","flat","primaryAction","secondaryAction","_Fragment","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","layout","hasBackground"],"mappings":";;;;;;;;;;;;;;;;;;;AA8CO,SAASA,kBAAkBC,GAAW,EAAA;IAC3C,MAAMC,KAAAA,GAAQ,IAAIC,MAAAA,CAAO,CAAC,CAAC,EAAEC,gBAAAA,CAAiB,CAAC,EAAEC,YAAa,CAAA,CAAC,CAAC,CAAA;IAChE,MAAMC,KAAAA,GAAQL,GAAIK,CAAAA,KAAK,CAACJ,KAAAA,CAAAA;AACxB,IAAA,OAAOI,KAAQA,GAAAA,KAAK,CAAC,CAAA,CAAE,GAAGC,SAAAA;AAC5B;AAEA,MAAMC,kBAAqBC,GAAAA,MAAAA,CAAOC,KAAMC,CAAAA,OAAO,CAAC;;;;;AAKhD,CAAC;AAOD,MAAM,CAACC,qBAAAA,EAAuBC,gBAAiB,CAAA,GAAGC,cAChD,eACA,EAAA;IACEC,cAAgB,EAAA,KAAA;IAChBC,KAAO,EAAA;AACT,CAAA,CAAA;AAGF,MAAMC,oBAAoB,CAAC,EAAEC,QAAQ,EAAEC,kBAAkB,EAAsB,GAAA;AAC7E,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGC,WAAAA,EAAAA;IAC7B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAM,CAACC,uBAAuB,GAAGC,uBAAAA,EAAAA;AAEjC,IAAA,MAAMC,kBAAkBC,kBAAmB,CAAA,mBAAA,EAAqB,CAACC,KAAAA,GAAUA,MAAMC,QAAQ,CAAA;AACzF,IAAA,MAAMC,mBAAmBH,kBACvB,CAAA,mBAAA,EACA,CAACC,KAAAA,GAAUA,MAAME,gBAAgB,CAAA;AAEnC,IAAA,MAAMC,sBAAsBJ,kBAAmB,CAAA,mBAAA,EAAqB,CAACC,KAAAA,GAAUA,MAAMI,IAAI,CAAA;AACzF,IAAA,MAAMC,iBAAiBN,kBAAmB,CAAA,mBAAA,EAAqB,CAACC,KAAAA,GAAUA,MAAMK,cAAc,CAAA;AAC9F,IAAA,MAAMC,kBAAkBP,kBAAmB,CAAA,mBAAA,EAAqB,CAACC,KAAAA,GAAUA,MAAMM,eAAe,CAAA;AAChG,IAAA,MAAMC,qBAAqBR,kBACzB,CAAA,mBAAA,EACA,CAACC,KAAAA,GAAUA,MAAMO,kBAAkB,CAAA;AAGrC,IAAA,MAAM,CAACC,kBAAoBC,EAAAA,qBAAAA,CAAsB,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACnE,IAAA,MAAM,CAACC,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAGH,KAAAA,CAAMC,QAAQ,CACxD,QAAA,CAAA;AAGF,IAAA,MAAM,CAACG,WAAaC,EAAAA,cAAAA,CAAe,GAAGL,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;;;AAGrD,IAAA,MAAMK,aAAgBlC,GAAAA,gBAAAA,CAAiB,mBAAqB,EAAA,CAACkB,KAAUA,GAAAA,KAAAA,CAAAA;;AAEvE,IAAA,MAAMf,KAAQ+B,GAAAA,aAAAA,GAAgBA,aAAc/B,CAAAA,KAAK,GAAG,CAAI,GAAA,CAAA;;AAExD,IAAA,MAAMgC,WAAWhC,KAAQ,GAAA,CAAA;AAEzB,IAAA,MAAMiC,oBAAuB,GAAA,CAACjB,QAC5BM,GAAAA,kBAAAA,CAAmB,CAACY,IAAS,GAAA;AAAIA,gBAAAA,GAAAA,IAAAA;AAAMlB,gBAAAA;AAAS,aAAA,CAAA;AAElD,IAAA,MAAMmB,mBAAsB,GAAA,IAAA;AAC1B,QAAA,IAAId,eAAgBe,CAAAA,MAAM,KAAK,CAAA,EAAG,OAAO7C,SAAAA;AAEzC,QAAA,MAAM8C,eAAehB,eAAe,CAACA,eAAgBe,CAAAA,MAAM,GAAG,CAAE,CAAA;QAEhE,OAAOC,YAAAA;AACT,KAAA;AAEA,IAAA,MAAMC,6BAAgC,GAAA,IAAA;AACpChB,QAAAA,kBAAAA,CAAmB,CAACY,IAAS,GAAA;AAAIA,gBAAAA,GAAAA;AAAK,aAAA,CAACK,KAAK,CAAC,CAAGL,EAAAA,IAAAA,CAAKE,MAAM,GAAG,CAAA,CAAA,CAAA;AAChE,KAAA;AAEA,IAAA,MAAMI,iBAAoB,GAAA,IAAA;AACxB,QAAA,IAAIX,WAAa,EAAA;YACfC,cAAe,CAAA,KAAA,CAAA;AACf,YAAA,MAAMd,QAAW,GAAA;AACfyB,gBAAAA,cAAAA,EAAgBxB,iBAAiBwB,cAAc;AAC/CC,gBAAAA,KAAAA,EAAOzB,iBAAiByB,KAAK;AAC7BC,gBAAAA,UAAAA,EAAY1B,iBAAiB0B;AAC/B,aAAA;;YAEAvB,cAAeJ,CAAAA,QAAAA,CAAAA;;AAEfM,YAAAA,kBAAAA,CAAmB,EAAE,CAAA;;YAErBM,iBAAkB,CAAA,QAAA,CAAA;;AAElBjB,YAAAA,sBAAAA,CACEK;AAEA,YAAA,IAAA,CAAA;SAEG,MAAA;YACLI,cAAelB,CAAAA,QAAAA,CAAAA;YACf4B,cAAe,CAAA,IAAA,CAAA;AACjB;AACF,KAAA;AAEA,IAAA,MAAMc,eAAkB,GAAA,IAAA;QACtB,MAAMC,YAAAA,GAAe3B,mBAAoBuB,CAAAA,cAAc,KAAKpD,YAAAA;AAC5D,QAAA,MAAMyD,WAAc5B,GAAAA,mBAAAA,CAAoB6B,MAAM,EAAEC,SAC5C,CAAC,uBAAuB,EAAE9B,mBAAAA,CAAoB6B,MAAM,CAACC,MAAM,CAAC,CAAC,GAC7D,EAAA;QAEJ,OAAO,CAAC,iBAAiB,EAAE9B,mBAAAA,CAAoBuB,cAAc,CAAC,CAAC,EAAEvB,mBAAoBwB,CAAAA,KAAK,CAAC,EAAEG,YAAAA,GAAe,KAAK,GAAM3B,GAAAA,mBAAAA,CAAoByB,UAAU,CAAC,EAAEG,YAAY,CAAC;AACvK,KAAA;AAEA,IAAA,MAAMG,iBAAoB,GAAA,IAAA;AACxB,QAAA,MAAMC,cAAc,CAAC,EAAE5C,QAAS,CAAA,EAAEC,OAAO,CAAC;QAC1C,MAAM4C,iBAAAA,GAAoBD,WAAYE,CAAAA,QAAQ,CAACR,eAAAA,EAAAA,CAAAA;AAE/C,QAAA,IAAIO,iBAAmB,EAAA;AACrBX,YAAAA,iBAAAA,EAAAA;SACK,MAAA;YACLpC,QAASwC,CAAAA,eAAAA,EAAAA,CAAAA;AACX;AACF,KAAA;AAEA,IAAA,MAAMS,aAAgB,GAAA,IAAA;AACpB,QAAA,IAAI1B,mBAAmB,UAAY,EAAA;AACjCsB,YAAAA,iBAAAA,EAAAA;SACK,MAAA,IAAItB,mBAAmB,MAAQ,EAAA;AACpC,YAAA,MAAM2B,gBAAmBnB,GAAAA,mBAAAA,EAAAA;AACzB,YAAA,IAAImB,gBAAkB,EAAA;AACpBhB,gBAAAA,6BAAAA,EAAAA;gBACAlB,cAAekC,CAAAA,gBAAAA,CAAAA;AACjB;SACK,MAAA;;AAEL,YAAA,IAAIpC,uBAAuBqC,MAAOC,CAAAA,IAAI,CAACtC,mBAAqBkB,CAAAA,CAAAA,MAAM,GAAG,CAAG,EAAA;gBACtEH,oBAAqBf,CAAAA,mBAAAA,CAAAA;AACvB;AACAsB,YAAAA,iBAAAA,EAAAA;AACF;AACF,KAAA;AAEA,IAAA,qBACEiB,GAACC,CAAAA,IAAAA,EAAAA;QACCC,MAAO,EAAA,KAAA;AACPC,QAAAA,aAAAA,EAAe/C,gBAAgBgD,oBAAoB,EAAA;AACnDC,QAAAA,QAAAA,EAAU,CAACC,MAAiCC,EAAAA,OAAAA,GAAAA;YAC1C,MAAMC,SAAAA,GAAYC,gBAChBrD,eAAgBsD,CAAAA,MAAM,EAAEC,UACxBvD,EAAAA,eAAAA,CAAgBwD,UAAU,EAC1B;gBACEC,MAAQzD,EAAAA,eAAAA,CAAgBG,QAAQ,EAAEsD,MAAAA;AAClC,gBAAA,GAAGN;AACL,aAAA,CAAA;YAGF,OAAOC,SAAAA,CAAUH,QAAQ,CAACC,MAAQ,EAAA;gBAAEQ,UAAY,EAAA;AAAM,aAAA,CAAA;AACxD,SAAA;AAEC,QAAA,QAAA,EAAA,CAAC,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,SAAS,EAAE,GAAA;;YAErC,MAAMC,UAAAA,GAAatD,eAAgBe,CAAAA,MAAM,GAAG,CAAA;AAE5C,YAAA,qBACEwC,IAAChF,CAAAA,qBAAAA,EAAAA;gBAAsBG,cAAgByE,EAAAA,QAAAA;gBAAUxE,KAAOA,EAAAA,KAAAA;;AACtD,kCAAA4E,IAAA,CAAClF,MAAMmF,IAAI,EAAA;wBACTC,IAAMjD,EAAAA,WAAAA;wBACNkD,YAAc,EAAA,IAAA;AACZ,4BAAA,IAAIlD,WAAa,EAAA;gCACf,IAAI2C,QAAAA,IAAY,CAACC,YAAc,EAAA;oCAC7BjD,qBAAsB,CAAA,IAAA,CAAA;iCACjB,MAAA;AACLgB,oCAAAA,iBAAAA,EAAAA;AACF;AACF;AACF,yBAAA;;AAEA,0CAAAiB,GAAA,CAAC/D,MAAMsF,OAAO,EAAA;AACZ,gCAAA,QAAA,gBAAAvB,GAACwB,CAAAA,OAAAA,EAAAA;oCAAQC,WAAa/E,EAAAA,kBAAAA;AACpB,oCAAA,QAAA,gBAAAsD,GAAC0B,CAAAA,gBAAAA,EAAAA;wCACCC,OAAS,EAAA,IAAA;;4CAEP,IAAIpD,QAAAA,IAAYD,aAAchC,CAAAA,cAAc,EAAE;gDAC5CyB,qBAAsB,CAAA,IAAA,CAAA;;AAEtB,gDAAA;6CACK,MAAA;gDACL,IAAIgD,QAAAA,IAAY,CAACC,YAAc,EAAA;oDAC7BjD,qBAAsB,CAAA,IAAA,CAAA;iDACjB,MAAA;;AAEL,oDAAA,IAAIN,uBAAuBqC,MAAOC,CAAAA,IAAI,CAACtC,mBAAqBkB,CAAAA,CAAAA,MAAM,GAAG,CAAG,EAAA;wDACtEH,oBAAqBf,CAAAA,mBAAAA,CAAAA;AACvB;AACAsB,oDAAAA,iBAAAA,EAAAA;AACF;AAEA,gDAAA,IAAI,CAACX,WAAa,EAAA;oDAChBC,cAAe,CAAA,IAAA,CAAA;AACjB;AACF;AACF,yCAAA;wCACAuD,KAAM,EAAA,MAAA;AAELlF,wCAAAA,QAAAA,EAAAA;;;;0CAIPyE,IAACpF,CAAAA,kBAAAA,EAAAA;;AACC,kDAAAiE,GAAA,CAAC/D,MAAM4F,MAAM,EAAA;wCAACC,GAAK,EAAA,CAAA;AACjB,wCAAA,QAAA,gBAAA9B,GAAC+B,CAAAA,IAAAA,EAAAA;4CAAKC,cAAe,EAAA,eAAA;4CAAgBC,UAAW,EAAA,QAAA;4CAASL,KAAM,EAAA,MAAA;AAC7D,4CAAA,QAAA,gBAAAT,IAACY,CAAAA,IAAAA,EAAAA;gDAAKD,GAAK,EAAA,CAAA;;kEACT9B,GAACkC,CAAAA,UAAAA,EAAAA;wDACCC,WAAa,EAAA,KAAA;wDACbC,KAAM,EAAA,MAAA;wDACNC,OAAQ,EAAA,OAAA;AACRC,wDAAAA,QAAAA,EAAU,CAACpB,UAAAA;wDACXS,OAAS,EAAA,IAAA;4DACPxD,iBAAkB,CAAA,MAAA,CAAA;4DAClB,IAAI4C,QAAAA,IAAY,CAACC,YAAc,EAAA;gEAC7BjD,qBAAsB,CAAA,IAAA,CAAA;6DACjB,MAAA;AACL,gEAAA,MAAM8B,gBAAmBnB,GAAAA,mBAAAA,EAAAA;AACzB,gEAAA,IAAImB,gBAAkB,EAAA;AACpBhB,oEAAAA,6BAAAA,EAAAA;oEACAlB,cAAekC,CAAAA,gBAAAA,CAAAA;AACjB;AACF;AACF,yDAAA;wDACA0C,WAAa,EAAA,CAAA;AAEb,wDAAA,QAAA,gBAAAvC,GAACwC,CAAAA,SAAAA,EAAAA,EAAAA;;kEAEHxC,GAACyC,CAAAA,UAAAA,EAAAA;wDAAWC,GAAI,EAAA,MAAA;wDAAOC,UAAY,EAAA,GAAA;kEAChC3F,aAAc,CAAA;4DACb4F,EAAI,EAAA,2DAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA;;;;;;kDAKR7C,GAAC8C,CAAAA,iBAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA9C,GAACkC,CAAAA,UAAAA,EAAAA;4CACCP,OAAS,EAAA,IAAA;gDACPxD,iBAAkB,CAAA,UAAA,CAAA;gDAElB,IAAI4C,QAAAA,IAAY,CAACC,YAAc,EAAA;oDAC7BjD,qBAAsB,CAAA,IAAA,CAAA;iDACjB,MAAA;oDACLpB,QAASwC,CAAAA,eAAAA,EAAAA,CAAAA;AACX;AACF,6CAAA;4CACAkD,OAAQ,EAAA,UAAA;AACRD,4CAAAA,KAAAA,EAAOpF,aAAc,CAAA;gDACnB4F,EAAI,EAAA,+DAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA,CAAA;AAEA,4CAAA,QAAA,gBAAA7C,GAAC+C,CAAAA,SAAAA,EAAAA,EAAAA;;;AAGL,kDAAA/C,GAAA,CAAC/D,MAAM+G,MAAM,EAAA;AACX,wCAAA,QAAA,gBAAAhD,GAACiD,CAAAA,MAAAA,EAAAA;4CACCtB,OAAS,EAAA,IAAA;gDACP,IAAIZ,QAAAA,IAAY,CAACC,YAAc,EAAA;oDAC7BjD,qBAAsB,CAAA,IAAA,CAAA;iDACjB,MAAA;AACLgB,oDAAAA,iBAAAA,EAAAA;AACF;AACF,6CAAA;4CACAsD,OAAQ,EAAA,UAAA;sDAEPrF,aAAc,CAAA;gDACb4F,EAAI,EAAA,8BAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;;;;;;AAKR,kCAAA7C,GAAA,CAACkD,OAAO9B,IAAI,EAAA;wBAACC,IAAMvD,EAAAA,kBAAAA;wBAAoBwD,YAAcvD,EAAAA,qBAAAA;AACnD,wBAAA,QAAA,gBAAAiC,GAACmD,CAAAA,aAAAA,EAAAA;4BACCC,SAAW,EAAA,IAAA;AACTxD,gCAAAA,aAAAA,EAAAA;gCACA7B,qBAAsB,CAAA,KAAA,CAAA;AACtBkD,gCAAAA,SAAAA,EAAAA;AACF,6BAAA;4BACAoC,QAAU,EAAA,IAAA;gCACRtF,qBAAsB,CAAA,KAAA,CAAA;AACxB,6BAAA;4BACAsE,OAAQ,EAAA,QAAA;sCAEPrF,aAAc,CAAA;gCACb4F,EAAI,EAAA,oEAAA;gCACJC,cACE,EAAA;AACJ,6BAAA;;;;;AAKV;;AAGN;AAEA,MAAMnB,gBAAAA,GAAmB1F,MAAOsH,CAAAA,UAAAA,CAAW;;eAE5B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC;;;;;;AAMnD,CAAC;AASD,MAAMV,iBAAoB,GAAA,CAAC,EAAEW,QAAQ,EAA0B,GAAA;IAC7D,MAAM,EAAEzG,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMyG,eAAerG,kBAAmB,CAAA,mBAAA,EAAqB,CAACC,KAAAA,GAAUA,MAAMI,IAAI,CAAA;AAClF,IAAA,MAAMiG,mBAAmBtG,kBAAmB,CAAA,mBAAA,EAAqB,CAACC,KAAAA,GAAUA,MAAMC,QAAQ,CAAA;AAC1F,IAAA,MAAMqG,YAAYvG,kBAAmB,CAAA,mBAAA,EAAqB,CAACC,KAAAA,GAAUA,MAAMsG,SAAS,CAAA;IACpF,MAAMC,sBAAAA,GAAyBC,iBAAkBJ,CAAAA,YAAAA,CAAazE,KAAK,CAAA;AACnE,IAAA,MAAM8E,UAAUC,YAAa,CAAA,mBAAA,EAAqB,CAAC1G,KAAAA,GAAUA,MAAMyG,OAAO,CAAA;IAE1E,MAAM5D,aAAAA,GAAgBwD,iBAAiBvD,oBAAoB,EAAA;AAE3D,IAAA,MAAM,EACJ6D,WAAc,GAAA,EAAE,EAChBC,SAAAA,EAAWC,oBAAoB,EAC/BC,KAAK,EACN,GAAGC,QACFC,WAAYC,CAAAA,GAAG,CAAC,CAACC,UAAY;AAC3BA,YAAAA,MAAAA;AACAC,YAAAA,OAAAA,EAASf,aAAazE;SACxB,CAAA,CAAA,CAAA;AAGF,IAAA,MAAMiF,YACJC,oBAAwBN,IAAAA,sBAAAA,CAAuBK,SAAS,IAAIP,iBAAiBO,SAAS;AACxF,IAAA,IAAIA,SAAa,IAAA,CAACP,gBAAiBpG,CAAAA,QAAQ,EAAE2B,UAAY,EAAA;AACvD,QAAA,qBACEc,GAAC0E,CAAAA,MAAAA,EAAAA;YAAOC,KAAK,EAAA,IAAA;sBACV3H,aAAc,CAAA;gBACb4F,EAAI,EAAA,gDAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA;;AAGN;IAEA,IACEuB,KAAAA,IACA,CAACV,YAAazE,CAAAA,KAAK,IACnB4E,sBAAuBO,CAAAA,KAAK,IAC5B,CAACT,gBAAAA,CAAiBpG,QAAQ,IAC1B,CAACoG,iBAAiBjG,IAAI,IACtB,CAACiG,gBAAiBjD,CAAAA,MAAM,IACxB,CAACP,aACD,EAAA;AACA,QAAA,qBACEH,GAAC+B,CAAAA,IAAAA,EAAAA;YAAKE,UAAW,EAAA,QAAA;YAAS2C,MAAO,EAAA,MAAA;YAAO5C,cAAe,EAAA,QAAA;AACrD,YAAA,QAAA,gBAAAhC,GAAC6E,CAAAA,gBAAAA,EAAAA;AACCC,gBAAAA,IAAAA,gBAAM9E,GAAC+E,CAAAA,aAAAA,EAAAA;oBAAcnD,KAAM,EAAA;;AAC3BoD,gBAAAA,OAAAA,EAAShI,aAAc,CAAA;oBACrB4F,EAAI,EAAA,iBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;;AAIR;IAEA,MAAMoC,aAAAA,GAAgBtB,iBAAiBuB,QAAQ,CAACrB,uBAAuBsB,IAAI,CAACC,QAAQ,CAACC,SAAS,CAAA;AAC9F,IAAA,MAAMC,oBAAuB3B,GAAAA,gBAAAA,CAAiBjD,MAAM,EAAEH,SAASgF,eAAmB,IAAA,KAAA;AAElF,IAAA,MAAMC,KAAQ,GAAA;QACZC,SAAW,EAAA,OAAA;AACXzG,QAAAA,cAAAA,EAAgB0E,aAAa1E,cAAc;AAC3CC,QAAAA,KAAAA,EAAOyE,aAAazE,KAAK;AACzBC,QAAAA,UAAAA,EAAYwE,aAAaxE,UAAU;AACnC3B,QAAAA,QAAAA,EAAUoG,iBAAiBpG,QAAQ;AACnCG,QAAAA,IAAAA,EAAMiG,iBAAiBjG,IAAI;AAC3BkG,QAAAA,SAAAA;QACA8B,iBAAmB,EAAA,IAAA;AACnBC,QAAAA,WAAAA,EAAa/B,SAAc9H,KAAAA;AAC7B,KAAA;IAEA,qBACEkE,GAAA,CAAC/D,MAAM2J,IAAI,EAAA;AACT,QAAA,QAAA,gBAAAzE,IAAC0E,CAAAA,YAAAA,EAAAA;YAAa5B,WAAaA,EAAAA,WAAAA;AAAahF,YAAAA,KAAAA,EAAOyE,aAAazE,KAAK;;8BAC/DkC,IAACY,CAAAA,IAAAA,EAAAA;oBAAKE,UAAW,EAAA,YAAA;oBAAa6D,SAAU,EAAA,QAAA;oBAAShE,GAAK,EAAA,CAAA;;sCACpDX,IAACY,CAAAA,IAAAA,EAAAA;4BAAKH,KAAM,EAAA,MAAA;4BAAOI,cAAe,EAAA,eAAA;4BAAgBF,GAAK,EAAA,CAAA;;8CACrD9B,GAACyC,CAAAA,UAAAA,EAAAA;oCAAWC,GAAI,EAAA,IAAA;oCAAKL,OAAQ,EAAA,OAAA;AAC1B4C,oCAAAA,QAAAA,EAAAA;;8CAEH9D,IAACY,CAAAA,IAAAA,EAAAA;oCAAKD,GAAK,EAAA,CAAA;;AACR2B,wCAAAA,QAAAA;sDACDzD,GAAC+F,CAAAA,4BAAAA,EAAAA;4CACCP,KAAOA,EAAAA,KAAAA;4CACPQ,YAAc,EACZjC,OAAO,CAAC,iBAAA,CAAkB,CAACkC,IAAI,CAC/BC,kBAAkB,CAAC,gBAAA,CAAA;sDAEpB,CAACC,OAAAA,GAAAA;AACA,gDAAA,MAAMC,eAAkBD,GAAAA,OAAAA,CAAQE,MAAM,CAAC,CAAC7B,MAAAA,GAAAA;oDACtC,OAAO;AAACA,wDAAAA,MAAAA,CAAO8B;qDAAS,CAACC,IAAI,EAAG5G,CAAAA,QAAQ,CAAC,gBAAA,CAAA;AAC3C,iDAAA,CAAA;gDACA,MAAM,CAAC6G,aAAeC,EAAAA,eAAAA,CAAgB,GAAGL,eAAAA;AAEzC,gDAAA,IAAI,CAACI,aAAAA,IAAiB,CAACC,eAAAA,EAAiB,OAAO,IAAA;;AAG/C,gDAAA,IAAID,iBAAiBC,eAAiB,EAAA;oDACpC,qBACEtF,IAAA,CAAAuF,QAAA,EAAA;;0EAEE1G,GAAC2G,CAAAA,oBAAAA,EAAAA;AACE,gEAAA,GAAGF,eAAe;gEACnBpE,OAASoE,EAAAA,eAAAA,CAAgBpE,OAAO,IAAI;;0EAGtCrC,GAAC2G,CAAAA,oBAAAA,EAAAA;AACE,gEAAA,GAAGH,aAAa;gEACjBnE,OAASmE,EAAAA,aAAAA,CAAcnE,OAAO,IAAI;;;;AAI1C;;AAGA,gDAAA,qBACErC,GAAC2G,CAAAA,oBAAAA,EAAAA;AACE,oDAAA,GAAGH,aAAa;oDACjBnE,OAASmE,EAAAA,aAAAA,CAAcnE,OAAO,IAAI;;AAGxC;;;;;;AAILiD,wBAAAA,oBAAAA,iBACCtF,GAAC4G,CAAAA,GAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAA5G,GAAC6G,CAAAA,cAAAA,EAAAA;gCAAehG,MAAQ8C,EAAAA,gBAAAA,CAAiBpG,QAAQ,EAAEsD;;AAEnD,yBAAA,CAAA,GAAA;;;8BAGNb,GAAC+B,CAAAA,IAAAA,EAAAA;oBAAK+E,IAAM,EAAA,CAAA;oBAAGC,QAAS,EAAA,MAAA;oBAAO9E,UAAW,EAAA,SAAA;oBAAU+E,UAAY,EAAA,CAAA;AAC9D,oBAAA,QAAA,gBAAAhH,GAAC4G,CAAAA,GAAAA,EAAAA;wBAAIG,QAAS,EAAA,MAAA;wBAAOD,IAAM,EAAA,CAAA;AACzB,wBAAA,QAAA,gBAAA9G,GAACiH,CAAAA,UAAAA,EAAAA;4BACCC,MAAQrD,EAAAA,sBAAAA,CAAuBsB,IAAI,CAAC+B,MAAM;4BAC1C3J,QAAUoG,EAAAA,gBAAAA;4BACVwD,aAAe,EAAA;;;;;;;AAO7B,CAAA;;;;"}
1
+ {"version":3,"file":"RelationModal.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n useForm,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { buildValidParams } from '../../../../../exports';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDoc, useDocument, type UseDocument } from '../../../../../hooks/useDocument';\nimport { type DocumentMeta } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\nimport { ComponentProvider } from '../ComponentContext';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\nconst getFullPageUrl = (currentDocumentMeta: DocumentMeta): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModalRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n documentHistory: DocumentMeta[];\n confirmDialogIntent:\n | null // No dialog\n | 'close' // Close the modal\n | 'back' // Go back one document in the modal's history\n | 'navigate' // Open the document in the edit view instead of in the modal\n | DocumentMeta; // Open a specific document in the modal\n isModalOpen: boolean;\n hasUnsavedChanges: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n}\n\ntype Action =\n | {\n type: 'GO_TO_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n };\n }\n | {\n type: 'GO_BACK';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'GO_FULL_PAGE';\n }\n | {\n type: 'GO_TO_CREATED_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n };\n }\n | {\n type: 'CANCEL_CONFIRM_DIALOG';\n }\n | {\n type: 'CLOSE_MODAL';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'SET_HAS_UNSAVED_CHANGES';\n payload: { hasUnsavedChanges: boolean };\n };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'GO_TO_RELATION':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return {\n ...state,\n confirmDialogIntent: action.payload.document,\n fieldToConnect: action.payload.fieldToConnect,\n fieldToConnectUID: action.payload.fieldToConnectUID,\n };\n }\n\n const lastItemDocumentHistory = state.documentHistory.at(-1);\n const hasToResetDocumentHistory =\n lastItemDocumentHistory && !lastItemDocumentHistory.documentId;\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: hasToResetDocumentHistory\n ? [action.payload.document]\n : [...state.documentHistory, action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,\n fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID,\n };\n case 'GO_BACK':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'back' };\n }\n\n return {\n ...state,\n documentHistory: state.documentHistory.slice(0, -1),\n confirmDialogIntent: null,\n };\n case 'GO_FULL_PAGE':\n if (state.hasUnsavedChanges) {\n return { ...state, confirmDialogIntent: 'navigate' };\n }\n\n return {\n ...state,\n documentHistory: [],\n hasUnsavedChanges: false,\n isModalOpen: false,\n confirmDialogIntent: null,\n };\n case 'GO_TO_CREATED_RELATION':\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: state.documentHistory\n ? [...state.documentHistory.slice(0, -1), action.payload.document]\n : [action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n };\n case 'CANCEL_CONFIRM_DIALOG':\n return {\n ...state,\n confirmDialogIntent: null,\n };\n case 'CLOSE_MODAL':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'close' };\n }\n\n return {\n ...state,\n documentHistory: [],\n confirmDialogIntent: null,\n hasUnsavedChanges: false,\n isModalOpen: false,\n };\n case 'SET_HAS_UNSAVED_CHANGES':\n return {\n ...state,\n hasUnsavedChanges: action.payload.hasUnsavedChanges,\n };\n default:\n return state;\n }\n}\n\ninterface RelationModalContextValue {\n state: State;\n dispatch: React.Dispatch<Action>;\n rootDocumentMeta: DocumentMeta;\n currentDocumentMeta: DocumentMeta;\n currentDocument: ReturnType<UseDocument>;\n onPreview?: () => void;\n isCreating: boolean;\n}\n\nconst [RelationModalProvider, useRelationModal] =\n createContext<RelationModalContextValue>('RelationModal');\n\nfunction isRenderProp(\n children: RelationModalRendererProps['children']\n): children is (props: { dispatch: (action: Action) => void }) => React.ReactNode {\n return typeof children === 'function';\n}\n\ntype RelationModalRendererProps =\n // Is editing\n | {\n relation: DocumentMeta;\n children: React.ReactNode;\n }\n // Is creating\n | {\n relation?: never;\n children: (props: { dispatch: (action: Action) => void }) => React.ReactNode;\n };\n\nconst RootRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n\n const [state, dispatch] = React.useReducer(reducer, {\n documentHistory: [],\n confirmDialogIntent: null,\n isModalOpen: false,\n hasUnsavedChanges: false,\n fieldToConnect: undefined,\n });\n\n const rootDocument = useDoc();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query ?? {}), [query]);\n\n const rootDocumentMeta: DocumentMeta = {\n documentId: rootDocument.document?.documentId || '',\n model: rootDocument.model,\n collectionType: rootDocument.collectionType,\n params,\n };\n\n const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;\n const currentDocument = useDocument(currentDocumentMeta);\n // TODO: check if we can remove the single type check\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const isCreating = !currentDocumentMeta.documentId && !isSingleType;\n /**\n * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the\n * pieces that will be used by potential child relations: the context, header, form, and footer.\n */\n return (\n <RelationModalProvider\n state={state}\n dispatch={dispatch}\n rootDocumentMeta={rootDocumentMeta}\n currentDocumentMeta={currentDocumentMeta}\n currentDocument={currentDocument}\n isCreating={isCreating}\n >\n <RelationModal>\n {isRenderProp(children)\n ? children({ dispatch })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n )}\n </RelationModal>\n </RelationModalProvider>\n );\n};\n\nconst NestedRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n const dispatch = useRelationModal('NestedRelation', (state) => state.dispatch);\n\n return isRenderProp(children)\n ? children({ dispatch })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n ); /* This is the trigger that will be rendered in the parent relation */\n};\n\n/**\n * Component responsible for rendering its children wrapped in a modal, form and context if needed\n */\nconst RelationModalRenderer = (props: RelationModalRendererProps) => {\n // We're in a nested relation if the relation modal context is not undefined\n const isNested = useRelationModal('RelationContextWrapper', (state) => state != undefined, false);\n\n return isNested ? <NestedRelationRenderer {...props} /> : <RootRelationRenderer {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModal\n * -----------------------------------------------------------------------------------------------*/\nconst generateCreateUrl = (currentDocumentMeta: DocumentMeta) => {\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${\n currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : ''\n }`;\n};\n\nconst RelationModal = ({ children }: { children: React.ReactNode }) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /*\n * We must wrap the modal window with Component Provider with reset values\n * to avoid inheriting id and uid from the root document and having weird\n * behaviors with simple relationships..\n */\n return (\n <ComponentProvider id={undefined} level={-1} uid={undefined} type={undefined}>\n <Modal.Root\n open={state.isModalOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({\n type: 'CLOSE_MODAL',\n payload: { shouldBypassConfirmation: false },\n });\n }\n }}\n >\n {children}\n <StyledModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label={formatMessage({ id: 'global.back', defaultMessage: 'Back' })}\n variant=\"ghost\"\n disabled={state.documentHistory.length < 2}\n onClick={() => {\n dispatch({\n type: 'GO_BACK',\n payload: { shouldBypassConfirmation: false },\n });\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {isCreating\n ? formatMessage({\n id: 'content-manager.relation.create',\n defaultMessage: 'Create a relation',\n })\n : formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n <IconButton\n onClick={() => {\n dispatch({\n type: 'GO_FULL_PAGE',\n });\n if (!state.hasUnsavedChanges) {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(getFullPageUrl(currentDocumentMeta));\n }\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <FormContext\n method={isCreating ? 'POST' : 'PUT'}\n initialValues={currentDocument.getInitialFormValues(isCreating)}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <RelationModalBody />\n </FormContext>\n </Modal.Body>\n </StyledModalContent>\n </Modal.Root>\n </ComponentProvider>\n );\n};\n/**\n * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.\n * Will be wrapped in a Modal.Body by the RelationModal component.\n * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.\n */\nconst RelationModalBody = () => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /**\n * One-way sync the modified state from the form to the modal state.\n * It is needed because we need to consume state from the form context in order to lift it up\n * into the modal context. It is not possible otherwise because the modal needs the form state,\n * but it must be a parent of the form.\n */\n const modified = useForm('FormWatcher', (state) => state.modified);\n const isSubmitting = useForm('FormWatcher', (state) => state.isSubmitting);\n const hasUnsavedChanges = modified && !isSubmitting;\n React.useEffect(() => {\n dispatch({ type: 'SET_HAS_UNSAVED_CHANGES', payload: { hasUnsavedChanges } });\n }, [hasUnsavedChanges, dispatch]);\n\n const handleCloseModal = (shouldBypassConfirmation: boolean) => {\n dispatch({ type: 'CLOSE_MODAL', payload: { shouldBypassConfirmation } });\n\n if (shouldBypassConfirmation || !state.hasUnsavedChanges) {\n // TODO: check if we can avoid this by relying on RTK invalidatesTags.\n // If so we can delete this function and dispatch the events directly\n triggerRefetchDocument(\n // TODO check if params should be removed (as they were before)\n rootDocumentMeta,\n // Favor the cache\n true\n );\n }\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const fullPageUrl = getFullPageUrl(currentDocumentMeta);\n const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);\n\n if (isRootDocumentUrl) {\n handleCloseModal(true);\n } else {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(fullPageUrl);\n }\n }\n };\n\n const handleConfirm = () => {\n if (state.confirmDialogIntent === null) {\n return;\n }\n if (state.confirmDialogIntent === 'navigate') {\n handleRedirection();\n } else if (state.confirmDialogIntent === 'back') {\n dispatch({ type: 'GO_BACK', payload: { shouldBypassConfirmation: true } });\n } else if (state.confirmDialogIntent === 'close') {\n handleCloseModal(true);\n } else if ('documentId' in state.confirmDialogIntent) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: state.confirmDialogIntent, shouldBypassConfirmation: true },\n });\n }\n };\n\n return (\n <>\n <RelationModalForm />\n <Dialog.Root open={state.confirmDialogIntent != null}>\n <ConfirmDialog\n onConfirm={() => handleConfirm()}\n onCancel={() => dispatch({ type: 'CANCEL_CONFIRM_DIALOG' })}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n\nconst RelationModalTrigger = ({\n children,\n relation,\n}: {\n children: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const dispatch = useRelationModal('ModalTrigger', (state) => state.dispatch);\n\n return (\n <StyledTextButton\n onClick={() => {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n });\n }}\n >\n {children}\n </StyledTextButton>\n );\n};\n\nconst StyledTextButton = styled(TextButton)`\n max-width: 100%;\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\n/**\n * The mini edit view for a relation that is displayed inside a modal.\n * It's complete with its header, document actions and form layout.\n */\nconst RelationModalForm = () => {\n const { formatMessage } = useIntl();\n\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);\n const plugins = useStrapiApp('RelationModalForm', (state) => state.plugins);\n\n const initialValues = isCreating\n ? currentDocument.getInitialFormValues(isCreating)\n : currentDocument.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: currentDocumentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;\n\n if (isLoading && !currentDocument.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !currentDocumentMeta.model ||\n documentLayoutResponse.error ||\n (!isCreating && !currentDocument.document) ||\n (!isCreating && !currentDocument.meta) ||\n !currentDocument.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: currentDocumentMeta.collectionType,\n model: currentDocumentMeta.model,\n documentId: currentDocumentMeta.documentId,\n document: currentDocument.document,\n meta: currentDocument.meta,\n } satisfies DocumentActionProps;\n\n return (\n <DocumentRBAC permissions={permissions} model={currentDocumentMeta.model}>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={currentDocument.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={currentDocument}\n hasBackground={false}\n />\n </Box>\n </Flex>\n </DocumentRBAC>\n );\n};\n\nexport { reducer, RelationModalRenderer, useRelationModal };\nexport type { State, Action };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","StyledModalContent","styled","Modal","Content","getFullPageUrl","currentDocumentMeta","isSingleType","collectionType","queryParams","params","locale","model","documentId","reducer","state","action","type","hasUnsavedChanges","payload","shouldBypassConfirmation","confirmDialogIntent","document","fieldToConnect","fieldToConnectUID","lastItemDocumentHistory","documentHistory","at","hasToResetDocumentHistory","isModalOpen","slice","RelationModalProvider","useRelationModal","createContext","isRenderProp","children","RootRelationRenderer","props","dispatch","React","useReducer","rootDocument","useDoc","query","useQueryParams","useMemo","buildValidParams","rootDocumentMeta","currentDocument","useDocument","isCreating","_jsx","RelationModal","relation","RelationModalTrigger","NestedRelationRenderer","RelationModalRenderer","isNested","generateCreateUrl","formatMessage","useIntl","navigate","useNavigate","ComponentProvider","id","level","uid","_jsxs","Root","open","onOpenChange","Header","gap","Flex","justifyContent","alignItems","width","IconButton","withTooltip","label","defaultMessage","variant","disabled","length","onClick","marginRight","ArrowLeft","Typography","tag","fontWeight","ArrowsOut","Body","FormContext","method","initialValues","getInitialFormValues","validate","values","options","yupSchema","createYupSchema","schema","attributes","components","status","abortEarly","RelationModalBody","pathname","search","useLocation","triggerRefetchDocument","useLazyGetDocumentQuery","modified","useForm","isSubmitting","useEffect","handleCloseModal","handleRedirection","editViewUrl","fullPageUrl","isRootDocumentUrl","includes","handleConfirm","_Fragment","RelationModalForm","Dialog","ConfirmDialog","onConfirm","onCancel","StyledTextButton","TextButton","theme","fontSizes","documentLayoutResponse","useDocumentLayout","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","subject","Loader","small","meta","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","edit","settings","mainField","hasDraftAndPublished","draftAndPublish","activeTab","DocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","filter","position","flat","primaryAction","secondaryAction","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","layout","hasBackground"],"mappings":"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"}
@@ -13,11 +13,13 @@ var reactWindow = require('react-window');
13
13
  var styledComponents = require('styled-components');
14
14
  var collections = require('../../../../../constants/collections.js');
15
15
  var dragAndDrop = require('../../../../../constants/dragAndDrop.js');
16
- var DocumentContext = require('../../../../../features/DocumentContext.js');
16
+ var plugin = require('../../../../../constants/plugin.js');
17
+ var DocumentRBAC = require('../../../../../features/DocumentRBAC.js');
17
18
  var useDebounce = require('../../../../../hooks/useDebounce.js');
19
+ var useDocument = require('../../../../../hooks/useDocument.js');
20
+ var useDocumentContext = require('../../../../../hooks/useDocumentContext.js');
18
21
  var useDragAndDrop = require('../../../../../hooks/useDragAndDrop.js');
19
22
  var relations = require('../../../../../services/relations.js');
20
- var api = require('../../../../../utils/api.js');
21
23
  var relations$1 = require('../../../../../utils/relations.js');
22
24
  var translations = require('../../../../../utils/translations.js');
23
25
  var DocumentStatus = require('../../DocumentStatus.js');
@@ -96,17 +98,11 @@ const ONE_WAY_RELATIONS = [
96
98
  * At present we do not expose this to plugin developers, however, they are able to overwrite it themselves should
97
99
  * they wish to do so.
98
100
  */ const RelationsField = /*#__PURE__*/ React__namespace.forwardRef(({ disabled, label, ...props }, ref)=>{
99
- const currentDocumentMeta = DocumentContext.useDocumentContext('RelationsField', (state)=>state.meta);
100
- const currentDocument = DocumentContext.useDocumentContext('RelationsField', (state)=>state.document);
101
- const rootDocumentMeta = DocumentContext.useDocumentContext('RelationsField', (state)=>state.rootDocumentMeta);
101
+ const { currentDocument, currentDocumentMeta } = useDocumentContext.useDocumentContext('RelationsField');
102
102
  const [currentPage, setCurrentPage] = React__namespace.useState(1);
103
- const isRootDocument = rootDocumentMeta.documentId === currentDocumentMeta.documentId;
104
- const documentMeta = isRootDocument ? rootDocumentMeta : currentDocumentMeta;
105
103
  // Use the documentId from the actual document, not the params (meta)
106
104
  const documentId = currentDocument.document?.documentId;
107
105
  const { formatMessage } = reactIntl.useIntl();
108
- const [{ query }] = strapiAdmin.useQueryParams();
109
- const params = documentMeta.params ?? api.buildValidParams(query);
110
106
  const isMorph = props.attribute.relation.toLowerCase().includes('morph');
111
107
  const isDisabled = isMorph || disabled;
112
108
  const { componentId, componentUID } = ComponentContext.useComponent('RelationsField', ({ uid, id })=>({
@@ -123,8 +119,9 @@ const ONE_WAY_RELATIONS = [
123
119
  /**
124
120
  * We'll always have a documentId in a created entry, so we look for a componentId first.
125
121
  * Same with `uid` and `documentModel`.
126
- */ const model = component ? component.uid : documentMeta.model;
127
- const id = component && componentId ? componentId.toString() : documentId;
122
+ * The componentId is empty when adding a new component in a repeatable. Let it be null to skip isRelatedToCurrentDocument
123
+ */ const model = component ? component.uid : currentDocumentMeta.model;
124
+ const id = component ? componentId?.toString() : documentId;
128
125
  /**
129
126
  * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.
130
127
  * Where the above example would a nested field within two components, however
@@ -143,7 +140,7 @@ const ONE_WAY_RELATIONS = [
143
140
  // below we don't run the query if there is no id.
144
141
  id,
145
142
  params: {
146
- ...params,
143
+ ...currentDocumentMeta.params,
147
144
  pageSize: RELATIONS_TO_DISPLAY,
148
145
  page: currentPage
149
146
  }
@@ -215,7 +212,8 @@ const ONE_WAY_RELATIONS = [
215
212
  apiData: {
216
213
  id: relation.id,
217
214
  documentId: relation.documentId,
218
- locale: relation.locale
215
+ locale: relation.locale,
216
+ isTemporary: true
219
217
  },
220
218
  status: relation.status,
221
219
  /**
@@ -287,7 +285,8 @@ const ONE_WAY_RELATIONS = [
287
285
  isLoading: isFetchingMoreRelations,
288
286
  relationType: props.attribute.relation,
289
287
  // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
290
- targetModel: props.attribute.targetModel
288
+ targetModel: props.attribute.targetModel,
289
+ mainField: props.mainField
291
290
  })
292
291
  ]
293
292
  });
@@ -331,19 +330,13 @@ const ONE_WAY_RELATIONS = [
331
330
  * @description Contains all the logic for the combobox that can search
332
331
  * for relations and then add them to the field's connect array.
333
332
  */ const RelationsInput = ({ hint, id, model, label, labelAction, name, mainField, placeholder, required, unique: _unique, 'aria-label': _ariaLabel, onChange, isRelatedToCurrentDocument, ...props })=>{
334
- const [textValue, setTextValue] = React__namespace.useState('');
335
333
  const [searchParams, setSearchParams] = React__namespace.useState({
336
334
  _q: '',
337
335
  page: 1
338
336
  });
339
337
  const { toggleNotification } = strapiAdmin.useNotification();
340
- const [{ query }] = strapiAdmin.useQueryParams();
341
- const currentDocumentMeta = DocumentContext.useDocumentContext('RelationsInput', (state)=>state.meta);
342
- const rootDocumentMeta = DocumentContext.useDocumentContext('RelationsInput', (state)=>state.rootDocumentMeta);
343
- const isRootDocument = rootDocumentMeta.documentId === currentDocumentMeta.documentId;
344
- const documentMeta = isRootDocument ? rootDocumentMeta : currentDocumentMeta;
338
+ const { currentDocumentMeta } = useDocumentContext.useDocumentContext('RelationsInput');
345
339
  const { formatMessage } = reactIntl.useIntl();
346
- const fieldRef = strapiAdmin.useFocusInputField(name);
347
340
  const field = strapiAdmin.useField(name);
348
341
  const searchParamsDebounced = useDebounce.useDebounce(searchParams, 300);
349
342
  const [searchForTrigger, { data, isLoading }] = relations.useLazySearchRelationsQuery();
@@ -361,12 +354,11 @@ const ONE_WAY_RELATIONS = [
361
354
  */ const [targetField] = name.split('.').slice(-1);
362
355
  // Return early if there is no relation to the document
363
356
  if (!isRelatedToCurrentDocument) return;
364
- const params = documentMeta.params ?? api.buildValidParams(query);
365
357
  searchForTrigger({
366
358
  model,
367
359
  targetField,
368
360
  params: {
369
- ...params,
361
+ ...currentDocumentMeta.params,
370
362
  id: id ?? '',
371
363
  pageSize: 10,
372
364
  idsToInclude: field.value?.disconnect?.map((rel)=>rel.id.toString()) ?? [],
@@ -380,19 +372,11 @@ const ONE_WAY_RELATIONS = [
380
372
  id,
381
373
  model,
382
374
  name,
383
- query,
384
375
  searchForTrigger,
385
376
  searchParamsDebounced,
386
377
  isRelatedToCurrentDocument,
387
- documentMeta
378
+ currentDocumentMeta.params
388
379
  ]);
389
- const handleSearch = async (search)=>{
390
- setSearchParams((s)=>({
391
- ...s,
392
- _q: search,
393
- page: 1
394
- }));
395
- };
396
380
  const hasNextPage = data?.pagination ? data.pagination.page < data.pagination.pageCount : false;
397
381
  const options = data?.results ?? [];
398
382
  const handleChange = (relationId)=>{
@@ -420,6 +404,74 @@ const ONE_WAY_RELATIONS = [
420
404
  *
421
405
  */ onChange(relation);
422
406
  };
407
+ const relation = {
408
+ collectionType: collections.COLLECTION_TYPES,
409
+ // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
410
+ model: props.attribute.targetModel,
411
+ documentId: '',
412
+ params: currentDocumentMeta.params
413
+ };
414
+ const { permissions = [], isLoading: isLoadingPermissions, error } = strapiAdmin.useRBAC(plugin.PERMISSIONS.map((action)=>({
415
+ action,
416
+ subject: relation.model
417
+ })));
418
+ if (error) {
419
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
420
+ alignItems: "center",
421
+ height: "100%",
422
+ justifyContent: "center",
423
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
424
+ icon: /*#__PURE__*/ jsxRuntime.jsx(Icons.WarningCircle, {
425
+ width: "16rem"
426
+ }),
427
+ content: formatMessage({
428
+ id: 'anErrorOccurred',
429
+ defaultMessage: 'Whoops! Something went wrong. Please, try again.'
430
+ })
431
+ })
432
+ });
433
+ }
434
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
435
+ error: field.error,
436
+ hint: hint,
437
+ name: name,
438
+ required: required,
439
+ children: [
440
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
441
+ action: labelAction,
442
+ children: label
443
+ }),
444
+ /*#__PURE__*/ jsxRuntime.jsx(DocumentRBAC.DocumentRBAC, {
445
+ permissions: permissions,
446
+ model: relation.model,
447
+ children: /*#__PURE__*/ jsxRuntime.jsx(RelationModalWithContext, {
448
+ relation: relation,
449
+ name: name,
450
+ placeholder: placeholder,
451
+ hasNextPage: hasNextPage,
452
+ isLoadingPermissions: isLoadingPermissions,
453
+ isLoadingSearchRelations: isLoading,
454
+ handleChange: handleChange,
455
+ setSearchParams: setSearchParams,
456
+ data: data,
457
+ mainField: mainField,
458
+ fieldValue: field.value,
459
+ ...props
460
+ })
461
+ }),
462
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {}),
463
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Hint, {})
464
+ ]
465
+ });
466
+ };
467
+ const RelationModalWithContext = ({ relation, name, placeholder, hasNextPage, isLoadingSearchRelations, isLoadingPermissions, handleChange, mainField, setSearchParams, fieldValue, data, ...props })=>{
468
+ const [textValue, setTextValue] = React__namespace.useState('');
469
+ const { formatMessage } = reactIntl.useIntl();
470
+ const canCreate = DocumentRBAC.useDocumentRBAC('RelationModalWrapper', (state)=>state.canCreate);
471
+ const fieldRef = strapiAdmin.useFocusInputField(name);
472
+ const { componentUID } = ComponentContext.useComponent('RelationsField', ({ uid })=>({
473
+ componentUID: uid
474
+ }));
423
475
  const handleLoadMore = ()=>{
424
476
  if (!data || !data.pagination) {
425
477
  return;
@@ -430,31 +482,55 @@ const ONE_WAY_RELATIONS = [
430
482
  }));
431
483
  }
432
484
  };
485
+ const options = data?.results ?? [];
433
486
  React__namespace.useLayoutEffect(()=>{
434
487
  setTextValue('');
435
488
  }, [
436
- field.value
489
+ fieldValue
437
490
  ]);
438
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
439
- error: field.error,
440
- hint: hint,
441
- name: name,
442
- required: required,
443
- children: [
444
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
445
- action: labelAction,
446
- children: label
447
- }),
448
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Combobox, {
491
+ const handleSearch = async (search)=>{
492
+ setSearchParams((s)=>({
493
+ ...s,
494
+ _q: search,
495
+ page: 1
496
+ }));
497
+ };
498
+ return /*#__PURE__*/ jsxRuntime.jsx(RelationModal.RelationModalRenderer, {
499
+ children: ({ dispatch })=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Combobox, {
449
500
  ref: fieldRef,
501
+ creatable: "visible",
502
+ creatableDisabled: !canCreate,
503
+ createMessage: ()=>formatMessage({
504
+ id: translations.getTranslation('relation.create'),
505
+ defaultMessage: 'Create a relation'
506
+ }),
507
+ onCreateOption: ()=>{
508
+ if (canCreate) {
509
+ dispatch({
510
+ type: 'GO_TO_RELATION',
511
+ payload: {
512
+ document: relation,
513
+ shouldBypassConfirmation: false,
514
+ fieldToConnect: name,
515
+ fieldToConnectUID: componentUID
516
+ }
517
+ });
518
+ }
519
+ },
520
+ creatableStartIcon: /*#__PURE__*/ jsxRuntime.jsx(Icons.Plus, {
521
+ fill: "neutral500"
522
+ }),
450
523
  name: name,
451
- autocomplete: "list",
524
+ autocomplete: {
525
+ type: 'list',
526
+ filter: 'contains'
527
+ },
452
528
  placeholder: placeholder || formatMessage({
453
529
  id: translations.getTranslation('relation.add'),
454
530
  defaultMessage: 'Add relation'
455
531
  }),
456
532
  hasMoreItems: hasNextPage,
457
- loading: isLoading,
533
+ loading: isLoadingSearchRelations || isLoadingPermissions,
458
534
  onOpenChange: ()=>{
459
535
  handleSearch(textValue ?? '');
460
536
  },
@@ -476,7 +552,7 @@ const ONE_WAY_RELATIONS = [
476
552
  handleSearch(event.currentTarget.value);
477
553
  },
478
554
  ...props,
479
- children: options.map((opt)=>{
555
+ children: options?.map((opt)=>{
480
556
  const textValue = relations$1.getRelationLabel(opt, mainField);
481
557
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.ComboboxOption, {
482
558
  value: opt.id.toString(),
@@ -485,9 +561,17 @@ const ONE_WAY_RELATIONS = [
485
561
  gap: 2,
486
562
  justifyContent: "space-between",
487
563
  children: [
488
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
489
- ellipsis: true,
490
- children: textValue
564
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
565
+ gap: 2,
566
+ children: [
567
+ /*#__PURE__*/ jsxRuntime.jsx(Icons.Link, {
568
+ fill: "neutral500"
569
+ }),
570
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
571
+ ellipsis: true,
572
+ children: textValue
573
+ })
574
+ ]
491
575
  }),
492
576
  opt.status ? /*#__PURE__*/ jsxRuntime.jsx(DocumentStatus.DocumentStatus, {
493
577
  status: opt.status
@@ -496,17 +580,14 @@ const ONE_WAY_RELATIONS = [
496
580
  })
497
581
  }, opt.id);
498
582
  })
499
- }),
500
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {}),
501
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Hint, {})
502
- ]
583
+ })
503
584
  });
504
585
  };
505
586
  /* -------------------------------------------------------------------------------------------------
506
587
  * RelationsList
507
588
  * -----------------------------------------------------------------------------------------------*/ const RELATION_ITEM_HEIGHT = 50;
508
589
  const RELATION_GUTTER = 4;
509
- const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel })=>{
590
+ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel, mainField })=>{
510
591
  const ariaDescriptionId = React__namespace.useId();
511
592
  const { formatMessage } = reactIntl.useIntl();
512
593
  const listRef = React__namespace.useRef(null);
@@ -592,6 +673,7 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
592
673
  id: relation.id,
593
674
  documentId: relation.documentId ?? relation.apiData?.documentId ?? '',
594
675
  locale: relation.locale || relation.apiData?.locale,
676
+ isTemporary: relation.apiData?.isTemporary,
595
677
  position
596
678
  }
597
679
  }
@@ -671,7 +753,8 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
671
753
  name,
672
754
  handleDisconnect,
673
755
  relations: data,
674
- targetModel
756
+ targetModel,
757
+ mainField
675
758
  },
676
759
  itemKey: (index)=>data[index].id,
677
760
  innerElementType: "ol",
@@ -712,9 +795,27 @@ const ShadowBox = styledComponents.styled(designSystem.Box)`
712
795
  }
713
796
  `;
714
797
  const ListItem = ({ data, index, style })=>{
715
- const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel } = data;
798
+ const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel, mainField } = data;
799
+ const isDesktop = strapiAdmin.useIsDesktop();
800
+ const { currentDocumentMeta } = useDocumentContext.useDocumentContext('RelationsField');
716
801
  const { formatMessage } = reactIntl.useIntl();
717
- const { href, id, label, status, documentId, apiData, locale } = relations[index];
802
+ const { href, id, label: originalLabel, status: originalStatus, documentId, apiData, locale } = relations[index];
803
+ /**
804
+ * The code above attempts to retrieve the updated value of a relation that has not yet been saved.
805
+ * This is necessary when a relation modal is opened, and the mainField or its status is updated.
806
+ * These changes need to be reflected in the initial relation field.
807
+ */ const collectionType = RelationModal.getCollectionType(href);
808
+ const isTemporary = apiData?.isTemporary ?? false;
809
+ const { document } = useDocument.useDocument({
810
+ collectionType,
811
+ model: targetModel,
812
+ documentId: documentId ?? apiData?.documentId,
813
+ params: currentDocumentMeta.params
814
+ }, {
815
+ skip: !isTemporary
816
+ });
817
+ const label = isTemporary && document ? relations$1.getRelationLabel(document, mainField) : originalLabel;
818
+ const status = isTemporary && document ? document?.status : originalStatus;
718
819
  const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop.useDragAndDrop(canDrag && !disabled, {
719
820
  type: `${dragAndDrop.ItemTypes.RELATION}_${name}`,
720
821
  index,
@@ -736,6 +837,21 @@ const ListItem = ({ data, index, style })=>{
736
837
  }, [
737
838
  dragPreviewRef
738
839
  ]);
840
+ const safeDocumentId = documentId ?? apiData?.documentId;
841
+ const safeLocale = locale ?? apiData?.locale ?? null;
842
+ const documentMeta = React__namespace.useMemo(()=>({
843
+ documentId: safeDocumentId,
844
+ model: targetModel,
845
+ collectionType: RelationModal.getCollectionType(href),
846
+ params: {
847
+ locale: safeLocale
848
+ }
849
+ }), [
850
+ safeDocumentId,
851
+ href,
852
+ safeLocale,
853
+ targetModel
854
+ ]);
739
855
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
740
856
  style: style,
741
857
  tag: "li",
@@ -757,7 +873,7 @@ const ListItem = ({ data, index, style })=>{
757
873
  /*#__PURE__*/ jsxRuntime.jsxs(FlexWrapper, {
758
874
  gap: 1,
759
875
  children: [
760
- canDrag ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
876
+ canDrag && isDesktop ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
761
877
  tag: "div",
762
878
  role: "button",
763
879
  tabIndex: 0,
@@ -774,23 +890,17 @@ const ListItem = ({ data, index, style })=>{
774
890
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
775
891
  width: "100%",
776
892
  minWidth: 0,
893
+ gap: 4,
777
894
  justifyContent: "space-between",
778
895
  children: [
779
896
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
897
+ flex: 1,
780
898
  minWidth: 0,
781
899
  paddingTop: 1,
782
900
  paddingBottom: 1,
783
- paddingRight: 4,
784
- children: /*#__PURE__*/ jsxRuntime.jsx(RelationModal.RelationModalForm, {
785
- triggerButtonLabel: label,
786
- relation: {
787
- documentId: documentId ?? apiData?.documentId,
788
- model: targetModel,
789
- collectionType: RelationModal.getCollectionType(href),
790
- params: {
791
- locale: locale || apiData?.locale || null
792
- }
793
- }
901
+ children: /*#__PURE__*/ jsxRuntime.jsx(RelationModal.RelationModalRenderer, {
902
+ relation: documentMeta,
903
+ children: label
794
904
  })
795
905
  }),
796
906
  status ? /*#__PURE__*/ jsxRuntime.jsx(DocumentStatus.DocumentStatus, {