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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/DragPreviews/RelationDragPreview.js +1 -1
  6. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  7. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +1 -1
  8. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  9. package/dist/admin/components/LeftMenu.js +34 -30
  10. package/dist/admin/components/LeftMenu.js.map +1 -1
  11. package/dist/admin/components/LeftMenu.mjs +36 -32
  12. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  13. package/dist/admin/components/Widgets.js +414 -0
  14. package/dist/admin/components/Widgets.js.map +1 -0
  15. package/dist/admin/components/Widgets.mjs +391 -0
  16. package/dist/admin/components/Widgets.mjs.map +1 -0
  17. package/dist/admin/content-manager.js.map +1 -1
  18. package/dist/admin/content-manager.mjs.map +1 -1
  19. package/dist/admin/features/DocumentRBAC.js +7 -6
  20. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  21. package/dist/admin/features/DocumentRBAC.mjs +7 -6
  22. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  23. package/dist/admin/history/components/VersionContent.js +24 -3
  24. package/dist/admin/history/components/VersionContent.js.map +1 -1
  25. package/dist/admin/history/components/VersionContent.mjs +25 -4
  26. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  27. package/dist/admin/history/components/VersionHeader.js +6 -0
  28. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  29. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  30. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  31. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  32. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  33. package/dist/admin/history/pages/History.js.map +1 -1
  34. package/dist/admin/history/pages/History.mjs.map +1 -1
  35. package/dist/admin/hooks/useDocumentActions.js +30 -6
  36. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  37. package/dist/admin/hooks/useDocumentActions.mjs +30 -6
  38. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  39. package/dist/admin/hooks/useDocumentContext.js +57 -0
  40. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  41. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  42. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  43. package/dist/admin/index.js +81 -5
  44. package/dist/admin/index.js.map +1 -1
  45. package/dist/admin/index.mjs +80 -3
  46. package/dist/admin/index.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/EditViewPage.js +102 -75
  48. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  49. package/dist/admin/pages/EditView/EditViewPage.mjs +104 -77
  50. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/DocumentActions.js +321 -112
  52. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/DocumentActions.mjs +328 -119
  54. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/DocumentStatus.js +1 -2
  56. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/DocumentStatus.mjs +1 -2
  58. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  64. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  66. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  68. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  70. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  72. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  74. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  76. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +16 -2
  80. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +17 -3
  82. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +20 -5
  84. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +21 -6
  86. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +17 -8
  88. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +17 -8
  90. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -6
  92. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +26 -9
  94. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -2
  96. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -2
  98. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +622 -0
  100. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -0
  101. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +598 -0
  102. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -0
  103. package/dist/admin/pages/EditView/components/FormInputs/{Relations.js → Relations/Relations.js} +211 -79
  104. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -0
  105. package/dist/admin/pages/EditView/components/FormInputs/{Relations.mjs → Relations/Relations.mjs} +214 -82
  106. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -0
  107. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  108. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  110. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  112. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  114. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  116. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  118. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  120. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  122. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormLayout.js +63 -36
  124. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormLayout.mjs +63 -36
  126. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/InputRenderer.js +29 -9
  128. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  129. package/dist/admin/pages/EditView/components/InputRenderer.mjs +12 -11
  130. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/utils/data.js +103 -0
  132. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  133. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  134. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  135. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  136. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  137. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  138. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  139. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  140. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  141. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  142. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  143. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  144. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  145. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  146. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  147. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  148. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  149. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  150. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  151. package/dist/admin/pages/ListView/components/TableCells/Relations.js +0 -1
  152. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  153. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +0 -1
  154. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  155. package/dist/admin/preview/components/PreviewHeader.js +4 -79
  156. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  157. package/dist/admin/preview/components/PreviewHeader.mjs +6 -80
  158. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  159. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  160. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  161. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  162. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  163. package/dist/admin/preview/pages/Preview.js +138 -72
  164. package/dist/admin/preview/pages/Preview.js.map +1 -1
  165. package/dist/admin/preview/pages/Preview.mjs +140 -74
  166. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  167. package/dist/admin/services/api.js +3 -1
  168. package/dist/admin/services/api.js.map +1 -1
  169. package/dist/admin/services/api.mjs +3 -1
  170. package/dist/admin/services/api.mjs.map +1 -1
  171. package/dist/admin/services/documents.js +48 -16
  172. package/dist/admin/services/documents.js.map +1 -1
  173. package/dist/admin/services/documents.mjs +48 -16
  174. package/dist/admin/services/documents.mjs.map +1 -1
  175. package/dist/admin/services/homepage.js +39 -0
  176. package/dist/admin/services/homepage.js.map +1 -0
  177. package/dist/admin/services/homepage.mjs +36 -0
  178. package/dist/admin/services/homepage.mjs.map +1 -0
  179. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  180. package/dist/admin/src/components/Widgets.d.ts +4 -0
  181. package/dist/admin/src/content-manager.d.ts +0 -1
  182. package/dist/admin/src/exports.d.ts +1 -0
  183. package/dist/admin/src/features/DocumentRBAC.d.ts +4 -3
  184. package/dist/admin/src/history/pages/History.d.ts +1 -1
  185. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  186. package/dist/admin/src/hooks/useDocumentActions.d.ts +2 -1
  187. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  188. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
  189. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  190. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  191. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  192. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +74 -0
  193. package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +9 -2
  194. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  195. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +13 -9
  196. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +7 -4
  197. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  198. package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
  199. package/dist/admin/src/preview/pages/Preview.d.ts +2 -3
  200. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  201. package/dist/admin/src/services/api.d.ts +1 -1
  202. package/dist/admin/src/services/components.d.ts +2 -2
  203. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  204. package/dist/admin/src/services/documents.d.ts +23 -17
  205. package/dist/admin/src/services/homepage.d.ts +9 -0
  206. package/dist/admin/src/services/init.d.ts +1 -1
  207. package/dist/admin/src/services/relations.d.ts +2 -2
  208. package/dist/admin/src/services/uid.d.ts +3 -3
  209. package/dist/admin/src/utils/validation.d.ts +1 -0
  210. package/dist/admin/translations/en.json.js +12 -1
  211. package/dist/admin/translations/en.json.js.map +1 -1
  212. package/dist/admin/translations/en.json.mjs +12 -1
  213. package/dist/admin/translations/en.json.mjs.map +1 -1
  214. package/dist/admin/translations/es.json.js +5 -2
  215. package/dist/admin/translations/es.json.js.map +1 -1
  216. package/dist/admin/translations/es.json.mjs +5 -2
  217. package/dist/admin/translations/es.json.mjs.map +1 -1
  218. package/dist/admin/translations/fr.json.js +10 -2
  219. package/dist/admin/translations/fr.json.js.map +1 -1
  220. package/dist/admin/translations/fr.json.mjs +10 -2
  221. package/dist/admin/translations/fr.json.mjs.map +1 -1
  222. package/dist/admin/translations/ru.json.js +235 -226
  223. package/dist/admin/translations/ru.json.js.map +1 -1
  224. package/dist/admin/translations/ru.json.mjs +230 -226
  225. package/dist/admin/translations/ru.json.mjs.map +1 -1
  226. package/dist/admin/translations/zh-Hans.json.js +2 -1
  227. package/dist/admin/translations/zh-Hans.json.js.map +1 -1
  228. package/dist/admin/translations/zh-Hans.json.mjs +2 -1
  229. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
  230. package/dist/admin/utils/validation.js +17 -6
  231. package/dist/admin/utils/validation.js.map +1 -1
  232. package/dist/admin/utils/validation.mjs +17 -6
  233. package/dist/admin/utils/validation.mjs.map +1 -1
  234. package/dist/server/controllers/content-types.js +11 -1
  235. package/dist/server/controllers/content-types.js.map +1 -1
  236. package/dist/server/controllers/content-types.mjs +11 -1
  237. package/dist/server/controllers/content-types.mjs.map +1 -1
  238. package/dist/server/controllers/index.js +3 -1
  239. package/dist/server/controllers/index.js.map +1 -1
  240. package/dist/server/controllers/index.mjs +3 -1
  241. package/dist/server/controllers/index.mjs.map +1 -1
  242. package/dist/server/controllers/relations.js +2 -2
  243. package/dist/server/controllers/relations.js.map +1 -1
  244. package/dist/server/controllers/relations.mjs +2 -2
  245. package/dist/server/controllers/relations.mjs.map +1 -1
  246. package/dist/server/controllers/validation/index.js +14 -2
  247. package/dist/server/controllers/validation/index.js.map +1 -1
  248. package/dist/server/controllers/validation/index.mjs +14 -2
  249. package/dist/server/controllers/validation/index.mjs.map +1 -1
  250. package/dist/server/history/services/lifecycles.js +3 -0
  251. package/dist/server/history/services/lifecycles.js.map +1 -1
  252. package/dist/server/history/services/lifecycles.mjs +3 -0
  253. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  254. package/dist/server/homepage/controllers/homepage.js +62 -0
  255. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  256. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  257. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  258. package/dist/server/homepage/controllers/index.js +10 -0
  259. package/dist/server/homepage/controllers/index.js.map +1 -0
  260. package/dist/server/homepage/controllers/index.mjs +8 -0
  261. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  262. package/dist/server/homepage/index.js +14 -0
  263. package/dist/server/homepage/index.js.map +1 -0
  264. package/dist/server/homepage/index.mjs +12 -0
  265. package/dist/server/homepage/index.mjs.map +1 -0
  266. package/dist/server/homepage/routes/homepage.js +36 -0
  267. package/dist/server/homepage/routes/homepage.js.map +1 -0
  268. package/dist/server/homepage/routes/homepage.mjs +34 -0
  269. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  270. package/dist/server/homepage/routes/index.js +13 -0
  271. package/dist/server/homepage/routes/index.js.map +1 -0
  272. package/dist/server/homepage/routes/index.mjs +11 -0
  273. package/dist/server/homepage/routes/index.mjs.map +1 -0
  274. package/dist/server/homepage/services/homepage.js +197 -0
  275. package/dist/server/homepage/services/homepage.js.map +1 -0
  276. package/dist/server/homepage/services/homepage.mjs +195 -0
  277. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  278. package/dist/server/homepage/services/index.js +10 -0
  279. package/dist/server/homepage/services/index.js.map +1 -0
  280. package/dist/server/homepage/services/index.mjs +8 -0
  281. package/dist/server/homepage/services/index.mjs.map +1 -0
  282. package/dist/server/preview/services/preview-config.js +5 -1
  283. package/dist/server/preview/services/preview-config.js.map +1 -1
  284. package/dist/server/preview/services/preview-config.mjs +5 -1
  285. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  286. package/dist/server/preview/services/preview.js +4 -1
  287. package/dist/server/preview/services/preview.js.map +1 -1
  288. package/dist/server/preview/services/preview.mjs +4 -1
  289. package/dist/server/preview/services/preview.mjs.map +1 -1
  290. package/dist/server/routes/index.js +3 -1
  291. package/dist/server/routes/index.js.map +1 -1
  292. package/dist/server/routes/index.mjs +3 -1
  293. package/dist/server/routes/index.mjs.map +1 -1
  294. package/dist/server/services/data-mapper.js +4 -1
  295. package/dist/server/services/data-mapper.js.map +1 -1
  296. package/dist/server/services/data-mapper.mjs +4 -1
  297. package/dist/server/services/data-mapper.mjs.map +1 -1
  298. package/dist/server/services/document-manager.js +8 -1
  299. package/dist/server/services/document-manager.js.map +1 -1
  300. package/dist/server/services/document-manager.mjs +8 -1
  301. package/dist/server/services/document-manager.mjs.map +1 -1
  302. package/dist/server/services/document-metadata.js +3 -1
  303. package/dist/server/services/document-metadata.js.map +1 -1
  304. package/dist/server/services/document-metadata.mjs +3 -1
  305. package/dist/server/services/document-metadata.mjs.map +1 -1
  306. package/dist/server/services/index.js +3 -1
  307. package/dist/server/services/index.js.map +1 -1
  308. package/dist/server/services/index.mjs +3 -1
  309. package/dist/server/services/index.mjs.map +1 -1
  310. package/dist/server/services/utils/configuration/attributes.js +1 -1
  311. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  312. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  313. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  314. package/dist/server/services/utils/configuration/layouts.js +1 -1
  315. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  316. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  317. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  318. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  319. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  320. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  321. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  322. package/dist/server/services/utils/populate.js +11 -0
  323. package/dist/server/services/utils/populate.js.map +1 -1
  324. package/dist/server/services/utils/populate.mjs +11 -0
  325. package/dist/server/services/utils/populate.mjs.map +1 -1
  326. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  327. package/dist/server/src/controllers/index.d.ts.map +1 -1
  328. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  329. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  330. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  331. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  332. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  333. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  334. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  335. package/dist/server/src/homepage/index.d.ts +23 -0
  336. package/dist/server/src/homepage/index.d.ts.map +1 -0
  337. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  338. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  339. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  340. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  341. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  342. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  343. package/dist/server/src/homepage/services/index.d.ts +16 -0
  344. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  345. package/dist/server/src/index.d.ts +15 -0
  346. package/dist/server/src/index.d.ts.map +1 -1
  347. package/dist/server/src/preview/services/index.d.ts +1 -0
  348. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  349. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  350. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  351. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  352. package/dist/server/src/preview/utils.d.ts +1 -0
  353. package/dist/server/src/preview/utils.d.ts.map +1 -1
  354. package/dist/server/src/routes/index.d.ts +1 -0
  355. package/dist/server/src/routes/index.d.ts.map +1 -1
  356. package/dist/server/src/services/data-mapper.d.ts +1 -0
  357. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  358. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  359. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  360. package/dist/server/src/services/index.d.ts +14 -0
  361. package/dist/server/src/services/index.d.ts.map +1 -1
  362. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  363. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  364. package/dist/shared/contracts/collection-types.d.ts +0 -1
  365. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  366. package/dist/shared/contracts/homepage.d.ts +38 -0
  367. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  368. package/package.json +13 -10
  369. package/dist/admin/pages/EditView/components/FormInputs/Relations.js.map +0 -1
  370. package/dist/admin/pages/EditView/components/FormInputs/Relations.mjs.map +0 -1
  371. package/dist/admin/preview/components/PreviewContent.js +0 -25
  372. package/dist/admin/preview/components/PreviewContent.js.map +0 -1
  373. package/dist/admin/preview/components/PreviewContent.mjs +0 -23
  374. package/dist/admin/preview/components/PreviewContent.mjs.map +0 -1
  375. package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -2
