@strapi/content-manager 0.0.0-next.990615b2ed4dd2f0589b4fda91418246d7b9450e → 0.0.0-next.9b24f8f26a4217f9f2873c24ebbdfdcb25de62d3

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 (488) 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 +306 -205
  10. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Fields.mjs +311 -211
  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 +94 -50
  30. package/dist/admin/components/LeftMenu.js.map +1 -1
  31. package/dist/admin/components/LeftMenu.mjs +97 -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 +287 -11
  36. package/dist/admin/components/Widgets.js.map +1 -1
  37. package/dist/admin/components/Widgets.mjs +270 -14
  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 +24 -6
  44. package/dist/admin/history/components/VersionContent.js.map +1 -1
  45. package/dist/admin/history/components/VersionContent.mjs +25 -7
  46. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  47. package/dist/admin/history/components/VersionHeader.js +7 -0
  48. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  49. package/dist/admin/history/components/VersionHeader.mjs +8 -1
  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 +31 -11
  66. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  67. package/dist/admin/hooks/useDocumentActions.mjs +32 -12
  68. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  69. package/dist/admin/index.js +47 -8
  70. package/dist/admin/index.js.map +1 -1
  71. package/dist/admin/index.mjs +47 -9
  72. package/dist/admin/index.mjs.map +1 -1
  73. package/dist/admin/layout.js +28 -33
  74. package/dist/admin/layout.js.map +1 -1
  75. package/dist/admin/layout.mjs +29 -15
  76. package/dist/admin/layout.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/EditViewPage.js +98 -77
  78. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  79. package/dist/admin/pages/EditView/EditViewPage.mjs +100 -79
  80. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  82. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  83. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  84. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  85. package/dist/admin/pages/EditView/components/DocumentActions.js +150 -126
  86. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  87. package/dist/admin/pages/EditView/components/DocumentActions.mjs +153 -129
  88. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  90. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  92. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  94. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +16 -19
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +16 -19
  102. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  104. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  106. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +22 -35
  108. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +22 -35
  110. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  112. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  114. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  116. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  118. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  120. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  122. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  124. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -3
  126. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -4
  128. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  130. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  132. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  134. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +22 -9
  136. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +24 -11
  138. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +2 -0
  142. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +2 -0
  144. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +160 -107
  146. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +163 -110
  148. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/UID.js +6 -3
  150. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +6 -3
  152. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  158. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  160. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  164. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  166. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  168. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormLayout.js +59 -34
  172. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormLayout.mjs +60 -34
  174. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  175. package/dist/admin/pages/EditView/components/Header.js +92 -27
  176. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  177. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  178. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  179. package/dist/admin/pages/EditView/components/InputRenderer.js +42 -25
  180. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  181. package/dist/admin/pages/EditView/components/InputRenderer.mjs +42 -25
  182. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  183. package/dist/admin/pages/EditView/utils/data.js +214 -11
  184. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  185. package/dist/admin/pages/EditView/utils/data.mjs +214 -12
  186. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  187. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  188. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  189. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  190. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  191. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js +1 -0
  192. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  193. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -0
  194. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  195. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js +1 -1
  196. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  197. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  198. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  199. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  200. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  201. package/dist/admin/pages/ListConfiguration/components/Settings.js +1 -1
  202. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  203. package/dist/admin/pages/ListConfiguration/components/Settings.mjs +1 -1
  204. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  205. package/dist/admin/pages/ListView/ListViewPage.js +225 -132
  206. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  207. package/dist/admin/pages/ListView/ListViewPage.mjs +227 -134
  208. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  209. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  210. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  211. package/dist/admin/pages/ListView/components/BulkActions/Actions.js +6 -16
  212. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  213. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +6 -16
  214. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  215. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +20 -32
  216. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  217. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +21 -33
  218. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  219. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +13 -3
  220. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  221. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +13 -3
  222. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  223. package/dist/admin/pages/ListView/components/Filters.js +8 -2
  224. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  225. package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
  226. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  227. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  228. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  229. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  230. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  231. package/dist/admin/pages/ListView/components/TableCells/CellContent.js +1 -1
  232. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  233. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +1 -1
  234. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  235. package/dist/admin/pages/ListView/components/TableCells/Media.js +5 -3
  236. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  237. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +5 -3
  238. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  239. package/dist/admin/pages/ListView/components/TableCells/Relations.js +8 -4
  240. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  241. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +8 -4
  242. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  243. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  244. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  245. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  246. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  247. package/dist/admin/preview/components/InputPopover.js +189 -0
  248. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  249. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  250. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  251. package/dist/admin/preview/components/PreviewHeader.js +0 -2
  252. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  253. package/dist/admin/preview/components/PreviewHeader.mjs +0 -2
  254. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  255. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  256. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  257. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  258. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  259. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  260. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  261. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  262. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  263. package/dist/admin/preview/pages/Preview.js +178 -74
  264. package/dist/admin/preview/pages/Preview.js.map +1 -1
  265. package/dist/admin/preview/pages/Preview.mjs +180 -76
  266. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  267. package/dist/admin/preview/services/preview.js.map +1 -1
  268. package/dist/admin/preview/services/preview.mjs.map +1 -1
  269. package/dist/admin/preview/utils/constants.js +56 -0
  270. package/dist/admin/preview/utils/constants.js.map +1 -0
  271. package/dist/admin/preview/utils/constants.mjs +52 -0
  272. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  273. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  274. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  275. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  276. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  277. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  278. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  279. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  280. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  281. package/dist/admin/preview/utils/previewScript.js +534 -0
  282. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  283. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  284. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  285. package/dist/admin/router.js.map +1 -1
  286. package/dist/admin/router.mjs.map +1 -1
  287. package/dist/admin/services/api.js +5 -1
  288. package/dist/admin/services/api.js.map +1 -1
  289. package/dist/admin/services/api.mjs +5 -1
  290. package/dist/admin/services/api.mjs.map +1 -1
  291. package/dist/admin/services/documents.js +59 -17
  292. package/dist/admin/services/documents.js.map +1 -1
  293. package/dist/admin/services/documents.mjs +59 -17
  294. package/dist/admin/services/documents.mjs.map +1 -1
  295. package/dist/admin/services/homepage.js.map +1 -1
  296. package/dist/admin/services/homepage.mjs.map +1 -1
  297. package/dist/admin/services/relations.js.map +1 -1
  298. package/dist/admin/services/relations.mjs.map +1 -1
  299. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  300. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  301. package/dist/admin/src/components/Widgets.d.ts +8 -3
  302. package/dist/admin/src/exports.d.ts +1 -0
  303. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  304. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  305. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  306. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
  307. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  308. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  309. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +1 -1
  310. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
  311. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  312. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  313. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  314. package/dist/admin/src/pages/ListView/components/TableCells/Relations.d.ts +0 -3
  315. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  316. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  317. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  318. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  319. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  320. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  321. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  322. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  323. package/dist/admin/src/services/api.d.ts +1 -1
  324. package/dist/admin/src/services/components.d.ts +2 -2
  325. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  326. package/dist/admin/src/services/documents.d.ts +23 -17
  327. package/dist/admin/src/services/homepage.d.ts +1 -1
  328. package/dist/admin/src/services/init.d.ts +1 -1
  329. package/dist/admin/src/services/relations.d.ts +2 -2
  330. package/dist/admin/src/services/uid.d.ts +3 -3
  331. package/dist/admin/src/utils/api.d.ts +1 -1
  332. package/dist/admin/src/utils/validation.d.ts +1 -0
  333. package/dist/admin/translations/en.json.js +14 -0
  334. package/dist/admin/translations/en.json.js.map +1 -1
  335. package/dist/admin/translations/en.json.mjs +14 -0
  336. package/dist/admin/translations/en.json.mjs.map +1 -1
  337. package/dist/admin/translations/es.json.js +7 -2
  338. package/dist/admin/translations/es.json.js.map +1 -1
  339. package/dist/admin/translations/es.json.mjs +7 -2
  340. package/dist/admin/translations/es.json.mjs.map +1 -1
  341. package/dist/admin/translations/fr.json.js +13 -3
  342. package/dist/admin/translations/fr.json.js.map +1 -1
  343. package/dist/admin/translations/fr.json.mjs +13 -3
  344. package/dist/admin/translations/fr.json.mjs.map +1 -1
  345. package/dist/admin/utils/api.js +1 -1
  346. package/dist/admin/utils/api.js.map +1 -1
  347. package/dist/admin/utils/api.mjs +1 -1
  348. package/dist/admin/utils/api.mjs.map +1 -1
  349. package/dist/admin/utils/translations.js.map +1 -1
  350. package/dist/admin/utils/translations.mjs.map +1 -1
  351. package/dist/admin/utils/urls.js.map +1 -1
  352. package/dist/admin/utils/urls.mjs.map +1 -1
  353. package/dist/admin/utils/users.js.map +1 -1
  354. package/dist/admin/utils/users.mjs.map +1 -1
  355. package/dist/admin/utils/validation.js +20 -8
  356. package/dist/admin/utils/validation.js.map +1 -1
  357. package/dist/admin/utils/validation.mjs +20 -8
  358. package/dist/admin/utils/validation.mjs.map +1 -1
  359. package/dist/server/controllers/collection-types.js +2 -1
  360. package/dist/server/controllers/collection-types.js.map +1 -1
  361. package/dist/server/controllers/collection-types.mjs +2 -1
  362. package/dist/server/controllers/collection-types.mjs.map +1 -1
  363. package/dist/server/controllers/content-types.js +11 -1
  364. package/dist/server/controllers/content-types.js.map +1 -1
  365. package/dist/server/controllers/content-types.mjs +11 -1
  366. package/dist/server/controllers/content-types.mjs.map +1 -1
  367. package/dist/server/controllers/relations.js +8 -6
  368. package/dist/server/controllers/relations.js.map +1 -1
  369. package/dist/server/controllers/relations.mjs +8 -6
  370. package/dist/server/controllers/relations.mjs.map +1 -1
  371. package/dist/server/controllers/single-types.js +3 -1
  372. package/dist/server/controllers/single-types.js.map +1 -1
  373. package/dist/server/controllers/single-types.mjs +3 -1
  374. package/dist/server/controllers/single-types.mjs.map +1 -1
  375. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  376. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  377. package/dist/server/controllers/validation/index.js +14 -2
  378. package/dist/server/controllers/validation/index.js.map +1 -1
  379. package/dist/server/controllers/validation/index.mjs +14 -2
  380. package/dist/server/controllers/validation/index.mjs.map +1 -1
  381. package/dist/server/controllers/validation/model-configuration.js +2 -2
  382. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  383. package/dist/server/controllers/validation/model-configuration.mjs +2 -2
  384. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  385. package/dist/server/history/services/lifecycles.js +23 -19
  386. package/dist/server/history/services/lifecycles.js.map +1 -1
  387. package/dist/server/history/services/lifecycles.mjs +23 -19
  388. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  389. package/dist/server/history/utils.js.map +1 -1
  390. package/dist/server/history/utils.mjs.map +1 -1
  391. package/dist/server/homepage/controllers/homepage.js +5 -0
  392. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  393. package/dist/server/homepage/controllers/homepage.mjs +5 -0
  394. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  395. package/dist/server/homepage/routes/homepage.js +11 -0
  396. package/dist/server/homepage/routes/homepage.js.map +1 -1
  397. package/dist/server/homepage/routes/homepage.mjs +11 -0
  398. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  399. package/dist/server/homepage/services/homepage.js +87 -46
  400. package/dist/server/homepage/services/homepage.js.map +1 -1
  401. package/dist/server/homepage/services/homepage.mjs +87 -46
  402. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  403. package/dist/server/middlewares/routing.js.map +1 -1
  404. package/dist/server/middlewares/routing.mjs.map +1 -1
  405. package/dist/server/preview/services/preview-config.js +11 -32
  406. package/dist/server/preview/services/preview-config.js.map +1 -1
  407. package/dist/server/preview/services/preview-config.mjs +12 -33
  408. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  409. package/dist/server/preview/services/preview.js +4 -0
  410. package/dist/server/preview/services/preview.js.map +1 -1
  411. package/dist/server/preview/services/preview.mjs +4 -0
  412. package/dist/server/preview/services/preview.mjs.map +1 -1
  413. package/dist/server/preview/utils.js.map +1 -1
  414. package/dist/server/preview/utils.mjs.map +1 -1
  415. package/dist/server/services/configuration.js.map +1 -1
  416. package/dist/server/services/configuration.mjs.map +1 -1
  417. package/dist/server/services/data-mapper.js +4 -1
  418. package/dist/server/services/data-mapper.js.map +1 -1
  419. package/dist/server/services/data-mapper.mjs +4 -1
  420. package/dist/server/services/data-mapper.mjs.map +1 -1
  421. package/dist/server/services/document-manager.js +8 -1
  422. package/dist/server/services/document-manager.js.map +1 -1
  423. package/dist/server/services/document-manager.mjs +8 -1
  424. package/dist/server/services/document-manager.mjs.map +1 -1
  425. package/dist/server/services/document-metadata.js +26 -2
  426. package/dist/server/services/document-metadata.js.map +1 -1
  427. package/dist/server/services/document-metadata.mjs +26 -2
  428. package/dist/server/services/document-metadata.mjs.map +1 -1
  429. package/dist/server/services/field-sizes.js.map +1 -1
  430. package/dist/server/services/field-sizes.mjs.map +1 -1
  431. package/dist/server/services/uid.js.map +1 -1
  432. package/dist/server/services/uid.mjs.map +1 -1
  433. package/dist/server/services/utils/configuration/attributes.js +1 -1
  434. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  435. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  436. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  437. package/dist/server/services/utils/configuration/layouts.js +1 -1
  438. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  439. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  440. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  441. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  442. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  443. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  444. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  445. package/dist/server/services/utils/populate.js +11 -0
  446. package/dist/server/services/utils/populate.js.map +1 -1
  447. package/dist/server/services/utils/populate.mjs +11 -0
  448. package/dist/server/services/utils/populate.mjs.map +1 -1
  449. package/dist/server/services/utils/store.js.map +1 -1
  450. package/dist/server/services/utils/store.mjs.map +1 -1
  451. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  452. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  453. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  454. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  455. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  456. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  457. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  458. package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
  459. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  460. package/dist/server/src/homepage/index.d.ts +7 -0
  461. package/dist/server/src/homepage/index.d.ts.map +1 -1
  462. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
  463. package/dist/server/src/homepage/services/homepage.d.ts +4 -1
  464. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  465. package/dist/server/src/homepage/services/index.d.ts +7 -0
  466. package/dist/server/src/homepage/services/index.d.ts.map +1 -1
  467. package/dist/server/src/index.d.ts +8 -0
  468. package/dist/server/src/index.d.ts.map +1 -1
  469. package/dist/server/src/preview/services/index.d.ts +1 -0
  470. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  471. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  472. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  473. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  474. package/dist/server/src/preview/utils.d.ts +1 -0
  475. package/dist/server/src/preview/utils.d.ts.map +1 -1
  476. package/dist/server/src/services/data-mapper.d.ts +1 -0
  477. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  478. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  479. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  480. package/dist/server/src/services/index.d.ts +8 -0
  481. package/dist/server/src/services/index.d.ts.map +1 -1
  482. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  483. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  484. package/dist/shared/contracts/collection-types.d.ts +0 -1
  485. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  486. package/dist/shared/contracts/homepage.d.ts +13 -0
  487. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  488. package/package.json +13 -11
