@strapi/content-manager 0.0.0-next.3dfa46a688dac778822b4cb229acfc1ce41e71ed → 0.0.0-next.3e666b1ad96ac2e82634e548e10ea7c7797a7474

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 (308) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +34 -30
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +36 -32
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/components/Widgets.js +161 -0
  10. package/dist/admin/components/Widgets.js.map +1 -0
  11. package/dist/admin/components/Widgets.mjs +158 -0
  12. package/dist/admin/components/Widgets.mjs.map +1 -0
  13. package/dist/admin/content-manager.js.map +1 -1
  14. package/dist/admin/content-manager.mjs.map +1 -1
  15. package/dist/admin/history/components/VersionContent.js +24 -3
  16. package/dist/admin/history/components/VersionContent.js.map +1 -1
  17. package/dist/admin/history/components/VersionContent.mjs +25 -4
  18. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  19. package/dist/admin/history/components/VersionHeader.js +6 -0
  20. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  21. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  22. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  23. package/dist/admin/history/pages/History.js +1 -9
  24. package/dist/admin/history/pages/History.js.map +1 -1
  25. package/dist/admin/history/pages/History.mjs +1 -9
  26. package/dist/admin/history/pages/History.mjs.map +1 -1
  27. package/dist/admin/hooks/useDocumentActions.js +20 -5
  28. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  29. package/dist/admin/hooks/useDocumentActions.mjs +20 -5
  30. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  31. package/dist/admin/hooks/useDocumentContext.js +57 -0
  32. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  33. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  34. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  35. package/dist/admin/index.js +42 -5
  36. package/dist/admin/index.js.map +1 -1
  37. package/dist/admin/index.mjs +42 -3
  38. package/dist/admin/index.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/EditViewPage.js +100 -91
  40. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  41. package/dist/admin/pages/EditView/EditViewPage.mjs +102 -93
  42. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/DocumentActions.js +288 -104
  44. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/DocumentActions.mjs +294 -110
  46. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  58. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  68. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  70. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +17 -4
  72. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +18 -5
  74. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -21
  76. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +25 -23
  78. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  80. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  82. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +506 -345
  84. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +506 -347
  86. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +174 -68
  88. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +178 -72
  90. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  92. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  94. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  98. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  100. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  102. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  104. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  106. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  108. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  110. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -10
  112. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -10
  114. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/utils/data.js +103 -0
  116. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  117. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  118. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  119. package/dist/admin/pages/ListView/ListViewPage.js +77 -0
  120. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  121. package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
  122. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  123. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  124. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  125. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  126. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  127. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  128. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  129. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  130. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  131. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  132. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  133. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  134. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  135. package/dist/admin/preview/components/PreviewHeader.js +3 -6
  136. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  137. package/dist/admin/preview/components/PreviewHeader.mjs +3 -6
  138. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  139. package/dist/admin/preview/pages/Preview.js +94 -102
  140. package/dist/admin/preview/pages/Preview.js.map +1 -1
  141. package/dist/admin/preview/pages/Preview.mjs +94 -102
  142. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  143. package/dist/admin/services/documents.js +2 -2
  144. package/dist/admin/services/documents.js.map +1 -1
  145. package/dist/admin/services/documents.mjs +2 -2
  146. package/dist/admin/services/documents.mjs.map +1 -1
  147. package/dist/admin/services/homepage.js +30 -0
  148. package/dist/admin/services/homepage.js.map +1 -0
  149. package/dist/admin/services/homepage.mjs +28 -0
  150. package/dist/admin/services/homepage.mjs.map +1 -0
  151. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  152. package/dist/admin/src/components/Widgets.d.ts +3 -0
  153. package/dist/admin/src/content-manager.d.ts +0 -3
  154. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  155. package/dist/admin/src/history/pages/History.d.ts +1 -1
  156. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  157. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  158. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  159. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  160. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  161. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  162. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  163. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  164. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  165. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  166. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  167. package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
  168. package/dist/admin/src/services/documents.d.ts +7 -1
  169. package/dist/admin/src/services/homepage.d.ts +5 -0
  170. package/dist/admin/src/utils/validation.d.ts +1 -0
  171. package/dist/admin/translations/en.json.js +3 -1
  172. package/dist/admin/translations/en.json.js.map +1 -1
  173. package/dist/admin/translations/en.json.mjs +3 -1
  174. package/dist/admin/translations/en.json.mjs.map +1 -1
  175. package/dist/admin/translations/ru.json.js +235 -226
  176. package/dist/admin/translations/ru.json.js.map +1 -1
  177. package/dist/admin/translations/ru.json.mjs +230 -226
  178. package/dist/admin/translations/ru.json.mjs.map +1 -1
  179. package/dist/admin/utils/validation.js +17 -6
  180. package/dist/admin/utils/validation.js.map +1 -1
  181. package/dist/admin/utils/validation.mjs +17 -6
  182. package/dist/admin/utils/validation.mjs.map +1 -1
  183. package/dist/server/controllers/content-types.js +11 -1
  184. package/dist/server/controllers/content-types.js.map +1 -1
  185. package/dist/server/controllers/content-types.mjs +11 -1
  186. package/dist/server/controllers/content-types.mjs.map +1 -1
  187. package/dist/server/controllers/index.js +3 -1
  188. package/dist/server/controllers/index.js.map +1 -1
  189. package/dist/server/controllers/index.mjs +3 -1
  190. package/dist/server/controllers/index.mjs.map +1 -1
  191. package/dist/server/controllers/validation/index.js +14 -2
  192. package/dist/server/controllers/validation/index.js.map +1 -1
  193. package/dist/server/controllers/validation/index.mjs +14 -2
  194. package/dist/server/controllers/validation/index.mjs.map +1 -1
  195. package/dist/server/history/services/lifecycles.js +3 -0
  196. package/dist/server/history/services/lifecycles.js.map +1 -1
  197. package/dist/server/history/services/lifecycles.mjs +3 -0
  198. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  199. package/dist/server/homepage/controllers/homepage.js +57 -0
  200. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  201. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  202. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  203. package/dist/server/homepage/controllers/index.js +10 -0
  204. package/dist/server/homepage/controllers/index.js.map +1 -0
  205. package/dist/server/homepage/controllers/index.mjs +8 -0
  206. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  207. package/dist/server/homepage/index.js +14 -0
  208. package/dist/server/homepage/index.js.map +1 -0
  209. package/dist/server/homepage/index.mjs +12 -0
  210. package/dist/server/homepage/index.mjs.map +1 -0
  211. package/dist/server/homepage/routes/homepage.js +25 -0
  212. package/dist/server/homepage/routes/homepage.js.map +1 -0
  213. package/dist/server/homepage/routes/homepage.mjs +23 -0
  214. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  215. package/dist/server/homepage/routes/index.js +13 -0
  216. package/dist/server/homepage/routes/index.js.map +1 -0
  217. package/dist/server/homepage/routes/index.mjs +11 -0
  218. package/dist/server/homepage/routes/index.mjs.map +1 -0
  219. package/dist/server/homepage/services/homepage.js +157 -0
  220. package/dist/server/homepage/services/homepage.js.map +1 -0
  221. package/dist/server/homepage/services/homepage.mjs +155 -0
  222. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  223. package/dist/server/homepage/services/index.js +10 -0
  224. package/dist/server/homepage/services/index.js.map +1 -0
  225. package/dist/server/homepage/services/index.mjs +8 -0
  226. package/dist/server/homepage/services/index.mjs.map +1 -0
  227. package/dist/server/preview/services/preview.js +0 -1
  228. package/dist/server/preview/services/preview.js.map +1 -1
  229. package/dist/server/preview/services/preview.mjs +0 -1
  230. package/dist/server/preview/services/preview.mjs.map +1 -1
  231. package/dist/server/routes/index.js +3 -1
  232. package/dist/server/routes/index.js.map +1 -1
  233. package/dist/server/routes/index.mjs +3 -1
  234. package/dist/server/routes/index.mjs.map +1 -1
  235. package/dist/server/services/data-mapper.js +4 -1
  236. package/dist/server/services/data-mapper.js.map +1 -1
  237. package/dist/server/services/data-mapper.mjs +4 -1
  238. package/dist/server/services/data-mapper.mjs.map +1 -1
  239. package/dist/server/services/document-manager.js +8 -1
  240. package/dist/server/services/document-manager.js.map +1 -1
  241. package/dist/server/services/document-manager.mjs +8 -1
  242. package/dist/server/services/document-manager.mjs.map +1 -1
  243. package/dist/server/services/document-metadata.js +3 -1
  244. package/dist/server/services/document-metadata.js.map +1 -1
  245. package/dist/server/services/document-metadata.mjs +3 -1
  246. package/dist/server/services/document-metadata.mjs.map +1 -1
  247. package/dist/server/services/index.js +3 -1
  248. package/dist/server/services/index.js.map +1 -1
  249. package/dist/server/services/index.mjs +3 -1
  250. package/dist/server/services/index.mjs.map +1 -1
  251. package/dist/server/services/utils/configuration/attributes.js +1 -1
  252. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  253. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  254. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  255. package/dist/server/services/utils/configuration/layouts.js +1 -1
  256. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  257. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  258. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  259. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  260. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  261. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  262. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  263. package/dist/server/services/utils/populate.js +11 -0
  264. package/dist/server/services/utils/populate.js.map +1 -1
  265. package/dist/server/services/utils/populate.mjs +11 -0
  266. package/dist/server/services/utils/populate.mjs.map +1 -1
  267. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  268. package/dist/server/src/controllers/index.d.ts.map +1 -1
  269. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  270. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  271. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  272. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  273. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  274. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  275. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  276. package/dist/server/src/homepage/index.d.ts +16 -0
  277. package/dist/server/src/homepage/index.d.ts.map +1 -0
  278. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  279. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  280. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  281. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  282. package/dist/server/src/homepage/services/homepage.d.ts +11 -0
  283. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  284. package/dist/server/src/homepage/services/index.d.ts +9 -0
  285. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  286. package/dist/server/src/index.d.ts +8 -0
  287. package/dist/server/src/index.d.ts.map +1 -1
  288. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  289. package/dist/server/src/routes/index.d.ts +1 -0
  290. package/dist/server/src/routes/index.d.ts.map +1 -1
  291. package/dist/server/src/services/data-mapper.d.ts +1 -0
  292. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  293. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  294. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  295. package/dist/server/src/services/index.d.ts +7 -0
  296. package/dist/server/src/services/index.d.ts.map +1 -1
  297. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  298. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  299. package/dist/shared/contracts/collection-types.d.ts +0 -1
  300. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  301. package/dist/shared/contracts/homepage.d.ts +25 -0
  302. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  303. package/package.json +12 -9
  304. package/dist/admin/features/DocumentContext.js +0 -71
  305. package/dist/admin/features/DocumentContext.js.map +0 -1
  306. package/dist/admin/features/DocumentContext.mjs +0 -49
  307. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  308. 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":"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"}
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,23 +482,44 @@ 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
524
  autocomplete: "list",
