@strapi/admin 4.25.2 → 4.25.3

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 (215) hide show
  1. package/dist/_chunks/{AdminSeatInfo-bcBFqCmI.mjs → AdminSeatInfo-ZTG2jTo6.mjs} +3 -3
  2. package/dist/_chunks/{AdminSeatInfo-bcBFqCmI.mjs.map → AdminSeatInfo-ZTG2jTo6.mjs.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-46TP3rAL.js → AdminSeatInfo-o-iJwD_q.js} +3 -3
  4. package/dist/_chunks/{AdminSeatInfo-46TP3rAL.js.map → AdminSeatInfo-o-iJwD_q.js.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-D79_VNiJ.mjs → AuthenticatedApp-TDna3YB9.mjs} +20 -20
  6. package/dist/_chunks/{AuthenticatedApp-D79_VNiJ.mjs.map → AuthenticatedApp-TDna3YB9.mjs.map} +1 -1
  7. package/dist/_chunks/{AuthenticatedApp-wWZxcjS8.js → AuthenticatedApp-tPmFNJYV.js} +20 -20
  8. package/dist/_chunks/{AuthenticatedApp-wWZxcjS8.js.map → AuthenticatedApp-tPmFNJYV.js.map} +1 -1
  9. package/dist/_chunks/{CreateActionEE-IMuzh1j5.mjs → CreateActionEE-1D2NXJ6M.mjs} +2 -2
  10. package/dist/_chunks/{CreateActionEE-IMuzh1j5.mjs.map → CreateActionEE-1D2NXJ6M.mjs.map} +1 -1
  11. package/dist/_chunks/{CreateActionEE-4WavovAT.js → CreateActionEE-FzYDjU19.js} +2 -2
  12. package/dist/_chunks/{CreateActionEE-4WavovAT.js.map → CreateActionEE-FzYDjU19.js.map} +1 -1
  13. package/dist/_chunks/{CreatePage-7mC2Gnuz.js → CreatePage-8N4PP5tv.js} +3 -3
  14. package/dist/_chunks/{CreatePage-7mC2Gnuz.js.map → CreatePage-8N4PP5tv.js.map} +1 -1
  15. package/dist/_chunks/{CreatePage-9HdNSZfc.js → CreatePage-8r3qO4A5.js} +6 -6
  16. package/dist/_chunks/{CreatePage-9HdNSZfc.js.map → CreatePage-8r3qO4A5.js.map} +1 -1
  17. package/dist/_chunks/{CreatePage-3FBjoyen.mjs → CreatePage-Np_oWHmz.mjs} +3 -3
  18. package/dist/_chunks/{CreatePage-3FBjoyen.mjs.map → CreatePage-Np_oWHmz.mjs.map} +1 -1
  19. package/dist/_chunks/{CreatePage-7QD9XcTs.mjs → CreatePage-RwkXjboP.mjs} +8 -8
  20. package/dist/_chunks/{CreatePage-7QD9XcTs.mjs.map → CreatePage-RwkXjboP.mjs.map} +1 -1
  21. package/dist/_chunks/{CreatePage-oPF05Bqj.js → CreatePage-SmL3P2AW.js} +8 -8
  22. package/dist/_chunks/{CreatePage-oPF05Bqj.js.map → CreatePage-SmL3P2AW.js.map} +1 -1
  23. package/dist/_chunks/{CreatePage-PT4KbFGg.mjs → CreatePage-qkeBTd4b.mjs} +6 -6
  24. package/dist/_chunks/{CreatePage-PT4KbFGg.mjs.map → CreatePage-qkeBTd4b.mjs.map} +1 -1
  25. package/dist/_chunks/{CreateView-OvOYC5RD.mjs → CreateView-FRQiju9N.mjs} +6 -6
  26. package/dist/_chunks/{CreateView-OvOYC5RD.mjs.map → CreateView-FRQiju9N.mjs.map} +1 -1
  27. package/dist/_chunks/{CreateView-qUnGU4D8.js → CreateView-Yav2ZPNh.js} +6 -6
  28. package/dist/_chunks/{CreateView-qUnGU4D8.js.map → CreateView-Yav2ZPNh.js.map} +1 -1
  29. package/dist/_chunks/{CreateView-z_D1DCiy.mjs → CreateView-jkgKv4Md.mjs} +6 -6
  30. package/dist/_chunks/{CreateView-z_D1DCiy.mjs.map → CreateView-jkgKv4Md.mjs.map} +1 -1
  31. package/dist/_chunks/{CreateView-_yVJyovn.js → CreateView-wfahDS8i.js} +6 -6
  32. package/dist/_chunks/{CreateView-_yVJyovn.js.map → CreateView-wfahDS8i.js.map} +1 -1
  33. package/dist/_chunks/{EditPage--bIEbepS.js → EditPage-H3NyphHb.js} +6 -6
  34. package/dist/_chunks/{EditPage--bIEbepS.js.map → EditPage-H3NyphHb.js.map} +1 -1
  35. package/dist/_chunks/{EditPage-zCH_sx6N.js → EditPage-HaXHPRxK.js} +6 -6
  36. package/dist/_chunks/{EditPage-zCH_sx6N.js.map → EditPage-HaXHPRxK.js.map} +1 -1
  37. package/dist/_chunks/{EditPage-Bm_G78-a.mjs → EditPage-JoBzq_nU.mjs} +6 -6
  38. package/dist/_chunks/{EditPage-Bm_G78-a.mjs.map → EditPage-JoBzq_nU.mjs.map} +1 -1
  39. package/dist/_chunks/{EditPage-pOPnyMTZ.js → EditPage-XDHh5uSz.js} +9 -9
  40. package/dist/_chunks/{EditPage-pOPnyMTZ.js.map → EditPage-XDHh5uSz.js.map} +1 -1
  41. package/dist/_chunks/{EditPage-E9ocuIpQ.mjs → EditPage-hED4pNup.mjs} +6 -6
  42. package/dist/_chunks/{EditPage-E9ocuIpQ.mjs.map → EditPage-hED4pNup.mjs.map} +1 -1
  43. package/dist/_chunks/{EditPage-kmMfGqPg.js → EditPage-pNeVIhsH.js} +4 -4
  44. package/dist/_chunks/{EditPage-kmMfGqPg.js.map → EditPage-pNeVIhsH.js.map} +1 -1
  45. package/dist/_chunks/{EditPage-XSwvLIVK.mjs → EditPage-rr4aT-K9.mjs} +9 -9
  46. package/dist/_chunks/{EditPage-XSwvLIVK.mjs.map → EditPage-rr4aT-K9.mjs.map} +1 -1
  47. package/dist/_chunks/{EditPage-D4-vlALV.mjs → EditPage-rxQUgCPu.mjs} +4 -4
  48. package/dist/_chunks/{EditPage-D4-vlALV.mjs.map → EditPage-rxQUgCPu.mjs.map} +1 -1
  49. package/dist/_chunks/{EditView-3UgtmgSM.mjs → EditView-INvB964T.mjs} +4 -4
  50. package/dist/_chunks/{EditView-3UgtmgSM.mjs.map → EditView-INvB964T.mjs.map} +1 -1
  51. package/dist/_chunks/{EditView-E3OvkeIC.js → EditView-gvnFAvdN.js} +4 -4
  52. package/dist/_chunks/{EditView-E3OvkeIC.js.map → EditView-gvnFAvdN.js.map} +1 -1
  53. package/dist/_chunks/{EditViewPage-mLuYcW5G.js → EditViewPage-ccJeinSd.js} +4 -4
  54. package/dist/_chunks/{EditViewPage-mLuYcW5G.js.map → EditViewPage-ccJeinSd.js.map} +1 -1
  55. package/dist/_chunks/{EditViewPage-OKCLwxDD.mjs → EditViewPage-zOJDgmWF.mjs} +4 -4
  56. package/dist/_chunks/{EditViewPage-OKCLwxDD.mjs.map → EditViewPage-zOJDgmWF.mjs.map} +1 -1
  57. package/dist/_chunks/{EventsTable-lwDGPldA.mjs → EventsTable-63AUy9d7.mjs} +6 -6
  58. package/dist/_chunks/{EventsTable-lwDGPldA.mjs.map → EventsTable-63AUy9d7.mjs.map} +1 -1
  59. package/dist/_chunks/{EventsTable--vX6XT3K.js → EventsTable-tg8-WLPc.js} +6 -6
  60. package/dist/_chunks/{EventsTable--vX6XT3K.js.map → EventsTable-tg8-WLPc.js.map} +1 -1
  61. package/dist/_chunks/{HomePage-owPvdCOn.mjs → HomePage-5ZpulRb9.mjs} +6 -6
  62. package/dist/_chunks/{HomePage-owPvdCOn.mjs.map → HomePage-5ZpulRb9.mjs.map} +1 -1
  63. package/dist/_chunks/{HomePage-zpSagtZ6.js → HomePage-9ZVMAic8.js} +6 -6
  64. package/dist/_chunks/{HomePage-zpSagtZ6.js.map → HomePage-9ZVMAic8.js.map} +1 -1
  65. package/dist/_chunks/{HomePage-QorRgXKx.mjs → HomePage-YEc3H8IG.mjs} +6 -6
  66. package/dist/_chunks/{HomePage-QorRgXKx.mjs.map → HomePage-YEc3H8IG.mjs.map} +1 -1
  67. package/dist/_chunks/{HomePage-s8dv-sLU.js → HomePage-x-WxH3nf.js} +6 -6
  68. package/dist/_chunks/{HomePage-s8dv-sLU.js.map → HomePage-x-WxH3nf.js.map} +1 -1
  69. package/dist/_chunks/{InformationBoxEE-pwoNRa3_.mjs → InformationBoxEE-1QKxJd0i.mjs} +3 -3
  70. package/dist/_chunks/{InformationBoxEE-pwoNRa3_.mjs.map → InformationBoxEE-1QKxJd0i.mjs.map} +1 -1
  71. package/dist/_chunks/{InformationBoxEE-FwOrlaKh.js → InformationBoxEE-ElxYWd8p.js} +3 -3
  72. package/dist/_chunks/{InformationBoxEE-FwOrlaKh.js.map → InformationBoxEE-ElxYWd8p.js.map} +1 -1
  73. package/dist/_chunks/{InstalledPluginsPage-VqKuwZPA.mjs → InstalledPluginsPage--6CtgHVA.mjs} +3 -3
  74. package/dist/_chunks/{InstalledPluginsPage-VqKuwZPA.mjs.map → InstalledPluginsPage--6CtgHVA.mjs.map} +1 -1
  75. package/dist/_chunks/{InstalledPluginsPage-XntWkjUq.js → InstalledPluginsPage-KNYK4UeI.js} +3 -3
  76. package/dist/_chunks/{InstalledPluginsPage-XntWkjUq.js.map → InstalledPluginsPage-KNYK4UeI.js.map} +1 -1
  77. package/dist/_chunks/{Layout-laILCEtR.js → Layout-7CXJVxgf.js} +2 -2
  78. package/dist/_chunks/{Layout-laILCEtR.js.map → Layout-7CXJVxgf.js.map} +1 -1
  79. package/dist/_chunks/{Layout-lS-G5smT.mjs → Layout-lRfDKQk8.mjs} +2 -2
  80. package/dist/_chunks/{Layout-lS-G5smT.mjs.map → Layout-lRfDKQk8.mjs.map} +1 -1
  81. package/dist/_chunks/{ListPage-dMRsiJzC.mjs → ListPage--eqq9Ed3.mjs} +3 -3
  82. package/dist/_chunks/{ListPage-dMRsiJzC.mjs.map → ListPage--eqq9Ed3.mjs.map} +1 -1
  83. package/dist/_chunks/{ListPage-3Er3LNin.mjs → ListPage-0OSHLu-B.mjs} +2 -2
  84. package/dist/_chunks/{ListPage-3Er3LNin.mjs.map → ListPage-0OSHLu-B.mjs.map} +1 -1
  85. package/dist/_chunks/{ListPage-LNS6CKl0.js → ListPage-4b_pxpmA.js} +2 -2
  86. package/dist/_chunks/{ListPage-LNS6CKl0.js.map → ListPage-4b_pxpmA.js.map} +1 -1
  87. package/dist/_chunks/{ListPage-3Yf08XzX.js → ListPage-9E03TjJN.js} +4 -4
  88. package/dist/_chunks/{ListPage-3Yf08XzX.js.map → ListPage-9E03TjJN.js.map} +1 -1
  89. package/dist/_chunks/{ListPage-X4PJbNji.js → ListPage-9od_Ur4Y.js} +6 -6
  90. package/dist/_chunks/{ListPage-X4PJbNji.js.map → ListPage-9od_Ur4Y.js.map} +1 -1
  91. package/dist/_chunks/{ListPage-ZIzokZkR.mjs → ListPage-ElXHnWrv.mjs} +6 -6
  92. package/dist/_chunks/{ListPage-ZIzokZkR.mjs.map → ListPage-ElXHnWrv.mjs.map} +1 -1
  93. package/dist/_chunks/{ListPage-Ybb577tu.mjs → ListPage-K7aWHpB8.mjs} +8 -8
  94. package/dist/_chunks/{ListPage-Ybb577tu.mjs.map → ListPage-K7aWHpB8.mjs.map} +1 -1
  95. package/dist/_chunks/{ListPage-afEqS3n1.mjs → ListPage-N_7gWSog.mjs} +4 -4
  96. package/dist/_chunks/{ListPage-afEqS3n1.mjs.map → ListPage-N_7gWSog.mjs.map} +1 -1
  97. package/dist/_chunks/{ListPage-IIhVuRTQ.mjs → ListPage-ciUJHEVH.mjs} +7 -7
  98. package/dist/_chunks/{ListPage-IIhVuRTQ.mjs.map → ListPage-ciUJHEVH.mjs.map} +1 -1
  99. package/dist/_chunks/{ListPage-sgLhysoO.js → ListPage-gSfv-ck7.js} +8 -8
  100. package/dist/_chunks/{ListPage-sgLhysoO.js.map → ListPage-gSfv-ck7.js.map} +1 -1
  101. package/dist/_chunks/{ListPage-wWe01Euj.js → ListPage-iuZVoEo4.js} +3 -3
  102. package/dist/_chunks/{ListPage-wWe01Euj.js.map → ListPage-iuZVoEo4.js.map} +1 -1
  103. package/dist/_chunks/{ListPage-wjdBIzGM.js → ListPage-xMppcuMq.js} +7 -7
  104. package/dist/_chunks/{ListPage-wjdBIzGM.js.map → ListPage-xMppcuMq.js.map} +1 -1
  105. package/dist/_chunks/{ListView-W-O4yJ30.mjs → ListView-8Wuffhl-.mjs} +3 -3
  106. package/dist/_chunks/{ListView-W-O4yJ30.mjs.map → ListView-8Wuffhl-.mjs.map} +1 -1
  107. package/dist/_chunks/{ListView-PW3gydcc.mjs → ListView-ZLFnXVop.mjs} +3 -3
  108. package/dist/_chunks/{ListView-PW3gydcc.mjs.map → ListView-ZLFnXVop.mjs.map} +1 -1
  109. package/dist/_chunks/{ListView-x63KIi1x.js → ListView-nR6XTs12.js} +3 -3
  110. package/dist/_chunks/{ListView-x63KIi1x.js.map → ListView-nR6XTs12.js.map} +1 -1
  111. package/dist/_chunks/{ListView-1U7SCz98.js → ListView-qsU96H64.js} +3 -3
  112. package/dist/_chunks/{ListView-1U7SCz98.js.map → ListView-qsU96H64.js.map} +1 -1
  113. package/dist/_chunks/{Login-rHu3RT4j.js → Login-56fbJv4J.js} +2 -2
  114. package/dist/_chunks/{Login-rHu3RT4j.js.map → Login-56fbJv4J.js.map} +1 -1
  115. package/dist/_chunks/{Login-NvjA-d8d.mjs → Login-PFWdW56H.mjs} +2 -2
  116. package/dist/_chunks/{Login-NvjA-d8d.mjs.map → Login-PFWdW56H.mjs.map} +1 -1
  117. package/dist/_chunks/{MagicLinkEE-o9TmmsCN.js → MagicLinkEE-aFh3b3CS.js} +4 -4
  118. package/dist/_chunks/{MagicLinkEE-o9TmmsCN.js.map → MagicLinkEE-aFh3b3CS.js.map} +1 -1
  119. package/dist/_chunks/{MagicLinkEE-_kvSJJbl.mjs → MagicLinkEE-mIYrT9RR.mjs} +4 -4
  120. package/dist/_chunks/{MagicLinkEE-_kvSJJbl.mjs.map → MagicLinkEE-mIYrT9RR.mjs.map} +1 -1
  121. package/dist/_chunks/{MarketplacePage-vy7e8EFN.mjs → MarketplacePage-BqpCz7lI.mjs} +3 -3
  122. package/dist/_chunks/{MarketplacePage-vy7e8EFN.mjs.map → MarketplacePage-BqpCz7lI.mjs.map} +1 -1
  123. package/dist/_chunks/{MarketplacePage-S3YQ3xnb.js → MarketplacePage-Y2W9gWGh.js} +3 -3
  124. package/dist/_chunks/{MarketplacePage-S3YQ3xnb.js.map → MarketplacePage-Y2W9gWGh.js.map} +1 -1
  125. package/dist/_chunks/{Permissions-PoKu-7lx.js → Permissions-AsUKZ0wg.js} +2 -2
  126. package/dist/_chunks/{Permissions-PoKu-7lx.js.map → Permissions-AsUKZ0wg.js.map} +1 -1
  127. package/dist/_chunks/{Permissions-pJgPxu4B.mjs → Permissions-pj1Wpskq.mjs} +2 -2
  128. package/dist/_chunks/{Permissions-pJgPxu4B.mjs.map → Permissions-pj1Wpskq.mjs.map} +1 -1
  129. package/dist/_chunks/{ProfilePage-UNFvJ7PG.js → ProfilePage-hNQma10R.js} +3 -3
  130. package/dist/_chunks/{ProfilePage-UNFvJ7PG.js.map → ProfilePage-hNQma10R.js.map} +1 -1
  131. package/dist/_chunks/{ProfilePage-5Xf1n1Ka.mjs → ProfilePage-u64dqiiw.mjs} +3 -3
  132. package/dist/_chunks/{ProfilePage-5Xf1n1Ka.mjs.map → ProfilePage-u64dqiiw.mjs.map} +1 -1
  133. package/dist/_chunks/{ReviewWorkflowsColumn-sqB3XLT9.mjs → ReviewWorkflowsColumn-KdY89vgr.mjs} +2 -2
  134. package/dist/_chunks/{ReviewWorkflowsColumn-sqB3XLT9.mjs.map → ReviewWorkflowsColumn-KdY89vgr.mjs.map} +1 -1
  135. package/dist/_chunks/{ReviewWorkflowsColumn-2JH1rwi1.js → ReviewWorkflowsColumn-_lR5mIik.js} +2 -2
  136. package/dist/_chunks/{ReviewWorkflowsColumn-2JH1rwi1.js.map → ReviewWorkflowsColumn-_lR5mIik.js.map} +1 -1
  137. package/dist/_chunks/{SelectRoles-y4OZqzaa.js → SelectRoles-PO0TBPNy.js} +3 -3
  138. package/dist/_chunks/{SelectRoles-y4OZqzaa.js.map → SelectRoles-PO0TBPNy.js.map} +1 -1
  139. package/dist/_chunks/{SelectRoles-NXs-IS6a.mjs → SelectRoles-eeeX83et.mjs} +3 -3
  140. package/dist/_chunks/{SelectRoles-NXs-IS6a.mjs.map → SelectRoles-eeeX83et.mjs.map} +1 -1
  141. package/dist/_chunks/{SettingsPage-GLj5BhBc.mjs → SettingsPage-pBUmJW3r.mjs} +21 -21
  142. package/dist/_chunks/{SettingsPage-GLj5BhBc.mjs.map → SettingsPage-pBUmJW3r.mjs.map} +1 -1
  143. package/dist/_chunks/{SettingsPage-HRbpK6uk.js → SettingsPage-ySB-WjD_.js} +21 -21
  144. package/dist/_chunks/{SettingsPage-HRbpK6uk.js.map → SettingsPage-ySB-WjD_.js.map} +1 -1
  145. package/dist/_chunks/{SingleSignOnPage-FYRBInzo.js → SingleSignOnPage-JuywARAq.js} +3 -3
  146. package/dist/_chunks/{SingleSignOnPage-FYRBInzo.js.map → SingleSignOnPage-JuywARAq.js.map} +1 -1
  147. package/dist/_chunks/{SingleSignOnPage-h-p9r7Bt.mjs → SingleSignOnPage-UMtsCDqg.mjs} +3 -3
  148. package/dist/_chunks/{SingleSignOnPage-h-p9r7Bt.mjs.map → SingleSignOnPage-UMtsCDqg.mjs.map} +1 -1
  149. package/dist/_chunks/{TokenTypeSelect-cxSA5Q_s.js → TokenTypeSelect-D6Zw2Yfz.js} +2 -2
  150. package/dist/_chunks/{TokenTypeSelect-cxSA5Q_s.js.map → TokenTypeSelect-D6Zw2Yfz.js.map} +1 -1
  151. package/dist/_chunks/{TokenTypeSelect-HNhpdjXP.mjs → TokenTypeSelect-ZErutU6G.mjs} +2 -2
  152. package/dist/_chunks/{TokenTypeSelect-HNhpdjXP.mjs.map → TokenTypeSelect-ZErutU6G.mjs.map} +1 -1
  153. package/dist/_chunks/{apiTokens-zM4Q6QQq.mjs → apiTokens-8L-WkI8y.mjs} +2 -2
  154. package/dist/_chunks/{apiTokens-zM4Q6QQq.mjs.map → apiTokens-8L-WkI8y.mjs.map} +1 -1
  155. package/dist/_chunks/{apiTokens-j7lgvylD.js → apiTokens-8TyCeTNN.js} +2 -2
  156. package/dist/_chunks/{apiTokens-j7lgvylD.js.map → apiTokens-8TyCeTNN.js.map} +1 -1
  157. package/dist/_chunks/{constants-_F268M3K.mjs → constants-8DRWAhBy.mjs} +6 -6
  158. package/dist/_chunks/{constants-_F268M3K.mjs.map → constants-8DRWAhBy.mjs.map} +1 -1
  159. package/dist/_chunks/{constants-OYzaUFCl.js → constants-BXFYq41N.js} +4 -4
  160. package/dist/_chunks/{constants-OYzaUFCl.js.map → constants-BXFYq41N.js.map} +1 -1
  161. package/dist/_chunks/{constants-dIQMcHLz.js → constants-C2UW8ikd.js} +6 -6
  162. package/dist/_chunks/{constants-dIQMcHLz.js.map → constants-C2UW8ikd.js.map} +1 -1
  163. package/dist/_chunks/{constants-q3Q-3-wD.mjs → constants-V5thbJ6s.mjs} +4 -4
  164. package/dist/_chunks/{constants-q3Q-3-wD.mjs.map → constants-V5thbJ6s.mjs.map} +1 -1
  165. package/dist/_chunks/{constants-vyO64GIf.js → constants-enN41Pb8.js} +2 -2
  166. package/dist/_chunks/{constants-vyO64GIf.js.map → constants-enN41Pb8.js.map} +1 -1
  167. package/dist/_chunks/{constants-CQosjeww.mjs → constants-hv7ReJO4.mjs} +2 -2
  168. package/dist/_chunks/{constants-CQosjeww.mjs.map → constants-hv7ReJO4.mjs.map} +1 -1
  169. package/dist/_chunks/{constants-thu9bP7u.js → constants-yekbJFW5.js} +2 -2
  170. package/dist/_chunks/{constants-thu9bP7u.js.map → constants-yekbJFW5.js.map} +1 -1
  171. package/dist/_chunks/{constants-Cd-p1ZRw.mjs → constants-zinDCwY2.mjs} +2 -2
  172. package/dist/_chunks/{constants-Cd-p1ZRw.mjs.map → constants-zinDCwY2.mjs.map} +1 -1
  173. package/dist/_chunks/{en-ZwaF4t5c.mjs → en-LlTBXie5.mjs} +2 -2
  174. package/dist/_chunks/{en-ZwaF4t5c.mjs.map → en-LlTBXie5.mjs.map} +1 -1
  175. package/dist/_chunks/{en-sP8T18rk.js → en-UdTZS0x5.js} +2 -2
  176. package/dist/_chunks/{en-sP8T18rk.js.map → en-UdTZS0x5.js.map} +1 -1
  177. package/dist/_chunks/{index-RiA3iJd0.mjs → index-ER4WA-87.mjs} +11 -11
  178. package/dist/_chunks/{index-RiA3iJd0.mjs.map → index-ER4WA-87.mjs.map} +1 -1
  179. package/dist/_chunks/{index-uF-GaBnZ.js → index-th9mGR7q.js} +11 -11
  180. package/dist/_chunks/{index-uF-GaBnZ.js.map → index-th9mGR7q.js.map} +1 -1
  181. package/dist/_chunks/{reviewWorkflows-4Udz6PeN.mjs → reviewWorkflows-M3i3aXeR.mjs} +2 -2
  182. package/dist/_chunks/{reviewWorkflows-4Udz6PeN.mjs.map → reviewWorkflows-M3i3aXeR.mjs.map} +1 -1
  183. package/dist/_chunks/{reviewWorkflows-SbqVPLYy.js → reviewWorkflows-xo1ys37b.js} +2 -2
  184. package/dist/_chunks/{reviewWorkflows-SbqVPLYy.js.map → reviewWorkflows-xo1ys37b.js.map} +1 -1
  185. package/dist/_chunks/{transferTokens-r6bU1zV4.js → transferTokens-Rc9K-nFg.js} +2 -2
  186. package/dist/_chunks/{transferTokens-r6bU1zV4.js.map → transferTokens-Rc9K-nFg.js.map} +1 -1
  187. package/dist/_chunks/{transferTokens-4Bv3EStk.mjs → transferTokens-lzwdlJfu.mjs} +2 -2
  188. package/dist/_chunks/{transferTokens-4Bv3EStk.mjs.map → transferTokens-lzwdlJfu.mjs.map} +1 -1
  189. package/dist/_chunks/{useAdminRoles-LdHFJ5yM.mjs → useAdminRoles-8SY0px_q.mjs} +2 -2
  190. package/dist/_chunks/{useAdminRoles-LdHFJ5yM.mjs.map → useAdminRoles-8SY0px_q.mjs.map} +1 -1
  191. package/dist/_chunks/{useAdminRoles-en9988CX.js → useAdminRoles-WJU6aWpi.js} +2 -2
  192. package/dist/_chunks/{useAdminRoles-en9988CX.js.map → useAdminRoles-WJU6aWpi.js.map} +1 -1
  193. package/dist/_chunks/{useContentTypes-RTZDoh9j.mjs → useContentTypes-2ZxuL0lM.mjs} +2 -2
  194. package/dist/_chunks/{useContentTypes-RTZDoh9j.mjs.map → useContentTypes-2ZxuL0lM.mjs.map} +1 -1
  195. package/dist/_chunks/{useContentTypes-DzjZqcsC.js → useContentTypes-SEZtUfQx.js} +2 -2
  196. package/dist/_chunks/{useContentTypes-DzjZqcsC.js.map → useContentTypes-SEZtUfQx.js.map} +1 -1
  197. package/dist/_chunks/{useLicenseLimitNotification-exPabKDv.js → useLicenseLimitNotification-6hTIqgnq.js} +2 -2
  198. package/dist/_chunks/{useLicenseLimitNotification-exPabKDv.js.map → useLicenseLimitNotification-6hTIqgnq.js.map} +1 -1
  199. package/dist/_chunks/{useLicenseLimitNotification-cbnY94J6.mjs → useLicenseLimitNotification-gBCYeBPt.mjs} +2 -2
  200. package/dist/_chunks/{useLicenseLimitNotification-cbnY94J6.mjs.map → useLicenseLimitNotification-gBCYeBPt.mjs.map} +1 -1
  201. package/dist/_chunks/{useReviewWorkflows-r9TcKNbA.js → useReviewWorkflows-X6AHp4YR.js} +2 -2
  202. package/dist/_chunks/{useReviewWorkflows-r9TcKNbA.js.map → useReviewWorkflows-X6AHp4YR.js.map} +1 -1
  203. package/dist/_chunks/{useReviewWorkflows-j16gFAey.mjs → useReviewWorkflows-luUKlzeI.mjs} +2 -2
  204. package/dist/_chunks/{useReviewWorkflows-j16gFAey.mjs.map → useReviewWorkflows-luUKlzeI.mjs.map} +1 -1
  205. package/dist/_chunks/{useWebhooks-69wwIYhj.js → useWebhooks-3RDoJ2ZD.js} +2 -2
  206. package/dist/_chunks/{useWebhooks-69wwIYhj.js.map → useWebhooks-3RDoJ2ZD.js.map} +1 -1
  207. package/dist/_chunks/{useWebhooks-zP0GkxQH.mjs → useWebhooks-Uz7418KL.mjs} +2 -2
  208. package/dist/_chunks/{useWebhooks-zP0GkxQH.mjs.map → useWebhooks-Uz7418KL.mjs.map} +1 -1
  209. package/dist/_chunks/{validateWorkflow-9Pb-9Yoo.mjs → validateWorkflow-McEpYHnX.mjs} +2 -2
  210. package/dist/_chunks/{validateWorkflow-9Pb-9Yoo.mjs.map → validateWorkflow-McEpYHnX.mjs.map} +1 -1
  211. package/dist/_chunks/{validateWorkflow-H2jxs9LC.js → validateWorkflow-h3MYtGtA.js} +2 -2
  212. package/dist/_chunks/{validateWorkflow-H2jxs9LC.js.map → validateWorkflow-h3MYtGtA.js.map} +1 -1
  213. package/dist/admin/index.js +1 -1
  214. package/dist/admin/index.mjs +1 -1
  215. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-Ybb577tu.mjs","sources":["../../admin/src/pages/Settings/pages/Users/components/CreateActionCE.tsx","../../admin/src/pages/Settings/pages/Users/components/NewUserForm.tsx","../../admin/src/pages/Settings/pages/Users/components/TableRows.tsx","../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import { Button, ButtonProps } from '@strapi/design-system';\nimport { Envelop } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface CreateActionCEProps extends Pick<ButtonProps, 'onClick'> {}\n\nconst CreateActionCE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onClick} startIcon={<Envelop />} size=\"S\">\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n );\n};\n\nexport { CreateActionCE };\nexport type { CreateActionCEProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport {\n Form,\n GenericInput,\n useNotification,\n useOverlayBlocker,\n translatedErrors,\n useAPIErrorHandler,\n} from '@strapi/helper-plugin';\nimport { Entity } from '@strapi/types';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { useCreateUserMutation } from '../../../../../services/users';\nimport { FormLayout } from '../../../../../types/form';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\n\nimport { MagicLinkCE } from './MagicLinkCE';\nimport { SelectRoles } from './SelectRoles';\n\ninterface ModalFormProps {\n onToggle: () => void;\n}\n\nconst ModalForm = ({ onToggle }: ModalFormProps) => {\n const [currentStep, setStep] = React.useState<keyof typeof STEPPER>('create');\n const [registrationToken, setRegistrationToken] = React.useState('');\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const roleLayout = useEnterprise(\n ROLE_LAYOUT,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).ROLE_LAYOUT,\n {\n combine(ceRoles, eeRoles) {\n return [...ceRoles, ...eeRoles];\n },\n\n defaultValue: [],\n }\n );\n\n const initialValues = useEnterprise<InitialData>(\n FORM_INITIAL_VALUES,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).FORM_INITIAL_VALUES,\n {\n combine(ceValues, eeValues) {\n return {\n ...ceValues,\n ...eeValues,\n };\n },\n\n defaultValue: FORM_INITIAL_VALUES,\n }\n );\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n\n const [createUser] = useCreateUserMutation();\n\n const headerTitle = formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n });\n\n const handleSubmit = async (body: InitialData, { setErrors }: FormikHelpers<InitialData>) => {\n // @ts-expect-error – this will be fixed in V5.\n lockApp();\n\n const res = await createUser({\n ...body,\n roles: body.roles ?? [],\n });\n\n if ('data' in res) {\n if (res.data.registrationToken) {\n setRegistrationToken(res.data.registrationToken);\n\n goNext();\n } else {\n // This shouldn't happen, but just incase.\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n }\n }\n\n // @ts-expect-error – this will be fixed in V5.\n unlockApp();\n };\n\n const goNext = () => {\n if (next) {\n setStep(next);\n } else {\n onToggle();\n }\n };\n\n const { buttonSubmitLabel, isDisabled, next } = STEPPER[currentStep];\n\n // block rendering until the EE component is fully loaded\n if (!MagicLink) {\n return null;\n }\n\n return (\n <ModalLayout onClose={onToggle} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={headerTitle}>\n <Crumb isCurrent>{headerTitle}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <Formik\n enableReinitialize\n initialValues={initialValues ?? {}}\n onSubmit={handleSubmit}\n validationSchema={FORM_SCHEMA}\n validateOnChange={false}\n >\n {({ errors, handleChange, values, isSubmitting }) => {\n return (\n <Form>\n <ModalBody>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {currentStep !== 'create' && <MagicLink registrationToken={registrationToken} />}\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'User details',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid gap={5}>\n {FORM_LAYOUT.map((row) => {\n return row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={isDisabled}\n error={errors[input.name as keyof InitialData]}\n onChange={handleChange}\n value={values[input.name as keyof InitialData]}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Flex>\n </Box>\n </Box>\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Box paddingTop={4}>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles\n disabled={isDisabled}\n error={errors.roles}\n onChange={handleChange}\n value={values.roles ?? []}\n />\n </GridItem>\n {roleLayout.map((row) => {\n return row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={isDisabled}\n onChange={handleChange}\n value={values[input.name]}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Box>\n </Box>\n </Flex>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endActions={\n currentStep === 'create' ? (\n <Button type=\"submit\" loading={isSubmitting}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n ) : (\n <Button type=\"button\" loading={isSubmitting} onClick={onToggle}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n )\n }\n />\n </Form>\n );\n }}\n </Formik>\n </ModalLayout>\n );\n};\n\ninterface InitialData {\n firstname?: string;\n lastname?: string;\n email?: string;\n roles?: Entity.ID[];\n useSSORegistration?: boolean;\n}\n\nconst FORM_INITIAL_VALUES = {\n firstname: '',\n lastname: '',\n email: '',\n roles: [],\n};\n\nconst ROLE_LAYOUT = [] satisfies FormLayout[][];\n\nconst FORM_LAYOUT = [\n [\n {\n intlLabel: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n ],\n] satisfies FormLayout[][];\n\nconst FORM_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).required(translatedErrors.required),\n roles: yup.array().min(1, translatedErrors.required).required(translatedErrors.required),\n});\n\nconst STEPPER = {\n create: {\n buttonSubmitLabel: {\n id: 'app.containers.Users.ModalForm.footer.button-success',\n defaultMessage: 'Invite user',\n },\n isDisabled: false,\n next: 'magic-link',\n },\n 'magic-link': {\n buttonSubmitLabel: { id: 'global.finish', defaultMessage: 'Finish' },\n isDisabled: true,\n next: null,\n },\n} as const;\n\nexport { ModalForm };\nexport type { InitialData };\n","import {\n BaseCheckbox,\n Box,\n Flex,\n IconButton,\n Tbody,\n Td,\n Tr,\n Typography,\n} from '@strapi/design-system';\nimport { TableRowProps, onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../../shared/contracts/shared';\nimport { getFullName } from '../../../../../utils/getFullName';\n\nimport type { ListPageTableHeader } from '../ListPage';\n\ninterface TableRowsProps extends Partial<TableRowProps<SanitizedAdminUser, ListPageTableHeader>> {\n canDelete: boolean;\n}\n\nconst TableRows = ({\n canDelete,\n headers = [],\n entriesToDelete = [],\n onClickDelete,\n onSelectRow,\n withMainAction,\n withBulkActions,\n rows = [],\n}: TableRowsProps) => {\n const {\n push,\n location: { pathname },\n } = useHistory();\n const { formatMessage } = useIntl();\n\n return (\n <Tbody>\n {rows.map((data) => {\n const isChecked = entriesToDelete.findIndex((id) => id === data.id) !== -1;\n\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => push(`${pathname}/${data.id}`),\n condition: withBulkActions,\n })}\n >\n {withMainAction && (\n <Td {...stopPropagation}>\n <BaseCheckbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: getFullName(data?.firstname ?? '', data.lastname) }\n )}\n checked={isChecked}\n onChange={() => {\n if (onSelectRow) {\n onSelectRow({ name: data.id, value: !isChecked });\n }\n }}\n />\n </Td>\n )}\n {headers.map(({ key, cellFormatter, name, ...rest }) => {\n return (\n <Td key={key}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(data, { key, name, formatMessage, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{data[name] || '-'}</Typography>\n )}\n </Td>\n );\n })}\n\n {withBulkActions && (\n <Td>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => push(`${pathname}/${data.id}`)}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getFullName(data.firstname ?? '', data.lastname) }\n )}\n noBorder\n icon={<Pencil />}\n />\n\n {canDelete && (\n <Box paddingLeft={1} {...stopPropagation}>\n <IconButton\n onClick={() => {\n if (onClickDelete) {\n onClickDelete(data.id);\n }\n }}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getFullName(data.firstname ?? '', data.lastname) }\n )}\n noBorder\n icon={<Trash />}\n />\n </Box>\n )}\n </Flex>\n </Td>\n )}\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nexport { TableRows };\nexport type { TableRowsProps };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n ContentLayout,\n HeaderLayout,\n Main,\n Flex,\n Typography,\n Box,\n} from '@strapi/design-system';\nimport {\n DynamicTable,\n NoPermissions,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useRBAC,\n Status,\n PageSizeURLQuery,\n PaginationURLQuery,\n CheckPagePermissions,\n TableHeader,\n} from '@strapi/helper-plugin';\nimport * as qs from 'qs';\nimport { IntlShape, MessageDescriptor, useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { Filters } from '../../components/Filters';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\nimport { TableRows } from './components/TableRows';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n useFocusWhenNavigate();\n const { data, isError, isLoading } = useAdminUsers(\n qs.parse(search, { ignoreQueryPrefix: true }),\n {\n skip: !canRead,\n }\n );\n\n const { pagination, users } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name=\"Users\" />\n <HeaderLayout\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n {canRead && (\n <ActionLayout\n startActions={\n <>\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n {/* @ts-expect-error – TODO: fix the way filters work and are passed around, this will be a headache. */}\n <Filters displayedFilters={DISPLAYED_HEADERS} />\n </>\n }\n />\n )}\n\n <ContentLayout>\n {!canRead && <NoPermissions />}\n {/* TODO: Replace error message with something better */}\n {isError && <div>TODO: An error occurred</div>}\n {canRead && (\n <>\n <DynamicTable\n contentType=\"Users\"\n isLoading={isLoading}\n onConfirmDeleteAll={async (ids) => {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n }}\n onConfirmDelete={async (id) => {\n const res = await deleteAll({ ids: [id] });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n }}\n headers={headers}\n rows={users}\n withBulkActions\n withMainAction={canDelete}\n >\n <TableRows canDelete={canDelete} />\n </DynamicTable>\n\n {pagination && (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n )}\n </>\n )}\n </ContentLayout>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n </Main>\n );\n};\n\ninterface ListPageTableHeader extends Omit<TableHeader, 'metadatas' | 'name'> {\n name: Extract<\n keyof SanitizedAdminUser,\n 'firstname' | 'lastname' | 'email' | 'roles' | 'username' | 'isActive'\n >;\n cellFormatter?: (\n data: SanitizedAdminUser,\n meta: Omit<ListPageTableHeaderWithStringMetadataLabel, 'cellFormatter'> &\n Pick<IntlShape, 'formatMessage'>\n ) => React.ReactNode;\n key: string;\n metadatas: {\n label: MessageDescriptor;\n } & Omit<TableHeader['metadatas'], 'label'>;\n}\n\ninterface ListPageTableHeaderWithStringMetadataLabel\n extends Omit<ListPageTableHeader, 'metadatas'> {\n metadatas: {\n label: string;\n } & Omit<ListPageTableHeader['metadatas'], 'label'>;\n}\n\nconst TABLE_HEADERS = [\n {\n name: 'firstname',\n key: 'firstname',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n },\n {\n name: 'lastname',\n key: 'lastname',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n },\n {\n key: 'email',\n name: 'email',\n metadatas: {\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n },\n {\n key: 'roles',\n name: 'roles',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n },\n cellFormatter({ roles }, { formatMessage }) {\n return (\n <Typography textColor=\"neutral800\">\n {roles\n .map((role) =>\n formatMessage({\n id: `Settings.permissions.users.${role.code}`,\n defaultMessage: role.name,\n })\n )\n .join(',\\n')}\n </Typography>\n );\n },\n },\n {\n key: 'username',\n name: 'username',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n },\n {\n key: 'isActive',\n name: 'isActive',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n },\n cellFormatter({ isActive }, { formatMessage }) {\n return (\n <Flex>\n <Status variant={isActive ? 'success' : 'danger'} />\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: isActive\n ? 'Settings.permissions.users.active'\n : 'Settings.permissions.users.inactive',\n defaultMessage: isActive ? 'Active' : 'Inactive',\n })}\n </Typography>\n </Flex>\n );\n },\n },\n] satisfies ListPageTableHeader[];\n\nconst DISPLAYED_HEADERS = [\n {\n name: 'firstname',\n metadatas: { label: 'Firstname' },\n fieldSchema: { type: 'string' },\n },\n {\n name: 'lastname',\n metadatas: { label: 'Lastname' },\n fieldSchema: { type: 'string' },\n },\n {\n name: 'email',\n metadatas: { label: 'Email' },\n fieldSchema: { type: 'email' },\n },\n {\n name: 'username',\n metadatas: { label: 'Username' },\n fieldSchema: { type: 'string' },\n },\n {\n name: 'isActive',\n metadatas: { label: 'Active user' },\n fieldSchema: { type: 'boolean' },\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\nexport type { ListPageTableHeaderWithStringMetadataLabel as ListPageTableHeader };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListPage-K7aWHpB8.mjs","sources":["../../admin/src/pages/Settings/pages/Users/components/CreateActionCE.tsx","../../admin/src/pages/Settings/pages/Users/components/NewUserForm.tsx","../../admin/src/pages/Settings/pages/Users/components/TableRows.tsx","../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import { Button, ButtonProps } from '@strapi/design-system';\nimport { Envelop } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface CreateActionCEProps extends Pick<ButtonProps, 'onClick'> {}\n\nconst CreateActionCE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onClick} startIcon={<Envelop />} size=\"S\">\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n );\n};\n\nexport { CreateActionCE };\nexport type { CreateActionCEProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport {\n Form,\n GenericInput,\n useNotification,\n useOverlayBlocker,\n translatedErrors,\n useAPIErrorHandler,\n} from '@strapi/helper-plugin';\nimport { Entity } from '@strapi/types';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { useCreateUserMutation } from '../../../../../services/users';\nimport { FormLayout } from '../../../../../types/form';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\n\nimport { MagicLinkCE } from './MagicLinkCE';\nimport { SelectRoles } from './SelectRoles';\n\ninterface ModalFormProps {\n onToggle: () => void;\n}\n\nconst ModalForm = ({ onToggle }: ModalFormProps) => {\n const [currentStep, setStep] = React.useState<keyof typeof STEPPER>('create');\n const [registrationToken, setRegistrationToken] = React.useState('');\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const roleLayout = useEnterprise(\n ROLE_LAYOUT,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).ROLE_LAYOUT,\n {\n combine(ceRoles, eeRoles) {\n return [...ceRoles, ...eeRoles];\n },\n\n defaultValue: [],\n }\n );\n\n const initialValues = useEnterprise<InitialData>(\n FORM_INITIAL_VALUES,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).FORM_INITIAL_VALUES,\n {\n combine(ceValues, eeValues) {\n return {\n ...ceValues,\n ...eeValues,\n };\n },\n\n defaultValue: FORM_INITIAL_VALUES,\n }\n );\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n\n const [createUser] = useCreateUserMutation();\n\n const headerTitle = formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n });\n\n const handleSubmit = async (body: InitialData, { setErrors }: FormikHelpers<InitialData>) => {\n // @ts-expect-error – this will be fixed in V5.\n lockApp();\n\n const res = await createUser({\n ...body,\n roles: body.roles ?? [],\n });\n\n if ('data' in res) {\n if (res.data.registrationToken) {\n setRegistrationToken(res.data.registrationToken);\n\n goNext();\n } else {\n // This shouldn't happen, but just incase.\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n }\n }\n\n // @ts-expect-error – this will be fixed in V5.\n unlockApp();\n };\n\n const goNext = () => {\n if (next) {\n setStep(next);\n } else {\n onToggle();\n }\n };\n\n const { buttonSubmitLabel, isDisabled, next } = STEPPER[currentStep];\n\n // block rendering until the EE component is fully loaded\n if (!MagicLink) {\n return null;\n }\n\n return (\n <ModalLayout onClose={onToggle} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={headerTitle}>\n <Crumb isCurrent>{headerTitle}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <Formik\n enableReinitialize\n initialValues={initialValues ?? {}}\n onSubmit={handleSubmit}\n validationSchema={FORM_SCHEMA}\n validateOnChange={false}\n >\n {({ errors, handleChange, values, isSubmitting }) => {\n return (\n <Form>\n <ModalBody>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {currentStep !== 'create' && <MagicLink registrationToken={registrationToken} />}\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'User details',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid gap={5}>\n {FORM_LAYOUT.map((row) => {\n return row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={isDisabled}\n error={errors[input.name as keyof InitialData]}\n onChange={handleChange}\n value={values[input.name as keyof InitialData]}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Flex>\n </Box>\n </Box>\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Box paddingTop={4}>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles\n disabled={isDisabled}\n error={errors.roles}\n onChange={handleChange}\n value={values.roles ?? []}\n />\n </GridItem>\n {roleLayout.map((row) => {\n return row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={isDisabled}\n onChange={handleChange}\n value={values[input.name]}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Box>\n </Box>\n </Flex>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endActions={\n currentStep === 'create' ? (\n <Button type=\"submit\" loading={isSubmitting}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n ) : (\n <Button type=\"button\" loading={isSubmitting} onClick={onToggle}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n )\n }\n />\n </Form>\n );\n }}\n </Formik>\n </ModalLayout>\n );\n};\n\ninterface InitialData {\n firstname?: string;\n lastname?: string;\n email?: string;\n roles?: Entity.ID[];\n useSSORegistration?: boolean;\n}\n\nconst FORM_INITIAL_VALUES = {\n firstname: '',\n lastname: '',\n email: '',\n roles: [],\n};\n\nconst ROLE_LAYOUT = [] satisfies FormLayout[][];\n\nconst FORM_LAYOUT = [\n [\n {\n intlLabel: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n ],\n] satisfies FormLayout[][];\n\nconst FORM_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).required(translatedErrors.required),\n roles: yup.array().min(1, translatedErrors.required).required(translatedErrors.required),\n});\n\nconst STEPPER = {\n create: {\n buttonSubmitLabel: {\n id: 'app.containers.Users.ModalForm.footer.button-success',\n defaultMessage: 'Invite user',\n },\n isDisabled: false,\n next: 'magic-link',\n },\n 'magic-link': {\n buttonSubmitLabel: { id: 'global.finish', defaultMessage: 'Finish' },\n isDisabled: true,\n next: null,\n },\n} as const;\n\nexport { ModalForm };\nexport type { InitialData };\n","import {\n BaseCheckbox,\n Box,\n Flex,\n IconButton,\n Tbody,\n Td,\n Tr,\n Typography,\n} from '@strapi/design-system';\nimport { TableRowProps, onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../../shared/contracts/shared';\nimport { getFullName } from '../../../../../utils/getFullName';\n\nimport type { ListPageTableHeader } from '../ListPage';\n\ninterface TableRowsProps extends Partial<TableRowProps<SanitizedAdminUser, ListPageTableHeader>> {\n canDelete: boolean;\n}\n\nconst TableRows = ({\n canDelete,\n headers = [],\n entriesToDelete = [],\n onClickDelete,\n onSelectRow,\n withMainAction,\n withBulkActions,\n rows = [],\n}: TableRowsProps) => {\n const {\n push,\n location: { pathname },\n } = useHistory();\n const { formatMessage } = useIntl();\n\n return (\n <Tbody>\n {rows.map((data) => {\n const isChecked = entriesToDelete.findIndex((id) => id === data.id) !== -1;\n\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => push(`${pathname}/${data.id}`),\n condition: withBulkActions,\n })}\n >\n {withMainAction && (\n <Td {...stopPropagation}>\n <BaseCheckbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: getFullName(data?.firstname ?? '', data.lastname) }\n )}\n checked={isChecked}\n onChange={() => {\n if (onSelectRow) {\n onSelectRow({ name: data.id, value: !isChecked });\n }\n }}\n />\n </Td>\n )}\n {headers.map(({ key, cellFormatter, name, ...rest }) => {\n return (\n <Td key={key}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(data, { key, name, formatMessage, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{data[name] || '-'}</Typography>\n )}\n </Td>\n );\n })}\n\n {withBulkActions && (\n <Td>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => push(`${pathname}/${data.id}`)}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getFullName(data.firstname ?? '', data.lastname) }\n )}\n noBorder\n icon={<Pencil />}\n />\n\n {canDelete && (\n <Box paddingLeft={1} {...stopPropagation}>\n <IconButton\n onClick={() => {\n if (onClickDelete) {\n onClickDelete(data.id);\n }\n }}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getFullName(data.firstname ?? '', data.lastname) }\n )}\n noBorder\n icon={<Trash />}\n />\n </Box>\n )}\n </Flex>\n </Td>\n )}\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nexport { TableRows };\nexport type { TableRowsProps };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n ContentLayout,\n HeaderLayout,\n Main,\n Flex,\n Typography,\n Box,\n} from '@strapi/design-system';\nimport {\n DynamicTable,\n NoPermissions,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useRBAC,\n Status,\n PageSizeURLQuery,\n PaginationURLQuery,\n CheckPagePermissions,\n TableHeader,\n} from '@strapi/helper-plugin';\nimport * as qs from 'qs';\nimport { IntlShape, MessageDescriptor, useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { Filters } from '../../components/Filters';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\nimport { TableRows } from './components/TableRows';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n useFocusWhenNavigate();\n const { data, isError, isLoading } = useAdminUsers(\n qs.parse(search, { ignoreQueryPrefix: true }),\n {\n skip: !canRead,\n }\n );\n\n const { pagination, users } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name=\"Users\" />\n <HeaderLayout\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n {canRead && (\n <ActionLayout\n startActions={\n <>\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n {/* @ts-expect-error – TODO: fix the way filters work and are passed around, this will be a headache. */}\n <Filters displayedFilters={DISPLAYED_HEADERS} />\n </>\n }\n />\n )}\n\n <ContentLayout>\n {!canRead && <NoPermissions />}\n {/* TODO: Replace error message with something better */}\n {isError && <div>TODO: An error occurred</div>}\n {canRead && (\n <>\n <DynamicTable\n contentType=\"Users\"\n isLoading={isLoading}\n onConfirmDeleteAll={async (ids) => {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n }}\n onConfirmDelete={async (id) => {\n const res = await deleteAll({ ids: [id] });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n }}\n headers={headers}\n rows={users}\n withBulkActions\n withMainAction={canDelete}\n >\n <TableRows canDelete={canDelete} />\n </DynamicTable>\n\n {pagination && (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n )}\n </>\n )}\n </ContentLayout>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n </Main>\n );\n};\n\ninterface ListPageTableHeader extends Omit<TableHeader, 'metadatas' | 'name'> {\n name: Extract<\n keyof SanitizedAdminUser,\n 'firstname' | 'lastname' | 'email' | 'roles' | 'username' | 'isActive'\n >;\n cellFormatter?: (\n data: SanitizedAdminUser,\n meta: Omit<ListPageTableHeaderWithStringMetadataLabel, 'cellFormatter'> &\n Pick<IntlShape, 'formatMessage'>\n ) => React.ReactNode;\n key: string;\n metadatas: {\n label: MessageDescriptor;\n } & Omit<TableHeader['metadatas'], 'label'>;\n}\n\ninterface ListPageTableHeaderWithStringMetadataLabel\n extends Omit<ListPageTableHeader, 'metadatas'> {\n metadatas: {\n label: string;\n } & Omit<ListPageTableHeader['metadatas'], 'label'>;\n}\n\nconst TABLE_HEADERS = [\n {\n name: 'firstname',\n key: 'firstname',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n },\n {\n name: 'lastname',\n key: 'lastname',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n },\n {\n key: 'email',\n name: 'email',\n metadatas: {\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n },\n {\n key: 'roles',\n name: 'roles',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n },\n cellFormatter({ roles }, { formatMessage }) {\n return (\n <Typography textColor=\"neutral800\">\n {roles\n .map((role) =>\n formatMessage({\n id: `Settings.permissions.users.${role.code}`,\n defaultMessage: role.name,\n })\n )\n .join(',\\n')}\n </Typography>\n );\n },\n },\n {\n key: 'username',\n name: 'username',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n },\n {\n key: 'isActive',\n name: 'isActive',\n metadatas: {\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n },\n cellFormatter({ isActive }, { formatMessage }) {\n return (\n <Flex>\n <Status variant={isActive ? 'success' : 'danger'} />\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: isActive\n ? 'Settings.permissions.users.active'\n : 'Settings.permissions.users.inactive',\n defaultMessage: isActive ? 'Active' : 'Inactive',\n })}\n </Typography>\n </Flex>\n );\n },\n },\n] satisfies ListPageTableHeader[];\n\nconst DISPLAYED_HEADERS = [\n {\n name: 'firstname',\n metadatas: { label: 'Firstname' },\n fieldSchema: { type: 'string' },\n },\n {\n name: 'lastname',\n metadatas: { label: 'Lastname' },\n fieldSchema: { type: 'string' },\n },\n {\n name: 'email',\n metadatas: { label: 'Email' },\n fieldSchema: { type: 'email' },\n },\n {\n name: 'username',\n metadatas: { label: 'Username' },\n fieldSchema: { type: 'string' },\n },\n {\n name: 'isActive',\n metadatas: { label: 'Active user' },\n fieldSchema: { type: 'boolean' },\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\nexport type { ListPageTableHeaderWithStringMetadataLabel as ListPageTableHeader };\n"],"names":[],"mappings":"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"}
