@strapi/content-manager 0.0.0-next.ea6e3b80ab37f554da4f8bde08dbfe9b57400d31 → 0.0.0-next.eb48c73c86cbc452c1ba8d727106f9ed9da0c834

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 (469) hide show
  1. package/dist/admin/chunks/CardDragPreview-DwuraT0K.mjs +80 -0
  2. package/dist/admin/chunks/CardDragPreview-DwuraT0K.mjs.map +1 -0
  3. package/dist/admin/chunks/CardDragPreview-_dubYgXO.js +82 -0
  4. package/dist/admin/chunks/CardDragPreview-_dubYgXO.js.map +1 -0
  5. package/dist/admin/chunks/ComponentConfigurationPage-B-gE3kXG.js +298 -0
  6. package/dist/admin/chunks/ComponentConfigurationPage-B-gE3kXG.js.map +1 -0
  7. package/dist/admin/chunks/ComponentConfigurationPage-R5N6EwIp.mjs +276 -0
  8. package/dist/admin/chunks/ComponentConfigurationPage-R5N6EwIp.mjs.map +1 -0
  9. package/dist/admin/chunks/ComponentIcon-BZcTc4rj.mjs +153 -0
  10. package/dist/admin/chunks/ComponentIcon-BZcTc4rj.mjs.map +1 -0
  11. package/dist/admin/chunks/ComponentIcon-C-EjOUPA.js +176 -0
  12. package/dist/admin/chunks/ComponentIcon-C-EjOUPA.js.map +1 -0
  13. package/dist/admin/chunks/EditConfigurationPage-0y9O2nBU.mjs +158 -0
  14. package/dist/admin/chunks/EditConfigurationPage-0y9O2nBU.mjs.map +1 -0
  15. package/dist/admin/chunks/EditConfigurationPage-C62WuGTf.js +180 -0
  16. package/dist/admin/chunks/EditConfigurationPage-C62WuGTf.js.map +1 -0
  17. package/dist/admin/chunks/EditViewPage-CiYAHBOX.js +341 -0
  18. package/dist/admin/chunks/EditViewPage-CiYAHBOX.js.map +1 -0
  19. package/dist/admin/chunks/EditViewPage-CkO2YLdg.mjs +318 -0
  20. package/dist/admin/chunks/EditViewPage-CkO2YLdg.mjs.map +1 -0
  21. package/dist/admin/chunks/FieldTypeIcon-BY6MrVF4.mjs +56 -0
  22. package/dist/admin/chunks/FieldTypeIcon-BY6MrVF4.mjs.map +1 -0
  23. package/dist/admin/chunks/FieldTypeIcon-Bxh-7Jin.js +58 -0
  24. package/dist/admin/chunks/FieldTypeIcon-Bxh-7Jin.js.map +1 -0
  25. package/dist/admin/chunks/Form-DUs6lQ0C.js +978 -0
  26. package/dist/admin/chunks/Form-DUs6lQ0C.js.map +1 -0
  27. package/dist/admin/chunks/Form-Db9A3cMO.mjs +955 -0
  28. package/dist/admin/chunks/Form-Db9A3cMO.mjs.map +1 -0
  29. package/dist/admin/chunks/History-BQ7IAJjV.mjs +1361 -0
  30. package/dist/admin/chunks/History-BQ7IAJjV.mjs.map +1 -0
  31. package/dist/admin/chunks/History-D99wxPry.js +1384 -0
  32. package/dist/admin/chunks/History-D99wxPry.js.map +1 -0
  33. package/dist/admin/chunks/Input-CHDnpU3S.mjs +8475 -0
  34. package/dist/admin/chunks/Input-CHDnpU3S.mjs.map +1 -0
  35. package/dist/admin/chunks/Input-Gop65dq6.js +8509 -0
  36. package/dist/admin/chunks/Input-Gop65dq6.js.map +1 -0
  37. package/dist/admin/chunks/ListConfigurationPage-Bte99c0c.mjs +795 -0
  38. package/dist/admin/chunks/ListConfigurationPage-Bte99c0c.mjs.map +1 -0
  39. package/dist/admin/chunks/ListConfigurationPage-pAdM7Lbn.js +818 -0
  40. package/dist/admin/chunks/ListConfigurationPage-pAdM7Lbn.js.map +1 -0
  41. package/dist/admin/chunks/ListViewPage-7RTPaDs2.mjs +1131 -0
  42. package/dist/admin/chunks/ListViewPage-7RTPaDs2.mjs.map +1 -0
  43. package/dist/admin/chunks/ListViewPage-CaBwwCVc.js +1153 -0
  44. package/dist/admin/chunks/ListViewPage-CaBwwCVc.js.map +1 -0
  45. package/dist/admin/chunks/NoContentTypePage-CuTk3q_I.mjs +58 -0
  46. package/dist/admin/chunks/NoContentTypePage-CuTk3q_I.mjs.map +1 -0
  47. package/dist/admin/chunks/NoContentTypePage-DLD28j4F.js +60 -0
  48. package/dist/admin/chunks/NoContentTypePage-DLD28j4F.js.map +1 -0
  49. package/dist/admin/chunks/NoPermissionsPage-DSIlPmvv.mjs +37 -0
  50. package/dist/admin/chunks/NoPermissionsPage-DSIlPmvv.mjs.map +1 -0
  51. package/dist/admin/chunks/NoPermissionsPage-iVMEcUp0.js +39 -0
  52. package/dist/admin/chunks/NoPermissionsPage-iVMEcUp0.js.map +1 -0
  53. package/dist/admin/chunks/Preview-35wsOM_p.mjs +595 -0
  54. package/dist/admin/chunks/Preview-35wsOM_p.mjs.map +1 -0
  55. package/dist/admin/chunks/Preview-CSU1sCSK.js +617 -0
  56. package/dist/admin/chunks/Preview-CSU1sCSK.js.map +1 -0
  57. package/dist/admin/chunks/ar-DckYq_WK.mjs +222 -0
  58. package/dist/{_chunks/ar-CCEVvqGG.mjs.map → admin/chunks/ar-DckYq_WK.mjs.map} +1 -1
  59. package/dist/admin/chunks/ar-DeQBSsfl.js +227 -0
  60. package/dist/{_chunks/ru-BT3ybNny.js.map → admin/chunks/ar-DeQBSsfl.js.map} +1 -1
  61. package/dist/admin/chunks/ca-ClDTvatJ.js +202 -0
  62. package/dist/admin/chunks/ca-ClDTvatJ.js.map +1 -0
  63. package/dist/admin/chunks/ca-DviY7mRj.mjs +197 -0
  64. package/dist/admin/chunks/ca-DviY7mRj.mjs.map +1 -0
  65. package/dist/admin/chunks/cs-BJFxwIWj.js +126 -0
  66. package/dist/{_chunks/cs-CkJy6B2v.js.map → admin/chunks/cs-BJFxwIWj.js.map} +1 -1
  67. package/dist/admin/chunks/cs-C7OSYFQ7.mjs +122 -0
  68. package/dist/{_chunks/cs-CM2aBUar.mjs.map → admin/chunks/cs-C7OSYFQ7.mjs.map} +1 -1
  69. package/dist/admin/chunks/de-5QRlDHyR.mjs +195 -0
  70. package/dist/{_chunks/eu-CdALomew.mjs.map → admin/chunks/de-5QRlDHyR.mjs.map} +1 -1
  71. package/dist/admin/chunks/de-CbImAUA5.js +200 -0
  72. package/dist/{_chunks/gu-BRmF601H.js.map → admin/chunks/de-CbImAUA5.js.map} +1 -1
  73. package/dist/admin/chunks/en-C2zEwS3-.mjs +313 -0
  74. package/dist/{_chunks/en-D_BMf0hT.mjs.map → admin/chunks/en-C2zEwS3-.mjs.map} +1 -1
  75. package/dist/admin/chunks/en-G976DLsg.js +318 -0
  76. package/dist/{_chunks/en-CHOp_xJv.js.map → admin/chunks/en-G976DLsg.js.map} +1 -1
  77. package/dist/admin/chunks/es-C8vLuvZL.js +197 -0
  78. package/dist/{_chunks/es-9K52xZIr.js.map → admin/chunks/es-C8vLuvZL.js.map} +1 -1
  79. package/dist/admin/chunks/es-DkoWSExG.mjs +192 -0
  80. package/dist/{_chunks/ja-BHqhDq4V.mjs.map → admin/chunks/es-DkoWSExG.mjs.map} +1 -1
  81. package/dist/admin/chunks/eu-BG1xX7HK.mjs +198 -0
  82. package/dist/admin/chunks/eu-BG1xX7HK.mjs.map +1 -0
  83. package/dist/admin/chunks/eu-BJW3AvXu.js +203 -0
  84. package/dist/admin/chunks/eu-BJW3AvXu.js.map +1 -0
  85. package/dist/admin/chunks/fr-CFdRaRVj.mjs +215 -0
  86. package/dist/admin/chunks/fr-CFdRaRVj.mjs.map +1 -0
  87. package/dist/admin/chunks/fr-gQSilC7w.js +220 -0
  88. package/dist/admin/chunks/fr-gQSilC7w.js.map +1 -0
  89. package/dist/admin/chunks/gu-D5MMMXRs.mjs +196 -0
  90. package/dist/admin/chunks/gu-D5MMMXRs.mjs.map +1 -0
  91. package/dist/admin/chunks/gu-DPU4wyx7.js +201 -0
  92. package/dist/{_chunks/eu-VDH-3ovk.js.map → admin/chunks/gu-DPU4wyx7.js.map} +1 -1
  93. package/dist/admin/chunks/hi-Dp4omeBb.js +201 -0
  94. package/dist/admin/chunks/hi-Dp4omeBb.js.map +1 -0
  95. package/dist/admin/chunks/hi-lp17SCjr.mjs +196 -0
  96. package/dist/admin/chunks/hi-lp17SCjr.mjs.map +1 -0
  97. package/dist/{_chunks/hooks-BAaaKPS_.js → admin/chunks/hooks-D-sOYd1s.js} +6 -3
  98. package/dist/admin/chunks/hooks-D-sOYd1s.js.map +1 -0
  99. package/dist/admin/chunks/hooks-DMvik5y_.mjs +7 -0
  100. package/dist/admin/chunks/hooks-DMvik5y_.mjs.map +1 -0
  101. package/dist/admin/chunks/hu-CLka1U2C.mjs +198 -0
  102. package/dist/admin/chunks/hu-CLka1U2C.mjs.map +1 -0
  103. package/dist/admin/chunks/hu-CtFJuhTd.js +203 -0
  104. package/dist/admin/chunks/hu-CtFJuhTd.js.map +1 -0
  105. package/dist/admin/chunks/id-D7V5S1rB.js +161 -0
  106. package/dist/{_chunks/it-DkBIs7vD.js.map → admin/chunks/id-D7V5S1rB.js.map} +1 -1
  107. package/dist/admin/chunks/id-USfY9m1g.mjs +156 -0
  108. package/dist/{_chunks/id-BtwA9WJT.mjs.map → admin/chunks/id-USfY9m1g.mjs.map} +1 -1
  109. package/dist/admin/chunks/index-Cmh0Byay.js +5533 -0
  110. package/dist/admin/chunks/index-Cmh0Byay.js.map +1 -0
  111. package/dist/admin/chunks/index-DFvqTQvr.mjs +5463 -0
  112. package/dist/admin/chunks/index-DFvqTQvr.mjs.map +1 -0
  113. package/dist/admin/chunks/it-BAHrwmYS.mjs +158 -0
  114. package/dist/{_chunks/it-BrVPqaf1.mjs.map → admin/chunks/it-BAHrwmYS.mjs.map} +1 -1
  115. package/dist/admin/chunks/it-CQFpa_Dc.js +163 -0
  116. package/dist/{_chunks/ko-woFZPmLk.js.map → admin/chunks/it-CQFpa_Dc.js.map} +1 -1
  117. package/dist/admin/chunks/ja-BWKmBJFT.mjs +192 -0
  118. package/dist/{_chunks/ko-HVQRlfUI.mjs.map → admin/chunks/ja-BWKmBJFT.mjs.map} +1 -1
  119. package/dist/admin/chunks/ja-jdQM-B79.js +197 -0
  120. package/dist/{_chunks/de-CCEmbAah.js.map → admin/chunks/ja-jdQM-B79.js.map} +1 -1
  121. package/dist/admin/chunks/ko-CgADGBNt.mjs +191 -0
  122. package/dist/{_chunks/es-D34tqjMw.mjs.map → admin/chunks/ko-CgADGBNt.mjs.map} +1 -1
  123. package/dist/admin/chunks/ko-k46sEyzt.js +196 -0
  124. package/dist/{_chunks/ja-7sfIbjxE.js.map → admin/chunks/ko-k46sEyzt.js.map} +1 -1
  125. package/dist/admin/chunks/layout-DuH1v82S.js +692 -0
  126. package/dist/admin/chunks/layout-DuH1v82S.js.map +1 -0
  127. package/dist/admin/chunks/layout-zQ9o6rg0.mjs +672 -0
  128. package/dist/admin/chunks/layout-zQ9o6rg0.mjs.map +1 -0
  129. package/dist/admin/chunks/ml-CnhCfOn_.mjs +196 -0
  130. package/dist/admin/chunks/ml-CnhCfOn_.mjs.map +1 -0
  131. package/dist/admin/chunks/ml-DqxPwODx.js +201 -0
  132. package/dist/admin/chunks/ml-DqxPwODx.js.map +1 -0
  133. package/dist/admin/chunks/ms-Bh09NFff.mjs +140 -0
  134. package/dist/{_chunks/ms-m_WjyWx7.mjs.map → admin/chunks/ms-Bh09NFff.mjs.map} +1 -1
  135. package/dist/admin/chunks/ms-CvSC0OdG.js +145 -0
  136. package/dist/{_chunks/ms-BuFotyP_.js.map → admin/chunks/ms-CvSC0OdG.js.map} +1 -1
  137. package/dist/admin/chunks/nl-BEubhS8C.js +203 -0
  138. package/dist/admin/chunks/nl-BEubhS8C.js.map +1 -0
  139. package/dist/admin/chunks/nl-C8HYflTc.mjs +198 -0
  140. package/dist/admin/chunks/nl-C8HYflTc.mjs.map +1 -0
  141. package/dist/admin/chunks/objects-BJTP843m.js +343 -0
  142. package/dist/admin/chunks/objects-BJTP843m.js.map +1 -0
  143. package/dist/admin/chunks/objects-D2z-IJgu.mjs +317 -0
  144. package/dist/admin/chunks/objects-D2z-IJgu.mjs.map +1 -0
  145. package/dist/admin/chunks/pl-DWhGDzmM.js +200 -0
  146. package/dist/{_chunks/ca-Cmk45QO6.js.map → admin/chunks/pl-DWhGDzmM.js.map} +1 -1
  147. package/dist/admin/chunks/pl-MFCZJZuZ.mjs +195 -0
  148. package/dist/{_chunks/ca-5U32ON2v.mjs.map → admin/chunks/pl-MFCZJZuZ.mjs.map} +1 -1
  149. package/dist/admin/chunks/pt-BR-CPtAXD-4.js +202 -0
  150. package/dist/{_chunks/pt-BR-BiOz37D9.js.map → admin/chunks/pt-BR-CPtAXD-4.js.map} +1 -1
  151. package/dist/admin/chunks/pt-BR-CcotyBGJ.mjs +197 -0
  152. package/dist/{_chunks/pt-BR-C71iDxnh.mjs.map → admin/chunks/pt-BR-CcotyBGJ.mjs.map} +1 -1
  153. package/dist/admin/chunks/pt-BoPxN80n.js +96 -0
  154. package/dist/admin/chunks/pt-BoPxN80n.js.map +1 -0
  155. package/dist/admin/chunks/pt-HbmgeiYO.mjs +93 -0
  156. package/dist/admin/chunks/pt-HbmgeiYO.mjs.map +1 -0
  157. package/dist/admin/chunks/ru-C0op0ALG.js +232 -0
  158. package/dist/admin/chunks/ru-C0op0ALG.js.map +1 -0
  159. package/dist/admin/chunks/ru-CB4BUyQp.mjs +230 -0
  160. package/dist/{_chunks/ru-BE6A4Exp.mjs.map → admin/chunks/ru-CB4BUyQp.mjs.map} +1 -1
  161. package/dist/admin/chunks/sa-B_FuPyMw.js +201 -0
  162. package/dist/admin/chunks/sa-B_FuPyMw.js.map +1 -0
  163. package/dist/admin/chunks/sa-n_aPA-pU.mjs +196 -0
  164. package/dist/admin/chunks/sa-n_aPA-pU.mjs.map +1 -0
  165. package/dist/admin/chunks/sk-D_iXML2C.js +203 -0
  166. package/dist/admin/chunks/sk-D_iXML2C.js.map +1 -0
  167. package/dist/admin/chunks/sk-tn_BDjE2.mjs +198 -0
  168. package/dist/admin/chunks/sk-tn_BDjE2.mjs.map +1 -0
  169. package/dist/admin/chunks/sv-BstBC1Yp.js +203 -0
  170. package/dist/admin/chunks/sv-BstBC1Yp.js.map +1 -0
  171. package/dist/admin/chunks/sv-cq4ZrQRd.mjs +198 -0
  172. package/dist/admin/chunks/sv-cq4ZrQRd.mjs.map +1 -0
  173. package/dist/admin/chunks/th-lXoOCqPC.js +149 -0
  174. package/dist/{_chunks/th-D9_GfAjc.js.map → admin/chunks/th-lXoOCqPC.js.map} +1 -1
  175. package/dist/admin/chunks/th-mUH7hEtc.mjs +144 -0
  176. package/dist/{_chunks/uk-CR-zDhAY.mjs.map → admin/chunks/th-mUH7hEtc.mjs.map} +1 -1
  177. package/dist/admin/chunks/tr-CkS6sLIE.js +200 -0
  178. package/dist/admin/chunks/tr-CkS6sLIE.js.map +1 -0
  179. package/dist/admin/chunks/tr-Yt38daxh.mjs +195 -0
  180. package/dist/{_chunks/de-C72KDNOl.mjs.map → admin/chunks/tr-Yt38daxh.mjs.map} +1 -1
  181. package/dist/admin/chunks/uk-BtM6WnaE.mjs +313 -0
  182. package/dist/admin/chunks/uk-BtM6WnaE.mjs.map +1 -0
  183. package/dist/admin/chunks/uk-DB6OgySY.js +318 -0
  184. package/dist/admin/chunks/uk-DB6OgySY.js.map +1 -0
  185. package/dist/admin/chunks/usePrev-B_pceXQ5.js +194 -0
  186. package/dist/admin/chunks/usePrev-B_pceXQ5.js.map +1 -0
  187. package/dist/admin/chunks/usePrev-CJFOGBK2.mjs +187 -0
  188. package/dist/admin/chunks/usePrev-CJFOGBK2.mjs.map +1 -0
  189. package/dist/admin/chunks/vi-BGr1X_HZ.js +112 -0
  190. package/dist/{_chunks/vi-CJlYDheJ.js.map → admin/chunks/vi-BGr1X_HZ.js.map} +1 -1
  191. package/dist/admin/chunks/vi-CvBGlTjr.mjs +108 -0
  192. package/dist/{_chunks/vi-DUXIk_fw.mjs.map → admin/chunks/vi-CvBGlTjr.mjs.map} +1 -1
  193. package/dist/admin/chunks/zh-BmF-sHaT.mjs +205 -0
  194. package/dist/admin/chunks/zh-BmF-sHaT.mjs.map +1 -0
  195. package/dist/admin/chunks/zh-DwFu_Kfj.js +210 -0
  196. package/dist/admin/chunks/zh-DwFu_Kfj.js.map +1 -0
  197. package/dist/admin/chunks/zh-Hans-DEAhqI3x.mjs +935 -0
  198. package/dist/{_chunks/zh-Hans-BPQcRIyH.mjs.map → admin/chunks/zh-Hans-DEAhqI3x.mjs.map} +1 -1
  199. package/dist/admin/chunks/zh-Hans-Djj7eGpO.js +954 -0
  200. package/dist/{_chunks/zh-Hans-9kOncHGw.js.map → admin/chunks/zh-Hans-Djj7eGpO.js.map} +1 -1
  201. package/dist/admin/index.js +25 -4
  202. package/dist/admin/index.js.map +1 -1
  203. package/dist/admin/index.mjs +17 -12
  204. package/dist/admin/index.mjs.map +1 -1
  205. package/dist/admin/src/components/InjectionZone.d.ts +7 -1
  206. package/dist/admin/src/content-manager.d.ts +9 -2
  207. package/dist/admin/src/exports.d.ts +1 -0
  208. package/dist/admin/src/features/DocumentContext.d.ts +53 -0
  209. package/dist/admin/src/features/DocumentRBAC.d.ts +3 -2
  210. package/dist/admin/src/history/services/historyVersion.d.ts +2 -2
  211. package/dist/admin/src/hooks/useDocument.d.ts +23 -4
  212. package/dist/admin/src/hooks/useDocumentActions.d.ts +2 -1
  213. package/dist/admin/src/index.d.ts +1 -0
  214. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +3 -2
  215. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +1 -1
  216. package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +11 -0
  217. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +55 -0
  218. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
  219. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +4 -1
  220. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +4 -1
  221. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +8 -0
  222. package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +8 -2
  223. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.d.ts +1 -2
  224. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +34 -1
  225. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +7 -4
  226. package/dist/admin/src/pages/EditView/utils/data.d.ts +1 -0
  227. package/dist/admin/src/preview/index.d.ts +2 -3
  228. package/dist/admin/src/preview/pages/Preview.d.ts +3 -1
  229. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  230. package/dist/admin/src/services/api.d.ts +1 -1
  231. package/dist/admin/src/services/components.d.ts +2 -2
  232. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  233. package/dist/admin/src/services/documents.d.ts +16 -19
  234. package/dist/admin/src/services/init.d.ts +1 -1
  235. package/dist/admin/src/services/relations.d.ts +2 -2
  236. package/dist/admin/src/services/uid.d.ts +3 -3
  237. package/dist/server/index.js +5461 -4346
  238. package/dist/server/index.js.map +1 -1
  239. package/dist/server/index.mjs +5433 -4315
  240. package/dist/server/index.mjs.map +1 -1
  241. package/dist/server/src/controllers/utils/metadata.d.ts +2 -1
  242. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  243. package/dist/server/src/history/controllers/history-version.d.ts +1 -1
  244. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  245. package/dist/server/src/history/services/history.d.ts +3 -3
  246. package/dist/server/src/history/services/history.d.ts.map +1 -1
  247. package/dist/server/src/history/services/utils.d.ts +6 -10
  248. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  249. package/dist/server/src/index.d.ts +3 -2
  250. package/dist/server/src/index.d.ts.map +1 -1
  251. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
  252. package/dist/server/src/preview/index.d.ts.map +1 -1
  253. package/dist/server/src/preview/services/index.d.ts +1 -0
  254. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  255. package/dist/server/src/preview/services/preview-config.d.ts +2 -0
  256. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  257. package/dist/server/src/preview/utils.d.ts +1 -0
  258. package/dist/server/src/preview/utils.d.ts.map +1 -1
  259. package/dist/server/src/register.d.ts.map +1 -1
  260. package/dist/server/src/services/document-metadata.d.ts +4 -2
  261. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  262. package/dist/server/src/services/index.d.ts +3 -2
  263. package/dist/server/src/services/index.d.ts.map +1 -1
  264. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  265. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  266. package/dist/server/src/services/utils/count.d.ts +1 -1
  267. package/dist/server/src/services/utils/count.d.ts.map +1 -1
  268. package/dist/server/src/services/utils/populate.d.ts +3 -3
  269. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  270. package/dist/shared/contracts/collection-types.d.ts +0 -1
  271. package/dist/shared/contracts/components.d.ts +0 -1
  272. package/dist/shared/contracts/content-types.d.ts +0 -1
  273. package/dist/shared/contracts/history-versions.d.ts +0 -1
  274. package/dist/shared/contracts/index.d.ts +0 -1
  275. package/dist/shared/contracts/init.d.ts +0 -1
  276. package/dist/shared/contracts/preview.d.ts +0 -1
  277. package/dist/shared/contracts/relations.d.ts +1 -2
  278. package/dist/shared/contracts/relations.d.ts.map +1 -1
  279. package/dist/shared/contracts/review-workflows.d.ts +0 -1
  280. package/dist/shared/contracts/single-types.d.ts +0 -1
  281. package/dist/shared/contracts/uid.d.ts +0 -1
  282. package/dist/shared/index.d.ts +0 -1
  283. package/dist/shared/index.js +35 -24
  284. package/dist/shared/index.js.map +1 -1
  285. package/dist/shared/index.mjs +34 -25
  286. package/dist/shared/index.mjs.map +1 -1
  287. package/package.json +20 -16
  288. package/dist/_chunks/CardDragPreview-C0QyJgRA.js +0 -69
  289. package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +0 -1
  290. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs +0 -70
  291. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +0 -1
  292. package/dist/_chunks/ComponentConfigurationPage-Bmwd-G2q.js +0 -255
  293. package/dist/_chunks/ComponentConfigurationPage-Bmwd-G2q.js.map +0 -1
  294. package/dist/_chunks/ComponentConfigurationPage-DqB7veg_.mjs +0 -236
  295. package/dist/_chunks/ComponentConfigurationPage-DqB7veg_.mjs.map +0 -1
  296. package/dist/_chunks/ComponentIcon-BXdiCGQp.js +0 -176
  297. package/dist/_chunks/ComponentIcon-BXdiCGQp.js.map +0 -1
  298. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs +0 -157
  299. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +0 -1
  300. package/dist/_chunks/EditConfigurationPage-CDLVqqay.mjs +0 -132
  301. package/dist/_chunks/EditConfigurationPage-CDLVqqay.mjs.map +0 -1
  302. package/dist/_chunks/EditConfigurationPage-DmruXqgR.js +0 -151
  303. package/dist/_chunks/EditConfigurationPage-DmruXqgR.js.map +0 -1
  304. package/dist/_chunks/EditViewPage-0zrWXtMz.js +0 -273
  305. package/dist/_chunks/EditViewPage-0zrWXtMz.js.map +0 -1
  306. package/dist/_chunks/EditViewPage-BgcbLW7w.mjs +0 -254
  307. package/dist/_chunks/EditViewPage-BgcbLW7w.mjs.map +0 -1
  308. package/dist/_chunks/Field-BV7ZYdqe.js +0 -5615
  309. package/dist/_chunks/Field-BV7ZYdqe.js.map +0 -1
  310. package/dist/_chunks/Field-fTjqtEem.mjs +0 -5583
  311. package/dist/_chunks/Field-fTjqtEem.mjs.map +0 -1
  312. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs +0 -50
  313. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +0 -1
  314. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js +0 -49
  315. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +0 -1
  316. package/dist/_chunks/Form-CIDoAFoD.js +0 -779
  317. package/dist/_chunks/Form-CIDoAFoD.js.map +0 -1
  318. package/dist/_chunks/Form-WNWgTBtb.mjs +0 -758
  319. package/dist/_chunks/Form-WNWgTBtb.mjs.map +0 -1
  320. package/dist/_chunks/History-BNvm2TK2.js +0 -994
  321. package/dist/_chunks/History-BNvm2TK2.js.map +0 -1
  322. package/dist/_chunks/History-DEZDHwP0.mjs +0 -973
  323. package/dist/_chunks/History-DEZDHwP0.mjs.map +0 -1
  324. package/dist/_chunks/ListConfigurationPage-B3FZwPHp.js +0 -652
  325. package/dist/_chunks/ListConfigurationPage-B3FZwPHp.js.map +0 -1
  326. package/dist/_chunks/ListConfigurationPage-Ddz3G-It.mjs +0 -632
  327. package/dist/_chunks/ListConfigurationPage-Ddz3G-It.mjs.map +0 -1
  328. package/dist/_chunks/ListViewPage-BEilNylQ.js +0 -874
  329. package/dist/_chunks/ListViewPage-BEilNylQ.js.map +0 -1
  330. package/dist/_chunks/ListViewPage-BsLdw25U.mjs +0 -850
  331. package/dist/_chunks/ListViewPage-BsLdw25U.mjs.map +0 -1
  332. package/dist/_chunks/NoContentTypePage-BD2C-IMr.js +0 -51
  333. package/dist/_chunks/NoContentTypePage-BD2C-IMr.js.map +0 -1
  334. package/dist/_chunks/NoContentTypePage-D0jXEWKM.mjs +0 -51
  335. package/dist/_chunks/NoContentTypePage-D0jXEWKM.mjs.map +0 -1
  336. package/dist/_chunks/NoPermissionsPage-CIPqlrQq.mjs +0 -23
  337. package/dist/_chunks/NoPermissionsPage-CIPqlrQq.mjs.map +0 -1
  338. package/dist/_chunks/NoPermissionsPage-yNOvz9XO.js +0 -23
  339. package/dist/_chunks/NoPermissionsPage-yNOvz9XO.js.map +0 -1
  340. package/dist/_chunks/Preview-1cqLecKr.js +0 -256
  341. package/dist/_chunks/Preview-1cqLecKr.js.map +0 -1
  342. package/dist/_chunks/Preview-ot2fh0yZ.mjs +0 -237
  343. package/dist/_chunks/Preview-ot2fh0yZ.mjs.map +0 -1
  344. package/dist/_chunks/Relations-C3U9SKEb.js +0 -750
  345. package/dist/_chunks/Relations-C3U9SKEb.js.map +0 -1
  346. package/dist/_chunks/Relations-CfdwHP-0.mjs +0 -730
  347. package/dist/_chunks/Relations-CfdwHP-0.mjs.map +0 -1
  348. package/dist/_chunks/ar-BUUWXIYu.js +0 -226
  349. package/dist/_chunks/ar-BUUWXIYu.js.map +0 -1
  350. package/dist/_chunks/ar-CCEVvqGG.mjs +0 -226
  351. package/dist/_chunks/ca-5U32ON2v.mjs +0 -201
  352. package/dist/_chunks/ca-Cmk45QO6.js +0 -201
  353. package/dist/_chunks/cs-CM2aBUar.mjs +0 -125
  354. package/dist/_chunks/cs-CkJy6B2v.js +0 -125
  355. package/dist/_chunks/de-C72KDNOl.mjs +0 -199
  356. package/dist/_chunks/de-CCEmbAah.js +0 -199
  357. package/dist/_chunks/en-CHOp_xJv.js +0 -302
  358. package/dist/_chunks/en-D_BMf0hT.mjs +0 -302
  359. package/dist/_chunks/es-9K52xZIr.js +0 -196
  360. package/dist/_chunks/es-D34tqjMw.mjs +0 -196
  361. package/dist/_chunks/eu-CdALomew.mjs +0 -202
  362. package/dist/_chunks/eu-VDH-3ovk.js +0 -202
  363. package/dist/_chunks/fr--pg5jUbt.mjs +0 -216
  364. package/dist/_chunks/fr--pg5jUbt.mjs.map +0 -1
  365. package/dist/_chunks/fr-B2Kyv8Z9.js +0 -216
  366. package/dist/_chunks/fr-B2Kyv8Z9.js.map +0 -1
  367. package/dist/_chunks/gu-BRmF601H.js +0 -200
  368. package/dist/_chunks/gu-CNpaMDpH.mjs +0 -200
  369. package/dist/_chunks/gu-CNpaMDpH.mjs.map +0 -1
  370. package/dist/_chunks/hi-CCJBptSq.js +0 -200
  371. package/dist/_chunks/hi-CCJBptSq.js.map +0 -1
  372. package/dist/_chunks/hi-Dwvd04m3.mjs +0 -200
  373. package/dist/_chunks/hi-Dwvd04m3.mjs.map +0 -1
  374. package/dist/_chunks/hooks-BAaaKPS_.js.map +0 -1
  375. package/dist/_chunks/hooks-E5u1mcgM.mjs +0 -8
  376. package/dist/_chunks/hooks-E5u1mcgM.mjs.map +0 -1
  377. package/dist/_chunks/hu-CeYvaaO0.mjs +0 -202
  378. package/dist/_chunks/hu-CeYvaaO0.mjs.map +0 -1
  379. package/dist/_chunks/hu-sNV_yLYy.js +0 -202
  380. package/dist/_chunks/hu-sNV_yLYy.js.map +0 -1
  381. package/dist/_chunks/id-B5Ser98A.js +0 -160
  382. package/dist/_chunks/id-B5Ser98A.js.map +0 -1
  383. package/dist/_chunks/id-BtwA9WJT.mjs +0 -160
  384. package/dist/_chunks/index-BzUT1l9A.mjs +0 -4169
  385. package/dist/_chunks/index-BzUT1l9A.mjs.map +0 -1
  386. package/dist/_chunks/index-Cg4RLIAw.js +0 -4189
  387. package/dist/_chunks/index-Cg4RLIAw.js.map +0 -1
  388. package/dist/_chunks/it-BrVPqaf1.mjs +0 -162
  389. package/dist/_chunks/it-DkBIs7vD.js +0 -162
  390. package/dist/_chunks/ja-7sfIbjxE.js +0 -196
  391. package/dist/_chunks/ja-BHqhDq4V.mjs +0 -196
  392. package/dist/_chunks/ko-HVQRlfUI.mjs +0 -195
  393. package/dist/_chunks/ko-woFZPmLk.js +0 -195
  394. package/dist/_chunks/layout-C0QEDBAh.mjs +0 -471
  395. package/dist/_chunks/layout-C0QEDBAh.mjs.map +0 -1
  396. package/dist/_chunks/layout-Cj_1EKbm.js +0 -489
  397. package/dist/_chunks/layout-Cj_1EKbm.js.map +0 -1
  398. package/dist/_chunks/ml-BihZwQit.mjs +0 -200
  399. package/dist/_chunks/ml-BihZwQit.mjs.map +0 -1
  400. package/dist/_chunks/ml-C2W8N8k1.js +0 -200
  401. package/dist/_chunks/ml-C2W8N8k1.js.map +0 -1
  402. package/dist/_chunks/ms-BuFotyP_.js +0 -144
  403. package/dist/_chunks/ms-m_WjyWx7.mjs +0 -144
  404. package/dist/_chunks/nl-D4R9gHx5.mjs +0 -202
  405. package/dist/_chunks/nl-D4R9gHx5.mjs.map +0 -1
  406. package/dist/_chunks/nl-bbEOHChV.js +0 -202
  407. package/dist/_chunks/nl-bbEOHChV.js.map +0 -1
  408. package/dist/_chunks/objects-BcXOv6_9.js +0 -47
  409. package/dist/_chunks/objects-BcXOv6_9.js.map +0 -1
  410. package/dist/_chunks/objects-D6yBsdmx.mjs +0 -45
  411. package/dist/_chunks/objects-D6yBsdmx.mjs.map +0 -1
  412. package/dist/_chunks/pl-sbx9mSt_.mjs +0 -199
  413. package/dist/_chunks/pl-sbx9mSt_.mjs.map +0 -1
  414. package/dist/_chunks/pl-uzwG-hk7.js +0 -199
  415. package/dist/_chunks/pl-uzwG-hk7.js.map +0 -1
  416. package/dist/_chunks/pt-BR-BiOz37D9.js +0 -201
  417. package/dist/_chunks/pt-BR-C71iDxnh.mjs +0 -201
  418. package/dist/_chunks/pt-BsaFvS8-.mjs +0 -95
  419. package/dist/_chunks/pt-BsaFvS8-.mjs.map +0 -1
  420. package/dist/_chunks/pt-CeXQuq50.js +0 -95
  421. package/dist/_chunks/pt-CeXQuq50.js.map +0 -1
  422. package/dist/_chunks/relations-CgPG3AwU.mjs +0 -134
  423. package/dist/_chunks/relations-CgPG3AwU.mjs.map +0 -1
  424. package/dist/_chunks/relations-hDOgJy2R.js +0 -133
  425. package/dist/_chunks/relations-hDOgJy2R.js.map +0 -1
  426. package/dist/_chunks/ru-BE6A4Exp.mjs +0 -231
  427. package/dist/_chunks/ru-BT3ybNny.js +0 -231
  428. package/dist/_chunks/sa-CcvkYInH.js +0 -200
  429. package/dist/_chunks/sa-CcvkYInH.js.map +0 -1
  430. package/dist/_chunks/sa-Dag0k-Z8.mjs +0 -200
  431. package/dist/_chunks/sa-Dag0k-Z8.mjs.map +0 -1
  432. package/dist/_chunks/sk-BFg-R8qJ.mjs +0 -202
  433. package/dist/_chunks/sk-BFg-R8qJ.mjs.map +0 -1
  434. package/dist/_chunks/sk-CvY09Xjv.js +0 -202
  435. package/dist/_chunks/sk-CvY09Xjv.js.map +0 -1
  436. package/dist/_chunks/sv-CUnfWGsh.mjs +0 -202
  437. package/dist/_chunks/sv-CUnfWGsh.mjs.map +0 -1
  438. package/dist/_chunks/sv-MYDuzgvT.js +0 -202
  439. package/dist/_chunks/sv-MYDuzgvT.js.map +0 -1
  440. package/dist/_chunks/th-BqbI8lIT.mjs +0 -148
  441. package/dist/_chunks/th-BqbI8lIT.mjs.map +0 -1
  442. package/dist/_chunks/th-D9_GfAjc.js +0 -148
  443. package/dist/_chunks/tr-CgeK3wJM.mjs +0 -199
  444. package/dist/_chunks/tr-CgeK3wJM.mjs.map +0 -1
  445. package/dist/_chunks/tr-D9UH-O_R.js +0 -199
  446. package/dist/_chunks/tr-D9UH-O_R.js.map +0 -1
  447. package/dist/_chunks/uk-C8EiqJY7.js +0 -144
  448. package/dist/_chunks/uk-C8EiqJY7.js.map +0 -1
  449. package/dist/_chunks/uk-CR-zDhAY.mjs +0 -144
  450. package/dist/_chunks/useDebounce-CtcjDB3L.js +0 -28
  451. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +0 -1
  452. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +0 -29
  453. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +0 -1
  454. package/dist/_chunks/useDragAndDrop-DdHgKsqq.mjs +0 -231
  455. package/dist/_chunks/useDragAndDrop-DdHgKsqq.mjs.map +0 -1
  456. package/dist/_chunks/useDragAndDrop-J0TUUbR6.js +0 -249
  457. package/dist/_chunks/useDragAndDrop-J0TUUbR6.js.map +0 -1
  458. package/dist/_chunks/vi-CJlYDheJ.js +0 -111
  459. package/dist/_chunks/vi-DUXIk_fw.mjs +0 -111
  460. package/dist/_chunks/zh-BWZspA60.mjs +0 -209
  461. package/dist/_chunks/zh-BWZspA60.mjs.map +0 -1
  462. package/dist/_chunks/zh-CQQfszqR.js +0 -209
  463. package/dist/_chunks/zh-CQQfszqR.js.map +0 -1
  464. package/dist/_chunks/zh-Hans-9kOncHGw.js +0 -952
  465. package/dist/_chunks/zh-Hans-BPQcRIyH.mjs +0 -952
  466. package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -2
  467. package/dist/admin/src/preview/constants.d.ts +0 -1
  468. package/dist/server/src/preview/constants.d.ts +0 -2
  469. package/dist/server/src/preview/constants.d.ts.map +0 -1
