@strapi/content-manager 5.37.1 → 5.38.0

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 (552) hide show
  1. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  2. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  3. package/dist/admin/components/ComponentIcon.js.map +1 -1
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs +2 -2
  9. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js +62 -30
  11. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  12. package/dist/admin/components/ConfigurationForm/Form.mjs +62 -30
  13. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  14. package/dist/admin/components/DragLayer.js.map +1 -1
  15. package/dist/admin/components/DragLayer.mjs.map +1 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  20. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  22. package/dist/admin/components/FieldTypeIcon.js.map +1 -1
  23. package/dist/admin/components/FieldTypeIcon.mjs +1 -1
  24. package/dist/admin/components/FieldTypeIcon.mjs.map +1 -1
  25. package/dist/admin/components/InjectionZone.js.map +1 -1
  26. package/dist/admin/components/InjectionZone.mjs.map +1 -1
  27. package/dist/admin/components/LeftMenu.js.map +1 -1
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/RelativeTime.js.map +1 -1
  30. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  31. package/dist/admin/components/Widgets.js.map +1 -1
  32. package/dist/admin/components/Widgets.mjs +1 -1
  33. package/dist/admin/components/Widgets.mjs.map +1 -1
  34. package/dist/admin/constants/attributes.js.map +1 -1
  35. package/dist/admin/constants/attributes.mjs.map +1 -1
  36. package/dist/admin/constants/collections.js.map +1 -1
  37. package/dist/admin/constants/collections.mjs.map +1 -1
  38. package/dist/admin/constants/dragAndDrop.js.map +1 -1
  39. package/dist/admin/constants/dragAndDrop.mjs.map +1 -1
  40. package/dist/admin/constants/hooks.js.map +1 -1
  41. package/dist/admin/constants/hooks.mjs.map +1 -1
  42. package/dist/admin/constants/plugin.js.map +1 -1
  43. package/dist/admin/constants/plugin.mjs.map +1 -1
  44. package/dist/admin/content-manager.js.map +1 -1
  45. package/dist/admin/content-manager.mjs.map +1 -1
  46. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  47. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  48. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  49. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  50. package/dist/admin/history/components/VersionContent.js.map +1 -1
  51. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  52. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  53. package/dist/admin/history/components/VersionHeader.mjs +1 -1
  54. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  55. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  56. package/dist/admin/history/components/VersionInputRenderer.mjs +1 -1
  57. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  58. package/dist/admin/history/components/VersionsList.js.map +1 -1
  59. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  60. package/dist/admin/history/index.js.map +1 -1
  61. package/dist/admin/history/index.mjs.map +1 -1
  62. package/dist/admin/history/pages/History.js.map +1 -1
  63. package/dist/admin/history/pages/History.mjs +1 -1
  64. package/dist/admin/history/pages/History.mjs.map +1 -1
  65. package/dist/admin/history/routes.js.map +1 -1
  66. package/dist/admin/history/routes.mjs.map +1 -1
  67. package/dist/admin/history/services/historyVersion.js.map +1 -1
  68. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  69. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  70. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  71. package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
  72. package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
  73. package/dist/admin/hooks/useDebounce.js.map +1 -1
  74. package/dist/admin/hooks/useDebounce.mjs.map +1 -1
  75. package/dist/admin/hooks/useDocument.js.map +1 -1
  76. package/dist/admin/hooks/useDocument.mjs +1 -1
  77. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  78. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  79. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  80. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  81. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  82. package/dist/admin/hooks/useDocumentLayout.js +2 -1
  83. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  84. package/dist/admin/hooks/useDocumentLayout.mjs +2 -1
  85. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  86. package/dist/admin/hooks/useDragAndDrop.js +1 -3
  87. package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
  88. package/dist/admin/hooks/useDragAndDrop.mjs +1 -3
  89. package/dist/admin/hooks/useDragAndDrop.mjs.map +1 -1
  90. package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
  91. package/dist/admin/hooks/useKeyboardDragAndDrop.mjs.map +1 -1
  92. package/dist/admin/hooks/useLazyComponents.js.map +1 -1
  93. package/dist/admin/hooks/useLazyComponents.mjs.map +1 -1
  94. package/dist/admin/hooks/useOnce.js.map +1 -1
  95. package/dist/admin/hooks/useOnce.mjs.map +1 -1
  96. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  97. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
  98. package/dist/admin/hooks/usePrev.js.map +1 -1
  99. package/dist/admin/hooks/usePrev.mjs.map +1 -1
  100. package/dist/admin/index.js.map +1 -1
  101. package/dist/admin/index.mjs.map +1 -1
  102. package/dist/admin/layout.js.map +1 -1
  103. package/dist/admin/layout.mjs.map +1 -1
  104. package/dist/admin/modules/app.js.map +1 -1
  105. package/dist/admin/modules/app.mjs.map +1 -1
  106. package/dist/admin/modules/hooks.js.map +1 -1
  107. package/dist/admin/modules/hooks.mjs +1 -1
  108. package/dist/admin/modules/hooks.mjs.map +1 -1
  109. package/dist/admin/modules/reducers.js.map +1 -1
  110. package/dist/admin/modules/reducers.mjs.map +1 -1
  111. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  112. package/dist/admin/pages/ComponentConfigurationPage.mjs +1 -1
  113. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  114. package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
  115. package/dist/admin/pages/EditConfigurationPage.mjs +1 -1
  116. package/dist/admin/pages/EditConfigurationPage.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  118. package/dist/admin/pages/EditView/EditViewPage.mjs +4 -4
  119. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  120. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
  122. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/DocumentActions.mjs +4 -4
  124. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  126. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  128. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  130. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +1 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +2 -2
  142. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.js.map +1 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  148. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  150. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  152. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +1 -1
  158. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  160. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +2 -2
  161. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.js.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.mjs.map +1 -1
  166. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.js.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.mjs.map +1 -1
  168. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.js.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.mjs.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
  172. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
  174. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  180. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.js.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.mjs.map +1 -1
  182. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  183. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  184. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  185. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  186. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  187. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  188. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  189. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  190. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.js.map +1 -1
  191. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.mjs.map +1 -1
  192. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  193. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  194. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.js.map +1 -1
  195. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.mjs.map +1 -1
  196. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +45 -6
  197. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  198. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +46 -9
  199. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  200. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  201. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +2 -2
  202. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  203. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  204. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  205. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  206. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  207. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  208. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  209. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  210. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  211. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  212. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  213. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
  214. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
  215. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  216. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +2 -2
  217. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  218. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  219. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  220. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
  221. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.mjs.map +1 -1
  222. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
  223. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.mjs.map +1 -1
  224. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js +8 -6
  225. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  226. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs +8 -6
  227. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  228. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  229. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  230. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  231. package/dist/admin/pages/EditView/components/Header.mjs +2 -2
  232. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  233. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  234. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  235. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  236. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  237. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  238. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  239. package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
  240. package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
  241. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  242. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -1
  243. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  244. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  245. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -1
  246. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  247. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  248. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  249. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  250. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  251. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  252. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  253. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  254. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  255. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  256. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  257. package/dist/admin/pages/ListView/ListViewPage.mjs +3 -3
  258. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  259. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  260. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  261. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  262. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  263. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -4
  264. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  265. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -5
  266. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  267. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -4
  268. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  269. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +2 -2
  270. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  271. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  272. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  273. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  274. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  275. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  276. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  277. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -1
  278. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  279. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +7 -1
  280. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  281. package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
  282. package/dist/admin/pages/ListView/components/TableCells/Components.mjs +2 -2
  283. package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
  284. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  285. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  286. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  287. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  288. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  289. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  290. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  291. package/dist/admin/pages/NoContentTypePage.js.map +1 -1
  292. package/dist/admin/pages/NoContentTypePage.mjs.map +1 -1
  293. package/dist/admin/pages/NoPermissionsPage.js.map +1 -1
  294. package/dist/admin/pages/NoPermissionsPage.mjs.map +1 -1
  295. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  296. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  297. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  298. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  299. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  300. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  301. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  302. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  303. package/dist/admin/preview/index.js.map +1 -1
  304. package/dist/admin/preview/index.mjs.map +1 -1
  305. package/dist/admin/preview/pages/Preview.js.map +1 -1
  306. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  307. package/dist/admin/preview/routes.js.map +1 -1
  308. package/dist/admin/preview/routes.mjs.map +1 -1
  309. package/dist/admin/preview/services/preview.js.map +1 -1
  310. package/dist/admin/preview/services/preview.mjs.map +1 -1
  311. package/dist/admin/preview/utils/constants.js +0 -1
  312. package/dist/admin/preview/utils/constants.js.map +1 -1
  313. package/dist/admin/preview/utils/constants.mjs +0 -1
  314. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  315. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  316. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  317. package/dist/admin/preview/utils/getSendMessage.js.map +1 -1
  318. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -1
  319. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  320. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  321. package/dist/admin/router.js.map +1 -1
  322. package/dist/admin/router.mjs.map +1 -1
  323. package/dist/admin/services/api.js.map +1 -1
  324. package/dist/admin/services/api.mjs.map +1 -1
  325. package/dist/admin/services/components.js.map +1 -1
  326. package/dist/admin/services/components.mjs.map +1 -1
  327. package/dist/admin/services/contentTypes.js.map +1 -1
  328. package/dist/admin/services/contentTypes.mjs.map +1 -1
  329. package/dist/admin/services/documents.js.map +1 -1
  330. package/dist/admin/services/documents.mjs.map +1 -1
  331. package/dist/admin/services/homepage.js.map +1 -1
  332. package/dist/admin/services/homepage.mjs.map +1 -1
  333. package/dist/admin/services/init.js.map +1 -1
  334. package/dist/admin/services/init.mjs.map +1 -1
  335. package/dist/admin/services/relations.js.map +1 -1
  336. package/dist/admin/services/relations.mjs.map +1 -1
  337. package/dist/admin/services/uid.js.map +1 -1
  338. package/dist/admin/services/uid.mjs.map +1 -1
  339. package/dist/admin/src/hooks/useDocumentLayout.d.ts +1 -0
  340. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -2
  341. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
  342. package/dist/admin/translations/en.json.js +5 -0
  343. package/dist/admin/translations/en.json.js.map +1 -1
  344. package/dist/admin/translations/en.json.mjs +5 -0
  345. package/dist/admin/translations/en.json.mjs.map +1 -1
  346. package/dist/admin/translations/fr.json.js +72 -1
  347. package/dist/admin/translations/fr.json.js.map +1 -1
  348. package/dist/admin/translations/fr.json.mjs +72 -1
  349. package/dist/admin/translations/fr.json.mjs.map +1 -1
  350. package/dist/admin/utils/api.js.map +1 -1
  351. package/dist/admin/utils/api.mjs.map +1 -1
  352. package/dist/admin/utils/attributes.js.map +1 -1
  353. package/dist/admin/utils/attributes.mjs.map +1 -1
  354. package/dist/admin/utils/objects.js.map +1 -1
  355. package/dist/admin/utils/objects.mjs.map +1 -1
  356. package/dist/admin/utils/relations.js.map +1 -1
  357. package/dist/admin/utils/relations.mjs.map +1 -1
  358. package/dist/admin/utils/strings.js.map +1 -1
  359. package/dist/admin/utils/strings.mjs.map +1 -1
  360. package/dist/admin/utils/translations.js.map +1 -1
  361. package/dist/admin/utils/translations.mjs.map +1 -1
  362. package/dist/admin/utils/urls.js.map +1 -1
  363. package/dist/admin/utils/urls.mjs.map +1 -1
  364. package/dist/admin/utils/users.js.map +1 -1
  365. package/dist/admin/utils/users.mjs.map +1 -1
  366. package/dist/admin/utils/validation.js.map +1 -1
  367. package/dist/admin/utils/validation.mjs.map +1 -1
  368. package/dist/server/bootstrap.js.map +1 -1
  369. package/dist/server/bootstrap.mjs.map +1 -1
  370. package/dist/server/constants/index.js.map +1 -1
  371. package/dist/server/constants/index.mjs.map +1 -1
  372. package/dist/server/controllers/collection-types.js.map +1 -1
  373. package/dist/server/controllers/collection-types.mjs +1 -1
  374. package/dist/server/controllers/collection-types.mjs.map +1 -1
  375. package/dist/server/controllers/components.js.map +1 -1
  376. package/dist/server/controllers/components.mjs.map +1 -1
  377. package/dist/server/controllers/content-types.js +10 -10
  378. package/dist/server/controllers/content-types.js.map +1 -1
  379. package/dist/server/controllers/content-types.mjs.map +1 -1
  380. package/dist/server/controllers/index.js +4 -4
  381. package/dist/server/controllers/index.js.map +1 -1
  382. package/dist/server/controllers/index.mjs.map +1 -1
  383. package/dist/server/controllers/init.js.map +1 -1
  384. package/dist/server/controllers/init.mjs.map +1 -1
  385. package/dist/server/controllers/relations.js.map +1 -1
  386. package/dist/server/controllers/relations.mjs +3 -3
  387. package/dist/server/controllers/relations.mjs.map +1 -1
  388. package/dist/server/controllers/single-types.js.map +1 -1
  389. package/dist/server/controllers/single-types.mjs +1 -1
  390. package/dist/server/controllers/single-types.mjs.map +1 -1
  391. package/dist/server/controllers/uid.js.map +1 -1
  392. package/dist/server/controllers/uid.mjs +1 -1
  393. package/dist/server/controllers/uid.mjs.map +1 -1
  394. package/dist/server/controllers/utils/clone.js.map +1 -1
  395. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  396. package/dist/server/controllers/utils/document-status.js.map +1 -1
  397. package/dist/server/controllers/utils/document-status.mjs.map +1 -1
  398. package/dist/server/controllers/utils/metadata.js.map +1 -1
  399. package/dist/server/controllers/utils/metadata.mjs.map +1 -1
  400. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  401. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  402. package/dist/server/controllers/validation/index.js.map +1 -1
  403. package/dist/server/controllers/validation/index.mjs +1 -1
  404. package/dist/server/controllers/validation/index.mjs.map +1 -1
  405. package/dist/server/controllers/validation/model-configuration.js +6 -1
  406. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  407. package/dist/server/controllers/validation/model-configuration.mjs +6 -1
  408. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  409. package/dist/server/controllers/validation/relations.js.map +1 -1
  410. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  411. package/dist/server/destroy.js.map +1 -1
  412. package/dist/server/destroy.mjs.map +1 -1
  413. package/dist/server/history/constants.js.map +1 -1
  414. package/dist/server/history/constants.mjs.map +1 -1
  415. package/dist/server/history/controllers/history-version.js.map +1 -1
  416. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  417. package/dist/server/history/controllers/index.js.map +1 -1
  418. package/dist/server/history/controllers/index.mjs.map +1 -1
  419. package/dist/server/history/controllers/validation/history-version.js.map +1 -1
  420. package/dist/server/history/controllers/validation/history-version.mjs.map +1 -1
  421. package/dist/server/history/index.js +4 -4
  422. package/dist/server/history/index.js.map +1 -1
  423. package/dist/server/history/index.mjs.map +1 -1
  424. package/dist/server/history/models/history-version.js.map +1 -1
  425. package/dist/server/history/models/history-version.mjs.map +1 -1
  426. package/dist/server/history/routes/history-version.js.map +1 -1
  427. package/dist/server/history/routes/history-version.mjs.map +1 -1
  428. package/dist/server/history/routes/index.js.map +1 -1
  429. package/dist/server/history/routes/index.mjs.map +1 -1
  430. package/dist/server/history/services/history.js.map +1 -1
  431. package/dist/server/history/services/history.mjs.map +1 -1
  432. package/dist/server/history/services/index.js.map +1 -1
  433. package/dist/server/history/services/index.mjs.map +1 -1
  434. package/dist/server/history/services/lifecycles.js.map +1 -1
  435. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  436. package/dist/server/history/services/utils.js.map +1 -1
  437. package/dist/server/history/services/utils.mjs.map +1 -1
  438. package/dist/server/history/utils.js.map +1 -1
  439. package/dist/server/history/utils.mjs.map +1 -1
  440. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  441. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  442. package/dist/server/homepage/controllers/index.js.map +1 -1
  443. package/dist/server/homepage/controllers/index.mjs.map +1 -1
  444. package/dist/server/homepage/index.js +6 -6
  445. package/dist/server/homepage/index.js.map +1 -1
  446. package/dist/server/homepage/index.mjs.map +1 -1
  447. package/dist/server/homepage/routes/homepage.js.map +1 -1
  448. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  449. package/dist/server/homepage/routes/index.js.map +1 -1
  450. package/dist/server/homepage/routes/index.mjs.map +1 -1
  451. package/dist/server/homepage/services/homepage.js.map +1 -1
  452. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  453. package/dist/server/homepage/services/index.js.map +1 -1
  454. package/dist/server/homepage/services/index.mjs.map +1 -1
  455. package/dist/server/index.js +8 -8
  456. package/dist/server/middlewares/routing.js.map +1 -1
  457. package/dist/server/middlewares/routing.mjs.map +1 -1
  458. package/dist/server/policies/hasPermissions.js.map +1 -1
  459. package/dist/server/policies/hasPermissions.mjs.map +1 -1
  460. package/dist/server/policies/index.js.map +1 -1
  461. package/dist/server/policies/index.mjs.map +1 -1
  462. package/dist/server/preview/controllers/index.js.map +1 -1
  463. package/dist/server/preview/controllers/index.mjs.map +1 -1
  464. package/dist/server/preview/controllers/preview.js.map +1 -1
  465. package/dist/server/preview/controllers/preview.mjs.map +1 -1
  466. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  467. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  468. package/dist/server/preview/index.js +4 -4
  469. package/dist/server/preview/index.js.map +1 -1
  470. package/dist/server/preview/index.mjs.map +1 -1
  471. package/dist/server/preview/routes/index.js.map +1 -1
  472. package/dist/server/preview/routes/index.mjs.map +1 -1
  473. package/dist/server/preview/routes/preview.js.map +1 -1
  474. package/dist/server/preview/routes/preview.mjs.map +1 -1
  475. package/dist/server/preview/services/index.js.map +1 -1
  476. package/dist/server/preview/services/index.mjs.map +1 -1
  477. package/dist/server/preview/services/preview-config.js.map +1 -1
  478. package/dist/server/preview/services/preview-config.mjs +1 -1
  479. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  480. package/dist/server/preview/services/preview.js.map +1 -1
  481. package/dist/server/preview/services/preview.mjs.map +1 -1
  482. package/dist/server/preview/utils.js.map +1 -1
  483. package/dist/server/preview/utils.mjs.map +1 -1
  484. package/dist/server/register.js.map +1 -1
  485. package/dist/server/register.mjs.map +1 -1
  486. package/dist/server/routes/admin.js.map +1 -1
  487. package/dist/server/routes/admin.mjs.map +1 -1
  488. package/dist/server/routes/index.js +4 -4
  489. package/dist/server/routes/index.js.map +1 -1
  490. package/dist/server/routes/index.mjs.map +1 -1
  491. package/dist/server/services/components.js.map +1 -1
  492. package/dist/server/services/components.mjs.map +1 -1
  493. package/dist/server/services/configuration.js.map +1 -1
  494. package/dist/server/services/configuration.mjs.map +1 -1
  495. package/dist/server/services/content-types.js.map +1 -1
  496. package/dist/server/services/content-types.mjs.map +1 -1
  497. package/dist/server/services/data-mapper.js.map +1 -1
  498. package/dist/server/services/data-mapper.mjs.map +1 -1
  499. package/dist/server/services/document-manager.js.map +1 -1
  500. package/dist/server/services/document-manager.mjs +2 -2
  501. package/dist/server/services/document-manager.mjs.map +1 -1
  502. package/dist/server/services/document-metadata.js.map +1 -1
  503. package/dist/server/services/document-metadata.mjs +2 -2
  504. package/dist/server/services/document-metadata.mjs.map +1 -1
  505. package/dist/server/services/field-sizes.js.map +1 -1
  506. package/dist/server/services/field-sizes.mjs.map +1 -1
  507. package/dist/server/services/index.js +4 -4
  508. package/dist/server/services/index.js.map +1 -1
  509. package/dist/server/services/index.mjs.map +1 -1
  510. package/dist/server/services/metrics.js.map +1 -1
  511. package/dist/server/services/metrics.mjs.map +1 -1
  512. package/dist/server/services/permission-checker.js.map +1 -1
  513. package/dist/server/services/permission-checker.mjs.map +1 -1
  514. package/dist/server/services/permission.js.map +1 -1
  515. package/dist/server/services/permission.mjs.map +1 -1
  516. package/dist/server/services/populate-builder.js.map +1 -1
  517. package/dist/server/services/populate-builder.mjs +4 -4
  518. package/dist/server/services/populate-builder.mjs.map +1 -1
  519. package/dist/server/services/uid.js.map +1 -1
  520. package/dist/server/services/uid.mjs.map +1 -1
  521. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  522. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  523. package/dist/server/services/utils/configuration/index.js.map +1 -1
  524. package/dist/server/services/utils/configuration/index.mjs +3 -3
  525. package/dist/server/services/utils/configuration/index.mjs.map +1 -1
  526. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  527. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  528. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  529. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  530. package/dist/server/services/utils/configuration/metadatas.mjs +1 -1
  531. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  532. package/dist/server/services/utils/configuration/settings.js +4 -2
  533. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  534. package/dist/server/services/utils/configuration/settings.mjs +5 -3
  535. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  536. package/dist/server/services/utils/draft.js.map +1 -1
  537. package/dist/server/services/utils/draft.mjs.map +1 -1
  538. package/dist/server/services/utils/populate.js.map +1 -1
  539. package/dist/server/services/utils/populate.mjs +1 -1
  540. package/dist/server/services/utils/populate.mjs.map +1 -1
  541. package/dist/server/services/utils/store.js.map +1 -1
  542. package/dist/server/services/utils/store.mjs.map +1 -1
  543. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  544. package/dist/server/utils/index.js.map +1 -1
  545. package/dist/server/utils/index.mjs.map +1 -1
  546. package/dist/server/validation/policies/hasPermissions.js.map +1 -1
  547. package/dist/server/validation/policies/hasPermissions.mjs.map +1 -1
  548. package/dist/shared/contracts/content-types.d.ts +2 -0
  549. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  550. package/dist/shared/contracts/relations.d.ts +1 -1
  551. package/dist/shared/contracts/relations.d.ts.map +1 -1
  552. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sources":["../../../../../admin/src/pages/EditView/utils/forms.ts"],"sourcesContent":["import type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema } from '@strapi/types';\n\ntype AnyData = Omit<Document, 'id'>;\n\n/* -------------------------------------------------------------------------------------------------\n * createDefaultForm\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Using the content-type schema & the components dictionary of the content-type,\n * creates a form with pre-filled default values. This is used when creating a new entry.\n */\nconst createDefaultForm = (\n contentType: Schema.Schema,\n components: ComponentsDictionary = {}\n): AnyData => {\n const traverseSchema = (attributes: Schema.Schema['attributes']): AnyData => {\n return Object.entries(attributes).reduce<AnyData>((acc, [key, attribute]) => {\n if ('default' in attribute) {\n acc[key] = attribute.default;\n } else if (attribute.type === 'component' && attribute.required) {\n const defaultComponentForm = traverseSchema(components[attribute.component].attributes);\n\n if (attribute.repeatable) {\n acc[key] = attribute.min ? [...Array(attribute.min).fill(defaultComponentForm)] : [];\n } else {\n acc[key] = defaultComponentForm;\n }\n } else if (attribute.type === 'dynamiczone' && attribute.required) {\n acc[key] = [];\n }\n\n return acc;\n }, {});\n };\n\n return traverseSchema(contentType.attributes);\n};\n\nexport { createDefaultForm };\n"],"names":["createDefaultForm","contentType","components","traverseSchema","attributes","Object","entries","reduce","acc","key","attribute","default","type","required","defaultComponentForm","component","repeatable","min","Array","fill"],"mappings":";;AAKA;;;;;AAOC,UACKA,iBAAoB,GAAA,CACxBC,WACAC,EAAAA,UAAAA,GAAmC,EAAE,GAAA;AAErC,IAAA,MAAMC,iBAAiB,CAACC,UAAAA,GAAAA;QACtB,OAAOC,MAAAA,CAAOC,OAAO,CAACF,UAAYG,CAAAA,CAAAA,MAAM,CAAU,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,SAAU,CAAA,GAAA;AACtE,YAAA,IAAI,aAAaA,SAAW,EAAA;AAC1BF,gBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUC,OAAO;AAC9B,aAAA,MAAO,IAAID,SAAUE,CAAAA,IAAI,KAAK,WAAeF,IAAAA,SAAAA,CAAUG,QAAQ,EAAE;gBAC/D,MAAMC,oBAAAA,GAAuBX,eAAeD,UAAU,CAACQ,UAAUK,SAAS,CAAC,CAACX,UAAU,CAAA;gBAEtF,IAAIM,SAAAA,CAAUM,UAAU,EAAE;AACxBR,oBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUO,GAAG,GAAG;AAAIC,wBAAAA,GAAAA,KAAAA,CAAMR,SAAUO,CAAAA,GAAG,CAAEE,CAAAA,IAAI,CAACL,oBAAAA;AAAsB,qBAAA,GAAG,EAAE;iBAC/E,MAAA;oBACLN,GAAG,CAACC,IAAI,GAAGK,oBAAAA;AACb;AACF,aAAA,MAAO,IAAIJ,SAAUE,CAAAA,IAAI,KAAK,aAAiBF,IAAAA,SAAAA,CAAUG,QAAQ,EAAE;gBACjEL,GAAG,CAACC,GAAI,CAAA,GAAG,EAAE;AACf;YAEA,OAAOD,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;AACN,KAAA;IAEA,OAAOL,cAAAA,CAAeF,YAAYG,UAAU,CAAA;AAC9C;;;;"}
