@strapi/admin 5.4.1 → 5.5.0

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 (382) hide show
  1. package/dist/_internal.js.map +1 -1
  2. package/dist/_internal.mjs.map +1 -1
  3. package/dist/admin/{AdminSeatInfo-BtXH5sC-.mjs → AdminSeatInfo-BaUlvJzw.mjs} +4 -4
  4. package/dist/admin/{AdminSeatInfo-BtXH5sC-.mjs.map → AdminSeatInfo-BaUlvJzw.mjs.map} +1 -1
  5. package/dist/admin/{AdminSeatInfo-DJpF8PS1.js → AdminSeatInfo-YZSkpqTQ.js} +4 -4
  6. package/dist/admin/{AdminSeatInfo-DJpF8PS1.js.map → AdminSeatInfo-YZSkpqTQ.js.map} +1 -1
  7. package/dist/admin/{ApplicationInfoPage-C9NiLWTS.js → ApplicationInfoPage-ClnQrMNQ.js} +5 -5
  8. package/dist/admin/{ApplicationInfoPage-C9NiLWTS.js.map → ApplicationInfoPage-ClnQrMNQ.js.map} +1 -1
  9. package/dist/admin/{ApplicationInfoPage-683CGPri.mjs → ApplicationInfoPage-Ks5SLUGu.mjs} +5 -5
  10. package/dist/admin/{ApplicationInfoPage-683CGPri.mjs.map → ApplicationInfoPage-Ks5SLUGu.mjs.map} +1 -1
  11. package/dist/admin/{AuthResponse-BKpQdQAD.mjs → AuthResponse-8JdghoaK.mjs} +2 -2
  12. package/dist/admin/{AuthResponse-BKpQdQAD.mjs.map → AuthResponse-8JdghoaK.mjs.map} +1 -1
  13. package/dist/admin/{AuthResponse-tnFAm9fD.js → AuthResponse-B8hxRyao.js} +2 -2
  14. package/dist/admin/{AuthResponse-tnFAm9fD.js.map → AuthResponse-B8hxRyao.js.map} +1 -1
  15. package/dist/admin/{AuthenticatedLayout-QjRy82SQ.mjs → AuthenticatedLayout-Cg52L7aR.mjs} +17 -17
  16. package/dist/admin/{AuthenticatedLayout-QjRy82SQ.mjs.map → AuthenticatedLayout-Cg52L7aR.mjs.map} +1 -1
  17. package/dist/admin/{AuthenticatedLayout-B0W-Ppik.js → AuthenticatedLayout-DsJdSL_P.js} +17 -17
  18. package/dist/admin/{AuthenticatedLayout-B0W-Ppik.js.map → AuthenticatedLayout-DsJdSL_P.js.map} +1 -1
  19. package/dist/admin/{CreateActionEE-BAbsDj_W.js → CreateActionEE-BnGBSrSz.js} +2 -2
  20. package/dist/admin/{CreateActionEE-BAbsDj_W.js.map → CreateActionEE-BnGBSrSz.js.map} +1 -1
  21. package/dist/admin/{CreateActionEE-1i1Hn9yC.mjs → CreateActionEE-Bz3zvzzy.mjs} +2 -2
  22. package/dist/admin/{CreateActionEE-1i1Hn9yC.mjs.map → CreateActionEE-Bz3zvzzy.mjs.map} +1 -1
  23. package/dist/admin/{CreatePage-CQ_PSjfy.js → CreatePage-BiPSXJ-5.js} +5 -5
  24. package/dist/admin/{CreatePage-CQ_PSjfy.js.map → CreatePage-BiPSXJ-5.js.map} +1 -1
  25. package/dist/admin/{CreatePage-DdnSea92.js → CreatePage-C1_fxsS6.js} +3 -3
  26. package/dist/admin/{CreatePage-DdnSea92.js.map → CreatePage-C1_fxsS6.js.map} +1 -1
  27. package/dist/admin/{CreatePage-C4PU0AHF.mjs → CreatePage-CY7csJBb.mjs} +3 -3
  28. package/dist/admin/{CreatePage-C4PU0AHF.mjs.map → CreatePage-CY7csJBb.mjs.map} +1 -1
  29. package/dist/admin/{CreatePage-B5cgJ0x4.mjs → CreatePage-hAU7MYMO.mjs} +5 -5
  30. package/dist/admin/{CreatePage-B5cgJ0x4.mjs.map → CreatePage-hAU7MYMO.mjs.map} +1 -1
  31. package/dist/admin/{CreateView-CAFMGwXw.mjs → CreateView-BaOGTZm4.mjs} +3 -3
  32. package/dist/admin/{CreateView-CAFMGwXw.mjs.map → CreateView-BaOGTZm4.mjs.map} +1 -1
  33. package/dist/admin/{CreateView-LWgbJBGg.mjs → CreateView-DCx5JOxR.mjs} +3 -3
  34. package/dist/admin/{CreateView-LWgbJBGg.mjs.map → CreateView-DCx5JOxR.mjs.map} +1 -1
  35. package/dist/admin/{CreateView-r2yuWZ7_.js → CreateView-DndCRvYM.js} +3 -3
  36. package/dist/admin/{CreateView-r2yuWZ7_.js.map → CreateView-DndCRvYM.js.map} +1 -1
  37. package/dist/admin/{CreateView-BkjGFO1q.js → CreateView-EXtz_hGf.js} +3 -3
  38. package/dist/admin/{CreateView-BkjGFO1q.js.map → CreateView-EXtz_hGf.js.map} +1 -1
  39. package/dist/admin/{EditPage-DnvQHl4z.js → EditPage-BFAXkHHw.js} +7 -7
  40. package/dist/admin/{EditPage-DnvQHl4z.js.map → EditPage-BFAXkHHw.js.map} +1 -1
  41. package/dist/admin/{EditPage-CSQazVET.js → EditPage-ChQWSaBb.js} +6 -6
  42. package/dist/admin/{EditPage-CSQazVET.js.map → EditPage-ChQWSaBb.js.map} +1 -1
  43. package/dist/admin/{EditPage-D144CUxd.js → EditPage-Colh61BU.js} +8 -8
  44. package/dist/admin/{EditPage-D144CUxd.js.map → EditPage-Colh61BU.js.map} +1 -1
  45. package/dist/admin/{EditPage-DkK2CcjP.mjs → EditPage-CouwHHq5.mjs} +6 -6
  46. package/dist/admin/{EditPage-DkK2CcjP.mjs.map → EditPage-CouwHHq5.mjs.map} +1 -1
  47. package/dist/admin/{EditPage-C3OJuYxY.mjs → EditPage-CxBdyVKZ.mjs} +7 -7
  48. package/dist/admin/{EditPage-C3OJuYxY.mjs.map → EditPage-CxBdyVKZ.mjs.map} +1 -1
  49. package/dist/admin/{EditPage-Din0xCNi.mjs → EditPage-DhzUBzXn.mjs} +8 -8
  50. package/dist/admin/{EditPage-Din0xCNi.mjs.map → EditPage-DhzUBzXn.mjs.map} +1 -1
  51. package/dist/admin/{EditView-CbfTBtQA.mjs → EditView-DViZU0kt.mjs} +6 -6
  52. package/dist/admin/{EditView-CbfTBtQA.mjs.map → EditView-DViZU0kt.mjs.map} +1 -1
  53. package/dist/admin/{EditView-BxoYN0cp.js → EditView-_x-Ox_M_.js} +6 -6
  54. package/dist/admin/{EditView-BxoYN0cp.js.map → EditView-_x-Ox_M_.js.map} +1 -1
  55. package/dist/admin/{EditViewPage-Ds7H3Ib6.mjs → EditViewPage-BJRqDkwj.mjs} +6 -6
  56. package/dist/admin/{EditViewPage-Ds7H3Ib6.mjs.map → EditViewPage-BJRqDkwj.mjs.map} +1 -1
  57. package/dist/admin/{EditViewPage-BgUsc1vI.js → EditViewPage-CNcABIQh.js} +6 -6
  58. package/dist/admin/{EditViewPage-BgUsc1vI.js.map → EditViewPage-CNcABIQh.js.map} +1 -1
  59. package/dist/admin/{EventsTable-B9ddYPQx.js → EventsTable-BmLpsREo.js} +2 -2
  60. package/dist/admin/{EventsTable-B9ddYPQx.js.map → EventsTable-BmLpsREo.js.map} +1 -1
  61. package/dist/admin/{EventsTable-VBW6pGYW.mjs → EventsTable-CPOsecQe.mjs} +2 -2
  62. package/dist/admin/{EventsTable-VBW6pGYW.mjs.map → EventsTable-CPOsecQe.mjs.map} +1 -1
  63. package/dist/admin/{HomePage-_UCA75ne.mjs → HomePage-BLO4BMS9.mjs} +3 -3
  64. package/dist/admin/{HomePage-_UCA75ne.mjs.map → HomePage-BLO4BMS9.mjs.map} +1 -1
  65. package/dist/admin/{HomePage-BrGErg0o.mjs → HomePage-D3Uf6UN4.mjs} +5 -5
  66. package/dist/admin/{HomePage-BrGErg0o.mjs.map → HomePage-D3Uf6UN4.mjs.map} +1 -1
  67. package/dist/admin/{HomePage-wT6KNByy.js → HomePage-DUBrDS1c.js} +3 -3
  68. package/dist/admin/{HomePage-wT6KNByy.js.map → HomePage-DUBrDS1c.js.map} +1 -1
  69. package/dist/admin/{HomePage-uvzslDAc.js → HomePage-K7dp73m_.js} +5 -5
  70. package/dist/admin/{HomePage-uvzslDAc.js.map → HomePage-K7dp73m_.js.map} +1 -1
  71. package/dist/admin/{InstalledPlugins-B4iKWlES.mjs → InstalledPlugins-ByaKVrZv.mjs} +4 -4
  72. package/dist/admin/{InstalledPlugins-B4iKWlES.mjs.map → InstalledPlugins-ByaKVrZv.mjs.map} +1 -1
  73. package/dist/admin/{InstalledPlugins-q6iHMp8e.js → InstalledPlugins-G0h9zQEW.js} +4 -4
  74. package/dist/admin/{InstalledPlugins-q6iHMp8e.js.map → InstalledPlugins-G0h9zQEW.js.map} +1 -1
  75. package/dist/admin/{Layout-DGeCkbBf.js → Layout-BLVFaprL.js} +5 -5
  76. package/dist/admin/{Layout-DGeCkbBf.js.map → Layout-BLVFaprL.js.map} +1 -1
  77. package/dist/admin/{Layout-CaNlgN5n.mjs → Layout-CbrrMtL2.mjs} +5 -5
  78. package/dist/admin/{Layout-CaNlgN5n.mjs.map → Layout-CbrrMtL2.mjs.map} +1 -1
  79. package/dist/admin/{ListPage-DbHPSzvx.mjs → ListPage-4M1uu6wf.mjs} +4 -4
  80. package/dist/admin/{ListPage-DbHPSzvx.mjs.map → ListPage-4M1uu6wf.mjs.map} +1 -1
  81. package/dist/admin/{ListPage-CCnBCVJc.js → ListPage-78TTyjRW.js} +6 -6
  82. package/dist/admin/{ListPage-CCnBCVJc.js.map → ListPage-78TTyjRW.js.map} +1 -1
  83. package/dist/admin/{ListPage-CocqTTCj.mjs → ListPage-BIUdwz07.mjs} +4 -4
  84. package/dist/admin/{ListPage-CocqTTCj.mjs.map → ListPage-BIUdwz07.mjs.map} +1 -1
  85. package/dist/admin/{ListPage-B7z3qFyl.js → ListPage-BSTrnVTi.js} +4 -4
  86. package/dist/admin/{ListPage-B7z3qFyl.js.map → ListPage-BSTrnVTi.js.map} +1 -1
  87. package/dist/admin/{ListPage-D5H8f2M-.mjs → ListPage-BZ40sST-.mjs} +3 -3
  88. package/dist/admin/{ListPage-D5H8f2M-.mjs.map → ListPage-BZ40sST-.mjs.map} +1 -1
  89. package/dist/admin/{ListPage-fK1xgGBO.mjs → ListPage-ChU9V3B9.mjs} +6 -6
  90. package/dist/admin/{ListPage-fK1xgGBO.mjs.map → ListPage-ChU9V3B9.mjs.map} +1 -1
  91. package/dist/admin/{ListPage-DDnATmBl.js → ListPage-CkTkRZ-v.js} +4 -4
  92. package/dist/admin/{ListPage-DDnATmBl.js.map → ListPage-CkTkRZ-v.js.map} +1 -1
  93. package/dist/admin/{ListPage-cZ7G9ifV.mjs → ListPage-Di3HlXje.mjs} +8 -8
  94. package/dist/admin/{ListPage-cZ7G9ifV.mjs.map → ListPage-Di3HlXje.mjs.map} +1 -1
  95. package/dist/admin/{ListPage-Dhe2wcgV.js → ListPage-ZNh7krfj.js} +8 -8
  96. package/dist/admin/{ListPage-Dhe2wcgV.js.map → ListPage-ZNh7krfj.js.map} +1 -1
  97. package/dist/admin/{ListPage-Cl2tgcBV.js → ListPage-izEi5h_a.js} +3 -3
  98. package/dist/admin/{ListPage-Cl2tgcBV.js.map → ListPage-izEi5h_a.js.map} +1 -1
  99. package/dist/admin/{ListView-CDBJ6KxG.mjs → ListView-C8TDoKgA.mjs} +5 -5
  100. package/dist/admin/{ListView-CDBJ6KxG.mjs.map → ListView-C8TDoKgA.mjs.map} +1 -1
  101. package/dist/admin/{ListView-Uma8Kh0Y.js → ListView-DGGmdLTN.js} +5 -5
  102. package/dist/admin/{ListView-Uma8Kh0Y.js.map → ListView-DGGmdLTN.js.map} +1 -1
  103. package/dist/admin/{ListView-BAOu3t3r.js → ListView-_kkmfYba.js} +5 -5
  104. package/dist/admin/{ListView-BAOu3t3r.js.map → ListView-_kkmfYba.js.map} +1 -1
  105. package/dist/admin/{ListView-DCHh8Z9Q.mjs → ListView-oxxjGoRq.mjs} +5 -5
  106. package/dist/admin/{ListView-DCHh8Z9Q.mjs.map → ListView-oxxjGoRq.mjs.map} +1 -1
  107. package/dist/admin/{Login-CIgQWbpY.js → Login-BxcGmG9I.js} +3 -3
  108. package/dist/admin/{Login-CIgQWbpY.js.map → Login-BxcGmG9I.js.map} +1 -1
  109. package/dist/admin/{Login-BMNixw-B.mjs → Login-D52-chj8.mjs} +3 -3
  110. package/dist/admin/{Login-BMNixw-B.mjs.map → Login-D52-chj8.mjs.map} +1 -1
  111. package/dist/admin/{MagicLinkEE-DXVettXy.mjs → MagicLinkEE-BHAvK52d.mjs} +3 -3
  112. package/dist/admin/{MagicLinkEE-DXVettXy.mjs.map → MagicLinkEE-BHAvK52d.mjs.map} +1 -1
  113. package/dist/admin/{MagicLinkEE-Cfm5HTYA.js → MagicLinkEE-rP1-20h_.js} +3 -3
  114. package/dist/admin/{MagicLinkEE-Cfm5HTYA.js.map → MagicLinkEE-rP1-20h_.js.map} +1 -1
  115. package/dist/admin/{MarketplacePage-ybCMvYyZ.js → MarketplacePage-B5xSZ82i.js} +3 -3
  116. package/dist/admin/{MarketplacePage-ybCMvYyZ.js.map → MarketplacePage-B5xSZ82i.js.map} +1 -1
  117. package/dist/admin/{MarketplacePage-9oBw1vCF.mjs → MarketplacePage-DnRo5FVA.mjs} +3 -3
  118. package/dist/admin/{MarketplacePage-9oBw1vCF.mjs.map → MarketplacePage-DnRo5FVA.mjs.map} +1 -1
  119. package/dist/admin/ModalForm-B9SUkQ1l.mjs.map +1 -1
  120. package/dist/admin/ModalForm-DukjfMMw.js.map +1 -1
  121. package/dist/admin/Ornaments-BFThxr2U.mjs.map +1 -1
  122. package/dist/admin/Ornaments-CID1aaLv.js.map +1 -1
  123. package/dist/admin/{Permissions-D-z4OQkJ.mjs → Permissions-CuCHl6U_.mjs} +45 -35
  124. package/dist/admin/Permissions-CuCHl6U_.mjs.map +1 -0
  125. package/dist/admin/{Permissions-DJGQDnx2.js → Permissions-DII2emCe.js} +45 -35
  126. package/dist/admin/Permissions-DII2emCe.js.map +1 -0
  127. package/dist/admin/{PrivateRoute-C1dP5ye6.js → PrivateRoute-D7Y029Yb.js} +2 -2
  128. package/dist/admin/{PrivateRoute-C1dP5ye6.js.map → PrivateRoute-D7Y029Yb.js.map} +1 -1
  129. package/dist/admin/{PrivateRoute-gjOsMUaF.mjs → PrivateRoute-DapCxuPg.mjs} +2 -2
  130. package/dist/admin/{PrivateRoute-gjOsMUaF.mjs.map → PrivateRoute-DapCxuPg.mjs.map} +1 -1
  131. package/dist/admin/{ProfilePage-iJfFC8iM.js → ProfilePage-Dkr09vJx.js} +5 -5
  132. package/dist/admin/{ProfilePage-iJfFC8iM.js.map → ProfilePage-Dkr09vJx.js.map} +1 -1
  133. package/dist/admin/{ProfilePage-Dye2XFUg.mjs → ProfilePage-ufhuFD88.mjs} +5 -5
  134. package/dist/admin/{ProfilePage-Dye2XFUg.mjs.map → ProfilePage-ufhuFD88.mjs.map} +1 -1
  135. package/dist/admin/{PurchaseAuditLogs-Cm4FhsMb.mjs → PurchaseAuditLogs-BZvdCbs2.mjs} +3 -3
  136. package/dist/admin/{PurchaseAuditLogs-Cm4FhsMb.mjs.map → PurchaseAuditLogs-BZvdCbs2.mjs.map} +1 -1
  137. package/dist/admin/{PurchaseAuditLogs-D01OAXZ1.js → PurchaseAuditLogs-L2z8_K8T.js} +3 -3
  138. package/dist/admin/{PurchaseAuditLogs-D01OAXZ1.js.map → PurchaseAuditLogs-L2z8_K8T.js.map} +1 -1
  139. package/dist/admin/PurchaseContentHistory-BZigpAbD.mjs +52 -0
  140. package/dist/admin/PurchaseContentHistory-BZigpAbD.mjs.map +1 -0
  141. package/dist/admin/PurchaseContentHistory-DaQnUXhI.js +56 -0
  142. package/dist/admin/PurchaseContentHistory-DaQnUXhI.js.map +1 -0
  143. package/dist/admin/{PurchaseSingleSignOn-DuP_lPo5.js → PurchaseSingleSignOn-BJ0_Yr9o.js} +3 -3
  144. package/dist/admin/PurchaseSingleSignOn-BJ0_Yr9o.js.map +1 -0
  145. package/dist/admin/{PurchaseSingleSignOn-EcMNl-Fp.mjs → PurchaseSingleSignOn-DOIzr_pq.mjs} +3 -3
  146. package/dist/admin/PurchaseSingleSignOn-DOIzr_pq.mjs.map +1 -0
  147. package/dist/admin/SSOProviders-BD7LHrkI.mjs.map +1 -1
  148. package/dist/admin/SSOProviders-nCeEldEQ.js.map +1 -1
  149. package/dist/admin/{SelectRoles-CiXoM32h.mjs → SelectRoles-B9s9k4YX.mjs} +4 -4
  150. package/dist/admin/{SelectRoles-CiXoM32h.mjs.map → SelectRoles-B9s9k4YX.mjs.map} +1 -1
  151. package/dist/admin/{SelectRoles-DLKg2oSV.js → SelectRoles-DNO41U4M.js} +4 -4
  152. package/dist/admin/{SelectRoles-DLKg2oSV.js.map → SelectRoles-DNO41U4M.js.map} +1 -1
  153. package/dist/admin/{SingleSignOnPage-CiDC2Nqn.mjs → SingleSignOnPage-C5wlFrDd.mjs} +5 -5
  154. package/dist/admin/{SingleSignOnPage-CiDC2Nqn.mjs.map → SingleSignOnPage-C5wlFrDd.mjs.map} +1 -1
  155. package/dist/admin/{SingleSignOnPage-yeUvuSTO.js → SingleSignOnPage-pGFzuYF4.js} +5 -5
  156. package/dist/admin/{SingleSignOnPage-yeUvuSTO.js.map → SingleSignOnPage-pGFzuYF4.js.map} +1 -1
  157. package/dist/admin/{Table-kHROpxjl.mjs → Table-IeOJZ1ui.mjs} +3 -3
  158. package/dist/admin/{Table-kHROpxjl.mjs.map → Table-IeOJZ1ui.mjs.map} +1 -1
  159. package/dist/admin/{Table-lxKdXhV9.js → Table-d9xm6QPh.js} +3 -3
  160. package/dist/admin/{Table-lxKdXhV9.js.map → Table-d9xm6QPh.js.map} +1 -1
  161. package/dist/admin/{Theme-K6zNL3JT.js → Theme-CV_l77KL.js} +2 -2
  162. package/dist/admin/{Theme-K6zNL3JT.js.map → Theme-CV_l77KL.js.map} +1 -1
  163. package/dist/admin/{Theme-NAd2H4cV.mjs → Theme-Cw2LYZGD.mjs} +3 -3
  164. package/dist/admin/{Theme-NAd2H4cV.mjs.map → Theme-Cw2LYZGD.mjs.map} +1 -1
  165. package/dist/admin/{TokenTypeSelect-By7iQpgJ.js → TokenTypeSelect-Cw-VuQ1P.js} +4 -4
  166. package/dist/admin/{TokenTypeSelect-By7iQpgJ.js.map → TokenTypeSelect-Cw-VuQ1P.js.map} +1 -1
  167. package/dist/admin/{TokenTypeSelect-B-iJxzXE.mjs → TokenTypeSelect-DrRs9zSH.mjs} +4 -4
  168. package/dist/admin/{TokenTypeSelect-B-iJxzXE.mjs.map → TokenTypeSelect-DrRs9zSH.mjs.map} +1 -1
  169. package/dist/admin/{UseCasePage-x-bVF6tp.mjs → UseCasePage-CtZkFcjB.mjs} +4 -4
  170. package/dist/admin/{UseCasePage-x-bVF6tp.mjs.map → UseCasePage-CtZkFcjB.mjs.map} +1 -1
  171. package/dist/admin/{UseCasePage-CY0JP2XW.js → UseCasePage-DeQWTKlZ.js} +4 -4
  172. package/dist/admin/{UseCasePage-CY0JP2XW.js.map → UseCasePage-DeQWTKlZ.js.map} +1 -1
  173. package/dist/admin/{admin-3FVGSNUT.js → admin-CoWMk1La.js} +4 -1
  174. package/dist/admin/admin-CoWMk1La.js.map +1 -0
  175. package/dist/admin/{admin-DIy_Bn_0.mjs → admin-CuE4OEl1.mjs} +4 -1
  176. package/dist/admin/admin-CuE4OEl1.mjs.map +1 -0
  177. package/dist/admin/{apiTokens-BOJ6JDtg.mjs → apiTokens-BbGEd8hG.mjs} +2 -2
  178. package/dist/admin/{apiTokens-BOJ6JDtg.mjs.map → apiTokens-BbGEd8hG.mjs.map} +1 -1
  179. package/dist/admin/{apiTokens-CcgEvJ9L.js → apiTokens-rxLmW4xI.js} +2 -2
  180. package/dist/admin/{apiTokens-CcgEvJ9L.js.map → apiTokens-rxLmW4xI.js.map} +1 -1
  181. package/dist/admin/{constants-BgfUvQDe.mjs → constants-4R_fd3x_.mjs} +3 -3
  182. package/dist/admin/{constants-BgfUvQDe.mjs.map → constants-4R_fd3x_.mjs.map} +1 -1
  183. package/dist/admin/{constants-QMVP-ySv.js → constants-C8Wa9CxZ.js} +3 -3
  184. package/dist/admin/{constants-QMVP-ySv.js.map → constants-C8Wa9CxZ.js.map} +1 -1
  185. package/dist/admin/constants-CRj0ViV1.mjs.map +1 -1
  186. package/dist/admin/constants-DF68OPrs.js.map +1 -1
  187. package/dist/admin/ee.js +1 -1
  188. package/dist/admin/ee.mjs +1 -1
  189. package/dist/admin/{en-BwH0BITJ.mjs → en-BS7ztn-4.mjs} +4 -1
  190. package/dist/admin/{en-BwH0BITJ.mjs.map → en-BS7ztn-4.mjs.map} +1 -1
  191. package/dist/admin/{en-B_M3cPYZ.js → en-CY1R-ci3.js} +4 -1
  192. package/dist/admin/{en-B_M3cPYZ.js.map → en-CY1R-ci3.js.map} +1 -1
  193. package/dist/admin/{en-GB-CemeJNao.js → en-GB-Bi4x4fHH.js} +2 -2
  194. package/dist/admin/en-GB-Bi4x4fHH.js.map +1 -0
  195. package/dist/admin/en-GB-CLX4m6_Z.mjs +6 -0
  196. package/dist/admin/en-GB-CLX4m6_Z.mjs.map +1 -0
  197. package/dist/admin/{index-D4vvFryW.js → index-RRj8QByf.js} +52 -35
  198. package/dist/admin/index-RRj8QByf.js.map +1 -0
  199. package/dist/admin/{index-CQ0jOkIC.mjs → index-UBwCyQ_3.mjs} +52 -35
  200. package/dist/admin/index-UBwCyQ_3.mjs.map +1 -0
  201. package/dist/admin/index.js +3 -3
  202. package/dist/admin/index.mjs +3 -3
  203. package/dist/admin/{selectors-ZSFBgSp8.mjs → selectors-8LCQywHx.mjs} +2 -2
  204. package/dist/admin/{selectors-ZSFBgSp8.mjs.map → selectors-8LCQywHx.mjs.map} +1 -1
  205. package/dist/admin/{selectors-DYNXQ1tD.js → selectors-CM2KPWni.js} +2 -2
  206. package/dist/admin/{selectors-DYNXQ1tD.js.map → selectors-CM2KPWni.js.map} +1 -1
  207. package/dist/admin/src/App.d.ts +2 -2
  208. package/dist/admin/src/StrapiApp.d.ts +2 -2
  209. package/dist/admin/src/components/ConfirmDialog.d.ts +1 -1
  210. package/dist/admin/src/components/DragLayer.d.ts +1 -1
  211. package/dist/admin/src/components/Filters.d.ts +1 -1
  212. package/dist/admin/src/components/Form.d.ts +2 -2
  213. package/dist/admin/src/components/FormInputs/Boolean.d.ts +1 -2
  214. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +1 -2
  215. package/dist/admin/src/components/FormInputs/Date.d.ts +1 -2
  216. package/dist/admin/src/components/FormInputs/DateTime.d.ts +1 -2
  217. package/dist/admin/src/components/FormInputs/Email.d.ts +2 -3
  218. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +1 -2
  219. package/dist/admin/src/components/FormInputs/Json.d.ts +1 -1
  220. package/dist/admin/src/components/FormInputs/Number.d.ts +1 -2
  221. package/dist/admin/src/components/FormInputs/Password.d.ts +2 -3
  222. package/dist/admin/src/components/FormInputs/Renderer.d.ts +2 -3
  223. package/dist/admin/src/components/FormInputs/String.d.ts +2 -3
  224. package/dist/admin/src/components/FormInputs/Textarea.d.ts +2 -3
  225. package/dist/admin/src/components/FormInputs/Time.d.ts +1 -2
  226. package/dist/admin/src/components/FormInputs/types.d.ts +2 -2
  227. package/dist/admin/src/components/Layouts/HeaderLayout.d.ts +1 -1
  228. package/dist/admin/src/components/Layouts/Layout.d.ts +5 -5
  229. package/dist/admin/src/components/MainNav/NavLink.d.ts +1 -1
  230. package/dist/admin/src/components/MainNav/NavUser.d.ts +1 -1
  231. package/dist/admin/src/components/PageHelpers.d.ts +2 -2
  232. package/dist/admin/src/components/Pagination.d.ts +1 -1
  233. package/dist/admin/src/components/Providers.d.ts +2 -2
  234. package/dist/admin/src/components/RelativeTime.d.ts +1 -1
  235. package/dist/admin/src/components/Table.d.ts +1 -1
  236. package/dist/admin/src/components/Theme.d.ts +1 -1
  237. package/dist/admin/src/constants/filters.d.ts +2 -2
  238. package/dist/admin/src/constants.d.ts +1 -1
  239. package/dist/admin/src/core/apis/CustomFields.d.ts +2 -2
  240. package/dist/admin/src/core/apis/rbac.d.ts +1 -1
  241. package/dist/admin/src/core/apis/router.d.ts +2 -2
  242. package/dist/admin/src/core/store/configure.d.ts +5 -5
  243. package/dist/admin/src/core/store/hooks.d.ts +8 -8
  244. package/dist/admin/src/core/utils/createHook.d.ts +1 -1
  245. package/dist/admin/src/features/AppInfo.d.ts +1 -1
  246. package/dist/admin/src/features/Auth.d.ts +2 -2
  247. package/dist/admin/src/features/BackButton.d.ts +2 -2
  248. package/dist/admin/src/features/Configuration.d.ts +2 -2
  249. package/dist/admin/src/features/StrapiApp.d.ts +2 -3
  250. package/dist/admin/src/features/Tracking.d.ts +1 -1
  251. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  252. package/dist/admin/src/hooks/useAdminRoles.d.ts +3 -3
  253. package/dist/admin/src/hooks/useContentTypes.d.ts +1 -1
  254. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  255. package/dist/admin/src/hooks/usePersistentState.d.ts +1 -1
  256. package/dist/admin/src/hooks/useSettingsMenu.d.ts +1 -1
  257. package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -2
  258. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  259. package/dist/admin/src/pages/Auth/components/ForgotPassword.d.ts +1 -1
  260. package/dist/admin/src/pages/Auth/components/Login.d.ts +1 -1
  261. package/dist/admin/src/pages/Auth/constants.d.ts +1 -1
  262. package/dist/admin/src/pages/Marketplace/components/NpmPackageCard.d.ts +2 -2
  263. package/dist/admin/src/pages/Marketplace/components/NpmPackagesFilters.d.ts +2 -2
  264. package/dist/admin/src/pages/Marketplace/components/NpmPackagesGrid.d.ts +1 -1
  265. package/dist/admin/src/pages/Marketplace/components/PageHeader.d.ts +1 -1
  266. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +1 -1
  267. package/dist/admin/src/pages/Settings/components/Tokens/FormHead.d.ts +1 -1
  268. package/dist/admin/src/pages/Settings/components/Tokens/LifeSpanInput.d.ts +2 -2
  269. package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +1 -1
  270. package/dist/admin/src/pages/Settings/constants.d.ts +1 -1
  271. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.d.ts +1 -1
  272. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.d.ts +2 -2
  273. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.d.ts +12 -12
  274. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.d.ts +1 -1
  275. package/dist/admin/src/pages/Settings/pages/PurchaseContentHistory.d.ts +2 -0
  276. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +3 -4
  277. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  278. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +2 -2
  279. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +1 -1
  280. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -2
  281. package/dist/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.d.ts +1 -1
  282. package/dist/admin/src/pages/Settings/pages/Roles/components/RoleForm.d.ts +2 -2
  283. package/dist/admin/src/pages/Settings/pages/Roles/components/RoleRow.d.ts +1 -1
  284. package/dist/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.d.ts +1 -1
  285. package/dist/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.d.ts +2 -3
  286. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +3 -3
  287. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +2 -2
  288. package/dist/admin/src/pages/Settings/pages/Users/components/CreateActionCE.d.ts +1 -1
  289. package/dist/admin/src/pages/Settings/pages/Users/components/NewUserForm.d.ts +1 -1
  290. package/dist/admin/src/pages/Settings/pages/Users/utils/validation.d.ts +2 -2
  291. package/dist/admin/src/pages/Settings/pages/Webhooks/components/Events.d.ts +1 -1
  292. package/dist/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.d.ts +1 -1
  293. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +6 -6
  294. package/dist/admin/src/reducer.d.ts +2 -2
  295. package/dist/admin/src/render.d.ts +1 -1
  296. package/dist/admin/src/selectors.d.ts +6 -6
  297. package/dist/admin/src/services/admin.d.ts +6 -6
  298. package/dist/admin/src/services/api.d.ts +1 -1
  299. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  300. package/dist/admin/src/services/auth.d.ts +22 -22
  301. package/dist/admin/src/services/contentApi.d.ts +1 -1
  302. package/dist/admin/src/services/contentManager.d.ts +2 -6
  303. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  304. package/dist/admin/src/services/users.d.ts +12 -12
  305. package/dist/admin/src/services/webhooks.d.ts +3 -3
  306. package/dist/admin/src/types/adminConfiguration.d.ts +1 -1
  307. package/dist/admin/src/types/forms.d.ts +3 -3
  308. package/dist/admin/src/types/permissions.d.ts +1 -1
  309. package/dist/admin/src/utils/baseQuery.d.ts +2 -2
  310. package/dist/admin/src/utils/getFetchClient.d.ts +1 -1
  311. package/dist/admin/src/utils/normalizeAPIError.d.ts +1 -1
  312. package/dist/admin/src/utils/users.d.ts +1 -1
  313. package/dist/admin/test.js +30604 -45
  314. package/dist/admin/test.js.map +1 -1
  315. package/dist/admin/test.mjs +30596 -44
  316. package/dist/admin/test.mjs.map +1 -1
  317. package/dist/admin/tests/server.d.ts +1 -1
  318. package/dist/admin/tests/utils.d.ts +5 -5
  319. package/dist/admin/{transferTokens-CTsVFvMK.js → transferTokens-CeXBOv8T.js} +2 -2
  320. package/dist/admin/{transferTokens-CTsVFvMK.js.map → transferTokens-CeXBOv8T.js.map} +1 -1
  321. package/dist/admin/{transferTokens-CXTFej3W.mjs → transferTokens-DRhm3E2K.mjs} +2 -2
  322. package/dist/admin/{transferTokens-CXTFej3W.mjs.map → transferTokens-DRhm3E2K.mjs.map} +1 -1
  323. package/dist/admin/{useAdminRoles-Ck5p_pOt.js → useAdminRoles-DwDmGIlP.js} +2 -2
  324. package/dist/admin/{useAdminRoles-Ck5p_pOt.js.map → useAdminRoles-DwDmGIlP.js.map} +1 -1
  325. package/dist/admin/{useAdminRoles-BlqZHo5X.mjs → useAdminRoles-kFi4kBOs.mjs} +2 -2
  326. package/dist/admin/{useAdminRoles-BlqZHo5X.mjs.map → useAdminRoles-kFi4kBOs.mjs.map} +1 -1
  327. package/dist/admin/useEnterprise-BGzVPL4w.mjs.map +1 -1
  328. package/dist/admin/useEnterprise-ijNnK53J.js.map +1 -1
  329. package/dist/admin/{useLicenseLimitNotification-BJ69x-oH.js → useLicenseLimitNotification-B6SNDncg.js} +3 -3
  330. package/dist/admin/{useLicenseLimitNotification-BJ69x-oH.js.map → useLicenseLimitNotification-B6SNDncg.js.map} +1 -1
  331. package/dist/admin/{useLicenseLimitNotification-J4qdwz19.mjs → useLicenseLimitNotification-C8shIk-h.mjs} +3 -3
  332. package/dist/admin/{useLicenseLimitNotification-J4qdwz19.mjs.map → useLicenseLimitNotification-C8shIk-h.mjs.map} +1 -1
  333. package/dist/admin/{useLicenseLimits-D_SDg_6i.mjs → useLicenseLimits-BsqWmbk9.mjs} +2 -2
  334. package/dist/admin/{useLicenseLimits-D_SDg_6i.mjs.map → useLicenseLimits-BsqWmbk9.mjs.map} +1 -1
  335. package/dist/admin/{useLicenseLimits-D1oogU-K.js → useLicenseLimits-JFp6koHQ.js} +2 -2
  336. package/dist/admin/{useLicenseLimits-D1oogU-K.js.map → useLicenseLimits-JFp6koHQ.js.map} +1 -1
  337. package/dist/admin/useOnce-C7EQufL3.js.map +1 -1
  338. package/dist/admin/useOnce-NHeEacbN.mjs.map +1 -1
  339. package/dist/admin/{useWebhooks-CkRHgTl_.js → useWebhooks-CeQ6X5FT.js} +2 -2
  340. package/dist/admin/{useWebhooks-CkRHgTl_.js.map → useWebhooks-CeQ6X5FT.js.map} +1 -1
  341. package/dist/admin/{useWebhooks-C2yEtiSU.mjs → useWebhooks-ChRqPd68.mjs} +2 -2
  342. package/dist/admin/{useWebhooks-C2yEtiSU.mjs.map → useWebhooks-ChRqPd68.mjs.map} +1 -1
  343. package/dist/admin/users-8N93LH7R.mjs.map +1 -1
  344. package/dist/admin/users-DaPfjlwf.js.map +1 -1
  345. package/dist/admin/{validation-DYzpgGER.mjs → validation-DODfSh2_.mjs} +2 -2
  346. package/dist/admin/{validation-DYzpgGER.mjs.map → validation-DODfSh2_.mjs.map} +1 -1
  347. package/dist/admin/{validation-CsNKFFCI.js → validation-phe0S4q6.js} +2 -2
  348. package/dist/admin/{validation-CsNKFFCI.js.map → validation-phe0S4q6.js.map} +1 -1
  349. package/dist/ee/admin/src/constants.d.ts +2 -2
  350. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +1 -1
  351. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.d.ts +1 -1
  352. package/dist/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.d.ts +1 -1
  353. package/dist/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.d.ts +1 -1
  354. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  355. package/dist/package.json.d.ts +12 -12
  356. package/dist/server/index.js +6 -12
  357. package/dist/server/index.js.map +1 -1
  358. package/dist/server/index.mjs +5 -10
  359. package/dist/server/index.mjs.map +1 -1
  360. package/dist/shared/contracts/admin.d.ts +1 -1
  361. package/dist/shared/contracts/api-token.d.ts +1 -1
  362. package/dist/shared/contracts/authentication.d.ts +2 -2
  363. package/dist/shared/contracts/content-api.d.ts +2 -2
  364. package/dist/shared/contracts/content-types.d.ts +1 -1
  365. package/dist/shared/contracts/permissions.d.ts +1 -1
  366. package/dist/shared/contracts/roles.d.ts +2 -2
  367. package/dist/shared/contracts/shared.d.ts +1 -1
  368. package/dist/shared/contracts/user.d.ts +2 -2
  369. package/dist/shared/contracts/users.d.ts +2 -2
  370. package/dist/shared/contracts/webhooks.d.ts +1 -1
  371. package/package.json +13 -13
  372. package/dist/admin/Permissions-D-z4OQkJ.mjs.map +0 -1
  373. package/dist/admin/Permissions-DJGQDnx2.js.map +0 -1
  374. package/dist/admin/PurchaseSingleSignOn-DuP_lPo5.js.map +0 -1
  375. package/dist/admin/PurchaseSingleSignOn-EcMNl-Fp.mjs.map +0 -1
  376. package/dist/admin/admin-3FVGSNUT.js.map +0 -1
  377. package/dist/admin/admin-DIy_Bn_0.mjs.map +0 -1
  378. package/dist/admin/en-GB-CemeJNao.js.map +0 -1
  379. package/dist/admin/en-GB-D81NWpkp.mjs +0 -6
  380. package/dist/admin/en-GB-D81NWpkp.mjs.map +0 -1
  381. package/dist/admin/index-CQ0jOkIC.mjs.map +0 -1
  382. package/dist/admin/index-D4vvFryW.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useIntl } from 'react-intl';
