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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +1 -1
  2. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
  4. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/Fields.js +304 -205
  6. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.mjs +309 -211
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  12. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  13. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  14. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  15. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/LeftMenu.js +94 -50
  26. package/dist/admin/components/LeftMenu.js.map +1 -1
  27. package/dist/admin/components/LeftMenu.mjs +97 -53
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/Widgets.js +287 -11
  30. package/dist/admin/components/Widgets.js.map +1 -1
  31. package/dist/admin/components/Widgets.mjs +270 -14
  32. package/dist/admin/components/Widgets.mjs.map +1 -1
  33. package/dist/admin/history/components/VersionContent.js +24 -3
  34. package/dist/admin/history/components/VersionContent.js.map +1 -1
  35. package/dist/admin/history/components/VersionContent.mjs +25 -4
  36. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  37. package/dist/admin/history/components/VersionHeader.js +7 -0
  38. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  39. package/dist/admin/history/components/VersionHeader.mjs +8 -1
  40. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  41. package/dist/admin/history/components/VersionsList.js +1 -1
  42. package/dist/admin/history/components/VersionsList.js.map +1 -1
  43. package/dist/admin/history/components/VersionsList.mjs +1 -1
  44. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  45. package/dist/admin/history/pages/History.js +7 -7
  46. package/dist/admin/history/pages/History.js.map +1 -1
  47. package/dist/admin/history/pages/History.mjs +7 -7
  48. package/dist/admin/history/pages/History.mjs.map +1 -1
  49. package/dist/admin/hooks/useDocumentActions.js +7 -6
  50. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  51. package/dist/admin/hooks/useDocumentActions.mjs +8 -7
  52. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  53. package/dist/admin/index.js +47 -8
  54. package/dist/admin/index.js.map +1 -1
  55. package/dist/admin/index.mjs +47 -9
  56. package/dist/admin/index.mjs.map +1 -1
  57. package/dist/admin/layout.js +28 -33
  58. package/dist/admin/layout.js.map +1 -1
  59. package/dist/admin/layout.mjs +29 -15
  60. package/dist/admin/layout.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/EditViewPage.js +98 -77
  62. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  63. package/dist/admin/pages/EditView/EditViewPage.mjs +100 -79
  64. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  66. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  67. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  68. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  69. package/dist/admin/pages/EditView/components/DocumentActions.js +109 -73
  70. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/DocumentActions.mjs +111 -75
  72. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  74. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  76. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  78. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  80. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  82. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  84. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  86. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  88. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  90. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  92. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  94. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  98. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  100. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -3
  102. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -4
  104. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  106. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  108. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +22 -8
  110. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +24 -10
  112. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  114. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  116. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +160 -107
  118. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +163 -110
  120. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/UID.js +6 -3
  122. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +6 -3
  124. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  126. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  128. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  130. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  132. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  134. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  136. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormLayout.js +59 -34
  138. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormLayout.mjs +60 -34
  140. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/Header.js +92 -27
  142. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  143. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  144. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/InputRenderer.js +32 -18
  146. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/InputRenderer.mjs +32 -18
  148. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/utils/data.js +128 -0
  150. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  151. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  152. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  153. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  154. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  155. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  156. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  157. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  158. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  159. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  160. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  161. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  162. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  163. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  164. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  165. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  166. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  167. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  168. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  169. package/dist/admin/pages/ListView/components/Filters.js +8 -2
  170. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  171. package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
  172. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  173. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  174. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  175. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  176. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  177. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  178. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  179. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  180. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  181. package/dist/admin/preview/components/InputPopover.js +189 -0
  182. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  183. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  184. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  185. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  186. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  187. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  188. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  189. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  190. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  191. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  192. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  193. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  194. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  195. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  196. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  197. package/dist/admin/preview/pages/Preview.js +178 -74
  198. package/dist/admin/preview/pages/Preview.js.map +1 -1
  199. package/dist/admin/preview/pages/Preview.mjs +180 -76
  200. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  201. package/dist/admin/preview/utils/constants.js +56 -0
  202. package/dist/admin/preview/utils/constants.js.map +1 -0
  203. package/dist/admin/preview/utils/constants.mjs +52 -0
  204. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  205. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  206. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  207. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  208. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  209. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  210. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  211. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  212. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  213. package/dist/admin/preview/utils/previewScript.js +534 -0
  214. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  215. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  216. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  217. package/dist/admin/services/api.js +5 -1
  218. package/dist/admin/services/api.js.map +1 -1
  219. package/dist/admin/services/api.mjs +5 -1
  220. package/dist/admin/services/api.mjs.map +1 -1
  221. package/dist/admin/services/documents.js +59 -17
  222. package/dist/admin/services/documents.js.map +1 -1
  223. package/dist/admin/services/documents.mjs +59 -17
  224. package/dist/admin/services/documents.mjs.map +1 -1
  225. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  226. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  227. package/dist/admin/src/components/Widgets.d.ts +8 -3
  228. package/dist/admin/src/exports.d.ts +1 -0
  229. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  230. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  231. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  232. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  233. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  234. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
  235. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  236. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  237. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  238. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  239. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  240. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  241. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  242. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  243. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  244. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  245. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  246. package/dist/admin/src/services/api.d.ts +1 -1
  247. package/dist/admin/src/services/components.d.ts +2 -2
  248. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  249. package/dist/admin/src/services/documents.d.ts +23 -17
  250. package/dist/admin/src/services/homepage.d.ts +1 -1
  251. package/dist/admin/src/services/init.d.ts +1 -1
  252. package/dist/admin/src/services/relations.d.ts +2 -2
  253. package/dist/admin/src/services/uid.d.ts +3 -3
  254. package/dist/admin/src/utils/api.d.ts +1 -1
  255. package/dist/admin/src/utils/validation.d.ts +1 -0
  256. package/dist/admin/translations/en.json.js +13 -0
  257. package/dist/admin/translations/en.json.js.map +1 -1
  258. package/dist/admin/translations/en.json.mjs +13 -0
  259. package/dist/admin/translations/en.json.mjs.map +1 -1
  260. package/dist/admin/translations/es.json.js +6 -2
  261. package/dist/admin/translations/es.json.js.map +1 -1
  262. package/dist/admin/translations/es.json.mjs +6 -2
  263. package/dist/admin/translations/es.json.mjs.map +1 -1
  264. package/dist/admin/translations/fr.json.js +11 -2
  265. package/dist/admin/translations/fr.json.js.map +1 -1
  266. package/dist/admin/translations/fr.json.mjs +11 -2
  267. package/dist/admin/translations/fr.json.mjs.map +1 -1
  268. package/dist/admin/utils/api.js +1 -1
  269. package/dist/admin/utils/api.js.map +1 -1
  270. package/dist/admin/utils/api.mjs +1 -1
  271. package/dist/admin/utils/api.mjs.map +1 -1
  272. package/dist/admin/utils/validation.js +19 -7
  273. package/dist/admin/utils/validation.js.map +1 -1
  274. package/dist/admin/utils/validation.mjs +19 -7
  275. package/dist/admin/utils/validation.mjs.map +1 -1
  276. package/dist/server/controllers/collection-types.js +2 -1
  277. package/dist/server/controllers/collection-types.js.map +1 -1
  278. package/dist/server/controllers/collection-types.mjs +2 -1
  279. package/dist/server/controllers/collection-types.mjs.map +1 -1
  280. package/dist/server/controllers/content-types.js +11 -1
  281. package/dist/server/controllers/content-types.js.map +1 -1
  282. package/dist/server/controllers/content-types.mjs +11 -1
  283. package/dist/server/controllers/content-types.mjs.map +1 -1
  284. package/dist/server/controllers/relations.js +8 -6
  285. package/dist/server/controllers/relations.js.map +1 -1
  286. package/dist/server/controllers/relations.mjs +8 -6
  287. package/dist/server/controllers/relations.mjs.map +1 -1
  288. package/dist/server/controllers/single-types.js.map +1 -1
  289. package/dist/server/controllers/single-types.mjs.map +1 -1
  290. package/dist/server/controllers/validation/index.js +14 -2
  291. package/dist/server/controllers/validation/index.js.map +1 -1
  292. package/dist/server/controllers/validation/index.mjs +14 -2
  293. package/dist/server/controllers/validation/index.mjs.map +1 -1
  294. package/dist/server/history/services/lifecycles.js +23 -19
  295. package/dist/server/history/services/lifecycles.js.map +1 -1
  296. package/dist/server/history/services/lifecycles.mjs +23 -19
  297. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  298. package/dist/server/homepage/controllers/homepage.js +5 -0
  299. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  300. package/dist/server/homepage/controllers/homepage.mjs +5 -0
  301. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  302. package/dist/server/homepage/routes/homepage.js +11 -0
  303. package/dist/server/homepage/routes/homepage.js.map +1 -1
  304. package/dist/server/homepage/routes/homepage.mjs +11 -0
  305. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  306. package/dist/server/homepage/services/homepage.js +86 -46
  307. package/dist/server/homepage/services/homepage.js.map +1 -1
  308. package/dist/server/homepage/services/homepage.mjs +86 -46
  309. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  310. package/dist/server/preview/services/preview-config.js +11 -32
  311. package/dist/server/preview/services/preview-config.js.map +1 -1
  312. package/dist/server/preview/services/preview-config.mjs +12 -33
  313. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  314. package/dist/server/preview/services/preview.js +4 -0
  315. package/dist/server/preview/services/preview.js.map +1 -1
  316. package/dist/server/preview/services/preview.mjs +4 -0
  317. package/dist/server/preview/services/preview.mjs.map +1 -1
  318. package/dist/server/services/data-mapper.js +4 -1
  319. package/dist/server/services/data-mapper.js.map +1 -1
  320. package/dist/server/services/data-mapper.mjs +4 -1
  321. package/dist/server/services/data-mapper.mjs.map +1 -1
  322. package/dist/server/services/document-manager.js +8 -1
  323. package/dist/server/services/document-manager.js.map +1 -1
  324. package/dist/server/services/document-manager.mjs +8 -1
  325. package/dist/server/services/document-manager.mjs.map +1 -1
  326. package/dist/server/services/document-metadata.js +26 -2
  327. package/dist/server/services/document-metadata.js.map +1 -1
  328. package/dist/server/services/document-metadata.mjs +26 -2
  329. package/dist/server/services/document-metadata.mjs.map +1 -1
  330. package/dist/server/services/utils/configuration/attributes.js +1 -1
  331. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  332. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  333. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  334. package/dist/server/services/utils/configuration/layouts.js +1 -1
  335. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  336. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  337. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  338. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  339. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  340. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  341. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  342. package/dist/server/services/utils/populate.js +11 -0
  343. package/dist/server/services/utils/populate.js.map +1 -1
  344. package/dist/server/services/utils/populate.mjs +11 -0
  345. package/dist/server/services/utils/populate.mjs.map +1 -1
  346. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  347. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  348. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  349. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  350. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  351. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  352. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  353. package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
  354. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  355. package/dist/server/src/homepage/index.d.ts +7 -0
  356. package/dist/server/src/homepage/index.d.ts.map +1 -1
  357. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
  358. package/dist/server/src/homepage/services/homepage.d.ts +4 -1
  359. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  360. package/dist/server/src/homepage/services/index.d.ts +7 -0
  361. package/dist/server/src/homepage/services/index.d.ts.map +1 -1
  362. package/dist/server/src/index.d.ts +8 -0
  363. package/dist/server/src/index.d.ts.map +1 -1
  364. package/dist/server/src/preview/services/index.d.ts +1 -0
  365. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  366. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  367. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  368. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  369. package/dist/server/src/preview/utils.d.ts +1 -0
  370. package/dist/server/src/preview/utils.d.ts.map +1 -1
  371. package/dist/server/src/services/data-mapper.d.ts +1 -0
  372. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  373. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  374. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  375. package/dist/server/src/services/index.d.ts +8 -0
  376. package/dist/server/src/services/index.d.ts.map +1 -1
  377. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  378. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  379. package/dist/shared/contracts/collection-types.d.ts +0 -1
  380. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  381. package/dist/shared/contracts/homepage.d.ts +13 -0
  382. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  383. package/package.json +11 -9