@@ -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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"}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
3
4
  var fractionalIndexing = require('fractional-indexing');
4
5
  var pipe = require('lodash/fp/pipe');
5
6
  var attributes = require('../../../constants/attributes.js');
@@ -103,16 +104,8 @@ const BLOCK_LIST_ATTRIBUTE_KEYS = [
103
104
  * @internal
104
105
  * @description We need to remove null fields from the data-structure because it will pass it
105
106
  * to the specific inputs breaking them as most would prefer empty strings or `undefined` if
106
- * they're controlled / uncontrolled.
107
- */ const removeNullValues = (data)=>{
108
- return Object.entries(data).reduce((acc, [key, value])=>{
109
- if (value === null) {
110
- return acc;
111
- }
112
- acc[key] = value;
113
- return acc;
114
- }, {});
115
- };
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);
116
109
  /* -------------------------------------------------------------------------------------------------
117
110
  * transformDocuments
118
111
  * -----------------------------------------------------------------------------------------------*/ /**
@@ -123,10 +116,220 @@ const BLOCK_LIST_ATTRIBUTE_KEYS = [
123
116
  */ const transformDocument = (schema, components = {})=>(document)=>{
124
117
  const transformations = pipe(removeFieldsThatDontExistOnSchema(schema), removeProhibitedFields([
125
118
  'password'
126
- ])(schema, components), removeNullValues, prepareRelations(schema, components), prepareTempKeys(schema, components));
119
+ ])(schema, components), removeNullValues(schema, components), prepareRelations(schema, components), prepareTempKeys(schema, components));
127
120
  return transformations(document);
