@strapi/content-manager 5.37.1 → 5.38.1

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 (582) hide show
  1. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  2. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  3. package/dist/admin/components/ComponentIcon.js.map +1 -1
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs +2 -2
  9. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js +62 -30
  11. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  12. package/dist/admin/components/ConfigurationForm/Form.mjs +62 -30
  13. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  14. package/dist/admin/components/DragLayer.js.map +1 -1
  15. package/dist/admin/components/DragLayer.mjs.map +1 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  20. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  22. package/dist/admin/components/FieldTypeIcon.js.map +1 -1
  23. package/dist/admin/components/FieldTypeIcon.mjs +1 -1
  24. package/dist/admin/components/FieldTypeIcon.mjs.map +1 -1
  25. package/dist/admin/components/InjectionZone.js.map +1 -1
  26. package/dist/admin/components/InjectionZone.mjs.map +1 -1
  27. package/dist/admin/components/LeftMenu.js.map +1 -1
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/RelativeTime.js.map +1 -1
  30. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  31. package/dist/admin/components/Widgets.js.map +1 -1
  32. package/dist/admin/components/Widgets.mjs +1 -1
  33. package/dist/admin/components/Widgets.mjs.map +1 -1
  34. package/dist/admin/constants/attributes.js.map +1 -1
  35. package/dist/admin/constants/attributes.mjs.map +1 -1
  36. package/dist/admin/constants/collections.js.map +1 -1
  37. package/dist/admin/constants/collections.mjs.map +1 -1
  38. package/dist/admin/constants/dragAndDrop.js.map +1 -1
  39. package/dist/admin/constants/dragAndDrop.mjs.map +1 -1
  40. package/dist/admin/constants/hooks.js.map +1 -1
  41. package/dist/admin/constants/hooks.mjs.map +1 -1
  42. package/dist/admin/constants/plugin.js.map +1 -1
  43. package/dist/admin/constants/plugin.mjs.map +1 -1
  44. package/dist/admin/content-manager.js.map +1 -1
  45. package/dist/admin/content-manager.mjs.map +1 -1
  46. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  47. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  48. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  49. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  50. package/dist/admin/history/components/VersionContent.js +48 -16
  51. package/dist/admin/history/components/VersionContent.js.map +1 -1
  52. package/dist/admin/history/components/VersionContent.mjs +48 -16
  53. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  54. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  55. package/dist/admin/history/components/VersionHeader.mjs +1 -1
  56. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  57. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  58. package/dist/admin/history/components/VersionInputRenderer.mjs +1 -1
  59. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  60. package/dist/admin/history/components/VersionsList.js.map +1 -1
  61. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  62. package/dist/admin/history/index.js.map +1 -1
  63. package/dist/admin/history/index.mjs.map +1 -1
  64. package/dist/admin/history/pages/History.js.map +1 -1
  65. package/dist/admin/history/pages/History.mjs +1 -1
  66. package/dist/admin/history/pages/History.mjs.map +1 -1
  67. package/dist/admin/history/routes.js.map +1 -1
  68. package/dist/admin/history/routes.mjs.map +1 -1
  69. package/dist/admin/history/services/historyVersion.js.map +1 -1
  70. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  71. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  72. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  73. package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
  74. package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
  75. package/dist/admin/hooks/useDebounce.js.map +1 -1
  76. package/dist/admin/hooks/useDebounce.mjs.map +1 -1
  77. package/dist/admin/hooks/useDocument.js.map +1 -1
  78. package/dist/admin/hooks/useDocument.mjs +1 -1
  79. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  80. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  81. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  82. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  83. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  84. package/dist/admin/hooks/useDocumentLayout.js +2 -1
  85. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  86. package/dist/admin/hooks/useDocumentLayout.mjs +2 -1
  87. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  88. package/dist/admin/hooks/useDragAndDrop.js +1 -3
  89. package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
  90. package/dist/admin/hooks/useDragAndDrop.mjs +1 -3
  91. package/dist/admin/hooks/useDragAndDrop.mjs.map +1 -1
  92. package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
  93. package/dist/admin/hooks/useKeyboardDragAndDrop.mjs.map +1 -1
  94. package/dist/admin/hooks/useLazyComponents.js.map +1 -1
  95. package/dist/admin/hooks/useLazyComponents.mjs.map +1 -1
  96. package/dist/admin/hooks/useOnce.js.map +1 -1
  97. package/dist/admin/hooks/useOnce.mjs.map +1 -1
  98. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  99. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
  100. package/dist/admin/hooks/usePrev.js.map +1 -1
  101. package/dist/admin/hooks/usePrev.mjs.map +1 -1
  102. package/dist/admin/index.js.map +1 -1
  103. package/dist/admin/index.mjs.map +1 -1
  104. package/dist/admin/layout.js.map +1 -1
  105. package/dist/admin/layout.mjs.map +1 -1
  106. package/dist/admin/modules/app.js.map +1 -1
  107. package/dist/admin/modules/app.mjs.map +1 -1
  108. package/dist/admin/modules/hooks.js.map +1 -1
  109. package/dist/admin/modules/hooks.mjs +1 -1
  110. package/dist/admin/modules/hooks.mjs.map +1 -1
  111. package/dist/admin/modules/reducers.js.map +1 -1
  112. package/dist/admin/modules/reducers.mjs.map +1 -1
  113. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  114. package/dist/admin/pages/ComponentConfigurationPage.mjs +1 -1
  115. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  116. package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
  117. package/dist/admin/pages/EditConfigurationPage.mjs +1 -1
  118. package/dist/admin/pages/EditConfigurationPage.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  120. package/dist/admin/pages/EditView/EditViewPage.mjs +4 -4
  121. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  122. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
  124. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/DocumentActions.mjs +4 -4
  126. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  128. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  130. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  142. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +51 -0
  143. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +53 -2
  145. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.mjs.map +1 -1
  148. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  150. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +6 -2
  151. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  152. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +6 -2
  153. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  158. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
  160. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +2 -2
  166. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
  168. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.js.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.mjs.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.js.map +1 -1
  172. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.mjs.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.js.map +1 -1
  174. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.mjs.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  180. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  182. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  183. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  184. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  185. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.js.map +1 -1
  186. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.mjs.map +1 -1
  187. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  188. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  189. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  190. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  191. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  192. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  193. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +1 -1
  194. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  195. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +1 -1
  196. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  197. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.js.map +1 -1
  198. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.mjs.map +1 -1
  199. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  200. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  201. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.js.map +1 -1
  202. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.mjs.map +1 -1
  203. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +45 -6
  204. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  205. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +45 -8
  206. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  207. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +148 -111
  208. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  209. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +152 -115
  210. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  211. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  212. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  213. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  214. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  215. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  216. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  217. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  218. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  219. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  220. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  221. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
  222. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
  223. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  224. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +2 -2
  225. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  226. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  227. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  228. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
  229. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.mjs.map +1 -1
  230. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
  231. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.mjs.map +1 -1
  232. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js +8 -6
  233. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  234. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs +8 -6
  235. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  236. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  237. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  238. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  239. package/dist/admin/pages/EditView/components/Header.mjs +2 -2
  240. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  241. package/dist/admin/pages/EditView/components/InputRenderer.js +15 -5
  242. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  243. package/dist/admin/pages/EditView/components/InputRenderer.mjs +15 -5
  244. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  245. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  246. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  247. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  248. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  249. package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
  250. package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
  251. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  252. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -1
  253. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  254. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  255. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -1
  256. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  257. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  258. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  259. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  260. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  261. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  262. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  263. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  264. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  265. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  266. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  267. package/dist/admin/pages/ListView/ListViewPage.mjs +3 -3
  268. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  269. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  270. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  271. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  272. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  273. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -4
  274. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  275. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -5
  276. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  277. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -4
  278. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  279. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +2 -2
  280. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  281. package/dist/admin/pages/ListView/components/Filters.js +54 -1
  282. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  283. package/dist/admin/pages/ListView/components/Filters.mjs +54 -1
  284. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  285. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  286. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  287. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  288. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  289. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -1
  290. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  291. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +7 -1
  292. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  293. package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
  294. package/dist/admin/pages/ListView/components/TableCells/Components.mjs +2 -2
  295. package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
  296. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  297. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  298. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  299. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  300. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  301. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  302. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  303. package/dist/admin/pages/NoContentTypePage.js.map +1 -1
  304. package/dist/admin/pages/NoContentTypePage.mjs.map +1 -1
  305. package/dist/admin/pages/NoPermissionsPage.js.map +1 -1
  306. package/dist/admin/pages/NoPermissionsPage.mjs.map +1 -1
  307. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  308. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  309. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  310. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  311. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  312. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  313. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  314. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  315. package/dist/admin/preview/index.js.map +1 -1
  316. package/dist/admin/preview/index.mjs.map +1 -1
  317. package/dist/admin/preview/pages/Preview.js.map +1 -1
  318. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  319. package/dist/admin/preview/routes.js.map +1 -1
  320. package/dist/admin/preview/routes.mjs.map +1 -1
  321. package/dist/admin/preview/services/preview.js.map +1 -1
  322. package/dist/admin/preview/services/preview.mjs.map +1 -1
  323. package/dist/admin/preview/utils/constants.js +0 -1
  324. package/dist/admin/preview/utils/constants.js.map +1 -1
  325. package/dist/admin/preview/utils/constants.mjs +0 -1
  326. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  327. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  328. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  329. package/dist/admin/preview/utils/getSendMessage.js.map +1 -1
  330. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -1
  331. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  332. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  333. package/dist/admin/router.js.map +1 -1
  334. package/dist/admin/router.mjs.map +1 -1
  335. package/dist/admin/services/api.js.map +1 -1
  336. package/dist/admin/services/api.mjs.map +1 -1
  337. package/dist/admin/services/components.js.map +1 -1
  338. package/dist/admin/services/components.mjs.map +1 -1
  339. package/dist/admin/services/contentTypes.js.map +1 -1
  340. package/dist/admin/services/contentTypes.mjs.map +1 -1
  341. package/dist/admin/services/documents.js.map +1 -1
  342. package/dist/admin/services/documents.mjs.map +1 -1
  343. package/dist/admin/services/homepage.js.map +1 -1
  344. package/dist/admin/services/homepage.mjs.map +1 -1
  345. package/dist/admin/services/init.js.map +1 -1
  346. package/dist/admin/services/init.mjs.map +1 -1
  347. package/dist/admin/services/relations.js.map +1 -1
  348. package/dist/admin/services/relations.mjs.map +1 -1
  349. package/dist/admin/services/uid.js.map +1 -1
  350. package/dist/admin/services/uid.mjs.map +1 -1
  351. package/dist/admin/src/exports.d.ts +1 -1
  352. package/dist/admin/src/hooks/useDocumentLayout.d.ts +1 -0
  353. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -0
  354. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -2
  355. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
  356. package/dist/admin/src/utils/conditionalFields.d.ts +12 -0
  357. package/dist/admin/translations/en.json.js +10 -0
  358. package/dist/admin/translations/en.json.js.map +1 -1
  359. package/dist/admin/translations/en.json.mjs +10 -0
  360. package/dist/admin/translations/en.json.mjs.map +1 -1
  361. package/dist/admin/translations/es.json.js +136 -2
  362. package/dist/admin/translations/es.json.js.map +1 -1
  363. package/dist/admin/translations/es.json.mjs +136 -2
  364. package/dist/admin/translations/es.json.mjs.map +1 -1
  365. package/dist/admin/translations/fr.json.js +72 -1
  366. package/dist/admin/translations/fr.json.js.map +1 -1
  367. package/dist/admin/translations/fr.json.mjs +72 -1
  368. package/dist/admin/translations/fr.json.mjs.map +1 -1
  369. package/dist/admin/utils/api.js.map +1 -1
  370. package/dist/admin/utils/api.mjs.map +1 -1
  371. package/dist/admin/utils/attributes.js.map +1 -1
  372. package/dist/admin/utils/attributes.mjs.map +1 -1
  373. package/dist/admin/utils/conditionalFields.js +76 -0
  374. package/dist/admin/utils/conditionalFields.js.map +1 -0
  375. package/dist/admin/utils/conditionalFields.mjs +69 -0
  376. package/dist/admin/utils/conditionalFields.mjs.map +1 -0
  377. package/dist/admin/utils/objects.js.map +1 -1
  378. package/dist/admin/utils/objects.mjs.map +1 -1
  379. package/dist/admin/utils/relations.js.map +1 -1
  380. package/dist/admin/utils/relations.mjs.map +1 -1
  381. package/dist/admin/utils/strings.js.map +1 -1
  382. package/dist/admin/utils/strings.mjs.map +1 -1
  383. package/dist/admin/utils/translations.js.map +1 -1
  384. package/dist/admin/utils/translations.mjs.map +1 -1
  385. package/dist/admin/utils/urls.js.map +1 -1
  386. package/dist/admin/utils/urls.mjs.map +1 -1
  387. package/dist/admin/utils/users.js.map +1 -1
  388. package/dist/admin/utils/users.mjs.map +1 -1
  389. package/dist/admin/utils/validation.js.map +1 -1
  390. package/dist/admin/utils/validation.mjs.map +1 -1
  391. package/dist/server/bootstrap.js.map +1 -1
  392. package/dist/server/bootstrap.mjs.map +1 -1
  393. package/dist/server/constants/index.js.map +1 -1
  394. package/dist/server/constants/index.mjs.map +1 -1
  395. package/dist/server/controllers/collection-types.js +157 -4
  396. package/dist/server/controllers/collection-types.js.map +1 -1
  397. package/dist/server/controllers/collection-types.mjs +159 -6
  398. package/dist/server/controllers/collection-types.mjs.map +1 -1
  399. package/dist/server/controllers/components.js.map +1 -1
  400. package/dist/server/controllers/components.mjs.map +1 -1
  401. package/dist/server/controllers/content-types.js +10 -10
  402. package/dist/server/controllers/content-types.js.map +1 -1
  403. package/dist/server/controllers/content-types.mjs.map +1 -1
  404. package/dist/server/controllers/index.js +4 -4
  405. package/dist/server/controllers/index.js.map +1 -1
  406. package/dist/server/controllers/index.mjs.map +1 -1
  407. package/dist/server/controllers/init.js.map +1 -1
  408. package/dist/server/controllers/init.mjs.map +1 -1
  409. package/dist/server/controllers/relations.js.map +1 -1
  410. package/dist/server/controllers/relations.mjs +3 -3
  411. package/dist/server/controllers/relations.mjs.map +1 -1
  412. package/dist/server/controllers/single-types.js +19 -4
  413. package/dist/server/controllers/single-types.js.map +1 -1
  414. package/dist/server/controllers/single-types.mjs +20 -5
  415. package/dist/server/controllers/single-types.mjs.map +1 -1
  416. package/dist/server/controllers/uid.js.map +1 -1
  417. package/dist/server/controllers/uid.mjs +1 -1
  418. package/dist/server/controllers/uid.mjs.map +1 -1
  419. package/dist/server/controllers/utils/clone.js.map +1 -1
  420. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  421. package/dist/server/controllers/utils/document-status.js.map +1 -1
  422. package/dist/server/controllers/utils/document-status.mjs.map +1 -1
  423. package/dist/server/controllers/utils/metadata.js.map +1 -1
  424. package/dist/server/controllers/utils/metadata.mjs.map +1 -1
  425. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  426. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  427. package/dist/server/controllers/validation/index.js.map +1 -1
  428. package/dist/server/controllers/validation/index.mjs +1 -1
  429. package/dist/server/controllers/validation/index.mjs.map +1 -1
  430. package/dist/server/controllers/validation/model-configuration.js +6 -1
  431. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  432. package/dist/server/controllers/validation/model-configuration.mjs +6 -1
  433. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  434. package/dist/server/controllers/validation/relations.js.map +1 -1
  435. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  436. package/dist/server/destroy.js.map +1 -1
  437. package/dist/server/destroy.mjs.map +1 -1
  438. package/dist/server/history/constants.js.map +1 -1
  439. package/dist/server/history/constants.mjs.map +1 -1
  440. package/dist/server/history/controllers/history-version.js.map +1 -1
  441. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  442. package/dist/server/history/controllers/index.js.map +1 -1
  443. package/dist/server/history/controllers/index.mjs.map +1 -1
  444. package/dist/server/history/controllers/validation/history-version.js.map +1 -1
  445. package/dist/server/history/controllers/validation/history-version.mjs.map +1 -1
  446. package/dist/server/history/index.js +4 -4
  447. package/dist/server/history/index.js.map +1 -1
  448. package/dist/server/history/index.mjs.map +1 -1
  449. package/dist/server/history/models/history-version.js.map +1 -1
  450. package/dist/server/history/models/history-version.mjs.map +1 -1
  451. package/dist/server/history/routes/history-version.js.map +1 -1
  452. package/dist/server/history/routes/history-version.mjs.map +1 -1
  453. package/dist/server/history/routes/index.js.map +1 -1
  454. package/dist/server/history/routes/index.mjs.map +1 -1
  455. package/dist/server/history/services/history.js.map +1 -1
  456. package/dist/server/history/services/history.mjs.map +1 -1
  457. package/dist/server/history/services/index.js.map +1 -1
  458. package/dist/server/history/services/index.mjs.map +1 -1
  459. package/dist/server/history/services/lifecycles.js.map +1 -1
  460. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  461. package/dist/server/history/services/utils.js.map +1 -1
  462. package/dist/server/history/services/utils.mjs.map +1 -1
  463. package/dist/server/history/utils.js.map +1 -1
  464. package/dist/server/history/utils.mjs.map +1 -1
  465. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  466. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  467. package/dist/server/homepage/controllers/index.js.map +1 -1
  468. package/dist/server/homepage/controllers/index.mjs.map +1 -1
  469. package/dist/server/homepage/index.js +6 -6
  470. package/dist/server/homepage/index.js.map +1 -1
  471. package/dist/server/homepage/index.mjs.map +1 -1
  472. package/dist/server/homepage/routes/homepage.js.map +1 -1
  473. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  474. package/dist/server/homepage/routes/index.js.map +1 -1
  475. package/dist/server/homepage/routes/index.mjs.map +1 -1
  476. package/dist/server/homepage/services/homepage.js.map +1 -1
  477. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  478. package/dist/server/homepage/services/index.js.map +1 -1
  479. package/dist/server/homepage/services/index.mjs.map +1 -1
  480. package/dist/server/index.js +8 -8
  481. package/dist/server/middlewares/routing.js.map +1 -1
  482. package/dist/server/middlewares/routing.mjs.map +1 -1
  483. package/dist/server/policies/hasPermissions.js.map +1 -1
  484. package/dist/server/policies/hasPermissions.mjs.map +1 -1
  485. package/dist/server/policies/index.js.map +1 -1
  486. package/dist/server/policies/index.mjs.map +1 -1
  487. package/dist/server/preview/controllers/index.js.map +1 -1
  488. package/dist/server/preview/controllers/index.mjs.map +1 -1
  489. package/dist/server/preview/controllers/preview.js.map +1 -1
  490. package/dist/server/preview/controllers/preview.mjs.map +1 -1
  491. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  492. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  493. package/dist/server/preview/index.js +4 -4
  494. package/dist/server/preview/index.js.map +1 -1
  495. package/dist/server/preview/index.mjs.map +1 -1
  496. package/dist/server/preview/routes/index.js.map +1 -1
  497. package/dist/server/preview/routes/index.mjs.map +1 -1
  498. package/dist/server/preview/routes/preview.js.map +1 -1
  499. package/dist/server/preview/routes/preview.mjs.map +1 -1
  500. package/dist/server/preview/services/index.js.map +1 -1
  501. package/dist/server/preview/services/index.mjs.map +1 -1
  502. package/dist/server/preview/services/preview-config.js.map +1 -1
  503. package/dist/server/preview/services/preview-config.mjs +1 -1
  504. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  505. package/dist/server/preview/services/preview.js +2 -1
  506. package/dist/server/preview/services/preview.js.map +1 -1
  507. package/dist/server/preview/services/preview.mjs +2 -1
  508. package/dist/server/preview/services/preview.mjs.map +1 -1
  509. package/dist/server/preview/utils.js.map +1 -1
  510. package/dist/server/preview/utils.mjs.map +1 -1
  511. package/dist/server/register.js.map +1 -1
  512. package/dist/server/register.mjs.map +1 -1
  513. package/dist/server/routes/admin.js.map +1 -1
  514. package/dist/server/routes/admin.mjs.map +1 -1
  515. package/dist/server/routes/index.js +4 -4
  516. package/dist/server/routes/index.js.map +1 -1
  517. package/dist/server/routes/index.mjs.map +1 -1
  518. package/dist/server/services/components.js.map +1 -1
  519. package/dist/server/services/components.mjs.map +1 -1
  520. package/dist/server/services/configuration.js.map +1 -1
  521. package/dist/server/services/configuration.mjs.map +1 -1
  522. package/dist/server/services/content-types.js.map +1 -1
  523. package/dist/server/services/content-types.mjs.map +1 -1
  524. package/dist/server/services/data-mapper.js.map +1 -1
  525. package/dist/server/services/data-mapper.mjs.map +1 -1
  526. package/dist/server/services/document-manager.js.map +1 -1
  527. package/dist/server/services/document-manager.mjs +2 -2
  528. package/dist/server/services/document-manager.mjs.map +1 -1
  529. package/dist/server/services/document-metadata.js.map +1 -1
  530. package/dist/server/services/document-metadata.mjs +2 -2
  531. package/dist/server/services/document-metadata.mjs.map +1 -1
  532. package/dist/server/services/field-sizes.js.map +1 -1
  533. package/dist/server/services/field-sizes.mjs.map +1 -1
  534. package/dist/server/services/index.js +4 -4
  535. package/dist/server/services/index.js.map +1 -1
  536. package/dist/server/services/index.mjs.map +1 -1
  537. package/dist/server/services/metrics.js.map +1 -1
  538. package/dist/server/services/metrics.mjs.map +1 -1
  539. package/dist/server/services/permission-checker.js.map +1 -1
  540. package/dist/server/services/permission-checker.mjs.map +1 -1
  541. package/dist/server/services/permission.js.map +1 -1
  542. package/dist/server/services/permission.mjs.map +1 -1
  543. package/dist/server/services/populate-builder.js.map +1 -1
  544. package/dist/server/services/populate-builder.mjs +4 -4
  545. package/dist/server/services/populate-builder.mjs.map +1 -1
  546. package/dist/server/services/uid.js.map +1 -1
  547. package/dist/server/services/uid.mjs.map +1 -1
  548. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  549. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  550. package/dist/server/services/utils/configuration/index.js.map +1 -1
  551. package/dist/server/services/utils/configuration/index.mjs +3 -3
  552. package/dist/server/services/utils/configuration/index.mjs.map +1 -1
  553. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  554. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  555. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  556. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  557. package/dist/server/services/utils/configuration/metadatas.mjs +1 -1
  558. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  559. package/dist/server/services/utils/configuration/settings.js +4 -2
  560. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  561. package/dist/server/services/utils/configuration/settings.mjs +5 -3
  562. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  563. package/dist/server/services/utils/draft.js.map +1 -1
  564. package/dist/server/services/utils/draft.mjs.map +1 -1
  565. package/dist/server/services/utils/populate.js.map +1 -1
  566. package/dist/server/services/utils/populate.mjs +1 -1
  567. package/dist/server/services/utils/populate.mjs.map +1 -1
  568. package/dist/server/services/utils/store.js.map +1 -1
  569. package/dist/server/services/utils/store.mjs.map +1 -1
  570. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  571. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  572. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  573. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  574. package/dist/server/utils/index.js.map +1 -1
  575. package/dist/server/utils/index.mjs.map +1 -1
  576. package/dist/server/validation/policies/hasPermissions.js.map +1 -1
  577. package/dist/server/validation/policies/hasPermissions.mjs.map +1 -1
  578. package/dist/shared/contracts/content-types.d.ts +2 -0
  579. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  580. package/dist/shared/contracts/relations.d.ts +1 -1
  581. package/dist/shared/contracts/relations.d.ts.map +1 -1
  582. package/package.json +15 -10
