@strapi/content-manager 0.0.0-next.8c98bb4ad3e89fc5a3f45b1925795444d17042d6 → 0.0.0-next.8d576f41729640e32a4a0cfcb258b6288e6631f6

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 (294) 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/VersionHeader.js +6 -0
  16. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  17. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  18. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  19. package/dist/admin/history/pages/History.js +1 -9
  20. package/dist/admin/history/pages/History.js.map +1 -1
  21. package/dist/admin/history/pages/History.mjs +1 -9
  22. package/dist/admin/history/pages/History.mjs.map +1 -1
  23. package/dist/admin/hooks/useDocumentActions.js +20 -5
  24. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  25. package/dist/admin/hooks/useDocumentActions.mjs +20 -5
  26. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  27. package/dist/admin/hooks/useDocumentContext.js +57 -0
  28. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  29. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  30. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  31. package/dist/admin/index.js +42 -5
  32. package/dist/admin/index.js.map +1 -1
  33. package/dist/admin/index.mjs +42 -3
  34. package/dist/admin/index.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/EditViewPage.js +90 -91
  36. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  37. package/dist/admin/pages/EditView/EditViewPage.mjs +92 -93
  38. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/DocumentActions.js +256 -58
  40. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/DocumentActions.mjs +262 -64
  42. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  58. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  60. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  62. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +2 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +4 -2
  68. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +4 -2
  70. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +5 -16
  72. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -16
  74. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  76. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  78. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +506 -345
  80. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +506 -347
  82. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +145 -87
  84. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +148 -90
  86. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  88. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  90. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  92. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  94. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  96. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  98. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormLayout.js +20 -24
  100. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormLayout.mjs +20 -24
  102. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -10
  104. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -10
  106. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  107. package/dist/admin/pages/ListView/ListViewPage.js +77 -0
  108. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  109. package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
  110. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  111. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  112. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  113. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  114. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  115. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  116. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  117. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  118. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  119. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  120. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  121. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  122. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  123. package/dist/admin/preview/components/PreviewHeader.js +3 -6
  124. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  125. package/dist/admin/preview/components/PreviewHeader.mjs +3 -6
  126. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  127. package/dist/admin/preview/pages/Preview.js +94 -102
  128. package/dist/admin/preview/pages/Preview.js.map +1 -1
  129. package/dist/admin/preview/pages/Preview.mjs +94 -102
  130. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  131. package/dist/admin/services/documents.js +2 -2
  132. package/dist/admin/services/documents.js.map +1 -1
  133. package/dist/admin/services/documents.mjs +2 -2
  134. package/dist/admin/services/documents.mjs.map +1 -1
  135. package/dist/admin/services/homepage.js +30 -0
  136. package/dist/admin/services/homepage.js.map +1 -0
  137. package/dist/admin/services/homepage.mjs +28 -0
  138. package/dist/admin/services/homepage.mjs.map +1 -0
  139. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  140. package/dist/admin/src/components/Widgets.d.ts +3 -0
  141. package/dist/admin/src/content-manager.d.ts +0 -3
  142. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  143. package/dist/admin/src/history/pages/History.d.ts +1 -1
  144. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  145. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  146. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  147. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  148. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  149. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  150. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  151. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  152. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  153. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  154. package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
  155. package/dist/admin/src/services/documents.d.ts +7 -1
  156. package/dist/admin/src/services/homepage.d.ts +5 -0
  157. package/dist/admin/translations/en.json.js +3 -1
  158. package/dist/admin/translations/en.json.js.map +1 -1
  159. package/dist/admin/translations/en.json.mjs +3 -1
  160. package/dist/admin/translations/en.json.mjs.map +1 -1
  161. package/dist/admin/translations/ru.json.js +235 -226
  162. package/dist/admin/translations/ru.json.js.map +1 -1
  163. package/dist/admin/translations/ru.json.mjs +230 -226
  164. package/dist/admin/translations/ru.json.mjs.map +1 -1
  165. package/dist/admin/utils/validation.js +1 -1
  166. package/dist/admin/utils/validation.js.map +1 -1
  167. package/dist/admin/utils/validation.mjs +1 -1
  168. package/dist/admin/utils/validation.mjs.map +1 -1
  169. package/dist/server/controllers/content-types.js +11 -1
  170. package/dist/server/controllers/content-types.js.map +1 -1
  171. package/dist/server/controllers/content-types.mjs +11 -1
  172. package/dist/server/controllers/content-types.mjs.map +1 -1
  173. package/dist/server/controllers/index.js +3 -1
  174. package/dist/server/controllers/index.js.map +1 -1
  175. package/dist/server/controllers/index.mjs +3 -1
  176. package/dist/server/controllers/index.mjs.map +1 -1
  177. package/dist/server/controllers/validation/index.js +14 -2
  178. package/dist/server/controllers/validation/index.js.map +1 -1
  179. package/dist/server/controllers/validation/index.mjs +14 -2
  180. package/dist/server/controllers/validation/index.mjs.map +1 -1
  181. package/dist/server/history/services/lifecycles.js +3 -0
  182. package/dist/server/history/services/lifecycles.js.map +1 -1
  183. package/dist/server/history/services/lifecycles.mjs +3 -0
  184. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  185. package/dist/server/homepage/controllers/homepage.js +57 -0
  186. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  187. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  188. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  189. package/dist/server/homepage/controllers/index.js +10 -0
  190. package/dist/server/homepage/controllers/index.js.map +1 -0
  191. package/dist/server/homepage/controllers/index.mjs +8 -0
  192. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  193. package/dist/server/homepage/index.js +14 -0
  194. package/dist/server/homepage/index.js.map +1 -0
  195. package/dist/server/homepage/index.mjs +12 -0
  196. package/dist/server/homepage/index.mjs.map +1 -0
  197. package/dist/server/homepage/routes/homepage.js +25 -0
  198. package/dist/server/homepage/routes/homepage.js.map +1 -0
  199. package/dist/server/homepage/routes/homepage.mjs +23 -0
  200. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  201. package/dist/server/homepage/routes/index.js +13 -0
  202. package/dist/server/homepage/routes/index.js.map +1 -0
  203. package/dist/server/homepage/routes/index.mjs +11 -0
  204. package/dist/server/homepage/routes/index.mjs.map +1 -0
  205. package/dist/server/homepage/services/homepage.js +157 -0
  206. package/dist/server/homepage/services/homepage.js.map +1 -0
  207. package/dist/server/homepage/services/homepage.mjs +155 -0
  208. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  209. package/dist/server/homepage/services/index.js +10 -0
  210. package/dist/server/homepage/services/index.js.map +1 -0
  211. package/dist/server/homepage/services/index.mjs +8 -0
  212. package/dist/server/homepage/services/index.mjs.map +1 -0
  213. package/dist/server/preview/services/preview.js +0 -1
  214. package/dist/server/preview/services/preview.js.map +1 -1
  215. package/dist/server/preview/services/preview.mjs +0 -1
  216. package/dist/server/preview/services/preview.mjs.map +1 -1
  217. package/dist/server/routes/index.js +3 -1
  218. package/dist/server/routes/index.js.map +1 -1
  219. package/dist/server/routes/index.mjs +3 -1
  220. package/dist/server/routes/index.mjs.map +1 -1
  221. package/dist/server/services/data-mapper.js +4 -1
  222. package/dist/server/services/data-mapper.js.map +1 -1
  223. package/dist/server/services/data-mapper.mjs +4 -1
  224. package/dist/server/services/data-mapper.mjs.map +1 -1
  225. package/dist/server/services/document-manager.js +8 -1
  226. package/dist/server/services/document-manager.js.map +1 -1
  227. package/dist/server/services/document-manager.mjs +8 -1
  228. package/dist/server/services/document-manager.mjs.map +1 -1
  229. package/dist/server/services/document-metadata.js +2 -0
  230. package/dist/server/services/document-metadata.js.map +1 -1
  231. package/dist/server/services/document-metadata.mjs +2 -0
  232. package/dist/server/services/document-metadata.mjs.map +1 -1
  233. package/dist/server/services/index.js +3 -1
  234. package/dist/server/services/index.js.map +1 -1
  235. package/dist/server/services/index.mjs +3 -1
  236. package/dist/server/services/index.mjs.map +1 -1
  237. package/dist/server/services/utils/configuration/attributes.js +1 -1
  238. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  239. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  240. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  241. package/dist/server/services/utils/configuration/layouts.js +1 -1
  242. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  243. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  244. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  245. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  246. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  247. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  248. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  249. package/dist/server/services/utils/populate.js +11 -0
  250. package/dist/server/services/utils/populate.js.map +1 -1
  251. package/dist/server/services/utils/populate.mjs +11 -0
  252. package/dist/server/services/utils/populate.mjs.map +1 -1
  253. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  254. package/dist/server/src/controllers/index.d.ts.map +1 -1
  255. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  256. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  257. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  258. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  259. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  260. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  261. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  262. package/dist/server/src/homepage/index.d.ts +16 -0
  263. package/dist/server/src/homepage/index.d.ts.map +1 -0
  264. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  265. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  266. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  267. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  268. package/dist/server/src/homepage/services/homepage.d.ts +11 -0
  269. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  270. package/dist/server/src/homepage/services/index.d.ts +9 -0
  271. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  272. package/dist/server/src/index.d.ts +8 -0
  273. package/dist/server/src/index.d.ts.map +1 -1
  274. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  275. package/dist/server/src/routes/index.d.ts +1 -0
  276. package/dist/server/src/routes/index.d.ts.map +1 -1
  277. package/dist/server/src/services/data-mapper.d.ts +1 -0
  278. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  279. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  280. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  281. package/dist/server/src/services/index.d.ts +7 -0
  282. package/dist/server/src/services/index.d.ts.map +1 -1
  283. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  284. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  285. package/dist/shared/contracts/collection-types.d.ts +0 -1
  286. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  287. package/dist/shared/contracts/homepage.d.ts +25 -0
  288. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  289. package/package.json +12 -9
  290. package/dist/admin/features/DocumentContext.js +0 -71
  291. package/dist/admin/features/DocumentContext.js.map +0 -1
  292. package/dist/admin/features/DocumentContext.mjs +0 -49
  293. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  294. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -1,8 +1,8 @@
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';
3
+ import { useForm, useField, useNotification, useFocusInputField } from '@strapi/admin/strapi-admin';
4
4
  import { Flex, Box, Link, TextButton, Field, Combobox, ComboboxOption, Typography, VisuallyHidden, useComposedRefs, IconButton } from '@strapi/design-system';
