@strapi/content-manager 0.0.0-experimental.5a4d501fa348721471ac552dcecac1b0c8146ae7 → 0.0.0-experimental.5aa166b6d14b8a896a5c865796f1ec9f465601e0

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 (301) 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 +414 -0
  10. package/dist/admin/components/Widgets.js.map +1 -0
  11. package/dist/admin/components/Widgets.mjs +391 -0
  12. package/dist/admin/components/Widgets.mjs.map +1 -0
  13. package/dist/admin/history/components/VersionContent.js +24 -3
  14. package/dist/admin/history/components/VersionContent.js.map +1 -1
  15. package/dist/admin/history/components/VersionContent.mjs +25 -4
  16. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  17. package/dist/admin/history/components/VersionHeader.js +6 -0
  18. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  19. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  20. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocumentActions.js +12 -4
  22. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  23. package/dist/admin/hooks/useDocumentActions.mjs +12 -4
  24. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  25. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  26. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  27. package/dist/admin/index.js +62 -5
  28. package/dist/admin/index.js.map +1 -1
  29. package/dist/admin/index.mjs +61 -3
  30. package/dist/admin/index.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/EditViewPage.js +99 -75
  32. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  33. package/dist/admin/pages/EditView/EditViewPage.mjs +101 -77
  34. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/DocumentActions.js +295 -91
  36. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/DocumentActions.mjs +299 -95
  38. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  56. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  58. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -2
  60. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -3
  62. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
  64. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
  66. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +129 -55
  68. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +129 -55
  70. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +148 -38
  72. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +152 -42
  74. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
  76. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  80. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  82. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  84. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  86. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  88. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  90. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  92. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  94. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/utils/data.js +103 -0
  96. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  97. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  98. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  99. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  100. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  101. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  102. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  103. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  104. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  105. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  106. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  107. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  108. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  109. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  110. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  111. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  112. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  113. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  114. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  115. package/dist/admin/preview/components/PreviewHeader.js +1 -1
  116. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  117. package/dist/admin/preview/components/PreviewHeader.mjs +1 -1
  118. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  119. package/dist/admin/preview/pages/Preview.js +86 -33
  120. package/dist/admin/preview/pages/Preview.js.map +1 -1
  121. package/dist/admin/preview/pages/Preview.mjs +87 -34
  122. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  123. package/dist/admin/services/api.js +3 -1
  124. package/dist/admin/services/api.js.map +1 -1
  125. package/dist/admin/services/api.mjs +3 -1
  126. package/dist/admin/services/api.mjs.map +1 -1
  127. package/dist/admin/services/documents.js +32 -16
  128. package/dist/admin/services/documents.js.map +1 -1
  129. package/dist/admin/services/documents.mjs +32 -16
  130. package/dist/admin/services/documents.mjs.map +1 -1
  131. package/dist/admin/services/homepage.js +39 -0
  132. package/dist/admin/services/homepage.js.map +1 -0
  133. package/dist/admin/services/homepage.mjs +36 -0
  134. package/dist/admin/services/homepage.mjs.map +1 -0
  135. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  136. package/dist/admin/src/components/Widgets.d.ts +4 -0
  137. package/dist/admin/src/exports.d.ts +1 -0
  138. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  139. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  140. package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
  141. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  142. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
  143. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  144. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  145. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  146. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  147. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  148. package/dist/admin/src/services/api.d.ts +1 -1
  149. package/dist/admin/src/services/components.d.ts +2 -2
  150. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  151. package/dist/admin/src/services/documents.d.ts +23 -17
  152. package/dist/admin/src/services/homepage.d.ts +9 -0
  153. package/dist/admin/src/services/init.d.ts +1 -1
  154. package/dist/admin/src/services/relations.d.ts +2 -2
  155. package/dist/admin/src/services/uid.d.ts +3 -3
  156. package/dist/admin/src/utils/validation.d.ts +1 -0
  157. package/dist/admin/translations/en.json.js +8 -1
  158. package/dist/admin/translations/en.json.js.map +1 -1
  159. package/dist/admin/translations/en.json.mjs +8 -1
  160. package/dist/admin/translations/en.json.mjs.map +1 -1
  161. package/dist/admin/translations/es.json.js +5 -2
  162. package/dist/admin/translations/es.json.js.map +1 -1
  163. package/dist/admin/translations/es.json.mjs +5 -2
  164. package/dist/admin/translations/es.json.mjs.map +1 -1
  165. package/dist/admin/translations/fr.json.js +10 -2
  166. package/dist/admin/translations/fr.json.js.map +1 -1
  167. package/dist/admin/translations/fr.json.mjs +10 -2
  168. package/dist/admin/translations/fr.json.mjs.map +1 -1
  169. package/dist/admin/translations/ru.json.js +235 -226
  170. package/dist/admin/translations/ru.json.js.map +1 -1
  171. package/dist/admin/translations/ru.json.mjs +230 -226
  172. package/dist/admin/translations/ru.json.mjs.map +1 -1
  173. package/dist/admin/utils/validation.js +17 -6
  174. package/dist/admin/utils/validation.js.map +1 -1
  175. package/dist/admin/utils/validation.mjs +17 -6
  176. package/dist/admin/utils/validation.mjs.map +1 -1
  177. package/dist/server/controllers/content-types.js +11 -1
  178. package/dist/server/controllers/content-types.js.map +1 -1
  179. package/dist/server/controllers/content-types.mjs +11 -1
  180. package/dist/server/controllers/content-types.mjs.map +1 -1
  181. package/dist/server/controllers/index.js +3 -1
  182. package/dist/server/controllers/index.js.map +1 -1
  183. package/dist/server/controllers/index.mjs +3 -1
  184. package/dist/server/controllers/index.mjs.map +1 -1
  185. package/dist/server/controllers/relations.js +2 -2
  186. package/dist/server/controllers/relations.js.map +1 -1
  187. package/dist/server/controllers/relations.mjs +2 -2
  188. package/dist/server/controllers/relations.mjs.map +1 -1
  189. package/dist/server/controllers/validation/index.js +14 -2
  190. package/dist/server/controllers/validation/index.js.map +1 -1
  191. package/dist/server/controllers/validation/index.mjs +14 -2
  192. package/dist/server/controllers/validation/index.mjs.map +1 -1
  193. package/dist/server/history/services/lifecycles.js +3 -0
  194. package/dist/server/history/services/lifecycles.js.map +1 -1
  195. package/dist/server/history/services/lifecycles.mjs +3 -0
  196. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  197. package/dist/server/homepage/controllers/homepage.js +62 -0
  198. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  199. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  200. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  201. package/dist/server/homepage/controllers/index.js +10 -0
  202. package/dist/server/homepage/controllers/index.js.map +1 -0
  203. package/dist/server/homepage/controllers/index.mjs +8 -0
  204. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  205. package/dist/server/homepage/index.js +14 -0
  206. package/dist/server/homepage/index.js.map +1 -0
  207. package/dist/server/homepage/index.mjs +12 -0
  208. package/dist/server/homepage/index.mjs.map +1 -0
  209. package/dist/server/homepage/routes/homepage.js +36 -0
  210. package/dist/server/homepage/routes/homepage.js.map +1 -0
  211. package/dist/server/homepage/routes/homepage.mjs +34 -0
  212. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  213. package/dist/server/homepage/routes/index.js +13 -0
  214. package/dist/server/homepage/routes/index.js.map +1 -0
  215. package/dist/server/homepage/routes/index.mjs +11 -0
  216. package/dist/server/homepage/routes/index.mjs.map +1 -0
  217. package/dist/server/homepage/services/homepage.js +197 -0
  218. package/dist/server/homepage/services/homepage.js.map +1 -0
  219. package/dist/server/homepage/services/homepage.mjs +195 -0
  220. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  221. package/dist/server/homepage/services/index.js +10 -0
  222. package/dist/server/homepage/services/index.js.map +1 -0
  223. package/dist/server/homepage/services/index.mjs +8 -0
  224. package/dist/server/homepage/services/index.mjs.map +1 -0
  225. package/dist/server/preview/services/preview.js +0 -1
  226. package/dist/server/preview/services/preview.js.map +1 -1
  227. package/dist/server/preview/services/preview.mjs +0 -1
  228. package/dist/server/preview/services/preview.mjs.map +1 -1
  229. package/dist/server/routes/index.js +3 -1
  230. package/dist/server/routes/index.js.map +1 -1
  231. package/dist/server/routes/index.mjs +3 -1
  232. package/dist/server/routes/index.mjs.map +1 -1
  233. package/dist/server/services/data-mapper.js +4 -1
  234. package/dist/server/services/data-mapper.js.map +1 -1
  235. package/dist/server/services/data-mapper.mjs +4 -1
  236. package/dist/server/services/data-mapper.mjs.map +1 -1
  237. package/dist/server/services/document-manager.js +8 -1
  238. package/dist/server/services/document-manager.js.map +1 -1
  239. package/dist/server/services/document-manager.mjs +8 -1
  240. package/dist/server/services/document-manager.mjs.map +1 -1
  241. package/dist/server/services/document-metadata.js +3 -1
  242. package/dist/server/services/document-metadata.js.map +1 -1
  243. package/dist/server/services/document-metadata.mjs +3 -1
  244. package/dist/server/services/document-metadata.mjs.map +1 -1
  245. package/dist/server/services/index.js +3 -1
  246. package/dist/server/services/index.js.map +1 -1
  247. package/dist/server/services/index.mjs +3 -1
  248. package/dist/server/services/index.mjs.map +1 -1
  249. package/dist/server/services/utils/configuration/attributes.js +1 -1
  250. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  251. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  252. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  253. package/dist/server/services/utils/configuration/layouts.js +1 -1
  254. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  255. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  256. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  257. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  258. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  259. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  260. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  261. package/dist/server/services/utils/populate.js +11 -0
  262. package/dist/server/services/utils/populate.js.map +1 -1
  263. package/dist/server/services/utils/populate.mjs +11 -0
  264. package/dist/server/services/utils/populate.mjs.map +1 -1
  265. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  266. package/dist/server/src/controllers/index.d.ts.map +1 -1
  267. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  268. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  269. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  270. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  271. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  272. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  273. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  274. package/dist/server/src/homepage/index.d.ts +23 -0
  275. package/dist/server/src/homepage/index.d.ts.map +1 -0
  276. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  277. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  278. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  279. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  280. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  281. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  282. package/dist/server/src/homepage/services/index.d.ts +16 -0
  283. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  284. package/dist/server/src/index.d.ts +15 -0
  285. package/dist/server/src/index.d.ts.map +1 -1
  286. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  287. package/dist/server/src/routes/index.d.ts +1 -0
  288. package/dist/server/src/routes/index.d.ts.map +1 -1
  289. package/dist/server/src/services/data-mapper.d.ts +1 -0
  290. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  291. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  292. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  293. package/dist/server/src/services/index.d.ts +14 -0
  294. package/dist/server/src/services/index.d.ts.map +1 -1
  295. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  296. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  297. package/dist/shared/contracts/collection-types.d.ts +0 -1
  298. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  299. package/dist/shared/contracts/homepage.d.ts +38 -0
  300. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  301. package/package.json +12 -9
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { 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,7 +11,10 @@ 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 { PERMISSIONS } from '../../../../../constants/plugin.mjs';
15
+ import { DocumentRBAC, useDocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
14
16
  import { useDebounce } from '../../../../../hooks/useDebounce.mjs';
17
+ import { useDocument } from '../../../../../hooks/useDocument.mjs';
15
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';
@@ -19,7 +22,7 @@ import { getRelationLabel } from '../../../../../utils/relations.mjs';
19
22
  import { getTranslation } from '../../../../../utils/translations.mjs';
20
23
  import { DocumentStatus } from '../../DocumentStatus.mjs';
21
24
  import { useComponent } from '../ComponentContext.mjs';
22
- import { getCollectionType, RelationModal } from './RelationModal.mjs';
25
+ import { RelationModalRenderer, getCollectionType } from './RelationModal.mjs';
23
26
 
24
27
  /**
25
28
  * Remove a relation, whether it's been already saved or not.
@@ -95,8 +98,9 @@ const ONE_WAY_RELATIONS = [
95
98
  /**
96
99
  * We'll always have a documentId in a created entry, so we look for a componentId first.
97
100
  * Same with `uid` and `documentModel`.
101
+ * The componentId is empty when adding a new component in a repeatable. Let it be null to skip isRelatedToCurrentDocument
98
102
  */ const model = component ? component.uid : currentDocumentMeta.model;
99
- const id = component && componentId ? componentId.toString() : documentId;
103
+ const id = component ? componentId?.toString() : documentId;
100
104
  /**
101
105
  * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.
102
106
  * Where the above example would a nested field within two components, however
@@ -187,7 +191,8 @@ const ONE_WAY_RELATIONS = [
187
191
  apiData: {
188
192
  id: relation.id,
189
193
  documentId: relation.documentId,
190
- locale: relation.locale
194
+ locale: relation.locale,
195
+ isTemporary: true
191
196
  },
192
197
  status: relation.status,
193
198
  /**
@@ -259,7 +264,8 @@ const ONE_WAY_RELATIONS = [
259
264
  isLoading: isFetchingMoreRelations,
260
265
  relationType: props.attribute.relation,
261
266
  // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
262
- targetModel: props.attribute.targetModel
267
+ targetModel: props.attribute.targetModel,
268
+ mainField: props.mainField
263
269
  })
264
270
  ]
265
271
  });
@@ -303,7 +309,6 @@ const ONE_WAY_RELATIONS = [
303
309
  * @description Contains all the logic for the combobox that can search
304
310
  * for relations and then add them to the field's connect array.
305
311
  */ const RelationsInput = ({ hint, id, model, label, labelAction, name, mainField, placeholder, required, unique: _unique, 'aria-label': _ariaLabel, onChange, isRelatedToCurrentDocument, ...props })=>{
306
- const [textValue, setTextValue] = React.useState('');
307
312
  const [searchParams, setSearchParams] = React.useState({
308
313
  _q: '',
309
314
  page: 1
@@ -311,7 +316,6 @@ const ONE_WAY_RELATIONS = [
311
316
  const { toggleNotification } = useNotification();
312
317
  const { currentDocumentMeta } = useDocumentContext('RelationsInput');
313
318
  const { formatMessage } = useIntl();
314
- const fieldRef = useFocusInputField(name);
315
319
  const field = useField(name);
316
320
  const searchParamsDebounced = useDebounce(searchParams, 300);
317
321
  const [searchForTrigger, { data, isLoading }] = useLazySearchRelationsQuery();
@@ -352,13 +356,6 @@ const ONE_WAY_RELATIONS = [
352
356
  isRelatedToCurrentDocument,
353
357
  currentDocumentMeta.params
354
358
  ]);
355
- const handleSearch = async (search)=>{
356
- setSearchParams((s)=>({
357
- ...s,
358
- _q: search,
359
- page: 1
360
- }));
361
- };
362
359
  const hasNextPage = data?.pagination ? data.pagination.page < data.pagination.pageCount : false;
363
360
  const options = data?.results ?? [];
364
361
  const handleChange = (relationId)=>{
@@ -386,6 +383,74 @@ const ONE_WAY_RELATIONS = [
386
383
  *
387
384
  */ onChange(relation);
388
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
+ }));
389
454
  const handleLoadMore = ()=>{
390
455
  if (!data || !data.pagination) {
391
456
  return;
@@ -396,23 +461,44 @@ const ONE_WAY_RELATIONS = [
396
461
  }));
397
462
  }
398
463
  };
464
+ const options = data?.results ?? [];
399
465
  React.useLayoutEffect(()=>{
400
466
  setTextValue('');
401
467
  }, [
402
- field.value
468
+ fieldValue
403
469
  ]);
404
- return /*#__PURE__*/ jsxs(Field.Root, {
405
- error: field.error,
406
- hint: hint,
407
- name: name,
408
- required: required,
409
- children: [
410
- /*#__PURE__*/ jsx(Field.Label, {
411
- action: labelAction,
412
- children: label
413
- }),
414
- /*#__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, {
415
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
+ }),
416
502
  name: name,
417
503
  autocomplete: "list",
418
504
  placeholder: placeholder || formatMessage({
@@ -420,7 +506,7 @@ const ONE_WAY_RELATIONS = [
420
506
  defaultMessage: 'Add relation'
421
507
  }),
422
508
  hasMoreItems: hasNextPage,
423
- loading: isLoading,
509
+ loading: isLoadingSearchRelations || isLoadingPermissions,
424
510
  onOpenChange: ()=>{
425
511
  handleSearch(textValue ?? '');
426
512
  },
@@ -442,7 +528,7 @@ const ONE_WAY_RELATIONS = [
442
528
  handleSearch(event.currentTarget.value);
443
529
  },
444
530
  ...props,
445
- children: options.map((opt)=>{
531
+ children: options?.map((opt)=>{
446
532
  const textValue = getRelationLabel(opt, mainField);
447
533
  return /*#__PURE__*/ jsx(ComboboxOption, {
448
534
  value: opt.id.toString(),
@@ -451,9 +537,17 @@ const ONE_WAY_RELATIONS = [
451
537
  gap: 2,
452
538
  justifyContent: "space-between",
453
539
  children: [
454
- /*#__PURE__*/ jsx(Typography, {
455
- ellipsis: true,
456
- 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
+ ]
457
551
  }),
458
552
  opt.status ? /*#__PURE__*/ jsx(DocumentStatus, {
459
553
  status: opt.status
@@ -462,17 +556,14 @@ const ONE_WAY_RELATIONS = [
462
556
  })
463
557
  }, opt.id);
464
558
  })
465
- }),
466
- /*#__PURE__*/ jsx(Field.Error, {}),
467
- /*#__PURE__*/ jsx(Field.Hint, {})
468
- ]
559
+ })
469
560
  });
