@strapi/content-manager 0.0.0-experimental.e21fe90bf2ab9906267ea6e6ca620bdcc729906c → 0.0.0-experimental.e50ef5e2ea57ecf3da5bcf308508b51ee3c0deca

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 (286) 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/history/components/VersionContent.js +24 -3
  10. package/dist/admin/history/components/VersionContent.js.map +1 -1
  11. package/dist/admin/history/components/VersionContent.mjs +25 -4
  12. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionHeader.js +6 -0
  14. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  15. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  16. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentActions.js +12 -4
  18. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  19. package/dist/admin/hooks/useDocumentActions.mjs +12 -4
  20. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  22. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  23. package/dist/admin/index.js +3 -3
  24. package/dist/admin/index.js.map +1 -1
  25. package/dist/admin/index.mjs +1 -0
  26. package/dist/admin/index.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/EditViewPage.js +94 -75
  28. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  29. package/dist/admin/pages/EditView/EditViewPage.mjs +95 -76
  30. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/DocumentActions.js +289 -91
  32. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/DocumentActions.mjs +293 -95
  34. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  36. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  38. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  54. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -2
  56. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -3
  58. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
  60. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
  62. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +129 -55
  64. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +129 -55
  66. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +120 -32
  68. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +124 -36
  70. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
  72. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
  74. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  76. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  78. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  80. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  82. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  84. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  86. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  88. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  90. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/utils/data.js +103 -0
  92. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  93. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  94. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  95. package/dist/admin/pages/ListView/ListViewPage.js +86 -0
  96. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  97. package/dist/admin/pages/ListView/ListViewPage.mjs +88 -2
  98. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  99. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  100. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  101. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  102. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  103. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  104. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  105. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  106. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  107. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  108. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  109. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  110. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  111. package/dist/admin/preview/components/PreviewHeader.js +1 -1
  112. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  113. package/dist/admin/preview/components/PreviewHeader.mjs +1 -1
  114. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  115. package/dist/admin/services/api.js +2 -1
  116. package/dist/admin/services/api.js.map +1 -1
  117. package/dist/admin/services/api.mjs +2 -1
  118. package/dist/admin/services/api.mjs.map +1 -1
  119. package/dist/admin/services/documents.js +4 -4
  120. package/dist/admin/services/documents.js.map +1 -1
  121. package/dist/admin/services/documents.mjs +4 -4
  122. package/dist/admin/services/documents.mjs.map +1 -1
  123. package/dist/admin/services/homepage.js +9 -5
  124. package/dist/admin/services/homepage.js.map +1 -1
  125. package/dist/admin/services/homepage.mjs +9 -5
  126. package/dist/admin/services/homepage.mjs.map +1 -1
  127. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  128. package/dist/admin/src/exports.d.ts +1 -0
  129. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  130. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  131. package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
  132. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  133. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
  134. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  135. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  136. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  137. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  138. package/dist/admin/src/services/api.d.ts +1 -1
  139. package/dist/admin/src/services/components.d.ts +2 -2
  140. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  141. package/dist/admin/src/services/documents.d.ts +23 -17
  142. package/dist/admin/src/services/homepage.d.ts +1 -1
  143. package/dist/admin/src/services/init.d.ts +1 -1
  144. package/dist/admin/src/services/relations.d.ts +2 -2
  145. package/dist/admin/src/services/uid.d.ts +3 -3
  146. package/dist/admin/src/utils/validation.d.ts +1 -0
  147. package/dist/admin/translations/en.json.js +3 -1
  148. package/dist/admin/translations/en.json.js.map +1 -1
  149. package/dist/admin/translations/en.json.mjs +3 -1
  150. package/dist/admin/translations/en.json.mjs.map +1 -1
  151. package/dist/admin/translations/fr.json.js +6 -1
  152. package/dist/admin/translations/fr.json.js.map +1 -1
  153. package/dist/admin/translations/fr.json.mjs +6 -1
  154. package/dist/admin/translations/fr.json.mjs.map +1 -1
  155. package/dist/admin/translations/ru.json.js +235 -226
  156. package/dist/admin/translations/ru.json.js.map +1 -1
  157. package/dist/admin/translations/ru.json.mjs +230 -226
  158. package/dist/admin/translations/ru.json.mjs.map +1 -1
  159. package/dist/admin/utils/validation.js +17 -6
  160. package/dist/admin/utils/validation.js.map +1 -1
  161. package/dist/admin/utils/validation.mjs +17 -6
  162. package/dist/admin/utils/validation.mjs.map +1 -1
  163. package/dist/server/controllers/content-types.js +11 -1
  164. package/dist/server/controllers/content-types.js.map +1 -1
  165. package/dist/server/controllers/content-types.mjs +11 -1
  166. package/dist/server/controllers/content-types.mjs.map +1 -1
  167. package/dist/server/controllers/index.js +3 -1
  168. package/dist/server/controllers/index.js.map +1 -1
  169. package/dist/server/controllers/index.mjs +3 -1
  170. package/dist/server/controllers/index.mjs.map +1 -1
  171. package/dist/server/controllers/relations.js +2 -2
  172. package/dist/server/controllers/relations.js.map +1 -1
  173. package/dist/server/controllers/relations.mjs +2 -2
  174. package/dist/server/controllers/relations.mjs.map +1 -1
  175. package/dist/server/controllers/validation/index.js +14 -2
  176. package/dist/server/controllers/validation/index.js.map +1 -1
  177. package/dist/server/controllers/validation/index.mjs +14 -2
  178. package/dist/server/controllers/validation/index.mjs.map +1 -1
  179. package/dist/server/history/services/lifecycles.js +3 -0
  180. package/dist/server/history/services/lifecycles.js.map +1 -1
  181. package/dist/server/history/services/lifecycles.mjs +3 -0
  182. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  183. package/dist/server/homepage/controllers/homepage.js +57 -0
  184. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  185. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  186. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  187. package/dist/server/homepage/controllers/index.js +10 -0
  188. package/dist/server/homepage/controllers/index.js.map +1 -0
  189. package/dist/server/homepage/controllers/index.mjs +8 -0
  190. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  191. package/dist/server/homepage/index.js +14 -0
  192. package/dist/server/homepage/index.js.map +1 -0
  193. package/dist/server/homepage/index.mjs +12 -0
  194. package/dist/server/homepage/index.mjs.map +1 -0
  195. package/dist/server/homepage/routes/homepage.js +25 -0
  196. package/dist/server/homepage/routes/homepage.js.map +1 -0
  197. package/dist/server/homepage/routes/homepage.mjs +23 -0
  198. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  199. package/dist/server/homepage/routes/index.js +13 -0
  200. package/dist/server/homepage/routes/index.js.map +1 -0
  201. package/dist/server/homepage/routes/index.mjs +11 -0
  202. package/dist/server/homepage/routes/index.mjs.map +1 -0
  203. package/dist/server/homepage/services/homepage.js +166 -0
  204. package/dist/server/homepage/services/homepage.js.map +1 -0
  205. package/dist/server/homepage/services/homepage.mjs +164 -0
  206. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  207. package/dist/server/homepage/services/index.js +10 -0
  208. package/dist/server/homepage/services/index.js.map +1 -0
  209. package/dist/server/homepage/services/index.mjs +8 -0
  210. package/dist/server/homepage/services/index.mjs.map +1 -0
  211. package/dist/server/preview/services/preview.js +0 -1
  212. package/dist/server/preview/services/preview.js.map +1 -1
  213. package/dist/server/preview/services/preview.mjs +0 -1
  214. package/dist/server/preview/services/preview.mjs.map +1 -1
  215. package/dist/server/routes/index.js +3 -1
  216. package/dist/server/routes/index.js.map +1 -1
  217. package/dist/server/routes/index.mjs +3 -1
  218. package/dist/server/routes/index.mjs.map +1 -1
  219. package/dist/server/services/data-mapper.js +4 -1
  220. package/dist/server/services/data-mapper.js.map +1 -1
  221. package/dist/server/services/data-mapper.mjs +4 -1
  222. package/dist/server/services/data-mapper.mjs.map +1 -1
  223. package/dist/server/services/document-manager.js +8 -1
  224. package/dist/server/services/document-manager.js.map +1 -1
  225. package/dist/server/services/document-manager.mjs +8 -1
  226. package/dist/server/services/document-manager.mjs.map +1 -1
  227. package/dist/server/services/document-metadata.js +3 -1
  228. package/dist/server/services/document-metadata.js.map +1 -1
  229. package/dist/server/services/document-metadata.mjs +3 -1
  230. package/dist/server/services/document-metadata.mjs.map +1 -1
  231. package/dist/server/services/index.js +3 -1
  232. package/dist/server/services/index.js.map +1 -1
  233. package/dist/server/services/index.mjs +3 -1
  234. package/dist/server/services/index.mjs.map +1 -1
  235. package/dist/server/services/utils/configuration/attributes.js +1 -1
  236. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  237. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  238. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  239. package/dist/server/services/utils/configuration/layouts.js +1 -1
  240. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  241. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  242. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  243. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  244. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  245. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  246. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  247. package/dist/server/services/utils/populate.js +11 -0
  248. package/dist/server/services/utils/populate.js.map +1 -1
  249. package/dist/server/services/utils/populate.mjs +11 -0
  250. package/dist/server/services/utils/populate.mjs.map +1 -1
  251. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  252. package/dist/server/src/controllers/index.d.ts.map +1 -1
  253. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  254. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  255. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  256. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  257. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  258. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  259. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  260. package/dist/server/src/homepage/index.d.ts +18 -0
  261. package/dist/server/src/homepage/index.d.ts.map +1 -0
  262. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  263. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  264. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  265. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  266. package/dist/server/src/{services → homepage/services}/homepage.d.ts +3 -1
  267. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  268. package/dist/server/src/homepage/services/index.d.ts +11 -0
  269. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  270. package/dist/server/src/index.d.ts +10 -0
  271. package/dist/server/src/index.d.ts.map +1 -1
  272. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  273. package/dist/server/src/routes/index.d.ts +1 -0
  274. package/dist/server/src/routes/index.d.ts.map +1 -1
  275. package/dist/server/src/services/data-mapper.d.ts +1 -0
  276. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  277. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  278. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  279. package/dist/server/src/services/index.d.ts +9 -0
  280. package/dist/server/src/services/index.d.ts.map +1 -1
  281. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  282. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  283. package/dist/shared/contracts/collection-types.d.ts +0 -1
  284. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  285. package/package.json +11 -8
  286. package/dist/server/src/services/homepage.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useForm, useField } from '@strapi/admin/strapi-admin';
