@strapi/content-manager 0.0.0-next.e5d4b412da0d932b61b2fa5012d16513fda6de04 → 0.0.0-next.e7ae51b01f78ddeaa09c4aa3e3882f466a5b3188

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/dist/admin/components/ComponentIcon.js +3 -0
  2. package/dist/admin/components/ComponentIcon.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.mjs +3 -0
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +4 -2
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +4 -2
  8. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Fields.js +6 -1
  10. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Fields.mjs +7 -2
  12. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  13. package/dist/admin/components/ConfigurationForm/Form.js +2 -2
  14. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  15. package/dist/admin/components/ConfigurationForm/Form.mjs +4 -4
  16. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  26. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  27. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  28. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  29. package/dist/admin/components/LeftMenu.js +91 -51
  30. package/dist/admin/components/LeftMenu.js.map +1 -1
  31. package/dist/admin/components/LeftMenu.mjs +93 -53
  32. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  33. package/dist/admin/components/RelativeTime.js.map +1 -1
  34. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  35. package/dist/admin/components/Widgets.js +26 -8
  36. package/dist/admin/components/Widgets.js.map +1 -1
  37. package/dist/admin/components/Widgets.mjs +26 -8
  38. package/dist/admin/components/Widgets.mjs.map +1 -1
  39. package/dist/admin/content-manager.js.map +1 -1
  40. package/dist/admin/content-manager.mjs.map +1 -1
  41. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  42. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  43. package/dist/admin/history/components/VersionContent.js +0 -3
  44. package/dist/admin/history/components/VersionContent.js.map +1 -1
  45. package/dist/admin/history/components/VersionContent.mjs +0 -3
  46. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  47. package/dist/admin/history/components/VersionHeader.js +1 -0
  48. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  49. package/dist/admin/history/components/VersionHeader.mjs +1 -0
  50. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  51. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  52. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  53. package/dist/admin/history/components/VersionsList.js +1 -1
  54. package/dist/admin/history/components/VersionsList.js.map +1 -1
  55. package/dist/admin/history/components/VersionsList.mjs +1 -1
  56. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  57. package/dist/admin/history/pages/History.js +7 -7
  58. package/dist/admin/history/pages/History.js.map +1 -1
  59. package/dist/admin/history/pages/History.mjs +7 -7
  60. package/dist/admin/history/pages/History.mjs.map +1 -1
  61. package/dist/admin/history/services/historyVersion.js.map +1 -1
  62. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  63. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  64. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  65. package/dist/admin/hooks/useDocumentActions.js +24 -5
  66. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  67. package/dist/admin/hooks/useDocumentActions.mjs +24 -5
  68. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  69. package/dist/admin/index.js.map +1 -1
  70. package/dist/admin/index.mjs.map +1 -1
  71. package/dist/admin/layout.js +27 -6
  72. package/dist/admin/layout.js.map +1 -1
  73. package/dist/admin/layout.mjs +28 -7
  74. package/dist/admin/layout.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/EditViewPage.js +12 -16
  76. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  77. package/dist/admin/pages/EditView/EditViewPage.mjs +13 -17
  78. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  80. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  81. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  82. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  83. package/dist/admin/pages/EditView/components/DocumentActions.js +63 -67
  84. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/DocumentActions.mjs +65 -69
  86. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  88. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  90. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  92. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  94. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +4 -4
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +4 -4
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +1 -0
  102. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -0
  104. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  106. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  108. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  110. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  112. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  114. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  116. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
  118. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +3 -2
  120. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  122. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  124. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  126. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -4
  128. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -5
  130. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  134. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  136. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +3 -2
  140. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  142. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  148. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  150. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  152. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormLayout.js +13 -8
  158. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormLayout.mjs +14 -8
  160. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/Header.js +92 -27
  162. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  163. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  164. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  165. package/dist/admin/pages/EditView/components/InputRenderer.js +42 -25
  166. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  167. package/dist/admin/pages/EditView/components/InputRenderer.mjs +42 -25
  168. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/utils/data.js +154 -60
  170. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  171. package/dist/admin/pages/EditView/utils/data.mjs +154 -60
  172. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  173. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  174. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  175. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  176. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  177. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js +1 -0
  178. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  179. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -0
  180. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  181. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js +1 -1
  182. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  183. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  184. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  185. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  186. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  187. package/dist/admin/pages/ListConfiguration/components/Settings.js +1 -1
  188. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  189. package/dist/admin/pages/ListConfiguration/components/Settings.mjs +1 -1
  190. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  191. package/dist/admin/pages/ListView/ListViewPage.js +0 -2
  192. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  193. package/dist/admin/pages/ListView/ListViewPage.mjs +0 -2
  194. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  195. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  196. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  197. package/dist/admin/pages/ListView/components/BulkActions/Actions.js +6 -16
  198. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  199. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +6 -16
  200. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  201. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +18 -31
  202. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  203. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +19 -32
  204. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  205. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +1 -1
  206. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  207. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +1 -1
  208. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  209. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  210. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  211. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  212. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  213. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  214. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  215. package/dist/admin/pages/ListView/components/TableCells/CellContent.js +1 -1
  216. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  217. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +1 -1
  218. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  219. package/dist/admin/pages/ListView/components/TableCells/Media.js +5 -3
  220. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  221. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +5 -3
  222. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  223. package/dist/admin/pages/ListView/components/TableCells/Relations.js +8 -4
  224. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  225. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +8 -4
  226. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  227. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  228. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  229. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  230. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  231. package/dist/admin/preview/components/InputPopover.js +189 -0
  232. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  233. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  234. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  235. package/dist/admin/preview/components/PreviewHeader.js +0 -2
  236. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  237. package/dist/admin/preview/components/PreviewHeader.mjs +0 -2
  238. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  239. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  240. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  241. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  242. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  243. package/dist/admin/preview/pages/Preview.js +128 -125
  244. package/dist/admin/preview/pages/Preview.js.map +1 -1
  245. package/dist/admin/preview/pages/Preview.mjs +128 -125
  246. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  247. package/dist/admin/preview/services/preview.js.map +1 -1
  248. package/dist/admin/preview/services/preview.mjs.map +1 -1
  249. package/dist/admin/preview/utils/constants.js +36 -1
  250. package/dist/admin/preview/utils/constants.js.map +1 -1
  251. package/dist/admin/preview/utils/constants.mjs +35 -2
  252. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  253. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  254. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  255. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  256. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  257. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  258. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  259. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  260. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  261. package/dist/admin/preview/utils/previewScript.js +423 -92
  262. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  263. package/dist/admin/preview/utils/previewScript.mjs +423 -92
  264. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  265. package/dist/admin/router.js.map +1 -1
  266. package/dist/admin/router.mjs.map +1 -1
  267. package/dist/admin/services/api.js +2 -1
  268. package/dist/admin/services/api.js.map +1 -1
  269. package/dist/admin/services/api.mjs +2 -1
  270. package/dist/admin/services/api.mjs.map +1 -1
  271. package/dist/admin/services/documents.js +19 -3
  272. package/dist/admin/services/documents.js.map +1 -1
  273. package/dist/admin/services/documents.mjs +19 -3
  274. package/dist/admin/services/documents.mjs.map +1 -1
  275. package/dist/admin/services/homepage.js.map +1 -1
  276. package/dist/admin/services/homepage.mjs.map +1 -1
  277. package/dist/admin/services/relations.js.map +1 -1
  278. package/dist/admin/services/relations.mjs.map +1 -1
  279. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  280. package/dist/admin/src/components/Widgets.d.ts +6 -2
  281. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  282. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  283. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
  284. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  285. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +1 -1
  286. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
  287. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  288. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  289. package/dist/admin/src/pages/EditView/utils/data.d.ts +4 -4
  290. package/dist/admin/src/pages/ListView/components/TableCells/Relations.d.ts +0 -3
  291. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  292. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  293. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  294. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  295. package/dist/admin/src/preview/utils/constants.d.ts +39 -1
  296. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  297. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  298. package/dist/admin/src/preview/utils/previewScript.d.ts +7 -1
  299. package/dist/admin/src/services/api.d.ts +1 -1
  300. package/dist/admin/src/services/components.d.ts +2 -2
  301. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  302. package/dist/admin/src/services/documents.d.ts +16 -16
  303. package/dist/admin/src/services/homepage.d.ts +1 -1
  304. package/dist/admin/src/services/init.d.ts +1 -1
  305. package/dist/admin/src/services/relations.d.ts +2 -2
  306. package/dist/admin/src/services/uid.d.ts +3 -3
  307. package/dist/admin/translations/en.json.js +7 -0
  308. package/dist/admin/translations/en.json.js.map +1 -1
  309. package/dist/admin/translations/en.json.mjs +7 -0
  310. package/dist/admin/translations/en.json.mjs.map +1 -1
  311. package/dist/admin/translations/es.json.js +2 -0
  312. package/dist/admin/translations/es.json.js.map +1 -1
  313. package/dist/admin/translations/es.json.mjs +2 -0
  314. package/dist/admin/translations/es.json.mjs.map +1 -1
  315. package/dist/admin/translations/fr.json.js +3 -1
  316. package/dist/admin/translations/fr.json.js.map +1 -1
  317. package/dist/admin/translations/fr.json.mjs +3 -1
  318. package/dist/admin/translations/fr.json.mjs.map +1 -1
  319. package/dist/admin/utils/translations.js.map +1 -1
  320. package/dist/admin/utils/translations.mjs.map +1 -1
  321. package/dist/admin/utils/urls.js.map +1 -1
  322. package/dist/admin/utils/urls.mjs.map +1 -1
  323. package/dist/admin/utils/users.js.map +1 -1
  324. package/dist/admin/utils/users.mjs.map +1 -1
  325. package/dist/admin/utils/validation.js +1 -1
  326. package/dist/admin/utils/validation.js.map +1 -1
  327. package/dist/admin/utils/validation.mjs +1 -1
  328. package/dist/admin/utils/validation.mjs.map +1 -1
  329. package/dist/server/controllers/collection-types.js +2 -1
  330. package/dist/server/controllers/collection-types.js.map +1 -1
  331. package/dist/server/controllers/collection-types.mjs +2 -1
  332. package/dist/server/controllers/collection-types.mjs.map +1 -1
  333. package/dist/server/controllers/relations.js +6 -4
  334. package/dist/server/controllers/relations.js.map +1 -1
  335. package/dist/server/controllers/relations.mjs +6 -4
  336. package/dist/server/controllers/relations.mjs.map +1 -1
  337. package/dist/server/controllers/single-types.js +3 -1
  338. package/dist/server/controllers/single-types.js.map +1 -1
  339. package/dist/server/controllers/single-types.mjs +3 -1
  340. package/dist/server/controllers/single-types.mjs.map +1 -1
  341. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  342. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  343. package/dist/server/controllers/validation/index.js.map +1 -1
  344. package/dist/server/controllers/validation/index.mjs.map +1 -1
  345. package/dist/server/controllers/validation/model-configuration.js +2 -2
  346. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  347. package/dist/server/controllers/validation/model-configuration.mjs +2 -2
  348. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  349. package/dist/server/history/utils.js.map +1 -1
  350. package/dist/server/history/utils.mjs.map +1 -1
  351. package/dist/server/homepage/services/homepage.js +3 -2
  352. package/dist/server/homepage/services/homepage.js.map +1 -1
  353. package/dist/server/homepage/services/homepage.mjs +3 -2
  354. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  355. package/dist/server/middlewares/routing.js.map +1 -1
  356. package/dist/server/middlewares/routing.mjs.map +1 -1
  357. package/dist/server/preview/services/preview-config.js +8 -33
  358. package/dist/server/preview/services/preview-config.js.map +1 -1
  359. package/dist/server/preview/services/preview-config.mjs +9 -34
  360. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  361. package/dist/server/preview/services/preview.js.map +1 -1
  362. package/dist/server/preview/services/preview.mjs.map +1 -1
  363. package/dist/server/preview/utils.js.map +1 -1
  364. package/dist/server/preview/utils.mjs.map +1 -1
  365. package/dist/server/services/configuration.js.map +1 -1
  366. package/dist/server/services/configuration.mjs.map +1 -1
  367. package/dist/server/services/document-metadata.js +23 -1
  368. package/dist/server/services/document-metadata.js.map +1 -1
  369. package/dist/server/services/document-metadata.mjs +23 -1
  370. package/dist/server/services/document-metadata.mjs.map +1 -1
  371. package/dist/server/services/field-sizes.js.map +1 -1
  372. package/dist/server/services/field-sizes.mjs.map +1 -1
  373. package/dist/server/services/uid.js.map +1 -1
  374. package/dist/server/services/uid.mjs.map +1 -1
  375. package/dist/server/services/utils/store.js.map +1 -1
  376. package/dist/server/services/utils/store.mjs.map +1 -1
  377. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  378. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  379. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  380. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  381. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  382. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  383. package/package.json +8 -8
