@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,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';
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';
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';
@@ -11,16 +11,18 @@ 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';
14
+ import { PERMISSIONS } from '../../../../../constants/plugin.mjs';
15
+ import { DocumentRBAC, useDocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
15
16
  import { useDebounce } from '../../../../../hooks/useDebounce.mjs';
17
+ import { useDocument } from '../../../../../hooks/useDocument.mjs';
18
+ import { useDocumentContext } from '../../../../../hooks/useDocumentContext.mjs';
16
19
  import { useDragAndDrop, DROP_SENSITIVITY } from '../../../../../hooks/useDragAndDrop.mjs';
17
20
  import { useGetRelationsQuery, useLazySearchRelationsQuery } from '../../../../../services/relations.mjs';
18
- import { buildValidParams } from '../../../../../utils/api.mjs';
19
21
  import { getRelationLabel } from '../../../../../utils/relations.mjs';
20
22
  import { getTranslation } from '../../../../../utils/translations.mjs';
21
23
  import { DocumentStatus } from '../../DocumentStatus.mjs';
22
24
  import { useComponent } from '../ComponentContext.mjs';
23
- import { RelationModalForm, getCollectionType } from './RelationModal.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,17 +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)=>{
78
- const currentDocumentMeta = useDocumentContext('RelationsField', (state)=>state.meta);
79
- const currentDocument = useDocumentContext('RelationsField', (state)=>state.document);
80
- const rootDocumentMeta = useDocumentContext('RelationsField', (state)=>state.rootDocumentMeta);
80
+ const { currentDocument, currentDocumentMeta } = useDocumentContext('RelationsField');
81
81
  const [currentPage, setCurrentPage] = React.useState(1);
82
- const isRootDocument = rootDocumentMeta.documentId === currentDocumentMeta.documentId;
83
- const documentMeta = isRootDocument ? rootDocumentMeta : currentDocumentMeta;
84
82
  // Use the documentId from the actual document, not the params (meta)
85
83
  const documentId = currentDocument.document?.documentId;
86
84
  const { formatMessage } = useIntl();
87
- const [{ query }] = useQueryParams();
88
- const params = documentMeta.params ?? buildValidParams(query);
89
85
  const isMorph = props.attribute.relation.toLowerCase().includes('morph');
90
86
  const isDisabled = isMorph || disabled;
91
87
  const { componentId, componentUID } = useComponent('RelationsField', ({ uid, id })=>({
@@ -102,8 +98,9 @@ const ONE_WAY_RELATIONS = [
102
98
  /**
103
99
  * We'll always have a documentId in a created entry, so we look for a componentId first.
104
100
  * Same with `uid` and `documentModel`.
105
- */ const model = component ? component.uid : documentMeta.model;
106
- const id = component && componentId ? componentId.toString() : documentId;
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;
107
104
  /**
108
105
  * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.
109
106
  * Where the above example would a nested field within two components, however
@@ -122,7 +119,7 @@ const ONE_WAY_RELATIONS = [
122
119
  // below we don't run the query if there is no id.
123
120
  id,
124
121
  params: {
125
- ...params,
122
+ ...currentDocumentMeta.params,
126
123
  pageSize: RELATIONS_TO_DISPLAY,
127
124
  page: currentPage
128
125
  }
@@ -194,7 +191,8 @@ const ONE_WAY_RELATIONS = [
194
191
  apiData: {
195
192
  id: relation.id,
196
193
  documentId: relation.documentId,
197
- locale: relation.locale
194
+ locale: relation.locale,
195
+ isTemporary: true
198
196
  },
199
197
  status: relation.status,
200
198
  /**
@@ -266,7 +264,8 @@ const ONE_WAY_RELATIONS = [
266
264
  isLoading: isFetchingMoreRelations,
267
265
  relationType: props.attribute.relation,
268
266
  // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
269
- targetModel: props.attribute.targetModel
267
+ targetModel: props.attribute.targetModel,
268
+ mainField: props.mainField
270
269
  })
271
270
  ]
272
271
  });
@@ -310,19 +309,13 @@ const ONE_WAY_RELATIONS = [
310
309
  * @description Contains all the logic for the combobox that can search
311
310
  * for relations and then add them to the field's connect array.
312
311
  */ const RelationsInput = ({ hint, id, model, label, labelAction, name, mainField, placeholder, required, unique: _unique, 'aria-label': _ariaLabel, onChange, isRelatedToCurrentDocument, ...props })=>{
313
- const [textValue, setTextValue] = React.useState('');
314
312
  const [searchParams, setSearchParams] = React.useState({
315
313
  _q: '',
316
314
  page: 1
317
315
  });
318
316
  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;
317
+ const { currentDocumentMeta } = useDocumentContext('RelationsInput');
324
318
  const { formatMessage } = useIntl();
325
- const fieldRef = useFocusInputField(name);
326
319
  const field = useField(name);
327
320
  const searchParamsDebounced = useDebounce(searchParams, 300);
328
321
  const [searchForTrigger, { data, isLoading }] = useLazySearchRelationsQuery();
@@ -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,19 +351,11 @@ 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
- const handleSearch = async (search)=>{
369
- setSearchParams((s)=>({
370
- ...s,
371
- _q: search,
372
- page: 1
373
- }));
374
- };
375
359
  const hasNextPage = data?.pagination ? data.pagination.page < data.pagination.pageCount : false;
376
360
  const options = data?.results ?? [];
377
361
  const handleChange = (relationId)=>{
@@ -399,6 +383,74 @@ const ONE_WAY_RELATIONS = [
399
383
  *
400
384
  */ onChange(relation);
401
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
+ }));
402
454
  const handleLoadMore = ()=>{
403
455
  if (!data || !data.pagination) {
404
456
  return;
@@ -409,23 +461,44 @@ const ONE_WAY_RELATIONS = [
409
461
  }));
410
462
  }
411
463
  };
464
+ const options = data?.results ?? [];
412
465
  React.useLayoutEffect(()=>{
413
466
  setTextValue('');
414
467
  }, [
415
- field.value
468
+ fieldValue
416
469
  ]);
417
- return /*#__PURE__*/ jsxs(Field.Root, {
418
- error: field.error,
419
- hint: hint,
420
- name: name,
421
- required: required,
422
- children: [
423
- /*#__PURE__*/ jsx(Field.Label, {
424
- action: labelAction,
425
- children: label
426
- }),
427
- /*#__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, {
428
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
+ }),
429
502
  name: name,
430
503
  autocomplete: "list",
431
504
  placeholder: placeholder || formatMessage({
@@ -433,7 +506,7 @@ const ONE_WAY_RELATIONS = [
433
506
  defaultMessage: 'Add relation'
434
507
  }),
435
508
  hasMoreItems: hasNextPage,
436
- loading: isLoading,
509
+ loading: isLoadingSearchRelations || isLoadingPermissions,
437
510
  onOpenChange: ()=>{
438
511
  handleSearch(textValue ?? '');
439
512
  },
@@ -455,7 +528,7 @@ const ONE_WAY_RELATIONS = [
455
528
  handleSearch(event.currentTarget.value);
456
529
  },
457
530
  ...props,
458
- children: options.map((opt)=>{
531
+ children: options?.map((opt)=>{
459
532
  const textValue = getRelationLabel(opt, mainField);
460
533
  return /*#__PURE__*/ jsx(ComboboxOption, {
461
534
  value: opt.id.toString(),
@@ -464,9 +537,17 @@ const ONE_WAY_RELATIONS = [
464
537
  gap: 2,
465
538
  justifyContent: "space-between",
466
539
  children: [
467
- /*#__PURE__*/ jsx(Typography, {
468
- ellipsis: true,
469
- children: textValue
540
+ /*#__PURE__*/ jsxs(Flex, {
541
+ gap: 2,
542
+ children: [
543
+ /*#__PURE__*/ jsx(Link$1, {
544
+ fill: "neutral500"
545
+ }),
546
+ /*#__PURE__*/ jsx(Typography, {
547
+ ellipsis: true,
548
+ children: textValue
549
+ })
550
+ ]
470
551
  }),
471
552
  opt.status ? /*#__PURE__*/ jsx(DocumentStatus, {
472
553
  status: opt.status
@@ -475,17 +556,14 @@ const ONE_WAY_RELATIONS = [
475
556
  })
476
557
  }, opt.id);
477
558
  })
478
- }),
479
- /*#__PURE__*/ jsx(Field.Error, {}),
480
- /*#__PURE__*/ jsx(Field.Hint, {})
481
- ]
559
+ })
482
560
  });
483
561
  };
484
562
  /* -------------------------------------------------------------------------------------------------
485
563
  * RelationsList
486
564
  * -----------------------------------------------------------------------------------------------*/ const RELATION_ITEM_HEIGHT = 50;
487
565
  const RELATION_GUTTER = 4;
488
- const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel })=>{
566
+ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel, mainField })=>{
489
567
  const ariaDescriptionId = React.useId();
490
568
  const { formatMessage } = useIntl();
491
569
  const listRef = React.useRef(null);
@@ -571,6 +649,7 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
571
649
  id: relation.id,
572
650
  documentId: relation.documentId ?? relation.apiData?.documentId ?? '',
573
651
  locale: relation.locale || relation.apiData?.locale,
652
+ isTemporary: relation.apiData?.isTemporary,
574
653
  position
575
654
  }