1
+ {"version":3,"file":"forms.js","sources":["../../../../../admin/src/pages/EditView/utils/forms.ts"],"sourcesContent":["import type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema } from '@strapi/types';\n\ntype AnyData = Omit<Document, 'id'>;\n\n/* -------------------------------------------------------------------------------------------------\n * createDefaultForm\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Using the content-type schema & the components dictionary of the content-type,\n * creates a form with pre-filled default values. This is used when creating a new entry.\n */\nconst createDefaultForm = (\n contentType: Schema.Schema,\n components: ComponentsDictionary = {}\n): AnyData => {\n const traverseSchema = (attributes: Schema.Schema['attributes']): AnyData => {\n return Object.entries(attributes).reduce<AnyData>((acc, [key, attribute]) => {\n if ('default' in attribute) {\n acc[key] = attribute.default;\n } else if (attribute.type === 'component' && attribute.required) {\n const defaultComponentForm = traverseSchema(components[attribute.component].attributes);\n\n if (attribute.repeatable) {\n acc[key] = attribute.min ? [...Array(attribute.min).fill(defaultComponentForm)] : [];\n } else {\n acc[key] = defaultComponentForm;\n }\n } else if (attribute.type === 'dynamiczone' && attribute.required) {\n acc[key] = [];\n }\n\n return acc;\n }, {});\n };\n\n return traverseSchema(contentType.attributes);\n};\n\nexport { createDefaultForm };\n"],"names":["createDefaultForm","contentType","components","traverseSchema","attributes","Object","entries","reduce","acc","key","attribute","default","type","required","defaultComponentForm","component","repeatable","min","Array","fill"],"mappings":";;AAKA;;;;;AAOC,UACKA,iBAAAA,GAAoB,CACxBC,WAAAA,EACAC,UAAAA,GAAmC,EAAE,GAAA;AAErC,IAAA,MAAMC,iBAAiB,CAACC,UAAAA,GAAAA;QACtB,OAAOC,MAAAA,CAAOC,OAAO,CAACF,UAAAA,CAAAA,CAAYG,MAAM,CAAU,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,SAAAA,CAAU,GAAA;AACtE,YAAA,IAAI,aAAaA,SAAAA,EAAW;AAC1BF,gBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUC,OAAO;AAC9B,YAAA,CAAA,MAAO,IAAID,SAAAA,CAAUE,IAAI,KAAK,WAAA,IAAeF,SAAAA,CAAUG,QAAQ,EAAE;gBAC/D,MAAMC,oBAAAA,GAAuBX,eAAeD,UAAU,CAACQ,UAAUK,SAAS,CAAC,CAACX,UAAU,CAAA;gBAEtF,IAAIM,SAAAA,CAAUM,UAAU,EAAE;AACxBR,oBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUO,GAAG,GAAG;AAAIC,wBAAAA,GAAAA,KAAAA,CAAMR,SAAAA,CAAUO,GAAG,CAAA,CAAEE,IAAI,CAACL,oBAAAA;AAAsB,qBAAA,GAAG,EAAE;gBACtF,CAAA,MAAO;oBACLN,GAAG,CAACC,IAAI,GAAGK,oBAAAA;AACb,gBAAA;AACF,YAAA,CAAA,MAAO,IAAIJ,SAAAA,CAAUE,IAAI,KAAK,aAAA,IAAiBF,SAAAA,CAAUG,QAAQ,EAAE;gBACjEL,GAAG,CAACC,GAAAA,CAAI,GAAG,EAAE;AACf,YAAA;YAEA,OAAOD,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AACN,IAAA,CAAA;IAEA,OAAOL,cAAAA,CAAeF,YAAYG,UAAU,CAAA;AAC9C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/pages/EditView/utils/forms.ts"],"sourcesContent":["import type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema } from '@strapi/types';\n\ntype AnyData = Omit<Document, 'id'>;\n\n/* -------------------------------------------------------------------------------------------------\n * createDefaultForm\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Using the content-type schema & the components dictionary of the content-type,\n * creates a form with pre-filled default values. This is used when creating a new entry.\n */\nconst createDefaultForm = (\n contentType: Schema.Schema,\n components: ComponentsDictionary = {}\n): AnyData => {\n const traverseSchema = (attributes: Schema.Schema['attributes']): AnyData => {\n return Object.entries(attributes).reduce<AnyData>((acc, [key, attribute]) => {\n if ('default' in attribute) {\n acc[key] = attribute.default;\n } else if (attribute.type === 'component' && attribute.required) {\n const defaultComponentForm = traverseSchema(components[attribute.component].attributes);\n\n if (attribute.repeatable) {\n acc[key] = attribute.min ? [...Array(attribute.min).fill(defaultComponentForm)] : [];\n } else {\n acc[key] = defaultComponentForm;\n }\n } else if (attribute.type === 'dynamiczone' && attribute.required) {\n acc[key] = [];\n }\n\n return acc;\n }, {});\n };\n\n return traverseSchema(contentType.attributes);\n};\n\nexport { createDefaultForm };\n"],"names":["createDefaultForm","contentType","components","traverseSchema","attributes","Object","entries","reduce","acc","key","attribute","default","type","required","defaultComponentForm","component","repeatable","min","Array","fill"],"mappings":"AAKA;;;;;AAOC,UACKA,iBAAoB,GAAA,CACxBC,WACAC,EAAAA,UAAAA,GAAmC,EAAE,GAAA;AAErC,IAAA,MAAMC,iBAAiB,CAACC,UAAAA,GAAAA;QACtB,OAAOC,MAAAA,CAAOC,OAAO,CAACF,UAAYG,CAAAA,CAAAA,MAAM,CAAU,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,SAAU,CAAA,GAAA;AACtE,YAAA,IAAI,aAAaA,SAAW,EAAA;AAC1BF,gBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUC,OAAO;AAC9B,aAAA,MAAO,IAAID,SAAUE,CAAAA,IAAI,KAAK,WAAeF,IAAAA,SAAAA,CAAUG,QAAQ,EAAE;gBAC/D,MAAMC,oBAAAA,GAAuBX,eAAeD,UAAU,CAACQ,UAAUK,SAAS,CAAC,CAACX,UAAU,CAAA;gBAEtF,IAAIM,SAAAA,CAAUM,UAAU,EAAE;AACxBR,oBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUO,GAAG,GAAG;AAAIC,wBAAAA,GAAAA,KAAAA,CAAMR,SAAUO,CAAAA,GAAG,CAAEE,CAAAA,IAAI,CAACL,oBAAAA;AAAsB,qBAAA,GAAG,EAAE;iBAC/E,MAAA;oBACLN,GAAG,CAACC,IAAI,GAAGK,oBAAAA;AACb;AACF,aAAA,MAAO,IAAIJ,SAAUE,CAAAA,IAAI,KAAK,aAAiBF,IAAAA,SAAAA,CAAUG,QAAQ,EAAE;gBACjEL,GAAG,CAACC,GAAI,CAAA,GAAG,EAAE;AACf;YAEA,OAAOD,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;AACN,KAAA;IAEA,OAAOL,cAAAA,CAAeF,YAAYG,UAAU,CAAA;AAC9C;;;;"}
1
+ {"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/pages/EditView/utils/forms.ts"],"sourcesContent":["import type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema } from '@strapi/types';\n\ntype AnyData = Omit<Document, 'id'>;\n\n/* -------------------------------------------------------------------------------------------------\n * createDefaultForm\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Using the content-type schema & the components dictionary of the content-type,\n * creates a form with pre-filled default values. This is used when creating a new entry.\n */\nconst createDefaultForm = (\n contentType: Schema.Schema,\n components: ComponentsDictionary = {}\n): AnyData => {\n const traverseSchema = (attributes: Schema.Schema['attributes']): AnyData => {\n return Object.entries(attributes).reduce<AnyData>((acc, [key, attribute]) => {\n if ('default' in attribute) {\n acc[key] = attribute.default;\n } else if (attribute.type === 'component' && attribute.required) {\n const defaultComponentForm = traverseSchema(components[attribute.component].attributes);\n\n if (attribute.repeatable) {\n acc[key] = attribute.min ? [...Array(attribute.min).fill(defaultComponentForm)] : [];\n } else {\n acc[key] = defaultComponentForm;\n }\n } else if (attribute.type === 'dynamiczone' && attribute.required) {\n acc[key] = [];\n }\n\n return acc;\n }, {});\n };\n\n return traverseSchema(contentType.attributes);\n};\n\nexport { createDefaultForm };\n"],"names":["createDefaultForm","contentType","components","traverseSchema","attributes","Object","entries","reduce","acc","key","attribute","default","type","required","defaultComponentForm","component","repeatable","min","Array","fill"],"mappings":"AAKA;;;;;AAOC,UACKA,iBAAAA,GAAoB,CACxBC,WAAAA,EACAC,UAAAA,GAAmC,EAAE,GAAA;AAErC,IAAA,MAAMC,iBAAiB,CAACC,UAAAA,GAAAA;QACtB,OAAOC,MAAAA,CAAOC,OAAO,CAACF,UAAAA,CAAAA,CAAYG,MAAM,CAAU,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,SAAAA,CAAU,GAAA;AACtE,YAAA,IAAI,aAAaA,SAAAA,EAAW;AAC1BF,gBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUC,OAAO;AAC9B,YAAA,CAAA,MAAO,IAAID,SAAAA,CAAUE,IAAI,KAAK,WAAA,IAAeF,SAAAA,CAAUG,QAAQ,EAAE;gBAC/D,MAAMC,oBAAAA,GAAuBX,eAAeD,UAAU,CAACQ,UAAUK,SAAS,CAAC,CAACX,UAAU,CAAA;gBAEtF,IAAIM,SAAAA,CAAUM,UAAU,EAAE;AACxBR,oBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGC,SAAAA,CAAUO,GAAG,GAAG;AAAIC,wBAAAA,GAAAA,KAAAA,CAAMR,SAAAA,CAAUO,GAAG,CAAA,CAAEE,IAAI,CAACL,oBAAAA;AAAsB,qBAAA,GAAG,EAAE;gBACtF,CAAA,MAAO;oBACLN,GAAG,CAACC,IAAI,GAAGK,oBAAAA;AACb,gBAAA;AACF,YAAA,CAAA,MAAO,IAAIJ,SAAAA,CAAUE,IAAI,KAAK,aAAA,IAAiBF,SAAAA,CAAUG,QAAQ,EAAE;gBACjEL,GAAG,CAACC,GAAAA,CAAI,GAAG,EAAE;AACf,YAAA;YAEA,OAAOD,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AACN,IAAA,CAAA;IAEA,OAAOL,cAAAA,CAAeF,YAAYG,UAAU,CAAA;AAC9C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListConfigurationPage.js","sources":["../../../../admin/src/pages/ListConfiguration/ListConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type FormProps,\n useNotification,\n useTracking,\n useAPIErrorHandler,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, Main } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Navigate } from 'react-router-dom';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { useDoc } from '../../hooks/useDocument';\nimport { ListFieldLayout, ListLayout, useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../../services/contentTypes';\nimport { setIn } from '../../utils/objects';\n\nimport { Header } from './components/Header';\nimport { Settings } from './components/Settings';\nimport { SortDisplayedFields } from './components/SortDisplayedFields';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\n\ninterface FormData extends Pick<ListLayout, 'settings'> {\n layout: Array<Pick<ListFieldLayout, 'sortable' | 'name'> & { label: string }>;\n}\n\nconst ListConfiguration = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { model, collectionType } = useDoc();\n\n const { isLoading: isLoadingLayout, list, edit } = useDocLayout();\n\n const [updateContentTypeConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: FormProps<FormData>['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n const layoutData = data.layout ?? [];\n /**\n * We reconstruct the metadatas object by taking the existing edit metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(edit.metadatas).reduce<Metadatas>((acc, [name, editMeta]) => {\n const { mainField: _mainField, ...listMeta } = list.metadatas[name];\n\n const { label, sortable } = layoutData.find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: editMeta,\n list: {\n ...listMeta,\n label: label || listMeta.label,\n sortable: sortable || listMeta.sortable,\n },\n };\n\n return acc;\n }, {});\n\n const res = await updateContentTypeConfiguration({\n layouts: {\n edit: edit.layout.flatMap((panel) =>\n panel.map((row) => row.map(({ name, size }) => ({ name, size })))\n ),\n list: layoutData.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditListSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const initialValues = React.useMemo(() => {\n return {\n layout: list.layout.map(({ label, sortable, name }) => ({\n label: typeof label === 'string' ? label : formatMessage(label),\n sortable,\n name,\n })),\n settings: list.settings,\n } satisfies FormData;\n }, [formatMessage, list.layout, list.settings]);\n\n if (collectionType === SINGLE_TYPES) {\n return <Navigate to={`/single-types/${model}`} />;\n }\n\n if (isLoadingLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>{`Configure ${list.settings.displayName} List View`}</Page.Title>\n <Main>\n <Form initialValues={initialValues} onSubmit={handleSubmit} method=\"PUT\">\n <Header\n collectionType={collectionType}\n model={model}\n name={list.settings.displayName ?? ''}\n />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n position=\"relative\"\n >\n <Settings />\n <Divider />\n <SortDisplayedFields />\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedListConfiguration = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListConfiguration />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListConfiguration, ListConfiguration };\nexport type { FormData };\n"],"names":["ListConfiguration","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","model","collectionType","useDoc","isLoading","isLoadingLayout","list","edit","useDocLayout","updateContentTypeConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","data","layoutData","layout","meta","Object","entries","metadatas","reduce","acc","name","editMeta","mainField","_mainField","listMeta","label","sortable","find","field","res","layouts","flatMap","panel","map","row","size","settings","setIn","undefined","uid","type","message","id","defaultMessage","error","err","console","initialValues","React","useMemo","SINGLE_TYPES","_jsx","Navigate","to","Page","Loading","_jsxs","Layouts","Root","Title","displayName","Main","Form","onSubmit","method","Header","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","position","Settings","Divider","SortDisplayedFields","ProtectedListConfiguration","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListConfigurationPage.js","sources":["../../../../admin/src/pages/ListConfiguration/ListConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type FormProps,\n useNotification,\n useTracking,\n useAPIErrorHandler,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, Main } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Navigate } from 'react-router-dom';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { useDoc } from '../../hooks/useDocument';\nimport { ListFieldLayout, ListLayout, useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../../services/contentTypes';\nimport { setIn } from '../../utils/objects';\n\nimport { Header } from './components/Header';\nimport { Settings } from './components/Settings';\nimport { SortDisplayedFields } from './components/SortDisplayedFields';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\n\ninterface FormData extends Pick<ListLayout, 'settings'> {\n layout: Array<Pick<ListFieldLayout, 'sortable' | 'name'> & { label: string }>;\n}\n\nconst ListConfiguration = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { model, collectionType } = useDoc();\n\n const { isLoading: isLoadingLayout, list, edit } = useDocLayout();\n\n const [updateContentTypeConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: FormProps<FormData>['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n const layoutData = data.layout ?? [];\n /**\n * We reconstruct the metadatas object by taking the existing edit metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(edit.metadatas).reduce<Metadatas>((acc, [name, editMeta]) => {\n const { mainField: _mainField, ...listMeta } = list.metadatas[name];\n\n const { label, sortable } = layoutData.find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: editMeta,\n list: {\n ...listMeta,\n label: label || listMeta.label,\n sortable: sortable || listMeta.sortable,\n },\n };\n\n return acc;\n }, {});\n\n const res = await updateContentTypeConfiguration({\n layouts: {\n edit: edit.layout.flatMap((panel) =>\n panel.map((row) => row.map(({ name, size }) => ({ name, size })))\n ),\n list: layoutData.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditListSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const initialValues = React.useMemo(() => {\n return {\n layout: list.layout.map(({ label, sortable, name }) => ({\n label: typeof label === 'string' ? label : formatMessage(label),\n sortable,\n name,\n })),\n settings: list.settings,\n } satisfies FormData;\n }, [formatMessage, list.layout, list.settings]);\n\n if (collectionType === SINGLE_TYPES) {\n return <Navigate to={`/single-types/${model}`} />;\n }\n\n if (isLoadingLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>{`Configure ${list.settings.displayName} List View`}</Page.Title>\n <Main>\n <Form initialValues={initialValues} onSubmit={handleSubmit} method=\"PUT\">\n <Header\n collectionType={collectionType}\n model={model}\n name={list.settings.displayName ?? ''}\n />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n position=\"relative\"\n >\n <Settings />\n <Divider />\n <SortDisplayedFields />\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedListConfiguration = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListConfiguration />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListConfiguration, ListConfiguration };\nexport type { FormData };\n"],"names":["ListConfiguration","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","model","collectionType","useDoc","isLoading","isLoadingLayout","list","edit","useDocLayout","updateContentTypeConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","data","layoutData","layout","meta","Object","entries","metadatas","reduce","acc","name","editMeta","mainField","_mainField","listMeta","label","sortable","find","field","res","layouts","flatMap","panel","map","row","size","settings","setIn","undefined","uid","type","message","id","defaultMessage","error","err","console","initialValues","React","useMemo","SINGLE_TYPES","_jsx","Navigate","to","Page","Loading","_jsxs","Layouts","Root","Title","displayName","Main","Form","onSubmit","method","Header","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","position","Settings","Divider","SortDisplayedFields","ProtectedListConfiguration","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useTracking, useNotification, useAPIErrorHandler, Page, Layouts, Form } from '@strapi/admin/strapi-admin';
3
+ import { Page, useTracking, useNotification, useAPIErrorHandler, Layouts, Form } from '@strapi/admin/strapi-admin';
4
4
  import { Main, Flex, Divider } from '@strapi/design-system';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { Navigate } from 'react-router-dom';
@@ -1 +1 @@
1
- {"version":3,"file":"ListConfigurationPage.mjs","sources":["../../../../admin/src/pages/ListConfiguration/ListConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type FormProps,\n useNotification,\n useTracking,\n useAPIErrorHandler,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, Main } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Navigate } from 'react-router-dom';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { useDoc } from '../../hooks/useDocument';\nimport { ListFieldLayout, ListLayout, useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../../services/contentTypes';\nimport { setIn } from '../../utils/objects';\n\nimport { Header } from './components/Header';\nimport { Settings } from './components/Settings';\nimport { SortDisplayedFields } from './components/SortDisplayedFields';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\n\ninterface FormData extends Pick<ListLayout, 'settings'> {\n layout: Array<Pick<ListFieldLayout, 'sortable' | 'name'> & { label: string }>;\n}\n\nconst ListConfiguration = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { model, collectionType } = useDoc();\n\n const { isLoading: isLoadingLayout, list, edit } = useDocLayout();\n\n const [updateContentTypeConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: FormProps<FormData>['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n const layoutData = data.layout ?? [];\n /**\n * We reconstruct the metadatas object by taking the existing edit metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(edit.metadatas).reduce<Metadatas>((acc, [name, editMeta]) => {\n const { mainField: _mainField, ...listMeta } = list.metadatas[name];\n\n const { label, sortable } = layoutData.find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: editMeta,\n list: {\n ...listMeta,\n label: label || listMeta.label,\n sortable: sortable || listMeta.sortable,\n },\n };\n\n return acc;\n }, {});\n\n const res = await updateContentTypeConfiguration({\n layouts: {\n edit: edit.layout.flatMap((panel) =>\n panel.map((row) => row.map(({ name, size }) => ({ name, size })))\n ),\n list: layoutData.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditListSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const initialValues = React.useMemo(() => {\n return {\n layout: list.layout.map(({ label, sortable, name }) => ({\n label: typeof label === 'string' ? label : formatMessage(label),\n sortable,\n name,\n })),\n settings: list.settings,\n } satisfies FormData;\n }, [formatMessage, list.layout, list.settings]);\n\n if (collectionType === SINGLE_TYPES) {\n return <Navigate to={`/single-types/${model}`} />;\n }\n\n if (isLoadingLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>{`Configure ${list.settings.displayName} List View`}</Page.Title>\n <Main>\n <Form initialValues={initialValues} onSubmit={handleSubmit} method=\"PUT\">\n <Header\n collectionType={collectionType}\n model={model}\n name={list.settings.displayName ?? ''}\n />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n position=\"relative\"\n >\n <Settings />\n <Divider />\n <SortDisplayedFields />\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedListConfiguration = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListConfiguration />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListConfiguration, ListConfiguration };\nexport type { FormData };\n"],"names":["ListConfiguration","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","model","collectionType","useDoc","isLoading","isLoadingLayout","list","edit","useDocLayout","updateContentTypeConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","data","layoutData","layout","meta","Object","entries","metadatas","reduce","acc","name","editMeta","mainField","_mainField","listMeta","label","sortable","find","field","res","layouts","flatMap","panel","map","row","size","settings","setIn","undefined","uid","type","message","id","defaultMessage","error","err","console","initialValues","React","useMemo","SINGLE_TYPES","_jsx","Navigate","to","Page","Loading","_jsxs","Layouts","Root","Title","displayName","Main","Form","onSubmit","method","Header","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","position","Settings","Divider","SortDisplayedFields","ProtectedListConfiguration","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListConfigurationPage.mjs","sources":["../../../../admin/src/pages/ListConfiguration/ListConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type FormProps,\n useNotification,\n useTracking,\n useAPIErrorHandler,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, Main } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Navigate } from 'react-router-dom';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { useDoc } from '../../hooks/useDocument';\nimport { ListFieldLayout, ListLayout, useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { useUpdateContentTypeConfigurationMutation } from '../../services/contentTypes';\nimport { setIn } from '../../utils/objects';\n\nimport { Header } from './components/Header';\nimport { Settings } from './components/Settings';\nimport { SortDisplayedFields } from './components/SortDisplayedFields';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\n\ninterface FormData extends Pick<ListLayout, 'settings'> {\n layout: Array<Pick<ListFieldLayout, 'sortable' | 'name'> & { label: string }>;\n}\n\nconst ListConfiguration = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { model, collectionType } = useDoc();\n\n const { isLoading: isLoadingLayout, list, edit } = useDocLayout();\n\n const [updateContentTypeConfiguration] = useUpdateContentTypeConfigurationMutation();\n const handleSubmit: FormProps<FormData>['onSubmit'] = async (data) => {\n try {\n trackUsage('willSaveContentTypeLayout');\n const layoutData = data.layout ?? [];\n /**\n * We reconstruct the metadatas object by taking the existing edit metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(edit.metadatas).reduce<Metadatas>((acc, [name, editMeta]) => {\n const { mainField: _mainField, ...listMeta } = list.metadatas[name];\n\n const { label, sortable } = layoutData.find((field) => field.name === name) ?? {};\n\n acc[name] = {\n edit: editMeta,\n list: {\n ...listMeta,\n label: label || listMeta.label,\n sortable: sortable || listMeta.sortable,\n },\n };\n\n return acc;\n }, {});\n\n const res = await updateContentTypeConfiguration({\n layouts: {\n edit: edit.layout.flatMap((panel) =>\n panel.map((row) => row.map(({ name, size }) => ({ name, size })))\n ),\n list: layoutData.map((field) => field.name),\n },\n settings: setIn(data.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n trackUsage('didEditListSettings');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const initialValues = React.useMemo(() => {\n return {\n layout: list.layout.map(({ label, sortable, name }) => ({\n label: typeof label === 'string' ? label : formatMessage(label),\n sortable,\n name,\n })),\n settings: list.settings,\n } satisfies FormData;\n }, [formatMessage, list.layout, list.settings]);\n\n if (collectionType === SINGLE_TYPES) {\n return <Navigate to={`/single-types/${model}`} />;\n }\n\n if (isLoadingLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>{`Configure ${list.settings.displayName} List View`}</Page.Title>\n <Main>\n <Form initialValues={initialValues} onSubmit={handleSubmit} method=\"PUT\">\n <Header\n collectionType={collectionType}\n model={model}\n name={list.settings.displayName ?? ''}\n />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n position=\"relative\"\n >\n <Settings />\n <Divider />\n <SortDisplayedFields />\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedListConfiguration = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListConfiguration />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListConfiguration, ListConfiguration };\nexport type { FormData };\n"],"names":["ListConfiguration","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","model","collectionType","useDoc","isLoading","isLoadingLayout","list","edit","useDocLayout","updateContentTypeConfiguration","useUpdateContentTypeConfigurationMutation","handleSubmit","data","layoutData","layout","meta","Object","entries","metadatas","reduce","acc","name","editMeta","mainField","_mainField","listMeta","label","sortable","find","field","res","layouts","flatMap","panel","map","row","size","settings","setIn","undefined","uid","type","message","id","defaultMessage","error","err","console","initialValues","React","useMemo","SINGLE_TYPES","_jsx","Navigate","to","Page","Loading","_jsxs","Layouts","Root","Title","displayName","Main","Form","onSubmit","method","Header","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","position","Settings","Divider","SortDisplayedFields","ProtectedListConfiguration","permissions","useTypedSelector","state","admin_app","contentManager","collectionTypesConfigurations","Protect"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableCard.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/DraggableCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n Modal,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Cross, Drag, Pencil } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { CardDragPreview } from '../../../components/DragPreviews/CardDragPreview';\nimport { ItemTypes } from '../../../constants/dragAndDrop';\nimport { useDragAndDrop } from '../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../utils/translations';\n\nimport { EditFieldForm } from './EditFieldForm';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\n\ntype DraggableCardProps = Omit<ListFieldLayout, 'label'> & {\n label: string;\n index: number;\n isDraggingSibling: boolean;\n onMoveField: (dragIndex: number, hoverIndex: number) => void;\n onRemoveField: () => void;\n setIsDraggingSibling: (isDragging: boolean) => void;\n};\n\nconst DraggableCard = ({\n attribute,\n index,\n isDraggingSibling,\n label,\n name,\n onMoveField,\n onRemoveField,\n setIsDraggingSibling,\n}: DraggableCardProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const [, forceRerenderAfterDnd] = React.useState(false);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(true, {\n type: ItemTypes.FIELD,\n item: { index, label, name },\n index,\n onMoveItem: onMoveField,\n onEnd: () => setIsDraggingSibling(false),\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n React.useEffect(() => {\n if (isDragging) {\n setIsDraggingSibling(true);\n }\n }, [isDragging, setIsDraggingSibling]);\n\n // Effect in order to force a rerender after reordering the components\n // Since we are removing the Accordion when doing the DnD we are losing the dragRef, therefore the replaced element cannot be dragged\n // anymore, this hack forces a rerender in order to apply the dragRef\n React.useEffect(() => {\n if (!isDraggingSibling) {\n forceRerenderAfterDnd((prev) => !prev);\n }\n }, [isDraggingSibling]);\n\n const composedRefs = useComposedRefs<HTMLButtonElement>(\n dropRef,\n objectRef as React.RefObject<HTMLButtonElement>\n );\n\n return (\n <FieldWrapper ref={composedRefs}>\n {isDragging && <CardDragPreview label={label} />}\n {!isDragging && isDraggingSibling && <CardDragPreview isSibling label={label} />}\n\n {!isDragging && !isDraggingSibling && (\n <FieldContainer\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n justifyContent=\"space-between\"\n onClick={() => setIsModalOpen(true)}\n >\n <Flex gap={3}>\n <DragButton\n ref={dragRef}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: label }\n )}\n onClick={(e) => e.stopPropagation()}\n type=\"button\"\n >\n <Drag />\n </DragButton>\n <Typography fontWeight=\"bold\">{label}</Typography>\n </Flex>\n <Flex paddingLeft={3} onClick={(e) => e.stopPropagation()}>\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Modal.Trigger>\n <ActionButton\n onClick={(e) => {\n e.stopPropagation();\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Pencil width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Modal.Trigger>\n <EditFieldForm\n attribute={attribute}\n name={`layout.${index}`}\n onClose={() => {\n setIsModalOpen(false);\n }}\n />\n </Modal.Root>\n <ActionButton\n onClick={onRemoveField}\n data-testid={`delete-${name}`}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Cross width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Flex>\n </FieldContainer>\n )}\n </FieldWrapper>\n );\n};\n\nconst ActionButton = styled.button`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.spaces[7]};\n color: ${({ theme }) => theme.colors.neutral600};\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &:last-child {\n padding: 0 ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst DragButton = styled(ActionButton)`\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n`;\n\nconst FieldContainer = styled<FlexComponent>(Flex)`\n max-height: 3.2rem;\n cursor: pointer;\n`;\n\nconst FieldWrapper = styled<BoxComponent>(Box)`\n &:last-child {\n padding-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { DraggableCard };\nexport type { DraggableCardProps };\n"],"names":["DraggableCard","attribute","index","isDraggingSibling","label","name","onMoveField","onRemoveField","setIsDraggingSibling","isModalOpen","setIsModalOpen","React","useState","formatMessage","useIntl","forceRerenderAfterDnd","isDragging","objectRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","FIELD","item","onMoveItem","onEnd","useEffect","getEmptyImage","captureDraggingState","prev","composedRefs","useComposedRefs","_jsxs","FieldWrapper","ref","_jsx","CardDragPreview","isSibling","FieldContainer","borderColor","background","hasRadius","justifyContent","onClick","Flex","gap","DragButton","aria-label","id","getTranslation","defaultMessage","e","stopPropagation","Drag","Typography","fontWeight","paddingLeft","Modal","Root","open","onOpenChange","Trigger","ActionButton","Pencil","width","height","EditFieldForm","onClose","data-testid","Cross","styled","button","theme","spaces","colors","neutral600","neutral700","neutral150","Box"],"mappings":"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"}
1
+ {"version":3,"file":"DraggableCard.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/DraggableCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n Modal,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Cross, Drag, Pencil } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { CardDragPreview } from '../../../components/DragPreviews/CardDragPreview';\nimport { ItemTypes } from '../../../constants/dragAndDrop';\nimport { useDragAndDrop } from '../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../utils/translations';\n\nimport { EditFieldForm } from './EditFieldForm';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\n\ntype DraggableCardProps = Omit<ListFieldLayout, 'label'> & {\n label: string;\n index: number;\n isDraggingSibling: boolean;\n onMoveField: (dragIndex: number, hoverIndex: number) => void;\n onRemoveField: () => void;\n setIsDraggingSibling: (isDragging: boolean) => void;\n};\n\nconst DraggableCard = ({\n attribute,\n index,\n isDraggingSibling,\n label,\n name,\n onMoveField,\n onRemoveField,\n setIsDraggingSibling,\n}: DraggableCardProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const [, forceRerenderAfterDnd] = React.useState(false);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(true, {\n type: ItemTypes.FIELD,\n item: { index, label, name },\n index,\n onMoveItem: onMoveField,\n onEnd: () => setIsDraggingSibling(false),\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n React.useEffect(() => {\n if (isDragging) {\n setIsDraggingSibling(true);\n }\n }, [isDragging, setIsDraggingSibling]);\n\n // Effect in order to force a rerender after reordering the components\n // Since we are removing the Accordion when doing the DnD we are losing the dragRef, therefore the replaced element cannot be dragged\n // anymore, this hack forces a rerender in order to apply the dragRef\n React.useEffect(() => {\n if (!isDraggingSibling) {\n forceRerenderAfterDnd((prev) => !prev);\n }\n }, [isDraggingSibling]);\n\n const composedRefs = useComposedRefs<HTMLButtonElement>(\n dropRef,\n objectRef as React.RefObject<HTMLButtonElement>\n );\n\n return (\n <FieldWrapper ref={composedRefs}>\n {isDragging && <CardDragPreview label={label} />}\n {!isDragging && isDraggingSibling && <CardDragPreview isSibling label={label} />}\n\n {!isDragging && !isDraggingSibling && (\n <FieldContainer\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n justifyContent=\"space-between\"\n onClick={() => setIsModalOpen(true)}\n >\n <Flex gap={3}>\n <DragButton\n ref={dragRef}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: label }\n )}\n onClick={(e) => e.stopPropagation()}\n type=\"button\"\n >\n <Drag />\n </DragButton>\n <Typography fontWeight=\"bold\">{label}</Typography>\n </Flex>\n <Flex paddingLeft={3} onClick={(e) => e.stopPropagation()}>\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Modal.Trigger>\n <ActionButton\n onClick={(e) => {\n e.stopPropagation();\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Pencil width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Modal.Trigger>\n <EditFieldForm\n attribute={attribute}\n name={`layout.${index}`}\n onClose={() => {\n setIsModalOpen(false);\n }}\n />\n </Modal.Root>\n <ActionButton\n onClick={onRemoveField}\n data-testid={`delete-${name}`}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Cross width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Flex>\n </FieldContainer>\n )}\n </FieldWrapper>\n );\n};\n\nconst ActionButton = styled.button`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.spaces[7]};\n color: ${({ theme }) => theme.colors.neutral600};\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &:last-child {\n padding: 0 ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst DragButton = styled(ActionButton)`\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n`;\n\nconst FieldContainer = styled<FlexComponent>(Flex)`\n max-height: 3.2rem;\n cursor: pointer;\n`;\n\nconst FieldWrapper = styled<BoxComponent>(Box)`\n &:last-child {\n padding-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { DraggableCard };\nexport type { DraggableCardProps };\n"],"names":["DraggableCard","attribute","index","isDraggingSibling","label","name","onMoveField","onRemoveField","setIsDraggingSibling","isModalOpen","setIsModalOpen","React","useState","formatMessage","useIntl","forceRerenderAfterDnd","isDragging","objectRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","FIELD","item","onMoveItem","onEnd","useEffect","getEmptyImage","captureDraggingState","prev","composedRefs","useComposedRefs","_jsxs","FieldWrapper","ref","_jsx","CardDragPreview","isSibling","FieldContainer","borderColor","background","hasRadius","justifyContent","onClick","Flex","gap","DragButton","aria-label","id","getTranslation","defaultMessage","e","stopPropagation","Drag","Typography","fontWeight","paddingLeft","Modal","Root","open","onOpenChange","Trigger","ActionButton","Pencil","width","height","EditFieldForm","onClose","data-testid","Cross","styled","button","theme","spaces","colors","neutral600","neutral700","neutral150","Box"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,gBAAgB,CAAC,EACrBC,SAAS,EACTC,KAAK,EACLC,iBAAiB,EACjBC,KAAK,EACLC,IAAI,EACJC,WAAW,EACXC,aAAa,EACbC,oBAAoB,EACD,GAAA;AACnB,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,GAAGC,qBAAAA,CAAsB,GAAGJ,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAEjD,MAAM,CAAC,EAAEI,UAAU,EAAE,EAAEC,SAAAA,EAAWC,OAAAA,EAASC,OAAAA,EAASC,cAAAA,CAAe,GAAGC,6BAAAA,CAAe,IAAA,EAAM;AACzFC,QAAAA,IAAAA,EAAMC,sBAAUC,KAAK;QACrBC,IAAAA,EAAM;AAAEvB,YAAAA,KAAAA;AAAOE,YAAAA,KAAAA;AAAOC,YAAAA;AAAK,SAAA;AAC3BH,QAAAA,KAAAA;QACAwB,UAAAA,EAAYpB,WAAAA;AACZqB,QAAAA,KAAAA,EAAO,IAAMnB,oBAAAA,CAAqB,KAAA;AACpC,KAAA,CAAA;AAEAG,IAAAA,gBAAAA,CAAMiB,SAAS,CAAC,IAAA;AACdR,QAAAA,cAAAA,CAAeS,kCAAAA,EAAAA,EAAiB;YAAEC,oBAAAA,EAAsB;AAAM,SAAA,CAAA;IAChE,CAAA,EAAG;AAACV,QAAAA;AAAe,KAAA,CAAA;AAEnBT,IAAAA,gBAAAA,CAAMiB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIZ,UAAAA,EAAY;YACdR,oBAAAA,CAAqB,IAAA,CAAA;AACvB,QAAA;IACF,CAAA,EAAG;AAACQ,QAAAA,UAAAA;AAAYR,QAAAA;AAAqB,KAAA,CAAA;;;;AAKrCG,IAAAA,gBAAAA,CAAMiB,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACzB,iBAAAA,EAAmB;YACtBY,qBAAAA,CAAsB,CAACgB,OAAS,CAACA,IAAAA,CAAAA;AACnC,QAAA;IACF,CAAA,EAAG;AAAC5B,QAAAA;AAAkB,KAAA,CAAA;IAEtB,MAAM6B,YAAAA,GAAeC,6BACnBf,OAAAA,EACAD,SAAAA,CAAAA;AAGF,IAAA,qBACEiB,eAAA,CAACC,YAAAA,EAAAA;QAAaC,GAAAA,EAAKJ,YAAAA;;AAChBhB,YAAAA,UAAAA,kBAAcqB,cAAA,CAACC,+BAAAA,EAAAA;gBAAgBlC,KAAAA,EAAOA;;YACtC,CAACY,UAAAA,IAAcb,mCAAqBkC,cAAA,CAACC,+BAAAA,EAAAA;gBAAgBC,SAAS,EAAA,IAAA;gBAACnC,KAAAA,EAAOA;;YAEtE,CAACY,UAAAA,IAAc,CAACb,iBAAAA,kBACf+B,eAAA,CAACM,cAAAA,EAAAA;gBACCC,WAAAA,EAAY,YAAA;gBACZC,UAAAA,EAAW,YAAA;gBACXC,SAAS,EAAA,IAAA;gBACTC,cAAAA,EAAe,eAAA;AACfC,gBAAAA,OAAAA,EAAS,IAAMnC,cAAAA,CAAe,IAAA,CAAA;;kCAE9BwB,eAAA,CAACY,iBAAAA,EAAAA;wBAAKC,GAAAA,EAAK,CAAA;;0CACTV,cAAA,CAACW,UAAAA,EAAAA;gCACCZ,GAAAA,EAAKjB,OAAAA;AACL8B,gCAAAA,YAAAA,EAAYpC,aAAAA,CACV;AACEqC,oCAAAA,EAAAA,EAAIC,2BAAAA,CAAe,qCAAA,CAAA;oCACnBC,cAAAA,EAAgB;iCAClB,EACA;oCAAE3B,IAAAA,EAAMrB;AAAM,iCAAA,CAAA;gCAEhByC,OAAAA,EAAS,CAACQ,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;gCACjChC,IAAAA,EAAK,QAAA;AAEL,gCAAA,QAAA,gBAAAe,cAAA,CAACkB,UAAAA,EAAAA,EAAAA;;0CAEHlB,cAAA,CAACmB,uBAAAA,EAAAA;gCAAWC,UAAAA,EAAW,MAAA;AAAQrD,gCAAAA,QAAAA,EAAAA;;;;kCAEjC8B,eAAA,CAACY,iBAAAA,EAAAA;wBAAKY,WAAAA,EAAa,CAAA;wBAAGb,OAAAA,EAAS,CAACQ,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;;AACrD,0CAAApB,eAAA,CAACyB,mBAAMC,IAAI,EAAA;gCAACC,IAAAA,EAAMpD,WAAAA;gCAAaqD,YAAAA,EAAcpD,cAAAA;;AAC3C,kDAAA2B,cAAA,CAACsB,mBAAMI,OAAO,EAAA;AACZ,wCAAA,QAAA,gBAAA1B,cAAA,CAAC2B,YAAAA,EAAAA;AACCnB,4CAAAA,OAAAA,EAAS,CAACQ,CAAAA,GAAAA;AACRA,gDAAAA,CAAAA,CAAEC,eAAe,EAAA;AACnB,4CAAA,CAAA;AACAL,4CAAAA,YAAAA,EAAYpC,aAAAA,CACV;AACEqC,gDAAAA,EAAAA,EAAIC,2BAAAA,CAAe,qCAAA,CAAA;gDACnBC,cAAAA,EAAgB;6CAClB,EACA;gDAAE3B,IAAAA,EAAMrB;AAAM,6CAAA,CAAA;4CAEhBkB,IAAAA,EAAK,QAAA;AAEL,4CAAA,QAAA,gBAAAe,cAAA,CAAC4B,YAAAA,EAAAA;gDAAOC,KAAAA,EAAM,QAAA;gDAASC,MAAAA,EAAO;;;;kDAGlC9B,cAAA,CAAC+B,2BAAAA,EAAAA;wCACCnE,SAAAA,EAAWA,SAAAA;wCACXI,IAAAA,EAAM,CAAC,OAAO,EAAEH,KAAAA,CAAAA,CAAO;wCACvBmE,OAAAA,EAAS,IAAA;4CACP3D,cAAAA,CAAe,KAAA,CAAA;AACjB,wCAAA;;;;0CAGJ2B,cAAA,CAAC2B,YAAAA,EAAAA;gCACCnB,OAAAA,EAAStC,aAAAA;gCACT+D,aAAAA,EAAa,CAAC,OAAO,EAAEjE,IAAAA,CAAAA,CAAM;AAC7B4C,gCAAAA,YAAAA,EAAYpC,aAAAA,CACV;AACEqC,oCAAAA,EAAAA,EAAIC,2BAAAA,CAAe,uCAAA,CAAA;oCACnBC,cAAAA,EAAgB;iCAClB,EACA;oCAAE3B,IAAAA,EAAMrB;AAAM,iCAAA,CAAA;gCAEhBkB,IAAAA,EAAK,QAAA;AAEL,gCAAA,QAAA,gBAAAe,cAAA,CAACkC,WAAAA,EAAAA;oCAAML,KAAAA,EAAM,QAAA;oCAASC,MAAAA,EAAO;;;;;;;;;AAO3C;AAEA,MAAMH,YAAAA,GAAeQ,uBAAAA,CAAOC,MAAM;;;UAGxB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;SAClC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACC,UAAU,CAAC;;;WAGvC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACE,UAAU,CAAC;;;;eAIrC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;AAEhD,CAAC;AAED,MAAM3B,UAAAA,GAAawB,uBAAAA,CAAOR,YAAAA,CAAa;aAC1B,EAAE,CAAC,EAAEU,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;0BACpB,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACG,UAAU,CAAC;;AAEnE,CAAC;AAED,MAAMvC,cAAAA,GAAiBgC,uBAAAA,CAAsB1B,iBAAAA,CAAK;;;AAGlD,CAAC;AAED,MAAMX,YAAAA,GAAeqC,uBAAAA,CAAqBQ,gBAAAA,CAAI;;mBAE3B,EAAE,CAAC,EAAEN,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;AAEpD,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Flex, Box, useComposedRefs, Typography, Modal } from '@strapi/design-system';
3
+ import { useComposedRefs, Flex, Typography, Modal, Box } from '@strapi/design-system';
4
4
  import { Drag, Pencil, Cross } from '@strapi/icons';
5
5
  import { getEmptyImage } from 'react-dnd-html5-backend';
6
6
  import { useIntl } from 'react-intl';
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableCard.mjs","sources":["../../../../../admin/src/pages/ListConfiguration/components/DraggableCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n Modal,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Cross, Drag, Pencil } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { CardDragPreview } from '../../../components/DragPreviews/CardDragPreview';\nimport { ItemTypes } from '../../../constants/dragAndDrop';\nimport { useDragAndDrop } from '../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../utils/translations';\n\nimport { EditFieldForm } from './EditFieldForm';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\n\ntype DraggableCardProps = Omit<ListFieldLayout, 'label'> & {\n label: string;\n index: number;\n isDraggingSibling: boolean;\n onMoveField: (dragIndex: number, hoverIndex: number) => void;\n onRemoveField: () => void;\n setIsDraggingSibling: (isDragging: boolean) => void;\n};\n\nconst DraggableCard = ({\n attribute,\n index,\n isDraggingSibling,\n label,\n name,\n onMoveField,\n onRemoveField,\n setIsDraggingSibling,\n}: DraggableCardProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const [, forceRerenderAfterDnd] = React.useState(false);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(true, {\n type: ItemTypes.FIELD,\n item: { index, label, name },\n index,\n onMoveItem: onMoveField,\n onEnd: () => setIsDraggingSibling(false),\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n React.useEffect(() => {\n if (isDragging) {\n setIsDraggingSibling(true);\n }\n }, [isDragging, setIsDraggingSibling]);\n\n // Effect in order to force a rerender after reordering the components\n // Since we are removing the Accordion when doing the DnD we are losing the dragRef, therefore the replaced element cannot be dragged\n // anymore, this hack forces a rerender in order to apply the dragRef\n React.useEffect(() => {\n if (!isDraggingSibling) {\n forceRerenderAfterDnd((prev) => !prev);\n }\n }, [isDraggingSibling]);\n\n const composedRefs = useComposedRefs<HTMLButtonElement>(\n dropRef,\n objectRef as React.RefObject<HTMLButtonElement>\n );\n\n return (\n <FieldWrapper ref={composedRefs}>\n {isDragging && <CardDragPreview label={label} />}\n {!isDragging && isDraggingSibling && <CardDragPreview isSibling label={label} />}\n\n {!isDragging && !isDraggingSibling && (\n <FieldContainer\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n justifyContent=\"space-between\"\n onClick={() => setIsModalOpen(true)}\n >\n <Flex gap={3}>\n <DragButton\n ref={dragRef}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: label }\n )}\n onClick={(e) => e.stopPropagation()}\n type=\"button\"\n >\n <Drag />\n </DragButton>\n <Typography fontWeight=\"bold\">{label}</Typography>\n </Flex>\n <Flex paddingLeft={3} onClick={(e) => e.stopPropagation()}>\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Modal.Trigger>\n <ActionButton\n onClick={(e) => {\n e.stopPropagation();\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Pencil width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Modal.Trigger>\n <EditFieldForm\n attribute={attribute}\n name={`layout.${index}`}\n onClose={() => {\n setIsModalOpen(false);\n }}\n />\n </Modal.Root>\n <ActionButton\n onClick={onRemoveField}\n data-testid={`delete-${name}`}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Cross width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Flex>\n </FieldContainer>\n )}\n </FieldWrapper>\n );\n};\n\nconst ActionButton = styled.button`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.spaces[7]};\n color: ${({ theme }) => theme.colors.neutral600};\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &:last-child {\n padding: 0 ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst DragButton = styled(ActionButton)`\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n`;\n\nconst FieldContainer = styled<FlexComponent>(Flex)`\n max-height: 3.2rem;\n cursor: pointer;\n`;\n\nconst FieldWrapper = styled<BoxComponent>(Box)`\n &:last-child {\n padding-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { DraggableCard };\nexport type { DraggableCardProps };\n"],"names":["DraggableCard","attribute","index","isDraggingSibling","label","name","onMoveField","onRemoveField","setIsDraggingSibling","isModalOpen","setIsModalOpen","React","useState","formatMessage","useIntl","forceRerenderAfterDnd","isDragging","objectRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","FIELD","item","onMoveItem","onEnd","useEffect","getEmptyImage","captureDraggingState","prev","composedRefs","useComposedRefs","_jsxs","FieldWrapper","ref","_jsx","CardDragPreview","isSibling","FieldContainer","borderColor","background","hasRadius","justifyContent","onClick","Flex","gap","DragButton","aria-label","id","getTranslation","defaultMessage","e","stopPropagation","Drag","Typography","fontWeight","paddingLeft","Modal","Root","open","onOpenChange","Trigger","ActionButton","Pencil","width","height","EditFieldForm","onClose","data-testid","Cross","styled","button","theme","spaces","colors","neutral600","neutral700","neutral150","Box"],"mappings":"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"}
1
+ {"version":3,"file":"DraggableCard.mjs","sources":["../../../../../admin/src/pages/ListConfiguration/components/DraggableCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n Modal,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Cross, Drag, Pencil } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { CardDragPreview } from '../../../components/DragPreviews/CardDragPreview';\nimport { ItemTypes } from '../../../constants/dragAndDrop';\nimport { useDragAndDrop } from '../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../utils/translations';\n\nimport { EditFieldForm } from './EditFieldForm';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\n\ntype DraggableCardProps = Omit<ListFieldLayout, 'label'> & {\n label: string;\n index: number;\n isDraggingSibling: boolean;\n onMoveField: (dragIndex: number, hoverIndex: number) => void;\n onRemoveField: () => void;\n setIsDraggingSibling: (isDragging: boolean) => void;\n};\n\nconst DraggableCard = ({\n attribute,\n index,\n isDraggingSibling,\n label,\n name,\n onMoveField,\n onRemoveField,\n setIsDraggingSibling,\n}: DraggableCardProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const [, forceRerenderAfterDnd] = React.useState(false);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(true, {\n type: ItemTypes.FIELD,\n item: { index, label, name },\n index,\n onMoveItem: onMoveField,\n onEnd: () => setIsDraggingSibling(false),\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n React.useEffect(() => {\n if (isDragging) {\n setIsDraggingSibling(true);\n }\n }, [isDragging, setIsDraggingSibling]);\n\n // Effect in order to force a rerender after reordering the components\n // Since we are removing the Accordion when doing the DnD we are losing the dragRef, therefore the replaced element cannot be dragged\n // anymore, this hack forces a rerender in order to apply the dragRef\n React.useEffect(() => {\n if (!isDraggingSibling) {\n forceRerenderAfterDnd((prev) => !prev);\n }\n }, [isDraggingSibling]);\n\n const composedRefs = useComposedRefs<HTMLButtonElement>(\n dropRef,\n objectRef as React.RefObject<HTMLButtonElement>\n );\n\n return (\n <FieldWrapper ref={composedRefs}>\n {isDragging && <CardDragPreview label={label} />}\n {!isDragging && isDraggingSibling && <CardDragPreview isSibling label={label} />}\n\n {!isDragging && !isDraggingSibling && (\n <FieldContainer\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n justifyContent=\"space-between\"\n onClick={() => setIsModalOpen(true)}\n >\n <Flex gap={3}>\n <DragButton\n ref={dragRef}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: label }\n )}\n onClick={(e) => e.stopPropagation()}\n type=\"button\"\n >\n <Drag />\n </DragButton>\n <Typography fontWeight=\"bold\">{label}</Typography>\n </Flex>\n <Flex paddingLeft={3} onClick={(e) => e.stopPropagation()}>\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Modal.Trigger>\n <ActionButton\n onClick={(e) => {\n e.stopPropagation();\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Pencil width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Modal.Trigger>\n <EditFieldForm\n attribute={attribute}\n name={`layout.${index}`}\n onClose={() => {\n setIsModalOpen(false);\n }}\n />\n </Modal.Root>\n <ActionButton\n onClick={onRemoveField}\n data-testid={`delete-${name}`}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: label }\n )}\n type=\"button\"\n >\n <Cross width=\"1.2rem\" height=\"1.2rem\" />\n </ActionButton>\n </Flex>\n </FieldContainer>\n )}\n </FieldWrapper>\n );\n};\n\nconst ActionButton = styled.button`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.spaces[7]};\n color: ${({ theme }) => theme.colors.neutral600};\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &:last-child {\n padding: 0 ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst DragButton = styled(ActionButton)`\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n`;\n\nconst FieldContainer = styled<FlexComponent>(Flex)`\n max-height: 3.2rem;\n cursor: pointer;\n`;\n\nconst FieldWrapper = styled<BoxComponent>(Box)`\n &:last-child {\n padding-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { DraggableCard };\nexport type { DraggableCardProps };\n"],"names":["DraggableCard","attribute","index","isDraggingSibling","label","name","onMoveField","onRemoveField","setIsDraggingSibling","isModalOpen","setIsModalOpen","React","useState","formatMessage","useIntl","forceRerenderAfterDnd","isDragging","objectRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","FIELD","item","onMoveItem","onEnd","useEffect","getEmptyImage","captureDraggingState","prev","composedRefs","useComposedRefs","_jsxs","FieldWrapper","ref","_jsx","CardDragPreview","isSibling","FieldContainer","borderColor","background","hasRadius","justifyContent","onClick","Flex","gap","DragButton","aria-label","id","getTranslation","defaultMessage","e","stopPropagation","Drag","Typography","fontWeight","paddingLeft","Modal","Root","open","onOpenChange","Trigger","ActionButton","Pencil","width","height","EditFieldForm","onClose","data-testid","Cross","styled","button","theme","spaces","colors","neutral600","neutral700","neutral150","Box"],"mappings":";;;;;;;;;;;;;AAkCA,MAAMA,gBAAgB,CAAC,EACrBC,SAAS,EACTC,KAAK,EACLC,iBAAiB,EACjBC,KAAK,EACLC,IAAI,EACJC,WAAW,EACXC,aAAa,EACbC,oBAAoB,EACD,GAAA;AACnB,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,GAAGC,qBAAAA,CAAsB,GAAGJ,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAEjD,MAAM,CAAC,EAAEI,UAAU,EAAE,EAAEC,SAAAA,EAAWC,OAAAA,EAASC,OAAAA,EAASC,cAAAA,CAAe,GAAGC,cAAAA,CAAe,IAAA,EAAM;AACzFC,QAAAA,IAAAA,EAAMC,UAAUC,KAAK;QACrBC,IAAAA,EAAM;AAAEvB,YAAAA,KAAAA;AAAOE,YAAAA,KAAAA;AAAOC,YAAAA;AAAK,SAAA;AAC3BH,QAAAA,KAAAA;QACAwB,UAAAA,EAAYpB,WAAAA;AACZqB,QAAAA,KAAAA,EAAO,IAAMnB,oBAAAA,CAAqB,KAAA;AACpC,KAAA,CAAA;AAEAG,IAAAA,KAAAA,CAAMiB,SAAS,CAAC,IAAA;AACdR,QAAAA,cAAAA,CAAeS,aAAAA,EAAAA,EAAiB;YAAEC,oBAAAA,EAAsB;AAAM,SAAA,CAAA;IAChE,CAAA,EAAG;AAACV,QAAAA;AAAe,KAAA,CAAA;AAEnBT,IAAAA,KAAAA,CAAMiB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIZ,UAAAA,EAAY;YACdR,oBAAAA,CAAqB,IAAA,CAAA;AACvB,QAAA;IACF,CAAA,EAAG;AAACQ,QAAAA,UAAAA;AAAYR,QAAAA;AAAqB,KAAA,CAAA;;;;AAKrCG,IAAAA,KAAAA,CAAMiB,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACzB,iBAAAA,EAAmB;YACtBY,qBAAAA,CAAsB,CAACgB,OAAS,CAACA,IAAAA,CAAAA;AACnC,QAAA;IACF,CAAA,EAAG;AAAC5B,QAAAA;AAAkB,KAAA,CAAA;IAEtB,MAAM6B,YAAAA,GAAeC,gBACnBf,OAAAA,EACAD,SAAAA,CAAAA;AAGF,IAAA,qBACEiB,IAAA,CAACC,YAAAA,EAAAA;QAAaC,GAAAA,EAAKJ,YAAAA;;AAChBhB,YAAAA,UAAAA,kBAAcqB,GAAA,CAACC,eAAAA,EAAAA;gBAAgBlC,KAAAA,EAAOA;;YACtC,CAACY,UAAAA,IAAcb,mCAAqBkC,GAAA,CAACC,eAAAA,EAAAA;gBAAgBC,SAAS,EAAA,IAAA;gBAACnC,KAAAA,EAAOA;;YAEtE,CAACY,UAAAA,IAAc,CAACb,iBAAAA,kBACf+B,IAAA,CAACM,cAAAA,EAAAA;gBACCC,WAAAA,EAAY,YAAA;gBACZC,UAAAA,EAAW,YAAA;gBACXC,SAAS,EAAA,IAAA;gBACTC,cAAAA,EAAe,eAAA;AACfC,gBAAAA,OAAAA,EAAS,IAAMnC,cAAAA,CAAe,IAAA,CAAA;;kCAE9BwB,IAAA,CAACY,IAAAA,EAAAA;wBAAKC,GAAAA,EAAK,CAAA;;0CACTV,GAAA,CAACW,UAAAA,EAAAA;gCACCZ,GAAAA,EAAKjB,OAAAA;AACL8B,gCAAAA,YAAAA,EAAYpC,aAAAA,CACV;AACEqC,oCAAAA,EAAAA,EAAIC,cAAAA,CAAe,qCAAA,CAAA;oCACnBC,cAAAA,EAAgB;iCAClB,EACA;oCAAE3B,IAAAA,EAAMrB;AAAM,iCAAA,CAAA;gCAEhByC,OAAAA,EAAS,CAACQ,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;gCACjChC,IAAAA,EAAK,QAAA;AAEL,gCAAA,QAAA,gBAAAe,GAAA,CAACkB,IAAAA,EAAAA,EAAAA;;0CAEHlB,GAAA,CAACmB,UAAAA,EAAAA;gCAAWC,UAAAA,EAAW,MAAA;AAAQrD,gCAAAA,QAAAA,EAAAA;;;;kCAEjC8B,IAAA,CAACY,IAAAA,EAAAA;wBAAKY,WAAAA,EAAa,CAAA;wBAAGb,OAAAA,EAAS,CAACQ,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;;AACrD,0CAAApB,IAAA,CAACyB,MAAMC,IAAI,EAAA;gCAACC,IAAAA,EAAMpD,WAAAA;gCAAaqD,YAAAA,EAAcpD,cAAAA;;AAC3C,kDAAA2B,GAAA,CAACsB,MAAMI,OAAO,EAAA;AACZ,wCAAA,QAAA,gBAAA1B,GAAA,CAAC2B,YAAAA,EAAAA;AACCnB,4CAAAA,OAAAA,EAAS,CAACQ,CAAAA,GAAAA;AACRA,gDAAAA,CAAAA,CAAEC,eAAe,EAAA;AACnB,4CAAA,CAAA;AACAL,4CAAAA,YAAAA,EAAYpC,aAAAA,CACV;AACEqC,gDAAAA,EAAAA,EAAIC,cAAAA,CAAe,qCAAA,CAAA;gDACnBC,cAAAA,EAAgB;6CAClB,EACA;gDAAE3B,IAAAA,EAAMrB;AAAM,6CAAA,CAAA;4CAEhBkB,IAAAA,EAAK,QAAA;AAEL,4CAAA,QAAA,gBAAAe,GAAA,CAAC4B,MAAAA,EAAAA;gDAAOC,KAAAA,EAAM,QAAA;gDAASC,MAAAA,EAAO;;;;kDAGlC9B,GAAA,CAAC+B,aAAAA,EAAAA;wCACCnE,SAAAA,EAAWA,SAAAA;wCACXI,IAAAA,EAAM,CAAC,OAAO,EAAEH,KAAAA,CAAAA,CAAO;wCACvBmE,OAAAA,EAAS,IAAA;4CACP3D,cAAAA,CAAe,KAAA,CAAA;AACjB,wCAAA;;;;0CAGJ2B,GAAA,CAAC2B,YAAAA,EAAAA;gCACCnB,OAAAA,EAAStC,aAAAA;gCACT+D,aAAAA,EAAa,CAAC,OAAO,EAAEjE,IAAAA,CAAAA,CAAM;AAC7B4C,gCAAAA,YAAAA,EAAYpC,aAAAA,CACV;AACEqC,oCAAAA,EAAAA,EAAIC,cAAAA,CAAe,uCAAA,CAAA;oCACnBC,cAAAA,EAAgB;iCAClB,EACA;oCAAE3B,IAAAA,EAAMrB;AAAM,iCAAA,CAAA;gCAEhBkB,IAAAA,EAAK,QAAA;AAEL,gCAAA,QAAA,gBAAAe,GAAA,CAACkC,KAAAA,EAAAA;oCAAML,KAAAA,EAAM,QAAA;oCAASC,MAAAA,EAAO;;;;;;;;;AAO3C;AAEA,MAAMH,YAAAA,GAAeQ,MAAAA,CAAOC,MAAM;;;UAGxB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;SAClC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACC,UAAU,CAAC;;;WAGvC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACE,UAAU,CAAC;;;;eAIrC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;AAEhD,CAAC;AAED,MAAM3B,UAAAA,GAAawB,MAAAA,CAAOR,YAAAA,CAAa;aAC1B,EAAE,CAAC,EAAEU,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;0BACpB,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAME,MAAM,CAACG,UAAU,CAAC;;AAEnE,CAAC;AAED,MAAMvC,cAAAA,GAAiBgC,MAAAA,CAAsB1B,IAAAA,CAAK;;;AAGlD,CAAC;AAED,MAAMX,YAAAA,GAAeqC,MAAAA,CAAqBQ,GAAAA,CAAI;;mBAE3B,EAAE,CAAC,EAAEN,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;AAEpD,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditFieldForm.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/EditFieldForm.tsx"],"sourcesContent":["import { Form, useField, InputRenderer, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, FlexComponent, Grid, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { FieldTypeIcon } from '../../../components/FieldTypeIcon';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { FormData } from '../ListConfigurationPage';\n\ninterface EditFieldFormProps extends Pick<ListFieldLayout, 'attribute'> {\n name: string;\n onClose: () => void;\n}\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n sortable: yup.boolean(),\n});\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } = useField<FormData['layout'][number]>(name);\n\n if (!value) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.list-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n let shouldDisplaySortToggle = !['media', 'relation'].includes(attribute.type);\n\n if ('relation' in attribute && ['oneWay', 'oneToOne', 'manyToOne'].includes(attribute.relation)) {\n shouldDisplaySortToggle = true;\n }\n\n return (\n <Modal.Content>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <Modal.Header>\n <HeaderContainer>\n {/* @ts-expect-error attribute.type === custom does not work here */}\n <FieldTypeIcon type={attribute.type} />\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('containers.list-settings.modal-form.label'),\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.label) }\n )}\n </Modal.Title>\n </HeaderContainer>\n </Modal.Header>\n <Modal.Body>\n <Grid.Root gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('form.Input.label'),\n defaultMessage: 'Label',\n }),\n hint: formatMessage({\n id: getTranslation('form.Input.label.inputDescription'),\n defaultMessage: \"This value overrides the label displayed in the table's head\",\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: getTranslation('form.Input.sort.field'),\n defaultMessage: 'Enable sort on this field',\n }),\n name: 'sortable',\n size: 6,\n type: 'boolean' as const,\n },\n ]\n .filter(\n (field) =>\n field.name !== 'sortable' ||\n (field.name === 'sortable' && shouldDisplaySortToggle)\n )\n .map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\nconst HeaderContainer = styled<FlexComponent>(Flex)`\n svg {\n width: 3.2rem;\n margin-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n"],"names":["FIELD_SCHEMA","yup","object","shape","label","string","required","sortable","boolean","EditFieldForm","attribute","name","onClose","formatMessage","useIntl","toggleNotification","useNotification","value","onChange","useField","console","error","message","id","defaultMessage","type","shouldDisplaySortToggle","includes","relation","_jsx","Modal","Content","_jsxs","Form","method","initialValues","validationSchema","onSubmit","data","Header","HeaderContainer","FieldTypeIcon","Title","getTranslation","fieldName","capitalise","Body","Grid","Root","gap","hint","size","filter","field","map","Item","xs","col","direction","alignItems","InputRenderer","Footer","Button","onClick","variant","styled","Flex","theme","spaces"],"mappings":"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"}
1
+ {"version":3,"file":"EditFieldForm.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/EditFieldForm.tsx"],"sourcesContent":["import { Form, useField, InputRenderer, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, FlexComponent, Grid, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { FieldTypeIcon } from '../../../components/FieldTypeIcon';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { FormData } from '../ListConfigurationPage';\n\ninterface EditFieldFormProps extends Pick<ListFieldLayout, 'attribute'> {\n name: string;\n onClose: () => void;\n}\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n sortable: yup.boolean(),\n});\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } = useField<FormData['layout'][number]>(name);\n\n if (!value) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.list-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n let shouldDisplaySortToggle = !['media', 'relation'].includes(attribute.type);\n\n if ('relation' in attribute && ['oneWay', 'oneToOne', 'manyToOne'].includes(attribute.relation)) {\n shouldDisplaySortToggle = true;\n }\n\n return (\n <Modal.Content>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <Modal.Header>\n <HeaderContainer>\n {/* @ts-expect-error attribute.type === custom does not work here */}\n <FieldTypeIcon type={attribute.type} />\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('containers.list-settings.modal-form.label'),\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.label) }\n )}\n </Modal.Title>\n </HeaderContainer>\n </Modal.Header>\n <Modal.Body>\n <Grid.Root gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('form.Input.label'),\n defaultMessage: 'Label',\n }),\n hint: formatMessage({\n id: getTranslation('form.Input.label.inputDescription'),\n defaultMessage: \"This value overrides the label displayed in the table's head\",\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: getTranslation('form.Input.sort.field'),\n defaultMessage: 'Enable sort on this field',\n }),\n name: 'sortable',\n size: 6,\n type: 'boolean' as const,\n },\n ]\n .filter(\n (field) =>\n field.name !== 'sortable' ||\n (field.name === 'sortable' && shouldDisplaySortToggle)\n )\n .map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\nconst HeaderContainer = styled<FlexComponent>(Flex)`\n svg {\n width: 3.2rem;\n margin-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n"],"names":["FIELD_SCHEMA","yup","object","shape","label","string","required","sortable","boolean","EditFieldForm","attribute","name","onClose","formatMessage","useIntl","toggleNotification","useNotification","value","onChange","useField","console","error","message","id","defaultMessage","type","shouldDisplaySortToggle","includes","relation","_jsx","Modal","Content","_jsxs","Form","method","initialValues","validationSchema","onSubmit","data","Header","HeaderContainer","FieldTypeIcon","Title","getTranslation","fieldName","capitalise","Body","Grid","Root","gap","hint","size","filter","field","map","Item","xs","col","direction","alignItems","InputRenderer","Footer","Button","onClick","variant","styled","Flex","theme","spaces"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useNotification, useField, Form, InputRenderer } from '@strapi/admin/strapi-admin';
3
- import { Flex, Modal, Grid, Button } from '@strapi/design-system';
3
+ import { Modal, Grid, Button, Flex } from '@strapi/design-system';
4
4
  import { useIntl } from 'react-intl';
5
5
  import { styled } from 'styled-components';
6
6
  import * as yup from 'yup';
@@ -1 +1 @@
1
- {"version":3,"file":"EditFieldForm.mjs","sources":["../../../../../admin/src/pages/ListConfiguration/components/EditFieldForm.tsx"],"sourcesContent":["import { Form, useField, InputRenderer, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, FlexComponent, Grid, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { FieldTypeIcon } from '../../../components/FieldTypeIcon';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { FormData } from '../ListConfigurationPage';\n\ninterface EditFieldFormProps extends Pick<ListFieldLayout, 'attribute'> {\n name: string;\n onClose: () => void;\n}\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n sortable: yup.boolean(),\n});\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } = useField<FormData['layout'][number]>(name);\n\n if (!value) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.list-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n let shouldDisplaySortToggle = !['media', 'relation'].includes(attribute.type);\n\n if ('relation' in attribute && ['oneWay', 'oneToOne', 'manyToOne'].includes(attribute.relation)) {\n shouldDisplaySortToggle = true;\n }\n\n return (\n <Modal.Content>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <Modal.Header>\n <HeaderContainer>\n {/* @ts-expect-error attribute.type === custom does not work here */}\n <FieldTypeIcon type={attribute.type} />\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('containers.list-settings.modal-form.label'),\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.label) }\n )}\n </Modal.Title>\n </HeaderContainer>\n </Modal.Header>\n <Modal.Body>\n <Grid.Root gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('form.Input.label'),\n defaultMessage: 'Label',\n }),\n hint: formatMessage({\n id: getTranslation('form.Input.label.inputDescription'),\n defaultMessage: \"This value overrides the label displayed in the table's head\",\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: getTranslation('form.Input.sort.field'),\n defaultMessage: 'Enable sort on this field',\n }),\n name: 'sortable',\n size: 6,\n type: 'boolean' as const,\n },\n ]\n .filter(\n (field) =>\n field.name !== 'sortable' ||\n (field.name === 'sortable' && shouldDisplaySortToggle)\n )\n .map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\nconst HeaderContainer = styled<FlexComponent>(Flex)`\n svg {\n width: 3.2rem;\n margin-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n"],"names":["FIELD_SCHEMA","yup","object","shape","label","string","required","sortable","boolean","EditFieldForm","attribute","name","onClose","formatMessage","useIntl","toggleNotification","useNotification","value","onChange","useField","console","error","message","id","defaultMessage","type","shouldDisplaySortToggle","includes","relation","_jsx","Modal","Content","_jsxs","Form","method","initialValues","validationSchema","onSubmit","data","Header","HeaderContainer","FieldTypeIcon","Title","getTranslation","fieldName","capitalise","Body","Grid","Root","gap","hint","size","filter","field","map","Item","xs","col","direction","alignItems","InputRenderer","Footer","Button","onClick","variant","styled","Flex","theme","spaces"],"mappings":"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"}
1
+ {"version":3,"file":"EditFieldForm.mjs","sources":["../../../../../admin/src/pages/ListConfiguration/components/EditFieldForm.tsx"],"sourcesContent":["import { Form, useField, InputRenderer, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, FlexComponent, Grid, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { FieldTypeIcon } from '../../../components/FieldTypeIcon';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { ListFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { FormData } from '../ListConfigurationPage';\n\ninterface EditFieldFormProps extends Pick<ListFieldLayout, 'attribute'> {\n name: string;\n onClose: () => void;\n}\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n sortable: yup.boolean(),\n});\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } = useField<FormData['layout'][number]>(name);\n\n if (!value) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.list-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n let shouldDisplaySortToggle = !['media', 'relation'].includes(attribute.type);\n\n if ('relation' in attribute && ['oneWay', 'oneToOne', 'manyToOne'].includes(attribute.relation)) {\n shouldDisplaySortToggle = true;\n }\n\n return (\n <Modal.Content>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <Modal.Header>\n <HeaderContainer>\n {/* @ts-expect-error attribute.type === custom does not work here */}\n <FieldTypeIcon type={attribute.type} />\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('containers.list-settings.modal-form.label'),\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.label) }\n )}\n </Modal.Title>\n </HeaderContainer>\n </Modal.Header>\n <Modal.Body>\n <Grid.Root gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('form.Input.label'),\n defaultMessage: 'Label',\n }),\n hint: formatMessage({\n id: getTranslation('form.Input.label.inputDescription'),\n defaultMessage: \"This value overrides the label displayed in the table's head\",\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: getTranslation('form.Input.sort.field'),\n defaultMessage: 'Enable sort on this field',\n }),\n name: 'sortable',\n size: 6,\n type: 'boolean' as const,\n },\n ]\n .filter(\n (field) =>\n field.name !== 'sortable' ||\n (field.name === 'sortable' && shouldDisplaySortToggle)\n )\n .map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\nconst HeaderContainer = styled<FlexComponent>(Flex)`\n svg {\n width: 3.2rem;\n margin-right: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n"],"names":["FIELD_SCHEMA","yup","object","shape","label","string","required","sortable","boolean","EditFieldForm","attribute","name","onClose","formatMessage","useIntl","toggleNotification","useNotification","value","onChange","useField","console","error","message","id","defaultMessage","type","shouldDisplaySortToggle","includes","relation","_jsx","Modal","Content","_jsxs","Form","method","initialValues","validationSchema","onSubmit","data","Header","HeaderContainer","FieldTypeIcon","Title","getTranslation","fieldName","capitalise","Body","Grid","Root","gap","hint","size","filter","field","map","Item","xs","col","direction","alignItems","InputRenderer","Footer","Button","onClick","variant","styled","Flex","theme","spaces"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/Header.tsx"],"sourcesContent":["import { useForm, BackButton, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../../constants/collections';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\ninterface HeaderProps {\n collectionType: string;\n name: string;\n model: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const params = useParams<{ slug: string }>();\n\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n navigationAction={<BackButton fallback={`../${COLLECTION_TYPES}/${params.slug}`} />}\n primaryAction={\n <Button size=\"S\" disabled={!modified} type=\"submit\" loading={isSubmitting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.list-settings'),\n defaultMessage: 'Define the settings of the list view.',\n })}\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: 'Configure the view - {name}',\n },\n { name: capitalise(name) }\n )}\n />\n );\n};\n\nexport { Header };\nexport type { HeaderProps };\n"],"names":["Header","name","formatMessage","useIntl","params","useParams","modified","useForm","state","isSubmitting","_jsx","Layouts","navigationAction","BackButton","fallback","COLLECTION_TYPES","slug","primaryAction","Button","size","disabled","type","loading","id","defaultMessage","subtitle","getTranslation","title","capitalise"],"mappings":";;;;;;;;;;;AAeA,MAAMA,MAAS,GAAA,CAAC,EAAEC,IAAI,EAAe,GAAA;IACnC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,MAASC,GAAAA,wBAAAA,EAAAA;AAEf,IAAA,MAAMC,WAAWC,mBAAQ,CAAA,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMF,QAAQ,CAAA;AAC5D,IAAA,MAAMG,eAAeF,mBAAQ,CAAA,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMC,YAAY,CAAA;IAEpE,qBACEC,cAAA,CAACC,oBAAQX,MAAM,EAAA;AACbY,QAAAA,gBAAAA,gBAAkBF,cAACG,CAAAA,sBAAAA,EAAAA;YAAWC,QAAU,EAAA,CAAC,GAAG,EAAEC,4BAAAA,CAAiB,CAAC,EAAEX,MAAAA,CAAOY,IAAI,CAAE;;AAC/EC,QAAAA,aAAAA,gBACEP,cAACQ,CAAAA,mBAAAA,EAAAA;YAAOC,IAAK,EAAA,GAAA;AAAIC,YAAAA,QAAAA,EAAU,CAACd,QAAAA;YAAUe,IAAK,EAAA,QAAA;YAASC,OAASb,EAAAA,YAAAA;sBAC1DP,aAAc,CAAA;gBAAEqB,EAAI,EAAA,aAAA;gBAAeC,cAAgB,EAAA;AAAO,aAAA;;AAG/DC,QAAAA,QAAAA,EAAUvB,aAAc,CAAA;AACtBqB,YAAAA,EAAAA,EAAIG,2BAAe,CAAA,uEAAA,CAAA;YACnBF,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAG,QAAAA,KAAAA,EAAOzB,aACL,CAAA;AACEqB,YAAAA,EAAAA,EAAIG,2BAAe,CAAA,mDAAA,CAAA;YACnBF,cAAgB,EAAA;SAElB,EAAA;AAAEvB,YAAAA,IAAAA,EAAM2B,kBAAW3B,CAAAA,IAAAA;AAAM,SAAA;;AAIjC;;;;"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/Header.tsx"],"sourcesContent":["import { useForm, BackButton, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../../constants/collections';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\ninterface HeaderProps {\n collectionType: string;\n name: string;\n model: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const params = useParams<{ slug: string }>();\n\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n navigationAction={<BackButton fallback={`../${COLLECTION_TYPES}/${params.slug}`} />}\n primaryAction={\n <Button size=\"S\" disabled={!modified} type=\"submit\" loading={isSubmitting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.list-settings'),\n defaultMessage: 'Define the settings of the list view.',\n })}\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: 'Configure the view - {name}',\n },\n { name: capitalise(name) }\n )}\n />\n );\n};\n\nexport { Header };\nexport type { HeaderProps };\n"],"names":["Header","name","formatMessage","useIntl","params","useParams","modified","useForm","state","isSubmitting","_jsx","Layouts","navigationAction","BackButton","fallback","COLLECTION_TYPES","slug","primaryAction","Button","size","disabled","type","loading","id","defaultMessage","subtitle","getTranslation","title","capitalise"],"mappings":";;;;;;;;;;;AAeA,MAAMA,MAAAA,GAAS,CAAC,EAAEC,IAAI,EAAe,GAAA;IACnC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,MAAAA,GAASC,wBAAAA,EAAAA;AAEf,IAAA,MAAMC,WAAWC,mBAAAA,CAAQ,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMF,QAAQ,CAAA;AAC5D,IAAA,MAAMG,eAAeF,mBAAAA,CAAQ,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMC,YAAY,CAAA;IAEpE,qBACEC,cAAA,CAACC,oBAAQX,MAAM,EAAA;AACbY,QAAAA,gBAAAA,gBAAkBF,cAAA,CAACG,sBAAAA,EAAAA;YAAWC,QAAAA,EAAU,CAAC,GAAG,EAAEC,4BAAAA,CAAiB,CAAC,EAAEX,MAAAA,CAAOY,IAAI,CAAA;;AAC7EC,QAAAA,aAAAA,gBACEP,cAAA,CAACQ,mBAAAA,EAAAA;YAAOC,IAAAA,EAAK,GAAA;AAAIC,YAAAA,QAAAA,EAAU,CAACd,QAAAA;YAAUe,IAAAA,EAAK,QAAA;YAASC,OAAAA,EAASb,YAAAA;sBAC1DP,aAAAA,CAAc;gBAAEqB,EAAAA,EAAI,aAAA;gBAAeC,cAAAA,EAAgB;AAAO,aAAA;;AAG/DC,QAAAA,QAAAA,EAAUvB,aAAAA,CAAc;AACtBqB,YAAAA,EAAAA,EAAIG,2BAAAA,CAAe,uEAAA,CAAA;YACnBF,cAAAA,EAAgB;AAClB,SAAA,CAAA;AACAG,QAAAA,KAAAA,EAAOzB,aAAAA,CACL;AACEqB,YAAAA,EAAAA,EAAIG,2BAAAA,CAAe,mDAAA,CAAA;YACnBF,cAAAA,EAAgB;SAClB,EACA;AAAEvB,YAAAA,IAAAA,EAAM2B,kBAAAA,CAAW3B,IAAAA;AAAM,SAAA;;AAIjC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Header.mjs","sources":["../../../../../admin/src/pages/ListConfiguration/components/Header.tsx"],"sourcesContent":["import { useForm, BackButton, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../../constants/collections';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\ninterface HeaderProps {\n collectionType: string;\n name: string;\n model: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const params = useParams<{ slug: string }>();\n\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n navigationAction={<BackButton fallback={`../${COLLECTION_TYPES}/${params.slug}`} />}\n primaryAction={\n <Button size=\"S\" disabled={!modified} type=\"submit\" loading={isSubmitting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.list-settings'),\n defaultMessage: 'Define the settings of the list view.',\n })}\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: 'Configure the view - {name}',\n },\n { name: capitalise(name) }\n )}\n />\n );\n};\n\nexport { Header };\nexport type { HeaderProps };\n"],"names":["Header","name","formatMessage","useIntl","params","useParams","modified","useForm","state","isSubmitting","_jsx","Layouts","navigationAction","BackButton","fallback","COLLECTION_TYPES","slug","primaryAction","Button","size","disabled","type","loading","id","defaultMessage","subtitle","getTranslation","title","capitalise"],"mappings":";;;;;;;;;AAeA,MAAMA,MAAS,GAAA,CAAC,EAAEC,IAAI,EAAe,GAAA;IACnC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,MAASC,GAAAA,SAAAA,EAAAA;AAEf,IAAA,MAAMC,WAAWC,OAAQ,CAAA,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMF,QAAQ,CAAA;AAC5D,IAAA,MAAMG,eAAeF,OAAQ,CAAA,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMC,YAAY,CAAA;IAEpE,qBACEC,GAAA,CAACC,QAAQX,MAAM,EAAA;AACbY,QAAAA,gBAAAA,gBAAkBF,GAACG,CAAAA,UAAAA,EAAAA;YAAWC,QAAU,EAAA,CAAC,GAAG,EAAEC,gBAAAA,CAAiB,CAAC,EAAEX,MAAAA,CAAOY,IAAI,CAAE;;AAC/EC,QAAAA,aAAAA,gBACEP,GAACQ,CAAAA,MAAAA,EAAAA;YAAOC,IAAK,EAAA,GAAA;AAAIC,YAAAA,QAAAA,EAAU,CAACd,QAAAA;YAAUe,IAAK,EAAA,QAAA;YAASC,OAASb,EAAAA,YAAAA;sBAC1DP,aAAc,CAAA;gBAAEqB,EAAI,EAAA,aAAA;gBAAeC,cAAgB,EAAA;AAAO,aAAA;;AAG/DC,QAAAA,QAAAA,EAAUvB,aAAc,CAAA;AACtBqB,YAAAA,EAAAA,EAAIG,cAAe,CAAA,uEAAA,CAAA;YACnBF,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAG,QAAAA,KAAAA,EAAOzB,aACL,CAAA;AACEqB,YAAAA,EAAAA,EAAIG,cAAe,CAAA,mDAAA,CAAA;YACnBF,cAAgB,EAAA;SAElB,EAAA;AAAEvB,YAAAA,IAAAA,EAAM2B,UAAW3B,CAAAA,IAAAA;AAAM,SAAA;;AAIjC;;;;"}
1
+ {"version":3,"file":"Header.mjs","sources":["../../../../../admin/src/pages/ListConfiguration/components/Header.tsx"],"sourcesContent":["import { useForm, BackButton, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../../constants/collections';\nimport { capitalise } from '../../../utils/strings';\nimport { getTranslation } from '../../../utils/translations';\n\ninterface HeaderProps {\n collectionType: string;\n name: string;\n model: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const params = useParams<{ slug: string }>();\n\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n navigationAction={<BackButton fallback={`../${COLLECTION_TYPES}/${params.slug}`} />}\n primaryAction={\n <Button size=\"S\" disabled={!modified} type=\"submit\" loading={isSubmitting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.list-settings'),\n defaultMessage: 'Define the settings of the list view.',\n })}\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: 'Configure the view - {name}',\n },\n { name: capitalise(name) }\n )}\n />\n );\n};\n\nexport { Header };\nexport type { HeaderProps };\n"],"names":["Header","name","formatMessage","useIntl","params","useParams","modified","useForm","state","isSubmitting","_jsx","Layouts","navigationAction","BackButton","fallback","COLLECTION_TYPES","slug","primaryAction","Button","size","disabled","type","loading","id","defaultMessage","subtitle","getTranslation","title","capitalise"],"mappings":";;;;;;;;;AAeA,MAAMA,MAAAA,GAAS,CAAC,EAAEC,IAAI,EAAe,GAAA;IACnC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;AAEf,IAAA,MAAMC,WAAWC,OAAAA,CAAQ,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMF,QAAQ,CAAA;AAC5D,IAAA,MAAMG,eAAeF,OAAAA,CAAQ,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMC,YAAY,CAAA;IAEpE,qBACEC,GAAA,CAACC,QAAQX,MAAM,EAAA;AACbY,QAAAA,gBAAAA,gBAAkBF,GAAA,CAACG,UAAAA,EAAAA;YAAWC,QAAAA,EAAU,CAAC,GAAG,EAAEC,gBAAAA,CAAiB,CAAC,EAAEX,MAAAA,CAAOY,IAAI,CAAA;;AAC7EC,QAAAA,aAAAA,gBACEP,GAAA,CAACQ,MAAAA,EAAAA;YAAOC,IAAAA,EAAK,GAAA;AAAIC,YAAAA,QAAAA,EAAU,CAACd,QAAAA;YAAUe,IAAAA,EAAK,QAAA;YAASC,OAAAA,EAASb,YAAAA;sBAC1DP,aAAAA,CAAc;gBAAEqB,EAAAA,EAAI,aAAA;gBAAeC,cAAAA,EAAgB;AAAO,aAAA;;AAG/DC,QAAAA,QAAAA,EAAUvB,aAAAA,CAAc;AACtBqB,YAAAA,EAAAA,EAAIG,cAAAA,CAAe,uEAAA,CAAA;YACnBF,cAAAA,EAAgB;AAClB,SAAA,CAAA;AACAG,QAAAA,KAAAA,EAAOzB,aAAAA,CACL;AACEqB,YAAAA,EAAAA,EAAIG,cAAAA,CAAe,mDAAA,CAAA;YACnBF,cAAAA,EAAgB;SAClB,EACA;AAAEvB,YAAAA,IAAAA,EAAM2B,UAAAA,CAAW3B,IAAAA;AAAM,SAAA;;AAIjC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/Settings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, InputRenderer, type InputProps } from '@strapi/admin/strapi-admin';\nimport { Flex, Grid, Typography, useCollator } from '@strapi/design-system';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../hooks/useDocument';\nimport { type EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../utils/translations';\nimport { type FormData } from '../ListConfigurationPage';\n\nimport type { DistributiveOmit } from 'react-redux';\n\nexport type InputPropsWithMessageDescriptors = DistributiveOmit<\n InputProps,\n 'hint' | 'label' | 'placeholder'\n> & {\n hint?: MessageDescriptor;\n label: MessageDescriptor;\n placeholder?: MessageDescriptor;\n};\n\n/**\n * @internal\n * @description Form inputs are always displayed in a grid, so we need\n * to use the size property to determine how many columns the input should\n * take up.\n */\nexport type FormLayoutInputProps = InputPropsWithMessageDescriptors & { size: number };\n\nconst EXCLUDED_SORT_ATTRIBUTE_TYPES = [\n 'media',\n 'richtext',\n 'dynamiczone',\n 'relation',\n 'component',\n 'json',\n 'blocks',\n];\n\ninterface SortOption {\n value: string;\n label: string;\n}\n\nconst Settings = () => {\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const { schema } = useDoc();\n\n const layout = useForm<FormData['layout']>('Settings', (state) => state.values.layout ?? []);\n const currentSortBy = useForm<FormData['settings']['defaultSortBy']>(\n 'Settings',\n (state) => state.values.settings.defaultSortBy\n );\n const onChange = useForm('Settings', (state) => state.onChange);\n\n const sortOptions = React.useMemo(\n () =>\n Object.values(layout).reduce<SortOption[]>((acc, field) => {\n if (schema && !EXCLUDED_SORT_ATTRIBUTE_TYPES.includes(schema.attributes[field.name].type)) {\n acc.push({\n value: field.name,\n label: typeof field.label !== 'string' ? formatMessage(field.label) : field.label,\n });\n }\n\n return acc;\n }, []),\n [formatMessage, layout, schema]\n );\n\n const sortOptionsSorted = sortOptions.sort((a, b) => formatter.compare(a.label, b.label));\n\n React.useEffect(() => {\n if (sortOptionsSorted.findIndex((opt) => opt.value === currentSortBy) === -1) {\n onChange('settings.defaultSortBy', sortOptionsSorted[0]?.value);\n }\n }, [currentSortBy, onChange, sortOptionsSorted]);\n\n const formLayout = React.useMemo(\n () =>\n SETTINGS_FORM_LAYOUT.map((row) =>\n row.map((field) => {\n if (field.type === 'enumeration') {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n options: field.name === 'settings.defaultSortBy' ? sortOptionsSorted : field.options,\n };\n } else {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n };\n }\n })\n ) as [top: EditFieldLayout[], bottom: EditFieldLayout[]],\n [formatMessage, sortOptionsSorted]\n );\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root key=\"bottom\" gap={4}>\n {formLayout.map((row) =>\n row.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} col={size} direction=\"column\" alignItems=\"stretch\">\n {/* @ts-expect-error – issue with EnumerationProps conflicting with InputProps */}\n <InputRenderer {...field} />\n </Grid.Item>\n ))\n )}\n </Grid.Root>\n </Flex>\n );\n};\n\nconst SETTINGS_FORM_LAYOUT: FormLayoutInputProps[][] = [\n [\n {\n label: {\n id: getTranslation('form.Input.search'),\n defaultMessage: 'Enable search',\n },\n name: 'settings.searchable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.filters'),\n defaultMessage: 'Enable filters',\n },\n name: 'settings.filterable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.bulkActions'),\n defaultMessage: 'Enable bulk actions',\n },\n name: 'settings.bulkable',\n size: 4,\n type: 'boolean' as const,\n },\n ],\n [\n {\n hint: {\n id: getTranslation('form.Input.pageEntries.inputDescription'),\n defaultMessage: 'Note: You can override this value in the Collection Type settings page.',\n },\n label: {\n id: getTranslation('form.Input.pageEntries'),\n defaultMessage: 'Entries per page',\n },\n name: 'settings.pageSize',\n options: ['10', '20', '50', '100'].map((value) => ({ value, label: value })),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.defaultSort'),\n defaultMessage: 'Default sort attribute',\n },\n name: 'settings.defaultSortBy',\n options: [],\n size: 3,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.sort.order'),\n defaultMessage: 'Default sort order',\n },\n name: 'settings.defaultSortOrder',\n options: ['ASC', 'DESC'].map((value) => ({ value, label: value })),\n size: 3,\n type: 'enumeration' as const,\n },\n ],\n];\n\nexport { Settings };\n"],"names":["EXCLUDED_SORT_ATTRIBUTE_TYPES","Settings","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","schema","useDoc","layout","useForm","state","values","currentSortBy","settings","defaultSortBy","onChange","sortOptions","React","useMemo","Object","reduce","acc","field","includes","attributes","name","type","push","value","label","sortOptionsSorted","sort","a","b","compare","useEffect","findIndex","opt","formLayout","SETTINGS_FORM_LAYOUT","map","row","hint","undefined","options","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","size","Item","xs","col","InputRenderer"],"mappings":"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"}
1
+ {"version":3,"file":"Settings.js","sources":["../../../../../admin/src/pages/ListConfiguration/components/Settings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, InputRenderer, type InputProps } from '@strapi/admin/strapi-admin';\nimport { Flex, Grid, Typography, useCollator } from '@strapi/design-system';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../hooks/useDocument';\nimport { type EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../utils/translations';\nimport { type FormData } from '../ListConfigurationPage';\n\nimport type { DistributiveOmit } from 'react-redux';\n\nexport type InputPropsWithMessageDescriptors = DistributiveOmit<\n InputProps,\n 'hint' | 'label' | 'placeholder'\n> & {\n hint?: MessageDescriptor;\n label: MessageDescriptor;\n placeholder?: MessageDescriptor;\n};\n\n/**\n * @internal\n * @description Form inputs are always displayed in a grid, so we need\n * to use the size property to determine how many columns the input should\n * take up.\n */\nexport type FormLayoutInputProps = InputPropsWithMessageDescriptors & { size: number };\n\nconst EXCLUDED_SORT_ATTRIBUTE_TYPES = [\n 'media',\n 'richtext',\n 'dynamiczone',\n 'relation',\n 'component',\n 'json',\n 'blocks',\n];\n\ninterface SortOption {\n value: string;\n label: string;\n}\n\nconst Settings = () => {\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const { schema } = useDoc();\n\n const layout = useForm<FormData['layout']>('Settings', (state) => state.values.layout ?? []);\n const currentSortBy = useForm<FormData['settings']['defaultSortBy']>(\n 'Settings',\n (state) => state.values.settings.defaultSortBy\n );\n const onChange = useForm('Settings', (state) => state.onChange);\n\n const sortOptions = React.useMemo(\n () =>\n Object.values(layout).reduce<SortOption[]>((acc, field) => {\n if (schema && !EXCLUDED_SORT_ATTRIBUTE_TYPES.includes(schema.attributes[field.name].type)) {\n acc.push({\n value: field.name,\n label: typeof field.label !== 'string' ? formatMessage(field.label) : field.label,\n });\n }\n\n return acc;\n }, []),\n [formatMessage, layout, schema]\n );\n\n const sortOptionsSorted = sortOptions.sort((a, b) => formatter.compare(a.label, b.label));\n\n React.useEffect(() => {\n if (sortOptionsSorted.findIndex((opt) => opt.value === currentSortBy) === -1) {\n onChange('settings.defaultSortBy', sortOptionsSorted[0]?.value);\n }\n }, [currentSortBy, onChange, sortOptionsSorted]);\n\n const formLayout = React.useMemo(\n () =>\n SETTINGS_FORM_LAYOUT.map((row) =>\n row.map((field) => {\n if (field.type === 'enumeration') {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n options: field.name === 'settings.defaultSortBy' ? sortOptionsSorted : field.options,\n };\n } else {\n return {\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n };\n }\n })\n ) as [top: EditFieldLayout[], bottom: EditFieldLayout[]],\n [formatMessage, sortOptionsSorted]\n );\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root key=\"bottom\" gap={4}>\n {formLayout.map((row) =>\n row.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} col={size} direction=\"column\" alignItems=\"stretch\">\n {/* @ts-expect-error – issue with EnumerationProps conflicting with InputProps */}\n <InputRenderer {...field} />\n </Grid.Item>\n ))\n )}\n </Grid.Root>\n </Flex>\n );\n};\n\nconst SETTINGS_FORM_LAYOUT: FormLayoutInputProps[][] = [\n [\n {\n label: {\n id: getTranslation('form.Input.search'),\n defaultMessage: 'Enable search',\n },\n name: 'settings.searchable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.filters'),\n defaultMessage: 'Enable filters',\n },\n name: 'settings.filterable',\n size: 4,\n type: 'boolean' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.bulkActions'),\n defaultMessage: 'Enable bulk actions',\n },\n name: 'settings.bulkable',\n size: 4,\n type: 'boolean' as const,\n },\n ],\n [\n {\n hint: {\n id: getTranslation('form.Input.pageEntries.inputDescription'),\n defaultMessage: 'Note: You can override this value in the Collection Type settings page.',\n },\n label: {\n id: getTranslation('form.Input.pageEntries'),\n defaultMessage: 'Entries per page',\n },\n name: 'settings.pageSize',\n options: ['10', '20', '50', '100'].map((value) => ({ value, label: value })),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.defaultSort'),\n defaultMessage: 'Default sort attribute',\n },\n name: 'settings.defaultSortBy',\n options: [],\n size: 3,\n type: 'enumeration' as const,\n },\n {\n label: {\n id: getTranslation('form.Input.sort.order'),\n defaultMessage: 'Default sort order',\n },\n name: 'settings.defaultSortOrder',\n options: ['ASC', 'DESC'].map((value) => ({ value, label: value })),\n size: 3,\n type: 'enumeration' as const,\n },\n ],\n];\n\nexport { Settings };\n"],"names":["EXCLUDED_SORT_ATTRIBUTE_TYPES","Settings","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","schema","useDoc","layout","useForm","state","values","currentSortBy","settings","defaultSortBy","onChange","sortOptions","React","useMemo","Object","reduce","acc","field","includes","attributes","name","type","push","value","label","sortOptionsSorted","sort","a","b","compare","useEffect","findIndex","opt","formLayout","SETTINGS_FORM_LAYOUT","map","row","hint","undefined","options","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","size","Item","xs","col","InputRenderer"],"mappings":"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"}