@@ -7,6 +7,8 @@ import { useDocumentRBAC } from '../../../features/DocumentRBAC.mjs';
7
7
  import { useDocumentContext } from '../../../hooks/useDocumentContext.mjs';
8
8
  import { useDocumentLayout } from '../../../hooks/useDocumentLayout.mjs';
9
9
  import { useLazyComponents } from '../../../hooks/useLazyComponents.mjs';
10
+ import { useHasInputPopoverParent } from '../../../preview/components/InputPopover.mjs';
11
+ import { usePreviewInputManager } from '../../../preview/hooks/usePreviewInputManager.mjs';
10
12
  import { BlocksInput as MemoizedBlocksInput } from './FormInputs/BlocksInput/BlocksInput.mjs';
11
13
  import { ComponentInput as MemoizedComponentInput } from './FormInputs/Component/Input.mjs';
12
14
  import { useDynamicZone, DynamicZone } from './FormInputs/DynamicZone/Field.mjs';
@@ -22,11 +24,14 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
22
24
  * specifically to be used in the EditView of the content-manager this understands
23
25
  * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific
24
26
  * components such as Blocks / Relations.
25
- */ const InputRenderer = ({ visible, hint: providedHint, document, ...props })=>{
27
+ */ const InputRenderer = ({ visible, hint: providedHint, document, ...inputProps })=>{
28
+ const localeKey = document?.document?.locale || 'default';
26
29
  const { currentDocumentMeta } = useDocumentContext('DynamicComponent');
27
30
  const { edit: { components } } = useDocumentLayout(currentDocumentMeta.model);
28
31
  const collectionType = document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';
29
32
  const isInDynamicZone = useDynamicZone('isInDynamicZone', (state)=>state.isInDynamicZone);
33
+ const isInPreviewPopover = useHasInputPopoverParent();
34
+ const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;
30
35
  const isFormDisabled = useForm('InputRenderer', (state)=>state.disabled);
31
36
  const canCreateFields = useDocumentRBAC('InputRenderer', (rbac)=>rbac.canCreateFields);
32
37
  const canReadFields = useDocumentRBAC('InputRenderer', (rbac)=>rbac.canReadFields);
@@ -38,6 +43,12 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
38
43
  }
39
44
  const editableFields = idToCheck ? canUpdateFields : canCreateFields;
40
45
  const readableFields = idToCheck ? canReadFields : canCreateFields;
46
+ // Everything preview related
47
+ const previewProps = usePreviewInputManager(inputProps.name, inputProps.attribute);
48
+ const props = {
49
+ ...inputProps,
50
+ ...previewProps
51
+ };
41
52
  /**
42
53
  * Component fields are always readable and editable,
43
54
  * however the fields within them may not be.
@@ -55,46 +66,47 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
55
66
  }
56
67
  /**
57
68
  * If the user can't read the field then we don't want to ever render it.
58
- */ if (!canUserReadField && !isInDynamicZone) {
69
+ */ if (!canUserReadField && !shouldIgnorePermissions) {
59
70
  return /*#__PURE__*/ jsx(NotAllowedInput, {
60
71
  hint: hint,
61
72
  ...props
62
73
  });
63
74
  }
64
- const fieldIsDisabled = !canUserEditField && !isInDynamicZone || props.disabled || isFormDisabled;
75
+ const fieldIsDisabled = !canUserEditField && !shouldIgnorePermissions || props.disabled || isFormDisabled;
65
76
  /**
66
77
  * Because a custom field has a unique prop but the type could be confused with either
67
78
  * the useField hook or the type of the field we need to handle it separately and first.
68
79
  */ if (attributeHasCustomFieldProperty(props.attribute)) {
69
80
  const CustomInput = lazyComponentStore[props.attribute.customField];
70
81
  if (CustomInput) {
71
- // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
72
82
  return /*#__PURE__*/ jsx(CustomInput, {
73
83
  ...props,
74
84
  ...field,
85
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
75
86
  hint: hint,
76
87
  disabled: fieldIsDisabled
77
88
  });
78
89
  }
79
90
  return /*#__PURE__*/ jsx(InputRenderer$1, {
80
91
  ...props,
92
+ ...previewProps,
81
93
  hint: hint,
82
94
  // @ts-expect-error – this workaround lets us display that the custom field is missing.
83
95
  type: props.attribute.customField,
84
96
  disabled: fieldIsDisabled
85
- });
97
+ }, `input-${props.name}-${localeKey}`);
86
98
  }