@@ -7,9 +7,9 @@ import { AxiosError } from "axios";
7
7
  import produce from "immer";
8
8
  import { useIntl } from "react-intl";
9
9
  import { useHistory } from "react-router-dom";
10
- import { j as useTypedSelector } from "./index-RiA3iJd0.mjs";
11
- import { u as useAdminRoles } from "./useAdminRoles-LdHFJ5yM.mjs";
12
- import { s as selectAdminPermissions } from "./AuthenticatedApp-D79_VNiJ.mjs";
10
+ import { j as useTypedSelector } from "./index-ER4WA-87.mjs";
11
+ import { u as useAdminRoles } from "./useAdminRoles-8SY0px_q.mjs";
12
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-TDna3YB9.mjs";
13
13
  import "react-dom/client";
14
14
  import "invariant";
15
15
  import "lodash/isFunction";
@@ -345,4 +345,4 @@ export {
345
345
  ListPage,
346
346
  ProtectedListPage
347
347
  };
348
- //# sourceMappingURL=ListPage-afEqS3n1.mjs.map
348
+ //# sourceMappingURL=ListPage-N_7gWSog.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-afEqS3n1.mjs","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 { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\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, 'icon' | '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 {...(canUpdate\n ? onRowClick({\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\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\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton\n onClick={icon.onClick}\n label={icon.label}\n borderWidth={0}\n icon={icon.icon}\n />\n </Box>\n ) : 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 ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport produce from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\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 { push } = useHistory();\n const [{ showModalConfirmButtonLoading, roleToDelete }, dispatch] = React.useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\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 (error instanceof AxiosError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }\n handleToggleModal();\n };\n\n const handleNewRoleClick = () => push('/settings/roles/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: { 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 push(`/settings/roles/duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\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 as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\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 <ContentLayout>\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 icon: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => push(`/settings/roles/${role.id}`),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <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 </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </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(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListPage-N_7gWSog.mjs","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 { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\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, 'icon' | '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 {...(canUpdate\n ? onRowClick({\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\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\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton\n onClick={icon.onClick}\n label={icon.label}\n borderWidth={0}\n icon={icon.icon}\n />\n </Box>\n ) : 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 ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport produce from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\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 { push } = useHistory();\n const [{ showModalConfirmButtonLoading, roleToDelete }, dispatch] = React.useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\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 (error instanceof AxiosError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }\n handleToggleModal();\n };\n\n const handleNewRoleClick = () => push('/settings/roles/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: { 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 push(`/settings/roles/duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\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 as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\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 <ContentLayout>\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 icon: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => push(`/settings/roles/${role.id}`),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <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 </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </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(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { ListPageCE } from "./ListPage-Ybb577tu.mjs";
3
- import { u as useLicenseLimitNotification } from "./useLicenseLimitNotification-cbnY94J6.mjs";
2
+ import { ListPageCE } from "./ListPage-K7aWHpB8.mjs";
3
+ import { u as useLicenseLimitNotification } from "./useLicenseLimitNotification-gBCYeBPt.mjs";
4
4
  import "react";
