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

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 (311) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +35 -33
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +37 -35
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/components/Widgets.js +269 -9
  10. package/dist/admin/components/Widgets.js.map +1 -1
  11. package/dist/admin/components/Widgets.mjs +252 -12
  12. package/dist/admin/components/Widgets.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionContent.js +24 -3
  14. package/dist/admin/history/components/VersionContent.js.map +1 -1
  15. package/dist/admin/history/components/VersionContent.mjs +25 -4
  16. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  17. package/dist/admin/history/components/VersionHeader.js +6 -0
  18. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  19. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  20. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocumentActions.js +7 -6
  22. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  23. package/dist/admin/hooks/useDocumentActions.mjs +8 -7
  24. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  25. package/dist/admin/index.js +47 -8
  26. package/dist/admin/index.js.map +1 -1
  27. package/dist/admin/index.mjs +47 -9
  28. package/dist/admin/index.mjs.map +1 -1
  29. package/dist/admin/layout.js +1 -27
  30. package/dist/admin/layout.js.map +1 -1
  31. package/dist/admin/layout.mjs +2 -9
  32. package/dist/admin/layout.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/EditViewPage.js +92 -75
  34. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  35. package/dist/admin/pages/EditView/EditViewPage.mjs +94 -77
  36. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  38. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  39. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  40. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  41. package/dist/admin/pages/EditView/components/DocumentActions.js +98 -70
  42. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/DocumentActions.mjs +100 -72
  44. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  58. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  60. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +13 -2
  62. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +14 -3
  64. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
  66. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
  68. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  70. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  72. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +158 -106
  74. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +161 -109
  76. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
  78. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
  80. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  82. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  84. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  86. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  88. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  90. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  92. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/InputRenderer.js +20 -7
  94. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -7
  96. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/utils/data.js +128 -0
  98. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  99. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  100. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  101. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  102. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  103. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  104. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  105. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  106. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  107. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  108. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  109. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  110. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  111. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  112. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  113. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  114. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  115. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  116. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  117. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  118. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  119. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  120. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  121. package/dist/admin/preview/components/InputPopover.js +169 -0
  122. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  123. package/dist/admin/preview/components/InputPopover.mjs +147 -0
  124. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  125. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  126. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  127. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  128. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  129. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  130. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  131. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  132. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  133. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  134. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  135. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  136. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  137. package/dist/admin/preview/pages/Preview.js +172 -68
  138. package/dist/admin/preview/pages/Preview.js.map +1 -1
  139. package/dist/admin/preview/pages/Preview.mjs +174 -70
  140. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  141. package/dist/admin/preview/utils/constants.js +22 -0
  142. package/dist/admin/preview/utils/constants.js.map +1 -0
  143. package/dist/admin/preview/utils/constants.mjs +19 -0
  144. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  145. package/dist/admin/preview/utils/fieldUtils.js +98 -0
  146. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  147. package/dist/admin/preview/utils/fieldUtils.mjs +94 -0
  148. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  149. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  150. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  151. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  152. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  153. package/dist/admin/preview/utils/previewScript.js +458 -0
  154. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  155. package/dist/admin/preview/utils/previewScript.mjs +456 -0
  156. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  157. package/dist/admin/services/api.js +4 -1
  158. package/dist/admin/services/api.js.map +1 -1
  159. package/dist/admin/services/api.mjs +4 -1
  160. package/dist/admin/services/api.mjs.map +1 -1
  161. package/dist/admin/services/documents.js +42 -16
  162. package/dist/admin/services/documents.js.map +1 -1
  163. package/dist/admin/services/documents.mjs +42 -16
  164. package/dist/admin/services/documents.mjs.map +1 -1
  165. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  166. package/dist/admin/src/components/Widgets.d.ts +2 -1
  167. package/dist/admin/src/exports.d.ts +1 -0
  168. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  169. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  170. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  171. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  172. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  173. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  174. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  175. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  176. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  177. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  178. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  179. package/dist/admin/src/preview/utils/constants.d.ts +20 -0
  180. package/dist/admin/src/preview/utils/fieldUtils.d.ts +16 -0
  181. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  182. package/dist/admin/src/preview/utils/previewScript.d.ts +23 -0
  183. package/dist/admin/src/services/api.d.ts +1 -1
  184. package/dist/admin/src/services/components.d.ts +2 -2
  185. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  186. package/dist/admin/src/services/documents.d.ts +23 -17
  187. package/dist/admin/src/services/homepage.d.ts +1 -1
  188. package/dist/admin/src/services/init.d.ts +1 -1
  189. package/dist/admin/src/services/relations.d.ts +2 -2
  190. package/dist/admin/src/services/uid.d.ts +3 -3
  191. package/dist/admin/src/utils/api.d.ts +1 -1
  192. package/dist/admin/src/utils/validation.d.ts +1 -0
  193. package/dist/admin/translations/en.json.js +8 -0
  194. package/dist/admin/translations/en.json.js.map +1 -1
  195. package/dist/admin/translations/en.json.mjs +8 -0
  196. package/dist/admin/translations/en.json.mjs.map +1 -1
  197. package/dist/admin/translations/es.json.js +6 -2
  198. package/dist/admin/translations/es.json.js.map +1 -1
  199. package/dist/admin/translations/es.json.mjs +6 -2
  200. package/dist/admin/translations/es.json.mjs.map +1 -1
  201. package/dist/admin/translations/fr.json.js +11 -2
  202. package/dist/admin/translations/fr.json.js.map +1 -1
  203. package/dist/admin/translations/fr.json.mjs +11 -2
  204. package/dist/admin/translations/fr.json.mjs.map +1 -1
  205. package/dist/admin/utils/api.js +1 -1
  206. package/dist/admin/utils/api.js.map +1 -1
  207. package/dist/admin/utils/api.mjs +1 -1
  208. package/dist/admin/utils/api.mjs.map +1 -1
  209. package/dist/admin/utils/validation.js +19 -7
  210. package/dist/admin/utils/validation.js.map +1 -1
  211. package/dist/admin/utils/validation.mjs +19 -7
  212. package/dist/admin/utils/validation.mjs.map +1 -1
  213. package/dist/server/controllers/content-types.js +11 -1
  214. package/dist/server/controllers/content-types.js.map +1 -1
  215. package/dist/server/controllers/content-types.mjs +11 -1
  216. package/dist/server/controllers/content-types.mjs.map +1 -1
  217. package/dist/server/controllers/relations.js +2 -2
  218. package/dist/server/controllers/relations.js.map +1 -1
  219. package/dist/server/controllers/relations.mjs +2 -2
  220. package/dist/server/controllers/relations.mjs.map +1 -1
  221. package/dist/server/controllers/validation/index.js +14 -2
  222. package/dist/server/controllers/validation/index.js.map +1 -1
  223. package/dist/server/controllers/validation/index.mjs +14 -2
  224. package/dist/server/controllers/validation/index.mjs.map +1 -1
  225. package/dist/server/history/services/lifecycles.js +23 -19
  226. package/dist/server/history/services/lifecycles.js.map +1 -1
  227. package/dist/server/history/services/lifecycles.mjs +23 -19
  228. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  229. package/dist/server/homepage/controllers/homepage.js +5 -0
  230. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  231. package/dist/server/homepage/controllers/homepage.mjs +5 -0
  232. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  233. package/dist/server/homepage/routes/homepage.js +11 -0
  234. package/dist/server/homepage/routes/homepage.js.map +1 -1
  235. package/dist/server/homepage/routes/homepage.mjs +11 -0
  236. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  237. package/dist/server/homepage/services/homepage.js +86 -46
  238. package/dist/server/homepage/services/homepage.js.map +1 -1
  239. package/dist/server/homepage/services/homepage.mjs +86 -46
  240. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  241. package/dist/server/preview/services/preview-config.js +5 -1
  242. package/dist/server/preview/services/preview-config.js.map +1 -1
  243. package/dist/server/preview/services/preview-config.mjs +5 -1
  244. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  245. package/dist/server/preview/services/preview.js +4 -0
  246. package/dist/server/preview/services/preview.js.map +1 -1
  247. package/dist/server/preview/services/preview.mjs +4 -0
  248. package/dist/server/preview/services/preview.mjs.map +1 -1
  249. package/dist/server/services/data-mapper.js +4 -1
  250. package/dist/server/services/data-mapper.js.map +1 -1
  251. package/dist/server/services/data-mapper.mjs +4 -1
  252. package/dist/server/services/data-mapper.mjs.map +1 -1
  253. package/dist/server/services/document-manager.js +8 -1
  254. package/dist/server/services/document-manager.js.map +1 -1
  255. package/dist/server/services/document-manager.mjs +8 -1
  256. package/dist/server/services/document-manager.mjs.map +1 -1
  257. package/dist/server/services/document-metadata.js +3 -1
  258. package/dist/server/services/document-metadata.js.map +1 -1
  259. package/dist/server/services/document-metadata.mjs +3 -1
  260. package/dist/server/services/document-metadata.mjs.map +1 -1
  261. package/dist/server/services/utils/configuration/attributes.js +1 -1
  262. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  263. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  264. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  265. package/dist/server/services/utils/configuration/layouts.js +1 -1
  266. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  267. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  268. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  269. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  270. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  271. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  272. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  273. package/dist/server/services/utils/populate.js +11 -0
  274. package/dist/server/services/utils/populate.js.map +1 -1
  275. package/dist/server/services/utils/populate.mjs +11 -0
  276. package/dist/server/services/utils/populate.mjs.map +1 -1
  277. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  278. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  279. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  280. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  281. package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
  282. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  283. package/dist/server/src/homepage/index.d.ts +7 -0
  284. package/dist/server/src/homepage/index.d.ts.map +1 -1
  285. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
  286. package/dist/server/src/homepage/services/homepage.d.ts +4 -1
  287. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  288. package/dist/server/src/homepage/services/index.d.ts +7 -0
  289. package/dist/server/src/homepage/services/index.d.ts.map +1 -1
  290. package/dist/server/src/index.d.ts +8 -0
  291. package/dist/server/src/index.d.ts.map +1 -1
  292. package/dist/server/src/preview/services/index.d.ts +1 -0
  293. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  294. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  295. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  296. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  297. package/dist/server/src/preview/utils.d.ts +1 -0
  298. package/dist/server/src/preview/utils.d.ts.map +1 -1
  299. package/dist/server/src/services/data-mapper.d.ts +1 -0
  300. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  301. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  302. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  303. package/dist/server/src/services/index.d.ts +8 -0
  304. package/dist/server/src/services/index.d.ts.map +1 -1
  305. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  306. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  307. package/dist/shared/contracts/collection-types.d.ts +0 -1
  308. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  309. package/dist/shared/contracts/homepage.d.ts +13 -0
  310. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  311. package/package.json +11 -9