3
3
  import { useLocation, NavLink, useMatch, Navigate, Outlet } from 'react-router-dom';
4
- import { p as SETTINGS_LINKS_CE, b as Layouts } from './index-CQ0jOkIC.mjs';
5
- import { u as useAuth, p as useAppInfo, q as useStrapiApp, c as useTracking, P as Page } from './Theme-NAd2H4cV.mjs';
4
+ import { p as SETTINGS_LINKS_CE, b as Layouts } from './index-UBwCyQ_3.mjs';
5
+ import { u as useAuth, p as useAppInfo, q as useStrapiApp, c as useTracking, P as Page } from './Theme-Cw2LYZGD.mjs';
6
6
  import * as React from 'react';
7
7
  import sortBy from 'lodash/sortBy';
8
8
  import { useSelector } from 'react-redux';
9
- import { s as selectAdminPermissions } from './selectors-ZSFBgSp8.mjs';
9
+ import { s as selectAdminPermissions } from './selectors-8LCQywHx.mjs';
10
10
  import { u as useEnterprise } from './useEnterprise-BGzVPL4w.mjs';
11
11
  import { SubNavLink, SubNav, SubNavHeader, SubNavSections, SubNavSection } from '@strapi/design-system';
12
12
  import { Lightning } from '@strapi/icons';