@@ -0,0 +1,1131 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { useTracking, useAuth, useQueryParams, useAdminUsers, Filters, useField, useRBAC, Layouts, useNotification, useAPIErrorHandler, useStrapiApp, Page, BackButton, SearchInput, Table, Pagination, useTable } from '@strapi/admin/strapi-admin';
4
+ import { useCollator, Combobox, ComboboxOption, Tooltip, Typography, Menu, Badge, Avatar, Flex, useNotifyAT, Loader, Popover, IconButton, LinkButton, TextButton, Checkbox, Button } from '@strapi/design-system';
5
+ import { Cog, ListPlus, Plus } from '@strapi/icons';
6
+ import isEqual from 'lodash/isEqual';
7
+ import { stringify } from 'qs';
8
+ import { useIntl } from 'react-intl';
9
+ import { NavLink, useNavigate, Link, useParams } from 'react-router-dom';
10
+ import { styled } from 'styled-components';
11
+ import { u as useContentTypeSchema, v as useGetContentTypeConfigurationQuery, w as CREATOR_FIELDS, x as getMainField, y as getDisplayName, m as useDoc, g as getTranslation, d as useDocumentLayout, z as checkIfAttributeIsDisplayable, k as buildValidParams, A as useGetAllDocumentsQuery, o as useDocumentRBAC, I as InjectionZone, D as DocumentStatus, T as TableActions, B as BulkActionsRenderer, P as PERMISSIONS, i as DocumentRBAC, H as HOOKS, E as convertListLayoutToFieldLayouts } from './index-DFvqTQvr.mjs';
12
+ import { a as useDebounce, p as prefixFileUrlWithBackendUrl, g as getRelationLabel, u as useGetRelationsQuery, c as usePrev } from './usePrev-CJFOGBK2.mjs';
13
+ import isEmpty from 'lodash/isEmpty';
14
+ import parseISO from 'date-fns/parseISO';
15
+ import toString from 'lodash/toString';
16
+ import { u as useTypedSelector } from './hooks-DMvik5y_.mjs';
17
+ import 'lodash/fp/mapValues';
18
+ import 'yup';
19
+ import 'fractional-indexing';
20
+ import 'lodash/fp/pipe';
21
+ import 'date-fns';
22
+ import '@reduxjs/toolkit';
23
+ import 'prismjs';
24
+ import 'react-redux';
25
+
26
+ /**
27
+ * If new attributes are added, this list needs to be updated.
28
+ */ const NOT_ALLOWED_FILTERS = [
29
+ 'json',
30
+ 'component',
31
+ 'media',
32
+ 'richtext',
33
+ 'dynamiczone',
34
+ 'password',
35
+ 'blocks'
36
+ ];
37
+ const DEFAULT_ALLOWED_FILTERS = [
38
+ 'createdAt',
39
+ 'updatedAt'
40
+ ];
41
+ const USER_FILTER_ATTRIBUTES = [
42
+ ...CREATOR_FIELDS,
43
+ 'strapi_assignee'
44
+ ];
45
+ const FiltersImpl = ({ disabled, schema })=>{
46
+ const { attributes, uid: model, options } = schema;
47
+ const { formatMessage, locale } = useIntl();
48
+ const { trackUsage } = useTracking();
49
+ const allPermissions = useAuth('FiltersImpl', (state)=>state.permissions);
50
+ const [{ query }] = useQueryParams();
51
+ const { schemas } = useContentTypeSchema();
52
+ const canReadAdminUsers = React.useMemo(()=>allPermissions.filter((permission)=>permission.action === 'admin::users.read' && permission.subject === null).length > 0, [
53
+ allPermissions
54
+ ]);
55
+ const selectedUserIds = (query?.filters?.$and ?? []).reduce((acc, filter)=>{
56
+ const [key, value] = Object.entries(filter)[0];
57
+ if (typeof value.id !== 'object') {
58
+ return acc;
59
+ }
60
+ const id = value.id.$eq || value.id.$ne;
61
+ if (id && USER_FILTER_ATTRIBUTES.includes(key) && !acc.includes(id)) {
62
+ acc.push(id);
63
+ }
64
+ return acc;
65
+ }, []);
66
+ const { data: userData, isLoading: isLoadingAdminUsers } = useAdminUsers({
67
+ filters: {
68
+ id: {
69
+ $in: selectedUserIds
70
+ }
71
+ }
72
+ }, {
73
+ // fetch the list of admin users only if the filter contains users and the
74
+ // current user has permissions to display users
75
+ skip: selectedUserIds.length === 0 || !canReadAdminUsers
76
+ });
77
+ const { users = [] } = userData ?? {};
78
+ const { metadata } = useGetContentTypeConfigurationQuery(model, {
79
+ selectFromResult: ({ data })=>({
80
+ metadata: data?.contentType.metadatas ?? {}
81
+ })
82
+ });
83
+ const formatter = useCollator(locale, {
84
+ sensitivity: 'base'
85
+ });
86
+ const displayedFilters = React.useMemo(()=>{
87
+ const [{ properties: { fields = [] } = {
88
+ fields: []
89
+ } }] = allPermissions.filter((permission)=>permission.action === 'plugin::content-manager.explorer.read' && permission.subject === model);
90
+ const allowedFields = fields.filter((field)=>{
91
+ const attribute = attributes[field] ?? {};
92
+ return attribute.type && !NOT_ALLOWED_FILTERS.includes(attribute.type);
93
+ });
94
+ return [
95
+ 'id',
96
+ ...allowedFields,
97
+ ...DEFAULT_ALLOWED_FILTERS,
98
+ ...canReadAdminUsers ? CREATOR_FIELDS : []
99
+ ].map((name)=>{
100
+ const attribute = attributes[name];
101
+ if (NOT_ALLOWED_FILTERS.includes(attribute.type)) {
102
+ return null;
103
+ }
104
+ const { mainField: mainFieldName = '', label } = metadata[name].list;
105
+ let filter = {
106
+ name,
107
+ label: label ?? '',
108
+ mainField: getMainField(attribute, mainFieldName, {
109
+ schemas,
110
+ components: {}
111
+ }),
112
+ // @ts-expect-error – TODO: this is filtered out above in the `allowedFields` call but TS complains, is there a better way to solve this?
113
+ type: attribute.type
114
+ };
115
+ if (attribute.type === 'relation' && 'target' in attribute && attribute.target === 'admin::user') {
116
+ filter = {
117
+ ...filter,
118
+ input: AdminUsersFilter,
119
+ options: users.map((user)=>({
120
+ label: getDisplayName(user),
121
+ value: user.id.toString()
122
+ })),
123
+ operators: [
124
+ {
125
+ label: formatMessage({
126
+ id: 'components.FilterOptions.FILTER_TYPES.$eq',
127
+ defaultMessage: 'is'
128
+ }),
129
+ value: '$eq'
130
+ },
131
+ {
132
+ label: formatMessage({
133
+ id: 'components.FilterOptions.FILTER_TYPES.$ne',
134
+ defaultMessage: 'is not'
135
+ }),
136
+ value: '$ne'
137
+ }
138
+ ],
139
+ mainField: {
140
+ name: 'id',
141
+ type: 'integer'
142
+ }
143
+ };
144
+ }
145
+ if (attribute.type === 'enumeration') {
146
+ filter = {
147
+ ...filter,
148
+ options: attribute.enum.map((value)=>({
149
+ label: value,
150
+ value
151
+ }))
152
+ };
153
+ }
154
+ return filter;
155
+ }).filter(Boolean).toSorted((a, b)=>formatter.compare(a.label, b.label));
156
+ }, [
157
+ allPermissions,
158
+ canReadAdminUsers,
159
+ model,
160
+ attributes,
161
+ metadata,
162
+ schemas,
163
+ users,
164
+ formatMessage,
165
+ formatter
166
+ ]);
167
+ const onOpenChange = (isOpen)=>{
168
+ if (isOpen) {
169
+ trackUsage('willFilterEntries');
170
+ }
171
+ };
172
+ const handleFilterChange = (data)=>{
173
+ const attribute = attributes[data.name];
174
+ if (attribute) {
175
+ trackUsage('didFilterEntries', {
176
+ useRelation: attribute.type === 'relation'
177
+ });
178
+ }
179
+ };
180
+ return /*#__PURE__*/ jsxs(Filters.Root, {
181
+ disabled: disabled,
182
+ options: displayedFilters,
183
+ onOpenChange: onOpenChange,
184
+ onChange: handleFilterChange,
185
+ children: [
186
+ /*#__PURE__*/ jsx(Filters.Trigger, {}),
187
+ /*#__PURE__*/ jsx(Filters.Popover, {}),
188
+ /*#__PURE__*/ jsx(Filters.List, {})
189
+ ]
190
+ });
191
+ };
192
+ /* -------------------------------------------------------------------------------------------------
193
+ * AdminUsersFilter
194
+ * -----------------------------------------------------------------------------------------------*/ const AdminUsersFilter = ({ name })=>{
195
+ const [pageSize, setPageSize] = React.useState(10);
196
+ const [search, setSearch] = React.useState('');
197
+ const { formatMessage } = useIntl();
198
+ const debouncedSearch = useDebounce(search, 300);
199
+ const { data, isLoading } = useAdminUsers({
200
+ pageSize,
201
+ _q: debouncedSearch
202
+ });
203
+ const field = useField(name);
204
+ const handleOpenChange = (isOpen)=>{
205
+ if (!isOpen) {
206
+ setPageSize(10);
207
+ }
208
+ };
209
+ const { users = [], pagination } = data ?? {};
210
+ const { pageCount = 1, page = 1 } = pagination ?? {};
211
+ return /*#__PURE__*/ jsx(Combobox, {
212
+ value: field.value,
213
+ "aria-label": formatMessage({
214
+ id: 'content-manager.components.Filters.usersSelect.label',
215
+ defaultMessage: 'Search and select a user to filter'
216
+ }),
217
+ onOpenChange: handleOpenChange,
218
+ onChange: (value)=>field.onChange(name, value),
219
+ loading: isLoading,
220
+ onLoadMore: ()=>setPageSize(pageSize + 10),
221
+ hasMoreItems: page < pageCount,
222
+ onInputChange: (e)=>{
223
+ setSearch(e.currentTarget.value);
224
+ },
225
+ children: users.map((user)=>{
226
+ return /*#__PURE__*/ jsx(ComboboxOption, {
227
+ value: user.id.toString(),
228
+ children: getDisplayName(user)
229
+ }, user.id);
230
+ })
231
+ });
232
+ };
233
+
234
+ const CellValue = ({ type, value })=>{
235
+ const { formatDate, formatTime, formatNumber } = useIntl();
236
+ let formattedValue = value;
237
+ if (type === 'date') {
238
+ formattedValue = formatDate(parseISO(value), {
239
+ dateStyle: 'full'
240
+ });
241
+ }
242
+ if (type === 'datetime') {
243
+ formattedValue = formatDate(value, {
244
+ dateStyle: 'full',
245
+ timeStyle: 'short'
246
+ });
247
+ }
248
+ if (type === 'time') {
249
+ const [hour, minute, second] = value.split(':');
250
+ const date = new Date();
251
+ date.setHours(hour);
252
+ date.setMinutes(minute);
253
+ date.setSeconds(second);
254
+ formattedValue = formatTime(date, {
255
+ timeStyle: 'short'
256
+ });
257
+ }
258
+ if ([
259
+ 'float',
260
+ 'decimal'
261
+ ].includes(type)) {
262
+ formattedValue = formatNumber(value, {
263
+ // Should be kept in sync with the corresponding value
264
+ // in the design-system/NumberInput: https://github.com/strapi/design-system/blob/main/packages/strapi-design-system/src/NumberInput/NumberInput.js#L53
265
+ maximumFractionDigits: 20
266
+ });
267
+ }
268
+ if ([
269
+ 'integer',
270
+ 'biginteger'
271
+ ].includes(type)) {
272
+ formattedValue = formatNumber(value, {
273
+ maximumFractionDigits: 0
274
+ });
275
+ }
276
+ return toString(formattedValue);
277
+ };
278
+
279
+ const SingleComponent = ({ content, mainField })=>{
280
+ if (!mainField) {
281
+ return null;
282
+ }
283
+ return /*#__PURE__*/ jsx(Tooltip, {
284
+ label: content[mainField.name],
285
+ children: /*#__PURE__*/ jsx(Typography, {
286
+ maxWidth: "25rem",
287
+ textColor: "neutral800",
288
+ ellipsis: true,
289
+ children: /*#__PURE__*/ jsx(CellValue, {
290
+ type: mainField.type,
291
+ value: content[mainField.name]
292
+ })
293
+ })
294
+ });
295
+ };
296
+ const RepeatableComponent = ({ content, mainField })=>{
297
+ const { formatMessage } = useIntl();
298
+ if (!mainField) {
299
+ return null;
300
+ }
301
+ return /*#__PURE__*/ jsxs(Menu.Root, {
302
+ children: [
303
+ /*#__PURE__*/ jsxs(Menu.Trigger, {
304
+ onClick: (e)=>e.stopPropagation(),
305
+ children: [
306
+ /*#__PURE__*/ jsx(Badge, {
307
+ children: content.length
308
+ }),
309
+ formatMessage({
310
+ id: 'content-manager.containers.list.items',
311
+ defaultMessage: '{number, plural, =0 {items} one {item} other {items}}'
312
+ }, {
313
+ number: content.length
314
+ })
315
+ ]
316
+ }),
317
+ /*#__PURE__*/ jsx(Menu.Content, {
318
+ children: content.map((item)=>/*#__PURE__*/ jsx(Menu.Item, {
319
+ disabled: true,
320
+ children: /*#__PURE__*/ jsx(Typography, {
321
+ maxWidth: "50rem",
322
+ ellipsis: true,
323
+ children: /*#__PURE__*/ jsx(CellValue, {
324
+ type: mainField.type,
325
+ value: item[mainField.name]
326
+ })
327
+ })
328
+ }, item.id))
329
+ })
330
+ ]
331
+ });
332
+ };
333
+
334
+ const getFileExtension = (ext)=>ext && ext[0] === '.' ? ext.substring(1) : ext;
335
+ const MediaSingle = ({ url, mime, alternativeText, name, ext, formats })=>{
336
+ const fileURL = prefixFileUrlWithBackendUrl(url);
337
+ if (mime.includes('image')) {
338
+ const thumbnail = formats?.thumbnail?.url;
339
+ const mediaURL = prefixFileUrlWithBackendUrl(thumbnail) || fileURL;
340
+ return /*#__PURE__*/ jsx(Avatar.Item, {
341
+ src: mediaURL,
342
+ alt: alternativeText || name,
343
+ fallback: alternativeText || name,
344
+ preview: true
345
+ });
346
+ }
347
+ const fileExtension = getFileExtension(ext);
348
+ const fileName = name.length > 100 ? `${name.substring(0, 100)}...` : name;
349
+ return /*#__PURE__*/ jsx(Tooltip, {
350
+ description: fileName,
351
+ children: /*#__PURE__*/ jsx(FileWrapper, {
352
+ children: fileExtension
353
+ })
354
+ });
355
+ };
356
+ const FileWrapper = ({ children })=>{
357
+ return /*#__PURE__*/ jsx(Flex, {
358
+ tag: "span",
359
+ position: "relative",
360
+ borderRadius: "50%",
361
+ width: "26px",
362
+ height: "26px",
363
+ borderColor: "neutral200",
364
+ background: "neutral150",
365
+ paddingLeft: "1px",
366
+ justifyContent: "center",
367
+ alignItems: "center",
368
+ children: /*#__PURE__*/ jsx(FileTypography, {
369
+ variant: "sigma",
370
+ textColor: "neutral600",
371
+ children: children
372
+ })
373
+ });
374
+ };
375
+ const FileTypography = styled(Typography)`
376
+ font-size: 0.9rem;
377
+ line-height: 0.9rem;
378
+ `;
379
+ const MediaMultiple = ({ content })=>{
380
+ return /*#__PURE__*/ jsx(Avatar.Group, {
381
+ children: content.map((file, index)=>{
382
+ const key = `${file.id}${index}`;
383
+ if (index === 3) {
384
+ const remainingFiles = `+${content.length - 3}`;
385
+ return /*#__PURE__*/ jsx(FileWrapper, {
386
+ children: remainingFiles
387
+ }, key);
388
+ }
389
+ if (index > 3) {
390
+ return null;
391
+ }
392
+ return /*#__PURE__*/ jsx(MediaSingle, {
393
+ ...file
394
+ }, key);
395
+ })
396
+ });
397
+ };
398
+
399
+ const RelationSingle = ({ mainField, content })=>{
400
+ return /*#__PURE__*/ jsx(Typography, {
401
+ maxWidth: "50rem",
402
+ textColor: "neutral800",
403
+ ellipsis: true,
404
+ children: getRelationLabel(content, mainField)
405
+ });
406
+ };
407
+ /**
408
+ * TODO: fix this component – tracking issue https://strapi-inc.atlassian.net/browse/CONTENT-2184
409
+ */ const RelationMultiple = ({ mainField, content, rowId, name })=>{
410
+ const { model } = useDoc();
411
+ const { formatMessage } = useIntl();
412
+ const { notifyStatus } = useNotifyAT();
413
+ const [isOpen, setIsOpen] = React.useState(false);
414
+ const [targetField] = name.split('.');
415
+ const { data, isLoading } = useGetRelationsQuery({
416
+ model,
417
+ id: rowId,
418
+ targetField
419
+ }, {
420
+ skip: !isOpen,
421
+ refetchOnMountOrArgChange: true
422
+ });
423
+ const contentCount = Array.isArray(content) ? content.length : content.count;
424
+ React.useEffect(()=>{
425
+ if (data) {
426
+ notifyStatus(formatMessage({
427
+ id: getTranslation('DynamicTable.relation-loaded'),
428
+ defaultMessage: 'Relations have been loaded'
429
+ }));
430
+ }
431
+ }, [
432
+ data,
433
+ formatMessage,
434
+ notifyStatus
435
+ ]);
436
+ return /*#__PURE__*/ jsxs(Menu.Root, {
437
+ onOpenChange: (isOpen)=>setIsOpen(isOpen),
438
+ children: [
439
+ /*#__PURE__*/ jsx(Menu.Trigger, {
440
+ onClick: (e)=>e.stopPropagation(),
441
+ children: /*#__PURE__*/ jsx(Typography, {
442
+ style: {
443
+ cursor: 'pointer'
444
+ },
445
+ textColor: "neutral800",
446
+ fontWeight: "regular",
447
+ children: contentCount > 0 ? formatMessage({
448
+ id: 'content-manager.containers.list.items',
449
+ defaultMessage: '{number} {number, plural, =0 {items} one {item} other {items}}'
450
+ }, {
451
+ number: contentCount
452
+ }) : '-'
453
+ })
454
+ }),
455
+ /*#__PURE__*/ jsxs(Menu.Content, {
456
+ children: [
457
+ isLoading && /*#__PURE__*/ jsx(Menu.Item, {
458
+ disabled: true,
459
+ children: /*#__PURE__*/ jsx(Loader, {
460
+ small: true,
461
+ children: formatMessage({
462
+ id: getTranslation('ListViewTable.relation-loading'),
463
+ defaultMessage: 'Relations are loading'
464
+ })
465
+ })
466
+ }),
467
+ data?.results && /*#__PURE__*/ jsxs(Fragment, {
468
+ children: [
469
+ data.results.map((entry)=>/*#__PURE__*/ jsx(Menu.Item, {
470
+ children: /*#__PURE__*/ jsx(Typography, {
471
+ maxWidth: "50rem",
472
+ ellipsis: true,
473
+ children: getRelationLabel(entry, mainField)
474
+ })
475
+ }, entry.documentId)),
476
+ data?.pagination && data?.pagination.total > 10 && /*#__PURE__*/ jsx(Menu.Item, {
477
+ "aria-disabled": true,
478
+ "aria-label": formatMessage({
479
+ id: getTranslation('ListViewTable.relation-more'),
480
+ defaultMessage: 'This relation contains more entities than displayed'
481
+ }),
482
+ children: /*#__PURE__*/ jsx(Typography, {
483
+ children: "…"
484
+ })
485
+ })
486
+ ]
487
+ })
488
+ ]
489
+ })
490
+ ]
491
+ });
492
+ };
493
+
494
+ const CellContent = ({ content, mainField, attribute, rowId, name })=>{
495
+ if (!hasContent(content, mainField, attribute)) {
496
+ return /*#__PURE__*/ jsx(Typography, {
497
+ textColor: "neutral800",
498
+ paddingLeft: attribute.type === ('relation') ? '1.6rem' : 0,
499
+ paddingRight: attribute.type === ('relation') ? '1.6rem' : 0,
500
+ children: "-"
501
+ });
502
+ }
503
+ switch(attribute.type){
504
+ case 'media':
505
+ if (!attribute.multiple) {
506
+ return /*#__PURE__*/ jsx(MediaSingle, {
507
+ ...content
508
+ });
509
+ }
510
+ return /*#__PURE__*/ jsx(MediaMultiple, {
511
+ content: content
512
+ });
513
+ case 'relation':
514
+ {
515
+ if (isSingleRelation(attribute.relation)) {
516
+ return /*#__PURE__*/ jsx(RelationSingle, {
517
+ mainField: mainField,
518
+ content: content
519
+ });
520
+ }
521
+ return /*#__PURE__*/ jsx(RelationMultiple, {
522
+ rowId: rowId,
523
+ mainField: mainField,
524
+ content: content,
525
+ name: name
526
+ });
527
+ }
528
+ case 'component':
529
+ if (attribute.repeatable) {
530
+ return /*#__PURE__*/ jsx(RepeatableComponent, {
531
+ mainField: mainField,
532
+ content: content
533
+ });
534
+ }
535
+ return /*#__PURE__*/ jsx(SingleComponent, {
536
+ mainField: mainField,
537
+ content: content
538
+ });
539
+ case 'string':
540
+ return /*#__PURE__*/ jsx(Tooltip, {
541
+ description: content,
542
+ children: /*#__PURE__*/ jsx(Typography, {
543
+ maxWidth: "30rem",
544
+ ellipsis: true,
545
+ textColor: "neutral800",
546
+ children: /*#__PURE__*/ jsx(CellValue, {
547
+ type: attribute.type,
548
+ value: content
549
+ })
550
+ })
551
+ });
552
+ default:
553
+ return /*#__PURE__*/ jsx(Typography, {
554
+ maxWidth: "30rem",
555
+ ellipsis: true,
556
+ textColor: "neutral800",
557
+ children: /*#__PURE__*/ jsx(CellValue, {
558
+ type: attribute.type,
559
+ value: content
560
+ })
561
+ });
562
+ }
563
+ };
564
+ const hasContent = (content, mainField, attribute)=>{
565
+ if (attribute.type === 'component') {
566
+ // Repeatable fields show the ID as fallback, in case the mainField
567
+ // doesn't have any content
568
+ if (attribute.repeatable || !mainField) {
569
+ return content?.length > 0;
570
+ }
571
+ const value = content?.[mainField.name];
572
+ // relations, media ... show the id as fallback
573
+ if (mainField.name === 'id' && ![
574
+ undefined,
575
+ null
576
+ ].includes(value)) {
577
+ return true;
578
+ }
579
+ return !isEmpty(value);
580
+ }
581
+ if (attribute.type === 'relation') {
582
+ if (isSingleRelation(attribute.relation)) {
583
+ return !isEmpty(content);
584
+ }
585
+ if (Array.isArray(content)) {
586
+ return content.length > 0;
587
+ }
588
+ return content?.count > 0;
589
+ }
590
+ /*
591
+ Biginteger fields need to be treated as strings, as `isNumber`
592
+ doesn't deal with them.
593
+ */ if ([
594
+ 'integer',
595
+ 'decimal',
596
+ 'float',
597
+ 'number'
598
+ ].includes(attribute.type)) {
599
+ return typeof content === 'number';
600
+ }
601
+ if (attribute.type === 'boolean') {
602
+ return content !== null;
603
+ }
604
+ return !isEmpty(content);
605
+ };
606
+ const isSingleRelation = (type)=>[
607
+ 'oneToOne',
608
+ 'manyToOne',
609
+ 'oneToOneMorph'
610
+ ].includes(type);
611
+
612
+ const ViewSettingsMenu = (props)=>{
613
+ const permissions = useTypedSelector((state)=>state.admin_app.permissions.contentManager?.collectionTypesConfigurations ?? []);
614
+ const [{ query }] = useQueryParams();
615
+ const { formatMessage } = useIntl();
616
+ const { allowedActions: { canConfigureView } } = useRBAC(permissions);
617
+ return /*#__PURE__*/ jsxs(Popover.Root, {
618
+ children: [
619
+ /*#__PURE__*/ jsx(Popover.Trigger, {
620
+ children: /*#__PURE__*/ jsx(IconButton, {
621
+ label: formatMessage({
622
+ id: 'components.ViewSettings.tooltip',
623
+ defaultMessage: 'View Settings'
624
+ }),
625
+ children: /*#__PURE__*/ jsx(Cog, {})
626
+ })
627
+ }),
628
+ /*#__PURE__*/ jsx(Popover.Content, {
629
+ side: "bottom",
630
+ align: "end",
631
+ sideOffset: 4,
632
+ children: /*#__PURE__*/ jsxs(Flex, {
633
+ alignItems: "stretch",
634
+ direction: "column",
635
+ padding: 3,
636
+ gap: 3,
637
+ children: [
638
+ canConfigureView ? /*#__PURE__*/ jsx(LinkButton, {
639
+ size: "S",
640
+ startIcon: /*#__PURE__*/ jsx(ListPlus, {}),
641
+ variant: "secondary",
642
+ tag: NavLink,
643
+ to: {
644
+ pathname: 'configurations/list',
645
+ search: query.plugins ? stringify({
646
+ plugins: query.plugins
647
+ }, {
648
+ encode: false
649
+ }) : ''
650
+ },
651
+ children: formatMessage({
652
+ id: 'app.links.configure-view',
653
+ defaultMessage: 'Configure the view'
654
+ })
655
+ }) : null,
656
+ /*#__PURE__*/ jsx(FieldPicker, {
657
+ ...props
658
+ })
659
+ ]
660
+ })
661
+ })
662
+ ]
663
+ });
664
+ };
665
+ const FieldPicker = ({ headers = [], resetHeaders, setHeaders })=>{
666
+ const { trackUsage } = useTracking();
667
+ const { formatMessage, locale } = useIntl();
668
+ const { schema, model } = useDoc();
669
+ const { list } = useDocumentLayout(model);
670
+ const formatter = useCollator(locale, {
671
+ sensitivity: 'base'
672
+ });
673
+ const attributes = schema?.attributes ?? {};
674
+ const columns = Object.keys(attributes).filter((name)=>checkIfAttributeIsDisplayable(attributes[name])).map((name)=>({
675
+ name,
676
+ label: list.metadatas[name]?.label ?? ''
677
+ })).sort((a, b)=>formatter.compare(a.label, b.label));
678
+ const handleChange = (name)=>{
679
+ trackUsage('didChangeDisplayedFields');
680
+ /**
681
+ * create an array of the new headers, if the new name exists it should be removed,
682
+ * otherwise it should be added
683
+ */ const newHeaders = headers.includes(name) ? headers.filter((header)=>header !== name) : [
684
+ ...headers,
685
+ name
686
+ ];
687
+ setHeaders(newHeaders);
688
+ };
689
+ const handleReset = ()=>{
690
+ resetHeaders();
691
+ };
692
+ return /*#__PURE__*/ jsxs(Flex, {
693
+ tag: "fieldset",
694
+ direction: "column",
695
+ alignItems: "stretch",
696
+ gap: 3,
697
+ borderWidth: 0,
698
+ maxHeight: '240px',
699
+ overflow: 'scroll',
700
+ children: [
701
+ /*#__PURE__*/ jsxs(Flex, {
702
+ justifyContent: "space-between",
703
+ children: [
704
+ /*#__PURE__*/ jsx(Typography, {
705
+ tag: "legend",
706
+ variant: "pi",
707
+ fontWeight: "bold",
708
+ children: formatMessage({
709
+ id: 'containers.list.displayedFields',
710
+ defaultMessage: 'Displayed fields'
711
+ })
712
+ }),
713
+ /*#__PURE__*/ jsx(TextButton, {
714
+ onClick: handleReset,
715
+ children: formatMessage({
716
+ id: 'app.components.Button.reset',
717
+ defaultMessage: 'Reset'
718
+ })
719
+ })
720
+ ]
721
+ }),
722
+ /*#__PURE__*/ jsx(Flex, {
723
+ direction: "column",
724
+ alignItems: "stretch",
725
+ children: columns.map((header)=>{
726
+ const isActive = headers.includes(header.name);
727
+ return /*#__PURE__*/ jsx(Flex, {
728
+ wrap: "wrap",
729
+ gap: 2,
730
+ background: isActive ? 'primary100' : 'transparent',
731
+ hasRadius: true,
732
+ padding: 2,
733
+ children: /*#__PURE__*/ jsx(Checkbox, {
734
+ onCheckedChange: ()=>handleChange(header.name),
735
+ checked: isActive,
736
+ name: header.name,
737
+ children: /*#__PURE__*/ jsx(Typography, {
738
+ fontSize: 1,
739
+ children: header.label
740
+ })
741
+ })
742
+ }, header.name);
743
+ })
744
+ })
745
+ ]
746
+ });
747
+ };
748
+
749
+ const { INJECT_COLUMN_IN_TABLE } = HOOKS;
750
+ /* -------------------------------------------------------------------------------------------------
751
+ * ListViewPage
752
+ * -----------------------------------------------------------------------------------------------*/ const LayoutsHeaderCustom = styled(Layouts.Header)`
753
+ overflow-wrap: anywhere;
754
+ `;
755
+ const ListViewPage = ()=>{
756
+ const { trackUsage } = useTracking();
757
+ const navigate = useNavigate();
758
+ const { formatMessage } = useIntl();
759
+ const { toggleNotification } = useNotification();
760
+ const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);
761
+ const { collectionType, model, schema } = useDoc();
762
+ const { list } = useDocumentLayout(model);
763
+ const [displayedHeaders, setDisplayedHeaders] = React.useState([]);
764
+ const listLayout = usePrev(list.layout);
765
+ React.useEffect(()=>{
766
+ /**
767
+ * ONLY update the displayedHeaders if the document
768
+ * layout has actually changed in value.
769
+ */ if (!isEqual(listLayout, list.layout)) {
770
+ setDisplayedHeaders(list.layout);
771
+ }
772
+ }, [
773
+ list.layout,
774
+ listLayout
775
+ ]);
776
+ const handleSetHeaders = (headers)=>{
777
+ setDisplayedHeaders(convertListLayoutToFieldLayouts(headers, schema.attributes, list.metadatas));
778
+ };
779
+ const [{ query }] = useQueryParams({
780
+ page: '1',
781
+ pageSize: list.settings.pageSize.toString(),
782
+ sort: list.settings.defaultSortBy ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}` : ''
783
+ });
784
+ const params = React.useMemo(()=>buildValidParams(query), [
785
+ query
786
+ ]);
787
+ const { data, error, isFetching } = useGetAllDocumentsQuery({
788
+ model,
789
+ params
790
+ });
791
+ /**
792
+ * If the API returns an error, display a notification
793
+ */ React.useEffect(()=>{
794
+ if (error) {
795
+ toggleNotification({
796
+ type: 'danger',
797
+ message: formatAPIError(error)
798
+ });
799
+ }
800
+ }, [
801
+ error,
802
+ formatAPIError,
803
+ toggleNotification
804
+ ]);
805
+ const { results = [], pagination } = data ?? {};
806
+ React.useEffect(()=>{
807
+ if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {
808
+ navigate({
809
+ search: stringify({
810
+ ...query,
811
+ page: pagination.pageCount
812
+ })
813
+ }, {
814
+ replace: true
815
+ });
816
+ }
817
+ }, [
818
+ pagination,
819
+ formatMessage,
820
+ query,
821
+ navigate
822
+ ]);
823
+ const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate })=>({
824
+ canCreate
825
+ }));
826
+ const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall })=>runHookWaterfall);
827
+ /**
828
+ * Run the waterfall and then inject our additional table headers.
829
+ */ const tableHeaders = React.useMemo(()=>{
830
+ const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {
831
+ displayedHeaders,
832
+ layout: list
833
+ });
834
+ const formattedHeaders = headers.displayedHeaders.map((header)=>{
835
+ /**
836
+ * When the header label is a string, it is an attribute on the current content-type:
837
+ * Use the attribute name value to compute the translation.
838
+ * Otherwise, it should be a translation object coming from a plugin that injects into the table (ie i18n, content-releases, review-workflows):
839
+ * Use the translation object as is.
840
+ */ const translation = typeof header.label === 'string' ? {
841
+ id: `content-manager.content-types.${model}.${header.name}`,
842
+ defaultMessage: header.label
843
+ } : header.label;
844
+ return {
845
+ ...header,
846
+ label: formatMessage(translation),
847
+ name: `${header.name}${header.mainField?.name ? `.${header.mainField.name}` : ''}`
848
+ };
849
+ });
850
+ if (schema?.options?.draftAndPublish) {
851
+ formattedHeaders.push({
852
+ attribute: {
853
+ type: 'custom'
854
+ },
855
+ name: 'status',
856
+ label: formatMessage({
857
+ id: getTranslation(`containers.list.table-headers.status`),
858
+ defaultMessage: 'status'
859
+ }),
860
+ searchable: false,
861
+ sortable: false
862
+ });
863
+ }
864
+ return formattedHeaders;
865
+ }, [
866
+ displayedHeaders,
867
+ formatMessage,
868
+ list,
869
+ runHookWaterfall,
870
+ schema?.options?.draftAndPublish,
871
+ model
872
+ ]);
873
+ if (isFetching) {
874
+ return /*#__PURE__*/ jsx(Page.Loading, {});
875
+ }
876
+ if (error) {
877
+ return /*#__PURE__*/ jsx(Page.Error, {});
878
+ }
879
+ const contentTypeTitle = schema?.info.displayName ? formatMessage({
880
+ id: schema.info.displayName,
881
+ defaultMessage: schema.info.displayName
882
+ }) : formatMessage({
883
+ id: 'content-manager.containers.untitled',
884
+ defaultMessage: 'Untitled'
885
+ });
886
+ const handleRowClick = (id)=>()=>{
887
+ trackUsage('willEditEntryFromList');
888
+ navigate({
889
+ pathname: id.toString(),
890
+ search: stringify({
891
+ plugins: query.plugins
892
+ })
893
+ });
894
+ };
895
+ return /*#__PURE__*/ jsxs(Page.Main, {
896
+ children: [
897
+ /*#__PURE__*/ jsx(Page.Title, {
898
+ children: `${contentTypeTitle}`
899
+ }),
900
+ /*#__PURE__*/ jsx(LayoutsHeaderCustom, {
901
+ primaryAction: canCreate ? /*#__PURE__*/ jsx(CreateButton, {}) : null,
902
+ subtitle: formatMessage({
903
+ id: getTranslation('pages.ListView.header-subtitle'),
904
+ defaultMessage: '{number, plural, =0 {# entries} one {# entry} other {# entries}} found'
905
+ }, {
906
+ number: pagination?.total
907
+ }),
908
+ title: contentTypeTitle,
909
+ navigationAction: /*#__PURE__*/ jsx(BackButton, {})
910
+ }),
911
+ /*#__PURE__*/ jsx(Layouts.Action, {
912
+ endActions: /*#__PURE__*/ jsxs(Fragment, {
913
+ children: [
914
+ /*#__PURE__*/ jsx(InjectionZone, {
915
+ area: "listView.actions"
916
+ }),
917
+ /*#__PURE__*/ jsx(ViewSettingsMenu, {
918
+ setHeaders: handleSetHeaders,
919
+ resetHeaders: ()=>setDisplayedHeaders(list.layout),
920
+ headers: displayedHeaders.map((header)=>header.name)
921
+ })
922
+ ]
923
+ }),
924
+ startActions: /*#__PURE__*/ jsxs(Fragment, {
925
+ children: [
926
+ list.settings.searchable && /*#__PURE__*/ jsx(SearchInput, {
927
+ disabled: results.length === 0,
928
+ label: formatMessage({
929
+ id: 'app.component.search.label',
930
+ defaultMessage: 'Search for {target}'
931
+ }, {
932
+ target: contentTypeTitle
933
+ }),
934
+ placeholder: formatMessage({
935
+ id: 'global.search',
936
+ defaultMessage: 'Search'
937
+ }),
938
+ trackedEvent: "didSearch"
939
+ }),
940
+ list.settings.filterable && schema ? /*#__PURE__*/ jsx(FiltersImpl, {
941
+ disabled: results.length === 0,
942
+ schema: schema
943
+ }) : null
944
+ ]
945
+ })
946
+ }),
947
+ /*#__PURE__*/ jsx(Layouts.Content, {
948
+ children: /*#__PURE__*/ jsxs(Flex, {
949
+ gap: 4,
950
+ direction: "column",
951
+ alignItems: "stretch",
952
+ children: [
953
+ /*#__PURE__*/ jsxs(Table.Root, {
954
+ rows: results,
955
+ headers: tableHeaders,
956
+ isLoading: isFetching,
957
+ children: [
958
+ /*#__PURE__*/ jsx(TableActionsBar, {}),
959
+ /*#__PURE__*/ jsxs(Table.Content, {
960
+ children: [
961
+ /*#__PURE__*/ jsxs(Table.Head, {
962
+ children: [
963
+ /*#__PURE__*/ jsx(Table.HeaderCheckboxCell, {}),
964
+ tableHeaders.map((header)=>/*#__PURE__*/ jsx(Table.HeaderCell, {
965
+ ...header
966
+ }, header.name))
967
+ ]
968
+ }),
969
+ /*#__PURE__*/ jsx(Table.Loading, {}),
970
+ /*#__PURE__*/ jsx(Table.Empty, {
971
+ action: canCreate ? /*#__PURE__*/ jsx(CreateButton, {
972
+ variant: "secondary"
973
+ }) : null
974
+ }),
975
+ /*#__PURE__*/ jsx(Table.Body, {
976
+ children: results.map((row)=>{
977
+ return /*#__PURE__*/ jsxs(Table.Row, {
978
+ cursor: "pointer",
979
+ onClick: handleRowClick(row.documentId),
980
+ children: [
981
+ /*#__PURE__*/ jsx(Table.CheckboxCell, {
982
+ id: row.id
983
+ }),
984
+ tableHeaders.map(({ cellFormatter, ...header })=>{
985
+ if (header.name === 'status') {
986
+ const { status } = row;
987
+ return /*#__PURE__*/ jsx(Table.Cell, {
988
+ children: /*#__PURE__*/ jsx(DocumentStatus, {
989
+ status: status,
990
+ maxWidth: 'min-content'
991
+ })
992
+ }, header.name);
993
+ }
994
+ if ([
995
+ 'createdBy',
996
+ 'updatedBy'
997
+ ].includes(header.name.split('.')[0])) {
998
+ // Display the users full name
999
+ // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)
1000
+ // In this case, we display a dash
1001
+ return /*#__PURE__*/ jsx(Table.Cell, {
1002
+ children: /*#__PURE__*/ jsx(Typography, {
1003
+ textColor: "neutral800",
1004
+ children: row[header.name.split('.')[0]] ? getDisplayName(row[header.name.split('.')[0]]) : '-'
1005
+ })
1006
+ }, header.name);
1007
+ }
1008
+ if (typeof cellFormatter === 'function') {
1009
+ return /*#__PURE__*/ jsx(Table.Cell, {
1010
+ children: cellFormatter(row, header, {
1011
+ collectionType,
1012
+ model
1013
+ })
1014
+ }, header.name);
1015
+ }
1016
+ return /*#__PURE__*/ jsx(Table.Cell, {
1017
+ children: /*#__PURE__*/ jsx(CellContent, {
1018
+ content: row[header.name.split('.')[0]],
1019
+ rowId: row.documentId,
1020
+ ...header
1021
+ })
1022
+ }, header.name);
1023
+ }),
1024
+ /*#__PURE__*/ jsx(ActionsCell, {
1025
+ onClick: (e)=>e.stopPropagation(),
1026
+ children: /*#__PURE__*/ jsx(TableActions, {
1027
+ document: row
1028
+ })
1029
+ })
1030
+ ]
1031
+ }, row.id);
1032
+ })
1033
+ })
1034
+ ]
1035
+ })
1036
+ ]
1037
+ }),
1038
+ /*#__PURE__*/ jsxs(Pagination.Root, {
1039
+ ...pagination,
1040
+ onPageSizeChange: ()=>trackUsage('willChangeNumberOfEntriesPerPage'),
1041
+ children: [
1042
+ /*#__PURE__*/ jsx(Pagination.PageSize, {}),
1043
+ /*#__PURE__*/ jsx(Pagination.Links, {})
1044
+ ]
1045
+ })
1046
+ ]
1047
+ })
1048
+ })
1049
+ ]
1050
+ });
1051
+ };
1052
+ const ActionsCell = styled(Table.Cell)`
1053
+ display: flex;
1054
+ justify-content: flex-end;
1055
+ `;
1056
+ /* -------------------------------------------------------------------------------------------------
1057
+ * TableActionsBar
1058
+ * -----------------------------------------------------------------------------------------------*/ const TableActionsBar = ()=>{
1059
+ const selectRow = useTable('TableActionsBar', (state)=>state.selectRow);
1060
+ const [{ query }] = useQueryParams();
1061
+ const locale = query?.plugins?.i18n?.locale;
1062
+ const prevLocale = usePrev(locale);
1063
+ // TODO: find a better way to reset the selected rows when the locale changes across all the app
1064
+ React.useEffect(()=>{
1065
+ if (prevLocale !== locale) {
1066
+ selectRow([]);
1067
+ }
1068
+ }, [
1069
+ selectRow,
1070
+ prevLocale,
1071
+ locale
1072
+ ]);
1073
+ return /*#__PURE__*/ jsx(Table.ActionBar, {
1074
+ children: /*#__PURE__*/ jsx(BulkActionsRenderer, {})
1075
+ });
1076
+ };
1077
+ const CreateButton = ({ variant })=>{
1078
+ const { formatMessage } = useIntl();
1079
+ const { trackUsage } = useTracking();
1080
+ const [{ query }] = useQueryParams();
1081
+ return /*#__PURE__*/ jsx(Button, {
1082
+ variant: variant,
1083
+ tag: Link,
1084
+ onClick: ()=>{
1085
+ trackUsage('willCreateEntry', {
1086
+ status: 'draft'
1087
+ });
1088
+ },
1089
+ startIcon: /*#__PURE__*/ jsx(Plus, {}),
1090
+ style: {
1091
+ textDecoration: 'none'
1092
+ },
1093
+ to: {
1094
+ pathname: 'create',
1095
+ search: stringify({
1096
+ plugins: query.plugins
1097
+ })
1098
+ },
1099
+ minWidth: "max-content",
1100
+ marginLeft: 2,
1101
+ children: formatMessage({
1102
+ id: getTranslation('HeaderLayout.button.label-add-entry'),
1103
+ defaultMessage: 'Create new entry'
1104
+ })
1105
+ });
1106
+ };
1107
+ /* -------------------------------------------------------------------------------------------------
1108
+ * ProtectedListViewPage
1109
+ * -----------------------------------------------------------------------------------------------*/ const ProtectedListViewPage = ()=>{
1110
+ const { slug = '' } = useParams();
1111
+ const { permissions = [], isLoading, error } = useRBAC(PERMISSIONS.map((action)=>({
1112
+ action,
1113
+ subject: slug
1114
+ })));
1115
+ if (isLoading) {
1116
+ return /*#__PURE__*/ jsx(Page.Loading, {});
1117
+ }
1118
+ if (error || !slug) {
1119
+ return /*#__PURE__*/ jsx(Page.Error, {});
1120
+ }
1121
+ return /*#__PURE__*/ jsx(Page.Protect, {
1122
+ permissions: permissions,
1123
+ children: ({ permissions })=>/*#__PURE__*/ jsx(DocumentRBAC, {
1124
+ permissions: permissions,
1125
+ children: /*#__PURE__*/ jsx(ListViewPage, {})
1126
+ })
1127
+ });
1128
+ };
1129
+
1130
+ export { ListViewPage, ProtectedListViewPage };
1131
+ //# sourceMappingURL=ListViewPage-7RTPaDs2.mjs.map