4
- import { Box, useComposedRefs, IconButton, Menu, MenuItem, Flex, Accordion, Grid } from '@strapi/design-system';
3
+ import { useForm, createRulesEngine, useField } from '@strapi/admin/strapi-admin';
4
+ import { Box, useComposedRefs, IconButton, Menu, Flex, Accordion, Grid } from '@strapi/design-system';
5
5
  import { Trash, Drag, More } from '@strapi/icons';
6
6
  import { getEmptyImage } from 'react-dnd-html5-backend';
7
7
  import { useIntl } from 'react-intl';
@@ -20,6 +20,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
20
20
  const { formatMessage } = useIntl();
21
21
  const formValues = useForm('DynamicComponent', (state)=>state.values);
22
22
  const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');
23
+ const rulesEngine = createRulesEngine();
23
24
  const { edit: { components } } = useDocumentLayout(currentDocumentMeta.model);
24
25
  const title = React.useMemo(()=>{
25
26
  const { mainField } = components[componentUid]?.settings ?? {
@@ -148,7 +149,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
148
149
  /*#__PURE__*/ jsx(Menu.Label, {
149
150
  children: category
150
151
  }),
151
- components.map(({ displayName, uid })=>/*#__PURE__*/ jsx(MenuItem, {
152
+ components.map(({ displayName, uid })=>/*#__PURE__*/ jsx(Menu.Item, {
152
153
  onSelect: ()=>onAddComponent(uid, index),
153
154
  children: displayName
154
155
  }, componentUid))
@@ -171,7 +172,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
171
172
  /*#__PURE__*/ jsx(Menu.Label, {
172
173
  children: category
173
174
  }),
174
- components.map(({ displayName, uid })=>/*#__PURE__*/ jsx(MenuItem, {
175
+ components.map(({ displayName, uid })=>/*#__PURE__*/ jsx(Menu.Item, {
175
176
  onSelect: ()=>onAddComponent(uid, index + 1),
176
177
  children: displayName
177
178
  }, componentUid))
@@ -227,7 +228,18 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
227
228
  paddingBottom: 6,
228
229
  children: /*#__PURE__*/ jsx(Grid.Root, {
229
230
  gap: 4,
230
- children: components[componentUid]?.layout?.map((row, rowInd)=>/*#__PURE__*/ jsx(Grid.Item, {
231
+ children: components[componentUid]?.layout?.map((row, rowInd)=>{
232
+ const visibleFields = row.filter(({ ...field })=>{
233
+ const condition = field.attribute.conditions?.visible;
234
+ if (condition) {
235
+ return rulesEngine.evaluate(condition, value);
236
+ }
237
+ return true;
238
+ });
239
+ if (visibleFields.length === 0) {
240
+ return null; // Skip rendering the entire grid row
241
+ }
242
+ return /*#__PURE__*/ jsx(Grid.Item, {
231
243
  col: 12,
232
244
  s: 12,
233
245
  xs: 12,
@@ -235,7 +247,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
235
247
  alignItems: "stretch",
236
248
  children: /*#__PURE__*/ jsx(ResponsiveGridRoot, {
237
249
  gap: 4,
238
- children: row.map(({ size, ...field })=>{
250
+ children: visibleFields.map(({ size, ...field })=>{
239
251
  const fieldName = `${name}.${index}.${field.name}`;
240
252
  const fieldWithTranslatedLabel = {
241
253
  ...field,
@@ -262,7 +274,8 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
262
274
  }, fieldName);
263
275
  })
264
276
  })
265
- }, rowInd))
277
+ }, rowInd);
278
+ })
266
279
  })
267
280
  })
268
281
  })
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicComponent.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useField } from '@strapi/admin/strapi-admin';\nimport {\n Accordion,\n Box,\n Flex,\n Grid,\n IconButton,\n useComposedRefs,\n Menu,\n MenuItem,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Drag, More, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COMPONENT_ICONS } from '../../../../../components/ComponentIcon';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../../../../hooks/useDragAndDrop';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { InputRenderer, type InputRendererProps } from '../../InputRenderer';\n\nimport type { ComponentPickerProps } from './ComponentPicker';\n\ninterface DynamicComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>,\n Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {\n componentUid: string;\n disabled?: boolean;\n index: number;\n name: string;\n onAddComponent: (componentUid: string, index: number) => void;\n onRemoveComponentClick: () => void;\n onMoveComponent: (dragIndex: number, hoverIndex: number) => void;\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicComponent = ({\n componentUid,\n disabled,\n index,\n name,\n onRemoveComponentClick,\n onMoveComponent,\n onGrabItem,\n onDropItem,\n onCancel,\n dynamicComponentsByCategory = {},\n onAddComponent,\n children,\n}: DynamicComponentProps) => {\n const { formatMessage } = useIntl();\n const formValues = useForm('DynamicComponent', (state) => state.values);\n const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');\n\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const title = React.useMemo(() => {\n const { mainField } = components[componentUid]?.settings ?? { mainField: 'id' };\n\n const mainFieldValue = getIn(formValues, `${name}.${index}.${mainField}`);\n\n const displayedValue =\n mainField === 'id' || !mainFieldValue ? '' : String(mainFieldValue).trim();\n\n const mainValue = displayedValue.length > 0 ? `- ${displayedValue}` : displayedValue;\n\n return mainValue;\n }, [componentUid, components, formValues, name, index]);\n\n const { icon, displayName } = React.useMemo(() => {\n const [category] = componentUid.split('.');\n const { icon, displayName } = (dynamicComponentsByCategory[category] ?? []).find(\n (component) => component.uid === componentUid\n ) ?? { icon: null, displayName: null };\n\n return { icon, displayName };\n }, [componentUid, dynamicComponentsByCategory]);\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.DYNAMIC_ZONE}_${name}`,\n index,\n item: {\n index,\n displayedValue: `${displayName} ${title}`,\n icon,\n },\n onMoveItem: onMoveComponent,\n onDropItem,\n onGrabItem,\n onCancel,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n /**\n * We don't need the accordion's to communicate with each other,\n * so a unique value for their state is enough.\n */\n const accordionValue = React.useId();\n\n const { value = [], rawError } = useField(`${name}.${index}`);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n\n React.useEffect(() => {\n if (rawError && value) {\n setCollapseToOpen(accordionValue);\n }\n }, [rawError, value, accordionValue]);\n\n const composedBoxRefs = useComposedRefs(boxRef, dropRef);\n\n const accordionActions = disabled ? null : (\n <>\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n {\n id: getTranslation('components.DynamicZone.delete-label'),\n defaultMessage: 'Delete {name}',\n },\n { name: title }\n )}\n onClick={onRemoveComponentClick}\n >\n <Trash />\n </IconButton>\n <IconButton\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n <Menu.Root>\n <Menu.Trigger size=\"S\" endIcon={null} paddingLeft={0} paddingRight={0}>\n <IconButton\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslation('components.DynamicZone.more-actions'),\n defaultMessage: 'More actions',\n })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-above'),\n defaultMessage: 'Add component above',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <MenuItem key={componentUid} onSelect={() => onAddComponent(uid, index)}>\n {displayName}\n </MenuItem>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-below'),\n defaultMessage: 'Add component below',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <MenuItem key={componentUid} onSelect={() => onAddComponent(uid, index + 1)}>\n {displayName}\n </MenuItem>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n </>\n );\n\n const accordionTitle = title ? `${displayName} ${title}` : displayName;\n\n return (\n <ComponentContainer tag=\"li\" width=\"100%\">\n <Flex justifyContent=\"center\">\n <Rectangle background=\"neutral200\" />\n </Flex>\n <StyledBox ref={composedBoxRefs} hasRadius>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Root value={collapseToOpen} onValueChange={setCollapseToOpen}>\n <Accordion.Item value={accordionValue}>\n <Accordion.Header>\n <Accordion.Trigger\n icon={\n icon && COMPONENT_ICONS[icon]\n ? COMPONENT_ICONS[icon]\n : COMPONENT_ICONS.dashboard\n }\n >\n {accordionTitle}\n </Accordion.Trigger>\n <Accordion.Actions>{accordionActions}</Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <AccordionContentRadius background=\"neutral0\">\n <Box paddingLeft={6} paddingRight={6} paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={4}>\n {components[componentUid]?.layout?.map((row, rowInd) => (\n <Grid.Item\n col={12}\n key={rowInd}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <ResponsiveGridRoot gap={4}>\n {row.map(({ size, ...field }) => {\n const fieldName = `${name}.${index}.${field.name}`;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.components.${componentUid}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <ResponsiveGridItem\n col={size}\n key={fieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children ? (\n children({\n ...fieldWithTranslatedLabel,\n document: currentDocument,\n name: fieldName,\n })\n ) : (\n <InputRenderer\n {...fieldWithTranslatedLabel}\n document={currentDocument}\n name={fieldName}\n />\n )}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n </Grid.Item>\n ))}\n </Grid.Root>\n </Box>\n </AccordionContentRadius>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )}\n </StyledBox>\n </ComponentContainer>\n );\n};\n\n// TODO: Delete once https://github.com/strapi/design-system/pull/858\n// is merged and released.\nconst StyledBox = styled<BoxComponent>(Box)`\n > div:first-child {\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n }\n`;\n\nconst AccordionContentRadius = styled<BoxComponent>(Box)`\n border-radius: 0 0 ${({ theme }) => theme.spaces[1]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst Rectangle = styled<BoxComponent>(Box)`\n width: ${({ theme }) => theme.spaces[2]};\n height: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst Preview = styled.span`\n display: block;\n background-color: ${({ theme }) => theme.colors.primary100};\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n padding: ${({ theme }) => theme.spaces[6]};\n`;\n\nconst ComponentContainer = styled<BoxComponent<'li'>>(Box)`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nexport { DynamicComponent };\nexport type { DynamicComponentProps };\n"],"names":["DynamicComponent","componentUid","disabled","index","name","onRemoveComponentClick","onMoveComponent","onGrabItem","onDropItem","onCancel","dynamicComponentsByCategory","onAddComponent","children","formatMessage","useIntl","formValues","useForm","state","values","currentDocument","currentDocumentMeta","useDocumentContext","edit","components","useDocumentLayout","model","title","React","useMemo","mainField","settings","mainFieldValue","getIn","displayedValue","String","trim","mainValue","length","icon","displayName","category","split","find","component","uid","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","DYNAMIC_ZONE","item","onMoveItem","useEffect","getEmptyImage","captureDraggingState","accordionValue","useId","value","rawError","useField","collapseToOpen","setCollapseToOpen","useState","composedBoxRefs","useComposedRefs","accordionActions","_jsxs","_Fragment","_jsx","IconButton","variant","label","id","getTranslation","defaultMessage","onClick","Trash","e","stopPropagation","data-handler-id","ref","onKeyDown","Drag","Menu","Root","Trigger","size","endIcon","paddingLeft","paddingRight","tag","More","aria-hidden","focusable","Content","SubRoot","SubTrigger","SubContent","Object","entries","map","Fragment","Label","MenuItem","onSelect","accordionTitle","ComponentContainer","width","Flex","justifyContent","Rectangle","background","StyledBox","hasRadius","Preview","Accordion","onValueChange","Item","Header","COMPONENT_ICONS","dashboard","Actions","AccordionContentRadius","Box","paddingTop","paddingBottom","Grid","gap","layout","row","rowInd","col","s","xs","direction","alignItems","ResponsiveGridRoot","field","fieldName","fieldWithTranslatedLabel","ResponsiveGridItem","document","InputRenderer","styled","theme","shadows","tableShadow","spaces","span","colors","primary100","primary500"],"mappings":"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"}
1
+ {"version":3,"file":"DynamicComponent.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useField, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport {\n Accordion,\n Box,\n Flex,\n Grid,\n IconButton,\n useComposedRefs,\n Menu,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Drag, More, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COMPONENT_ICONS } from '../../../../../components/ComponentIcon';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../../../../hooks/useDragAndDrop';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { InputRenderer, type InputRendererProps } from '../../InputRenderer';\n\nimport type { ComponentPickerProps } from './ComponentPicker';\n\ninterface DynamicComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>,\n Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {\n componentUid: string;\n disabled?: boolean;\n index: number;\n name: string;\n onAddComponent: (componentUid: string, index: number) => void;\n onRemoveComponentClick: () => void;\n onMoveComponent: (dragIndex: number, hoverIndex: number) => void;\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicComponent = ({\n componentUid,\n disabled,\n index,\n name,\n onRemoveComponentClick,\n onMoveComponent,\n onGrabItem,\n onDropItem,\n onCancel,\n dynamicComponentsByCategory = {},\n onAddComponent,\n children,\n}: DynamicComponentProps) => {\n const { formatMessage } = useIntl();\n const formValues = useForm('DynamicComponent', (state) => state.values);\n const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const rulesEngine = createRulesEngine();\n\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const title = React.useMemo(() => {\n const { mainField } = components[componentUid]?.settings ?? { mainField: 'id' };\n\n const mainFieldValue = getIn(formValues, `${name}.${index}.${mainField}`);\n\n const displayedValue =\n mainField === 'id' || !mainFieldValue ? '' : String(mainFieldValue).trim();\n\n const mainValue = displayedValue.length > 0 ? `- ${displayedValue}` : displayedValue;\n\n return mainValue;\n }, [componentUid, components, formValues, name, index]);\n\n const { icon, displayName } = React.useMemo(() => {\n const [category] = componentUid.split('.');\n const { icon, displayName } = (dynamicComponentsByCategory[category] ?? []).find(\n (component) => component.uid === componentUid\n ) ?? { icon: null, displayName: null };\n\n return { icon, displayName };\n }, [componentUid, dynamicComponentsByCategory]);\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.DYNAMIC_ZONE}_${name}`,\n index,\n item: {\n index,\n displayedValue: `${displayName} ${title}`,\n icon,\n },\n onMoveItem: onMoveComponent,\n onDropItem,\n onGrabItem,\n onCancel,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n /**\n * We don't need the accordion's to communicate with each other,\n * so a unique value for their state is enough.\n */\n const accordionValue = React.useId();\n\n const { value = [], rawError } = useField(`${name}.${index}`);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n\n React.useEffect(() => {\n if (rawError && value) {\n setCollapseToOpen(accordionValue);\n }\n }, [rawError, value, accordionValue]);\n\n const composedBoxRefs = useComposedRefs(boxRef, dropRef);\n\n const accordionActions = disabled ? null : (\n <>\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n {\n id: getTranslation('components.DynamicZone.delete-label'),\n defaultMessage: 'Delete {name}',\n },\n { name: title }\n )}\n onClick={onRemoveComponentClick}\n >\n <Trash />\n </IconButton>\n <IconButton\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n <Menu.Root>\n <Menu.Trigger size=\"S\" endIcon={null} paddingLeft={0} paddingRight={0}>\n <IconButton\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslation('components.DynamicZone.more-actions'),\n defaultMessage: 'More actions',\n })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-above'),\n defaultMessage: 'Add component above',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={componentUid} onSelect={() => onAddComponent(uid, index)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-below'),\n defaultMessage: 'Add component below',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={componentUid} onSelect={() => onAddComponent(uid, index + 1)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n </>\n );\n\n const accordionTitle = title ? `${displayName} ${title}` : displayName;\n\n return (\n <ComponentContainer tag=\"li\" width=\"100%\">\n <Flex justifyContent=\"center\">\n <Rectangle background=\"neutral200\" />\n </Flex>\n <StyledBox ref={composedBoxRefs} hasRadius>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Root value={collapseToOpen} onValueChange={setCollapseToOpen}>\n <Accordion.Item value={accordionValue}>\n <Accordion.Header>\n <Accordion.Trigger\n icon={\n icon && COMPONENT_ICONS[icon]\n ? COMPONENT_ICONS[icon]\n : COMPONENT_ICONS.dashboard\n }\n >\n {accordionTitle}\n </Accordion.Trigger>\n <Accordion.Actions>{accordionActions}</Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <AccordionContentRadius background=\"neutral0\">\n <Box paddingLeft={6} paddingRight={6} paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={4}>\n {components[componentUid]?.layout?.map((row, rowInd) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <Grid.Item\n col={12}\n key={rowInd}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <ResponsiveGridRoot gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n const fieldName = `${name}.${index}.${field.name}`;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.components.${componentUid}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <ResponsiveGridItem\n col={size}\n key={fieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children ? (\n children({\n ...fieldWithTranslatedLabel,\n document: currentDocument,\n name: fieldName,\n })\n ) : (\n <InputRenderer\n {...fieldWithTranslatedLabel}\n document={currentDocument}\n name={fieldName}\n />\n )}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n </AccordionContentRadius>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )}\n </StyledBox>\n </ComponentContainer>\n );\n};\n\n// TODO: Delete once https://github.com/strapi/design-system/pull/858\n// is merged and released.\nconst StyledBox = styled<BoxComponent>(Box)`\n > div:first-child {\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n }\n`;\n\nconst AccordionContentRadius = styled<BoxComponent>(Box)`\n border-radius: 0 0 ${({ theme }) => theme.spaces[1]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst Rectangle = styled<BoxComponent>(Box)`\n width: ${({ theme }) => theme.spaces[2]};\n height: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst Preview = styled.span`\n display: block;\n background-color: ${({ theme }) => theme.colors.primary100};\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n padding: ${({ theme }) => theme.spaces[6]};\n`;\n\nconst ComponentContainer = styled<BoxComponent<'li'>>(Box)`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nexport { DynamicComponent };\nexport type { DynamicComponentProps };\n"],"names":["DynamicComponent","componentUid","disabled","index","name","onRemoveComponentClick","onMoveComponent","onGrabItem","onDropItem","onCancel","dynamicComponentsByCategory","onAddComponent","children","formatMessage","useIntl","formValues","useForm","state","values","currentDocument","currentDocumentMeta","useDocumentContext","rulesEngine","createRulesEngine","edit","components","useDocumentLayout","model","title","React","useMemo","mainField","settings","mainFieldValue","getIn","displayedValue","String","trim","mainValue","length","icon","displayName","category","split","find","component","uid","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","DYNAMIC_ZONE","item","onMoveItem","useEffect","getEmptyImage","captureDraggingState","accordionValue","useId","value","rawError","useField","collapseToOpen","setCollapseToOpen","useState","composedBoxRefs","useComposedRefs","accordionActions","_jsxs","_Fragment","_jsx","IconButton","variant","label","id","getTranslation","defaultMessage","onClick","Trash","e","stopPropagation","data-handler-id","ref","onKeyDown","Drag","Menu","Root","Trigger","size","endIcon","paddingLeft","paddingRight","tag","More","aria-hidden","focusable","Content","SubRoot","SubTrigger","SubContent","Object","entries","map","Fragment","Label","Item","onSelect","accordionTitle","ComponentContainer","width","Flex","justifyContent","Rectangle","background","StyledBox","hasRadius","Preview","Accordion","onValueChange","Header","COMPONENT_ICONS","dashboard","Actions","AccordionContentRadius","Box","paddingTop","paddingBottom","Grid","gap","layout","row","rowInd","visibleFields","filter","field","condition","attribute","conditions","visible","evaluate","col","s","xs","direction","alignItems","ResponsiveGridRoot","fieldName","fieldWithTranslatedLabel","ResponsiveGridItem","document","InputRenderer","styled","theme","shadows","tableShadow","spaces","span","colors","primary100","primary500"],"mappings":"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"}
@@ -11,6 +11,7 @@ var styledComponents = require('styled-components');
11
11
  var collections = require('../../../../../constants/collections.js');
12
12
  var plugin = require('../../../../../constants/plugin.js');
13
13
  var api = require('../../../../../utils/api.js');
14
+ require('date-fns');
14
15
  var DocumentStatus = require('../../DocumentStatus.js');
15
16
  var useDocument = require('../../../../../hooks/useDocument.js');
16
17
  require('../../../../../preview/pages/Preview.js');
@@ -20,6 +21,7 @@ var DocumentRBAC = require('../../../../../features/DocumentRBAC.js');
20
21
  var validation = require('../../../../../utils/validation.js');
21
22
  var DocumentActions = require('../../DocumentActions.js');
22
23
  var FormLayout = require('../../FormLayout.js');
24
+ var ComponentContext = require('../ComponentContext.js');
23
25
 
24
26
  function _interopNamespaceDefault(e) {
25
27
  var n = Object.create(null);
@@ -51,23 +53,37 @@ const StyledModalContent = styledComponents.styled(designSystem.Modal.Content)`
51
53
  height: 90%;
52
54
  max-height: 100%;
53
55
  `;
56
+ const getFullPageUrl = (currentDocumentMeta)=>{
57
+ const isSingleType = currentDocumentMeta.collectionType === collections.SINGLE_TYPES;
58
+ const queryParams = currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : '';
59
+ return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;
60
+ };
54
61
  function reducer(state, action) {
55
62
  switch(action.type){
56
63
  case 'GO_TO_RELATION':
57
64
  if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
58
65
  return {
59
66
  ...state,
60
- confirmDialogIntent: action.payload.document
67
+ confirmDialogIntent: action.payload.document,
68
+ fieldToConnect: action.payload.fieldToConnect,
69
+ fieldToConnectUID: action.payload.fieldToConnectUID
61
70
  };
62
71
  }
72
+ const lastItemDocumentHistory = state.documentHistory.at(-1);
73
+ const hasToResetDocumentHistory = lastItemDocumentHistory && !lastItemDocumentHistory.documentId;
63
74
  return {
64
75
  ...state,
65
- documentHistory: [
76
+ // Reset document history if the last item has documentId undefined
77
+ documentHistory: hasToResetDocumentHistory ? [
78
+ action.payload.document
79
+ ] : [
66
80
  ...state.documentHistory,
67
81
  action.payload.document
68
82
  ],
69
83
  confirmDialogIntent: null,
70
- isModalOpen: true
84
+ isModalOpen: true,
85
+ fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,
86
+ fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID
71
87
  };
72
88
  case 'GO_BACK':
73
89
  if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
@@ -95,6 +111,21 @@ function reducer(state, action) {
95
111
  isModalOpen: false,
96
112
  confirmDialogIntent: null
97
113
  };
114
+ case 'GO_TO_CREATED_RELATION':
115
+ return {
116
+ ...state,
117
+ // Reset document history if the last item has documentId undefined
118
+ documentHistory: state.documentHistory ? [
119
+ ...state.documentHistory.slice(0, -1),
120
+ action.payload.document
121
+ ] : [
122
+ action.payload.document
123
+ ],
124
+ confirmDialogIntent: null,
125
+ isModalOpen: true,
126
+ fieldToConnect: undefined,
127
+ fieldToConnectUID: undefined
128
+ };
98
129
  case 'CANCEL_CONFIRM_DIALOG':
99
130
  return {
100
131
  ...state,
@@ -124,21 +155,17 @@ function reducer(state, action) {
124
155
  }
125
156
  }
126
157
  const [RelationModalProvider, useRelationModal] = strapiAdmin.createContext('RelationModal');
127
- const getFullPageUrl = (currentDocumentMeta)=>{
128
- const isSingleType = currentDocumentMeta.collectionType === collections.SINGLE_TYPES;
129
- const queryParams = currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : '';
130
- return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;
131
- };
132
- /**
133
- * Component responsible of rendering its children wrapped in a modal, form and context if needed
134
- */ const RelationModalRenderer = ({ children, trigger, relation })=>{
135
- const { formatMessage } = reactIntl.useIntl();
136
- const navigate = reactRouterDom.useNavigate();
158
+ function isRenderProp(children) {
159
+ return typeof children === 'function';
160
+ }
161
+ const RootRelationRenderer = (props)=>{
162
+ const { children } = props;
137
163
  const [state, dispatch] = React__namespace.useReducer(reducer, {
138
164
  documentHistory: [],
139
165
  confirmDialogIntent: null,
140
166
  isModalOpen: false,
141
- hasUnsavedChanges: false
167
+ hasUnsavedChanges: false,
168
+ fieldToConnect: undefined
142
169
  });
143
170
  const rootDocument = useDocument.useDoc();
144
171
  const [{ query }] = strapiAdmin.useQueryParams();
@@ -153,11 +180,9 @@ const getFullPageUrl = (currentDocumentMeta)=>{
153
180
  };
154
181
  const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;
155
182
  const currentDocument = useDocument.useDocument(currentDocumentMeta);
156
- const parentContextValue = useRelationModal('RelationContextWrapper', (state)=>state, false);
157
- // A parent relation is already rendering a modal. In this case simply render the trigger
158
- if (parentContextValue) {
159
- return trigger;
160
- }
183
+ // TODO: check if we can remove the single type check
184
+ const isSingleType = currentDocumentMeta.collectionType === collections.SINGLE_TYPES;
185
+ const isCreating = !currentDocumentMeta.documentId && !isSingleType;
161
186
  /**
162
187
  * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the
163
188
  * pieces that will be used by potential child relations: the context, header, form, and footer.
@@ -167,18 +192,64 @@ const getFullPageUrl = (currentDocumentMeta)=>{
167
192
  rootDocumentMeta: rootDocumentMeta,
168
193
  currentDocumentMeta: currentDocumentMeta,
169
194
  currentDocument: currentDocument,
195
+ isCreating: isCreating,
196
+ children: /*#__PURE__*/ jsxRuntime.jsx(RelationModal, {
197
+ children: isRenderProp(children) ? children({
198
+ dispatch
199
+ }) : props.relation && /*#__PURE__*/ jsxRuntime.jsx(RelationModalTrigger, {
200
+ relation: props.relation,
201
+ children: children
202
+ })
203
+ })
204
+ });
205
+ };
206
+ const NestedRelationRenderer = (props)=>{
207
+ const { children } = props;
208
+ const dispatch = useRelationModal('NestedRelation', (state)=>state.dispatch);
209
+ return isRenderProp(children) ? children({
210
+ dispatch
211
+ }) : props.relation && /*#__PURE__*/ jsxRuntime.jsx(RelationModalTrigger, {
212
+ relation: props.relation,
213
+ children: children
214
+ }); /* This is the trigger that will be rendered in the parent relation */
215
+ };
216
+ /**
217
+ * Component responsible for rendering its children wrapped in a modal, form and context if needed
218
+ */ const RelationModalRenderer = (props)=>{
219
+ // We're in a nested relation if the relation modal context is not undefined
220
+ const isNested = useRelationModal('RelationContextWrapper', (state)=>state != undefined, false);
221
+ return isNested ? /*#__PURE__*/ jsxRuntime.jsx(NestedRelationRenderer, {
222
+ ...props
223
+ }) : /*#__PURE__*/ jsxRuntime.jsx(RootRelationRenderer, {
224
+ ...props
225
+ });
226
+ };
227
+ /* -------------------------------------------------------------------------------------------------
228
+ * RelationModal
229
+ * -----------------------------------------------------------------------------------------------*/ const generateCreateUrl = (currentDocumentMeta)=>{
230
+ return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : ''}`;
231
+ };
232
+ const RelationModal = ({ children })=>{
233
+ const { formatMessage } = reactIntl.useIntl();
234
+ const navigate = reactRouterDom.useNavigate();
235
+ const state = useRelationModal('RelationModalForm', (state)=>state.state);
236
+ const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
237
+ const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
238
+ const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
239
+ const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
240
+ /*
241
+ * We must wrap the modal window with Component Provider with reset values
242
+ * to avoid inheriting id and uid from the root document and having weird
243
+ * behaviors with simple relationships..
244
+ */ return /*#__PURE__*/ jsxRuntime.jsx(ComponentContext.ComponentProvider, {
245
+ id: undefined,
246
+ level: -1,
247
+ uid: undefined,
248
+ type: undefined,
170
249
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Root, {
171
250
  open: state.isModalOpen,
172
251
  onOpenChange: (open)=>{
173
- if (open) {
174
- dispatch({
175
- type: 'GO_TO_RELATION',
176
- payload: {
177
- document: relation,
178
- shouldBypassConfirmation: false
179
- }
180
- });
181
- } else {
252
+ if (!open) {
182
253
  dispatch({
183
254
  type: 'CLOSE_MODAL',
184
255
  payload: {
@@ -188,7 +259,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
188
259
  }
189
260
  },
190
261
  children: [
191
- trigger,
262
+ children,
192
263
  /*#__PURE__*/ jsxRuntime.jsxs(StyledModalContent, {
193
264
  children: [
194
265
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Header, {
@@ -223,7 +294,10 @@ const getFullPageUrl = (currentDocumentMeta)=>{
223
294
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
224
295
  tag: "span",
225
296
  fontWeight: 600,
226
- children: formatMessage({
297
+ children: isCreating ? formatMessage({
298
+ id: 'content-manager.relation.create',
299
+ defaultMessage: 'Create a relation'
300
+ }) : formatMessage({
227
301
  id: 'content-manager.components.RelationInputModal.modal-title',
228
302
  defaultMessage: 'Edit a relation'
229
303
  })
@@ -236,7 +310,11 @@ const getFullPageUrl = (currentDocumentMeta)=>{
236
310
  type: 'GO_FULL_PAGE'
237
311
  });
238
312
  if (!state.hasUnsavedChanges) {
239
- navigate(getFullPageUrl(currentDocumentMeta));
313
+ if (isCreating) {
314
+ navigate(generateCreateUrl(currentDocumentMeta));
315
+ } else {
316
+ navigate(getFullPageUrl(currentDocumentMeta));
317
+ }
240
318
  }
241
319
  },
242
320
  variant: "tertiary",
@@ -251,8 +329,8 @@ const getFullPageUrl = (currentDocumentMeta)=>{
251
329
  }),
252
330
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Body, {
253
331
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
254
- method: "PUT",
255
- initialValues: currentDocument.getInitialFormValues(),
332
+ method: isCreating ? 'POST' : 'PUT',
333
+ initialValues: currentDocument.getInitialFormValues(isCreating),
256
334
  validate: (values, options)=>{
257
335
  const yupSchema = validation.createYupSchema(currentDocument.schema?.attributes, currentDocument.components, {
258
336
  status: currentDocument.document?.status,
@@ -262,7 +340,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
262
340
  abortEarly: false
263
341
  });
264
342
  },
265
- children: children
343
+ children: /*#__PURE__*/ jsxRuntime.jsx(RelationModalBody, {})
266
344
  })
267
345
  })
268
346
  ]
@@ -273,7 +351,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
273
351
  };
274
352
  /**
275
353
  * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.
276
- * Will be wrapped in a Modal.Body by the RelationModalRenderer.
354
+ * Will be wrapped in a Modal.Body by the RelationModal component.
277
355
  * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.
278
356
  */ const RelationModalBody = ()=>{
279
357
  const navigate = reactRouterDom.useNavigate();
@@ -284,6 +362,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
284
362
  const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
285
363
  const rootDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.rootDocumentMeta);
286
364
  const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
365
+ const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
287
366
  /**
288
367
  * One-way sync the modified state from the form to the modal state.
289
368
  * It is needed because we need to consume state from the form context in order to lift it up
@@ -325,7 +404,11 @@ const getFullPageUrl = (currentDocumentMeta)=>{
325
404
  if (isRootDocumentUrl) {
326
405
  handleCloseModal(true);
327
406
  } else {
328
- navigate(fullPageUrl);
407
+ if (isCreating) {
408
+ navigate(generateCreateUrl(currentDocumentMeta));
409
+ } else {
410
+ navigate(fullPageUrl);
411
+ }
329
412
  }
330
413
  };
331
414
  const handleConfirm = ()=>{
@@ -355,7 +438,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
355
438
  };
356
439
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
357
440
  children: [
358
- /*#__PURE__*/ jsxRuntime.jsx(RelationEditView, {}),
441
+ /*#__PURE__*/ jsxRuntime.jsx(RelationModalForm, {}),
359
442
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
360
443
  open: state.confirmDialogIntent != null,
361
444
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, {
@@ -373,7 +456,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
373
456
  ]
374
457
  });
375
458
  };
376
- const ModalTrigger = ({ children, relation })=>{
459
+ const RelationModalTrigger = ({ children, relation })=>{
377
460
  const dispatch = useRelationModal('ModalTrigger', (state)=>state.dispatch);
378
461
  return /*#__PURE__*/ jsxRuntime.jsx(StyledTextButton, {
379
462
  onClick: ()=>{
@@ -388,16 +471,6 @@ const ModalTrigger = ({ children, relation })=>{
388
471
  children: children
389
472
  });
390
473
  };
391
- const RelationModal = /*#__PURE__*/ React__namespace.memo(({ relation, children })=>{
392
- return /*#__PURE__*/ jsxRuntime.jsx(RelationModalRenderer, {
393
- relation: relation,
394
- trigger: /*#__PURE__*/ jsxRuntime.jsx(ModalTrigger, {
395
- relation: relation,
396
- children: children
397
- }),
398
- children: /*#__PURE__*/ jsxRuntime.jsx(RelationModalBody, {})
399
- });
400
- });
401
474
  const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
402
475
  max-width: 100%;
403
476
  & > span {
@@ -411,13 +484,14 @@ const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
411
484
  /**
412
485
  * The mini edit view for a relation that is displayed inside a modal.
413
486
  * It's complete with its header, document actions and form layout.
414
- */ const RelationEditView = ()=>{
487
+ */ const RelationModalForm = ()=>{
415
488
  const { formatMessage } = reactIntl.useIntl();
416
- const currentDocumentMeta = useRelationModal('RelationModalBody', (state)=>state.currentDocumentMeta);
417
- const currentDocument = useRelationModal('RelationModalBody', (state)=>state.currentDocument);
489
+ const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
490
+ const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
491
+ const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
418
492
  const documentLayoutResponse = useDocumentLayout.useDocumentLayout(currentDocumentMeta.model);
419
- const plugins = strapiAdmin.useStrapiApp('RelationModalBody', (state)=>state.plugins);
420
- const initialValues = currentDocument.getInitialFormValues();
493
+ const plugins = strapiAdmin.useStrapiApp('RelationModalForm', (state)=>state.plugins);
494
+ const initialValues = isCreating ? currentDocument.getInitialFormValues(isCreating) : currentDocument.getInitialFormValues();
421
495
  const { permissions = [], isLoading: isLoadingPermissions, error } = strapiAdmin.useRBAC(plugin.PERMISSIONS.map((action)=>({
422
496
  action,
423
497
  subject: currentDocumentMeta.model
@@ -432,7 +506,7 @@ const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
432
506
  })
433
507
  });
434
508
  }
435
- if (error || !currentDocumentMeta.model || documentLayoutResponse.error || !currentDocument.document || !currentDocument.meta || !currentDocument.schema || !initialValues) {
509
+ if (error || !currentDocumentMeta.model || documentLayoutResponse.error || !isCreating && !currentDocument.document || !isCreating && !currentDocument.meta || !currentDocument.schema || !initialValues) {
436
510
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
437
511
  alignItems: "center",
438
512
  height: "100%",
@@ -541,7 +615,7 @@ const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
541
615
  });
542
616
  };
543
617
 
544
- exports.RelationModal = RelationModal;
618
+ exports.RelationModalRenderer = RelationModalRenderer;
545
619
  exports.getCollectionType = getCollectionType;
546
620
  exports.reducer = reducer;
547
621
  exports.useRelationModal = useRelationModal;