452
525
  placeholder: placeholder || formatMessage({
@@ -454,7 +527,7 @@ const ONE_WAY_RELATIONS = [
454
527
  defaultMessage: 'Add relation'
455
528
  }),
456
529
  hasMoreItems: hasNextPage,
457
- loading: isLoading,
530
+ loading: isLoadingSearchRelations || isLoadingPermissions,
458
531
  onOpenChange: ()=>{
459
532
  handleSearch(textValue ?? '');
460
533
  },
@@ -476,7 +549,7 @@ const ONE_WAY_RELATIONS = [
476
549
  handleSearch(event.currentTarget.value);
477
550
  },
478
551
  ...props,
479
- children: options.map((opt)=>{
552
+ children: options?.map((opt)=>{
480
553
  const textValue = relations$1.getRelationLabel(opt, mainField);
481
554
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.ComboboxOption, {
482
555
  value: opt.id.toString(),
@@ -485,9 +558,17 @@ const ONE_WAY_RELATIONS = [
485
558
  gap: 2,
486
559
  justifyContent: "space-between",
487
560
  children: [
488
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
489
- ellipsis: true,
490
- children: textValue
561
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
562
+ gap: 2,
563
+ children: [
564
+ /*#__PURE__*/ jsxRuntime.jsx(Icons.Link, {
565
+ fill: "neutral500"
566
+ }),
567
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
568
+ ellipsis: true,
569
+ children: textValue
570
+ })
571
+ ]
491
572
  }),
492
573
  opt.status ? /*#__PURE__*/ jsxRuntime.jsx(DocumentStatus.DocumentStatus, {
493
574
  status: opt.status
@@ -496,17 +577,14 @@ const ONE_WAY_RELATIONS = [
496
577
  })
497
578
  }, opt.id);
498
579
  })
499
- }),
500
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {}),
501
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Hint, {})
502
- ]
580
+ })
503
581
  });