5
- import { ArrowClockwise, Drag, Cross } from '@strapi/icons';
5
+ import { ArrowClockwise, 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';
@@ -11,16 +11,16 @@ import { FixedSizeList } from 'react-window';
11
11
  import { styled } from 'styled-components';
12
12
  import { COLLECTION_TYPES } from '../../../../../constants/collections.mjs';
13
13
  import { ItemTypes } from '../../../../../constants/dragAndDrop.mjs';
14
- import { useDocumentContext } from '../../../../../features/DocumentContext.mjs';
15
14
  import { useDebounce } from '../../../../../hooks/useDebounce.mjs';
15
+ import { useDocument } from '../../../../../hooks/useDocument.mjs';
16
+ import { useDocumentContext } from '../../../../../hooks/useDocumentContext.mjs';
16
17
  import { useDragAndDrop, DROP_SENSITIVITY } from '../../../../../hooks/useDragAndDrop.mjs';
17
18
  import { useGetRelationsQuery, useLazySearchRelationsQuery } from '../../../../../services/relations.mjs';
18
- import { buildValidParams } from '../../../../../utils/api.mjs';
19
19
  import { getRelationLabel } from '../../../../../utils/relations.mjs';
20
20
  import { getTranslation } from '../../../../../utils/translations.mjs';
21
21
  import { DocumentStatus } from '../../DocumentStatus.mjs';
22
22
  import { useComponent } from '../ComponentContext.mjs';
23
- import { RelationModalForm, getCollectionType } from './RelationModal.mjs';
23
+ import { RelationModalRenderer, getCollectionType } from './RelationModal.mjs';
24
24
 
25
25
  /**
26
26
  * Remove a relation, whether it's been already saved or not.
@@ -75,17 +75,11 @@ const ONE_WAY_RELATIONS = [
75
75
  * At present we do not expose this to plugin developers, however, they are able to overwrite it themselves should
76
76
  * they wish to do so.
77
77
  */ const RelationsField = /*#__PURE__*/ React.forwardRef(({ disabled, label, ...props }, ref)=>{
78
- const currentDocumentMeta = useDocumentContext('RelationsField', (state)=>state.meta);
79
- const currentDocument = useDocumentContext('RelationsField', (state)=>state.document);
80
- const rootDocumentMeta = useDocumentContext('RelationsField', (state)=>state.rootDocumentMeta);
78
+ const { currentDocument, currentDocumentMeta } = useDocumentContext('RelationsField');
81
79
  const [currentPage, setCurrentPage] = React.useState(1);
82
- const isRootDocument = rootDocumentMeta.documentId === currentDocumentMeta.documentId;
83
- const documentMeta = isRootDocument ? rootDocumentMeta : currentDocumentMeta;
84
80
  // Use the documentId from the actual document, not the params (meta)
85
81
  const documentId = currentDocument.document?.documentId;
86
82
  const { formatMessage } = useIntl();
87
- const [{ query }] = useQueryParams();
88
- const params = documentMeta.params ?? buildValidParams(query);
89
83
  const isMorph = props.attribute.relation.toLowerCase().includes('morph');
90
84
  const isDisabled = isMorph || disabled;
91
85
  const { componentId, componentUID } = useComponent('RelationsField', ({ uid, id })=>({
@@ -102,8 +96,9 @@ const ONE_WAY_RELATIONS = [
102
96
  /**
103
97
  * We'll always have a documentId in a created entry, so we look for a componentId first.
104
98
  * Same with `uid` and `documentModel`.
105
- */ const model = component ? component.uid : documentMeta.model;
106
- const id = component && componentId ? componentId.toString() : documentId;
99
+ * The componentId is empty when adding a new component in a repeatable. Let it be null to skip isRelatedToCurrentDocument
100
+ */ const model = component ? component.uid : currentDocumentMeta.model;
101
+ const id = component ? componentId?.toString() : documentId;
107
102
  /**
108
103
  * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.
109
104
  * Where the above example would a nested field within two components, however
@@ -122,7 +117,7 @@ const ONE_WAY_RELATIONS = [
122
117
  // below we don't run the query if there is no id.
123
118
  id,
124
119
  params: {
125
- ...params,
120
+ ...currentDocumentMeta.params,
126
121
  pageSize: RELATIONS_TO_DISPLAY,
127
122
  page: currentPage
128
123
  }
@@ -194,7 +189,8 @@ const ONE_WAY_RELATIONS = [
194
189
  apiData: {
195
190
  id: relation.id,
196
191
  documentId: relation.documentId,
197
- locale: relation.locale
192
+ locale: relation.locale,
193
+ isTemporary: true
198
194
  },
199
195
  status: relation.status,
200
196
  /**
@@ -266,7 +262,8 @@ const ONE_WAY_RELATIONS = [
266
262
  isLoading: isFetchingMoreRelations,
267
263
  relationType: props.attribute.relation,
268
264
  // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
269
- targetModel: props.attribute.targetModel
265
+ targetModel: props.attribute.targetModel,
266
+ mainField: props.mainField
270
267
  })
271
268
  ]
272
269
  });
@@ -316,11 +313,7 @@ const ONE_WAY_RELATIONS = [
316
313
  page: 1
317
314
  });
318
315
  const { toggleNotification } = useNotification();
319
- const [{ query }] = useQueryParams();
320
- const currentDocumentMeta = useDocumentContext('RelationsInput', (state)=>state.meta);
321
- const rootDocumentMeta = useDocumentContext('RelationsInput', (state)=>state.rootDocumentMeta);
322
- const isRootDocument = rootDocumentMeta.documentId === currentDocumentMeta.documentId;
323
- const documentMeta = isRootDocument ? rootDocumentMeta : currentDocumentMeta;
316
+ const { currentDocumentMeta } = useDocumentContext('RelationsInput');
324
317
  const { formatMessage } = useIntl();
325
318
  const fieldRef = useFocusInputField(name);
326
319
  const field = useField(name);
@@ -340,12 +333,11 @@ const ONE_WAY_RELATIONS = [
340
333
  */ const [targetField] = name.split('.').slice(-1);
341
334
  // Return early if there is no relation to the document
342
335
  if (!isRelatedToCurrentDocument) return;
343
- const params = documentMeta.params ?? buildValidParams(query);
344
336
  searchForTrigger({
345
337
  model,
346
338
  targetField,
347
339
  params: {
348
- ...params,
340
+ ...currentDocumentMeta.params,
349
341
  id: id ?? '',
350
342
  pageSize: 10,
351
343
  idsToInclude: field.value?.disconnect?.map((rel)=>rel.id.toString()) ?? [],
@@ -359,11 +351,10 @@ const ONE_WAY_RELATIONS = [
359
351
  id,
360
352
  model,
361
353
  name,
362
- query,
363
354
  searchForTrigger,
364
355
  searchParamsDebounced,
365
356
  isRelatedToCurrentDocument,
366
- documentMeta
357
+ currentDocumentMeta.params
367
358
  ]);
368
359
  const handleSearch = async (search)=>{
369
360
  setSearchParams((s)=>({
@@ -414,6 +405,16 @@ const ONE_WAY_RELATIONS = [
414
405
  }, [
415
406
  field.value
416
407
  ]);
408
+ const relation = {
409
+ collectionType: COLLECTION_TYPES,
410
+ // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
411
+ model: props.attribute.targetModel,
412
+ documentId: '',
413
+ params: currentDocumentMeta.params
414
+ };
415
+ const { componentUID } = useComponent('RelationsField', ({ uid })=>({
416
+ componentUID: uid
417
+ }));
417
418
  return /*#__PURE__*/ jsxs(Field.Root, {
418
419
  error: field.error,
419
420
  hint: hint,
@@ -424,57 +425,86 @@ const ONE_WAY_RELATIONS = [
424
425
  action: labelAction,
425
426
  children: label
426
427
  }),
427
- /*#__PURE__*/ jsx(Combobox, {
428
- ref: fieldRef,
429
- name: name,
430
- autocomplete: "list",
431
- placeholder: placeholder || formatMessage({
432
- id: getTranslation('relation.add'),
433
- defaultMessage: 'Add relation'
434
- }),
435
- hasMoreItems: hasNextPage,
436
- loading: isLoading,
437
- onOpenChange: ()=>{
438
- handleSearch(textValue ?? '');
439
- },
440
- noOptionsMessage: ()=>formatMessage({
441
- id: getTranslation('relation.notAvailable'),
442
- defaultMessage: 'No relations available'
443
- }),
444
- loadingMessage: formatMessage({
445
- id: getTranslation('relation.isLoading'),
446
- defaultMessage: 'Relations are loading'
447
- }),
448
- onLoadMore: handleLoadMore,
449
- textValue: textValue,
450
- onChange: handleChange,
451
- onTextValueChange: (text)=>{
452
- setTextValue(text);
453
- },
454
- onInputChange: (event)=>{
455
- handleSearch(event.currentTarget.value);
456
- },
457
- ...props,
458
- children: options.map((opt)=>{
459
- const textValue = getRelationLabel(opt, mainField);
460
- return /*#__PURE__*/ jsx(ComboboxOption, {
461
- value: opt.id.toString(),
428
+ /*#__PURE__*/ jsx(RelationModalRenderer, {
429
+ children: ({ dispatch })=>/*#__PURE__*/ jsx(Combobox, {
430
+ ref: fieldRef,
431
+ creatable: "visible",
432
+ createMessage: ()=>formatMessage({
433
+ id: getTranslation('relation.create'),
434
+ defaultMessage: 'Create a relation'
435
+ }),
436
+ onCreateOption: ()=>{
437
+ dispatch({
438
+ type: 'GO_TO_RELATION',
439
+ payload: {
440
+ document: relation,
441
+ shouldBypassConfirmation: false,
442
+ fieldToConnect: name,
443
+ fieldToConnectUID: componentUID
444
+ }
445
+ });
446
+ },
447
+ creatableStartIcon: /*#__PURE__*/ jsx(Plus, {
448
+ fill: "neutral500"
449
+ }),
450
+ name: name,
451
+ autocomplete: "list",
452
+ placeholder: placeholder || formatMessage({
453
+ id: getTranslation('relation.add'),
454
+ defaultMessage: 'Add relation'
455
+ }),
456
+ hasMoreItems: hasNextPage,
457
+ loading: isLoading,
458
+ onOpenChange: ()=>{
459
+ handleSearch(textValue ?? '');
460
+ },
461
+ noOptionsMessage: ()=>formatMessage({
462
+ id: getTranslation('relation.notAvailable'),
463
+ defaultMessage: 'No relations available'
464
+ }),
465
+ loadingMessage: formatMessage({
466
+ id: getTranslation('relation.isLoading'),
467
+ defaultMessage: 'Relations are loading'
468
+ }),
469
+ onLoadMore: handleLoadMore,
462
470
  textValue: textValue,
463
- children: /*#__PURE__*/ jsxs(Flex, {
464
- gap: 2,
465
- justifyContent: "space-between",
466
- children: [
467
- /*#__PURE__*/ jsx(Typography, {
468
- ellipsis: true,
469
- children: textValue
470
- }),
471
- opt.status ? /*#__PURE__*/ jsx(DocumentStatus, {
472
- status: opt.status
473
- }) : null
474
- ]
471
+ onChange: handleChange,
472
+ onTextValueChange: (text)=>{
473
+ setTextValue(text);
474
+ },
475
+ onInputChange: (event)=>{
476
+ handleSearch(event.currentTarget.value);
477
+ },
478
+ ...props,
479
+ children: options.map((opt)=>{
480
+ const textValue = getRelationLabel(opt, mainField);
481
+ return /*#__PURE__*/ jsx(ComboboxOption, {
482
+ value: opt.id.toString(),
483
+ textValue: textValue,
484
+ children: /*#__PURE__*/ jsxs(Flex, {
485
+ gap: 2,
486
+ justifyContent: "space-between",
487
+ children: [
488
+ /*#__PURE__*/ jsxs(Flex, {
489
+ gap: 2,
490
+ children: [
491
+ /*#__PURE__*/ jsx(Link$1, {
492
+ fill: "neutral500"
493
+ }),
494
+ /*#__PURE__*/ jsx(Typography, {
495
+ ellipsis: true,
496
+ children: textValue
497
+ })
498
+ ]
499
+ }),
500
+ opt.status ? /*#__PURE__*/ jsx(DocumentStatus, {
501
+ status: opt.status
502
+ }) : null
503
+ ]
504
+ })
505
+ }, opt.id);
475
506
  })
476
- }, opt.id);
477
- })
507
+ })
478
508
  }),
479
509
  /*#__PURE__*/ jsx(Field.Error, {}),
480
510
  /*#__PURE__*/ jsx(Field.Hint, {})
@@ -485,7 +515,7 @@ const ONE_WAY_RELATIONS = [
485
515
  * RelationsList
486
516
  * -----------------------------------------------------------------------------------------------*/ const RELATION_ITEM_HEIGHT = 50;
487
517
  const RELATION_GUTTER = 4;
488
- const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel })=>{
518
+ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel, mainField })=>{
489
519
  const ariaDescriptionId = React.useId();
490
520
  const { formatMessage } = useIntl();
491
521
  const listRef = React.useRef(null);
@@ -571,6 +601,7 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
571
601
  id: relation.id,
572
602
  documentId: relation.documentId ?? relation.apiData?.documentId ?? '',
573
603
  locale: relation.locale || relation.apiData?.locale,
604
+ isTemporary: relation.apiData?.isTemporary,
574
605
  position
575
606
  }
576
607
  }
@@ -650,7 +681,8 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
650
681
  name,
651
682
  handleDisconnect,
652
683
  relations: data,
653
- targetModel
684
+ targetModel,
685
+ mainField
654
686
  },
655
687
  itemKey: (index)=>data[index].id,
656
688
  innerElementType: "ol",
@@ -691,9 +723,26 @@ const ShadowBox = styled(Box)`
691
723
  }
692
724
  `;
693
725
  const ListItem = ({ data, index, style })=>{
694
- const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel } = data;
726
+ const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel, mainField } = data;
727
+ const { currentDocumentMeta } = useDocumentContext('RelationsField');
695
728
  const { formatMessage } = useIntl();
696
- const { href, id, label, status, documentId, apiData, locale } = relations[index];
729
+ const { href, id, label: originalLabel, status: originalStatus, documentId, apiData, locale } = relations[index];
730
+ /**
731
+ * The code above attempts to retrieve the updated value of a relation that has not yet been saved.
732
+ * This is necessary when a relation modal is opened, and the mainField or its status is updated.
733
+ * These changes need to be reflected in the initial relation field.
734
+ */ const collectionType = getCollectionType(href);
735
+ const isTemporary = apiData?.isTemporary ?? false;
736
+ const { document } = useDocument({
737
+ collectionType,
738
+ model: targetModel,
739
+ documentId: documentId ?? apiData?.documentId,
740
+ params: currentDocumentMeta.params
741
+ }, {
742
+ skip: !isTemporary
743
+ });
744
+ const label = isTemporary && document ? getRelationLabel(document, mainField) : originalLabel;
745
+ const status = isTemporary && document ? document?.status : originalStatus;
697
746
  const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(canDrag && !disabled, {
698
747
  type: `${ItemTypes.RELATION}_${name}`,
699
748
  index,
@@ -715,6 +764,21 @@ const ListItem = ({ data, index, style })=>{
715
764
  }, [
716
765
  dragPreviewRef
717
766
  ]);
767
+ const safeDocumentId = documentId ?? apiData?.documentId;
768
+ const safeLocale = locale ?? apiData?.locale ?? null;
769
+ const documentMeta = React.useMemo(()=>({
770
+ documentId: safeDocumentId,
771
+ model: targetModel,
772
+ collectionType: getCollectionType(href),
773
+ params: {
774
+ locale: safeLocale
775
+ }
776
+ }), [
777
+ safeDocumentId,
778
+ href,
779
+ safeLocale,
780
+ targetModel
781
+ ]);
718
782
  return /*#__PURE__*/ jsx(Box, {
719
783
  style: style,
720
784
  tag: "li",
@@ -753,23 +817,17 @@ const ListItem = ({ data, index, style })=>{
753
817
  /*#__PURE__*/ jsxs(Flex, {
754
818
  width: "100%",
755
819
  minWidth: 0,
820
+ gap: 4,
756
821
  justifyContent: "space-between",
757
822
  children: [
758
823
  /*#__PURE__*/ jsx(Box, {
824
+ flex: 1,
759
825
  minWidth: 0,
760
826
  paddingTop: 1,
761
827
  paddingBottom: 1,
762
- paddingRight: 4,
763
- children: /*#__PURE__*/ jsx(RelationModalForm, {
764
- triggerButtonLabel: label,
765
- relation: {
766
- documentId: documentId ?? apiData?.documentId,
767
- model: targetModel,
768
- collectionType: getCollectionType(href),
769
- params: {
770
- locale: locale || apiData?.locale || null
771
- }
772
- }
828
+ children: /*#__PURE__*/ jsx(RelationModalRenderer, {
829
+ relation: documentMeta,
830
+ children: label
773
831
  })
774
832
  }),
775
833
  status ? /*#__PURE__*/ jsx(DocumentStatus, {