@strapi/content-manager 5.9.0 → 5.10.1

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