504
582
  };
505
583
  /* -------------------------------------------------------------------------------------------------
506
584
  * RelationsList
507
585
  * -----------------------------------------------------------------------------------------------*/ const RELATION_ITEM_HEIGHT = 50;
508
586
  const RELATION_GUTTER = 4;
509
- const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel })=>{
587
+ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel, mainField })=>{
510
588
  const ariaDescriptionId = React__namespace.useId();
511
589
  const { formatMessage } = reactIntl.useIntl();
512
590
  const listRef = React__namespace.useRef(null);
@@ -592,6 +670,7 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
592
670
  id: relation.id,
593
671
  documentId: relation.documentId ?? relation.apiData?.documentId ?? '',
594
672
  locale: relation.locale || relation.apiData?.locale,
673
+ isTemporary: relation.apiData?.isTemporary,
595
674
  position
596
675
  }
597
676
  }
@@ -671,7 +750,8 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
671
750
  name,
672
751
  handleDisconnect,
673
752
  relations: data,
674
- targetModel
753
+ targetModel,
754
+ mainField
675
755
  },
676
756
  itemKey: (index)=>data[index].id,
677
757
  innerElementType: "ol",
@@ -712,9 +792,26 @@ const ShadowBox = styledComponents.styled(designSystem.Box)`
712
792
  }
713
793
  `;
