@strapi/content-manager 0.0.0-next.3dfa46a688dac778822b4cb229acfc1ce41e71ed → 0.0.0-next.3e666b1ad96ac2e82634e548e10ea7c7797a7474

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 (308) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +34 -30
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +36 -32
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/components/Widgets.js +161 -0
  10. package/dist/admin/components/Widgets.js.map +1 -0
  11. package/dist/admin/components/Widgets.mjs +158 -0
  12. package/dist/admin/components/Widgets.mjs.map +1 -0
  13. package/dist/admin/content-manager.js.map +1 -1
  14. package/dist/admin/content-manager.mjs.map +1 -1
  15. package/dist/admin/history/components/VersionContent.js +24 -3
  16. package/dist/admin/history/components/VersionContent.js.map +1 -1
  17. package/dist/admin/history/components/VersionContent.mjs +25 -4
  18. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  19. package/dist/admin/history/components/VersionHeader.js +6 -0
  20. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  21. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  22. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  23. package/dist/admin/history/pages/History.js +1 -9
  24. package/dist/admin/history/pages/History.js.map +1 -1
  25. package/dist/admin/history/pages/History.mjs +1 -9
  26. package/dist/admin/history/pages/History.mjs.map +1 -1
  27. package/dist/admin/hooks/useDocumentActions.js +20 -5
  28. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  29. package/dist/admin/hooks/useDocumentActions.mjs +20 -5
  30. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  31. package/dist/admin/hooks/useDocumentContext.js +57 -0
  32. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  33. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  34. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  35. package/dist/admin/index.js +42 -5
  36. package/dist/admin/index.js.map +1 -1
  37. package/dist/admin/index.mjs +42 -3
  38. package/dist/admin/index.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/EditViewPage.js +100 -91
  40. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  41. package/dist/admin/pages/EditView/EditViewPage.mjs +102 -93
  42. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/DocumentActions.js +288 -104
  44. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/DocumentActions.mjs +294 -110
  46. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  58. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  68. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  70. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +17 -4
  72. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +18 -5
  74. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -21
  76. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +25 -23
  78. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  80. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  82. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +506 -345
  84. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +506 -347
  86. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +174 -68
  88. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +178 -72
  90. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  92. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  94. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  98. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  100. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  102. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  104. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  106. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  108. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  110. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -10
  112. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -10
  114. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/utils/data.js +103 -0
  116. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  117. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  118. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  119. package/dist/admin/pages/ListView/ListViewPage.js +77 -0
  120. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  121. package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
  122. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  123. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  124. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  125. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  126. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  127. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  128. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  129. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  130. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  131. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  132. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  133. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  134. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  135. package/dist/admin/preview/components/PreviewHeader.js +3 -6
  136. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  137. package/dist/admin/preview/components/PreviewHeader.mjs +3 -6
  138. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  139. package/dist/admin/preview/pages/Preview.js +94 -102
  140. package/dist/admin/preview/pages/Preview.js.map +1 -1
  141. package/dist/admin/preview/pages/Preview.mjs +94 -102
  142. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  143. package/dist/admin/services/documents.js +2 -2
  144. package/dist/admin/services/documents.js.map +1 -1
  145. package/dist/admin/services/documents.mjs +2 -2
  146. package/dist/admin/services/documents.mjs.map +1 -1
  147. package/dist/admin/services/homepage.js +30 -0
  148. package/dist/admin/services/homepage.js.map +1 -0
  149. package/dist/admin/services/homepage.mjs +28 -0
  150. package/dist/admin/services/homepage.mjs.map +1 -0
  151. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  152. package/dist/admin/src/components/Widgets.d.ts +3 -0
  153. package/dist/admin/src/content-manager.d.ts +0 -3
  154. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  155. package/dist/admin/src/history/pages/History.d.ts +1 -1
  156. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  157. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  158. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  159. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  160. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  161. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  162. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  163. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  164. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  165. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  166. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  167. package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
  168. package/dist/admin/src/services/documents.d.ts +7 -1
  169. package/dist/admin/src/services/homepage.d.ts +5 -0
  170. package/dist/admin/src/utils/validation.d.ts +1 -0
  171. package/dist/admin/translations/en.json.js +3 -1
  172. package/dist/admin/translations/en.json.js.map +1 -1
  173. package/dist/admin/translations/en.json.mjs +3 -1
  174. package/dist/admin/translations/en.json.mjs.map +1 -1
  175. package/dist/admin/translations/ru.json.js +235 -226
  176. package/dist/admin/translations/ru.json.js.map +1 -1
  177. package/dist/admin/translations/ru.json.mjs +230 -226
  178. package/dist/admin/translations/ru.json.mjs.map +1 -1
  179. package/dist/admin/utils/validation.js +17 -6
  180. package/dist/admin/utils/validation.js.map +1 -1
  181. package/dist/admin/utils/validation.mjs +17 -6
  182. package/dist/admin/utils/validation.mjs.map +1 -1
  183. package/dist/server/controllers/content-types.js +11 -1
  184. package/dist/server/controllers/content-types.js.map +1 -1
  185. package/dist/server/controllers/content-types.mjs +11 -1
  186. package/dist/server/controllers/content-types.mjs.map +1 -1
  187. package/dist/server/controllers/index.js +3 -1
  188. package/dist/server/controllers/index.js.map +1 -1
  189. package/dist/server/controllers/index.mjs +3 -1
  190. package/dist/server/controllers/index.mjs.map +1 -1
  191. package/dist/server/controllers/validation/index.js +14 -2
  192. package/dist/server/controllers/validation/index.js.map +1 -1
  193. package/dist/server/controllers/validation/index.mjs +14 -2
  194. package/dist/server/controllers/validation/index.mjs.map +1 -1
  195. package/dist/server/history/services/lifecycles.js +3 -0
  196. package/dist/server/history/services/lifecycles.js.map +1 -1
  197. package/dist/server/history/services/lifecycles.mjs +3 -0
  198. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  199. package/dist/server/homepage/controllers/homepage.js +57 -0
  200. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  201. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  202. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  203. package/dist/server/homepage/controllers/index.js +10 -0
  204. package/dist/server/homepage/controllers/index.js.map +1 -0
  205. package/dist/server/homepage/controllers/index.mjs +8 -0
  206. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  207. package/dist/server/homepage/index.js +14 -0
  208. package/dist/server/homepage/index.js.map +1 -0
  209. package/dist/server/homepage/index.mjs +12 -0
  210. package/dist/server/homepage/index.mjs.map +1 -0
  211. package/dist/server/homepage/routes/homepage.js +25 -0
  212. package/dist/server/homepage/routes/homepage.js.map +1 -0
  213. package/dist/server/homepage/routes/homepage.mjs +23 -0
  214. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  215. package/dist/server/homepage/routes/index.js +13 -0
  216. package/dist/server/homepage/routes/index.js.map +1 -0
  217. package/dist/server/homepage/routes/index.mjs +11 -0
  218. package/dist/server/homepage/routes/index.mjs.map +1 -0
  219. package/dist/server/homepage/services/homepage.js +157 -0
  220. package/dist/server/homepage/services/homepage.js.map +1 -0
  221. package/dist/server/homepage/services/homepage.mjs +155 -0
  222. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  223. package/dist/server/homepage/services/index.js +10 -0
  224. package/dist/server/homepage/services/index.js.map +1 -0
  225. package/dist/server/homepage/services/index.mjs +8 -0
  226. package/dist/server/homepage/services/index.mjs.map +1 -0
  227. package/dist/server/preview/services/preview.js +0 -1
  228. package/dist/server/preview/services/preview.js.map +1 -1
  229. package/dist/server/preview/services/preview.mjs +0 -1
  230. package/dist/server/preview/services/preview.mjs.map +1 -1
  231. package/dist/server/routes/index.js +3 -1
  232. package/dist/server/routes/index.js.map +1 -1
  233. package/dist/server/routes/index.mjs +3 -1
  234. package/dist/server/routes/index.mjs.map +1 -1
  235. package/dist/server/services/data-mapper.js +4 -1
  236. package/dist/server/services/data-mapper.js.map +1 -1
  237. package/dist/server/services/data-mapper.mjs +4 -1
  238. package/dist/server/services/data-mapper.mjs.map +1 -1
  239. package/dist/server/services/document-manager.js +8 -1
  240. package/dist/server/services/document-manager.js.map +1 -1
  241. package/dist/server/services/document-manager.mjs +8 -1
  242. package/dist/server/services/document-manager.mjs.map +1 -1
  243. package/dist/server/services/document-metadata.js +3 -1
  244. package/dist/server/services/document-metadata.js.map +1 -1
  245. package/dist/server/services/document-metadata.mjs +3 -1
  246. package/dist/server/services/document-metadata.mjs.map +1 -1
  247. package/dist/server/services/index.js +3 -1
  248. package/dist/server/services/index.js.map +1 -1
  249. package/dist/server/services/index.mjs +3 -1
  250. package/dist/server/services/index.mjs.map +1 -1
  251. package/dist/server/services/utils/configuration/attributes.js +1 -1
  252. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  253. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  254. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  255. package/dist/server/services/utils/configuration/layouts.js +1 -1
  256. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  257. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  258. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  259. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  260. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  261. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  262. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  263. package/dist/server/services/utils/populate.js +11 -0
  264. package/dist/server/services/utils/populate.js.map +1 -1
  265. package/dist/server/services/utils/populate.mjs +11 -0
  266. package/dist/server/services/utils/populate.mjs.map +1 -1
  267. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  268. package/dist/server/src/controllers/index.d.ts.map +1 -1
  269. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  270. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  271. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  272. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  273. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  274. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  275. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  276. package/dist/server/src/homepage/index.d.ts +16 -0
  277. package/dist/server/src/homepage/index.d.ts.map +1 -0
  278. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  279. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  280. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  281. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  282. package/dist/server/src/homepage/services/homepage.d.ts +11 -0
  283. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  284. package/dist/server/src/homepage/services/index.d.ts +9 -0
  285. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  286. package/dist/server/src/index.d.ts +8 -0
  287. package/dist/server/src/index.d.ts.map +1 -1
  288. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  289. package/dist/server/src/routes/index.d.ts +1 -0
  290. package/dist/server/src/routes/index.d.ts.map +1 -1
  291. package/dist/server/src/services/data-mapper.d.ts +1 -0
  292. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  293. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  294. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  295. package/dist/server/src/services/index.d.ts +7 -0
  296. package/dist/server/src/services/index.d.ts.map +1 -1
  297. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  298. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  299. package/dist/shared/contracts/collection-types.d.ts +0 -1
  300. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  301. package/dist/shared/contracts/homepage.d.ts +25 -0
  302. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  303. package/package.json +12 -9
  304. package/dist/admin/features/DocumentContext.js +0 -71
  305. package/dist/admin/features/DocumentContext.js.map +0 -1
  306. package/dist/admin/features/DocumentContext.mjs +0 -49
  307. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  308. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -0,0 +1,161 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