@@ -34,7 +34,7 @@ const useSettingsMenu = () => {
34
34
  const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);
35
35
  const { admin: adminLinks, global: globalLinks } = useEnterprise(
36
36
  ceLinks,
37
- async () => (await import('./index-CQ0jOkIC.mjs').then(n => n.K)).SETTINGS_LINKS_EE(),
37
+ async () => (await import('./index-UBwCyQ_3.mjs').then(n => n.K)).SETTINGS_LINKS_EE(),
38
38
  {
39
39
  combine(ceLinks2, eeLinks) {
40
40
  return {
@@ -212,4 +212,4 @@ const Layout = () => {
212
212
  };
213
213
 
214
214
  export { Layout };
215
- //# sourceMappingURL=Layout-CaNlgN5n.mjs.map
215
+ //# sourceMappingURL=Layout-CbrrMtL2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Layout-CaNlgN5n.mjs","sources":["../../admin/src/hooks/useSettingsMenu.ts","../../admin/src/pages/Settings/components/SettingsNav.tsx","../../admin/src/pages/Settings/Layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport sortBy from 'lodash/sortBy';\nimport { useSelector } from 'react-redux';\n\nimport { SETTINGS_LINKS_CE, SettingsMenuLink } from '../constants';\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\nimport { PermissionMap } from '../types/permissions';\n\nimport { useEnterprise } from './useEnterprise';\n\nimport type {\n StrapiAppSetting,\n StrapiAppSettingLink as IStrapiAppSettingLink,\n} from '../core/apis/router';\n\nconst formatLinks = (menu: SettingsMenuSection[]): SettingsMenuSectionWithDisplayedLinks[] =>\n menu.map((menuSection) => {\n const formattedLinks = menuSection.links.map((link) => ({\n ...link,\n isDisplayed: false,\n }));\n\n return { ...menuSection, links: formattedLinks };\n });\n\ninterface SettingsMenuLinkWithPermissions extends SettingsMenuLink {\n permissions: IStrapiAppSettingLink['permissions'];\n hasNotification?: boolean;\n}\n\ninterface StrapiAppSettingsLink extends IStrapiAppSettingLink {\n licenseOnly?: never;\n hasNotification?: never;\n}\n\ninterface SettingsMenuSection extends Omit<StrapiAppSetting, 'links'> {\n links: Array<SettingsMenuLinkWithPermissions | StrapiAppSettingsLink>;\n}\n\ninterface SettingsMenuLinkWithPermissionsAndDisplayed extends SettingsMenuLinkWithPermissions {\n isDisplayed: boolean;\n}\n\ninterface StrapiAppSettingLinkWithDisplayed extends StrapiAppSettingsLink {\n isDisplayed: boolean;\n}\n\ninterface SettingsMenuSectionWithDisplayedLinks extends Omit<SettingsMenuSection, 'links'> {\n links: Array<SettingsMenuLinkWithPermissionsAndDisplayed | StrapiAppSettingLinkWithDisplayed>;\n}\n\ntype SettingsMenu = SettingsMenuSectionWithDisplayedLinks[];\n\nconst useSettingsMenu = (): {\n isLoading: boolean;\n menu: SettingsMenu;\n} => {\n const [{ isLoading, menu }, setData] = React.useState<{\n isLoading: boolean;\n menu: SettingsMenu;\n }>({\n isLoading: true,\n menu: [],\n });\n const checkUserHasPermission = useAuth(\n 'useSettingsMenu',\n (state) => state.checkUserHasPermissions\n );\n const shouldUpdateStrapi = useAppInfo('useSettingsMenu', (state) => state.shouldUpdateStrapi);\n const settings = useStrapiApp('useSettingsMenu', (state) => state.settings);\n const permissions = useSelector(selectAdminPermissions);\n\n /**\n * memoize the return value of this function to avoid re-computing it on every render\n * because it's used in an effect it ends up re-running recursively.\n */\n const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);\n\n const { admin: adminLinks, global: globalLinks } = useEnterprise(\n ceLinks,\n async () => (await import('../../../ee/admin/src/constants')).SETTINGS_LINKS_EE(),\n {\n combine(ceLinks, eeLinks) {\n return {\n admin: [...eeLinks.admin, ...ceLinks.admin],\n global: [...ceLinks.global, ...eeLinks.global],\n };\n },\n defaultValue: {\n admin: [],\n global: [],\n },\n }\n );\n\n const addPermissions = React.useCallback(\n (link: SettingsMenuLink) => {\n if (!link.id) {\n throw new Error('The settings menu item must have an id attribute.');\n }\n\n return {\n ...link,\n permissions: permissions.settings?.[link.id as keyof PermissionMap['settings']]?.main ?? [],\n } satisfies SettingsMenuLinkWithPermissions;\n },\n [permissions.settings]\n );\n\n React.useEffect(() => {\n const getData = async () => {\n interface MenuLinkPermission {\n hasPermission: boolean;\n sectionIndex: number;\n linkIndex: number;\n }\n\n const buildMenuPermissions = (sections: SettingsMenuSectionWithDisplayedLinks[]) =>\n Promise.all(\n sections.reduce<Promise<MenuLinkPermission>[]>((acc, section, sectionIndex) => {\n const linksWithPermissions = section.links.map(async (link, linkIndex) => ({\n hasPermission: (await checkUserHasPermission(link.permissions)).length > 0,\n sectionIndex,\n linkIndex,\n }));\n\n return [...acc, ...linksWithPermissions];\n }, [])\n );\n\n const menuPermissions = await buildMenuPermissions(sections);\n\n setData((prev) => {\n return {\n ...prev,\n isLoading: false,\n menu: sections.map((section, sectionIndex) => ({\n ...section,\n links: section.links.map((link, linkIndex) => {\n const permission = menuPermissions.find(\n (permission) =>\n permission.sectionIndex === sectionIndex && permission.linkIndex === linkIndex\n );\n\n return {\n ...link,\n isDisplayed: Boolean(permission?.hasPermission),\n };\n }),\n })),\n };\n });\n };\n\n const { global, ...otherSections } = settings;\n const sections = formatLinks([\n {\n ...global,\n links: sortBy([...global.links, ...globalLinks.map(addPermissions)], (link) => link.id).map(\n (link) => ({\n ...link,\n hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,\n })\n ),\n },\n {\n id: 'permissions',\n intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },\n links: adminLinks.map(addPermissions),\n },\n ...Object.values(otherSections),\n ]);\n\n getData();\n }, [\n adminLinks,\n globalLinks,\n settings,\n shouldUpdateStrapi,\n addPermissions,\n checkUserHasPermission,\n ]);\n\n return {\n isLoading,\n menu: menu.map((menuItem) => ({\n ...menuItem,\n links: menuItem.links.filter((link) => link.isDisplayed),\n })),\n };\n};\n\nexport { useSettingsMenu };\nexport type { SettingsMenu };\n","import {\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\nconst CustomIcon = styled(Lightning)`\n right: 15px;\n position: absolute;\n bottom: 50%;\n transform: translateY(50%);\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\nconst Link = styled(SubNavLink)`\n &.active ${CustomIcon} {\n right: 13px;\n }\n`;\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader label={label} />\n <SubNavSections>\n {sections.map((section) => (\n <SubNavSection key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <Link\n tag={NavLink}\n withBullet={link.hasNotification}\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n position=\"relative\"\n >\n {formatMessage(link.intlLabel)}\n {link?.licenseOnly && <CustomIcon width=\"1.5rem\" height=\"1.5rem\" />}\n </Link>\n );\n })}\n </SubNavSection>\n ))}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n","import { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useMatch } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { useSettingsMenu } from '../../hooks/useSettingsMenu';\n\nimport { SettingsNav } from './components/SettingsNav';\n\nconst Layout = () => {\n /**\n * This ensures we're capturing the settingId from the URL\n * but also lets any nesting after that pass.\n */\n const match = useMatch('/settings/:settingId/*');\n const { formatMessage } = useIntl();\n const { isLoading, menu } = useSettingsMenu();\n\n // Since the useSettingsMenu hook can make API calls in order to check the links permissions\n // We need to add a loading state to prevent redirecting the user while permissions are being checked\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (!match?.params.settingId) {\n return <Navigate to=\"application-infos\" />;\n }\n\n return (\n <Layouts.Root sideNav={<SettingsNav menu={menu} />}>\n <Page.Title>\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Page.Title>\n <Outlet />\n </Layouts.Root>\n );\n};\n\nexport { Layout };\n"],"names":["ceLinks","sections","permission"],"mappings":"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"}
1
+ {"version":3,"file":"Layout-CbrrMtL2.mjs","sources":["../../admin/src/hooks/useSettingsMenu.ts","../../admin/src/pages/Settings/components/SettingsNav.tsx","../../admin/src/pages/Settings/Layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport sortBy from 'lodash/sortBy';\nimport { useSelector } from 'react-redux';\n\nimport { SETTINGS_LINKS_CE, SettingsMenuLink } from '../constants';\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\nimport { PermissionMap } from '../types/permissions';\n\nimport { useEnterprise } from './useEnterprise';\n\nimport type {\n StrapiAppSetting,\n StrapiAppSettingLink as IStrapiAppSettingLink,\n} from '../core/apis/router';\n\nconst formatLinks = (menu: SettingsMenuSection[]): SettingsMenuSectionWithDisplayedLinks[] =>\n menu.map((menuSection) => {\n const formattedLinks = menuSection.links.map((link) => ({\n ...link,\n isDisplayed: false,\n }));\n\n return { ...menuSection, links: formattedLinks };\n });\n\ninterface SettingsMenuLinkWithPermissions extends SettingsMenuLink {\n permissions: IStrapiAppSettingLink['permissions'];\n hasNotification?: boolean;\n}\n\ninterface StrapiAppSettingsLink extends IStrapiAppSettingLink {\n licenseOnly?: never;\n hasNotification?: never;\n}\n\ninterface SettingsMenuSection extends Omit<StrapiAppSetting, 'links'> {\n links: Array<SettingsMenuLinkWithPermissions | StrapiAppSettingsLink>;\n}\n\ninterface SettingsMenuLinkWithPermissionsAndDisplayed extends SettingsMenuLinkWithPermissions {\n isDisplayed: boolean;\n}\n\ninterface StrapiAppSettingLinkWithDisplayed extends StrapiAppSettingsLink {\n isDisplayed: boolean;\n}\n\ninterface SettingsMenuSectionWithDisplayedLinks extends Omit<SettingsMenuSection, 'links'> {\n links: Array<SettingsMenuLinkWithPermissionsAndDisplayed | StrapiAppSettingLinkWithDisplayed>;\n}\n\ntype SettingsMenu = SettingsMenuSectionWithDisplayedLinks[];\n\nconst useSettingsMenu = (): {\n isLoading: boolean;\n menu: SettingsMenu;\n} => {\n const [{ isLoading, menu }, setData] = React.useState<{\n isLoading: boolean;\n menu: SettingsMenu;\n }>({\n isLoading: true,\n menu: [],\n });\n const checkUserHasPermission = useAuth(\n 'useSettingsMenu',\n (state) => state.checkUserHasPermissions\n );\n const shouldUpdateStrapi = useAppInfo('useSettingsMenu', (state) => state.shouldUpdateStrapi);\n const settings = useStrapiApp('useSettingsMenu', (state) => state.settings);\n const permissions = useSelector(selectAdminPermissions);\n\n /**\n * memoize the return value of this function to avoid re-computing it on every render\n * because it's used in an effect it ends up re-running recursively.\n */\n const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);\n\n const { admin: adminLinks, global: globalLinks } = useEnterprise(\n ceLinks,\n async () => (await import('../../../ee/admin/src/constants')).SETTINGS_LINKS_EE(),\n {\n combine(ceLinks, eeLinks) {\n return {\n admin: [...eeLinks.admin, ...ceLinks.admin],\n global: [...ceLinks.global, ...eeLinks.global],\n };\n },\n defaultValue: {\n admin: [],\n global: [],\n },\n }\n );\n\n const addPermissions = React.useCallback(\n (link: SettingsMenuLink) => {\n if (!link.id) {\n throw new Error('The settings menu item must have an id attribute.');\n }\n\n return {\n ...link,\n permissions: permissions.settings?.[link.id as keyof PermissionMap['settings']]?.main ?? [],\n } satisfies SettingsMenuLinkWithPermissions;\n },\n [permissions.settings]\n );\n\n React.useEffect(() => {\n const getData = async () => {\n interface MenuLinkPermission {\n hasPermission: boolean;\n sectionIndex: number;\n linkIndex: number;\n }\n\n const buildMenuPermissions = (sections: SettingsMenuSectionWithDisplayedLinks[]) =>\n Promise.all(\n sections.reduce<Promise<MenuLinkPermission>[]>((acc, section, sectionIndex) => {\n const linksWithPermissions = section.links.map(async (link, linkIndex) => ({\n hasPermission: (await checkUserHasPermission(link.permissions)).length > 0,\n sectionIndex,\n linkIndex,\n }));\n\n return [...acc, ...linksWithPermissions];\n }, [])\n );\n\n const menuPermissions = await buildMenuPermissions(sections);\n\n setData((prev) => {\n return {\n ...prev,\n isLoading: false,\n menu: sections.map((section, sectionIndex) => ({\n ...section,\n links: section.links.map((link, linkIndex) => {\n const permission = menuPermissions.find(\n (permission) =>\n permission.sectionIndex === sectionIndex && permission.linkIndex === linkIndex\n );\n\n return {\n ...link,\n isDisplayed: Boolean(permission?.hasPermission),\n };\n }),\n })),\n };\n });\n };\n\n const { global, ...otherSections } = settings;\n const sections = formatLinks([\n {\n ...global,\n links: sortBy([...global.links, ...globalLinks.map(addPermissions)], (link) => link.id).map(\n (link) => ({\n ...link,\n hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,\n })\n ),\n },\n {\n id: 'permissions',\n intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },\n links: adminLinks.map(addPermissions),\n },\n ...Object.values(otherSections),\n ]);\n\n getData();\n }, [\n adminLinks,\n globalLinks,\n settings,\n shouldUpdateStrapi,\n addPermissions,\n checkUserHasPermission,\n ]);\n\n return {\n isLoading,\n menu: menu.map((menuItem) => ({\n ...menuItem,\n links: menuItem.links.filter((link) => link.isDisplayed),\n })),\n };\n};\n\nexport { useSettingsMenu };\nexport type { SettingsMenu };\n","import {\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\nconst CustomIcon = styled(Lightning)`\n right: 15px;\n position: absolute;\n bottom: 50%;\n transform: translateY(50%);\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\nconst Link = styled(SubNavLink)`\n &.active ${CustomIcon} {\n right: 13px;\n }\n`;\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader label={label} />\n <SubNavSections>\n {sections.map((section) => (\n <SubNavSection key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <Link\n tag={NavLink}\n withBullet={link.hasNotification}\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n position=\"relative\"\n >\n {formatMessage(link.intlLabel)}\n {link?.licenseOnly && <CustomIcon width=\"1.5rem\" height=\"1.5rem\" />}\n </Link>\n );\n })}\n </SubNavSection>\n ))}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n","import { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useMatch } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { useSettingsMenu } from '../../hooks/useSettingsMenu';\n\nimport { SettingsNav } from './components/SettingsNav';\n\nconst Layout = () => {\n /**\n * This ensures we're capturing the settingId from the URL\n * but also lets any nesting after that pass.\n */\n const match = useMatch('/settings/:settingId/*');\n const { formatMessage } = useIntl();\n const { isLoading, menu } = useSettingsMenu();\n\n // Since the useSettingsMenu hook can make API calls in order to check the links permissions\n // We need to add a loading state to prevent redirecting the user while permissions are being checked\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (!match?.params.settingId) {\n return <Navigate to=\"application-infos\" />;\n }\n\n return (\n <Layouts.Root sideNav={<SettingsNav menu={menu} />}>\n <Page.Title>\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Page.Title>\n <Outlet />\n </Layouts.Root>\n );\n};\n\nexport { Layout };\n"],"names":["ceLinks","sections","permission"],"mappings":"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"}
@@ -2,11 +2,11 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { JSONInput, Modal as Modal$1, Breadcrumbs, Crumb, Flex, Loader, Box, Typography, Grid, Field, Combobox, ComboboxOption, IconButton } from '@strapi/design-system';
3
3
  import { Eye } from '@strapi/icons';
4
4
  import { useIntl } from 'react-intl';
5
- import { k as useAdminUsers, u as useField, b as Layouts, s as Filters, T as Table, P as Pagination } from './index-CQ0jOkIC.mjs';
6
- import { a as useNotification, e as useAPIErrorHandler, o as useQueryParams, b as useTypedSelector, P as Page, k as useRBAC } from './Theme-NAd2H4cV.mjs';
5
+ import { k as useAdminUsers, u as useField, b as Layouts, s as Filters, T as Table, P as Pagination } from './index-UBwCyQ_3.mjs';
6
+ import { a as useNotification, e as useAPIErrorHandler, o as useQueryParams, b as useTypedSelector, P as Page, k as useRBAC } from './Theme-Cw2LYZGD.mjs';
7
7
  import * as React from 'react';
8
8
  import { styled } from 'styled-components';
9
- import { a as adminApi } from './admin-DIy_Bn_0.mjs';
9
+ import { a as adminApi } from './admin-CuE4OEl1.mjs';
10
10
  import parseISO from 'date-fns/parseISO';
11
11
  import { g as getDisplayName } from './users-8N93LH7R.mjs';
12
12
 
@@ -474,4 +474,4 @@ const ProtectedListPage = () => {
474
474
  };
475
475
 
476
476
  export { ListPage, ProtectedListPage };
477
- //# sourceMappingURL=ListPage-DbHPSzvx.mjs.map
477
+ //# sourceMappingURL=ListPage-4M1uu6wf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-DbHPSzvx.mjs","sources":["../../ee/admin/src/services/auditLogs.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.tsx"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery };\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nexport const useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value: string) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n JSONInput,\n Loader,\n Modal as DSModal,\n Typography,\n Breadcrumbs,\n Crumb,\n Field,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useGetAuditLogQuery } from '../../../../../services/auditLogs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { actionTypes, getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\ninterface ModalProps {\n handleClose: () => void;\n logId: string;\n}\n\nexport const Modal = ({ handleClose, logId }: ModalProps) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading } = useGetAuditLogQuery(logId);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n handleClose();\n }\n }, [error, formatAPIError, handleClose, toggleNotification]);\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data && 'date' in data ? formatTimeStamp(data.date) : '';\n\n return (\n <DSModal.Root defaultOpen onOpenChange={handleClose}>\n <DSModal.Content>\n <DSModal.Header>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </DSModal.Header>\n <DSModal.Body>\n <ActionBody isLoading={isLoading} data={data as AuditLog} formattedDate={formattedDate} />\n </DSModal.Body>\n </DSModal.Content>\n </DSModal.Root>\n );\n};\n\ninterface ActionBodyProps {\n isLoading?: boolean;\n data: AuditLog;\n formattedDate: string;\n}\n\nconst ActionBody = ({ isLoading, data, formattedDate }: ActionBodyProps) => {\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n {/**\n * TODO: this will need to be translated.\n */}\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid.Root\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action as keyof typeof actionTypes),\n },\n // @ts-expect-error - any\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid.Root>\n <Field.Root>\n <Field.Label>\n {formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n </Field.Label>\n <Payload value={JSON.stringify(payload, null, 2)} disabled />\n </Field.Root>\n </>\n );\n};\n\nconst Payload = styled(JSONInput)`\n max-width: 100%;\n overflow: scroll;\n`;\n\ninterface ActionItemProps {\n actionLabel: string;\n actionName: string;\n}\n\nconst ActionItem = ({ actionLabel, actionName }: ActionItemProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../../../../../../../admin/src/hooks/useQueryParams';\nimport { useAdminUsers } from '../../../../../../../../admin/src/services/users';\nimport { useGetAuditLogsQuery } from '../../../../../services/auditLogs';\n\nexport const useAuditLogsData = ({\n canReadAuditLogs,\n canReadUsers,\n}: {\n canReadAuditLogs: boolean;\n canReadUsers: boolean;\n}) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams();\n\n const {\n data,\n error,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n skip: !canReadUsers,\n refetchOnMountOrArgChange: true,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, toggleNotification, formatAPIError]);\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n error: auditLogsError,\n } = useGetAuditLogsQuery(query, {\n refetchOnMountOrArgChange: true,\n skip: !canReadAuditLogs,\n });\n\n React.useEffect(() => {\n if (auditLogsError) {\n toggleNotification({ type: 'danger', message: formatAPIError(auditLogsError) });\n }\n }, [auditLogsError, toggleNotification, formatAPIError]);\n\n return {\n auditLogs,\n users: data?.users ?? [],\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n","import { Combobox, ComboboxOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Filters } from '../../../../../../../../admin/src/components/Filters';\nimport { useField } from '../../../../../../../../admin/src/components/Form';\n\nexport const ComboboxFilter = (props: Filters.ValueInputProps) => {\n const { formatMessage } = useIntl();\n const field = useField(props.name);\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n const handleChange = (value?: string) => {\n field.onChange(props.name, value);\n };\n\n return (\n <Combobox aria-label={ariaLabel} value={field.value} onChange={handleChange}>\n {props.options?.map((opt) => {\n const value = typeof opt === 'string' ? opt : opt.value;\n const label = typeof opt === 'string' ? opt : opt.label;\n return (\n <ComboboxOption key={value} value={value}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n","import { IntlShape } from 'react-intl';\n\nimport { Filters } from '../../../../../../../../admin/src/components/Filters';\nimport { getDisplayName } from '../../../../../../../../admin/src/utils/users';\nimport { SanitizedAdminUser } from '../../../../../../../../shared/contracts/shared';\nimport { ComboboxFilter } from '../components/ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nexport const getDisplayedFilters = ({\n formatMessage,\n users,\n canReadUsers,\n}: {\n formatMessage: IntlShape['formatMessage'];\n users: SanitizedAdminUser[];\n canReadUsers: boolean;\n}): Filters.Filter[] => {\n const operators = [\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$eq',\n defaultMessage: 'is',\n }),\n value: '$eq',\n },\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$ne',\n defaultMessage: 'is not',\n }),\n value: '$ne',\n },\n ] as NonNullable<Filters.Filter['operators']>;\n\n const filters = [\n {\n input: ComboboxFilter,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n name: 'action',\n operators,\n options: (Object.keys(actionTypes) as (keyof typeof actionTypes)[]).map((action) => ({\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n value: action,\n })),\n type: 'enumeration',\n },\n {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n name: 'date',\n type: 'datetime',\n },\n ] satisfies Filters.Filter[];\n\n if (canReadUsers && users) {\n return [\n ...filters,\n {\n input: ComboboxFilter,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n mainField: { name: 'id', type: 'integer' },\n name: 'user',\n operators,\n options: users.map((user) => ({\n label: getDisplayName(user),\n value: user.id.toString(),\n })),\n type: 'relation',\n } satisfies Filters.Filter,\n ];\n }\n\n return filters;\n};\n","import { Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Eye } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Filters } from '../../../../../../../admin/src/components/Filters';\nimport { Layouts } from '../../../../../../../admin/src/components/Layouts/Layout';\nimport { Page } from '../../../../../../../admin/src/components/PageHelpers';\nimport { Pagination } from '../../../../../../../admin/src/components/Pagination';\nimport { Table } from '../../../../../../../admin/src/components/Table';\nimport { useTypedSelector } from '../../../../../../../admin/src/core/store/hooks';\nimport { useQueryParams } from '../../../../../../../admin/src/hooks/useQueryParams';\nimport { useRBAC } from '../../../../../../../admin/src/hooks/useRBAC';\nimport { AuditLog } from '../../../../../../../shared/contracts/audit-logs';\n\nimport { Modal } from './components/Modal';\nimport { useAuditLogsData } from './hooks/useAuditLogsData';\nimport { useFormatTimeStamp } from './hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from './utils/getActionTypesDefaultMessages';\nimport { getDisplayedFilters } from './utils/getDisplayedFilters';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n isLoading: isLoadingRBAC,\n } = useRBAC({\n ...permissions?.auditLogs,\n readUsers: permissions?.users.read || [],\n });\n\n const [{ query }, setQuery] = useQueryParams<{ id?: AuditLog['id'] }>();\n const {\n auditLogs,\n users,\n isLoading: isLoadingData,\n hasError,\n } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n const formatTimeStamp = useFormatTimeStamp();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const headers: Table.Header<AuditLog, object>[] = [\n {\n name: 'action',\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n sortable: true,\n },\n {\n name: 'date',\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n sortable: true,\n },\n {\n name: 'user',\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n sortable: false,\n // In this case, the passed parameter cannot and shouldn't be something else than User\n cellFormatter: ({ user }) => (user ? user.displayName : ''),\n },\n ];\n\n if (hasError) {\n return <Page.Error />;\n }\n\n const isLoading = isLoadingData || isLoadingRBAC;\n\n const { results = [] } = auditLogs ?? {};\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n })}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <Layouts.Action\n startActions={\n <Filters.Root options={displayedFilters}>\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n }\n />\n <Layouts.Content>\n <Table.Root rows={results} headers={headers} isLoading={isLoading}>\n <Table.Content>\n <Table.Head>\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {results.map((log) => (\n <Table.Row key={log.id} onClick={() => setQuery({ id: log.id })}>\n {headers.map((header) => {\n const { name, cellFormatter } = header;\n\n switch (name) {\n case 'action':\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {formatMessage(\n {\n id: `Settings.permissions.auditLogs.${log.action}`,\n // @ts-expect-error – getDefaultMessage probably doesn't benefit from being so strongly typed unless we just add string at the end.\n defaultMessage: getDefaultMessage(log.action),\n },\n { model: (log.payload?.model as string) ?? '' }\n )}\n </Typography>\n </Table.Cell>\n );\n case 'date':\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {formatTimeStamp(log.date)}\n </Typography>\n </Table.Cell>\n );\n case 'user':\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {cellFormatter ? cellFormatter(log, header) : '-'}\n </Typography>\n </Table.Cell>\n );\n default:\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {(log[name as keyof AuditLog] as string) || '-'}\n </Typography>\n </Table.Cell>\n );\n }\n })}\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => setQuery({ id: log.id })}\n withTooltip={false}\n label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${log.action} action` }\n )}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n\n <Pagination.Root {...auditLogs?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n {query?.id && (\n <Modal handleClose={() => setQuery({ id: '' }, 'remove')} logId={query.id.toString()} />\n )}\n </Page.Main>\n );\n};\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.auditLogs?.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["DSModal"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage-4M1uu6wf.mjs","sources":["../../ee/admin/src/services/auditLogs.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.tsx"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery };\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nexport const useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value: string) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n JSONInput,\n Loader,\n Modal as DSModal,\n Typography,\n Breadcrumbs,\n Crumb,\n Field,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useGetAuditLogQuery } from '../../../../../services/auditLogs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { actionTypes, getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\ninterface ModalProps {\n handleClose: () => void;\n logId: string;\n}\n\nexport const Modal = ({ handleClose, logId }: ModalProps) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading } = useGetAuditLogQuery(logId);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n handleClose();\n }\n }, [error, formatAPIError, handleClose, toggleNotification]);\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data && 'date' in data ? formatTimeStamp(data.date) : '';\n\n return (\n <DSModal.Root defaultOpen onOpenChange={handleClose}>\n <DSModal.Content>\n <DSModal.Header>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </DSModal.Header>\n <DSModal.Body>\n <ActionBody isLoading={isLoading} data={data as AuditLog} formattedDate={formattedDate} />\n </DSModal.Body>\n </DSModal.Content>\n </DSModal.Root>\n );\n};\n\ninterface ActionBodyProps {\n isLoading?: boolean;\n data: AuditLog;\n formattedDate: string;\n}\n\nconst ActionBody = ({ isLoading, data, formattedDate }: ActionBodyProps) => {\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n {/**\n * TODO: this will need to be translated.\n */}\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid.Root\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action as keyof typeof actionTypes),\n },\n // @ts-expect-error - any\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid.Root>\n <Field.Root>\n <Field.Label>\n {formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n </Field.Label>\n <Payload value={JSON.stringify(payload, null, 2)} disabled />\n </Field.Root>\n </>\n );\n};\n\nconst Payload = styled(JSONInput)`\n max-width: 100%;\n overflow: scroll;\n`;\n\ninterface ActionItemProps {\n actionLabel: string;\n actionName: string;\n}\n\nconst ActionItem = ({ actionLabel, actionName }: ActionItemProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../../../../../../../admin/src/hooks/useQueryParams';\nimport { useAdminUsers } from '../../../../../../../../admin/src/services/users';\nimport { useGetAuditLogsQuery } from '../../../../../services/auditLogs';\n\nexport const useAuditLogsData = ({\n canReadAuditLogs,\n canReadUsers,\n}: {\n canReadAuditLogs: boolean;\n canReadUsers: boolean;\n}) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams();\n\n const {\n data,\n error,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n skip: !canReadUsers,\n refetchOnMountOrArgChange: true,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, toggleNotification, formatAPIError]);\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n error: auditLogsError,\n } = useGetAuditLogsQuery(query, {\n refetchOnMountOrArgChange: true,\n skip: !canReadAuditLogs,\n });\n\n React.useEffect(() => {\n if (auditLogsError) {\n toggleNotification({ type: 'danger', message: formatAPIError(auditLogsError) });\n }\n }, [auditLogsError, toggleNotification, formatAPIError]);\n\n return {\n auditLogs,\n users: data?.users ?? [],\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n","import { Combobox, ComboboxOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Filters } from '../../../../../../../../admin/src/components/Filters';\nimport { useField } from '../../../../../../../../admin/src/components/Form';\n\nexport const ComboboxFilter = (props: Filters.ValueInputProps) => {\n const { formatMessage } = useIntl();\n const field = useField(props.name);\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n const handleChange = (value?: string) => {\n field.onChange(props.name, value);\n };\n\n return (\n <Combobox aria-label={ariaLabel} value={field.value} onChange={handleChange}>\n {props.options?.map((opt) => {\n const value = typeof opt === 'string' ? opt : opt.value;\n const label = typeof opt === 'string' ? opt : opt.label;\n return (\n <ComboboxOption key={value} value={value}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n","import { IntlShape } from 'react-intl';\n\nimport { Filters } from '../../../../../../../../admin/src/components/Filters';\nimport { getDisplayName } from '../../../../../../../../admin/src/utils/users';\nimport { SanitizedAdminUser } from '../../../../../../../../shared/contracts/shared';\nimport { ComboboxFilter } from '../components/ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nexport const getDisplayedFilters = ({\n formatMessage,\n users,\n canReadUsers,\n}: {\n formatMessage: IntlShape['formatMessage'];\n users: SanitizedAdminUser[];\n canReadUsers: boolean;\n}): Filters.Filter[] => {\n const operators = [\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$eq',\n defaultMessage: 'is',\n }),\n value: '$eq',\n },\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$ne',\n defaultMessage: 'is not',\n }),\n value: '$ne',\n },\n ] as NonNullable<Filters.Filter['operators']>;\n\n const filters = [\n {\n input: ComboboxFilter,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n name: 'action',\n operators,\n options: (Object.keys(actionTypes) as (keyof typeof actionTypes)[]).map((action) => ({\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n value: action,\n })),\n type: 'enumeration',\n },\n {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n name: 'date',\n type: 'datetime',\n },\n ] satisfies Filters.Filter[];\n\n if (canReadUsers && users) {\n return [\n ...filters,\n {\n input: ComboboxFilter,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n mainField: { name: 'id', type: 'integer' },\n name: 'user',\n operators,\n options: users.map((user) => ({\n label: getDisplayName(user),\n value: user.id.toString(),\n })),\n type: 'relation',\n } satisfies Filters.Filter,\n ];\n }\n\n return filters;\n};\n","import { Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Eye } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Filters } from '../../../../../../../admin/src/components/Filters';\nimport { Layouts } from '../../../../../../../admin/src/components/Layouts/Layout';\nimport { Page } from '../../../../../../../admin/src/components/PageHelpers';\nimport { Pagination } from '../../../../../../../admin/src/components/Pagination';\nimport { Table } from '../../../../../../../admin/src/components/Table';\nimport { useTypedSelector } from '../../../../../../../admin/src/core/store/hooks';\nimport { useQueryParams } from '../../../../../../../admin/src/hooks/useQueryParams';\nimport { useRBAC } from '../../../../../../../admin/src/hooks/useRBAC';\nimport { AuditLog } from '../../../../../../../shared/contracts/audit-logs';\n\nimport { Modal } from './components/Modal';\nimport { useAuditLogsData } from './hooks/useAuditLogsData';\nimport { useFormatTimeStamp } from './hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from './utils/getActionTypesDefaultMessages';\nimport { getDisplayedFilters } from './utils/getDisplayedFilters';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n isLoading: isLoadingRBAC,\n } = useRBAC({\n ...permissions?.auditLogs,\n readUsers: permissions?.users.read || [],\n });\n\n const [{ query }, setQuery] = useQueryParams<{ id?: AuditLog['id'] }>();\n const {\n auditLogs,\n users,\n isLoading: isLoadingData,\n hasError,\n } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n const formatTimeStamp = useFormatTimeStamp();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const headers: Table.Header<AuditLog, object>[] = [\n {\n name: 'action',\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n sortable: true,\n },\n {\n name: 'date',\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n sortable: true,\n },\n {\n name: 'user',\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n sortable: false,\n // In this case, the passed parameter cannot and shouldn't be something else than User\n cellFormatter: ({ user }) => (user ? user.displayName : ''),\n },\n ];\n\n if (hasError) {\n return <Page.Error />;\n }\n\n const isLoading = isLoadingData || isLoadingRBAC;\n\n const { results = [] } = auditLogs ?? {};\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n })}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <Layouts.Action\n startActions={\n <Filters.Root options={displayedFilters}>\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n }\n />\n <Layouts.Content>\n <Table.Root rows={results} headers={headers} isLoading={isLoading}>\n <Table.Content>\n <Table.Head>\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {results.map((log) => (\n <Table.Row key={log.id} onClick={() => setQuery({ id: log.id })}>\n {headers.map((header) => {\n const { name, cellFormatter } = header;\n\n switch (name) {\n case 'action':\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {formatMessage(\n {\n id: `Settings.permissions.auditLogs.${log.action}`,\n // @ts-expect-error – getDefaultMessage probably doesn't benefit from being so strongly typed unless we just add string at the end.\n defaultMessage: getDefaultMessage(log.action),\n },\n { model: (log.payload?.model as string) ?? '' }\n )}\n </Typography>\n </Table.Cell>\n );\n case 'date':\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {formatTimeStamp(log.date)}\n </Typography>\n </Table.Cell>\n );\n case 'user':\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {cellFormatter ? cellFormatter(log, header) : '-'}\n </Typography>\n </Table.Cell>\n );\n default:\n return (\n <Table.Cell key={name}>\n <Typography textColor=\"neutral800\">\n {(log[name as keyof AuditLog] as string) || '-'}\n </Typography>\n </Table.Cell>\n );\n }\n })}\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => setQuery({ id: log.id })}\n withTooltip={false}\n label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${log.action} action` }\n )}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n\n <Pagination.Root {...auditLogs?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n {query?.id && (\n <Modal handleClose={() => setQuery({ id: '' }, 'remove')} logId={query.id.toString()} />\n )}\n </Page.Main>\n );\n};\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.auditLogs?.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["DSModal"],"mappings":"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"}
@@ -9,11 +9,11 @@ const icons = require('@strapi/icons');
9
9
  const immer = require('immer');
10
10
  const reactIntl = require('react-intl');
11
11
  const reactRouterDom = require('react-router-dom');
12
- const index = require('./index-D4vvFryW.js');
13
- const Theme = require('./Theme-K6zNL3JT.js');
14
- const useAdminRoles = require('./useAdminRoles-Ck5p_pOt.js');
15
- const selectors = require('./selectors-DYNXQ1tD.js');
16
- const admin = require('./admin-3FVGSNUT.js');
12
+ const index = require('./index-RRj8QByf.js');
13
+ const Theme = require('./Theme-CV_l77KL.js');
14
+ const useAdminRoles = require('./useAdminRoles-DwDmGIlP.js');
15
+ const selectors = require('./selectors-CM2KPWni.js');
16
+ const admin = require('./admin-CoWMk1La.js');
17
17
 
18
18
  function _interopNamespace(e) {
19
19
  if (e && e.__esModule) return e;
@@ -290,4 +290,4 @@ const ProtectedListPage = () => {
290
290
 
291
291
  exports.ListPage = ListPage;
292
292
  exports.ProtectedListPage = ProtectedListPage;
293
- //# sourceMappingURL=ListPage-CCnBCVJc.js.map
293
+ //# sourceMappingURL=ListPage-78TTyjRW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-CCnBCVJc.js","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleRow.tsx","../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import { Box, Flex, IconButton, IconButtonProps, Td, Tr, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\n\ninterface RoleRowProps extends Pick<AdminRole, 'id' | 'name' | 'description' | 'usersCount'> {\n icons: Array<Required<Pick<IconButtonProps, 'children' | 'label' | 'onClick'>>>;\n rowIndex: number;\n canUpdate?: boolean;\n}\n\nconst RoleRow = ({\n id,\n name,\n description,\n usersCount,\n icons,\n rowIndex,\n canUpdate,\n}: RoleRowProps) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n onClick={canUpdate ? editObject.onClick : undefined}\n >\n <Td maxWidth={`13rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={`25rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {icons.map((icon, i) => {\n if (icon) {\n return (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton {...icon} variant=\"ghost\" />\n </Box>\n );\n }\n\n return null;\n })}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nexport { RoleRow };\nexport type { RoleRowProps };\n","import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["useIntl","jsxs","Tr","jsx","Td","Typography","Flex","Box","IconButton","useTypedSelector","selectAdminPermissions","useAPIErrorHandler","useNotification","React","useQueryParams","useRBAC","useAdminRoles","useNavigate","useFetchClient","isFetchError","Page","Layouts","Button","Plus","SearchInput","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","Duplicate","Pencil","Trash","Dialog","ConfirmDialog","produce"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage-78TTyjRW.js","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleRow.tsx","../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import { Box, Flex, IconButton, IconButtonProps, Td, Tr, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\n\ninterface RoleRowProps extends Pick<AdminRole, 'id' | 'name' | 'description' | 'usersCount'> {\n icons: Array<Required<Pick<IconButtonProps, 'children' | 'label' | 'onClick'>>>;\n rowIndex: number;\n canUpdate?: boolean;\n}\n\nconst RoleRow = ({\n id,\n name,\n description,\n usersCount,\n icons,\n rowIndex,\n canUpdate,\n}: RoleRowProps) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n onClick={canUpdate ? editObject.onClick : undefined}\n >\n <Td maxWidth={`13rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={`25rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {icons.map((icon, i) => {\n if (icon) {\n return (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton {...icon} variant=\"ghost\" />\n </Box>\n );\n }\n\n return null;\n })}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nexport { RoleRow };\nexport type { RoleRowProps };\n","import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["useIntl","jsxs","Tr","jsx","Td","Typography","Flex","Box","IconButton","useTypedSelector","selectAdminPermissions","useAPIErrorHandler","useNotification","React","useQueryParams","useRBAC","useAdminRoles","useNavigate","useFetchClient","isFetchError","Page","Layouts","Button","Plus","SearchInput","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","Duplicate","Pencil","Trash","Dialog","ConfirmDialog","produce"],"mappings":"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"}
@@ -5,9 +5,9 @@ import { Plus, Trash, Pencil } from '@strapi/icons';
5
5
  import { EmptyDocuments } from '@strapi/icons/symbols';
6
6
  import { useIntl } from 'react-intl';
7
7
  import { useNavigate, NavLink } from 'react-router-dom';
8
- import { b as Layouts, C as ConfirmDialog } from './index-CQ0jOkIC.mjs';
9
- import { b as useTypedSelector, P as Page, e as useAPIErrorHandler, a as useNotification, k as useRBAC } from './Theme-NAd2H4cV.mjs';
10
- import { u as useWebhooks } from './useWebhooks-C2yEtiSU.mjs';
8
+ import { b as Layouts, C as ConfirmDialog } from './index-UBwCyQ_3.mjs';
9
+ import { b as useTypedSelector, P as Page, e as useAPIErrorHandler, a as useNotification, k as useRBAC } from './Theme-Cw2LYZGD.mjs';
10
+ import { u as useWebhooks } from './useWebhooks-ChRqPd68.mjs';
11
11
 
12
12
  const ListPage = () => {
13
13
  const [showModal, setShowModal] = React.useState(false);
@@ -352,4 +352,4 @@ const ProtectedListPage = () => {
352
352
  };
353
353
 
354
354
  export { ListPage, ProtectedListPage };
355
- //# sourceMappingURL=ListPage-CocqTTCj.mjs.map
355
+ //# sourceMappingURL=ListPage-BIUdwz07.mjs.map