87
99
  /**
88
100
  * This is where we handle ONLY the fields from the `useLibrary` hook.
89
101
  */ const addedInputTypes = Object.keys(fields);
90
102
  if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {
91
103
  const CustomInput = fields[props.type];
92
- // @ts-expect-error – TODO: fix this type error in the useLibrary hook.
93
104
  return /*#__PURE__*/ jsx(CustomInput, {
94
105
  ...props,
106
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
95
107
  hint: hint,
96
108
  disabled: fieldIsDisabled
97
- });
109
+ }, `input-${props.name}-${localeKey}`);
98
110
  }
99
111
  /**
100
112
  * These include the content-manager specific fields, failing that we fall back
@@ -106,48 +118,51 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
106
118
  hint: hint,
107
119
  type: props.type,
108
120
  disabled: fieldIsDisabled
109
- });
121
+ }, `input-${props.name}-${localeKey}`);
110
122
  case 'component':
111
123
  return /*#__PURE__*/ jsx(MemoizedComponentInput, {
112
124
  ...props,
113
125
  hint: hint,
114
126
  layout: components[props.attribute.component].layout,
115
127
  disabled: fieldIsDisabled,
116
- children: (inputProps)=>/*#__PURE__*/ jsx(InputRenderer, {
117
- ...inputProps
118
- })
119
- });
128
+ children: (componentInputProps)=>/*#__PURE__*/ jsx(InputRenderer, {
129
+ ...componentInputProps
130
+ }, `input-${componentInputProps.name}-${localeKey}`)
131
+ }, `input-${props.name}-${localeKey}`);
120
132
  case 'dynamiczone':