5
+ var designSystem = require('@strapi/design-system');
6
+ var Icons = require('@strapi/icons');
7
+ var reactIntl = require('react-intl');
8
+ var reactRouterDom = require('react-router-dom');
9
+ var styledComponents = require('styled-components');
10
+ var DocumentStatus = require('../pages/EditView/components/DocumentStatus.js');
11
+ var homepage = require('../services/homepage.js');
12
+ var RelativeTime = require('./RelativeTime.js');
13
+
14
+ const CellTypography = styledComponents.styled(designSystem.Typography).attrs({
15
+ maxWidth: '14.4rem',
16
+ display: 'block'
17
+ })`
18
+ overflow: hidden;
19
+ text-overflow: ellipsis;
20
+ white-space: nowrap;
21
+ `;
22
+ const RecentDocumentsTable = ({ documents })=>{
23
+ const { formatMessage } = reactIntl.useIntl();
24
+ const { trackUsage } = strapiAdmin.useTracking();
25
+ const navigate = reactRouterDom.useNavigate();
26
+ const getEditViewLink = (document)=>{
27
+ const isSingleType = document.kind === 'singleType';
28
+ const kindPath = isSingleType ? 'single-types' : 'collection-types';
29
+ const queryParams = document.locale ? `?plugins[i18n][locale]=${document.locale}` : '';
30
+ return `/content-manager/${kindPath}/${document.contentTypeUid}${isSingleType ? '' : '/' + document.documentId}${queryParams}`;
31
+ };
32
+ const handleRowClick = (document)=>()=>{
33
+ trackUsage('willEditEntryFromHome');
34
+ const link = getEditViewLink(document);
35
+ navigate(link);
36
+ };
37
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Table, {
38
+ colCount: 5,
39
+ rowCount: documents?.length ?? 0,
40
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tbody, {
41
+ children: documents?.map((document)=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
42
+ onClick: handleRowClick(document),
43
+ cursor: "pointer",
44
+ children: [
45
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
46
+ children: /*#__PURE__*/ jsxRuntime.jsx(CellTypography, {
47
+ title: document.title,
48
+ variant: "omega",
49
+ textColor: "neutral800",
50
+ children: document.title
51
+ })
52
+ }),
53
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
54
+ children: /*#__PURE__*/ jsxRuntime.jsx(CellTypography, {
55
+ variant: "omega",
56
+ textColor: "neutral600",
57
+ children: document.kind === 'singleType' ? formatMessage({
58
+ id: 'content-manager.widget.last-edited.single-type',
59
+ defaultMessage: 'Single-Type'
60
+ }) : formatMessage({
61
+ id: document.contentTypeDisplayName,
62
+ defaultMessage: document.contentTypeDisplayName
63
+ })
64
+ })
65
+ }),
66
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
67
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
68
+ display: "inline-block",
69
+ children: document.status ? /*#__PURE__*/ jsxRuntime.jsx(DocumentStatus.DocumentStatus, {
70
+ status: document.status
71
+ }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
72
+ textColor: "neutral600",
73
+ "aria-hidden": true,
74
+ children: "-"
75
+ })
76
+ })
77
+ }),
78
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
79
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
80
+ textColor: "neutral600",
81
+ children: /*#__PURE__*/ jsxRuntime.jsx(RelativeTime.RelativeTime, {
82
+ timestamp: new Date(document.updatedAt)
83
+ })
84
+ })
85
+ }),
86
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
87
+ onClick: (e)=>e.stopPropagation(),
88
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
89
+ display: "inline-block",
90
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
91
+ tag: reactRouterDom.Link,
92
+ to: getEditViewLink(document),
93
+ onClick: ()=>trackUsage('willEditEntryFromHome'),
94
+ label: formatMessage({
95
+ id: 'content-manager.actions.edit.label',
96
+ defaultMessage: 'Edit'
97
+ }),
98
+ variant: "ghost",
99
+ children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Pencil, {})
100
+ })
101
+ })
102
+ })
103
+ ]
104
+ }, document.documentId))
105
+ })
106
+ });
107
+ };
108
+ /* -------------------------------------------------------------------------------------------------
109
+ * LastEditedWidget
110
+ * -----------------------------------------------------------------------------------------------*/ const LastEditedWidget = ()=>{
111
+ const { formatMessage } = reactIntl.useIntl();
112
+ const { data, isLoading, error } = homepage.useGetRecentDocumentsQuery({
113
+ action: 'update'
114
+ });
115
+ if (isLoading) {
116
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.Loading, {});
117
+ }
118
+ if (error || !data) {
119
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.Error, {});
120
+ }
121
+ if (data.length === 0) {
122
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.NoData, {
123
+ children: formatMessage({
124
+ id: 'content-manager.widget.last-edited.no-data',
125
+ defaultMessage: 'No edited entries'
126
+ })
127
+ });
128
+ }
129
+ return /*#__PURE__*/ jsxRuntime.jsx(RecentDocumentsTable, {
130
+ documents: data
131
+ });
132
+ };
133
+ /* -------------------------------------------------------------------------------------------------
134
+ * LastPublishedWidget
135
+ * -----------------------------------------------------------------------------------------------*/ const LastPublishedWidget = ()=>{
136
+ const { formatMessage } = reactIntl.useIntl();
137
+ const { data, isLoading, error } = homepage.useGetRecentDocumentsQuery({
138
+ action: 'publish'
139
+ });
140
+ if (isLoading) {
141
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.Loading, {});
142
+ }
143
+ if (error || !data) {
144
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.Error, {});
145
+ }
146
+ if (data.length === 0) {
147
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.NoData, {
148
+ children: formatMessage({
149
+ id: 'content-manager.widget.last-published.no-data',
150
+ defaultMessage: 'No published entries'
151
+ })
152
+ });
153
+ }
154
+ return /*#__PURE__*/ jsxRuntime.jsx(RecentDocumentsTable, {
155
+ documents: data
156
+ });
157
+ };
158
+
159
+ exports.LastEditedWidget = LastEditedWidget;
160
+ exports.LastPublishedWidget = LastPublishedWidget;
161
+ //# sourceMappingURL=Widgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Widgets.js","sources":["../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { Widget, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, IconButton, Table, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DocumentStatus } from '../pages/EditView/components/DocumentStatus';\nimport { useGetRecentDocumentsQuery } from '../services/homepage';\n\nimport { RelativeTime } from './RelativeTime';\n\nimport type { RecentDocument } from '../../../shared/contracts/homepage';\n\nconst CellTypography = styled(Typography).attrs({ maxWidth: '14.4rem', display: 'block' })`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst RecentDocumentsTable = ({ documents }: { documents: RecentDocument[] }) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n\n const getEditViewLink = (document: RecentDocument): string => {\n const isSingleType = document.kind === 'singleType';\n const kindPath = isSingleType ? 'single-types' : 'collection-types';\n const queryParams = document.locale ? `?plugins[i18n][locale]=${document.locale}` : '';\n\n return `/content-manager/${kindPath}/${document.contentTypeUid}${isSingleType ? '' : '/' + document.documentId}${queryParams}`;\n };\n\n const handleRowClick = (document: RecentDocument) => () => {\n trackUsage('willEditEntryFromHome');\n const link = getEditViewLink(document);\n navigate(link);\n };\n\n return (\n <Table colCount={5} rowCount={documents?.length ?? 0}>\n <Tbody>\n {documents?.map((document) => (\n <Tr onClick={handleRowClick(document)} cursor=\"pointer\" key={document.documentId}>\n <Td>\n <CellTypography title={document.title} variant=\"omega\" textColor=\"neutral800\">\n {document.title}\n </CellTypography>\n </Td>\n <Td>\n <CellTypography variant=\"omega\" textColor=\"neutral600\">\n {document.kind === 'singleType'\n ? formatMessage({\n id: 'content-manager.widget.last-edited.single-type',\n defaultMessage: 'Single-Type',\n })\n : formatMessage({\n id: document.contentTypeDisplayName,\n defaultMessage: document.contentTypeDisplayName,\n })}\n </CellTypography>\n </Td>\n <Td>\n <Box display=\"inline-block\">\n {document.status ? (\n <DocumentStatus status={document.status} />\n ) : (\n <Typography textColor=\"neutral600\" aria-hidden>\n -\n </Typography>\n )}\n </Box>\n </Td>\n <Td>\n <Typography textColor=\"neutral600\">\n <RelativeTime timestamp={new Date(document.updatedAt)} />\n </Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Box display=\"inline-block\">\n <IconButton\n tag={Link}\n to={getEditViewLink(document)}\n onClick={() => trackUsage('willEditEntryFromHome')}\n label={formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n })}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Box>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LastEditedWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst LastEditedWidget = () => {\n const { formatMessage } = useIntl();\n const { data, isLoading, error } = useGetRecentDocumentsQuery({ action: 'update' });\n\n if (isLoading) {\n return <Widget.Loading />;\n }\n\n if (error || !data) {\n return <Widget.Error />;\n }\n\n if (data.length === 0) {\n return (\n <Widget.NoData>\n {formatMessage({\n id: 'content-manager.widget.last-edited.no-data',\n defaultMessage: 'No edited entries',\n })}\n </Widget.NoData>\n );\n }\n\n return <RecentDocumentsTable documents={data} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LastPublishedWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst LastPublishedWidget = () => {\n const { formatMessage } = useIntl();\n const { data, isLoading, error } = useGetRecentDocumentsQuery({ action: 'publish' });\n\n if (isLoading) {\n return <Widget.Loading />;\n }\n\n if (error || !data) {\n return <Widget.Error />;\n }\n\n if (data.length === 0) {\n return (\n <Widget.NoData>\n {formatMessage({\n id: 'content-manager.widget.last-published.no-data',\n defaultMessage: 'No published entries',\n })}\n </Widget.NoData>\n );\n }\n\n return <RecentDocumentsTable documents={data} />;\n};\n\nexport { LastEditedWidget, LastPublishedWidget };\n"],"names":["CellTypography","styled","Typography","attrs","maxWidth","display","RecentDocumentsTable","documents","formatMessage","useIntl","trackUsage","useTracking","navigate","useNavigate","getEditViewLink","document","isSingleType","kind","kindPath","queryParams","locale","contentTypeUid","documentId","handleRowClick","link","_jsx","Table","colCount","rowCount","length","Tbody","map","_jsxs","Tr","onClick","cursor","Td","title","variant","textColor","id","defaultMessage","contentTypeDisplayName","Box","status","DocumentStatus","aria-hidden","RelativeTime","timestamp","Date","updatedAt","e","stopPropagation","IconButton","tag","Link","to","label","Pencil","LastEditedWidget","data","isLoading","error","useGetRecentDocumentsQuery","action","Widget","Loading","Error","NoData","LastPublishedWidget"],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Widget, useTracking } from '@strapi/admin/strapi-admin';
3
+ import { Typography, Table, Tbody, Tr, Td, Box, IconButton } from '@strapi/design-system';
4
+ import { Pencil } from '@strapi/icons';
5
+ import { useIntl } from 'react-intl';
6
+ import { useNavigate, Link } from 'react-router-dom';
7
+ import { styled } from 'styled-components';
8
+ import { DocumentStatus } from '../pages/EditView/components/DocumentStatus.mjs';
9
+ import { useGetRecentDocumentsQuery } from '../services/homepage.mjs';
10
+ import { RelativeTime } from './RelativeTime.mjs';
11
+
12
+ const CellTypography = styled(Typography).attrs({
13
+ maxWidth: '14.4rem',
14
+ display: 'block'
15
+ })`
16
+ overflow: hidden;
17
+ text-overflow: ellipsis;
18
+ white-space: nowrap;
19
+ `;
20
+ const RecentDocumentsTable = ({ documents })=>{
21
+ const { formatMessage } = useIntl();
22
+ const { trackUsage } = useTracking();
23
+ const navigate = useNavigate();
24
+ const getEditViewLink = (document)=>{
25
+ const isSingleType = document.kind === 'singleType';
26
+ const kindPath = isSingleType ? 'single-types' : 'collection-types';
27
+ const queryParams = document.locale ? `?plugins[i18n][locale]=${document.locale}` : '';
28
+ return `/content-manager/${kindPath}/${document.contentTypeUid}${isSingleType ? '' : '/' + document.documentId}${queryParams}`;
29
+ };
30
+ const handleRowClick = (document)=>()=>{
31
+ trackUsage('willEditEntryFromHome');
32
+ const link = getEditViewLink(document);
33
+ navigate(link);
34
+ };
35
+ return /*#__PURE__*/ jsx(Table, {
36
+ colCount: 5,
37
+ rowCount: documents?.length ?? 0,
38
+ children: /*#__PURE__*/ jsx(Tbody, {
39
+ children: documents?.map((document)=>/*#__PURE__*/ jsxs(Tr, {
40
+ onClick: handleRowClick(document),
41
+ cursor: "pointer",
42
+ children: [
43
+ /*#__PURE__*/ jsx(Td, {
44
+ children: /*#__PURE__*/ jsx(CellTypography, {
45
+ title: document.title,
46
+ variant: "omega",
47
+ textColor: "neutral800",
48
+ children: document.title
49
+ })
50
+ }),
51
+ /*#__PURE__*/ jsx(Td, {
52
+ children: /*#__PURE__*/ jsx(CellTypography, {
53
+ variant: "omega",
54
+ textColor: "neutral600",
55
+ children: document.kind === 'singleType' ? formatMessage({
56
+ id: 'content-manager.widget.last-edited.single-type',
57
+ defaultMessage: 'Single-Type'
58
+ }) : formatMessage({
59
+ id: document.contentTypeDisplayName,
60
+ defaultMessage: document.contentTypeDisplayName
61
+ })
62
+ })
63
+ }),
64
+ /*#__PURE__*/ jsx(Td, {
65
+ children: /*#__PURE__*/ jsx(Box, {
66
+ display: "inline-block",
67
+ children: document.status ? /*#__PURE__*/ jsx(DocumentStatus, {
68
+ status: document.status
69
+ }) : /*#__PURE__*/ jsx(Typography, {
70
+ textColor: "neutral600",
71
+ "aria-hidden": true,
72
+ children: "-"
73
+ })
74
+ })
75
+ }),
76
+ /*#__PURE__*/ jsx(Td, {
77
+ children: /*#__PURE__*/ jsx(Typography, {
78
+ textColor: "neutral600",
79
+ children: /*#__PURE__*/ jsx(RelativeTime, {
80
+ timestamp: new Date(document.updatedAt)
81
+ })
82
+ })
83
+ }),
84
+ /*#__PURE__*/ jsx(Td, {
85
+ onClick: (e)=>e.stopPropagation(),
86
+ children: /*#__PURE__*/ jsx(Box, {
87
+ display: "inline-block",
88
+ children: /*#__PURE__*/ jsx(IconButton, {
89
+ tag: Link,
90
+ to: getEditViewLink(document),
91
+ onClick: ()=>trackUsage('willEditEntryFromHome'),
92
+ label: formatMessage({
93
+ id: 'content-manager.actions.edit.label',
94
+ defaultMessage: 'Edit'
95
+ }),
96
+ variant: "ghost",
97
+ children: /*#__PURE__*/ jsx(Pencil, {})
98
+ })
99
+ })
100
+ })
101
+ ]
102
+ }, document.documentId))
103
+ })
104
+ });
105
+ };
106
+ /* -------------------------------------------------------------------------------------------------
107
+ * LastEditedWidget
108
+ * -----------------------------------------------------------------------------------------------*/ const LastEditedWidget = ()=>{
109
+ const { formatMessage } = useIntl();
110
+ const { data, isLoading, error } = useGetRecentDocumentsQuery({
111
+ action: 'update'
112
+ });
113
+ if (isLoading) {
114
+ return /*#__PURE__*/ jsx(Widget.Loading, {});
115
+ }
116
+ if (error || !data) {
117
+ return /*#__PURE__*/ jsx(Widget.Error, {});
118
+ }
119
+ if (data.length === 0) {
120
+ return /*#__PURE__*/ jsx(Widget.NoData, {
121
+ children: formatMessage({
122
+ id: 'content-manager.widget.last-edited.no-data',
123
+ defaultMessage: 'No edited entries'
124
+ })
125
+ });
126
+ }
127
+ return /*#__PURE__*/ jsx(RecentDocumentsTable, {
128
+ documents: data
129
+ });
130
+ };
131
+ /* -------------------------------------------------------------------------------------------------
132
+ * LastPublishedWidget
133
+ * -----------------------------------------------------------------------------------------------*/ const LastPublishedWidget = ()=>{
134
+ const { formatMessage } = useIntl();
135
+ const { data, isLoading, error } = useGetRecentDocumentsQuery({
136
+ action: 'publish'
137
+ });
138
+ if (isLoading) {
139
+ return /*#__PURE__*/ jsx(Widget.Loading, {});
140
+ }
141
+ if (error || !data) {
142
+ return /*#__PURE__*/ jsx(Widget.Error, {});
143
+ }
144
+ if (data.length === 0) {
145
+ return /*#__PURE__*/ jsx(Widget.NoData, {
146
+ children: formatMessage({
147
+ id: 'content-manager.widget.last-published.no-data',
148
+ defaultMessage: 'No published entries'
149
+ })
150
+ });
151
+ }
152
+ return /*#__PURE__*/ jsx(RecentDocumentsTable, {
153
+ documents: data
154
+ });
155
+ };
156
+
157
+ export { LastEditedWidget, LastPublishedWidget };
158
+ //# sourceMappingURL=Widgets.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Widgets.mjs","sources":["../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { Widget, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, IconButton, Table, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DocumentStatus } from '../pages/EditView/components/DocumentStatus';\nimport { useGetRecentDocumentsQuery } from '../services/homepage';\n\nimport { RelativeTime } from './RelativeTime';\n\nimport type { RecentDocument } from '../../../shared/contracts/homepage';\n\nconst CellTypography = styled(Typography).attrs({ maxWidth: '14.4rem', display: 'block' })`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst RecentDocumentsTable = ({ documents }: { documents: RecentDocument[] }) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n\n const getEditViewLink = (document: RecentDocument): string => {\n const isSingleType = document.kind === 'singleType';\n const kindPath = isSingleType ? 'single-types' : 'collection-types';\n const queryParams = document.locale ? `?plugins[i18n][locale]=${document.locale}` : '';\n\n return `/content-manager/${kindPath}/${document.contentTypeUid}${isSingleType ? '' : '/' + document.documentId}${queryParams}`;\n };\n\n const handleRowClick = (document: RecentDocument) => () => {\n trackUsage('willEditEntryFromHome');\n const link = getEditViewLink(document);\n navigate(link);\n };\n\n return (\n <Table colCount={5} rowCount={documents?.length ?? 0}>\n <Tbody>\n {documents?.map((document) => (\n <Tr onClick={handleRowClick(document)} cursor=\"pointer\" key={document.documentId}>\n <Td>\n <CellTypography title={document.title} variant=\"omega\" textColor=\"neutral800\">\n {document.title}\n </CellTypography>\n </Td>\n <Td>\n <CellTypography variant=\"omega\" textColor=\"neutral600\">\n {document.kind === 'singleType'\n ? formatMessage({\n id: 'content-manager.widget.last-edited.single-type',\n defaultMessage: 'Single-Type',\n })\n : formatMessage({\n id: document.contentTypeDisplayName,\n defaultMessage: document.contentTypeDisplayName,\n })}\n </CellTypography>\n </Td>\n <Td>\n <Box display=\"inline-block\">\n {document.status ? (\n <DocumentStatus status={document.status} />\n ) : (\n <Typography textColor=\"neutral600\" aria-hidden>\n -\n </Typography>\n )}\n </Box>\n </Td>\n <Td>\n <Typography textColor=\"neutral600\">\n <RelativeTime timestamp={new Date(document.updatedAt)} />\n </Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Box display=\"inline-block\">\n <IconButton\n tag={Link}\n to={getEditViewLink(document)}\n onClick={() => trackUsage('willEditEntryFromHome')}\n label={formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n })}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Box>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LastEditedWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst LastEditedWidget = () => {\n const { formatMessage } = useIntl();\n const { data, isLoading, error } = useGetRecentDocumentsQuery({ action: 'update' });\n\n if (isLoading) {\n return <Widget.Loading />;\n }\n\n if (error || !data) {\n return <Widget.Error />;\n }\n\n if (data.length === 0) {\n return (\n <Widget.NoData>\n {formatMessage({\n id: 'content-manager.widget.last-edited.no-data',\n defaultMessage: 'No edited entries',\n })}\n </Widget.NoData>\n );\n }\n\n return <RecentDocumentsTable documents={data} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LastPublishedWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst LastPublishedWidget = () => {\n const { formatMessage } = useIntl();\n const { data, isLoading, error } = useGetRecentDocumentsQuery({ action: 'publish' });\n\n if (isLoading) {\n return <Widget.Loading />;\n }\n\n if (error || !data) {\n return <Widget.Error />;\n }\n\n if (data.length === 0) {\n return (\n <Widget.NoData>\n {formatMessage({\n id: 'content-manager.widget.last-published.no-data',\n defaultMessage: 'No published entries',\n })}\n </Widget.NoData>\n );\n }\n\n return <RecentDocumentsTable documents={data} />;\n};\n\nexport { LastEditedWidget, LastPublishedWidget };\n"],"names":["CellTypography","styled","Typography","attrs","maxWidth","display","RecentDocumentsTable","documents","formatMessage","useIntl","trackUsage","useTracking","navigate","useNavigate","getEditViewLink","document","isSingleType","kind","kindPath","queryParams","locale","contentTypeUid","documentId","handleRowClick","link","_jsx","Table","colCount","rowCount","length","Tbody","map","_jsxs","Tr","onClick","cursor","Td","title","variant","textColor","id","defaultMessage","contentTypeDisplayName","Box","status","DocumentStatus","aria-hidden","RelativeTime","timestamp","Date","updatedAt","e","stopPropagation","IconButton","tag","Link","to","label","Pencil","LastEditedWidget","data","isLoading","error","useGetRecentDocumentsQuery","action","Widget","Loading","Error","NoData","LastPublishedWidget"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"content-manager.js","sources":["../../admin/src/content-manager.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport { INJECTION_ZONES } from './components/InjectionZone';\nimport { PLUGIN_ID } from './constants/plugin';\nimport {\n DEFAULT_ACTIONS,\n type DocumentActionPosition,\n type DocumentActionDescription,\n} from './pages/EditView/components/DocumentActions';\nimport {\n DEFAULT_HEADER_ACTIONS,\n type HeaderActionDescription,\n} from './pages/EditView/components/Header';\nimport { ActionsPanel, type PanelDescription } from './pages/EditView/components/Panels';\nimport {\n DEFAULT_BULK_ACTIONS,\n type BulkActionDescription,\n} from './pages/ListView/components/BulkActions/Actions';\nimport { DEFAULT_TABLE_ROW_ACTIONS } from './pages/ListView/components/TableActions';\n\nimport type { Document } from './hooks/useDocument';\nimport type { DocumentMetadata } from '../../shared/contracts/collection-types';\nimport type { DescriptionComponent, PluginConfig } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Types\n * -----------------------------------------------------------------------------------------------*/\n\ntype DescriptionReducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface EditViewContext {\n /**\n * This will ONLY be null, if the content-type\n * does not have draft & published enabled.\n */\n activeTab: 'draft' | 'published' | null;\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n document?: Document;\n /**\n * this will be undefined if someone is creating an entry.\n */\n documentId?: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n meta?: DocumentMetadata;\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface ListViewContext {\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * The current selected documents in the table\n */\n documents: Document[];\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface PanelComponentProps extends EditViewContext {}\n\ninterface PanelComponent extends DescriptionComponent<PanelComponentProps, PanelDescription> {\n /**\n * The defaults are added by Strapi only, if you're providing your own component,\n * you do not need to provide this.\n */\n type?: 'actions' | 'releases';\n}\n\ninterface DocumentActionProps extends EditViewContext {\n onPreview?: () => void;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n}\n\ninterface DocumentActionComponent\n extends DescriptionComponent<DocumentActionProps, DocumentActionDescription> {\n type?:\n | 'clone'\n | 'configure-the-view'\n | 'delete'\n | 'discard'\n | 'edit'\n | 'edit-the-model'\n | 'history'\n | 'publish'\n | 'unpublish'\n | 'update';\n position?: DocumentActionDescription['position'];\n}\n\ninterface HeaderActionProps extends EditViewContext {}\n\ninterface HeaderActionComponent\n extends DescriptionComponent<HeaderActionProps, HeaderActionDescription> {}\n\ninterface BulkActionComponentProps extends ListViewContext {}\n\ninterface BulkActionComponent\n extends DescriptionComponent<BulkActionComponentProps, BulkActionDescription> {\n type?: 'delete' | 'publish' | 'unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ContentManager plugin\n * -----------------------------------------------------------------------------------------------*/\n\nclass ContentManagerPlugin {\n /**\n * The following properties are the stored ones provided by any plugins registering with\n * the content-manager. The function calls however, need to be called at runtime in the\n * application, so instead we collate them and run them later with the complete list incl.\n * ones already registered & the context of the view.\n */\n bulkActions: BulkActionComponent[] = [...DEFAULT_BULK_ACTIONS];\n documentActions: DocumentActionComponent[] = [\n ...DEFAULT_ACTIONS,\n ...DEFAULT_TABLE_ROW_ACTIONS,\n ...DEFAULT_HEADER_ACTIONS,\n ];\n editViewSidePanels: PanelComponent[] = [ActionsPanel];\n headerActions: HeaderActionComponent[] = [];\n\n constructor() {}\n\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent>): void;\n addEditViewSidePanel(panels: PanelComponent[]): void;\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent> | PanelComponent[]) {\n if (Array.isArray(panels)) {\n this.editViewSidePanels = [...this.editViewSidePanels, ...panels];\n } else if (typeof panels === 'function') {\n this.editViewSidePanels = panels(this.editViewSidePanels);\n } else {\n throw new Error(\n `Expected the \\`panels\\` passed to \\`addEditViewSidePanel\\` to be an array or a function, but received ${getPrintableType(\n panels\n )}`\n );\n }\n }\n\n addDocumentAction(actions: DescriptionReducer<DocumentActionComponent>): void;\n addDocumentAction(actions: DocumentActionComponent[]): void;\n addDocumentAction(\n actions: DescriptionReducer<DocumentActionComponent> | DocumentActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.documentActions = [...this.documentActions, ...actions];\n } else if (typeof actions === 'function') {\n this.documentActions = actions(this.documentActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addDocumentHeaderAction(actions: DescriptionReducer<HeaderActionComponent>): void;\n addDocumentHeaderAction(actions: HeaderActionComponent[]): void;\n addDocumentHeaderAction(\n actions: DescriptionReducer<HeaderActionComponent> | HeaderActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.headerActions = [...this.headerActions, ...actions];\n } else if (typeof actions === 'function') {\n this.headerActions = actions(this.headerActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentHeaderAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addBulkAction(actions: DescriptionReducer<BulkActionComponent>): void;\n addBulkAction(actions: BulkActionComponent[]): void;\n addBulkAction(actions: DescriptionReducer<BulkActionComponent> | BulkActionComponent[]) {\n if (Array.isArray(actions)) {\n this.bulkActions = [...this.bulkActions, ...actions];\n } else if (typeof actions === 'function') {\n this.bulkActions = actions(this.bulkActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addBulkAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n get config() {\n return {\n id: PLUGIN_ID,\n name: 'Content Manager',\n injectionZones: INJECTION_ZONES,\n apis: {\n addBulkAction: this.addBulkAction.bind(this),\n addDocumentAction: this.addDocumentAction.bind(this),\n addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),\n addEditViewSidePanel: this.addEditViewSidePanel.bind(this),\n getBulkActions: () => this.bulkActions,\n getDocumentActions: (position?: DocumentActionPosition) => {\n /**\n * When possible, pre-filter the actions by the components static position property.\n * This avoids rendering the actions in multiple places where they weren't displayed,\n * which wasn't visible but created issues with useEffect for instance.\n * The response should still be filtered by the position, as the static property is new\n * and not mandatory to avoid a breaking change.\n */\n if (position) {\n return this.documentActions.filter((action) => {\n return action.position == undefined || [action.position].flat().includes(position);\n });\n }\n\n return this.documentActions;\n },\n getEditViewSidePanels: () => this.editViewSidePanels,\n getHeaderActions: () => this.headerActions,\n },\n } satisfies PluginConfig;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { ContentManagerPlugin };\nexport type {\n EditViewContext,\n ListViewContext,\n BulkActionComponent,\n BulkActionComponentProps,\n BulkActionDescription,\n DescriptionComponent,\n DescriptionReducer,\n PanelComponentProps,\n PanelComponent,\n PanelDescription,\n DocumentActionComponent,\n DocumentActionDescription,\n DocumentActionProps,\n HeaderActionComponent,\n HeaderActionDescription,\n HeaderActionProps,\n};\n"],"names":["ContentManagerPlugin","addEditViewSidePanel","panels","Array","isArray","editViewSidePanels","Error","getPrintableType","addDocumentAction","actions","documentActions","addDocumentHeaderAction","headerActions","addBulkAction","bulkActions","config","id","PLUGIN_ID","name","injectionZones","INJECTION_ZONES","apis","bind","getBulkActions","getDocumentActions","position","filter","action","undefined","flat","includes","getEditViewSidePanels","getHeaderActions","constructor","DEFAULT_BULK_ACTIONS","DEFAULT_ACTIONS","DEFAULT_TABLE_ROW_ACTIONS","DEFAULT_HEADER_ACTIONS","ActionsPanel","value","nativeType","Object"],"mappings":"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"}
1
+ {"version":3,"file":"content-manager.js","sources":["../../admin/src/content-manager.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport { INJECTION_ZONES } from './components/InjectionZone';\nimport { PLUGIN_ID } from './constants/plugin';\nimport {\n DEFAULT_ACTIONS,\n type DocumentActionPosition,\n type DocumentActionDescription,\n} from './pages/EditView/components/DocumentActions';\nimport {\n DEFAULT_HEADER_ACTIONS,\n type HeaderActionDescription,\n} from './pages/EditView/components/Header';\nimport { ActionsPanel, type PanelDescription } from './pages/EditView/components/Panels';\nimport {\n DEFAULT_BULK_ACTIONS,\n type BulkActionDescription,\n} from './pages/ListView/components/BulkActions/Actions';\nimport { DEFAULT_TABLE_ROW_ACTIONS } from './pages/ListView/components/TableActions';\n\nimport type { Document } from './hooks/useDocument';\nimport type { DocumentMetadata } from '../../shared/contracts/collection-types';\nimport type { DescriptionComponent, PluginConfig } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Types\n * -----------------------------------------------------------------------------------------------*/\n\ntype DescriptionReducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface EditViewContext {\n /**\n * This will ONLY be null, if the content-type\n * does not have draft & published enabled.\n */\n activeTab: 'draft' | 'published' | null;\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n document?: Document;\n /**\n * this will be undefined if someone is creating an entry.\n */\n documentId?: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n meta?: DocumentMetadata;\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface ListViewContext {\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * The current selected documents in the table\n */\n documents: Document[];\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface PanelComponentProps extends EditViewContext {}\n\ninterface PanelComponent extends DescriptionComponent<PanelComponentProps, PanelDescription> {\n /**\n * The defaults are added by Strapi only, if you're providing your own component,\n * you do not need to provide this.\n */\n type?: 'actions' | 'releases';\n}\n\ninterface DocumentActionProps extends EditViewContext {}\n\ninterface DocumentActionComponent\n extends DescriptionComponent<DocumentActionProps, DocumentActionDescription> {\n type?:\n | 'clone'\n | 'configure-the-view'\n | 'delete'\n | 'discard'\n | 'edit'\n | 'edit-the-model'\n | 'history'\n | 'publish'\n | 'unpublish'\n | 'update';\n position?: DocumentActionDescription['position'];\n}\n\ninterface HeaderActionProps extends EditViewContext {}\n\ninterface HeaderActionComponent\n extends DescriptionComponent<HeaderActionProps, HeaderActionDescription> {}\n\ninterface BulkActionComponentProps extends ListViewContext {}\n\ninterface BulkActionComponent\n extends DescriptionComponent<BulkActionComponentProps, BulkActionDescription> {\n type?: 'delete' | 'publish' | 'unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ContentManager plugin\n * -----------------------------------------------------------------------------------------------*/\n\nclass ContentManagerPlugin {\n /**\n * The following properties are the stored ones provided by any plugins registering with\n * the content-manager. The function calls however, need to be called at runtime in the\n * application, so instead we collate them and run them later with the complete list incl.\n * ones already registered & the context of the view.\n */\n bulkActions: BulkActionComponent[] = [...DEFAULT_BULK_ACTIONS];\n documentActions: DocumentActionComponent[] = [\n ...DEFAULT_ACTIONS,\n ...DEFAULT_TABLE_ROW_ACTIONS,\n ...DEFAULT_HEADER_ACTIONS,\n ];\n editViewSidePanels: PanelComponent[] = [ActionsPanel];\n headerActions: HeaderActionComponent[] = [];\n\n constructor() {}\n\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent>): void;\n addEditViewSidePanel(panels: PanelComponent[]): void;\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent> | PanelComponent[]) {\n if (Array.isArray(panels)) {\n this.editViewSidePanels = [...this.editViewSidePanels, ...panels];\n } else if (typeof panels === 'function') {\n this.editViewSidePanels = panels(this.editViewSidePanels);\n } else {\n throw new Error(\n `Expected the \\`panels\\` passed to \\`addEditViewSidePanel\\` to be an array or a function, but received ${getPrintableType(\n panels\n )}`\n );\n }\n }\n\n addDocumentAction(actions: DescriptionReducer<DocumentActionComponent>): void;\n addDocumentAction(actions: DocumentActionComponent[]): void;\n addDocumentAction(\n actions: DescriptionReducer<DocumentActionComponent> | DocumentActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.documentActions = [...this.documentActions, ...actions];\n } else if (typeof actions === 'function') {\n this.documentActions = actions(this.documentActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addDocumentHeaderAction(actions: DescriptionReducer<HeaderActionComponent>): void;\n addDocumentHeaderAction(actions: HeaderActionComponent[]): void;\n addDocumentHeaderAction(\n actions: DescriptionReducer<HeaderActionComponent> | HeaderActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.headerActions = [...this.headerActions, ...actions];\n } else if (typeof actions === 'function') {\n this.headerActions = actions(this.headerActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentHeaderAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addBulkAction(actions: DescriptionReducer<BulkActionComponent>): void;\n addBulkAction(actions: BulkActionComponent[]): void;\n addBulkAction(actions: DescriptionReducer<BulkActionComponent> | BulkActionComponent[]) {\n if (Array.isArray(actions)) {\n this.bulkActions = [...this.bulkActions, ...actions];\n } else if (typeof actions === 'function') {\n this.bulkActions = actions(this.bulkActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addBulkAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n get config() {\n return {\n id: PLUGIN_ID,\n name: 'Content Manager',\n injectionZones: INJECTION_ZONES,\n apis: {\n addBulkAction: this.addBulkAction.bind(this),\n addDocumentAction: this.addDocumentAction.bind(this),\n addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),\n addEditViewSidePanel: this.addEditViewSidePanel.bind(this),\n getBulkActions: () => this.bulkActions,\n getDocumentActions: (position?: DocumentActionPosition) => {\n /**\n * When possible, pre-filter the actions by the components static position property.\n * This avoids rendering the actions in multiple places where they weren't displayed,\n * which wasn't visible but created issues with useEffect for instance.\n * The response should still be filtered by the position, as the static property is new\n * and not mandatory to avoid a breaking change.\n */\n if (position) {\n return this.documentActions.filter((action) => {\n return action.position == undefined || [action.position].flat().includes(position);\n });\n }\n\n return this.documentActions;\n },\n getEditViewSidePanels: () => this.editViewSidePanels,\n getHeaderActions: () => this.headerActions,\n },\n } satisfies PluginConfig;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { ContentManagerPlugin };\nexport type {\n EditViewContext,\n ListViewContext,\n BulkActionComponent,\n BulkActionComponentProps,\n BulkActionDescription,\n DescriptionComponent,\n DescriptionReducer,\n PanelComponentProps,\n PanelComponent,\n PanelDescription,\n DocumentActionComponent,\n DocumentActionDescription,\n DocumentActionProps,\n HeaderActionComponent,\n HeaderActionDescription,\n HeaderActionProps,\n};\n"],"names":["ContentManagerPlugin","addEditViewSidePanel","panels","Array","isArray","editViewSidePanels","Error","getPrintableType","addDocumentAction","actions","documentActions","addDocumentHeaderAction","headerActions","addBulkAction","bulkActions","config","id","PLUGIN_ID","name","injectionZones","INJECTION_ZONES","apis","bind","getBulkActions","getDocumentActions","position","filter","action","undefined","flat","includes","getEditViewSidePanels","getHeaderActions","constructor","DEFAULT_BULK_ACTIONS","DEFAULT_ACTIONS","DEFAULT_TABLE_ROW_ACTIONS","DEFAULT_HEADER_ACTIONS","ActionsPanel","value","nativeType","Object"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"content-manager.mjs","sources":["../../admin/src/content-manager.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport { INJECTION_ZONES } from './components/InjectionZone';\nimport { PLUGIN_ID } from './constants/plugin';\nimport {\n DEFAULT_ACTIONS,\n type DocumentActionPosition,\n type DocumentActionDescription,\n} from './pages/EditView/components/DocumentActions';\nimport {\n DEFAULT_HEADER_ACTIONS,\n type HeaderActionDescription,\n} from './pages/EditView/components/Header';\nimport { ActionsPanel, type PanelDescription } from './pages/EditView/components/Panels';\nimport {\n DEFAULT_BULK_ACTIONS,\n type BulkActionDescription,\n} from './pages/ListView/components/BulkActions/Actions';\nimport { DEFAULT_TABLE_ROW_ACTIONS } from './pages/ListView/components/TableActions';\n\nimport type { Document } from './hooks/useDocument';\nimport type { DocumentMetadata } from '../../shared/contracts/collection-types';\nimport type { DescriptionComponent, PluginConfig } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Types\n * -----------------------------------------------------------------------------------------------*/\n\ntype DescriptionReducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface EditViewContext {\n /**\n * This will ONLY be null, if the content-type\n * does not have draft & published enabled.\n */\n activeTab: 'draft' | 'published' | null;\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n document?: Document;\n /**\n * this will be undefined if someone is creating an entry.\n */\n documentId?: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n meta?: DocumentMetadata;\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface ListViewContext {\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * The current selected documents in the table\n */\n documents: Document[];\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface PanelComponentProps extends EditViewContext {}\n\ninterface PanelComponent extends DescriptionComponent<PanelComponentProps, PanelDescription> {\n /**\n * The defaults are added by Strapi only, if you're providing your own component,\n * you do not need to provide this.\n */\n type?: 'actions' | 'releases';\n}\n\ninterface DocumentActionProps extends EditViewContext {\n onPreview?: () => void;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n}\n\ninterface DocumentActionComponent\n extends DescriptionComponent<DocumentActionProps, DocumentActionDescription> {\n type?:\n | 'clone'\n | 'configure-the-view'\n | 'delete'\n | 'discard'\n | 'edit'\n | 'edit-the-model'\n | 'history'\n | 'publish'\n | 'unpublish'\n | 'update';\n position?: DocumentActionDescription['position'];\n}\n\ninterface HeaderActionProps extends EditViewContext {}\n\ninterface HeaderActionComponent\n extends DescriptionComponent<HeaderActionProps, HeaderActionDescription> {}\n\ninterface BulkActionComponentProps extends ListViewContext {}\n\ninterface BulkActionComponent\n extends DescriptionComponent<BulkActionComponentProps, BulkActionDescription> {\n type?: 'delete' | 'publish' | 'unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ContentManager plugin\n * -----------------------------------------------------------------------------------------------*/\n\nclass ContentManagerPlugin {\n /**\n * The following properties are the stored ones provided by any plugins registering with\n * the content-manager. The function calls however, need to be called at runtime in the\n * application, so instead we collate them and run them later with the complete list incl.\n * ones already registered & the context of the view.\n */\n bulkActions: BulkActionComponent[] = [...DEFAULT_BULK_ACTIONS];\n documentActions: DocumentActionComponent[] = [\n ...DEFAULT_ACTIONS,\n ...DEFAULT_TABLE_ROW_ACTIONS,\n ...DEFAULT_HEADER_ACTIONS,\n ];\n editViewSidePanels: PanelComponent[] = [ActionsPanel];\n headerActions: HeaderActionComponent[] = [];\n\n constructor() {}\n\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent>): void;\n addEditViewSidePanel(panels: PanelComponent[]): void;\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent> | PanelComponent[]) {\n if (Array.isArray(panels)) {\n this.editViewSidePanels = [...this.editViewSidePanels, ...panels];\n } else if (typeof panels === 'function') {\n this.editViewSidePanels = panels(this.editViewSidePanels);\n } else {\n throw new Error(\n `Expected the \\`panels\\` passed to \\`addEditViewSidePanel\\` to be an array or a function, but received ${getPrintableType(\n panels\n )}`\n );\n }\n }\n\n addDocumentAction(actions: DescriptionReducer<DocumentActionComponent>): void;\n addDocumentAction(actions: DocumentActionComponent[]): void;\n addDocumentAction(\n actions: DescriptionReducer<DocumentActionComponent> | DocumentActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.documentActions = [...this.documentActions, ...actions];\n } else if (typeof actions === 'function') {\n this.documentActions = actions(this.documentActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addDocumentHeaderAction(actions: DescriptionReducer<HeaderActionComponent>): void;\n addDocumentHeaderAction(actions: HeaderActionComponent[]): void;\n addDocumentHeaderAction(\n actions: DescriptionReducer<HeaderActionComponent> | HeaderActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.headerActions = [...this.headerActions, ...actions];\n } else if (typeof actions === 'function') {\n this.headerActions = actions(this.headerActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentHeaderAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addBulkAction(actions: DescriptionReducer<BulkActionComponent>): void;\n addBulkAction(actions: BulkActionComponent[]): void;\n addBulkAction(actions: DescriptionReducer<BulkActionComponent> | BulkActionComponent[]) {\n if (Array.isArray(actions)) {\n this.bulkActions = [...this.bulkActions, ...actions];\n } else if (typeof actions === 'function') {\n this.bulkActions = actions(this.bulkActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addBulkAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n get config() {\n return {\n id: PLUGIN_ID,\n name: 'Content Manager',\n injectionZones: INJECTION_ZONES,\n apis: {\n addBulkAction: this.addBulkAction.bind(this),\n addDocumentAction: this.addDocumentAction.bind(this),\n addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),\n addEditViewSidePanel: this.addEditViewSidePanel.bind(this),\n getBulkActions: () => this.bulkActions,\n getDocumentActions: (position?: DocumentActionPosition) => {\n /**\n * When possible, pre-filter the actions by the components static position property.\n * This avoids rendering the actions in multiple places where they weren't displayed,\n * which wasn't visible but created issues with useEffect for instance.\n * The response should still be filtered by the position, as the static property is new\n * and not mandatory to avoid a breaking change.\n */\n if (position) {\n return this.documentActions.filter((action) => {\n return action.position == undefined || [action.position].flat().includes(position);\n });\n }\n\n return this.documentActions;\n },\n getEditViewSidePanels: () => this.editViewSidePanels,\n getHeaderActions: () => this.headerActions,\n },\n } satisfies PluginConfig;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { ContentManagerPlugin };\nexport type {\n EditViewContext,\n ListViewContext,\n BulkActionComponent,\n BulkActionComponentProps,\n BulkActionDescription,\n DescriptionComponent,\n DescriptionReducer,\n PanelComponentProps,\n PanelComponent,\n PanelDescription,\n DocumentActionComponent,\n DocumentActionDescription,\n DocumentActionProps,\n HeaderActionComponent,\n HeaderActionDescription,\n HeaderActionProps,\n};\n"],"names":["ContentManagerPlugin","addEditViewSidePanel","panels","Array","isArray","editViewSidePanels","Error","getPrintableType","addDocumentAction","actions","documentActions","addDocumentHeaderAction","headerActions","addBulkAction","bulkActions","config","id","PLUGIN_ID","name","injectionZones","INJECTION_ZONES","apis","bind","getBulkActions","getDocumentActions","position","filter","action","undefined","flat","includes","getEditViewSidePanels","getHeaderActions","constructor","DEFAULT_BULK_ACTIONS","DEFAULT_ACTIONS","DEFAULT_TABLE_ROW_ACTIONS","DEFAULT_HEADER_ACTIONS","ActionsPanel","value","nativeType","Object"],"mappings":"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"}
1
+ {"version":3,"file":"content-manager.mjs","sources":["../../admin/src/content-manager.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport { INJECTION_ZONES } from './components/InjectionZone';\nimport { PLUGIN_ID } from './constants/plugin';\nimport {\n DEFAULT_ACTIONS,\n type DocumentActionPosition,\n type DocumentActionDescription,\n} from './pages/EditView/components/DocumentActions';\nimport {\n DEFAULT_HEADER_ACTIONS,\n type HeaderActionDescription,\n} from './pages/EditView/components/Header';\nimport { ActionsPanel, type PanelDescription } from './pages/EditView/components/Panels';\nimport {\n DEFAULT_BULK_ACTIONS,\n type BulkActionDescription,\n} from './pages/ListView/components/BulkActions/Actions';\nimport { DEFAULT_TABLE_ROW_ACTIONS } from './pages/ListView/components/TableActions';\n\nimport type { Document } from './hooks/useDocument';\nimport type { DocumentMetadata } from '../../shared/contracts/collection-types';\nimport type { DescriptionComponent, PluginConfig } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Types\n * -----------------------------------------------------------------------------------------------*/\n\ntype DescriptionReducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface EditViewContext {\n /**\n * This will ONLY be null, if the content-type\n * does not have draft & published enabled.\n */\n activeTab: 'draft' | 'published' | null;\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n document?: Document;\n /**\n * this will be undefined if someone is creating an entry.\n */\n documentId?: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n meta?: DocumentMetadata;\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface ListViewContext {\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * The current selected documents in the table\n */\n documents: Document[];\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface PanelComponentProps extends EditViewContext {}\n\ninterface PanelComponent extends DescriptionComponent<PanelComponentProps, PanelDescription> {\n /**\n * The defaults are added by Strapi only, if you're providing your own component,\n * you do not need to provide this.\n */\n type?: 'actions' | 'releases';\n}\n\ninterface DocumentActionProps extends EditViewContext {}\n\ninterface DocumentActionComponent\n extends DescriptionComponent<DocumentActionProps, DocumentActionDescription> {\n type?:\n | 'clone'\n | 'configure-the-view'\n | 'delete'\n | 'discard'\n | 'edit'\n | 'edit-the-model'\n | 'history'\n | 'publish'\n | 'unpublish'\n | 'update';\n position?: DocumentActionDescription['position'];\n}\n\ninterface HeaderActionProps extends EditViewContext {}\n\ninterface HeaderActionComponent\n extends DescriptionComponent<HeaderActionProps, HeaderActionDescription> {}\n\ninterface BulkActionComponentProps extends ListViewContext {}\n\ninterface BulkActionComponent\n extends DescriptionComponent<BulkActionComponentProps, BulkActionDescription> {\n type?: 'delete' | 'publish' | 'unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ContentManager plugin\n * -----------------------------------------------------------------------------------------------*/\n\nclass ContentManagerPlugin {\n /**\n * The following properties are the stored ones provided by any plugins registering with\n * the content-manager. The function calls however, need to be called at runtime in the\n * application, so instead we collate them and run them later with the complete list incl.\n * ones already registered & the context of the view.\n */\n bulkActions: BulkActionComponent[] = [...DEFAULT_BULK_ACTIONS];\n documentActions: DocumentActionComponent[] = [\n ...DEFAULT_ACTIONS,\n ...DEFAULT_TABLE_ROW_ACTIONS,\n ...DEFAULT_HEADER_ACTIONS,\n ];\n editViewSidePanels: PanelComponent[] = [ActionsPanel];\n headerActions: HeaderActionComponent[] = [];\n\n constructor() {}\n\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent>): void;\n addEditViewSidePanel(panels: PanelComponent[]): void;\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent> | PanelComponent[]) {\n if (Array.isArray(panels)) {\n this.editViewSidePanels = [...this.editViewSidePanels, ...panels];\n } else if (typeof panels === 'function') {\n this.editViewSidePanels = panels(this.editViewSidePanels);\n } else {\n throw new Error(\n `Expected the \\`panels\\` passed to \\`addEditViewSidePanel\\` to be an array or a function, but received ${getPrintableType(\n panels\n )}`\n );\n }\n }\n\n addDocumentAction(actions: DescriptionReducer<DocumentActionComponent>): void;\n addDocumentAction(actions: DocumentActionComponent[]): void;\n addDocumentAction(\n actions: DescriptionReducer<DocumentActionComponent> | DocumentActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.documentActions = [...this.documentActions, ...actions];\n } else if (typeof actions === 'function') {\n this.documentActions = actions(this.documentActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addDocumentHeaderAction(actions: DescriptionReducer<HeaderActionComponent>): void;\n addDocumentHeaderAction(actions: HeaderActionComponent[]): void;\n addDocumentHeaderAction(\n actions: DescriptionReducer<HeaderActionComponent> | HeaderActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.headerActions = [...this.headerActions, ...actions];\n } else if (typeof actions === 'function') {\n this.headerActions = actions(this.headerActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentHeaderAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addBulkAction(actions: DescriptionReducer<BulkActionComponent>): void;\n addBulkAction(actions: BulkActionComponent[]): void;\n addBulkAction(actions: DescriptionReducer<BulkActionComponent> | BulkActionComponent[]) {\n if (Array.isArray(actions)) {\n this.bulkActions = [...this.bulkActions, ...actions];\n } else if (typeof actions === 'function') {\n this.bulkActions = actions(this.bulkActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addBulkAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n get config() {\n return {\n id: PLUGIN_ID,\n name: 'Content Manager',\n injectionZones: INJECTION_ZONES,\n apis: {\n addBulkAction: this.addBulkAction.bind(this),\n addDocumentAction: this.addDocumentAction.bind(this),\n addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),\n addEditViewSidePanel: this.addEditViewSidePanel.bind(this),\n getBulkActions: () => this.bulkActions,\n getDocumentActions: (position?: DocumentActionPosition) => {\n /**\n * When possible, pre-filter the actions by the components static position property.\n * This avoids rendering the actions in multiple places where they weren't displayed,\n * which wasn't visible but created issues with useEffect for instance.\n * The response should still be filtered by the position, as the static property is new\n * and not mandatory to avoid a breaking change.\n */\n if (position) {\n return this.documentActions.filter((action) => {\n return action.position == undefined || [action.position].flat().includes(position);\n });\n }\n\n return this.documentActions;\n },\n getEditViewSidePanels: () => this.editViewSidePanels,\n getHeaderActions: () => this.headerActions,\n },\n } satisfies PluginConfig;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { ContentManagerPlugin };\nexport type {\n EditViewContext,\n ListViewContext,\n BulkActionComponent,\n BulkActionComponentProps,\n BulkActionDescription,\n DescriptionComponent,\n DescriptionReducer,\n PanelComponentProps,\n PanelComponent,\n PanelDescription,\n DocumentActionComponent,\n DocumentActionDescription,\n DocumentActionProps,\n HeaderActionComponent,\n HeaderActionDescription,\n HeaderActionProps,\n};\n"],"names":["ContentManagerPlugin","addEditViewSidePanel","panels","Array","isArray","editViewSidePanels","Error","getPrintableType","addDocumentAction","actions","documentActions","addDocumentHeaderAction","headerActions","addBulkAction","bulkActions","config","id","PLUGIN_ID","name","injectionZones","INJECTION_ZONES","apis","bind","getBulkActions","getDocumentActions","position","filter","action","undefined","flat","includes","getEditViewSidePanels","getHeaderActions","constructor","DEFAULT_BULK_ACTIONS","DEFAULT_ACTIONS","DEFAULT_TABLE_ROW_ACTIONS","DEFAULT_HEADER_ACTIONS","ActionsPanel","value","nativeType","Object"],"mappings":"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"}
@@ -81,9 +81,18 @@ const createLayoutFromFields = (fields)=>{
81
81
  /* -------------------------------------------------------------------------------------------------
82
82
  * FormPanel
83
83
  * -----------------------------------------------------------------------------------------------*/ const FormPanel = ({ panel })=>{
84
+ const fieldValues = strapiAdmin.useForm('Fields', (state)=>state.values);
85
+ const rulesEngine = strapiAdmin.createRulesEngine();
84
86
  if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
85
87
  const [row] = panel;
86
88
  const [field] = row;
89
+ const condition = field.attribute?.conditions?.visible;
90
+ if (condition) {
91
+ const isVisible = rulesEngine.evaluate(condition, fieldValues);
92
+ if (!isVisible) {
93
+ return null; // Skip rendering the dynamic zone if the condition is not met
94
+ }
95
+ }
87
96
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
88
97
  gap: 4,
89
98
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
@@ -111,9 +120,20 @@ const createLayoutFromFields = (fields)=>{
111
120
  direction: "column",
112
121
  alignItems: "stretch",
113
122
  gap: 6,
114
- children: panel.map((row, gridRowIndex)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
123
+ children: panel.map((row, gridRowIndex)=>{
124
+ const visibleFields = row.filter((field)=>{
125
+ const condition = field.attribute?.conditions?.visible;
126
+ if (condition) {
127
+ return rulesEngine.evaluate(condition, fieldValues);
128
+ }
129
+ return true;
130
+ });
131
+ if (visibleFields.length === 0) {
132
+ return null; // Skip rendering the entire grid row
133
+ }
134
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
115
135
  gap: 4,
116
- children: row.map(({ size, ...field })=>{
136
+ children: visibleFields.map(({ size, ...field })=>{
117
137
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
118
138
  col: size,
119
139
  s: 12,
@@ -125,7 +145,8 @@ const createLayoutFromFields = (fields)=>{
125
145
  })
126
146
  }, field.name);
127
147
  })
128
- }, gridRowIndex))
148
+ }, gridRowIndex);
149
+ })
129
150
  })
130
151
  });
131
152
  };