5
5
  import "@strapi/design-system";
6
6
  import "@strapi/helper-plugin";
7
7
  import "qs";
8
8
  import "react-intl";
9
9
  import "react-router-dom";
10
- import "./index-RiA3iJd0.mjs";
10
+ import "./index-ER4WA-87.mjs";
11
11
  import "react-dom/client";
12
12
  import "invariant";
13
13
  import "lodash/isFunction";
@@ -72,9 +72,9 @@ import "lodash/unset";
72
72
  import "lodash/isArray";
73
73
  import "date-fns/parseISO";
74
74
  import "./Filters-dLXfVnI0.mjs";
75
- import "./SelectRoles-NXs-IS6a.mjs";
76
- import "./useAdminRoles-LdHFJ5yM.mjs";
77
- import "./AuthenticatedApp-D79_VNiJ.mjs";
75
+ import "./SelectRoles-eeeX83et.mjs";
76
+ import "./useAdminRoles-8SY0px_q.mjs";
77
+ import "./AuthenticatedApp-TDna3YB9.mjs";
78
78
  import "semver/functions/lt";
79
79
  import "semver/functions/valid";
80
80
  import "lodash/isNil";
@@ -85,4 +85,4 @@ const UserListPageEE = () => {
85
85
  export {
86
86
  UserListPageEE
87
87
  };
88
- //# sourceMappingURL=ListPage-IIhVuRTQ.mjs.map
88
+ //# sourceMappingURL=ListPage-ciUJHEVH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-IIhVuRTQ.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage.tsx"],"sourcesContent":["import { ListPageCE } from '../../../../../../../admin/src/pages/Settings/pages/Users/ListPage';\nimport { useLicenseLimitNotification } from '../../../../hooks/useLicenseLimitNotification';\n\nexport const UserListPageEE = () => {\n useLicenseLimitNotification();\n\n return <ListPageCE />;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,iBAAiB,MAAM;AACN;AAE5B,6BAAQ,YAAW,CAAA,CAAA;AACrB;"}
1
+ {"version":3,"file":"ListPage-ciUJHEVH.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage.tsx"],"sourcesContent":["import { ListPageCE } from '../../../../../../../admin/src/pages/Settings/pages/Users/ListPage';\nimport { useLicenseLimitNotification } from '../../../../hooks/useLicenseLimitNotification';\n\nexport const UserListPageEE = () => {\n useLicenseLimitNotification();\n\n return <ListPageCE />;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,iBAAiB,MAAM;AACN;AAE5B,6BAAQ,YAAW,CAAA,CAAA;AACrB;"}
@@ -7,14 +7,14 @@ const helperPlugin = require("@strapi/helper-plugin");
7
7
  const qs = require("qs");
8
8
  const reactIntl = require("react-intl");
9
9
  const reactRouterDom = require("react-router-dom");
10
- const index = require("./index-uF-GaBnZ.js");
10
+ const index = require("./index-th9mGR7q.js");
11
11
  const Filters = require("./Filters-Gdnt7qft.js");
12
12
  const Icons = require("@strapi/icons");
13
13
  const v2 = require("@strapi/design-system/v2");
14
14
  const formik = require("formik");
15
15
  const yup = require("yup");
16
- const SelectRoles = require("./SelectRoles-y4OZqzaa.js");
17
- const AuthenticatedApp = require("./AuthenticatedApp-wWZxcjS8.js");
16
+ const SelectRoles = require("./SelectRoles-PO0TBPNy.js");
17
+ const AuthenticatedApp = require("./AuthenticatedApp-tPmFNJYV.js");
18
18
  require("react-dom/client");
19
19
  require("invariant");
20
20
  require("lodash/isFunction");
@@ -74,7 +74,7 @@ require("lodash/uniqBy");
74
74
  require("lodash/unset");
75
75
  require("lodash/isArray");
76
76
  require("date-fns/parseISO");
77
- require("./useAdminRoles-en9988CX.js");
77
+ require("./useAdminRoles-WJU6aWpi.js");
78
78
  require("semver/functions/lt");
79
79
  require("semver/functions/valid");
80
80
  function _interopNamespace(e) {
@@ -140,7 +140,7 @@ const ModalForm = ({ onToggle }) => {
140
140
  );
141
141
  const MagicLink = index.useEnterprise(
142
142
  SelectRoles.MagicLinkCE,
143
- async () => (await Promise.resolve().then(() => require("./MagicLinkEE-o9TmmsCN.js"))).MagicLinkEE
143
+ async () => (await Promise.resolve().then(() => require("./MagicLinkEE-aFh3b3CS.js"))).MagicLinkEE
144
144
  );
145
145
  const [createUser] = index.useCreateUserMutation();
146
146
  const headerTitle = formatMessage({
@@ -455,7 +455,7 @@ const ListPageCE = () => {
455
455
  const { pagination, users } = data ?? {};
456
456
  const CreateAction = index.useEnterprise(
457
457
  CreateActionCE,
458
- async () => (await Promise.resolve().then(() => require("./CreateActionEE-4WavovAT.js"))).CreateActionEE
458
+ async () => (await Promise.resolve().then(() => require("./CreateActionEE-FzYDjU19.js"))).CreateActionEE
459
459
  );
460
460
  const headers = TABLE_HEADERS.map((header) => ({
461
461
  ...header,
@@ -662,7 +662,7 @@ const ListPage = () => {
662
662
  ListPageCE,
663
663
  async () => (
664
664
  // eslint-disable-next-line import/no-cycle
665
- (await Promise.resolve().then(() => require("./ListPage-wjdBIzGM.js"))).UserListPageEE
665
+ (await Promise.resolve().then(() => require("./ListPage-xMppcuMq.js"))).UserListPageEE
666
666
  )
667
667
  );
668
668
  if (!UsersListPage) {
@@ -677,4 +677,4 @@ const ProtectedListPage = () => {
677
677
  exports.ListPage = ListPage;
678
678
  exports.ListPageCE = ListPageCE;
679
679
  exports.ProtectedListPage = ProtectedListPage;
680
- //# sourceMappingURL=ListPage-sgLhysoO.js.map
680
+ //# sourceMappingURL=ListPage-gSfv-ck7.js.map