@@ -9,6 +9,8 @@ var DocumentRBAC = require('../../../features/DocumentRBAC.js');
9
9
  var useDocumentContext = require('../../../hooks/useDocumentContext.js');
10
10
  var useDocumentLayout = require('../../../hooks/useDocumentLayout.js');
11
11
  var useLazyComponents = require('../../../hooks/useLazyComponents.js');
12
+ var InputPopover = require('../../../preview/components/InputPopover.js');
13
+ var usePreviewInputManager = require('../../../preview/hooks/usePreviewInputManager.js');
12
14
  var BlocksInput = require('./FormInputs/BlocksInput/BlocksInput.js');
13
15
  var Input = require('./FormInputs/Component/Input.js');
14
16
  var Field = require('./FormInputs/DynamicZone/Field.js');
@@ -43,11 +45,14 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
43
45
  * specifically to be used in the EditView of the content-manager this understands
44
46
  * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific
45
47
  * components such as Blocks / Relations.
46
- */ const InputRenderer = ({ visible, hint: providedHint, document, ...props })=>{
48
+ */ const InputRenderer = ({ visible, hint: providedHint, document, ...inputProps })=>{
49
+ const localeKey = document?.document?.locale || 'default';
47
50
  const { currentDocumentMeta } = useDocumentContext.useDocumentContext('DynamicComponent');
48
51
  const { edit: { components } } = useDocumentLayout.useDocumentLayout(currentDocumentMeta.model);
49
52
  const collectionType = document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';
50
53
  const isInDynamicZone = Field.useDynamicZone('isInDynamicZone', (state)=>state.isInDynamicZone);
54
+ const isInPreviewPopover = InputPopover.useHasInputPopoverParent();
55
+ const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;
51
56
  const isFormDisabled = strapiAdmin.useForm('InputRenderer', (state)=>state.disabled);
52
57
  const canCreateFields = DocumentRBAC.useDocumentRBAC('InputRenderer', (rbac)=>rbac.canCreateFields);
53
58
  const canReadFields = DocumentRBAC.useDocumentRBAC('InputRenderer', (rbac)=>rbac.canReadFields);
@@ -59,6 +64,12 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
59
64
  }
60
65
  const editableFields = idToCheck ? canUpdateFields : canCreateFields;
61
66
  const readableFields = idToCheck ? canReadFields : canCreateFields;
67
+ // Everything preview related
68
+ const previewProps = usePreviewInputManager.usePreviewInputManager(inputProps.name, inputProps.attribute);
69
+ const props = {
70
+ ...inputProps,
71
+ ...previewProps
72
+ };
62
73
  /**
63
74
  * Component fields are always readable and editable,
64
75
  * however the fields within them may not be.
@@ -76,46 +87,47 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
76
87
  }
77
88
  /**
78
89
  * If the user can't read the field then we don't want to ever render it.
79
- */ if (!canUserReadField && !isInDynamicZone) {
90
+ */ if (!canUserReadField && !shouldIgnorePermissions) {
80
91
  return /*#__PURE__*/ jsxRuntime.jsx(NotAllowed.NotAllowedInput, {
81
92
  hint: hint,
82
93
  ...props
83
94
  });
84
95
  }
85
- const fieldIsDisabled = !canUserEditField && !isInDynamicZone || props.disabled || isFormDisabled;
96
+ const fieldIsDisabled = !canUserEditField && !shouldIgnorePermissions || props.disabled || isFormDisabled;
86
97
  /**
87
98
  * Because a custom field has a unique prop but the type could be confused with either
88
99
  * the useField hook or the type of the field we need to handle it separately and first.
89
100
  */ if (attributeHasCustomFieldProperty(props.attribute)) {
90
101
  const CustomInput = lazyComponentStore[props.attribute.customField];
91
102
  if (CustomInput) {
92
- // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
93
103
  return /*#__PURE__*/ jsxRuntime.jsx(CustomInput, {
94
104
  ...props,
95
105
  ...field,
106
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
96
107
  hint: hint,
97
108
  disabled: fieldIsDisabled
98
109
  });
99
110
  }
100
111
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
101
112
  ...props,
113
+ ...previewProps,
102
114
  hint: hint,
103
115
  // @ts-expect-error – this workaround lets us display that the custom field is missing.
104
116
  type: props.attribute.customField,
105
117
  disabled: fieldIsDisabled
106
- });
118
+ }, `input-${props.name}-${localeKey}`);
107
119
  }
