@strapi/content-manager 0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956 → 0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485

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 (383) hide show
  1. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +1 -1
  2. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
  4. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/Fields.js +304 -205
  6. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.mjs +309 -211
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  12. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  13. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  14. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  15. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/LeftMenu.js +94 -50
  26. package/dist/admin/components/LeftMenu.js.map +1 -1
  27. package/dist/admin/components/LeftMenu.mjs +97 -53
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/Widgets.js +287 -11
  30. package/dist/admin/components/Widgets.js.map +1 -1
  31. package/dist/admin/components/Widgets.mjs +270 -14
  32. package/dist/admin/components/Widgets.mjs.map +1 -1
  33. package/dist/admin/history/components/VersionContent.js +24 -3
  34. package/dist/admin/history/components/VersionContent.js.map +1 -1
  35. package/dist/admin/history/components/VersionContent.mjs +25 -4
  36. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  37. package/dist/admin/history/components/VersionHeader.js +7 -0
  38. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  39. package/dist/admin/history/components/VersionHeader.mjs +8 -1
  40. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  41. package/dist/admin/history/components/VersionsList.js +1 -1
  42. package/dist/admin/history/components/VersionsList.js.map +1 -1
  43. package/dist/admin/history/components/VersionsList.mjs +1 -1
  44. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  45. package/dist/admin/history/pages/History.js +7 -7
  46. package/dist/admin/history/pages/History.js.map +1 -1
  47. package/dist/admin/history/pages/History.mjs +7 -7
  48. package/dist/admin/history/pages/History.mjs.map +1 -1
  49. package/dist/admin/hooks/useDocumentActions.js +7 -6
  50. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  51. package/dist/admin/hooks/useDocumentActions.mjs +8 -7
  52. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  53. package/dist/admin/index.js +47 -8
  54. package/dist/admin/index.js.map +1 -1
  55. package/dist/admin/index.mjs +47 -9
  56. package/dist/admin/index.mjs.map +1 -1
  57. package/dist/admin/layout.js +28 -33
  58. package/dist/admin/layout.js.map +1 -1
  59. package/dist/admin/layout.mjs +29 -15
  60. package/dist/admin/layout.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/EditViewPage.js +98 -77
  62. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  63. package/dist/admin/pages/EditView/EditViewPage.mjs +100 -79
  64. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  66. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  67. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  68. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  69. package/dist/admin/pages/EditView/components/DocumentActions.js +104 -70
  70. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/DocumentActions.mjs +106 -72
  72. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  74. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  76. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  78. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  80. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  82. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  84. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  86. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  88. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  90. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  92. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  94. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  98. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  100. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -3
  102. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -4
  104. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  106. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  108. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +22 -8
  110. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +24 -10
  112. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  114. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  116. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +160 -107
  118. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +163 -110
  120. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/UID.js +6 -3
  122. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +6 -3
  124. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  126. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  128. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  130. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  132. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  134. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  136. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormLayout.js +59 -34
  138. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormLayout.mjs +60 -34
  140. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/Header.js +85 -25
  142. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  143. package/dist/admin/pages/EditView/components/Header.mjs +87 -27
  144. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/InputRenderer.js +20 -7
  146. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -7
  148. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/utils/data.js +128 -0
  150. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  151. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  152. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  153. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  154. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  155. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  156. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  157. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  158. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  159. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  160. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  161. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  162. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  163. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  164. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  165. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  166. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  167. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  168. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  169. package/dist/admin/pages/ListView/components/Filters.js +8 -2
  170. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  171. package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
  172. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  173. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  174. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  175. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  176. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  177. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  178. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  179. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  180. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  181. package/dist/admin/preview/components/InputPopover.js +189 -0
  182. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  183. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  184. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  185. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  186. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  187. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  188. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  189. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  190. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  191. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  192. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  193. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  194. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  195. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  196. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  197. package/dist/admin/preview/pages/Preview.js +178 -74
  198. package/dist/admin/preview/pages/Preview.js.map +1 -1
  199. package/dist/admin/preview/pages/Preview.mjs +180 -76
  200. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  201. package/dist/admin/preview/utils/constants.js +56 -0
  202. package/dist/admin/preview/utils/constants.js.map +1 -0
  203. package/dist/admin/preview/utils/constants.mjs +52 -0
  204. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  205. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  206. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  207. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  208. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  209. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  210. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  211. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  212. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  213. package/dist/admin/preview/utils/previewScript.js +534 -0
  214. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  215. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  216. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  217. package/dist/admin/services/api.js +5 -1
  218. package/dist/admin/services/api.js.map +1 -1
  219. package/dist/admin/services/api.mjs +5 -1
  220. package/dist/admin/services/api.mjs.map +1 -1
  221. package/dist/admin/services/documents.js +59 -17
  222. package/dist/admin/services/documents.js.map +1 -1
  223. package/dist/admin/services/documents.mjs +59 -17
  224. package/dist/admin/services/documents.mjs.map +1 -1
  225. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  226. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  227. package/dist/admin/src/components/Widgets.d.ts +8 -3
  228. package/dist/admin/src/exports.d.ts +1 -0
  229. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  230. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  231. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  232. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  233. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  234. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
  235. package/dist/admin/src/pages/EditView/components/Header.d.ts +4 -0
  236. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  237. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  238. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  239. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  240. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  241. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  242. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  243. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  244. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  245. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  246. package/dist/admin/src/services/api.d.ts +1 -1
  247. package/dist/admin/src/services/components.d.ts +2 -2
  248. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  249. package/dist/admin/src/services/documents.d.ts +23 -17
  250. package/dist/admin/src/services/homepage.d.ts +1 -1
  251. package/dist/admin/src/services/init.d.ts +1 -1
  252. package/dist/admin/src/services/relations.d.ts +2 -2
  253. package/dist/admin/src/services/uid.d.ts +3 -3
  254. package/dist/admin/src/utils/api.d.ts +1 -1
  255. package/dist/admin/src/utils/validation.d.ts +1 -0
  256. package/dist/admin/translations/en.json.js +13 -0
  257. package/dist/admin/translations/en.json.js.map +1 -1
  258. package/dist/admin/translations/en.json.mjs +13 -0
  259. package/dist/admin/translations/en.json.mjs.map +1 -1
  260. package/dist/admin/translations/es.json.js +6 -2
  261. package/dist/admin/translations/es.json.js.map +1 -1
  262. package/dist/admin/translations/es.json.mjs +6 -2
  263. package/dist/admin/translations/es.json.mjs.map +1 -1
  264. package/dist/admin/translations/fr.json.js +11 -2
  265. package/dist/admin/translations/fr.json.js.map +1 -1
  266. package/dist/admin/translations/fr.json.mjs +11 -2
  267. package/dist/admin/translations/fr.json.mjs.map +1 -1
  268. package/dist/admin/utils/api.js +1 -1
  269. package/dist/admin/utils/api.js.map +1 -1
  270. package/dist/admin/utils/api.mjs +1 -1
  271. package/dist/admin/utils/api.mjs.map +1 -1
  272. package/dist/admin/utils/validation.js +19 -7
  273. package/dist/admin/utils/validation.js.map +1 -1
  274. package/dist/admin/utils/validation.mjs +19 -7
  275. package/dist/admin/utils/validation.mjs.map +1 -1
  276. package/dist/server/controllers/collection-types.js +2 -1
  277. package/dist/server/controllers/collection-types.js.map +1 -1
  278. package/dist/server/controllers/collection-types.mjs +2 -1
  279. package/dist/server/controllers/collection-types.mjs.map +1 -1
  280. package/dist/server/controllers/content-types.js +11 -1
  281. package/dist/server/controllers/content-types.js.map +1 -1
  282. package/dist/server/controllers/content-types.mjs +11 -1
  283. package/dist/server/controllers/content-types.mjs.map +1 -1
  284. package/dist/server/controllers/relations.js +8 -6
  285. package/dist/server/controllers/relations.js.map +1 -1
  286. package/dist/server/controllers/relations.mjs +8 -6
  287. package/dist/server/controllers/relations.mjs.map +1 -1
  288. package/dist/server/controllers/single-types.js.map +1 -1
  289. package/dist/server/controllers/single-types.mjs.map +1 -1
  290. package/dist/server/controllers/validation/index.js +14 -2
  291. package/dist/server/controllers/validation/index.js.map +1 -1
  292. package/dist/server/controllers/validation/index.mjs +14 -2
  293. package/dist/server/controllers/validation/index.mjs.map +1 -1
  294. package/dist/server/history/services/lifecycles.js +23 -19
  295. package/dist/server/history/services/lifecycles.js.map +1 -1
  296. package/dist/server/history/services/lifecycles.mjs +23 -19
  297. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  298. package/dist/server/homepage/controllers/homepage.js +5 -0
  299. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  300. package/dist/server/homepage/controllers/homepage.mjs +5 -0
  301. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  302. package/dist/server/homepage/routes/homepage.js +11 -0
  303. package/dist/server/homepage/routes/homepage.js.map +1 -1
  304. package/dist/server/homepage/routes/homepage.mjs +11 -0
  305. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  306. package/dist/server/homepage/services/homepage.js +86 -46
  307. package/dist/server/homepage/services/homepage.js.map +1 -1
  308. package/dist/server/homepage/services/homepage.mjs +86 -46
  309. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  310. package/dist/server/preview/services/preview-config.js +11 -32
  311. package/dist/server/preview/services/preview-config.js.map +1 -1
  312. package/dist/server/preview/services/preview-config.mjs +12 -33
  313. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  314. package/dist/server/preview/services/preview.js +4 -0
  315. package/dist/server/preview/services/preview.js.map +1 -1
  316. package/dist/server/preview/services/preview.mjs +4 -0
  317. package/dist/server/preview/services/preview.mjs.map +1 -1
  318. package/dist/server/services/data-mapper.js +4 -1
  319. package/dist/server/services/data-mapper.js.map +1 -1
  320. package/dist/server/services/data-mapper.mjs +4 -1
  321. package/dist/server/services/data-mapper.mjs.map +1 -1
  322. package/dist/server/services/document-manager.js +8 -1
  323. package/dist/server/services/document-manager.js.map +1 -1
  324. package/dist/server/services/document-manager.mjs +8 -1
  325. package/dist/server/services/document-manager.mjs.map +1 -1
  326. package/dist/server/services/document-metadata.js +3 -1
  327. package/dist/server/services/document-metadata.js.map +1 -1
  328. package/dist/server/services/document-metadata.mjs +3 -1
  329. package/dist/server/services/document-metadata.mjs.map +1 -1
  330. package/dist/server/services/utils/configuration/attributes.js +1 -1
  331. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  332. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  333. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  334. package/dist/server/services/utils/configuration/layouts.js +1 -1
  335. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  336. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  337. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  338. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  339. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  340. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  341. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  342. package/dist/server/services/utils/populate.js +11 -0
  343. package/dist/server/services/utils/populate.js.map +1 -1
  344. package/dist/server/services/utils/populate.mjs +11 -0
  345. package/dist/server/services/utils/populate.mjs.map +1 -1
  346. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  347. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  348. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  349. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  350. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  351. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  352. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  353. package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
  354. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  355. package/dist/server/src/homepage/index.d.ts +7 -0
  356. package/dist/server/src/homepage/index.d.ts.map +1 -1
  357. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
  358. package/dist/server/src/homepage/services/homepage.d.ts +4 -1
  359. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  360. package/dist/server/src/homepage/services/index.d.ts +7 -0
  361. package/dist/server/src/homepage/services/index.d.ts.map +1 -1
  362. package/dist/server/src/index.d.ts +8 -0
  363. package/dist/server/src/index.d.ts.map +1 -1
  364. package/dist/server/src/preview/services/index.d.ts +1 -0
  365. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  366. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  367. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  368. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  369. package/dist/server/src/preview/utils.d.ts +1 -0
  370. package/dist/server/src/preview/utils.d.ts.map +1 -1
  371. package/dist/server/src/services/data-mapper.d.ts +1 -0
  372. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  373. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  374. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  375. package/dist/server/src/services/index.d.ts +8 -0
  376. package/dist/server/src/services/index.d.ts.map +1 -1
  377. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  378. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  379. package/dist/shared/contracts/collection-types.d.ts +0 -1
  380. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  381. package/dist/shared/contracts/homepage.d.ts +13 -0
  382. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  383. package/package.json +11 -9