@@ -1 +1 @@
1
- {"version":3,"file":"FormLayout.js","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import { Box, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const RESPONSIVE_CONTAINER_BREAKPOINTS = {\n sm: '27.5rem', // 440px\n};\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\n /**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n @container (min-width: ${RESPONSIVE_CONTAINER_BREAKPOINTS.sm}) {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n model?: string;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const model = document.schema?.modelName;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.content-types.${model}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...fieldWithTranslatedLabel} document={document} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n key={index}\n {...(hasBackground && {\n padding: 6,\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n })}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.content-types.${model}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...fieldWithTranslatedLabel} document={document} />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n ))}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["RESPONSIVE_CONTAINER_BREAKPOINTS","sm","ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","col","FormLayout","layout","document","hasBackground","formatMessage","useIntl","model","schema","modelName","_jsx","Flex","direction","alignItems","gap","map","panel","index","some","row","field","type","fieldWithTranslatedLabel","label","id","name","defaultMessage","s","xs","InputRenderer","Box","padding","borderColor","background","hasRadius","shadow","gridRowIndex","size"],"mappings":"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"}
1
+ {"version":3,"file":"FormLayout.js","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const RESPONSIVE_CONTAINER_BREAKPOINTS = {\n sm: '27.5rem', // 440px\n};\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\n /**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n @container (min-width: ${RESPONSIVE_CONTAINER_BREAKPOINTS.sm}) {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: 6,\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const attribute = document.schema?.attributes[field.name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(({ name }) => {\n const attribute = document.schema?.attributes[name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["RESPONSIVE_CONTAINER_BREAKPOINTS","sm","ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","col","panelStyles","padding","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","map","panel","index","some","row","field","type","attribute","attributes","condition","conditions","visible","isVisible","evaluate","s","xs","InputRenderer","Box","gridRowIndex","visibleFields","filter","length","size"],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
+ import 'react';
3
+ import { useForm, createRulesEngine } from '@strapi/admin/strapi-admin';
2
4
  import { Grid, Flex, Box } from '@strapi/design-system';
3
5
  import { useIntl } from 'react-intl';
4
6
  import { styled } from 'styled-components';
@@ -23,9 +25,24 @@ const ResponsiveGridItem = /**
23
25
  ` : styled(Grid.Item)`
24
26
  grid-column: span 12;
25
27
  `;
28
+ const panelStyles = {
29
+ padding: 6,
30
+ borderColor: 'neutral150',
31
+ background: 'neutral0',
32
+ hasRadius: true,
33
+ shadow: 'tableShadow'
34
+ };
26
35
  const FormLayout = ({ layout, document, hasBackground = true })=>{
27
36
  const { formatMessage } = useIntl();
28
- const model = document.schema?.modelName;
37
+ const modelUid = document.schema?.uid;
38
+ const fieldValues = useForm('Fields', (state)=>state.values);
39
+ const rulesEngine = createRulesEngine();
40
+ const getLabel = (name, label)=>{
41
+ return formatMessage({
42
+ id: `content-manager.content-types.${modelUid}.${name}`,
43
+ defaultMessage: label
44
+ });
45
+ };
29
46
  return /*#__PURE__*/ jsx(Flex, {
30
47
  direction: "column",
31
48
  alignItems: "stretch",
@@ -34,13 +51,14 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
34
51
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
35
52
  const [row] = panel;
36
53
  const [field] = row;
37
- const fieldWithTranslatedLabel = {
38
- ...field,
39
- label: formatMessage({
40
- id: `content-manager.content-types.${model}.${field.name}`,
41
- defaultMessage: field.label
42
- })
43
- };
54
+ const attribute = document.schema?.attributes[field.name];
55
+ const condition = attribute?.conditions?.visible;
56
+ if (condition) {
57
+ const isVisible = rulesEngine.evaluate(condition, fieldValues);
58
+ if (!isVisible) {
59
+ return null; // Skip rendering the dynamic zone if the condition is not met
60
+ }
61
+ }
44
62
  return /*#__PURE__*/ jsx(Grid.Root, {
45
63
  gap: 4,
46
64
  children: /*#__PURE__*/ jsx(Grid.Item, {
@@ -50,34 +68,34 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
50
68
  direction: "column",
51
69
  alignItems: "stretch",
52
70
  children: /*#__PURE__*/ jsx(MemoizedInputRenderer, {
53
- ...fieldWithTranslatedLabel,
71
+ ...field,
72
+ label: getLabel(field.name, field.label),
54
73
  document: document
55
74
  })
56
75
  })
57
76
  }, field.name);
58
77
  }
59
78
  return /*#__PURE__*/ jsx(Box, {
60
- ...hasBackground && {
61
- padding: 6,
62
- borderColor: 'neutral150',
63
- background: 'neutral0',
64
- hasRadius: true,
65
- shadow: 'tableShadow'
66
- },
79
+ ...hasBackground && panelStyles,
67
80
  children: /*#__PURE__*/ jsx(Flex, {
68
81
  direction: "column",
69
82
  alignItems: "stretch",
70
83
  gap: 6,
71
- children: panel.map((row, gridRowIndex)=>/*#__PURE__*/ jsx(ResponsiveGridRoot, {
84
+ children: panel.map((row, gridRowIndex)=>{
85
+ const visibleFields = row.filter(({ name })=>{
86
+ const attribute = document.schema?.attributes[name];
87
+ const condition = attribute?.conditions?.visible;
88
+ if (condition) {
89
+ return rulesEngine.evaluate(condition, fieldValues);
90
+ }
91
+ return true;
92
+ });
93
+ if (visibleFields.length === 0) {
94
+ return null; // Skip rendering the entire grid row
95
+ }
96
+ return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
72
97
  gap: 4,
73
- children: row.map(({ size, ...field })=>{
74
- const fieldWithTranslatedLabel = {
75
- ...field,
76
- label: formatMessage({
77
- id: `content-manager.content-types.${model}.${field.name}`,
78
- defaultMessage: field.label
79
- })
80
- };
98
+ children: visibleFields.map(({ size, ...field })=>{
81
99
  return /*#__PURE__*/ jsx(ResponsiveGridItem, {
82
100
  col: size,
83
101
  s: 12,
@@ -85,12 +103,14 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
85
103
  direction: "column",
86
104
  alignItems: "stretch",
87
105
  children: /*#__PURE__*/ jsx(MemoizedInputRenderer, {
88
- ...fieldWithTranslatedLabel,
106
+ ...field,
107
+ label: getLabel(field.name, field.label),
89
108
  document: document
90
109
  })
91
110
  }, field.name);
92
111
  })
93
- }, gridRowIndex))
112
+ }, gridRowIndex);
113
+ })
94
114
  })
95
115
  }, index);
96
116
  })
@@ -1 +1 @@
1
- {"version":3,"file":"FormLayout.mjs","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import { Box, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const RESPONSIVE_CONTAINER_BREAKPOINTS = {\n sm: '27.5rem', // 440px\n};\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\n /**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n @container (min-width: ${RESPONSIVE_CONTAINER_BREAKPOINTS.sm}) {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n model?: string;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const model = document.schema?.modelName;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.content-types.${model}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...fieldWithTranslatedLabel} document={document} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n key={index}\n {...(hasBackground && {\n padding: 6,\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n })}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.content-types.${model}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...fieldWithTranslatedLabel} document={document} />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n ))}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["RESPONSIVE_CONTAINER_BREAKPOINTS","sm","ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","col","FormLayout","layout","document","hasBackground","formatMessage","useIntl","model","schema","modelName","_jsx","Flex","direction","alignItems","gap","map","panel","index","some","row","field","type","fieldWithTranslatedLabel","label","id","name","defaultMessage","s","xs","InputRenderer","Box","padding","borderColor","background","hasRadius","shadow","gridRowIndex","size"],"mappings":";;;;;;MAUaA,gCAAmC,GAAA;IAC9CC,EAAI,EAAA;AACN;MAEaC,kBAAqBC,GAAAA,MAAAA,CAAOC,IAAKC,CAAAA,IAAI,CAAC;;AAEnD;MAEaC,kBACX;;;;;MAMAC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,SACrBN,MAAOC,CAAAA,IAAAA,CAAKM,IAAI,CAAkB;;+BAET,EAAEV,gCAAAA,CAAiCC,EAAE,CAAC;AAC3D,UAAA,EAAE,CAAC,EAAEU,GAAG,EAAE,GAAKA,GAAAA,IAAO,CAAC,kBAAkB,EAAEA,GAAAA,CAAI,CAAC,CAAC;;AAErD,MAAA,CAAC,GACDR,MAAAA,CAAOC,IAAKM,CAAAA,IAAI,CAAkB;;AAElC,MAAA;AAQAE,MAAAA,UAAAA,GAAa,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,aAAgB,GAAA,IAAI,EAAmB,GAAA;IAC7E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAMC,KAAAA,GAAQJ,QAASK,CAAAA,MAAM,EAAEC,SAAAA;AAE/B,IAAA,qBACEC,GAACC,CAAAA,IAAAA,EAAAA;QAAKC,SAAU,EAAA,QAAA;QAASC,UAAW,EAAA,SAAA;QAAUC,GAAK,EAAA,CAAA;kBAChDZ,MAAOa,CAAAA,GAAG,CAAC,CAACC,KAAOC,EAAAA,KAAAA,GAAAA;AAClB,YAAA,IAAID,KAAME,CAAAA,IAAI,CAAC,CAACC,GAAQA,GAAAA,GAAAA,CAAID,IAAI,CAAC,CAACE,KAAAA,GAAUA,KAAMC,CAAAA,IAAI,KAAK,aAAiB,CAAA,CAAA,EAAA;gBAC1E,MAAM,CAACF,IAAI,GAAGH,KAAAA;gBACd,MAAM,CAACI,MAAM,GAAGD,GAAAA;AAEhB,gBAAA,MAAMG,wBAA2B,GAAA;AAC/B,oBAAA,GAAGF,KAAK;AACRG,oBAAAA,KAAAA,EAAOlB,aAAc,CAAA;wBACnBmB,EAAI,EAAA,CAAC,8BAA8B,EAAEjB,KAAAA,CAAM,CAAC,EAAEa,KAAAA,CAAMK,IAAI,CAAC,CAAC;AAC1DC,wBAAAA,cAAAA,EAAgBN,MAAMG;AACxB,qBAAA;AACF,iBAAA;gBAEA,qBACEb,GAAA,CAACjB,KAAKC,IAAI,EAAA;oBAAkBoB,GAAK,EAAA,CAAA;4CAC/BJ,GAAA,CAACjB,KAAKM,IAAI,EAAA;wBAACC,GAAK,EAAA,EAAA;wBAAI2B,CAAG,EAAA,EAAA;wBAAIC,EAAI,EAAA,EAAA;wBAAIhB,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,SAAA;AAC/D,wBAAA,QAAA,gBAAAH,GAACmB,CAAAA,qBAAAA,EAAAA;AAAe,4BAAA,GAAGP,wBAAwB;4BAAEnB,QAAUA,EAAAA;;;AAF3CiB,iBAAAA,EAAAA,KAAAA,CAAMK,IAAI,CAAA;AAM9B;AAEA,YAAA,qBACEf,GAACoB,CAAAA,GAAAA,EAAAA;AAEE,gBAAA,GAAI1B,aAAiB,IAAA;oBACpB2B,OAAS,EAAA,CAAA;oBACTC,WAAa,EAAA,YAAA;oBACbC,UAAY,EAAA,UAAA;oBACZC,SAAW,EAAA,IAAA;oBACXC,MAAQ,EAAA;iBACT;AAED,gBAAA,QAAA,gBAAAzB,GAACC,CAAAA,IAAAA,EAAAA;oBAAKC,SAAU,EAAA,QAAA;oBAASC,UAAW,EAAA,SAAA;oBAAUC,GAAK,EAAA,CAAA;AAChDE,oBAAAA,QAAAA,EAAAA,KAAAA,CAAMD,GAAG,CAAC,CAACI,GAAAA,EAAKiB,6BACf1B,GAACnB,CAAAA,kBAAAA,EAAAA;4BAAsCuB,GAAK,EAAA,CAAA;AACzCK,4BAAAA,QAAAA,EAAAA,GAAAA,CAAIJ,GAAG,CAAC,CAAC,EAAEsB,IAAI,EAAE,GAAGjB,KAAO,EAAA,GAAA;AAC1B,gCAAA,MAAME,wBAA2B,GAAA;AAC/B,oCAAA,GAAGF,KAAK;AACRG,oCAAAA,KAAAA,EAAOlB,aAAc,CAAA;wCACnBmB,EAAI,EAAA,CAAC,8BAA8B,EAAEjB,KAAAA,CAAM,CAAC,EAAEa,KAAAA,CAAMK,IAAI,CAAC,CAAC;AAC1DC,wCAAAA,cAAAA,EAAgBN,MAAMG;AACxB,qCAAA;AACF,iCAAA;AACA,gCAAA,qBACEb,GAACf,CAAAA,kBAAAA,EAAAA;oCACCK,GAAKqC,EAAAA,IAAAA;oCAELV,CAAG,EAAA,EAAA;oCACHC,EAAI,EAAA,EAAA;oCACJhB,SAAU,EAAA,QAAA;oCACVC,UAAW,EAAA,SAAA;AAEX,oCAAA,QAAA,gBAAAH,GAACmB,CAAAA,qBAAAA,EAAAA;AAAe,wCAAA,GAAGP,wBAAwB;wCAAEnB,QAAUA,EAAAA;;AANlDiB,iCAAAA,EAAAA,KAAAA,CAAMK,IAAI,CAAA;AASrB,6BAAA;AArBuBW,yBAAAA,EAAAA,YAAAA,CAAAA;;AAXxBnB,aAAAA,EAAAA,KAAAA,CAAAA;AAsCX,SAAA;;AAGN;;;;"}
1
+ {"version":3,"file":"FormLayout.mjs","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const RESPONSIVE_CONTAINER_BREAKPOINTS = {\n sm: '27.5rem', // 440px\n};\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\n /**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n @container (min-width: ${RESPONSIVE_CONTAINER_BREAKPOINTS.sm}) {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: 6,\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const attribute = document.schema?.attributes[field.name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(({ name }) => {\n const attribute = document.schema?.attributes[name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["RESPONSIVE_CONTAINER_BREAKPOINTS","sm","ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","col","panelStyles","padding","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","map","panel","index","some","row","field","type","attribute","attributes","condition","conditions","visible","isVisible","evaluate","s","xs","InputRenderer","Box","gridRowIndex","visibleFields","filter","length","size"],"mappings":"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"}
@@ -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,13 @@ 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 })=>{
47
49
  const { currentDocumentMeta } = useDocumentContext.useDocumentContext('DynamicComponent');
48
50
  const { edit: { components } } = useDocumentLayout.useDocumentLayout(currentDocumentMeta.model);
49
51
  const collectionType = document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';
50
52
  const isInDynamicZone = Field.useDynamicZone('isInDynamicZone', (state)=>state.isInDynamicZone);
53
+ const isInPreviewPopover = InputPopover.useHasInputPopoverParent();
54
+ const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;
51
55
  const isFormDisabled = strapiAdmin.useForm('InputRenderer', (state)=>state.disabled);
52
56
  const canCreateFields = DocumentRBAC.useDocumentRBAC('InputRenderer', (rbac)=>rbac.canCreateFields);
53
57
  const canReadFields = DocumentRBAC.useDocumentRBAC('InputRenderer', (rbac)=>rbac.canReadFields);
@@ -59,6 +63,12 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
59
63
  }
60
64
  const editableFields = idToCheck ? canUpdateFields : canCreateFields;
61
65
  const readableFields = idToCheck ? canReadFields : canCreateFields;
66
+ // Everything preview related
67
+ const previewProps = usePreviewInputManager.usePreviewInputManager(inputProps.name, inputProps.attribute);
68
+ const props = {
69
+ ...inputProps,
70
+ ...previewProps
71
+ };
62
72
  /**
63
73
  * Component fields are always readable and editable,
64
74
  * however the fields within them may not be.
@@ -76,29 +86,30 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
76
86
  }
77
87
  /**
78
88
  * If the user can't read the field then we don't want to ever render it.
79
- */ if (!canUserReadField && !isInDynamicZone) {
89
+ */ if (!canUserReadField && !shouldIgnorePermissions) {
80
90
  return /*#__PURE__*/ jsxRuntime.jsx(NotAllowed.NotAllowedInput, {
81
91
  hint: hint,
82
92
  ...props
83
93
  });
84
94
  }
85
- const fieldIsDisabled = !canUserEditField && !isInDynamicZone || props.disabled || isFormDisabled;
95
+ const fieldIsDisabled = !canUserEditField && !shouldIgnorePermissions || props.disabled || isFormDisabled;
86
96
  /**
87
97
  * Because a custom field has a unique prop but the type could be confused with either
88
98
  * the useField hook or the type of the field we need to handle it separately and first.
89
99
  */ if (attributeHasCustomFieldProperty(props.attribute)) {
90
100
  const CustomInput = lazyComponentStore[props.attribute.customField];
91
101
  if (CustomInput) {
92
- // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
93
102
  return /*#__PURE__*/ jsxRuntime.jsx(CustomInput, {
94
103
  ...props,
95
104
  ...field,
105
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
96
106
  hint: hint,
97
107
  disabled: fieldIsDisabled
98
108
  });
99
109
  }
100
110
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
101
111
  ...props,
112
+ ...previewProps,
102
113
  hint: hint,
103
114
  // @ts-expect-error – this workaround lets us display that the custom field is missing.
104
115
  type: props.attribute.customField,
@@ -110,9 +121,9 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
110
121
  */ const addedInputTypes = Object.keys(fields);
111
122
  if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {
112
123
  const CustomInput = fields[props.type];
113
- // @ts-expect-error – TODO: fix this type error in the useLibrary hook.
114
124
  return /*#__PURE__*/ jsxRuntime.jsx(CustomInput, {
115
125
  ...props,
126
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
116
127
  hint: hint,
117
128
  disabled: fieldIsDisabled
118
129
  });
@@ -134,8 +145,8 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
134
145
  hint: hint,
135
146
  layout: components[props.attribute.component].layout,
136
147
  disabled: fieldIsDisabled,
137
- children: (inputProps)=>/*#__PURE__*/ jsxRuntime.jsx(InputRenderer, {
138
- ...inputProps
148
+ children: (componentInputProps)=>/*#__PURE__*/ jsxRuntime.jsx(InputRenderer, {
149
+ ...componentInputProps
139
150
  })
140
151
  });
141
152
  case 'dynamiczone':
@@ -169,6 +180,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
169
180
  */ case 'enumeration':
170
181
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
171
182
  ...props,
183
+ ...previewProps,
172
184
  hint: hint,
173
185
  options: props.attribute.enum.map((value)=>({
174
186
  value
@@ -182,6 +194,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
182
194
  const { unique: _unique, mainField: _mainField, ...restProps } = props;
183
195
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
184
196
  ...restProps,
197
+ ...previewProps,
185
198
  hint: hint,
186
199
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
187
200
  type: props.customField ? 'custom-field' : props.type,
@@ -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 { 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 {...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 {...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 <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 {(componentInputProps) => <InputRenderer {...componentInputProps} />}\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 {...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 {...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","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,13 @@ 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 })=>{
26
28
  const { currentDocumentMeta } = useDocumentContext('DynamicComponent');
27
29
  const { edit: { components } } = useDocumentLayout(currentDocumentMeta.model);
28
30
  const collectionType = document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';
29
31
  const isInDynamicZone = useDynamicZone('isInDynamicZone', (state)=>state.isInDynamicZone);
32
+ const isInPreviewPopover = useHasInputPopoverParent();
33
+ const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;
30
34
  const isFormDisabled = useForm('InputRenderer', (state)=>state.disabled);
31
35
  const canCreateFields = useDocumentRBAC('InputRenderer', (rbac)=>rbac.canCreateFields);
32
36
  const canReadFields = useDocumentRBAC('InputRenderer', (rbac)=>rbac.canReadFields);
@@ -38,6 +42,12 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
38
42
  }
39
43
  const editableFields = idToCheck ? canUpdateFields : canCreateFields;
40
44
  const readableFields = idToCheck ? canReadFields : canCreateFields;
45
+ // Everything preview related
46
+ const previewProps = usePreviewInputManager(inputProps.name, inputProps.attribute);
47
+ const props = {
48
+ ...inputProps,
49
+ ...previewProps
50
+ };
41
51
  /**
42
52
  * Component fields are always readable and editable,
43
53
  * however the fields within them may not be.
@@ -55,29 +65,30 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
55
65
  }
56
66
  /**
57
67
  * If the user can't read the field then we don't want to ever render it.
58
- */ if (!canUserReadField && !isInDynamicZone) {
68
+ */ if (!canUserReadField && !shouldIgnorePermissions) {
59
69
  return /*#__PURE__*/ jsx(NotAllowedInput, {
60
70
  hint: hint,
61
71
  ...props
62
72
  });
63
73
  }
64
- const fieldIsDisabled = !canUserEditField && !isInDynamicZone || props.disabled || isFormDisabled;
74
+ const fieldIsDisabled = !canUserEditField && !shouldIgnorePermissions || props.disabled || isFormDisabled;
65
75
  /**
66
76
  * Because a custom field has a unique prop but the type could be confused with either
67
77
  * the useField hook or the type of the field we need to handle it separately and first.
68
78
  */ if (attributeHasCustomFieldProperty(props.attribute)) {
69
79
  const CustomInput = lazyComponentStore[props.attribute.customField];
70
80
  if (CustomInput) {
71
- // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
72
81
  return /*#__PURE__*/ jsx(CustomInput, {
73
82
  ...props,
74
83
  ...field,
84
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
75
85
  hint: hint,
76
86
  disabled: fieldIsDisabled
77
87
  });
78
88
  }
79
89
  return /*#__PURE__*/ jsx(InputRenderer$1, {
80
90
  ...props,
91
+ ...previewProps,
81
92
  hint: hint,
82
93
  // @ts-expect-error – this workaround lets us display that the custom field is missing.
83
94
  type: props.attribute.customField,
@@ -89,9 +100,9 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
89
100
  */ const addedInputTypes = Object.keys(fields);
90
101
  if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {
91
102
  const CustomInput = fields[props.type];
92
- // @ts-expect-error – TODO: fix this type error in the useLibrary hook.
93
103
  return /*#__PURE__*/ jsx(CustomInput, {
94
104
  ...props,
105
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
95
106
  hint: hint,
96
107
  disabled: fieldIsDisabled
97
108
  });
@@ -113,8 +124,8 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
113
124
  hint: hint,
114
125
  layout: components[props.attribute.component].layout,
115
126
  disabled: fieldIsDisabled,
116
- children: (inputProps)=>/*#__PURE__*/ jsx(InputRenderer, {
117
- ...inputProps
127
+ children: (componentInputProps)=>/*#__PURE__*/ jsx(InputRenderer, {
128
+ ...componentInputProps
118
129
  })
119
130
  });
120
131
  case 'dynamiczone':
@@ -148,6 +159,7 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
148
159
  */ case 'enumeration':
149
160
  return /*#__PURE__*/ jsx(InputRenderer$1, {
150
161
  ...props,
162
+ ...previewProps,
151
163
  hint: hint,
152
164
  options: props.attribute.enum.map((value)=>({
153
165
  value
@@ -161,6 +173,7 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
161
173
  const { unique: _unique, mainField: _mainField, ...restProps } = props;
162
174
  return /*#__PURE__*/ jsx(InputRenderer$1, {
163
175
  ...restProps,
176
+ ...previewProps,
164
177
  hint: hint,
165
178
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
166
179
  type: props.customField ? 'custom-field' : props.type,