121
133
  return /*#__PURE__*/ jsx(DynamicZone, {
122
134
  ...props,
123
135
  hint: hint,
124
136
  disabled: fieldIsDisabled
125
- });
137
+ }, `input-${props.name}-${localeKey}`);
126
138
  case 'relation':
127
139
  return /*#__PURE__*/ jsx(MemoizedRelationsField, {
128
140
  ...props,
129
141
  hint: hint,
130
142
  disabled: fieldIsDisabled
131
- });
143
+ }, `input-${props.name}-${localeKey}`);
132
144
  case 'richtext':
133
145
  return /*#__PURE__*/ jsx(MemoizedWysiwyg, {
134
146
  ...props,
135
147
  hint: hint,
136
148
  type: props.type,
137
149
  disabled: fieldIsDisabled
138
- });
150
+ }, `input-${props.name}-${localeKey}`);
139
151
  case 'uid':
152
+ // These props are not needed for the generic form input renderer.
153
+ const { unique: _uniqueUID, ...restUIDProps } = props;
140
154
  return /*#__PURE__*/ jsx(MemoizedUIDInput, {
141
- ...props,
155
+ ...restUIDProps,
142
156
  hint: hint,
143
157
  type: props.type,
144
158
  disabled: fieldIsDisabled
145
- });
159
+ }, `input-${props.name}-${localeKey}`);
146
160
  /**
147
161
  * Enumerations are a special case because they require options.
148
162
  */ case 'enumeration':
149
163
  return /*#__PURE__*/ jsx(InputRenderer$1, {
150
164
  ...props,
165
+ ...previewProps,
151
166
  hint: hint,
152
167
  options: props.attribute.enum.map((value)=>({
153
168
  value
@@ -155,17 +170,18 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
155
170
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
156
171
  type: props.customField ? 'custom-field' : props.type,
157
172
  disabled: fieldIsDisabled
158
- });
173
+ }, `input-${props.name}-${localeKey}`);
159
174
  default:
160
175
  // These props are not needed for the generic form input renderer.
161
176
  const { unique: _unique, mainField: _mainField, ...restProps } = props;
162
177
  return /*#__PURE__*/ jsx(InputRenderer$1, {
163
178
  ...restProps,
179
+ ...previewProps,
164
180
  hint: hint,
165
181
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
166
182
  type: props.customField ? 'custom-field' : props.type,
167
183
  disabled: fieldIsDisabled
168
- });
184
+ }, `input-${props.name}-${localeKey}`);
169
185
  }
170
186
  };
171
187
  const attributeHasCustomFieldProperty = (attribute)=>'customField' in attribute && typeof attribute.customField === 'string';