@@ -1,19 +1,60 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useForm, useField } from '@strapi/admin/strapi-admin';
4
- import { IconButton, Typography, Flex, Box, Grid, Menu, useComposedRefs, Modal, Link } from '@strapi/design-system';
3
+ import { DndContext, DragOverlay, useDroppable } from '@dnd-kit/core';
4
+ import { arrayMove, SortableContext, useSortable } from '@dnd-kit/sortable';
5
+ import { CSS } from '@dnd-kit/utilities';
6
+ import { useForm, useIsDesktop, useField } from '@strapi/admin/strapi-admin';
7
+ import { IconButton, Typography, Flex, Box, Grid, Menu, Modal, Link } from '@strapi/design-system';
5
8
  import { Plus, Drag, Pencil, Cross, Cog } from '@strapi/icons';
6
- import { generateNKeysBetween as generateNKeysBetween$1 } from 'fractional-indexing';
7
- import { getEmptyImage } from 'react-dnd-html5-backend';
9
+ import { generateNKeysBetween } from 'fractional-indexing';
10
+ import { produce } from 'immer';
8
11
  import { useIntl } from 'react-intl';
9
12
  import { NavLink } from 'react-router-dom';
10
13
  import { styled } from 'styled-components';
11
- import { ItemTypes } from '../../constants/dragAndDrop.mjs';
12
- import { useDragAndDrop } from '../../hooks/useDragAndDrop.mjs';
13
14
  import { getTranslation } from '../../utils/translations.mjs';