@@ -9,6 +9,7 @@ var reactIntl = require('react-intl');
9
9
  var useDocument = require('../../hooks/useDocument.js');
10
10
  var hooks = require('../../modules/hooks.js');
11
11
  var data = require('../../pages/EditView/utils/data.js');
12
+ var conditionalFields = require('../../utils/conditionalFields.js');
12
13
  var History = require('../pages/History.js');
13
14
  var VersionInputRenderer = require('./VersionInputRenderer.js');
14
15
 
@@ -80,19 +81,56 @@ const createLayoutFromFields = (fields)=>{
80
81
  }
81
82
  /* -------------------------------------------------------------------------------------------------
82
83
  * FormPanel
83
- * -----------------------------------------------------------------------------------------------*/ const FormPanel = ({ panel })=>{
84
+ * -----------------------------------------------------------------------------------------------*/ // Reuse one rules engine instance instead of creating a new one on every render.
85
+ const rulesEngine = strapiAdmin.createRulesEngine();
86
+ const getPanelConditionDependencyPaths = (panel)=>{
87
+ // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.
88
+ const dependencies = new Set();
89
+ for (const row of panel){
90
+ for (const field of row){
91
+ const condition = field.attribute?.conditions?.visible;
92
+ if (!condition) {
93
+ continue;
94
+ }
95
+ const paths = conditionalFields.getConditionDependencyPaths(condition);
96
+ if (paths === null) {
97
+ return null;
98
+ }
99
+ for (const path of paths){
100
+ dependencies.add(path);
101
+ }
102
+ }
103
+ }
104
+ return [
105
+ ...dependencies
106
+ ].sort();
107
+ };
108
+ const FormPanel = ({ panel })=>{
84
109
  const isMobile = strapiAdmin.useIsMobile();
85
- const fieldValues = strapiAdmin.useForm('Fields', (state)=>state.values);
86
- const rulesEngine = strapiAdmin.createRulesEngine();
110
+ const conditionDependencyPaths = React__namespace.useMemo(()=>getPanelConditionDependencyPaths(panel), [
111
+ panel
112
+ ]);
113
+ const getValues = strapiAdmin.useForm('FormPanel', (state)=>state.getValues);
114
+ const conditionSubscriptionValue = strapiAdmin.useForm('FormPanel', (state)=>{
115
+ return conditionalFields.getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);
116
+ });
117
+ // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.
118
+ // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.
119
+ const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();
120
+ const isFieldVisible = React__namespace.useCallback((field)=>{
121
+ const condition = field.attribute?.conditions?.visible;
122
+ if (!condition) {
123
+ return true;
124
+ }
125
+ return rulesEngine.evaluate(condition, fieldValues);
126
+ }, [
127
+ fieldValues
128
+ ]);
87
129
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
88
130
  const [row] = panel;
89
131
  const [field] = row;
90
- const condition = field.attribute?.conditions?.visible;
91
- if (condition) {
92
- const isVisible = rulesEngine.evaluate(condition, fieldValues);
93
- if (!isVisible) {
94
- return null; // Skip rendering the dynamic zone if the condition is not met
95
- }
132
+ if (!isFieldVisible(field)) {
133
+ return null;
96
134
  }
97
135
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
98
136
  gap: 4,
@@ -129,13 +167,7 @@ const createLayoutFromFields = (fields)=>{
129
167
  alignItems: "stretch",
130
168
  gap: 6,
131
169
  children: panel.map((row, gridRowIndex)=>{
132
- const visibleFields = row.filter((field)=>{
133
- const condition = field.attribute?.conditions?.visible;
134
- if (condition) {
135
- return rulesEngine.evaluate(condition, fieldValues);
136
- }
137
- return true;
138
- });
170
+ const visibleFields = row.filter(isFieldVisible);
139
171
  if (visibleFields.length === 0) {
140
172
  return null; // Skip rendering the entire grid row
141
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.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 xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.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 <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","isMobile","useIsMobile","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,yBAAyB,CAA2CC,MAAAA,GAAAA;AACxE,IAAA,OACEA,MACGC,CAAAA,MAAM,CAAa,CAACC,IAAMC,EAAAA,KAAAA,GAAAA;QACzB,IAAIA,KAAAA,CAAMC,IAAI,KAAK,aAAe,EAAA;;AAEhCF,YAAAA,IAAAA,CAAKG,IAAI,CAAC;AAACF,gBAAAA;AAAM,aAAA,CAAA;YAEjB,OAAOD,IAAAA;AACT;AAEA,QAAA,IAAI,CAACA,IAAI,CAACA,KAAKI,MAAM,GAAG,EAAE,EAAE;;YAE1BJ,IAAKG,CAAAA,IAAI,CAAC,EAAE,CAAA;AACd;;AAGAH,QAAAA,IAAI,CAACA,IAAKI,CAAAA,MAAM,GAAG,CAAE,CAAA,CAACD,IAAI,CAACF,KAAAA,CAAAA;QAE3B,OAAOD,IAAAA;KACN,EAAA,EAAE,CACL;KACCK,GAAG,CAAC,CAACC,GAAQ,GAAA;AAACA,YAAAA;AAAI,SAAA,CAAA;AAEzB,CAAA;AAaA;;;;;IAMA,SAASC,sBAAuB,CAAA,EAC9BC,MAAM,EACNC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACsB,EAAA;AAChC,IAAA,MAAMC,iBAAiBJ,MAAOK,CAAAA,OAAO,CAAC,CAACC,QACrCA,KAAMD,CAAAA,OAAO,CAAC,CAACP,MAAQA,GAAIO,CAAAA,OAAO,CAAC,CAACZ,KAAAA,GAAUA,MAAMc,IAAI,CAAA,CAAA,CAAA;IAE1D,MAAMC,eAAAA,GAAkBC,MAAOC,CAAAA,OAAO,CAACT,SAAAA,CAAAA,CAAWV,MAAM,CACtD,CAACoB,sBAAAA,EAAwB,CAACJ,IAAAA,EAAMd,KAAM,CAAA,GAAA;;QAEpC,IAAI,CAACW,cAAeQ,CAAAA,QAAQ,CAACL,IAAAA,CAAAA,IAASd,MAAMoB,IAAI,CAACC,OAAO,KAAK,IAAM,EAAA;YACjE,MAAMC,SAAAA,GAAYb,gBAAgB,CAACK,IAAK,CAAA;;AAExCI,YAAAA,sBAAAA,CAAuBhB,IAAI,CAAC;AAC1BoB,gBAAAA,SAAAA;AACArB,gBAAAA,IAAAA,EAAMqB,UAAUrB,IAAI;gBACpBoB,OAAS,EAAA,IAAA;gBACTE,QAAU,EAAA,IAAA;AACVC,gBAAAA,KAAAA,EAAOxB,KAAMoB,CAAAA,IAAI,CAACI,KAAK,IAAIV,IAAAA;gBAC3BA,IAAMA,EAAAA,IAAAA;AACNW,gBAAAA,IAAAA,EAAMf,UAAU,CAACY,SAAAA,CAAUrB,IAAI,CAAC,CAACyB,OAAO,IAAI;AAC9C,aAAA,CAAA;AACF;QAEA,OAAOR,sBAAAA;AACT,KAAA,EACA,EAAE,CAAA;AAGJ,IAAA,OAAOtB,sBAAuBmB,CAAAA,eAAAA,CAAAA;AAChC;AAEA;;AAEkG,qGAElG,MAAMY,SAAAA,GAAY,CAAC,EAAEd,KAAK,EAAkC,GAAA;AAC1D,IAAA,MAAMe,QAAWC,GAAAA,uBAAAA,EAAAA;AACjB,IAAA,MAAMC,cAAcC,mBAAQ,CAAA,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMC,MAAM,CAAA;AAC7D,IAAA,MAAMC,WAAcC,GAAAA,6BAAAA,EAAAA;AACpB,IAAA,IAAItB,KAAMuB,CAAAA,IAAI,CAAC,CAAC/B,GAAQA,GAAAA,GAAAA,CAAI+B,IAAI,CAAC,CAACpC,KAAAA,GAAUA,KAAMC,CAAAA,IAAI,KAAK,aAAiB,CAAA,CAAA,EAAA;QAC1E,MAAM,CAACI,IAAI,GAAGQ,KAAAA;QACd,MAAM,CAACb,MAAM,GAAGK,GAAAA;AAChB,QAAA,MAAMgC,SAAYrC,GAAAA,KAAAA,CAAMsB,SAAS,EAAEgB,UAAYjB,EAAAA,OAAAA;AAE/C,QAAA,IAAIgB,SAAW,EAAA;AACb,YAAA,MAAME,SAAYL,GAAAA,WAAAA,CAAYM,QAAQ,CAACH,SAAWP,EAAAA,WAAAA,CAAAA;AAClD,YAAA,IAAI,CAACS,SAAW,EAAA;AACd,gBAAA,OAAO;AACT;AACF;QAEA,qBACEE,cAAA,CAACC,kBAAKC,IAAI,EAAA;YAAkBC,GAAK,EAAA,CAAA;oCAC/BH,cAAA,CAACC,kBAAKG,IAAI,EAAA;gBAACC,EAAI,EAAA,EAAA;gBAAIC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;AAC/C,gBAAA,QAAA,gBAAAP,cAACQ,CAAAA,yCAAAA,EAAAA;AAAsB,oBAAA,GAAGjD;;;AAFdA,SAAAA,EAAAA,KAAAA,CAAMc,IAAI,CAAA;AAM9B;AAEA,IAAA,qBACE2B,cAACS,CAAAA,gBAAAA,EAAAA;AACCC,QAAAA,SAAAA,EAAW,CAACvB,QAAAA;QACZwB,UAAY,EAAA;YAAEC,OAAS,EAAA,aAAA;YAAeC,MAAQ,EAAA;AAAW,SAAA;QACzDC,MAAQ,EAAA;YAAEF,OAAS,EAAA,MAAA;YAAQC,MAAQ,EAAA;AAAc,SAAA;QACjDE,OAAS,EAAA;YAAEH,OAAS,EAAA,CAAA;YAAGC,MAAQ,EAAA;AAAE,SAAA;QACjCG,WAAa,EAAA;YAAEJ,OAAS,EAAA,aAAA;YAAeC,MAAQ,EAAA;AAAa,SAAA;AAE5D,QAAA,QAAA,gBAAAb,cAACiB,CAAAA,iBAAAA,EAAAA;YAAKX,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,SAAA;YAAUJ,GAAK,EAAA,CAAA;sBAChD/B,KAAMT,CAAAA,GAAG,CAAC,CAACC,GAAKsD,EAAAA,YAAAA,GAAAA;AACf,gBAAA,MAAMC,aAAgBvD,GAAAA,GAAAA,CAAIwD,MAAM,CAAC,CAAC7D,KAAAA,GAAAA;AAChC,oBAAA,MAAMqC,SAAYrC,GAAAA,KAAAA,CAAMsB,SAAS,EAAEgB,UAAYjB,EAAAA,OAAAA;AAE/C,oBAAA,IAAIgB,SAAW,EAAA;wBACb,OAAOH,WAAAA,CAAYM,QAAQ,CAACH,SAAWP,EAAAA,WAAAA,CAAAA;AACzC;oBAEA,OAAO,IAAA;AACT,iBAAA,CAAA;gBAEA,IAAI8B,aAAAA,CAAczD,MAAM,KAAK,CAAG,EAAA;AAC9B,oBAAA,OAAO;AACT;gBAEA,qBACEsC,cAAA,CAACC,kBAAKC,IAAI,EAAA;oBAAoBC,GAAK,EAAA;wBAAES,OAAS,EAAA,CAAA;wBAAGC,MAAQ,EAAA;AAAE,qBAAA;AACxDM,oBAAAA,QAAAA,EAAAA,aAAAA,CAAcxD,GAAG,CAAC,CAAC,EAAEqB,IAAI,EAAE,GAAGzB,KAAO,EAAA,GAAA;wBACpC,qBACEyC,cAAA,CAACC,kBAAKG,IAAI,EAAA;4BACRiB,GAAKrC,EAAAA,IAAAA;4BAELqB,EAAI,EAAA,EAAA;4BACJC,SAAU,EAAA,QAAA;4BACVC,UAAW,EAAA,SAAA;AAEX,4BAAA,QAAA,gBAAAP,cAACQ,CAAAA,yCAAAA,EAAAA;AAAsB,gCAAA,GAAGjD;;AALrBA,yBAAAA,EAAAA,KAAAA,CAAMc,IAAI,CAAA;AAQrB,qBAAA;AAbc6C,iBAAAA,EAAAA,YAAAA,CAAAA;AAgBpB,aAAA;;;AAIR,CAAA;AAQA,MAAMI,cAAiB,GAAA,IAAA;IACrB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEvD,UAAU,EAAE,GAAGwD,sBAAAA,CAAiB,CAAClC,KAAAA,GAAUA,KAAK,CAAC,iBAAkB,CAAA,CAACmC,GAAG,CAAA;AAC/E,IAAA,MAAMC,UAAUC,yBAAkB,CAAA,gBAAA,EAAkB,CAACrC,KAAAA,GAAUA,MAAMsC,eAAe,CAAA;AACpF,IAAA,MAAM/D,SAAS8D,yBAAkB,CAAA,gBAAA,EAAkB,CAACrC,KAAAA,GAAUA,MAAMzB,MAAM,CAAA;AAC1E,IAAA,MAAMgE,gBAAgBF,yBAAkB,CAAA,gBAAA,EAAkB,CAACrC,KAAAA,GAAUA,MAAMuC,aAAa,CAAA;AACxF,IAAA,MAAMC,SAASH,yBAAkB,CAAA,gBAAA,EAAkB,CAACrC,KAAAA,GAAUA,MAAMwC,MAAM,CAAA;;AAG1E,IAAA,MAAMC,oBAAoBL,OAAQM,CAAAA,IAAI,CAACC,iBAAiB,CAACC,OAAO;IAChE,MAAMC,yBAAAA,GAA4B7D,MAAOC,CAAAA,OAAO,CAACwD,iBAAAA,CAAAA,CAAmBrE,GAAG,CACrE,CAAC,CAAC0E,aAAAA,EAAexD,SAAU,CAAA,GAAA;AACzB,QAAA,MAAMtB,KAAQ,GAAA;AACZsB,YAAAA,SAAAA;YACAyD,gBAAkB,EAAA,IAAA;AAClB9E,YAAAA,IAAAA,EAAMqB,UAAUrB,IAAI;YACpBoB,OAAS,EAAA,IAAA;YACTE,QAAU,EAAA,IAAA;YACVC,KAAOsD,EAAAA,aAAAA;YACPhE,IAAMgE,EAAAA,aAAAA;AACNrD,YAAAA,IAAAA,EAAMf,UAAU,CAACY,SAAAA,CAAUrB,IAAI,CAAC,CAACyB,OAAO,IAAI;AAC9C,SAAA;QAEA,OAAO1B,KAAAA;AACT,KAAA,CAAA;AAEF,IAAA,MAAMgF,sBAAsBpF,sBAAuBiF,CAAAA,yBAAAA,CAAAA;;AAGnD,IAAA,MAAMI,wBAAwB3E,sBAAuB,CAAA;QACnDE,SAAW+D,EAAAA,aAAAA,CAAcW,WAAW,CAAC1E,SAAS;AAC9CD,QAAAA,MAAAA;AACAE,QAAAA,gBAAAA,EAAkB+D,OAAOW,UAAU;AACnCzE,QAAAA;AACF,KAAA,CAAA;IAEA,MAAM,EAAE0E,UAAU,EAAE,GAAGC,kBAAAA,EAAAA;AAEvB;;;AAGC,MACD,MAAMC,eAAAA,GAAkBC,gBAAMC,CAAAA,OAAO,CAAC,IAAA;AACpC,QAAA,MAAMC,YACJ,CAAChF,gBAAAA,EAAqC2E,aAAmC,EAAE,GAC3E,CAACM,QAAAA,GAAAA;AACC,gBAAA,MAAMlB,MAAS,GAAA;oBAAEW,UAAY1E,EAAAA;AAAiB,iBAAA;AAE9C,gBAAA,MAAMkF,eAAkBC,GAAAA,IAAAA,CACtBC,sCAAkCrB,CAAAA,MAAAA,CAAAA,EAClCsB,qBAAgBtB,MAAQY,EAAAA,UAAAA,CAAAA,CAAAA;AAE1B,gBAAA,OAAOO,eAAgBD,CAAAA,QAAAA,CAAAA;AACzB,aAAA;AAEF,QAAA,OAAOD,UAAUrB,OAAQI,CAAAA,MAAM,EAAEY,UAAAA,CAAAA,CAAYhB,QAAQ2B,IAAI,CAAA;KACxD,EAAA;AAACX,QAAAA,UAAAA;AAAYhB,QAAAA,OAAAA,CAAQ2B,IAAI;AAAE3B,QAAAA,OAAAA,CAAQI;AAAO,KAAA,CAAA;IAE7C,qBACE/B,cAAA,CAACuD,oBAAQC,OAAO,EAAA;AACd,QAAA,QAAA,gBAAAC,eAAChD,CAAAA,gBAAAA,EAAAA;YAAIiD,aAAe,EAAA;gBAAE9C,OAAS,EAAA,CAAA;gBAAG+C,KAAO,EAAA;AAAE,aAAA;;8BACzC3D,cAAC4D,CAAAA,gBAAAA,EAAAA;oBAAsB9E,QAAU,EAAA,IAAA;oBAAM+E,MAAO,EAAA,KAAA;oBAAMC,aAAejB,EAAAA,eAAAA;AACjE,oBAAA,QAAA,gBAAA7C,cAACiB,CAAAA,iBAAAA,EAAAA;wBAAKX,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,SAAA;wBAAUJ,GAAK,EAAA,CAAA;wBAAG4D,QAAS,EAAA,UAAA;AAC5D,wBAAA,QAAA,EAAA;AAAIjG,4BAAAA,GAAAA,MAAAA;AAAW0E,4BAAAA,GAAAA;yBAAsB,CAAC7E,GAAG,CAAC,CAACS,KAAO4F,EAAAA,KAAAA,GAAAA;AACjD,4BAAA,qBAAOhE,cAACd,CAAAA,SAAAA,EAAAA;gCAAsBd,KAAOA,EAAAA;AAAd4F,6BAAAA,EAAAA,KAAAA,CAAAA;AACzB,yBAAA;;AAJOrC,iBAAAA,EAAAA,OAAAA,CAAQsC,EAAE,CAAA;gBAOpB7B,yBAA0B1E,CAAAA,MAAM,GAAG,CAClC,kBAAA+F,eAAA,CAAAS,mBAAA,EAAA;;sCACElE,cAACS,CAAAA,gBAAAA,EAAAA;4BAAI0D,UAAY,EAAA;gCAAEvD,OAAS,EAAA,CAAA;gCAAG+C,KAAO,EAAA;AAAE,6BAAA;AACtC,4BAAA,QAAA,gBAAA3D,cAACoE,CAAAA,oBAAAA,EAAAA,EAAAA;;sCAEHX,eAAChD,CAAAA,gBAAAA,EAAAA;4BAAI0D,UAAY,EAAA;gCAAEvD,OAAS,EAAA,CAAA;gCAAG+C,KAAO,EAAA;AAAE,6BAAA;;8CACtCF,eAACxC,CAAAA,iBAAAA,EAAAA;oCACCX,SAAU,EAAA,QAAA;oCACVC,UAAW,EAAA,YAAA;oCACXmD,aAAe,EAAA;wCAAE9C,OAAS,EAAA,CAAA;wCAAG+C,KAAO,EAAA;AAAE,qCAAA;oCACtCxD,GAAK,EAAA,CAAA;;sDAELH,cAACqE,CAAAA,uBAAAA,EAAAA;4CAAWC,OAAQ,EAAA,OAAA;sDACjB/C,aAAc,CAAA;gDACb0C,EAAI,EAAA,sDAAA;gDACJM,cAAgB,EAAA;AAClB,6CAAA;;sDAEFvE,cAACqE,CAAAA,uBAAAA,EAAAA;4CAAWC,OAAQ,EAAA,IAAA;sDACjB/C,aACC,CAAA;gDACE0C,EAAI,EAAA,wDAAA;gDACJM,cACE,EAAA;6CAEJ,EAAA;gDACEC,CAAG,EAAA,CAACC,uBACFzE,cAACqE,CAAAA,uBAAAA,EAAAA;wDAAWC,OAAQ,EAAA,IAAA;wDAAKI,UAAW,EAAA,MAAA;AACjCD,wDAAAA,QAAAA,EAAAA;;AAGP,6CAAA;;;;8CAINzE,cAAC4D,CAAAA,gBAAAA,EAAAA;oCAEC9E,QAAU,EAAA,IAAA;oCACV+E,MAAO,EAAA,KAAA;AACPC,oCAAAA,aAAAA,EAAenC,QAAQ2B,IAAI;AAE3B,oCAAA,QAAA,gBAAAtD,cAACiB,CAAAA,iBAAAA,EAAAA;wCAAKX,SAAU,EAAA,QAAA;wCAASC,UAAW,EAAA,SAAA;wCAAUJ,GAAK,EAAA,CAAA;wCAAG4D,QAAS,EAAA,UAAA;kDAC5DxB,mBAAoB5E,CAAAA,GAAG,CAAC,CAACS,KAAO4F,EAAAA,KAAAA,GAAAA;AAC/B,4CAAA,qBAAOhE,cAACd,CAAAA,SAAAA,EAAAA;gDAAsBd,KAAOA,EAAAA;AAAd4F,6CAAAA,EAAAA,KAAAA,CAAAA;AACzB,yCAAA;;AARG,iCAAA,EAAA,CAAA,EAAGrC,OAAQsC,CAAAA,EAAE,CAAC,cAAc,CAAC;;;;;;;;AAiBlD;;;;;"}
1
+ {"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","Set","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { useIntl } from 'react-intl';
7
7
  import { useDoc } from '../../hooks/useDocument.mjs';
8
8
  import { useTypedSelector } from '../../modules/hooks.mjs';
9
9
  import { removeFieldsThatDontExistOnSchema, prepareTempKeys } from '../../pages/EditView/utils/data.mjs';
10
+ import { getConditionDependencySubscriptionValue, getConditionDependencyPaths } from '../../utils/conditionalFields.mjs';
10
11
  import { useHistoryContext } from '../pages/History.mjs';
11
12
  import { VersionInputRenderer } from './VersionInputRenderer.mjs';
12
13
 
@@ -59,19 +60,56 @@ const createLayoutFromFields = (fields)=>{
59
60
  }
60
61
  /* -------------------------------------------------------------------------------------------------
61
62
  * FormPanel
62
- * -----------------------------------------------------------------------------------------------*/ const FormPanel = ({ panel })=>{
63
+ * -----------------------------------------------------------------------------------------------*/ // Reuse one rules engine instance instead of creating a new one on every render.
64
+ const rulesEngine = createRulesEngine();
65
+ const getPanelConditionDependencyPaths = (panel)=>{
66
+ // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.
67
+ const dependencies = new Set();
68
+ for (const row of panel){
69
+ for (const field of row){
70
+ const condition = field.attribute?.conditions?.visible;
71
+ if (!condition) {
72
+ continue;
73
+ }
74
+ const paths = getConditionDependencyPaths(condition);
75
+ if (paths === null) {
76
+ return null;
77
+ }
78
+ for (const path of paths){
79
+ dependencies.add(path);
80
+ }
81
+ }
82
+ }
83
+ return [
84
+ ...dependencies
85
+ ].sort();
86
+ };
87
+ const FormPanel = ({ panel })=>{
63
88
  const isMobile = useIsMobile();
64
- const fieldValues = useForm('Fields', (state)=>state.values);
65
- const rulesEngine = createRulesEngine();
89
+ const conditionDependencyPaths = React.useMemo(()=>getPanelConditionDependencyPaths(panel), [
90
+ panel
91
+ ]);
92
+ const getValues = useForm('FormPanel', (state)=>state.getValues);
93
+ const conditionSubscriptionValue = useForm('FormPanel', (state)=>{
94
+ return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);
95
+ });
96
+ // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.
97
+ // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.
98
+ const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();
99
+ const isFieldVisible = React.useCallback((field)=>{
100
+ const condition = field.attribute?.conditions?.visible;
101
+ if (!condition) {
102
+ return true;
103
+ }
104
+ return rulesEngine.evaluate(condition, fieldValues);
105
+ }, [
106
+ fieldValues
107
+ ]);
66
108
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
67
109
  const [row] = panel;
68
110
  const [field] = row;
69
- const condition = field.attribute?.conditions?.visible;
70
- if (condition) {
71
- const isVisible = rulesEngine.evaluate(condition, fieldValues);
72
- if (!isVisible) {
73
- return null; // Skip rendering the dynamic zone if the condition is not met
74
- }
111
+ if (!isFieldVisible(field)) {
112
+ return null;
75
113
  }
76
114
  return /*#__PURE__*/ jsx(Grid.Root, {
77
115
  gap: 4,
@@ -108,13 +146,7 @@ const createLayoutFromFields = (fields)=>{
108
146
  alignItems: "stretch",
109
147
  gap: 6,
110
148
  children: panel.map((row, gridRowIndex)=>{
111
- const visibleFields = row.filter((field)=>{
112
- const condition = field.attribute?.conditions?.visible;
113
- if (condition) {
114
- return rulesEngine.evaluate(condition, fieldValues);
115
- }
116
- return true;
117
- });
149
+ const visibleFields = row.filter(isFieldVisible);
118
150
  if (visibleFields.length === 0) {
119
151
  return null; // Skip rendering the entire grid row
120
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, useForm, createRulesEngine, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const condition = field.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 xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter((field) => {\n const condition = field.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 <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","FormPanel","isMobile","useIsMobile","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","some","condition","conditions","isVisible","evaluate","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","React","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
1
+ {"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","Set","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VersionHeader.js","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
1
+ {"version":3,"file":"VersionHeader.js","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { useTracking, useNotification, useQueryParams, useRBAC, Layouts, GradientBadge, ConfirmDialog } from '@strapi/admin/strapi-admin';
4
- import { Dialog, Typography, Link, Button, Flex } from '@strapi/design-system';
4
+ import { Dialog, Button, Link, Typography, Flex } from '@strapi/design-system';
5
5
  import { ArrowLeft, WarningCircle } from '@strapi/icons';
6
6
  import { stringify } from 'qs';
7
7
  import { useIntl } from 'react-intl';
@@ -1 +1 @@
1
- {"version":3,"file":"VersionHeader.mjs","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
1
+ {"version":3,"file":"VersionHeader.mjs","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}