@@ -1,26 +1,28 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useQueryParams, useForm, useField, useNotification, useFocusInputField } from '@strapi/admin/strapi-admin';
4
- import { Flex, Box, Link, TextButton, Field, Combobox, ComboboxOption, Typography, VisuallyHidden, useComposedRefs, IconButton, Tooltip } from '@strapi/design-system';
5
- import { ArrowClockwise, Drag, Cross } from '@strapi/icons';
3
+ import { useForm, useField, useNotification, useRBAC, useFocusInputField } from '@strapi/admin/strapi-admin';
4
+ import { Flex, Box, Link, TextButton, EmptyStateLayout, Field, Combobox, ComboboxOption, Typography, VisuallyHidden, useComposedRefs, IconButton } from '@strapi/design-system';
5
+ import { ArrowClockwise, WarningCircle, Plus, Link as Link$1, Drag, Cross } from '@strapi/icons';
6
6
  import { generateNKeysBetween } from 'fractional-indexing';
7
7
  import pipe from 'lodash/fp/pipe';
8
8
  import { getEmptyImage } from 'react-dnd-html5-backend';
9
9
  import { useIntl } from 'react-intl';
10
- import { NavLink } from 'react-router-dom';
11
10
  import { FixedSizeList } from 'react-window';
12
11
  import { styled } from 'styled-components';