14
15
  import { ComponentIcon } from '../ComponentIcon.mjs';
15
16
  import { EditFieldForm } from './EditFieldForm.mjs';
16
17
 
18
+ const GRID_COLUMNS = 12;
19
+ /* -------------------------------------------------------------------------------------------------
20
+ * Drag and Drop
21
+ * -----------------------------------------------------------------------------------------------*/ const DroppableContainer = ({ id, children })=>{
22
+ const droppable = useDroppable({
23
+ id
24
+ });
25
+ return children(droppable);
26
+ };
27
+ const SortableItem = ({ id, children })=>{
28
+ const { attributes, setNodeRef, transform, transition } = useSortable({
29
+ id
30
+ });
31
+ const style = {
32
+ transform: CSS.Transform.toString(transform),
33
+ transition,
34
+ height: '100%'
35
+ };
36
+ return /*#__PURE__*/ jsx("div", {
37
+ ref: setNodeRef,
38
+ style: style,
39
+ ...attributes,
40
+ children: children
41
+ });
42
+ };
43
+ /**
44
+ * Compute uids and formName for drag and drop items for the incoming layout
45
+ */ const createDragAndDropContainersFromLayout = (layout)=>{
46
+ return layout.map((row, containerIndex)=>({
47
+ ...row,
48
+ // Use unique ids for drag and drop items
49
+ dndId: `container-${containerIndex}`,
50
+ children: row.children.map((child, childIndex)=>({
51
+ ...child,
52
+ dndId: `container-${containerIndex}-child-${childIndex}`,
53
+ // The formName must be recomputed each time an item is moved
54
+ formName: `layout.${containerIndex}.children.${childIndex}`
55
+ }))
56
+ }));
57
+ };
17
58
  const Fields = ({ attributes, fieldSizes, components, metadatas = {} })=>{
18
59
  const { formatMessage } = useIntl();
19
60
  const layout = useForm('Fields', (state)=>state.values.layout ?? []);
@@ -29,7 +70,7 @@ const Fields = ({ attributes, fieldSizes, components, metadatas = {} })=>{
29
70
  const [name, { visible, ...field }] = current;
30
71
  if (!existingFields.includes(name) && visible === true) {
31
72
  const type = attributes[name]?.type;
32
- const size = type ? fieldSizes[type] : 12;
73
+ const size = type ? fieldSizes[type] : GRID_COLUMNS;
33
74
  acc.push({
34
75
  ...field,
35
76
  label: field.label ?? name,
@@ -39,61 +80,65 @@ const Fields = ({ attributes, fieldSizes, components, metadatas = {} })=>{
39
80
  }
40
81
  return acc;
41
82
  }, []);
42
- const handleMoveField = ([newRowIndex, newFieldIndex], [currentRowIndex, currentFieldIndex])=>{
43
- /**
44
- * Because this view has the constraint that the sum of field sizes cannot be greater
45
- * than 12, we don't use the form's method to move field rows, instead, we calculate
46
- * the new layout and set the entire form.
47
- */ const newLayout = structuredClone(layout);
48
- /**
49
- * Remove field from the current layout space using splice so we have the item
50
- */ const [field] = newLayout[currentRowIndex].children.splice(currentFieldIndex, 1);
51
- if (!field || field.name === TEMP_FIELD_NAME) {
52
- return;
53
- }
54
- const newRow = newLayout[newRowIndex].children;
55
- const [newFieldKey] = generateNKeysBetween(newRow, 1, currentFieldIndex, newFieldIndex);
56
- /**
57
- * Next we inject the field into it's new row at it's specified index, we then remove the spaces
58
- * if they exist and recalculate into potentially two arrays ONLY if the sizing is now over 12,
59
- * the row and the rest of the row that couldn't fit.
60
- *
61
- * for example, if i have a row of `[{size: 4}, {size: 6}]` and i add `{size: 8}` a index 0,
62
- * the new array will look like `[{size: 8}, {size: 4}, {size: 6}]` which breaks the limit of 12,
63
- * so instead we make two arrays for the new rows `[[{size: 8}, {size: 4}], [{size: 6}]]` which we
64
- * then inject at the original row point with spacers included.
65
- */ newRow.splice(newFieldIndex, 0, {
66
- ...field,
67
- __temp_key__: newFieldKey
68
- });
69
- if (newLayout[newRowIndex].children.reduce((acc, curr)=>acc + curr.size, 0) > 12) {
70
- const recalculatedRows = chunkArray(newLayout[newRowIndex].children.filter((field)=>field.name !== TEMP_FIELD_NAME));
71
- const rowKeys = generateNKeysBetween(newLayout, recalculatedRows.length, currentRowIndex, newRowIndex);
72
- newLayout.splice(newRowIndex, 1, ...recalculatedRows.map((row, index)=>({
73
- __temp_key__: rowKeys[index],
74
- children: row
75
- })));
83
+ const handleRemoveField = (rowIndex, fieldIndex)=>()=>{
84
+ if (layout[rowIndex].children.length === 1) {
85
+ removeFieldRow(`layout`, rowIndex);
86
+ } else {
87
+ onChange(`layout.${rowIndex}.children`, [
88
+ ...layout[rowIndex].children.slice(0, fieldIndex),
89
+ ...layout[rowIndex].children.slice(fieldIndex + 1)
90
+ ]);
91
+ }
92
+ };
93
+ const handleAddField = (field)=>()=>{
94
+ addFieldRow('layout', {
95
+ children: [
96
+ field
97
+ ]
98
+ });
99
+ };
100
+ const [containers, setContainers] = React.useState(()=>createDragAndDropContainersFromLayout(layout));
101
+ const [activeDragItem, setActiveDragItem] = React.useState(null);
102
+ /**
103
+ * Finds either the parent container id or the child id within a container
104
+ */ function findContainer(id, containersAsDictionary) {
105
+ // If the id is a key, then it is the parent container
106
+ if (id in containersAsDictionary) {
107
+ return id;
76
108
  }
77
- /**
78
- * Now we remove our spacers from the rows so we can understand what dead rows exist:
79
- * - if there's only spacers left
80
- * - there's nothing in the row, e.g. a size 12 field left it.
81
- * These rows are then filtered out.
82
- * After that, we recalculate the spacers for the rows that need them.
83
- */ const newLayoutWithSpacers = newLayout.map((row)=>({
109
+ // Otherwise, it is a child inside a container
110
+ return Object.keys(containersAsDictionary).find((key)=>containersAsDictionary[key].children.find((child)=>child.dndId === id));
111
+ }
112
+ /**
113
+ * Gets an item from a container based on its id
114
+ */ const getItemFromContainer = (id, container)=>{
115
+ return container.children.find((item)=>id === item.dndId);
116
+ };
117
+ /**
118
+ * Gets the containers as dictionary for quick lookup
119
+ */ const getContainersAsDictionary = ()=>{
120
+ return Object.fromEntries(containers.map((container)=>[
121
+ container.dndId,
122
+ container
123
+ ]));
124
+ };
125
+ /**
126
+ * Recomputes the empty space in the grid
127
+ */ const createContainersWithSpacers = (layout)=>{
128
+ return layout.map((row)=>({
84
129
  ...row,
85
130
  children: row.children.filter((field)=>field.name !== TEMP_FIELD_NAME)
86
131
  })).filter((row)=>row.children.length > 0).map((row)=>{
87
132
  const totalSpaceTaken = row.children.reduce((acc, curr)=>acc + curr.size, 0);
88
- if (totalSpaceTaken < 12) {
89
- const [spacerKey] = generateNKeysBetween$1(row.children.at(-1)?.__temp_key__, undefined, 1);
133
+ if (totalSpaceTaken < GRID_COLUMNS) {
134
+ const [spacerKey] = generateNKeysBetween(row.children.at(-1)?.__temp_key__, undefined, 1);
90
135
  return {
91
136
  ...row,
92
137
  children: [
93
138
  ...row.children,
94
139
  {
95
140
  name: TEMP_FIELD_NAME,
96
- size: 12 - totalSpaceTaken,
141
+ size: GRID_COLUMNS - totalSpaceTaken,
97
142
  __temp_key__: spacerKey
98
143
  }
99
144
  ]
@@ -101,182 +146,234 @@ const Fields = ({ attributes, fieldSizes, components, metadatas = {} })=>{
101
146
  }
102
147
  return row;
103
148
  });
104
- onChange('layout', newLayoutWithSpacers);
105
149
  };
106
- const handleRemoveField = (rowIndex, fieldIndex)=>()=>{
107
- if (layout[rowIndex].children.length === 1) {
108
- removeFieldRow(`layout`, rowIndex);
109
- } else {
110
- onChange(`layout.${rowIndex}.children`, [
111
- ...layout[rowIndex].children.slice(0, fieldIndex),
112
- ...layout[rowIndex].children.slice(fieldIndex + 1)
113
- ]);
150
+ /**
151
+ * When layout changes (e.g. when a field size is changed or the containers are reordered)
152
+ * we need to update the ids and form names
153
+ */ React.useEffect(()=>{
154
+ const containers = createDragAndDropContainersFromLayout(layout);
155
+ setContainers(containers);
156
+ }, [
157
+ layout,
158
+ setContainers
159
+ ]);
160
+ return /*#__PURE__*/ jsx(DndContext, {
161
+ onDragStart: (event)=>{
162
+ const containersAsDictionary = getContainersAsDictionary();
163
+ const activeContainer = findContainer(event.active.id, containersAsDictionary);
164
+ if (!activeContainer) return;
165
+ const activeItem = getItemFromContainer(event.active.id, containersAsDictionary[activeContainer]);
166
+ if (activeItem) {
167
+ setActiveDragItem(activeItem);
114
168
  }
115
- };
116
- const handleAddField = (field)=>()=>{
117
- addFieldRow('layout', {
118
- children: [
119
- field
120
- ]
169
+ },
170
+ onDragOver: ({ active, over })=>{
171
+ const containersAsDictionary = getContainersAsDictionary();
172
+ const activeContainer = findContainer(active.id, containersAsDictionary);
173
+ const overContainer = findContainer(over?.id ?? '', containersAsDictionary);
174
+ const activeContainerIndex = containers.findIndex((container)=>container.dndId === activeContainer);
175
+ const overContainerIndex = containers.findIndex((container)=>container.dndId === overContainer);
176
+ if (!activeContainer || !overContainer) {
177
+ return;
178
+ }
179
+ const draggedItem = getItemFromContainer(active.id, containersAsDictionary[activeContainer]);
180
+ const overItem = getItemFromContainer(over?.id ?? '', containersAsDictionary[overContainer]);
181
+ const overIndex = containersAsDictionary[overContainer].children.findIndex((item)=>item.dndId === over?.id);
182
+ if (!draggedItem) return;
183
+ // Handle a full width field being dragged
184
+ if (draggedItem?.size === GRID_COLUMNS) {
185
+ // Swap the items in the containers
186
+ const update = produce(containers, (draft)=>{
187
+ draft[activeContainerIndex].children = containers[overContainerIndex].children;
188
+ draft[overContainerIndex].children = containers[activeContainerIndex].children;
189
+ });
190
+ setContainers(update);
191
+ return;
192
+ }
193
+ /**
194
+ * Handle an item being dragged from one container to another,
195
+ * the item is removed from its current container, and then added to its new container
196
+ * An item can only be added in a container if there is enough space.
197
+ */ const update = produce(containers, (draft)=>{
198
+ draft[activeContainerIndex].children = draft[activeContainerIndex].children.filter((item)=>item.dndId !== active.id);
199
+ const spaceTaken = draft[overContainerIndex].children.reduce((acc, curr)=>{
200
+ if (curr.name === TEMP_FIELD_NAME) {
201
+ return acc;
202
+ }
203
+ return acc + curr.size;
204
+ }, 0);
205
+ // Check the sizes of the children, if there is no room, exit
206
+ if (spaceTaken + draggedItem.size > GRID_COLUMNS) {
207
+ // Leave the item where it started
208
+ draft[activeContainerIndex].children = containers[activeContainerIndex].children;
209
+ return;
210
+ }
211
+ if (overItem?.name === TEMP_FIELD_NAME) {
212
+ // We are over an invisible spacer, replace it with the dragged item
213
+ draft[overContainerIndex].children.splice(overIndex, 1, draggedItem);
214
+ return;
215
+ }
216
+ // There is room for the item in the container, drop it
217
+ draft[overContainerIndex].children.splice(overIndex, 0, draggedItem);
121
218
  });
122
- };
123
- return /*#__PURE__*/ jsxs(Flex, {
124
- paddingTop: 6,
125
- direction: "column",
126
- alignItems: "stretch",
127
- gap: 4,
128
- children: [
129
- /*#__PURE__*/ jsxs(Flex, {
130
- alignItems: "flex-start",
131
- direction: "column",
132
- justifyContent: "space-between",
133
- children: [
134
- /*#__PURE__*/ jsx(Typography, {
135
- fontWeight: "bold",
136
- children: formatMessage({
137
- id: getTranslation('containers.list.displayedFields'),
138
- defaultMessage: 'Displayed fields'
139
- })
140
- }),
141
- /*#__PURE__*/ jsx(Typography, {
142
- variant: "pi",
143
- textColor: "neutral600",
144
- children: formatMessage({
145
- id: 'containers.SettingPage.editSettings.description',
146
- defaultMessage: 'Drag & drop the fields to build the layout'
147
- })
148
- })
149
- ]
150
- }),
151
- /*#__PURE__*/ jsx(Box, {
152
- padding: 4,
153
- hasRadius: true,
154
- borderStyle: "dashed",
155
- borderWidth: "1px",
156
- borderColor: "neutral300",
157
- children: /*#__PURE__*/ jsxs(Flex, {
219
+ setContainers(update);
220
+ },
221
+ onDragEnd: (event)=>{
222
+ const { active, over } = event;
223
+ const { id } = active;
224
+ const overId = over?.id;
225
+ const containersAsDictionary = getContainersAsDictionary();
226
+ const activeContainer = findContainer(id, containersAsDictionary);
227
+ const overContainer = findContainer(overId, containersAsDictionary);
228
+ if (!activeContainer || !overContainer) {
229
+ return;
230
+ }
231
+ const activeIndex = containersAsDictionary[activeContainer].children.findIndex((children)=>children.dndId === id);
232
+ const overIndex = containersAsDictionary[overContainer].children.findIndex((children)=>children.dndId === overId);
233
+ const movedContainerItems = produce(containersAsDictionary, (draft)=>{
234
+ if (activeIndex !== overIndex && activeContainer === overContainer) {
235
+ // Move items around inside their own container
236
+ draft[activeContainer].children = arrayMove(draft[activeContainer].children, activeIndex, overIndex);
237
+ }
238
+ });
239
+ // Remove properties the server does not expect before updating the form
240
+ const updatedContainers = Object.values(movedContainerItems);
241
+ const updatedContainersWithSpacers = createContainersWithSpacers(updatedContainers);
242
+ const updatedLayout = updatedContainersWithSpacers.map(({ dndId: _dndId, children, ...container })=>({
243
+ ...container,
244
+ children: children.map(({ dndId: _dndId, formName: _formName, ...child })=>child)
245
+ }));
246
+ // Update the layout
247
+ onChange('layout', updatedLayout);
248
+ setActiveDragItem(null);
249
+ },
250
+ children: /*#__PURE__*/ jsxs(Flex, {
251
+ paddingTop: 6,
252
+ direction: "column",
253
+ alignItems: "stretch",
254
+ gap: 4,
255
+ children: [
256
+ /*#__PURE__*/ jsxs(Flex, {
257
+ alignItems: "flex-start",
158
258
  direction: "column",
159
- alignItems: "stretch",
160
- gap: 2,
259
+ justifyContent: "space-between",
161
260
  children: [
162
- layout.map((row, rowIndex)=>/*#__PURE__*/ jsx(Grid.Root, {
163
- gap: 2,
164
- children: row.children.map(({ size, ...field }, fieldIndex)=>/*#__PURE__*/ jsx(Grid.Item, {
165
- col: size,
166
- direction: "column",
167
- alignItems: "stretch",
168
- children: /*#__PURE__*/ jsx(Field, {
169
- attribute: attributes[field.name],
170
- components: components,
171
- index: [
172
- rowIndex,
173
- fieldIndex
174
- ],
175
- name: `layout.${rowIndex}.children.${fieldIndex}`,
176
- onMoveField: handleMoveField,
177
- onRemoveField: handleRemoveField(rowIndex, fieldIndex)
178
- })
179
- }, field.name))
180
- }, row.__temp_key__)),
181
- /*#__PURE__*/ jsxs(Menu.Root, {
182
- children: [
183
- /*#__PURE__*/ jsx(Menu.Trigger, {
184
- startIcon: /*#__PURE__*/ jsx(Plus, {}),
185
- endIcon: null,
186
- disabled: remainingFields.length === 0,
187
- fullWidth: true,
188
- variant: "secondary",
189
- children: formatMessage({
190
- id: getTranslation('containers.SettingPage.add.field'),
191
- defaultMessage: 'Insert another field'
192
- })
193
- }),
194
- /*#__PURE__*/ jsx(Menu.Content, {
195
- children: remainingFields.map((field)=>/*#__PURE__*/ jsx(Menu.Item, {
196
- onSelect: handleAddField(field),
197
- children: field.label
198
- }, field.name))
199
- })
200
- ]
261
+ /*#__PURE__*/ jsx(Typography, {
262
+ fontWeight: "bold",
263
+ children: formatMessage({
264
+ id: getTranslation('containers.list.displayedFields'),
265
+ defaultMessage: 'Displayed fields'
266
+ })
267
+ }),
268
+ /*#__PURE__*/ jsx(Typography, {
269
+ variant: "pi",
270
+ textColor: "neutral600",
271
+ children: formatMessage({
272
+ id: 'containers.SettingPage.editSettings.description',
273
+ defaultMessage: 'Drag & drop the fields to build the layout'
274
+ })
201
275
  })
202
276
  ]
277
+ }),
278
+ /*#__PURE__*/ jsx(Box, {
279
+ padding: 4,
280
+ hasRadius: true,
281
+ borderStyle: "dashed",
282
+ borderWidth: "1px",
283
+ borderColor: "neutral300",
284
+ children: /*#__PURE__*/ jsxs(Flex, {
285
+ direction: "column",
286
+ alignItems: "stretch",
287
+ gap: 2,
288
+ children: [
289
+ containers.map((container, containerIndex)=>/*#__PURE__*/ jsx(SortableContext, {
290
+ id: container.dndId,
291
+ items: container.children.map((child)=>({
292
+ id: child.dndId
293
+ })),
294
+ children: /*#__PURE__*/ jsx(DroppableContainer, {
295
+ id: container.dndId,
296
+ children: ({ setNodeRef })=>/*#__PURE__*/ jsx(Grid.Root, {
297
+ ref: setNodeRef,
298
+ gap: 2,
299
+ children: container.children.map((child, childIndex)=>/*#__PURE__*/ jsx(Grid.Item, {
300
+ col: child.size,
301
+ direction: "column",
302
+ alignItems: "stretch",
303
+ children: /*#__PURE__*/ jsx(SortableItem, {
304
+ id: child.dndId,
305
+ children: /*#__PURE__*/ jsx(Field, {
306
+ attribute: attributes[child.name],
307
+ components: components,
308
+ name: child.formName,
309
+ onRemoveField: handleRemoveField(containerIndex, childIndex),
310
+ dndId: child.dndId
311
+ })
312
+ })
313
+ }, child.dndId))
314
+ }, container.dndId)
315
+ })
316
+ }, container.dndId)),
317
+ /*#__PURE__*/ jsx(DragOverlay, {
318
+ children: activeDragItem ? /*#__PURE__*/ jsx(Field, {
319
+ attribute: attributes[activeDragItem.name],
320
+ components: components,
321
+ name: activeDragItem.formName,
322
+ dndId: activeDragItem.dndId
323
+ }) : null
324
+ }),
325
+ /*#__PURE__*/ jsxs(Menu.Root, {
326
+ children: [
327
+ /*#__PURE__*/ jsx(Menu.Trigger, {
328
+ startIcon: /*#__PURE__*/ jsx(Plus, {}),
329
+ endIcon: null,
330
+ disabled: remainingFields.length === 0,
331
+ fullWidth: true,
332
+ variant: "secondary",
333
+ children: formatMessage({
334
+ id: getTranslation('containers.SettingPage.add.field'),
335
+ defaultMessage: 'Insert another field'
336
+ })
337
+ }),
338
+ /*#__PURE__*/ jsx(Menu.Content, {
339
+ children: remainingFields.map((field)=>/*#__PURE__*/ jsx(Menu.Item, {
340
+ onSelect: handleAddField(field),
341
+ children: field.label
342
+ }, field.name))
343
+ })
344
+ ]
345
+ })
346
+ ]
347
+ })
203
348
  })
204
- })
205
- ]
349
+ ]
350
+ })
206
351
  });
207
352
  };
208
- /**
209
- * @internal
210
- * @description Small abstraction to solve within an array of fields where you can
211
- * add a field to the beginning or start, move back and forth what it's index range
212
- * should be when calculating it's new temp key
213
- */ const generateNKeysBetween = (field, count, currInd, newInd)=>{
214
- const startKey = currInd > newInd ? field[newInd - 1]?.__temp_key__ : field[newInd]?.__temp_key__;
215
- const endKey = currInd > newInd ? field[newInd]?.__temp_key__ : field[newInd + 1]?.__temp_key__;
216
- return generateNKeysBetween$1(startKey, endKey, count);
217
- };
218
- /**
219
- * @internal
220
- * @description chunks a row of layouts by the max size we allow, 12. It does not add the
221
- * spacers again, that should be added separately.
222
- */ const chunkArray = (array)=>{
223
- const result = [];
224
- let temp = [];
225
- array.reduce((acc, field)=>{
226
- if (acc + field.size > 12) {
227
- result.push(temp);
228
- temp = [
229
- field
230
- ];
231
- return field.size;
232
- } else {
233
- temp.push(field);
234
- return acc + field.size;
235
- }
236
- }, 0);
237
- if (temp.length > 0) {
238
- result.push(temp);
239
- }
240
- return result;
241
- };
242
353
  const TEMP_FIELD_NAME = '_TEMP_';
243
354
  /**
244
355
  * Displays a field in the layout with drag options, also
245
356
  * opens a modal to edit the details of said field.
246
- */ const Field = ({ attribute, components, name, index, onMoveField, onRemoveField })=>{
357
+ */ const Field = ({ attribute, components, name, onRemoveField, dndId })=>{
358
+ const isDesktop = useIsDesktop();
247
359
  const [isModalOpen, setIsModalOpen] = React.useState(false);
248
360
  const { formatMessage } = useIntl();
249
361
  const { value } = useField(name);
250
- const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(true, {
251
- dropSensitivity: 'immediate',
252
- type: ItemTypes.EDIT_FIELD,
253
- item: {
254
- index,
255
- label: value?.label,
256
- name
257
- },
258
- index,
259
- onMoveItem: onMoveField
362
+ const { listeners, setActivatorNodeRef } = useSortable({
363
+ id: dndId
260
364
  });
261
- React.useEffect(()=>{
262
- dragPreviewRef(getEmptyImage(), {
263
- captureDraggingState: false
264
- });
265
- }, [
266
- dragPreviewRef
267
- ]);
268
- const composedRefs = useComposedRefs(dragRef, objectRef);
269
365
  const handleRemoveField = (e)=>{
270
366
  e.preventDefault();
271
367
  e.stopPropagation();
272
- onRemoveField(e);
368
+ if (onRemoveField) {
369
+ onRemoveField?.(e);
370
+ }
273
371
  };
274
372
  const onEditFieldMeta = (e)=>{
275
373
  e.preventDefault();
276
374
  e.stopPropagation();
277
375
  setIsModalOpen(true);
278
376
  };
279
- const tempRefs = useComposedRefs(dropRef, objectRef);
280
377
  if (!value) {
281
378
  return null;
282
379
  }
@@ -286,10 +383,12 @@ const TEMP_FIELD_NAME = '_TEMP_';
286
383
  height: "100%",
287
384
  style: {
288
385
  opacity: 0
289
- },
290
- ref: tempRefs
386
+ }
291
387
  });
292
388
  }
389
+ if (!attribute) {
390
+ return null;
391
+ }
293
392
  return /*#__PURE__*/ jsxs(Modal.Root, {
294
393
  open: isModalOpen,
295
394
  onOpenChange: setIsModalOpen,
@@ -298,17 +397,15 @@ const TEMP_FIELD_NAME = '_TEMP_';
298
397
  borderColor: "neutral150",
299
398
  background: "neutral100",
300
399
  hasRadius: true,
301
- style: {
302
- opacity: isDragging ? 0.5 : 1
303
- },
304
- ref: dropRef,
305
400
  gap: 3,
306
401
  cursor: "pointer",
307
402
  onClick: ()=>{
308
403
  setIsModalOpen(true);
309
404
  },
405
+ position: "relative",
310
406
  children: [
311
- /*#__PURE__*/ jsx(DragButton, {
407
+ isDesktop && /*#__PURE__*/ jsx(DragButton, {
408
+ ref: setActivatorNodeRef,
312
409
  tag: "span",
313
410
  withTooltip: false,
314
411
  label: formatMessage({
@@ -317,8 +414,7 @@ const TEMP_FIELD_NAME = '_TEMP_';
317
414
  }, {
318
415
  item: value.label
319
416
  }),
320
- onClick: (e)=>e.stopPropagation(),
321
- ref: composedRefs,
417
+ ...listeners,
322
418
  children: /*#__PURE__*/ jsx(Drag, {})
323
419
  }),
324
420
  /*#__PURE__*/ jsxs(Flex, {
@@ -338,6 +434,7 @@ const TEMP_FIELD_NAME = '_TEMP_';
338
434
  children: value.label
339
435
  }),
340
436
  /*#__PURE__*/ jsxs(Flex, {
437
+ position: "relative",
341
438
  children: [
342
439
  /*#__PURE__*/ jsx(IconButton, {
343
440
  type: "button",
@@ -425,6 +522,7 @@ const TEMP_FIELD_NAME = '_TEMP_';
425
522
  alignItems: "flex-start",
426
523
  gap: 2,
427
524
  width: "100%",
525
+ wrap: "wrap",
428
526
  children: attribute?.components.map((uid)=>/*#__PURE__*/ jsxs(ComponentLink, {
429
527
  // used to stop the edit form from appearing when we click here.
430
528
  onClick: (e)=>e.stopPropagation(),
@@ -508,5 +606,5 @@ const ComponentLink = styled(NavLink)`
508
606
  }
509
607
  `;
510
608
 
511
- export { Fields, TEMP_FIELD_NAME };
609
+ export { Fields, SortableItem, TEMP_FIELD_NAME };
512
610
  //# sourceMappingURL=Fields.mjs.map