108
120
  /**
109
121
  * This is where we handle ONLY the fields from the `useLibrary` hook.
110
122
  */ const addedInputTypes = Object.keys(fields);
111
123
  if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {
112
124
  const CustomInput = fields[props.type];
113
- // @ts-expect-error – TODO: fix this type error in the useLibrary hook.
114
125
  return /*#__PURE__*/ jsxRuntime.jsx(CustomInput, {
115
126
  ...props,
127
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
116
128
  hint: hint,
117
129
  disabled: fieldIsDisabled
118
- });
130
+ }, `input-${props.name}-${localeKey}`);
119
131
  }
120
132
  /**
121
133
  * These include the content-manager specific fields, failing that we fall back
@@ -127,48 +139,49 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
127
139
  hint: hint,
128
140
  type: props.type,
129
141
  disabled: fieldIsDisabled
130
- });
142
+ }, `input-${props.name}-${localeKey}`);
131
143
  case 'component':
132
144
  return /*#__PURE__*/ jsxRuntime.jsx(Input.ComponentInput, {
133
145
  ...props,
134
146
  hint: hint,
135
147
  layout: components[props.attribute.component].layout,
136
148
  disabled: fieldIsDisabled,
137
- children: (inputProps)=>/*#__PURE__*/ jsxRuntime.jsx(InputRenderer, {
138
- ...inputProps
139
- })
140
- });
149
+ children: (componentInputProps)=>/*#__PURE__*/ jsxRuntime.jsx(InputRenderer, {
150
+ ...componentInputProps
151
+ }, `input-${componentInputProps.name}-${localeKey}`)
152
+ }, `input-${props.name}-${localeKey}`);
141
153
  case 'dynamiczone':