@@ -175,12 +191,13 @@ const useFieldHint = (hint = undefined, attribute)=>{
175
191
  if (!maximum && !minimum) {
176
192
  return hint;
177
193
  }
178
- const units = ![
179
- 'biginteger',
180
- 'integer',
181
- 'number',
182
- 'dynamiczone',
183
- 'component'
194
+ const units = [
195
+ 'string',
196
+ 'uid',
197
+ 'richtext',
198
+ 'email',
199
+ 'password',
200
+ 'text'
184
201
  ].includes(attribute.type) ? formatMessage({
185
202
  id: 'content-manager.form.Input.hint.character.unit',
186
203
  defaultMessage: '{maxValue, plural, one { character} other { characters}}'
@@ -1 +1 @@
1
- {"version":3,"file":"InputRenderer.mjs","sources":["../../../../../admin/src/pages/EditView/components/InputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { type UseDocument } from '../../../hooks/useDocument';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../../hooks/useLazyComponents';\n\nimport { BlocksInput } from './FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from './FormInputs/Component/Input';\nimport { DynamicZone, useDynamicZone } from './FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from './FormInputs/NotAllowed';\nimport { RelationsInput } from './FormInputs/Relations/Relations';\nimport { UIDInput } from './FormInputs/UID';\nimport { Wysiwyg } from './FormInputs/Wysiwyg/Field';\n\nimport type { EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\ntype InputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n document: ReturnType<UseDocument>;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed\n * specifically to be used in the EditView of the content-manager this understands\n * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific\n * components such as Blocks / Relations.\n */\nconst InputRenderer = ({ visible, hint: providedHint, document, ...props }: InputRendererProps) => {\n const { currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const collectionType =\n document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n let idToCheck = document.document?.documentId;\n if (collectionType === SINGLE_TYPES) {\n idToCheck = document?.document?.documentId;\n }\n\n const editableFields = idToCheck ? canUpdateFields : canCreateFields;\n const readableFields = idToCheck ? canReadFields : canCreateFields;\n\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n\n // We pass field in case of Custom Fields to keep backward compatibility\n const field = useField(props.name);\n\n if (!visible) {\n return null;\n }\n\n /**\n * If the user can't read the field then we don't want to ever render it.\n */\n if (!canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n return <CustomInput {...props} {...field} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n return <CustomInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n return (\n <ComponentInput\n {...props}\n hint={hint}\n layout={components[props.attribute.component].layout}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <InputRenderer {...inputProps} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return <DynamicZone {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'relation':\n return <RelationsInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'richtext':\n return <Wysiwyg {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'uid':\n return <UIDInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nconst useFieldHint = (\n hint: React.ReactNode = undefined,\n attribute: Schema.Attribute.AnyAttribute\n) => {\n const { formatMessage } = useIntl();\n\n const { maximum, minimum } = getMinMax(attribute);\n\n if (!maximum && !minimum) {\n return hint;\n }\n\n const units = !['biginteger', 'integer', 'number', 'dynamiczone', 'component'].includes(\n attribute.type\n )\n ? formatMessage(\n {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n {\n maxValue: Math.max(minimum || 0, maximum || 0),\n }\n )\n : null;\n\n const hasMinAndMax = typeof minimum === 'number' && typeof maximum === 'number';\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: hint,\n unit: units,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: <br />,\n }\n );\n};\n\nconst getMinMax = (attribute: Schema.Attribute.AnyAttribute) => {\n if ('min' in attribute || 'max' in attribute) {\n return {\n maximum: !Number.isNaN(Number(attribute.max)) ? Number(attribute.max) : undefined,\n minimum: !Number.isNaN(Number(attribute.min)) ? Number(attribute.min) : undefined,\n };\n } else if ('maxLength' in attribute || 'minLength' in attribute) {\n return { maximum: attribute.maxLength, minimum: attribute.minLength };\n } else {\n return { maximum: undefined, minimum: undefined };\n }\n};\n\nconst MemoizedInputRenderer = React.memo(InputRenderer);\n\nexport type { InputRendererProps };\nexport { MemoizedInputRenderer as InputRenderer, useFieldHint };\n"],"names":["InputRenderer","visible","hint","providedHint","document","props","currentDocumentMeta","useDocumentContext","edit","components","useDocumentLayout","model","collectionType","schema","kind","isInDynamicZone","useDynamicZone","state","isFormDisabled","useForm","disabled","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","idToCheck","documentId","SINGLE_TYPES","editableFields","readableFields","canUserReadField","name","type","canUserEditField","fields","useStrapiApp","app","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","attribute","customField","undefined","useFieldHint","field","useField","_jsx","NotAllowedInput","fieldIsDisabled","CustomInput","FormInputRenderer","addedInputTypes","Object","keys","includes","BlocksInput","ComponentInput","layout","component","inputProps","DynamicZone","RelationsInput","Wysiwyg","UIDInput","options","enum","map","value","unique","_unique","mainField","_mainField","restProps","formatMessage","useIntl","maximum","minimum","getMinMax","units","id","defaultMessage","maxValue","Math","max","hasMinAndMax","min","description","unit","divider","br","Number","isNaN","maxLength","minLength","MemoizedInputRenderer","React","memo"],"mappings":"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"}
1
+ {"version":3,"file":"InputRenderer.mjs","sources":["../../../../../admin/src/pages/EditView/components/InputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { type UseDocument } from '../../../hooks/useDocument';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../../hooks/useLazyComponents';\nimport { useHasInputPopoverParent } from '../../../preview/components/InputPopover';\nimport { usePreviewInputManager } from '../../../preview/hooks/usePreviewInputManager';\n\nimport { BlocksInput } from './FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from './FormInputs/Component/Input';\nimport { DynamicZone, useDynamicZone } from './FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from './FormInputs/NotAllowed';\nimport { RelationsInput } from './FormInputs/Relations/Relations';\nimport { UIDInput } from './FormInputs/UID';\nimport { Wysiwyg } from './FormInputs/Wysiwyg/Field';\n\nimport type { EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\ntype InputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n document: ReturnType<UseDocument>;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed\n * specifically to be used in the EditView of the content-manager this understands\n * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific\n * components such as Blocks / Relations.\n */\nconst InputRenderer = ({\n visible,\n hint: providedHint,\n document,\n ...inputProps\n}: InputRendererProps) => {\n const localeKey = document?.document?.locale || 'default';\n const { currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const collectionType =\n document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n const isInPreviewPopover = useHasInputPopoverParent();\n const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;\n\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n let idToCheck = document.document?.documentId;\n if (collectionType === SINGLE_TYPES) {\n idToCheck = document?.document?.documentId;\n }\n\n const editableFields = idToCheck ? canUpdateFields : canCreateFields;\n const readableFields = idToCheck ? canReadFields : canCreateFields;\n\n // Everything preview related\n const previewProps = usePreviewInputManager(inputProps.name, inputProps.attribute);\n const props = { ...inputProps, ...previewProps };\n\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n\n // We pass field in case of Custom Fields to keep backward compatibility\n const field = useField(props.name);\n\n if (!visible) {\n return null;\n }\n\n /**\n * If the user can't read the field then we don't want to ever render it.\n */\n if (!canUserReadField && !shouldIgnorePermissions) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !shouldIgnorePermissions) || props.disabled || isFormDisabled;\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n {...field}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n key={`input-${props.name}-${localeKey}`}\n {...props}\n {...previewProps}\n hint={hint}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n key={`input-${props.name}-${localeKey}`}\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return (\n <BlocksInput\n key={`input-${props.name}-${localeKey}`}\n {...props}\n hint={hint}\n type={props.type}\n disabled={fieldIsDisabled}\n />\n );\n case 'component':\n return (\n <ComponentInput\n key={`input-${props.name}-${localeKey}`}\n {...props}\n hint={hint}\n layout={components[props.attribute.component].layout}\n disabled={fieldIsDisabled}\n >\n {(componentInputProps) => (\n <InputRenderer\n key={`input-${componentInputProps.name}-${localeKey}`}\n {...componentInputProps}\n />\n )}\n </ComponentInput>\n );\n case 'dynamiczone':\n return (\n <DynamicZone\n key={`input-${props.name}-${localeKey}`}\n {...props}\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n case 'relation':\n return (\n <RelationsInput\n key={`input-${props.name}-${localeKey}`}\n {...props}\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n key={`input-${props.name}-${localeKey}`}\n {...props}\n hint={hint}\n type={props.type}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n // These props are not needed for the generic form input renderer.\n const { unique: _uniqueUID, ...restUIDProps } = props;\n return (\n <UIDInput\n key={`input-${props.name}-${localeKey}`}\n {...restUIDProps}\n hint={hint}\n type={props.type}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n key={`input-${props.name}-${localeKey}`}\n {...props}\n {...previewProps}\n hint={hint}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n key={`input-${props.name}-${localeKey}`}\n {...restProps}\n {...previewProps}\n hint={hint}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nconst useFieldHint = (\n hint: React.ReactNode = undefined,\n attribute: Schema.Attribute.AnyAttribute\n) => {\n const { formatMessage } = useIntl();\n\n const { maximum, minimum } = getMinMax(attribute);\n\n if (!maximum && !minimum) {\n return hint;\n }\n\n const units = ['string', 'uid', 'richtext', 'email', 'password', 'text'].includes(attribute.type)\n ? formatMessage(\n {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n {\n maxValue: Math.max(minimum || 0, maximum || 0),\n }\n )\n : null;\n\n const hasMinAndMax = typeof minimum === 'number' && typeof maximum === 'number';\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: hint,\n unit: units,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: <br />,\n }\n );\n};\n\nconst getMinMax = (attribute: Schema.Attribute.AnyAttribute) => {\n if ('min' in attribute || 'max' in attribute) {\n return {\n maximum: !Number.isNaN(Number(attribute.max)) ? Number(attribute.max) : undefined,\n minimum: !Number.isNaN(Number(attribute.min)) ? Number(attribute.min) : undefined,\n };\n } else if ('maxLength' in attribute || 'minLength' in attribute) {\n return { maximum: attribute.maxLength, minimum: attribute.minLength };\n } else {\n return { maximum: undefined, minimum: undefined };\n }\n};\n\nconst MemoizedInputRenderer = React.memo(InputRenderer);\n\nexport type { InputRendererProps };\nexport { MemoizedInputRenderer as InputRenderer, useFieldHint };\n"],"names":["InputRenderer","visible","hint","providedHint","document","inputProps","localeKey","locale","currentDocumentMeta","useDocumentContext","edit","components","useDocumentLayout","model","collectionType","schema","kind","isInDynamicZone","useDynamicZone","state","isInPreviewPopover","useHasInputPopoverParent","shouldIgnorePermissions","isFormDisabled","useForm","disabled","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","idToCheck","documentId","SINGLE_TYPES","editableFields","readableFields","previewProps","usePreviewInputManager","name","attribute","props","canUserReadField","type","canUserEditField","fields","useStrapiApp","app","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","field","useField","_jsx","NotAllowedInput","fieldIsDisabled","CustomInput","FormInputRenderer","addedInputTypes","Object","keys","includes","BlocksInput","ComponentInput","layout","component","componentInputProps","DynamicZone","RelationsInput","Wysiwyg","unique","_uniqueUID","restUIDProps","UIDInput","options","enum","map","value","_unique","mainField","_mainField","restProps","formatMessage","useIntl","maximum","minimum","getMinMax","units","id","defaultMessage","maxValue","Math","max","hasMinAndMax","min","description","unit","divider","br","Number","isNaN","maxLength","minLength","MemoizedInputRenderer","React","memo"],"mappings":"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"}
@@ -104,16 +104,8 @@ const BLOCK_LIST_ATTRIBUTE_KEYS = [
104
104
  * @internal
105
105
  * @description We need to remove null fields from the data-structure because it will pass it
106
106
  * to the specific inputs breaking them as most would prefer empty strings or `undefined` if
107
- * they're controlled / uncontrolled.
108
- */ const removeNullValues = (data)=>{
109
- return Object.entries(data).reduce((acc, [key, value])=>{
110
- if (value === null) {
111
- return acc;
112
- }
113
- acc[key] = value;
114
- return acc;
115
- }, {});
116
- };
107
+ * they're controlled / uncontrolled. However, Boolean fields should preserve null values.
108
+ */ const removeNullValues = (schema, components = {})=>traverseData((attribute, value)=>value === null && attribute.type !== 'boolean', ()=>undefined)(schema, components);
117
109
  /* -------------------------------------------------------------------------------------------------
118
110
  * transformDocuments
119
111
  * -----------------------------------------------------------------------------------------------*/ /**
@@ -124,87 +116,172 @@ const BLOCK_LIST_ATTRIBUTE_KEYS = [
124
116
  */ const transformDocument = (schema, components = {})=>(document)=>{
125
117
  const transformations = pipe(removeFieldsThatDontExistOnSchema(schema), removeProhibitedFields([
126
118
  'password'
127
- ])(schema, components), removeNullValues, prepareRelations(schema, components), prepareTempKeys(schema, components));
119
+ ])(schema, components), removeNullValues(schema, components), prepareRelations(schema, components), prepareTempKeys(schema, components));
128
120
  return transformations(document);
129
121
  };
130
122
  /**
131
- * Removes values from the data object if their corresponding attribute has a
132
- * visibility condition that evaluates to false.
123
+ * @internal
124
+ * @description Finds the initial value for a component or dynamic zone item (based on its __temp_key__ and not its index).
125
+ * @param initialValue - The initial values object.
126
+ * @param item - The item to find the initial value for.
127
+ * @returns The initial value for the item.
128
+ */ const getItemInitialValue = (initialValue, item)=>{
129
+ if (initialValue && Array.isArray(initialValue)) {
130
+ const matchingInitialItem = initialValue.find((initialItem)=>initialItem.__temp_key__ === item.__temp_key__);
131
+ if (matchingInitialItem) {
132
+ return matchingInitialItem;
133
+ }
134
+ }
135
+ return {};
136
+ };
137
+ /**
138
+ * @internal
139
+ * @description Collects paths of attributes that should be removed based on visibility conditions.
140
+ * This function only evaluates conditions.visible (JSON Logic), not the visible boolean property.
133
141
  *
134
- * @param {object} schema - The content type schema (with attributes).
135
- * @param {object} data - The data object to filter based on visibility.
136
- * @returns {object} A new data object with only visible fields retained.
137
- */ const handleInvisibleAttributes = (data, { schema, initialValues = {}, components = {} }, path = [], removedAttributes = [])=>{
138
- if (!schema?.attributes) return {
139
- data,
140
- removedAttributes
141
- };
142
+ * @param data - The data object to evaluate
143
+ * @param schema - The content type schema
144
+ * @param components - Dictionary of component schemas
145
+ * @param path - Current path in the data structure (for nested components/dynamiczones)
146
+ * @returns Array of field paths that should be removed
147
+ */ const collectInvisibleAttributes = (data, schema, components, path = [])=>{
148
+ if (!schema?.attributes) return [];
142
149
  const rulesEngine = strapiAdmin.createRulesEngine();
143
- const result = {};
150
+ const removedPaths = [];
151
+ const evaluatedData = {};
144
152
  for (const [attrName, attrDef] of Object.entries(schema.attributes)){
145
153
  const fullPath = [
146
154
  ...path,
147
155
  attrName
148
156
  ].join('.');
157
+ // Skip fields with visible: false - they're managed by backend
158
+ if ('visible' in attrDef && attrDef.visible === false) {
159
+ continue;
160
+ }
149
161
  const condition = attrDef?.conditions?.visible;
150
162
  const isVisible = condition ? rulesEngine.evaluate(condition, {
151
163
  ...data,
152
- ...result
164
+ ...evaluatedData
153
165
  }) : true;
154
166
  if (!isVisible) {
155
- removedAttributes.push(fullPath);
167
+ removedPaths.push(fullPath);
168
+ continue;
169
+ }
170
+ // Track this field for future condition evaluations
171
+ if (attrName in data) {
172
+ evaluatedData[attrName] = data[attrName];
173
+ }
174
+ // Recursively process components
175
+ if (attrDef.type === 'component') {
176
+ const compSchema = components[attrDef.component];
177
+ const value = data[attrName];
178
+ if (attrDef.repeatable && Array.isArray(value)) {
179
+ value.forEach((item)=>{
180
+ const nestedPaths = collectInvisibleAttributes(item, compSchema, components, [
181
+ ...path,
182
+ `${attrName}[${item.__temp_key__}]`
183
+ ]);
184
+ removedPaths.push(...nestedPaths);
185
+ });
186
+ } else if (value && typeof value === 'object') {
187
+ const nestedPaths = collectInvisibleAttributes(value, compSchema, components, [
188
+ ...path,
189
+ attrName
190
+ ]);
191
+ removedPaths.push(...nestedPaths);
192
+ }
193
+ }
194
+ // Recursively process dynamic zones
195
+ if (attrDef.type === 'dynamiczone' && Array.isArray(data[attrName])) {
196
+ data[attrName].forEach((dzItem)=>{
197
+ const compUID = dzItem?.__component;
198
+ const compSchema = components[compUID];
199
+ const nestedPaths = collectInvisibleAttributes(dzItem, compSchema, components, [
200
+ ...path,
201
+ `${attrName}[${dzItem.__temp_key__}]`
202
+ ]);
203
+ removedPaths.push(...nestedPaths);
204
+ });
205
+ }
206
+ }
207
+ return removedPaths;
208
+ };
209
+ /**
210
+ * @internal
211
+ * @description Removes attributes from data based on the list of paths to remove.
212
+ * Preserves fields with visible: false from data or initialValues.
213
+ *
214
+ * @param data - The data object to filter
215
+ * @param initialValues - Initial values to fall back to
216
+ * @param schema - The content type schema
217
+ * @param components - Dictionary of component schemas
218
+ * @param removedPaths - Array of field paths to remove
219
+ * @param currentPath - Current path in the data structure
220
+ * @returns Filtered data object
221
+ */ const filterDataByRemovedPaths = (data, initialValues, schema, components, removedPaths, currentPath = [])=>{
222
+ if (!schema?.attributes) return data;
223
+ const result = {};
224
+ for (const [attrName, attrDef] of Object.entries(schema.attributes)){
225
+ const fullPath = [
226
+ ...currentPath,
227
+ attrName
228
+ ].join('.');
229
+ // Check if this field should be removed
230
+ if (removedPaths.includes(fullPath)) {
231
+ continue;
232
+ }
233
+ // Handle fields with visible: false - preserve from data or initialValues
234
+ if ('visible' in attrDef && attrDef.visible === false) {
235
+ const userProvided = Object.hasOwn(data, attrName);
236
+ if (userProvided) {
237
+ result[attrName] = data[attrName];
238
+ } else if (attrName in initialValues) {
239
+ result[attrName] = initialValues[attrName];
240
+ }
156
241
  continue;
157
242
  }
158
- const userProvided = Object.prototype.hasOwnProperty.call(data, attrName);
243
+ const userProvided = Object.hasOwn(data, attrName);
159
244
  const currentValue = userProvided ? data[attrName] : undefined;
160
245
  const initialValue = initialValues?.[attrName];
161
- // 🔹 Handle components
246
+ // Handle components
162
247
  if (attrDef.type === 'component') {
163
248
  const compSchema = components[attrDef.component];
164
- const value = currentValue ?? initialValue;
249
+ const value = currentValue === undefined ? initialValue : currentValue;
165
250
  if (!value) {
166
251
  result[attrName] = attrDef.repeatable ? [] : null;
167
252
  continue;
168
253
  }
169
254
  if (attrDef.repeatable && Array.isArray(value)) {
170
- result[attrName] = value.map((item, index)=>handleInvisibleAttributes(item, {
171
- schema: compSchema,
172
- initialValues: initialValue?.[index] ?? {},
173
- components
174
- }, [
175
- ...path,
176
- `${attrName}[${index}]`
177
- ], removedAttributes).data);
255
+ result[attrName] = value.map((item)=>{
256
+ const componentInitialValue = getItemInitialValue(initialValue, item);
257
+ return filterDataByRemovedPaths(item, componentInitialValue, compSchema, components, removedPaths, [
258
+ ...currentPath,
259
+ `${attrName}[${item.__temp_key__}]`
260
+ ]);
261
+ });
178
262
  } else {
179
- result[attrName] = handleInvisibleAttributes(value, {
180
- schema: compSchema,
181
- initialValues: initialValue ?? {},
182
- components
183
- }, [
184
- ...path,
263
+ result[attrName] = filterDataByRemovedPaths(value, initialValue ?? {}, compSchema, components, removedPaths, [
264
+ ...currentPath,
185
265
  attrName
186
- ], removedAttributes).data;
266
+ ]);
187
267
  }
188
268
  continue;
189
269
  }
190
- // 🔸 Handle dynamic zones
270
+ // Handle dynamic zones
191
271
  if (attrDef.type === 'dynamiczone') {
192
272
  if (!Array.isArray(currentValue)) {
193
273
  result[attrName] = [];
194
274
  continue;
195
275
  }
196
- result[attrName] = currentValue.map((dzItem, index)=>{
276
+ result[attrName] = currentValue.map((dzItem)=>{
197
277
  const compUID = dzItem?.__component;
198
278
  const compSchema = components[compUID];
199
- const cleaned = handleInvisibleAttributes(dzItem, {
200
- schema: compSchema,
201
- initialValues: initialValue?.[index] ?? {},
202
- components
203
- }, [
204
- ...path,
205
- `${attrName}[${index}]`
206
- ], removedAttributes).data;
207
- // For newly created components, we want to be sure that the id is undefined (in case of reordering items)
279
+ const componentInitialValue = getItemInitialValue(initialValue, dzItem);
280
+ const cleaned = filterDataByRemovedPaths(dzItem, componentInitialValue, compSchema, components, removedPaths, [
281
+ ...currentPath,
282
+ `${attrName}[${dzItem.__temp_key__}]`
283
+ ]);
284
+ // For newly created components, ensure id is undefined (in case of reordering)
208
285
  const processedItem = dzItem.id === undefined || dzItem.id === null ? {
209
286
  __component: compUID,
210
287
  ...cleaned,
@@ -217,20 +294,37 @@ const BLOCK_LIST_ATTRIBUTE_KEYS = [
217
294
  });
218
295
  continue;
219
296
  }
220
- // 🟡 Handle scalar/primitive
297
+ // Regular fields - preserve from data or initialValues
221
298
  if (currentValue !== undefined) {
222
299
  result[attrName] = currentValue;
223
300
  } else if (initialValue !== undefined) {
224
301
  result[attrName] = initialValue;
225
- } else {
226
- if (attrName === 'id' || attrName === 'documentId') {
227
- continue;
228
- }
229
- result[attrName] = null;
230
302
  }
231
303
  }
304
+ // Pass through any fields from data that aren't in the schema
305
+ for (const [key, value] of Object.entries(data)){
306
+ if (!(key in result) && !(key in (schema?.attributes || {}))) {
307
+ result[key] = value;
308
+ }
309
+ }
310
+ return result;
311
+ };
312
+ /**
313
+ * Removes values from the data object if their corresponding attribute has a
314
+ * visibility condition that evaluates to false.
315
+ *
316
+ * @param data - The data object to filter based on visibility
317
+ * @param options - Schema, initialValues, and components
318
+ * @returns Object with filtered data and list of removed attribute paths
319
+ */ const handleInvisibleAttributes = (data, { schema, initialValues = {}, components = {} })=>{
320
+ if (!schema?.attributes) return {
321
+ data,
322
+ removedAttributes: []
323
+ };
324
+ const removedAttributes = collectInvisibleAttributes(data, schema, components);
325
+ const filteredData = filterDataByRemovedPaths(data, initialValues, schema, components, removedAttributes);
232
326
  return {
233
- data: result,
327
+ data: filteredData,
234
328
  removedAttributes
235
329
  };
236
330
  };