470
561
  };
471
562
  /* -------------------------------------------------------------------------------------------------
472
563
  * RelationsList
473
564
  * -----------------------------------------------------------------------------------------------*/ const RELATION_ITEM_HEIGHT = 50;
474
565
  const RELATION_GUTTER = 4;
475
- const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel })=>{
566
+ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationType, targetModel, mainField })=>{
476
567
  const ariaDescriptionId = React.useId();
477
568
  const { formatMessage } = useIntl();
478
569
  const listRef = React.useRef(null);
@@ -558,6 +649,7 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
558
649
  id: relation.id,
559
650
  documentId: relation.documentId ?? relation.apiData?.documentId ?? '',
560
651
  locale: relation.locale || relation.apiData?.locale,
652
+ isTemporary: relation.apiData?.isTemporary,
561
653
  position
562
654
  }
563
655
  }
@@ -637,7 +729,8 @@ const RelationsList = ({ data, serverData, disabled, name, isLoading, relationTy
637
729
  name,
638
730
  handleDisconnect,
639
731
  relations: data,
640
- targetModel
732
+ targetModel,
733
+ mainField
641
734
  },
642
735
  itemKey: (index)=>data[index].id,
643
736
  innerElementType: "ol",
@@ -678,9 +771,26 @@ const ShadowBox = styled(Box)`
678
771
  }
679
772
  `;
680
773
  const ListItem = ({ data, index, style })=>{
681
- 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');
682
776
  const { formatMessage } = useIntl();
683
- 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;
684
794
  const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(canDrag && !disabled, {
685
795
  type: `${ItemTypes.RELATION}_${name}`,
686
796
  index,
@@ -763,7 +873,7 @@ const ListItem = ({ data, index, style })=>{
763
873
  minWidth: 0,
764
874
  paddingTop: 1,
765
875
  paddingBottom: 1,
766
- children: /*#__PURE__*/ jsx(RelationModal, {
876
+ children: /*#__PURE__*/ jsx(RelationModalRenderer, {
767
877
  relation: documentMeta,
768
878
  children: label
769
879
  })