142
154
  return /*#__PURE__*/ jsxRuntime.jsx(Field.DynamicZone, {
143
155
  ...props,
144
156
  hint: hint,
145
157
  disabled: fieldIsDisabled
146
- });
158
+ }, `input-${props.name}-${localeKey}`);
147
159
  case 'relation':
148
160
  return /*#__PURE__*/ jsxRuntime.jsx(Relations.RelationsInput, {
149
161
  ...props,
150
162
  hint: hint,
151
163
  disabled: fieldIsDisabled
152
- });
164
+ }, `input-${props.name}-${localeKey}`);
153
165
  case 'richtext':
154
166
  return /*#__PURE__*/ jsxRuntime.jsx(Field$1.Wysiwyg, {
155
167
  ...props,
156
168
  hint: hint,
157
169
  type: props.type,
158
170
  disabled: fieldIsDisabled
159
- });
171
+ }, `input-${props.name}-${localeKey}`);
160
172
  case 'uid':
161
173
  return /*#__PURE__*/ jsxRuntime.jsx(UID.UIDInput, {
162
174
  ...props,
163
175
  hint: hint,
164
176
  type: props.type,
165
177
  disabled: fieldIsDisabled
166
- });
178
+ }, `input-${props.name}-${localeKey}`);
167
179
  /**
168
180
  * Enumerations are a special case because they require options.
169
181
  */ case 'enumeration':