128
121
  };
122
+ /**
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.
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 [];
149
+ const rulesEngine = strapiAdmin.createRulesEngine();
150
+ const removedPaths = [];
151
+ const evaluatedData = {};
152
+ for (const [attrName, attrDef] of Object.entries(schema.attributes)){
153
+ const fullPath = [
154
+ ...path,
155
+ attrName
156
+ ].join('.');
157
+ // Skip fields with visible: false - they're managed by backend
158
+ if ('visible' in attrDef && attrDef.visible === false) {
159
+ continue;
160
+ }
161
+ const condition = attrDef?.conditions?.visible;
162
+ const isVisible = condition ? rulesEngine.evaluate(condition, {
163
+ ...data,
164
+ ...evaluatedData
165
+ }) : true;
166
+ if (!isVisible) {
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
+ }
241
+ continue;
242
+ }
243
+ const userProvided = Object.hasOwn(data, attrName);
244
+ const currentValue = userProvided ? data[attrName] : undefined;
245
+ const initialValue = initialValues?.[attrName];
246
+ // Handle components
247
+ if (attrDef.type === 'component') {
248
+ const compSchema = components[attrDef.component];
249
+ const value = currentValue === undefined ? initialValue : currentValue;
250
+ if (!value) {
251
+ result[attrName] = attrDef.repeatable ? [] : null;
252
+ continue;
253
+ }
254
+ if (attrDef.repeatable && Array.isArray(value)) {
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
+ });
262
+ } else {
263
+ result[attrName] = filterDataByRemovedPaths(value, initialValue ?? {}, compSchema, components, removedPaths, [
264
+ ...currentPath,
265
+ attrName
266
+ ]);
267
+ }
268
+ continue;
269
+ }
270
+ // Handle dynamic zones
271
+ if (attrDef.type === 'dynamiczone') {
272
+ if (!Array.isArray(currentValue)) {
273
+ result[attrName] = [];
274
+ continue;
275
+ }
276
+ result[attrName] = currentValue.map((dzItem)=>{
277
+ const compUID = dzItem?.__component;
278
+ const compSchema = components[compUID];
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)
285
+ const processedItem = dzItem.id === undefined || dzItem.id === null ? {
286
+ __component: compUID,
287
+ ...cleaned,
288
+ id: undefined
289
+ } : {
290
+ __component: compUID,
291
+ ...cleaned
292
+ };
293
+ return processedItem;
294
+ });
295
+ continue;
296
+ }
297
+ // Regular fields - preserve from data or initialValues
298
+ if (currentValue !== undefined) {
299
+ result[attrName] = currentValue;
300
+ } else if (initialValue !== undefined) {
301
+ result[attrName] = initialValue;
302
+ }
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);
326
+ return {
327
+ data: filteredData,
328
+ removedAttributes
329
+ };
330
+ };
129
331
 
332
+ exports.handleInvisibleAttributes = handleInvisibleAttributes;
130
333
  exports.prepareRelations = prepareRelations;
131
334
  exports.prepareTempKeys = prepareTempKeys;
132
335
  exports.removeFieldsThatDontExistOnSchema = removeFieldsThatDontExistOnSchema;