576
655
  }
@@ -650,7 +729,8 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
650
729
  name,
651
730
  handleDisconnect,
652
731
  relations: data,
653
- targetModel
732
+ targetModel,
733
+ mainField
654
734
  },
655
735
  itemKey: (index)=>data[index].id,
656
736
  innerElementType: "ol",
@@ -691,9 +771,26 @@ const ShadowBox = styled(Box)`
691
771
  }
692
772
  `;
693
773
  const ListItem = ({ data, index, style })=>{
694
- const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel } = data;
774
+ const { ariaDescribedBy, canDrag = false, disabled = false, handleCancel, handleDisconnect, handleDropItem, handleGrabItem, handleMoveItem, name, relations, targetModel, mainField } = data;
775
+ const { currentDocumentMeta } = useDocumentContext('RelationsField');
695
776
  const { formatMessage } = useIntl();
696
- const { href, id, label, status, documentId, apiData, locale } = relations[index];
777
+ const { href, id, label: originalLabel, status: originalStatus, documentId, apiData, locale } = relations[index];
778
+ /**
779
+ * The code above attempts to retrieve the updated value of a relation that has not yet been saved.
780
+ * This is necessary when a relation modal is opened, and the mainField or its status is updated.
781
+ * These changes need to be reflected in the initial relation field.
782
+ */ const collectionType = getCollectionType(href);
783
+ const isTemporary = apiData?.isTemporary ?? false;
784
+ const { document } = useDocument({
785
+ collectionType,
786
+ model: targetModel,
787
+ documentId: documentId ?? apiData?.documentId,
788
+ params: currentDocumentMeta.params
789
+ }, {
790
+ skip: !isTemporary
791
+ });
792
+ const label = isTemporary && document ? getRelationLabel(document, mainField) : originalLabel;
793
+ const status = isTemporary && document ? document?.status : originalStatus;
697
794
  const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(canDrag && !disabled, {
698
795
  type: `${ItemTypes.RELATION}_${name}`,
699
796
  index,
@@ -715,6 +812,21 @@ const ListItem = ({ data, index, style })=>{
715
812
  }, [
716
813
  dragPreviewRef
717
814
  ]);
815
+ const safeDocumentId = documentId ?? apiData?.documentId;
816
+ const safeLocale = locale ?? apiData?.locale ?? null;
817
+ const documentMeta = React.useMemo(()=>({
818
+ documentId: safeDocumentId,
819
+ model: targetModel,
820
+ collectionType: getCollectionType(href),
821
+ params: {
822
+ locale: safeLocale
823
+ }
824
+ }), [
825
+ safeDocumentId,
826
+ href,
827
+ safeLocale,
828
+ targetModel
829
+ ]);
718
830
  return /*#__PURE__*/ jsx(Box, {
719
831
  style: style,
720
832
  tag: "li",
@@ -753,23 +865,17 @@ const ListItem = ({ data, index, style })=>{
753
865
  /*#__PURE__*/ jsxs(Flex, {
754
866
  width: "100%",
755
867
  minWidth: 0,
868
+ gap: 4,
756
869
  justifyContent: "space-between",
757
870
  children: [
758
871
  /*#__PURE__*/ jsx(Box, {
872
+ flex: 1,
759
873
  minWidth: 0,
760
874
  paddingTop: 1,
761
875
  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
- }
876
+ children: /*#__PURE__*/ jsx(RelationModalRenderer, {
877
+ relation: documentMeta,
878
+ children: label
773
879
  })
774
880
  }),
775
881
  status ? /*#__PURE__*/ jsx(DocumentStatus, {