170
182
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
171
183
  ...props,
184
+ ...previewProps,
172
185
  hint: hint,
173
186
  options: props.attribute.enum.map((value)=>({
174
187
  value
@@ -176,17 +189,18 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
176
189
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
177
190
  type: props.customField ? 'custom-field' : props.type,
178
191
  disabled: fieldIsDisabled
179
- });
192
+ }, `input-${props.name}-${localeKey}`);
180
193
  default:
181
194
  // These props are not needed for the generic form input renderer.
182
195
  const { unique: _unique, mainField: _mainField, ...restProps } = props;
183
196
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
184
197
  ...restProps,
198
+ ...previewProps,
185
199
  hint: hint,
186
200
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
187
201
  type: props.customField ? 'custom-field' : props.type,
188
202
  disabled: fieldIsDisabled
189
- });
203
+ }, `input-${props.name}-${localeKey}`);
190
204
  }
191
205
  };
192
206
  const attributeHasCustomFieldProperty = (attribute)=>'customField' in attribute && typeof attribute.customField === 'string';
@@ -1 +1 @@
1
- {"version":3,"file":"InputRenderer.js","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.js","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 return (\n <UIDInput\n key={`input-${props.name}-${localeKey}`}\n {...props}\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 = !['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","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","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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"}
@@ -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,49 @@ 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':
140
152
  return /*#__PURE__*/ jsx(MemoizedUIDInput, {
141
153
  ...props,
142
154
  hint: hint,
143
155
  type: props.type,
144
156
  disabled: fieldIsDisabled
145
- });
157
+ }, `input-${props.name}-${localeKey}`);
146
158
  /**
147
159
  * Enumerations are a special case because they require options.
148
160
  */ case 'enumeration':
149
161
  return /*#__PURE__*/ jsx(InputRenderer$1, {
150
162
  ...props,
163
+ ...previewProps,
151
164
  hint: hint,
152
165
  options: props.attribute.enum.map((value)=>({
153
166
  value
@@ -155,17 +168,18 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
155
168
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
156
169
  type: props.customField ? 'custom-field' : props.type,
157
170
  disabled: fieldIsDisabled
158
- });
171
+ }, `input-${props.name}-${localeKey}`);
159
172
  default:
160
173
  // These props are not needed for the generic form input renderer.
161
174
  const { unique: _unique, mainField: _mainField, ...restProps } = props;
162
175
  return /*#__PURE__*/ jsx(InputRenderer$1, {
163
176
  ...restProps,
177
+ ...previewProps,
164
178
  hint: hint,
165
179
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
166
180
  type: props.customField ? 'custom-field' : props.type,
167
181
  disabled: fieldIsDisabled
168
- });
182
+ }, `input-${props.name}-${localeKey}`);
169
183
  }
170
184
  };
171
185
  const attributeHasCustomFieldProperty = (attribute)=>'customField' in attribute && typeof attribute.customField === 'string';
@@ -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 return (\n <UIDInput\n key={`input-${props.name}-${localeKey}`}\n {...props}\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 = !['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","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","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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"}