714
794
  const ListItem = ({ data, index, style })=>{
715
- const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel } = data;
795
+ const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel, mainField } = data;
796
+ const { currentDocumentMeta } = useDocumentContext.useDocumentContext('RelationsField');
716
797
  const { formatMessage } = reactIntl.useIntl();
717
- const { href, id, label, status, documentId, apiData, locale } = relations[index];
798
+ const { href, id, label: originalLabel, status: originalStatus, documentId, apiData, locale } = relations[index];
799
+ /**
800
+ * The code above attempts to retrieve the updated value of a relation that has not yet been saved.
801
+ * This is necessary when a relation modal is opened, and the mainField or its status is updated.
802
+ * These changes need to be reflected in the initial relation field.
803
+ */ const collectionType = RelationModal.getCollectionType(href);
804
+ const isTemporary = apiData?.isTemporary ?? false;
805
+ const { document } = useDocument.useDocument({
806
+ collectionType,
807
+ model: targetModel,
808
+ documentId: documentId ?? apiData?.documentId,
809
+ params: currentDocumentMeta.params
810
+ }, {
811
+ skip: !isTemporary
812
+ });
813
+ const label = isTemporary && document ? relations$1.getRelationLabel(document, mainField) : originalLabel;
814
+ const status = isTemporary && document ? document?.status : originalStatus;
718
815
  const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop.useDragAndDrop(canDrag && !disabled, {
719
816
  type: `${dragAndDrop.ItemTypes.RELATION}_${name}`,
720
817
  index,
@@ -736,6 +833,21 @@ const ListItem = ({ data, index, style })=>{
736
833
  }, [
737
834
  dragPreviewRef
738
835
  ]);
836
+ const safeDocumentId = documentId ?? apiData?.documentId;
837
+ const safeLocale = locale ?? apiData?.locale ?? null;
838
+ const documentMeta = React__namespace.useMemo(()=>({
839
+ documentId: safeDocumentId,
840
+ model: targetModel,
841
+ collectionType: RelationModal.getCollectionType(href),
842
+ params: {
843
+ locale: safeLocale
844
+ }
845
+ }), [
846
+ safeDocumentId,
847
+ href,
848
+ safeLocale,
849
+ targetModel
850
+ ]);
739
851
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
740
852
  style: style,
741
853
  tag: "li",
@@ -774,23 +886,17 @@ const ListItem = ({ data, index, style })=>{
774
886
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
775
887
  width: "100%",
776
888
  minWidth: 0,
889
+ gap: 4,
777
890
  justifyContent: "space-between",
778
891
  children: [
779
892
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
893
+ flex: 1,
780
894
  minWidth: 0,
781
895
  paddingTop: 1,
782
896
  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
- }
897
+ children: /*#__PURE__*/ jsxRuntime.jsx(RelationModal.RelationModalRenderer, {
898
+ relation: documentMeta,
899
+ children: label
794
900
  })
795
901
  }),
796
902
  status ? /*#__PURE__*/ jsxRuntime.jsx(DocumentStatus.DocumentStatus, {