13
- import { COLLECTION_TYPES } from '../../../../constants/collections.mjs';
14
- import { ItemTypes } from '../../../../constants/dragAndDrop.mjs';
15
- import { useDebounce } from '../../../../hooks/useDebounce.mjs';
16
- import { useDoc } from '../../../../hooks/useDocument.mjs';
17
- import { useDragAndDrop, DROP_SENSITIVITY } from '../../../../hooks/useDragAndDrop.mjs';
18
- import { useGetRelationsQuery, useLazySearchRelationsQuery } from '../../../../services/relations.mjs';
19
- import { buildValidParams } from '../../../../utils/api.mjs';
20
- import { getRelationLabel } from '../../../../utils/relations.mjs';
21
- import { getTranslation } from '../../../../utils/translations.mjs';
22
- import { DocumentStatus } from '../DocumentStatus.mjs';
23
- import { useComponent } from './ComponentContext.mjs';
12
+ import { COLLECTION_TYPES } from '../../../../../constants/collections.mjs';
13
+ import { ItemTypes } from '../../../../../constants/dragAndDrop.mjs';
14
+ import { PERMISSIONS } from '../../../../../constants/plugin.mjs';
15
+ import { DocumentRBAC, useDocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
16
+ import { useDebounce } from '../../../../../hooks/useDebounce.mjs';
17
+ import { useDocument } from '../../../../../hooks/useDocument.mjs';
18
+ import { useDocumentContext } from '../../../../../hooks/useDocumentContext.mjs';
19
+ import { useDragAndDrop, DROP_SENSITIVITY } from '../../../../../hooks/useDragAndDrop.mjs';
20
+ import { useGetRelationsQuery, useLazySearchRelationsQuery } from '../../../../../services/relations.mjs';
21
+ import { getRelationLabel } from '../../../../../utils/relations.mjs';
22
+ import { getTranslation } from '../../../../../utils/translations.mjs';
23
+ import { DocumentStatus } from '../../DocumentStatus.mjs';
24
+ import { useComponent } from '../ComponentContext.mjs';
25
+ import { RelationModalRenderer, getCollectionType } from './RelationModal.mjs';
24
26
 
25
27
  /**
26
28
  * Remove a relation, whether it's been already saved or not.
@@ -75,12 +77,11 @@ const ONE_WAY_RELATIONS = [
75
77
  * At present we do not expose this to plugin developers, however, they are able to overwrite it themselves should
76
78
  * they wish to do so.
77
79
  */ const RelationsField = /*#__PURE__*/ React.forwardRef(({ disabled, label, ...props }, ref)=>{
80
+ const { currentDocument, currentDocumentMeta } = useDocumentContext('RelationsField');
78
81
  const [currentPage, setCurrentPage] = React.useState(1);
79
- const { document, model: documentModel } = useDoc();
80
- const documentId = document?.documentId;
82
+ // Use the documentId from the actual document, not the params (meta)
83
+ const documentId = currentDocument.document?.documentId;
81
84
  const { formatMessage } = useIntl();
82
- const [{ query }] = useQueryParams();
83
- const params = buildValidParams(query);
84
85
  const isMorph = props.attribute.relation.toLowerCase().includes('morph');
85
86
  const isDisabled = isMorph || disabled;
86
87
  const { componentId, componentUID } = useComponent('RelationsField', ({ uid, id })=>({
@@ -93,30 +94,38 @@ const ONE_WAY_RELATIONS = [
93
94
  }, [
94
95
  isSubmitting
95
96
  ]);
97
+ const component = componentUID && currentDocument.components[componentUID];
96
98
  /**
97
99
  * We'll always have a documentId in a created entry, so we look for a componentId first.
98
100
  * Same with `uid` and `documentModel`.
99
- */ const id = componentId ? componentId.toString() : documentId;
100
- const model = componentUID ?? documentModel;
101
+ * The componentId is empty when adding a new component in a repeatable. Let it be null to skip isRelatedToCurrentDocument
102
+ */ const model = component ? component.uid : currentDocumentMeta.model;
103
+ const id = component ? componentId?.toString() : documentId;
101
104
  /**
102
105
  * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.
103
106
  * Where the above example would a nested field within two components, however
104
107
  * we only require the field on the component not the complete path since we query
105
108
  * individual components. Therefore we split the string and take the last item.
106
109
  */ const [targetField] = props.name.split('.').slice(-1);
110
+ const schemaAttributes = component ? component.attributes ?? {} : currentDocument.schema?.attributes ?? {};
111
+ /**
112
+ * Confirm the target field is related to the current document.
113
+ * Since relations can exist in a modal on top of the root document,
114
+ * we need to ensure we are fetching relations for the correct document (root document vs related document),
115
+ */ const isRelatedToCurrentDocument = Object.values(schemaAttributes).filter((attribute)=>attribute.type === 'relation' && 'target' in attribute && 'target' in props.attribute && attribute.target === props.attribute.target).length > 0;
107
116
  const { data, isLoading, isFetching } = useGetRelationsQuery({
108
117
  model,
109
118
  targetField,
110
119
  // below we don't run the query if there is no id.
111
- id: id,
120
+ id,
112
121
  params: {
113
- ...params,
122
+ ...currentDocumentMeta.params,
114
123
  pageSize: RELATIONS_TO_DISPLAY,
115
124
  page: currentPage
116
125
  }
117
126
  }, {
118
127
  refetchOnMountOrArgChange: true,
119
- skip: !id,
128
+ skip: !id || !isRelatedToCurrentDocument,
120
129
  selectFromResult: (result)=>{
121
130
  return {
122
131
  ...result,
@@ -182,7 +191,8 @@ const ONE_WAY_RELATIONS = [
182
191
  apiData: {
183
192
  id: relation.id,
184
193
  documentId: relation.documentId,
185
- locale: relation.locale
194
+ locale: relation.locale,
195
+ isTemporary: true
186
196
  },
187
197
  status: relation.status,
188
198
  /**
@@ -225,10 +235,11 @@ const ONE_WAY_RELATIONS = [
225
235
  /*#__PURE__*/ jsx(RelationsInput, {
226
236
  disabled: isDisabled,
227
237
  // NOTE: we should not default to using the documentId if the component is being created (componentUID is undefined)
228
- id: componentUID ? componentId ? `${componentId}` : '' : documentId,
238
+ id: componentUID && component ? componentId ? `${componentId}` : '' : documentId,
229
239
  label: `${label} ${relationsCount > 0 ? `(${relationsCount})` : ''}`,
230
240
  model: model,
231
241
  onChange: handleConnect,
242
+ isRelatedToCurrentDocument: isRelatedToCurrentDocument,
232
243
  ...props
233
244
  }),
234
245
  'pagination' in data && data.pagination && data.pagination.pageCount > data.pagination.page ? /*#__PURE__*/ jsx(TextButton, {
@@ -251,7 +262,10 @@ const ONE_WAY_RELATIONS = [
251
262
  disabled: isDisabled,
252
263
  name: props.name,
253
264
  isLoading: isFetchingMoreRelations,
254
- relationType: props.attribute.relation
265
+ relationType: props.attribute.relation,
266
+ // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
267
+ targetModel: props.attribute.targetModel,
268
+ mainField: props.mainField
255
269
  })
256
270
  ]
257
271
  });
@@ -294,16 +308,14 @@ const ONE_WAY_RELATIONS = [
294
308
  /**
295
309
  * @description Contains all the logic for the combobox that can search
296
310
  * for relations and then add them to the field's connect array.
297
- */ const RelationsInput = ({ hint, id, model, label, labelAction, name, mainField, placeholder, required, unique: _unique, 'aria-label': _ariaLabel, onChange, ...props })=>{
298
- const [textValue, setTextValue] = React.useState('');
311
+ */ const RelationsInput = ({ hint, id, model, label, labelAction, name, mainField, placeholder, required, unique: _unique, 'aria-label': _ariaLabel, onChange, isRelatedToCurrentDocument, ...props })=>{
299
312
  const [searchParams, setSearchParams] = React.useState({
300
313
  _q: '',
301
314
  page: 1
302
315
  });
303
316
  const { toggleNotification } = useNotification();
304
- const [{ query }] = useQueryParams();
317
+ const { currentDocumentMeta } = useDocumentContext('RelationsInput');
305
318
  const { formatMessage } = useIntl();
306
- const fieldRef = useFocusInputField(name);
307
319
  const field = useField(name);
308
320
  const searchParamsDebounced = useDebounce(searchParams, 300);
309
321
  const [searchForTrigger, { data, isLoading }] = useLazySearchRelationsQuery();
@@ -319,11 +331,13 @@ const ONE_WAY_RELATIONS = [
319
331
  * we only require the field on the component not the complete path since we query
320
332
  * individual components. Therefore we split the string and take the last item.
321
333
  */ const [targetField] = name.split('.').slice(-1);
334
+ // Return early if there is no relation to the document
335
+ if (!isRelatedToCurrentDocument) return;
322
336
  searchForTrigger({
323
337
  model,
324
338
  targetField,
325
339
  params: {
326
- ...buildValidParams(query),
340
+ ...currentDocumentMeta.params,
327
341
  id: id ?? '',
328
342
  pageSize: 10,
329
343
  idsToInclude: field.value?.disconnect?.map((rel)=>rel.id.toString()) ?? [],
@@ -337,17 +351,11 @@ const ONE_WAY_RELATIONS = [
337
351
  id,
338
352
  model,
339
353
  name,
340
- query,
341
354
  searchForTrigger,
342
- searchParamsDebounced
355
+ searchParamsDebounced,
356
+ isRelatedToCurrentDocument,
357
+ currentDocumentMeta.params
343
358
  ]);
344
- const handleSearch = async (search)=>{
345
- setSearchParams((s)=>({
346
- ...s,
347
- _q: search,
348
- page: 1
349
- }));
350
- };
351
359
  const hasNextPage = data?.pagination ? data.pagination.page < data.pagination.pageCount : false;
352
360
  const options = data?.results ?? [];
353
361
  const handleChange = (relationId)=>{
@@ -375,6 +383,74 @@ const ONE_WAY_RELATIONS = [
375
383
  *
376
384
  */ onChange(relation);
377
385
  };
386
+ const relation = {
387
+ collectionType: COLLECTION_TYPES,
388
+ // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
389
+ model: props.attribute.targetModel,
390
+ documentId: '',
391
+ params: currentDocumentMeta.params
392
+ };
393
+ const { permissions = [], isLoading: isLoadingPermissions, error } = useRBAC(PERMISSIONS.map((action)=>({
394
+ action,
395
+ subject: relation.model
396
+ })));
397
+ if (error) {
398
+ return /*#__PURE__*/ jsx(Flex, {
399
+ alignItems: "center",
400
+ height: "100%",
401
+ justifyContent: "center",
402
+ children: /*#__PURE__*/ jsx(EmptyStateLayout, {
403
+ icon: /*#__PURE__*/ jsx(WarningCircle, {
404
+ width: "16rem"
405
+ }),
406
+ content: formatMessage({
407
+ id: 'anErrorOccurred',
408
+ defaultMessage: 'Whoops! Something went wrong. Please, try again.'
409
+ })
410
+ })
411
+ });
412
+ }
413
+ return /*#__PURE__*/ jsxs(Field.Root, {
414
+ error: field.error,
415
+ hint: hint,
416
+ name: name,
417
+ required: required,
418
+ children: [
419
+ /*#__PURE__*/ jsx(Field.Label, {
420
+ action: labelAction,
421
+ children: label
422
+ }),
423
+ /*#__PURE__*/ jsx(DocumentRBAC, {
424
+ permissions: permissions,
425
+ model: relation.model,
426
+ children: /*#__PURE__*/ jsx(RelationModalWithContext, {
427
+ relation: relation,
428
+ name: name,
429
+ placeholder: placeholder,
430
+ hasNextPage: hasNextPage,
431
+ isLoadingPermissions: isLoadingPermissions,
432
+ isLoadingSearchRelations: isLoading,
433
+ handleChange: handleChange,
434
+ setSearchParams: setSearchParams,
435
+ data: data,
436
+ mainField: mainField,
437
+ fieldValue: field.value,
438
+ ...props
439
+ })
440
+ }),
441
+ /*#__PURE__*/ jsx(Field.Error, {}),
442
+ /*#__PURE__*/ jsx(Field.Hint, {})
443
+ ]
444
+ });
445
+ };
446
+ const RelationModalWithContext = ({ relation, name, placeholder, hasNextPage, isLoadingSearchRelations, isLoadingPermissions, handleChange, mainField, setSearchParams, fieldValue, data, ...props })=>{
447
+ const [textValue, setTextValue] = React.useState('');
448
+ const { formatMessage } = useIntl();
449
+ const canCreate = useDocumentRBAC('RelationModalWrapper', (state)=>state.canCreate);
450
+ const fieldRef = useFocusInputField(name);
451
+ const { componentUID } = useComponent('RelationsField', ({ uid })=>({
452
+ componentUID: uid
453
+ }));
378
454
  const handleLoadMore = ()=>{
379
455
  if (!data || !data.pagination) {
380
456
  return;
@@ -385,31 +461,55 @@ const ONE_WAY_RELATIONS = [
385
461
  }));
386
462
  }
387
463
  };
464
+ const options = data?.results ?? [];
388
465
  React.useLayoutEffect(()=>{
389
466
  setTextValue('');
390
467
  }, [
391
- field.value
468
+ fieldValue
392
469
  ]);
393
- return /*#__PURE__*/ jsxs(Field.Root, {
394
- error: field.error,
395
- hint: hint,
396
- name: name,
397
- required: required,
398
- children: [
399
- /*#__PURE__*/ jsx(Field.Label, {
400
- action: labelAction,
401
- children: label
402
- }),
403
- /*#__PURE__*/ jsx(Combobox, {
470
+ const handleSearch = async (search)=>{
471
+ setSearchParams((s)=>({
472
+ ...s,
473
+ _q: search,
474
+ page: 1
475
+ }));
476
+ };
477
+ return /*#__PURE__*/ jsx(RelationModalRenderer, {
478
+ children: ({ dispatch })=>/*#__PURE__*/ jsx(Combobox, {
404
479
  ref: fieldRef,
480
+ creatable: "visible",
481
+ creatableDisabled: !canCreate,
482
+ createMessage: ()=>formatMessage({
483
+ id: getTranslation('relation.create'),
484
+ defaultMessage: 'Create a relation'
485
+ }),
486
+ onCreateOption: ()=>{
487
+ if (canCreate) {
488
+ dispatch({
489
+ type: 'GO_TO_RELATION',
490
+ payload: {
491
+ document: relation,
492
+ shouldBypassConfirmation: false,
493
+ fieldToConnect: name,
494
+ fieldToConnectUID: componentUID
495
+ }
496
+ });
497
+ }
498
+ },
499
+ creatableStartIcon: /*#__PURE__*/ jsx(Plus, {
500
+ fill: "neutral500"
501
+ }),
405
502
  name: name,
406
- autocomplete: "list",
503
+ autocomplete: {
504
+ type: 'list',
505
+ filter: 'contains'
506
+ },
407
507
  placeholder: placeholder || formatMessage({
408
508
  id: getTranslation('relation.add'),
409
509
  defaultMessage: 'Add relation'
410
510
  }),
411
511
  hasMoreItems: hasNextPage,
412
- loading: isLoading,
512
+ loading: isLoadingSearchRelations || isLoadingPermissions,
413
513
  onOpenChange: ()=>{
414
514
  handleSearch(textValue ?? '');
415
515
  },
@@ -431,7 +531,7 @@ const ONE_WAY_RELATIONS = [
431
531
  handleSearch(event.currentTarget.value);
432
532
  },
433
533
  ...props,
434
- children: options.map((opt)=>{
534
+ children: options?.map((opt)=>{
435
535
  const textValue = getRelationLabel(opt, mainField);
436
536
  return /*#__PURE__*/ jsx(ComboboxOption, {
437
537
  value: opt.id.toString(),
@@ -440,9 +540,17 @@ const ONE_WAY_RELATIONS = [
440
540
  gap: 2,
441
541
  justifyContent: "space-between",
442
542
  children: [
443
- /*#__PURE__*/ jsx(Typography, {
444
- ellipsis: true,
445
- children: textValue
543
+ /*#__PURE__*/ jsxs(Flex, {
544
+ gap: 2,
545
+ children: [
546
+ /*#__PURE__*/ jsx(Link$1, {
547
+ fill: "neutral500"
548
+ }),
549
+ /*#__PURE__*/ jsx(Typography, {
550
+ ellipsis: true,
551
+ children: textValue
552
+ })
553
+ ]
446
554
  }),
447
555
  opt.status ? /*#__PURE__*/ jsx(DocumentStatus, {
448
556
  status: opt.status
@@ -451,17 +559,14 @@ const ONE_WAY_RELATIONS = [
451
559
  })
452
560
  }, opt.id);
453
561
  })
454
- }),
455
- /*#__PURE__*/ jsx(Field.Error, {}),
456
- /*#__PURE__*/ jsx(Field.Hint, {})
457
- ]
562
+ })
458
563
  });
459
564
  };
460
565
  /* -------------------------------------------------------------------------------------------------
461
566
  * RelationsList
462
567
  * -----------------------------------------------------------------------------------------------*/ const RELATION_ITEM_HEIGHT = 50;
463
568
  const RELATION_GUTTER = 4;
464
- const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType })=>{
569
+ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel, mainField })=>{
465
570
  const ariaDescriptionId = React.useId();
466
571
  const { formatMessage } = useIntl();
467
572
  const listRef = React.useRef(null);
@@ -545,8 +650,9 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
545
650
  ...{
546
651
  apiData: {
547
652
  id: relation.id,
548
- documentId: relation.documentId,
549
- locale: relation.locale,
653
+ documentId: relation.documentId ?? relation.apiData?.documentId ?? '',
654
+ locale: relation.locale || relation.apiData?.locale,
655
+ isTemporary: relation.apiData?.isTemporary,
550
656
  position
551
657
  }
552
658
  }
@@ -625,7 +731,9 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
625
731
  handleMoveItem,
626
732
  name,
627
733
  handleDisconnect,
628
- relations: data
734
+ relations: data,
735
+ targetModel,
736
+ mainField
629
737
  },
630
738
  itemKey: (index)=>data[index].id,
631
739
  innerElementType: "ol",
@@ -666,9 +774,26 @@ const ShadowBox = styled(Box)`
666
774
  }
667
775
  `;
668
776
  const ListItem = ({ data, index, style })=>{
669
- const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations } = data;
777
+ const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel, mainField } = data;
778
+ const { currentDocumentMeta } = useDocumentContext('RelationsField');
670
779
  const { formatMessage } = useIntl();
671
- const { href, id, label, status } = relations[index];
780
+ const { href, id, label: originalLabel, status: originalStatus, documentId, apiData, locale } = relations[index];
781
+ /**
782
+ * The code above attempts to retrieve the updated value of a relation that has not yet been saved.
783
+ * This is necessary when a relation modal is opened, and the mainField or its status is updated.
784
+ * These changes need to be reflected in the initial relation field.
785
+ */ const collectionType = getCollectionType(href);
786
+ const isTemporary = apiData?.isTemporary ?? false;
787
+ const { document } = useDocument({
788
+ collectionType,
789
+ model: targetModel,
790
+ documentId: documentId ?? apiData?.documentId,
791
+ params: currentDocumentMeta.params
792
+ }, {
793
+ skip: !isTemporary
794
+ });
795
+ const label = isTemporary && document ? getRelationLabel(document, mainField) : originalLabel;
796
+ const status = isTemporary && document ? document?.status : originalStatus;
672
797
  const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(canDrag && !disabled, {
673
798
  type: `${ItemTypes.RELATION}_${name}`,
674
799
  index,
@@ -690,6 +815,21 @@ const ListItem = ({ data, index, style })=>{
690
815
  }, [
691
816
  dragPreviewRef
692
817
  ]);
818
+ const safeDocumentId = documentId ?? apiData?.documentId;
819
+ const safeLocale = locale ?? apiData?.locale ?? null;
820
+ const documentMeta = React.useMemo(()=>({
821
+ documentId: safeDocumentId,
822
+ model: targetModel,
823
+ collectionType: getCollectionType(href),
824
+ params: {
825
+ locale: safeLocale
826
+ }
827
+ }), [
828
+ safeDocumentId,
829
+ href,
830
+ safeLocale,
831
+ targetModel
832
+ ]);
693
833
  return /*#__PURE__*/ jsx(Box, {
694
834
  style: style,
695
835
  tag: "li",
@@ -728,25 +868,17 @@ const ListItem = ({ data, index, style })=>{
728
868
  /*#__PURE__*/ jsxs(Flex, {
729
869
  width: "100%",
730
870
  minWidth: 0,
871
+ gap: 4,
731
872
  justifyContent: "space-between",
732
873
  children: [
733
874
  /*#__PURE__*/ jsx(Box, {
875
+ flex: 1,
734
876
  minWidth: 0,
735
877
  paddingTop: 1,
736
878
  paddingBottom: 1,
737
- paddingRight: 4,
738
- children: /*#__PURE__*/ jsx(Tooltip, {
739
- description: label,
740
- children: href ? /*#__PURE__*/ jsx(LinkEllipsis, {
741
- tag: NavLink,
742
- to: href,
743
- isExternal: false,
744
- children: label
745
- }) : /*#__PURE__*/ jsx(Typography, {
746
- textColor: disabled ? 'neutral600' : 'primary600',
747
- ellipsis: true,
748
- children: label
749
- })
879
+ children: /*#__PURE__*/ jsx(RelationModalRenderer, {
880
+ relation: documentMeta,
881
+ children: label
750
882
  })
751
883
  }),
752
884
  status ? /*#__PURE__*/ jsx(DocumentStatus, {