@strapi/admin 4.18.1-beta.1 → 4.19.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 (264) hide show
  1. package/dist/_chunks/{AdminSeatInfo-6Xa-rQkK.mjs → AdminSeatInfo-RawgDWj-.mjs} +4 -4
  2. package/dist/_chunks/{AdminSeatInfo-6Xa-rQkK.mjs.map → AdminSeatInfo-RawgDWj-.mjs.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-vg2Ynsz9.js → AdminSeatInfo-qX2sM70P.js} +4 -4
  4. package/dist/_chunks/{AdminSeatInfo-vg2Ynsz9.js.map → AdminSeatInfo-qX2sM70P.js.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-HHKco102.mjs → AuthenticatedApp-NOp7zFwi.mjs} +21 -21
  6. package/dist/_chunks/{AuthenticatedApp-HHKco102.mjs.map → AuthenticatedApp-NOp7zFwi.mjs.map} +1 -1
  7. package/dist/_chunks/{AuthenticatedApp-n1e26l2A.js → AuthenticatedApp-Vz4hNfIH.js} +21 -21
  8. package/dist/_chunks/{AuthenticatedApp-n1e26l2A.js.map → AuthenticatedApp-Vz4hNfIH.js.map} +1 -1
  9. package/dist/_chunks/{CreateActionEE-rgUQSKA6.js → CreateActionEE-75bc0oef.js} +3 -3
  10. package/dist/_chunks/{CreateActionEE-rgUQSKA6.js.map → CreateActionEE-75bc0oef.js.map} +1 -1
  11. package/dist/_chunks/{CreateActionEE--zpyK5a-.mjs → CreateActionEE-wZ329zt5.mjs} +3 -3
  12. package/dist/_chunks/{CreateActionEE--zpyK5a-.mjs.map → CreateActionEE-wZ329zt5.mjs.map} +1 -1
  13. package/dist/_chunks/{CreatePage-pD9CY6De.js → CreatePage-BgcO3AqI.js} +3 -3
  14. package/dist/_chunks/{CreatePage-pD9CY6De.js.map → CreatePage-BgcO3AqI.js.map} +1 -1
  15. package/dist/_chunks/{CreatePage-P_h5MZpf.mjs → CreatePage-QH1DLZW_.mjs} +9 -9
  16. package/dist/_chunks/{CreatePage-P_h5MZpf.mjs.map → CreatePage-QH1DLZW_.mjs.map} +1 -1
  17. package/dist/_chunks/{CreatePage-89bDcY4e.mjs → CreatePage-XDNrGyIA.mjs} +6 -6
  18. package/dist/_chunks/{CreatePage-89bDcY4e.mjs.map → CreatePage-XDNrGyIA.mjs.map} +1 -1
  19. package/dist/_chunks/{CreatePage-SXIIBux7.mjs → CreatePage-beMm-uZ-.mjs} +3 -3
  20. package/dist/_chunks/{CreatePage-SXIIBux7.mjs.map → CreatePage-beMm-uZ-.mjs.map} +1 -1
  21. package/dist/_chunks/{CreatePage-H8SEATeC.js → CreatePage-mkf7nRXj.js} +6 -6
  22. package/dist/_chunks/{CreatePage-H8SEATeC.js.map → CreatePage-mkf7nRXj.js.map} +1 -1
  23. package/dist/_chunks/{CreatePage-tiXjn_0u.js → CreatePage-v5EbopPP.js} +9 -9
  24. package/dist/_chunks/{CreatePage-tiXjn_0u.js.map → CreatePage-v5EbopPP.js.map} +1 -1
  25. package/dist/_chunks/{CreateView-PyKy-Xdc.mjs → CreateView-Ixck31v9.mjs} +6 -6
  26. package/dist/_chunks/{CreateView-PyKy-Xdc.mjs.map → CreateView-Ixck31v9.mjs.map} +1 -1
  27. package/dist/_chunks/{CreateView-NxcfO6ig.mjs → CreateView-Vu-6BJ7s.mjs} +6 -6
  28. package/dist/_chunks/{CreateView-NxcfO6ig.mjs.map → CreateView-Vu-6BJ7s.mjs.map} +1 -1
  29. package/dist/_chunks/{CreateView-GY0so0sm.js → CreateView-eUzBn2dW.js} +6 -6
  30. package/dist/_chunks/{CreateView-GY0so0sm.js.map → CreateView-eUzBn2dW.js.map} +1 -1
  31. package/dist/_chunks/{CreateView-RmX4j52N.js → CreateView-zBya6KTw.js} +6 -6
  32. package/dist/_chunks/{CreateView-RmX4j52N.js.map → CreateView-zBya6KTw.js.map} +1 -1
  33. package/dist/_chunks/{EditPage-lvvi5Q_Y.js → EditPage-GDphIluA.js} +4 -4
  34. package/dist/_chunks/{EditPage-lvvi5Q_Y.js.map → EditPage-GDphIluA.js.map} +1 -1
  35. package/dist/_chunks/{EditPage-HgNJWaEE.mjs → EditPage-HXrULs9d.mjs} +6 -6
  36. package/dist/_chunks/{EditPage-HgNJWaEE.mjs.map → EditPage-HXrULs9d.mjs.map} +1 -1
  37. package/dist/_chunks/{EditPage-OpJDfWQR.mjs → EditPage-J6Rf9oKf.mjs} +4 -4
  38. package/dist/_chunks/{EditPage-OpJDfWQR.mjs.map → EditPage-J6Rf9oKf.mjs.map} +1 -1
  39. package/dist/_chunks/{EditPage-bkNkdCMK.js → EditPage-ZjUUKii7.js} +6 -6
  40. package/dist/_chunks/{EditPage-bkNkdCMK.js.map → EditPage-ZjUUKii7.js.map} +1 -1
  41. package/dist/_chunks/{EditPage-4e8DHRiX.js → EditPage-buPVDS8T.js} +6 -6
  42. package/dist/_chunks/{EditPage-4e8DHRiX.js.map → EditPage-buPVDS8T.js.map} +1 -1
  43. package/dist/_chunks/{EditPage-e6WBD1RM.js → EditPage-getxBx6Z.js} +10 -10
  44. package/dist/_chunks/{EditPage-e6WBD1RM.js.map → EditPage-getxBx6Z.js.map} +1 -1
  45. package/dist/_chunks/{EditPage-CtKupy2i.mjs → EditPage-lWoNefEi.mjs} +6 -6
  46. package/dist/_chunks/{EditPage-CtKupy2i.mjs.map → EditPage-lWoNefEi.mjs.map} +1 -1
  47. package/dist/_chunks/{EditPage-y65K1Yl_.mjs → EditPage-ztZL8xrI.mjs} +10 -10
  48. package/dist/_chunks/{EditPage-y65K1Yl_.mjs.map → EditPage-ztZL8xrI.mjs.map} +1 -1
  49. package/dist/_chunks/{EditView-ZQZZvGB-.js → EditView-GLiFYAUa.js} +4 -4
  50. package/dist/_chunks/{EditView-ZQZZvGB-.js.map → EditView-GLiFYAUa.js.map} +1 -1
  51. package/dist/_chunks/{EditView-HqS2zsiK.mjs → EditView-gst3Q76D.mjs} +4 -4
  52. package/dist/_chunks/{EditView-HqS2zsiK.mjs.map → EditView-gst3Q76D.mjs.map} +1 -1
  53. package/dist/_chunks/{EditViewPage-tUTtSwsX.js → EditViewPage-MPKkl8pj.js} +4 -4
  54. package/dist/_chunks/{EditViewPage-tUTtSwsX.js.map → EditViewPage-MPKkl8pj.js.map} +1 -1
  55. package/dist/_chunks/{EditViewPage-SBNGYi8u.mjs → EditViewPage-fv2kuIzu.mjs} +4 -4
  56. package/dist/_chunks/{EditViewPage-SBNGYi8u.mjs.map → EditViewPage-fv2kuIzu.mjs.map} +1 -1
  57. package/dist/_chunks/{EventsTable-9zWU2i_e.js → EventsTable-CV7xm5zl.js} +6 -6
  58. package/dist/_chunks/{EventsTable-9zWU2i_e.js.map → EventsTable-CV7xm5zl.js.map} +1 -1
  59. package/dist/_chunks/{EventsTable-WceZIq1l.mjs → EventsTable-vZK_CTQU.mjs} +6 -6
  60. package/dist/_chunks/{EventsTable-WceZIq1l.mjs.map → EventsTable-vZK_CTQU.mjs.map} +1 -1
  61. package/dist/_chunks/{HomePage-BPxvPz3d.js → HomePage-18iuexeb.js} +7 -7
  62. package/dist/_chunks/{HomePage-BPxvPz3d.js.map → HomePage-18iuexeb.js.map} +1 -1
  63. package/dist/_chunks/{HomePage-PAaDv9zR.mjs → HomePage-J8ZfepOZ.mjs} +5 -5
  64. package/dist/_chunks/{HomePage-PAaDv9zR.mjs.map → HomePage-J8ZfepOZ.mjs.map} +1 -1
  65. package/dist/_chunks/{HomePage-poblbM9W.js → HomePage-xJWXSyMe.js} +5 -5
  66. package/dist/_chunks/{HomePage-poblbM9W.js.map → HomePage-xJWXSyMe.js.map} +1 -1
  67. package/dist/_chunks/{HomePage-_axtTEMc.mjs → HomePage-xgawLbxm.mjs} +7 -7
  68. package/dist/_chunks/{HomePage-_axtTEMc.mjs.map → HomePage-xgawLbxm.mjs.map} +1 -1
  69. package/dist/_chunks/{InformationBoxEE-nzgjjUzo.js → InformationBoxEE-J_ms6Ox-.js} +4 -4
  70. package/dist/_chunks/{InformationBoxEE-nzgjjUzo.js.map → InformationBoxEE-J_ms6Ox-.js.map} +1 -1
  71. package/dist/_chunks/{InformationBoxEE-8LxCWMcv.mjs → InformationBoxEE-rU-_LUTN.mjs} +4 -4
  72. package/dist/_chunks/{InformationBoxEE-8LxCWMcv.mjs.map → InformationBoxEE-rU-_LUTN.mjs.map} +1 -1
  73. package/dist/_chunks/{InstalledPluginsPage--XJdvCZ6.mjs → InstalledPluginsPage-7WqMzI5n.mjs} +3 -3
  74. package/dist/_chunks/{InstalledPluginsPage--XJdvCZ6.mjs.map → InstalledPluginsPage-7WqMzI5n.mjs.map} +1 -1
  75. package/dist/_chunks/{InstalledPluginsPage-Q63eaZKQ.js → InstalledPluginsPage-x83hq0Ar.js} +3 -3
  76. package/dist/_chunks/{InstalledPluginsPage-Q63eaZKQ.js.map → InstalledPluginsPage-x83hq0Ar.js.map} +1 -1
  77. package/dist/_chunks/{Layout-pd_uDly8.mjs → Layout-PTbeYyQq.mjs} +2 -2
  78. package/dist/_chunks/{Layout-pd_uDly8.mjs.map → Layout-PTbeYyQq.mjs.map} +1 -1
  79. package/dist/_chunks/{Layout-8132NxEA.js → Layout-zWj_kIbj.js} +2 -2
  80. package/dist/_chunks/{Layout-8132NxEA.js.map → Layout-zWj_kIbj.js.map} +1 -1
  81. package/dist/_chunks/{ListPage-03OT_g-m.js → ListPage-5APd7aTc.js} +8 -8
  82. package/dist/_chunks/{ListPage-03OT_g-m.js.map → ListPage-5APd7aTc.js.map} +1 -1
  83. package/dist/_chunks/{ListPage-r665L1aM.js → ListPage-E1x-qrkF.js} +4 -4
  84. package/dist/_chunks/{ListPage-r665L1aM.js.map → ListPage-E1x-qrkF.js.map} +1 -1
  85. package/dist/_chunks/{ListPage-EtfZzFct.mjs → ListPage-NSFhbGAZ.mjs} +7 -7
  86. package/dist/_chunks/{ListPage-EtfZzFct.mjs.map → ListPage-NSFhbGAZ.mjs.map} +1 -1
  87. package/dist/_chunks/{ListPage-tc2m8crj.js → ListPage-WQ27QMWQ.js} +3 -3
  88. package/dist/_chunks/{ListPage-tc2m8crj.js.map → ListPage-WQ27QMWQ.js.map} +1 -1
  89. package/dist/_chunks/{ListPage-CI9Q5Jj6.mjs → ListPage-Ykm_JxVX.mjs} +8 -8
  90. package/dist/_chunks/{ListPage-CI9Q5Jj6.mjs.map → ListPage-Ykm_JxVX.mjs.map} +1 -1
  91. package/dist/_chunks/{ListPage-u73Sa-2i.mjs → ListPage-_R5YJkq6.mjs} +5 -3
  92. package/dist/_chunks/ListPage-_R5YJkq6.mjs.map +1 -0
  93. package/dist/_chunks/{ListPage-GA5QOkgN.mjs → ListPage-imJlOUis.mjs} +4 -4
  94. package/dist/_chunks/{ListPage-GA5QOkgN.mjs.map → ListPage-imJlOUis.mjs.map} +1 -1
  95. package/dist/_chunks/{ListPage-sqr8vCXs.js → ListPage-lG6n0cR5.js} +5 -3
  96. package/dist/_chunks/ListPage-lG6n0cR5.js.map +1 -0
  97. package/dist/_chunks/{ListPage-NX812bzs.mjs → ListPage-rQztZoE3.mjs} +3 -3
  98. package/dist/_chunks/{ListPage-NX812bzs.mjs.map → ListPage-rQztZoE3.mjs.map} +1 -1
  99. package/dist/_chunks/{ListPage-wNsbiVCE.mjs → ListPage-tVXsHAt1.mjs} +8 -8
  100. package/dist/_chunks/{ListPage-wNsbiVCE.mjs.map → ListPage-tVXsHAt1.mjs.map} +1 -1
  101. package/dist/_chunks/{ListPage-_odJeT-A.js → ListPage-x3LRX4sC.js} +8 -8
  102. package/dist/_chunks/{ListPage-_odJeT-A.js.map → ListPage-x3LRX4sC.js.map} +1 -1
  103. package/dist/_chunks/{ListPage-nPt7GCSG.js → ListPage-yZj3Yt5r.js} +7 -7
  104. package/dist/_chunks/{ListPage-nPt7GCSG.js.map → ListPage-yZj3Yt5r.js.map} +1 -1
  105. package/dist/_chunks/{ListView-4_ZzDqKi.mjs → ListView-2m4WvFKV.mjs} +3 -3
  106. package/dist/_chunks/{ListView-4_ZzDqKi.mjs.map → ListView-2m4WvFKV.mjs.map} +1 -1
  107. package/dist/_chunks/{ListView-HQKhAvTJ.js → ListView-3J54TIVz.js} +3 -3
  108. package/dist/_chunks/{ListView-HQKhAvTJ.js.map → ListView-3J54TIVz.js.map} +1 -1
  109. package/dist/_chunks/{ListView-KkTHyKvD.mjs → ListView-C4_qI4I-.mjs} +3 -3
  110. package/dist/_chunks/{ListView-KkTHyKvD.mjs.map → ListView-C4_qI4I-.mjs.map} +1 -1
  111. package/dist/_chunks/{ListView-FJ65C7pP.js → ListView-X-jykpTn.js} +3 -3
  112. package/dist/_chunks/{ListView-FJ65C7pP.js.map → ListView-X-jykpTn.js.map} +1 -1
  113. package/dist/_chunks/{Login-AG1hFFid.js → Login-_3hyJ-yA.js} +2 -2
  114. package/dist/_chunks/{Login-AG1hFFid.js.map → Login-_3hyJ-yA.js.map} +1 -1
  115. package/dist/_chunks/{Login-us_4EuX4.mjs → Login-j7BE_1eG.mjs} +2 -2
  116. package/dist/_chunks/{Login-us_4EuX4.mjs.map → Login-j7BE_1eG.mjs.map} +1 -1
  117. package/dist/_chunks/{MagicLinkEE-JKZvmPOL.mjs → MagicLinkEE-Mw3_4xMD.mjs} +4 -4
  118. package/dist/_chunks/{MagicLinkEE-JKZvmPOL.mjs.map → MagicLinkEE-Mw3_4xMD.mjs.map} +1 -1
  119. package/dist/_chunks/{MagicLinkEE-elK7KlLi.js → MagicLinkEE-RBmakdh1.js} +4 -4
  120. package/dist/_chunks/{MagicLinkEE-elK7KlLi.js.map → MagicLinkEE-RBmakdh1.js.map} +1 -1
  121. package/dist/_chunks/{MarketplacePage-As723-A9.js → MarketplacePage--qZW1C_M.js} +12 -4
  122. package/dist/_chunks/{MarketplacePage-As723-A9.js.map → MarketplacePage--qZW1C_M.js.map} +1 -1
  123. package/dist/_chunks/{MarketplacePage-Btb0SZBb.mjs → MarketplacePage-d_pQoh5h.mjs} +12 -4
  124. package/dist/_chunks/{MarketplacePage-Btb0SZBb.mjs.map → MarketplacePage-d_pQoh5h.mjs.map} +1 -1
  125. package/dist/_chunks/{Permissions-Dp5_M7XX.js → Permissions-5Idi1hGl.js} +2 -2
  126. package/dist/_chunks/{Permissions-Dp5_M7XX.js.map → Permissions-5Idi1hGl.js.map} +1 -1
  127. package/dist/_chunks/{Permissions-laiO0FAI.mjs → Permissions-YjqLnqwc.mjs} +2 -2
  128. package/dist/_chunks/{Permissions-laiO0FAI.mjs.map → Permissions-YjqLnqwc.mjs.map} +1 -1
  129. package/dist/_chunks/{ProfilePage-6VVHMzdQ.mjs → ProfilePage-HEWNqKF6.mjs} +3 -3
  130. package/dist/_chunks/{ProfilePage-6VVHMzdQ.mjs.map → ProfilePage-HEWNqKF6.mjs.map} +1 -1
  131. package/dist/_chunks/{ProfilePage-VN8Z-3om.js → ProfilePage-Sv3HPL8I.js} +3 -3
  132. package/dist/_chunks/{ProfilePage-VN8Z-3om.js.map → ProfilePage-Sv3HPL8I.js.map} +1 -1
  133. package/dist/_chunks/{ReviewWorkflowsColumn-ZOEAZr5z.js → ReviewWorkflowsColumn-Rs6ZsFMn.js} +2 -2
  134. package/dist/_chunks/{ReviewWorkflowsColumn-ZOEAZr5z.js.map → ReviewWorkflowsColumn-Rs6ZsFMn.js.map} +1 -1
  135. package/dist/_chunks/{ReviewWorkflowsColumn-lTUV7dcS.mjs → ReviewWorkflowsColumn-nO_l9SSd.mjs} +2 -2
  136. package/dist/_chunks/{ReviewWorkflowsColumn-lTUV7dcS.mjs.map → ReviewWorkflowsColumn-nO_l9SSd.mjs.map} +1 -1
  137. package/dist/_chunks/{SelectRoles-I--ohnc5.js → SelectRoles-KatT_FIg.js} +3 -3
  138. package/dist/_chunks/{SelectRoles-I--ohnc5.js.map → SelectRoles-KatT_FIg.js.map} +1 -1
  139. package/dist/_chunks/{SelectRoles-YHXfTcgD.mjs → SelectRoles-kY2cQn9t.mjs} +3 -3
  140. package/dist/_chunks/{SelectRoles-YHXfTcgD.mjs.map → SelectRoles-kY2cQn9t.mjs.map} +1 -1
  141. package/dist/_chunks/{SettingsPage-yRmBCJwL.js → SettingsPage-ZgiejZbl.js} +21 -21
  142. package/dist/_chunks/{SettingsPage-yRmBCJwL.js.map → SettingsPage-ZgiejZbl.js.map} +1 -1
  143. package/dist/_chunks/{SettingsPage-mzZEFvS6.mjs → SettingsPage-p9I4yN8G.mjs} +21 -21
  144. package/dist/_chunks/{SettingsPage-mzZEFvS6.mjs.map → SettingsPage-p9I4yN8G.mjs.map} +1 -1
  145. package/dist/_chunks/{SingleSignOnPage-owEM5OOl.mjs → SingleSignOnPage-hPJ-ktE8.mjs} +3 -3
  146. package/dist/_chunks/{SingleSignOnPage-owEM5OOl.mjs.map → SingleSignOnPage-hPJ-ktE8.mjs.map} +1 -1
  147. package/dist/_chunks/{SingleSignOnPage-Q33nNUpp.js → SingleSignOnPage-uwvm37vG.js} +3 -3
  148. package/dist/_chunks/{SingleSignOnPage-Q33nNUpp.js.map → SingleSignOnPage-uwvm37vG.js.map} +1 -1
  149. package/dist/_chunks/{TokenTypeSelect-gSy4facM.mjs → TokenTypeSelect-Zug5LBS9.mjs} +2 -2
  150. package/dist/_chunks/{TokenTypeSelect-gSy4facM.mjs.map → TokenTypeSelect-Zug5LBS9.mjs.map} +1 -1
  151. package/dist/_chunks/{TokenTypeSelect-ralB1Efd.js → TokenTypeSelect-g1CejzJb.js} +2 -2
  152. package/dist/_chunks/{TokenTypeSelect-ralB1Efd.js.map → TokenTypeSelect-g1CejzJb.js.map} +1 -1
  153. package/dist/_chunks/{apiTokens-qt9lNr6W.mjs → apiTokens-3JqiL0FP.mjs} +2 -2
  154. package/dist/_chunks/{apiTokens-qt9lNr6W.mjs.map → apiTokens-3JqiL0FP.mjs.map} +1 -1
  155. package/dist/_chunks/{apiTokens-DMCOLjEv.js → apiTokens-mO11QotK.js} +2 -2
  156. package/dist/_chunks/{apiTokens-DMCOLjEv.js.map → apiTokens-mO11QotK.js.map} +1 -1
  157. package/dist/_chunks/{build-w22y0ZQE.mjs → build-8t_xn2ku.mjs} +2 -2
  158. package/dist/_chunks/{build-w22y0ZQE.mjs.map → build-8t_xn2ku.mjs.map} +1 -1
  159. package/dist/_chunks/{build-wW49b5iP.js → build-QRFarm0x.js} +2 -2
  160. package/dist/_chunks/{build-wW49b5iP.js.map → build-QRFarm0x.js.map} +1 -1
  161. package/dist/_chunks/{build-RRHV6L2u.js → build-UkKhySt2.js} +4 -4
  162. package/dist/_chunks/{build-RRHV6L2u.js.map → build-UkKhySt2.js.map} +1 -1
  163. package/dist/_chunks/{build-KJTqwv-m.mjs → build-Xj2_p4-7.mjs} +4 -4
  164. package/dist/_chunks/{build-KJTqwv-m.mjs.map → build-Xj2_p4-7.mjs.map} +1 -1
  165. package/dist/_chunks/{build-ESFt6aPm.js → build-bnYNP-fZ.js} +4 -4
  166. package/dist/_chunks/{build-ESFt6aPm.js.map → build-bnYNP-fZ.js.map} +1 -1
  167. package/dist/_chunks/{build-USTj0cBR.mjs → build-yLRsyw6N.mjs} +4 -4
  168. package/dist/_chunks/{build-USTj0cBR.mjs.map → build-yLRsyw6N.mjs.map} +1 -1
  169. package/dist/_chunks/{config-MWFFs8Gk.mjs → config-bN5VpLkz.mjs} +3 -3
  170. package/dist/_chunks/{config-MWFFs8Gk.mjs.map → config-bN5VpLkz.mjs.map} +1 -1
  171. package/dist/_chunks/{config-cmN3ValL.js → config-cQDYAnre.js} +2 -2
  172. package/dist/_chunks/{config-cmN3ValL.js.map → config-cQDYAnre.js.map} +1 -1
  173. package/dist/_chunks/{config-D9yiwd4B.js → config-e-cmAy8N.js} +2 -2
  174. package/dist/_chunks/{config-D9yiwd4B.js.map → config-e-cmAy8N.js.map} +1 -1
  175. package/dist/_chunks/{config-S5dsnmrt.js → config-gs-JvsQG.js} +3 -3
  176. package/dist/_chunks/{config-S5dsnmrt.js.map → config-gs-JvsQG.js.map} +1 -1
  177. package/dist/_chunks/{config-0ZQdgdlv.mjs → config-vWNWOcHV.mjs} +2 -2
  178. package/dist/_chunks/{config-0ZQdgdlv.mjs.map → config-vWNWOcHV.mjs.map} +1 -1
  179. package/dist/_chunks/{config-3KcxrTU_.mjs → config-wB5k8sQ0.mjs} +2 -2
  180. package/dist/_chunks/{config-3KcxrTU_.mjs.map → config-wB5k8sQ0.mjs.map} +1 -1
  181. package/dist/_chunks/{constants-g2P0-iVp.mjs → constants-EWIwy2Lb.mjs} +2 -2
  182. package/dist/_chunks/{constants-g2P0-iVp.mjs.map → constants-EWIwy2Lb.mjs.map} +1 -1
  183. package/dist/_chunks/{constants-OzC1G41q.js → constants-GJB9U_2a.js} +4 -4
  184. package/dist/_chunks/{constants-OzC1G41q.js.map → constants-GJB9U_2a.js.map} +1 -1
  185. package/dist/_chunks/{constants-RUQLODnW.mjs → constants-HNN5YvZM.mjs} +6 -6
  186. package/dist/_chunks/{constants-RUQLODnW.mjs.map → constants-HNN5YvZM.mjs.map} +1 -1
  187. package/dist/_chunks/{constants-WvkWtCIZ.js → constants-SQ2dZAhr.js} +2 -2
  188. package/dist/_chunks/{constants-WvkWtCIZ.js.map → constants-SQ2dZAhr.js.map} +1 -1
  189. package/dist/_chunks/{constants-NvbBDCav.mjs → constants-ZQGaS2zq.mjs} +2 -2
  190. package/dist/_chunks/{constants-NvbBDCav.mjs.map → constants-ZQGaS2zq.mjs.map} +1 -1
  191. package/dist/_chunks/{constants-BbI83zJe.js → constants-cgzxEZpW.js} +6 -6
  192. package/dist/_chunks/{constants-BbI83zJe.js.map → constants-cgzxEZpW.js.map} +1 -1
  193. package/dist/_chunks/{constants-1hQG7f7W.js → constants-oJsAomZe.js} +2 -2
  194. package/dist/_chunks/{constants-1hQG7f7W.js.map → constants-oJsAomZe.js.map} +1 -1
  195. package/dist/_chunks/{constants-bkK3oASa.mjs → constants-oLogFPZi.mjs} +4 -4
  196. package/dist/_chunks/{constants-bkK3oASa.mjs.map → constants-oLogFPZi.mjs.map} +1 -1
  197. package/dist/_chunks/{develop-JwYPxc0t.mjs → develop-3cP1QX7t.mjs} +2 -2
  198. package/dist/_chunks/{develop-JwYPxc0t.mjs.map → develop-3cP1QX7t.mjs.map} +1 -1
  199. package/dist/_chunks/{develop-BKRGPCg0.js → develop-YNTGWKMC.js} +2 -2
  200. package/dist/_chunks/{develop-BKRGPCg0.js.map → develop-YNTGWKMC.js.map} +1 -1
  201. package/dist/_chunks/{index-uxS-SkK3.mjs → index-0WWbaSNa.mjs} +23 -21
  202. package/dist/_chunks/{index-uxS-SkK3.mjs.map → index-0WWbaSNa.mjs.map} +1 -1
  203. package/dist/_chunks/{index-MT7kEnIb.js → index-3OoQJD2O.js} +63 -35
  204. package/dist/_chunks/index-3OoQJD2O.js.map +1 -0
  205. package/dist/_chunks/{index-nxvCbsRp.mjs → index-LblG7sy4.mjs} +67 -39
  206. package/dist/_chunks/index-LblG7sy4.mjs.map +1 -0
  207. package/dist/_chunks/{index-Glzs3RzK.js → index-sNH2VWbC.js} +23 -21
  208. package/dist/_chunks/{index-Glzs3RzK.js.map → index-sNH2VWbC.js.map} +1 -1
  209. package/dist/_chunks/{reviewWorkflows-uyTNDMuj.js → reviewWorkflows-Q34tLlgw.js} +2 -2
  210. package/dist/_chunks/{reviewWorkflows-uyTNDMuj.js.map → reviewWorkflows-Q34tLlgw.js.map} +1 -1
  211. package/dist/_chunks/{reviewWorkflows-iKOd50BH.mjs → reviewWorkflows-VsENEtCZ.mjs} +2 -2
  212. package/dist/_chunks/{reviewWorkflows-iKOd50BH.mjs.map → reviewWorkflows-VsENEtCZ.mjs.map} +1 -1
  213. package/dist/_chunks/{transferTokens-ZAguG2g1.js → transferTokens-cNXBS34Y.js} +2 -2
  214. package/dist/_chunks/{transferTokens-ZAguG2g1.js.map → transferTokens-cNXBS34Y.js.map} +1 -1
  215. package/dist/_chunks/{transferTokens-R19FM9-I.mjs → transferTokens-liO4cxgc.mjs} +2 -2
  216. package/dist/_chunks/{transferTokens-R19FM9-I.mjs.map → transferTokens-liO4cxgc.mjs.map} +1 -1
  217. package/dist/_chunks/{useAdminRoles-KYuD14-e.js → useAdminRoles-3IgPJu3y.js} +2 -2
  218. package/dist/_chunks/{useAdminRoles-KYuD14-e.js.map → useAdminRoles-3IgPJu3y.js.map} +1 -1
  219. package/dist/_chunks/{useAdminRoles-HCV2gJiW.mjs → useAdminRoles-vkrNCJ0G.mjs} +2 -2
  220. package/dist/_chunks/{useAdminRoles-HCV2gJiW.mjs.map → useAdminRoles-vkrNCJ0G.mjs.map} +1 -1
  221. package/dist/_chunks/{useContentTypes-qLANsUAY.mjs → useContentTypes-hyaDV7vW.mjs} +2 -2
  222. package/dist/_chunks/{useContentTypes-qLANsUAY.mjs.map → useContentTypes-hyaDV7vW.mjs.map} +1 -1
  223. package/dist/_chunks/{useContentTypes-dh4S4vxh.js → useContentTypes-yBTP01dT.js} +2 -2
  224. package/dist/_chunks/{useContentTypes-dh4S4vxh.js.map → useContentTypes-yBTP01dT.js.map} +1 -1
  225. package/dist/_chunks/{useLicenseLimitNotification-O0xa-27p.mjs → useLicenseLimitNotification-IGSEKF_A.mjs} +2 -2
  226. package/dist/_chunks/{useLicenseLimitNotification-O0xa-27p.mjs.map → useLicenseLimitNotification-IGSEKF_A.mjs.map} +1 -1
  227. package/dist/_chunks/{useLicenseLimitNotification-aZpP-ofE.js → useLicenseLimitNotification-V_EIX5NN.js} +2 -2
  228. package/dist/_chunks/{useLicenseLimitNotification-aZpP-ofE.js.map → useLicenseLimitNotification-V_EIX5NN.js.map} +1 -1
  229. package/dist/_chunks/{useLicenseLimits-YEwSIySI.js → useLicenseLimits-Du8knwsR.js} +2 -2
  230. package/dist/_chunks/{useLicenseLimits-YEwSIySI.js.map → useLicenseLimits-Du8knwsR.js.map} +1 -1
  231. package/dist/_chunks/{useLicenseLimits-nXGqLs5r.mjs → useLicenseLimits-gAX0JFIu.mjs} +2 -2
  232. package/dist/_chunks/{useLicenseLimits-nXGqLs5r.mjs.map → useLicenseLimits-gAX0JFIu.mjs.map} +1 -1
  233. package/dist/_chunks/{useReviewWorkflows-kNEoxNCC.js → useReviewWorkflows-8dwtECQ8.js} +2 -2
  234. package/dist/_chunks/{useReviewWorkflows-kNEoxNCC.js.map → useReviewWorkflows-8dwtECQ8.js.map} +1 -1
  235. package/dist/_chunks/{useReviewWorkflows-1sHwqxXj.mjs → useReviewWorkflows-_5iMJ_bQ.mjs} +2 -2
  236. package/dist/_chunks/{useReviewWorkflows-1sHwqxXj.mjs.map → useReviewWorkflows-_5iMJ_bQ.mjs.map} +1 -1
  237. package/dist/_chunks/{useWebhooks-QMHPwtjJ.mjs → useWebhooks-1cD-Wjh6.mjs} +2 -2
  238. package/dist/_chunks/{useWebhooks-QMHPwtjJ.mjs.map → useWebhooks-1cD-Wjh6.mjs.map} +1 -1
  239. package/dist/_chunks/{useWebhooks-JiE94NXY.js → useWebhooks-WLn3OtSg.js} +2 -2
  240. package/dist/_chunks/{useWebhooks-JiE94NXY.js.map → useWebhooks-WLn3OtSg.js.map} +1 -1
  241. package/dist/_chunks/{validateWorkflow-Xl0qsgeG.js → validateWorkflow-_OqTLm6C.js} +2 -2
  242. package/dist/_chunks/{validateWorkflow-Xl0qsgeG.js.map → validateWorkflow-_OqTLm6C.js.map} +1 -1
  243. package/dist/_chunks/{validateWorkflow-WppfNHDq.mjs → validateWorkflow-aPtygwAZ.mjs} +2 -2
  244. package/dist/_chunks/{validateWorkflow-WppfNHDq.mjs.map → validateWorkflow-aPtygwAZ.mjs.map} +1 -1
  245. package/dist/_chunks/{watch-woggyE3I.mjs → watch-6AKkERUi.mjs} +4 -4
  246. package/dist/_chunks/{watch-woggyE3I.mjs.map → watch-6AKkERUi.mjs.map} +1 -1
  247. package/dist/_chunks/{watch-4Tz3_GAq.js → watch-IKaZxKoL.js} +4 -4
  248. package/dist/_chunks/{watch-4Tz3_GAq.js.map → watch-IKaZxKoL.js.map} +1 -1
  249. package/dist/_chunks/{watch-y0_lC6ww.mjs → watch-ObwxNhtY.mjs} +4 -4
  250. package/dist/_chunks/{watch-y0_lC6ww.mjs.map → watch-ObwxNhtY.mjs.map} +1 -1
  251. package/dist/_chunks/{watch-WGAAGTtl.js → watch-ZVMgmXK1.js} +4 -4
  252. package/dist/_chunks/{watch-WGAAGTtl.js.map → watch-ZVMgmXK1.js.map} +1 -1
  253. package/dist/admin/index.js +2 -1
  254. package/dist/admin/index.js.map +1 -1
  255. package/dist/admin/index.mjs +4 -3
  256. package/dist/admin/src/hooks/useDocument.d.ts +24 -0
  257. package/dist/admin/src/index.d.ts +1 -0
  258. package/dist/cli.js +1 -1
  259. package/dist/cli.mjs +1 -1
  260. package/package.json +13 -13
  261. package/dist/_chunks/ListPage-sqr8vCXs.js.map +0 -1
  262. package/dist/_chunks/ListPage-u73Sa-2i.mjs.map +0 -1
  263. package/dist/_chunks/index-MT7kEnIb.js.map +0 -1
  264. package/dist/_chunks/index-nxvCbsRp.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-r665L1aM.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 { 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":["useIntl","jsxs","Tr","onRowClick","jsx","Td","pxToRem","Typography","Flex","stopPropagation","Box","IconButton","useFocusWhenNavigate","useTypedSelector","selectAdminPermissions","useAPIErrorHandler","useNotification","React","useQueryParams","useRBAC","useAdminRoles","useHistory","getFetchClient","AxiosError","Main","LoadingIndicatorPage","SettingsPageTitle","HeaderLayout","Button","Plus","ActionLayout","SearchURLQuery","ContentLayout","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","index","Duplicate","Pencil","Trash","ConfirmDialog","produce","CheckPagePermissions"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage-E1x-qrkF.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 { 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":["useIntl","jsxs","Tr","onRowClick","jsx","Td","pxToRem","Typography","Flex","stopPropagation","Box","IconButton","useFocusWhenNavigate","useTypedSelector","selectAdminPermissions","useAPIErrorHandler","useNotification","React","useQueryParams","useRBAC","useAdminRoles","useHistory","getFetchClient","AxiosError","Main","LoadingIndicatorPage","SettingsPageTitle","HeaderLayout","Button","Plus","ActionLayout","SearchURLQuery","ContentLayout","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","index","Duplicate","Pencil","Trash","ConfirmDialog","produce","CheckPagePermissions"],"mappings":"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"}
@@ -6,13 +6,13 @@ import { Plus, Pencil, Trash } from "@strapi/icons";
6
6
  import { useIntl } from "react-intl";
7
7
  import { useHistory } from "react-router-dom";
8
8
  import styled from "styled-components";
9
- import { j as useTypedSelector } from "./index-nxvCbsRp.mjs";
10
- import { u as useContentTypes } from "./useContentTypes-qLANsUAY.mjs";
11
- import { u as useLicenseLimits } from "./useLicenseLimits-nXGqLs5r.mjs";
12
- import { H as Header, R as Root } from "./Layout-pd_uDly8.mjs";
9
+ import { j as useTypedSelector } from "./index-LblG7sy4.mjs";
10
+ import { u as useContentTypes } from "./useContentTypes-hyaDV7vW.mjs";
11
+ import { u as useLicenseLimits } from "./useLicenseLimits-gAX0JFIu.mjs";
12
+ import { H as Header, R as Root } from "./Layout-PTbeYyQq.mjs";
13
13
  import { L as LimitsModal } from "./LimitsModal-slvRtty7.mjs";
14
14
  import { C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from "./constants-8sAt6dKz.mjs";
15
- import { u as useReviewWorkflows } from "./useReviewWorkflows-1sHwqxXj.mjs";
15
+ import { u as useReviewWorkflows } from "./useReviewWorkflows-_5iMJ_bQ.mjs";
16
16
  import "react-dom/client";
17
17
  import "invariant";
18
18
  import "lodash/isFunction";
@@ -75,7 +75,7 @@ import "lodash/uniqBy";
75
75
  import "lodash/unset";
76
76
  import "lodash/isArray";
77
77
  import "date-fns/parseISO";
78
- import "./reviewWorkflows-iKOd50BH.mjs";
78
+ import "./reviewWorkflows-VsENEtCZ.mjs";
79
79
  const ActionLink = styled(Link)`
80
80
  align-items: center;
81
81
  height: ${pxToRem(32)};
@@ -344,4 +344,4 @@ export {
344
344
  ProtectedReviewWorkflowsPage,
345
345
  ReviewWorkflowsListView
346
346
  };
347
- //# sourceMappingURL=ListPage-EtfZzFct.mjs.map
347
+ //# sourceMappingURL=ListPage-NSFhbGAZ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-EtfZzFct.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/ListPage.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Flex,\n IconButton,\n Loader,\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n TFooter,\n Th,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n Link,\n LinkButton,\n onRowClick,\n pxToRem,\n useAPIErrorHandler,\n useNotification,\n useRBAC,\n useTracking,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTypedSelector } from '../../../../../../../admin/src/core/store/hooks';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\n\nconst ActionLink = styled(Link)`\n align-items: center;\n height: ${pxToRem(32)};\n display: flex;\n justify-content: center;\n padding: ${({ theme }) => `${theme.spaces[2]}}`};\n width: ${pxToRem(32)};\n\n svg {\n height: ${pxToRem(12)};\n width: ${pxToRem(12)};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\nexport const ReviewWorkflowsListView = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const { trackUsage } = useTracking();\n const [workflowToDelete, setWorkflowToDelete] = React.useState<string | null>(null);\n const [showLimitModal, setShowLimitModal] = React.useState<boolean>(false);\n const { collectionTypes, singleTypes, isLoading: isLoadingModels } = useContentTypes();\n const { meta, workflows, isLoading, deleteWorkflow } = useReviewWorkflows();\n const [isDeleting, setIsDeleting] = React.useState(false);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']\n );\n const {\n allowedActions: { canCreate, canDelete },\n } = useRBAC(permissions);\n\n const limits = getFeature('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] as string;\n\n const getContentTypeDisplayName = (uid: string) => {\n const contentType = [...collectionTypes, ...singleTypes].find(\n (contentType) => contentType.uid === uid\n );\n\n return contentType?.info.displayName;\n };\n\n const handleDeleteWorkflow = (workflowId: string) => {\n setWorkflowToDelete(workflowId);\n };\n\n const toggleConfirmDeleteDialog = () => {\n setWorkflowToDelete(null);\n };\n\n const handleConfirmDeleteDialog = async () => {\n if (!workflowToDelete) return;\n\n try {\n setIsDeleting(true);\n\n const res = await deleteWorkflow({ id: workflowToDelete });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWorkflowToDelete(null);\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.deleted', defaultMessage: 'Deleted' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.unexpected',\n defaultMessage: 'An error occurred',\n },\n });\n } finally {\n setIsDeleting(false);\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoading && !isLicenseLoading) {\n if (numberOfWorkflows && meta && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal(true);\n }\n }\n }, [isLicenseLoading, isLoading, meta, meta?.workflowCount, numberOfWorkflows]);\n\n return (\n <>\n <Layout.Header\n primaryAction={\n canCreate && (\n <LinkButton\n startIcon={<Plus />}\n size=\"S\"\n // @ts-expect-error - types are not inferred correctly through the as prop.\n to=\"/settings/review-workflows/create\"\n onClick={(event) => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit. If so,\n * prevent the navigation and show the limits overlay.\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n numberOfWorkflows &&\n meta &&\n meta?.workflowCount >= parseInt(numberOfWorkflows, 10)\n ) {\n event.preventDefault();\n setShowLimitModal(true);\n } else {\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </LinkButton>\n )\n }\n subtitle={formatMessage({\n id: 'Settings.review-workflows.list.page.subtitle',\n defaultMessage: 'Manage your content review process',\n })}\n title={formatMessage({\n id: 'Settings.review-workflows.list.page.title',\n defaultMessage: 'Review Workflows',\n })}\n />\n\n <Layout.Root>\n {isLoading || isLoadingModels ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.list.isLoading',\n defaultMessage: 'Workflows are loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Table\n colCount={3}\n footer={\n // TODO: we should be able to use a link here instead of an (inaccessible onClick) handler\n canCreate && (\n <TFooter\n icon={<Plus />}\n onClick={() => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n numberOfWorkflows &&\n meta &&\n meta?.workflowCount >= parseInt(numberOfWorkflows, 10)\n ) {\n setShowLimitModal(true);\n } else {\n push('/settings/review-workflows/create');\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </TFooter>\n )\n }\n rowCount={1}\n >\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.name.title',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.stages.title',\n defaultMessage: 'Stages',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.contentTypes.title',\n defaultMessage: 'Content Types',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.actions.title',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n\n <Tbody>\n {workflows?.map((workflow) => (\n <Tr\n {...onRowClick({\n fn(event) {\n const el = event.target as HTMLElement;\n // Abort row onClick event when the user click on the delete button\n if (el.nodeName === 'BUTTON') {\n return;\n }\n\n push(`/settings/review-workflows/${workflow.id}`);\n },\n })}\n key={`workflow-${workflow.id}`}\n >\n <Td width={pxToRem(250)}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {workflow.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{workflow.stages.length}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {(workflow?.contentTypes ?? []).map(getContentTypeDisplayName).join(', ')}\n </Typography>\n </Td>\n <Td>\n <Flex alignItems=\"center\" justifyContent=\"end\">\n <ActionLink\n to={`/settings/review-workflows/${workflow.id}`}\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.edit.label',\n defaultMessage: 'Edit {name}',\n },\n { name: workflow.name }\n )}\n >\n <Pencil />\n </ActionLink>\n\n {workflows.length > 1 && canDelete && (\n <IconButton\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.delete.label',\n defaultMessage: 'Delete {name}',\n },\n { name: 'Default workflow' }\n )}\n icon={<Trash />}\n noBorder\n onClick={() => {\n handleDeleteWorkflow(String(workflow.id));\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n )}\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.review-workflows.list.page.delete.confirm.body',\n defaultMessage:\n 'If you remove this worfklow, all stage-related information will be removed for this content-type. Are you sure you want to remove it?',\n }}\n isConfirmButtonLoading={isDeleting}\n isOpen={!!workflowToDelete}\n onToggleDialog={toggleConfirmDeleteDialog}\n onConfirm={handleConfirmDeleteDialog}\n />\n\n <LimitsModal.Root isOpen={showLimitModal} onClose={() => setShowLimitModal(false)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </Layout.Root>\n </>\n );\n};\n\nexport const ProtectedReviewWorkflowsPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']?.main\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ReviewWorkflowsListView />\n </CheckPagePermissions>\n );\n};\n"],"names":["React","contentType","Layout.Header","Layout.Root"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage-NSFhbGAZ.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/ListPage.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Flex,\n IconButton,\n Loader,\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n TFooter,\n Th,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n Link,\n LinkButton,\n onRowClick,\n pxToRem,\n useAPIErrorHandler,\n useNotification,\n useRBAC,\n useTracking,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTypedSelector } from '../../../../../../../admin/src/core/store/hooks';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\n\nconst ActionLink = styled(Link)`\n align-items: center;\n height: ${pxToRem(32)};\n display: flex;\n justify-content: center;\n padding: ${({ theme }) => `${theme.spaces[2]}}`};\n width: ${pxToRem(32)};\n\n svg {\n height: ${pxToRem(12)};\n width: ${pxToRem(12)};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\nexport const ReviewWorkflowsListView = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const { trackUsage } = useTracking();\n const [workflowToDelete, setWorkflowToDelete] = React.useState<string | null>(null);\n const [showLimitModal, setShowLimitModal] = React.useState<boolean>(false);\n const { collectionTypes, singleTypes, isLoading: isLoadingModels } = useContentTypes();\n const { meta, workflows, isLoading, deleteWorkflow } = useReviewWorkflows();\n const [isDeleting, setIsDeleting] = React.useState(false);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']\n );\n const {\n allowedActions: { canCreate, canDelete },\n } = useRBAC(permissions);\n\n const limits = getFeature('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] as string;\n\n const getContentTypeDisplayName = (uid: string) => {\n const contentType = [...collectionTypes, ...singleTypes].find(\n (contentType) => contentType.uid === uid\n );\n\n return contentType?.info.displayName;\n };\n\n const handleDeleteWorkflow = (workflowId: string) => {\n setWorkflowToDelete(workflowId);\n };\n\n const toggleConfirmDeleteDialog = () => {\n setWorkflowToDelete(null);\n };\n\n const handleConfirmDeleteDialog = async () => {\n if (!workflowToDelete) return;\n\n try {\n setIsDeleting(true);\n\n const res = await deleteWorkflow({ id: workflowToDelete });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWorkflowToDelete(null);\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.deleted', defaultMessage: 'Deleted' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.unexpected',\n defaultMessage: 'An error occurred',\n },\n });\n } finally {\n setIsDeleting(false);\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoading && !isLicenseLoading) {\n if (numberOfWorkflows && meta && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal(true);\n }\n }\n }, [isLicenseLoading, isLoading, meta, meta?.workflowCount, numberOfWorkflows]);\n\n return (\n <>\n <Layout.Header\n primaryAction={\n canCreate && (\n <LinkButton\n startIcon={<Plus />}\n size=\"S\"\n // @ts-expect-error - types are not inferred correctly through the as prop.\n to=\"/settings/review-workflows/create\"\n onClick={(event) => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit. If so,\n * prevent the navigation and show the limits overlay.\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n numberOfWorkflows &&\n meta &&\n meta?.workflowCount >= parseInt(numberOfWorkflows, 10)\n ) {\n event.preventDefault();\n setShowLimitModal(true);\n } else {\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </LinkButton>\n )\n }\n subtitle={formatMessage({\n id: 'Settings.review-workflows.list.page.subtitle',\n defaultMessage: 'Manage your content review process',\n })}\n title={formatMessage({\n id: 'Settings.review-workflows.list.page.title',\n defaultMessage: 'Review Workflows',\n })}\n />\n\n <Layout.Root>\n {isLoading || isLoadingModels ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.list.isLoading',\n defaultMessage: 'Workflows are loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Table\n colCount={3}\n footer={\n // TODO: we should be able to use a link here instead of an (inaccessible onClick) handler\n canCreate && (\n <TFooter\n icon={<Plus />}\n onClick={() => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n numberOfWorkflows &&\n meta &&\n meta?.workflowCount >= parseInt(numberOfWorkflows, 10)\n ) {\n setShowLimitModal(true);\n } else {\n push('/settings/review-workflows/create');\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </TFooter>\n )\n }\n rowCount={1}\n >\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.name.title',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.stages.title',\n defaultMessage: 'Stages',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.contentTypes.title',\n defaultMessage: 'Content Types',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.actions.title',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n\n <Tbody>\n {workflows?.map((workflow) => (\n <Tr\n {...onRowClick({\n fn(event) {\n const el = event.target as HTMLElement;\n // Abort row onClick event when the user click on the delete button\n if (el.nodeName === 'BUTTON') {\n return;\n }\n\n push(`/settings/review-workflows/${workflow.id}`);\n },\n })}\n key={`workflow-${workflow.id}`}\n >\n <Td width={pxToRem(250)}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {workflow.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{workflow.stages.length}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {(workflow?.contentTypes ?? []).map(getContentTypeDisplayName).join(', ')}\n </Typography>\n </Td>\n <Td>\n <Flex alignItems=\"center\" justifyContent=\"end\">\n <ActionLink\n to={`/settings/review-workflows/${workflow.id}`}\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.edit.label',\n defaultMessage: 'Edit {name}',\n },\n { name: workflow.name }\n )}\n >\n <Pencil />\n </ActionLink>\n\n {workflows.length > 1 && canDelete && (\n <IconButton\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.delete.label',\n defaultMessage: 'Delete {name}',\n },\n { name: 'Default workflow' }\n )}\n icon={<Trash />}\n noBorder\n onClick={() => {\n handleDeleteWorkflow(String(workflow.id));\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n )}\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.review-workflows.list.page.delete.confirm.body',\n defaultMessage:\n 'If you remove this worfklow, all stage-related information will be removed for this content-type. Are you sure you want to remove it?',\n }}\n isConfirmButtonLoading={isDeleting}\n isOpen={!!workflowToDelete}\n onToggleDialog={toggleConfirmDeleteDialog}\n onConfirm={handleConfirmDeleteDialog}\n />\n\n <LimitsModal.Root isOpen={showLimitModal} onClose={() => setShowLimitModal(false)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </Layout.Root>\n </>\n );\n};\n\nexport const ProtectedReviewWorkflowsPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']?.main\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ReviewWorkflowsListView />\n </CheckPagePermissions>\n );\n};\n"],"names":["React","contentType","Layout.Header","Layout.Root"],"mappings":"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"}
@@ -8,8 +8,8 @@ const helperPlugin = require("@strapi/helper-plugin");
8
8
  const Icons = require("@strapi/icons");
9
9
  const reactIntl = require("react-intl");
10
10
  const reactRouterDom = require("react-router-dom");
11
- const index = require("./index-MT7kEnIb.js");
12
- const useWebhooks = require("./useWebhooks-JiE94NXY.js");
11
+ const index = require("./index-3OoQJD2O.js");
12
+ const useWebhooks = require("./useWebhooks-WLn3OtSg.js");
13
13
  require("react-dom/client");
14
14
  require("invariant");
15
15
  require("lodash/isFunction");
@@ -400,4 +400,4 @@ const ProtectedListPage = () => {
400
400
  };
401
401
  exports.ListPage = ListPage;
402
402
  exports.ProtectedListPage = ProtectedListPage;
403
- //# sourceMappingURL=ListPage-tc2m8crj.js.map
403
+ //# sourceMappingURL=ListPage-WQ27QMWQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage-tc2m8crj.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotifyAT,\n ActionLayout,\n BaseCheckbox,\n Box,\n Button,\n ContentLayout,\n EmptyStateLayout,\n Flex,\n HeaderLayout,\n IconButton,\n Layout,\n Main,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { LinkButton } from '@strapi/design-system/v2';\nimport {\n CheckPagePermissions,\n ConfirmDialog,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { EmptyDocuments, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useHistory, useLocation } from 'react-router-dom';\n\nimport { UpdateWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { useTypedSelector } from '../../../../core/store/hooks';\n\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPage = () => {\n const [showModal, setShowModal] = React.useState(false);\n const [isDeleting, setIsDeleting] = React.useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = React.useState<string[]>([]);\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.webhooks);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n useFocusWhenNavigate();\n const { push } = useHistory();\n const { pathname } = useLocation();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions);\n const { notifyStatus } = useNotifyAT();\n\n const {\n isLoading: isWebhooksLoading,\n webhooks,\n error: webhooksError,\n updateWebhook,\n deleteManyWebhooks,\n } = useWebhooks();\n\n React.useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const enableWebhook = async (body: UpdateWebhook.Request['body'] & UpdateWebhook.Params) => {\n try {\n const res = await updateWebhook(body);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n }\n };\n\n const confirmDelete = async () => {\n try {\n setIsDeleting(true);\n const res = await deleteManyWebhooks({\n ids: webhooksToDelete,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete([]);\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n } finally {\n setIsDeleting(false);\n setShowModal(false);\n }\n };\n\n const selectAllCheckbox = (selected: boolean) =>\n selected\n ? setWebhooksToDelete(webhooks?.map((webhook) => webhook.id) ?? [])\n : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected: boolean, id: string) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const goTo = (to: string) => () => push(`${pathname}/${to}`);\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"Webhooks\" />\n <Main aria-busy={isLoading}>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton\n as={NavLink}\n startIcon={<Plus />}\n variant=\"default\"\n // @ts-expect-error – this is an issue with the DS where as props are not inferred\n to={`${pathname}/create`}\n size=\"S\"\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <ActionLayout\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <ContentLayout>\n {isLoading ? (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n ) : numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter onClick={canCreate ? goTo('create') : undefined} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n indeterminate={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n }\n value={webhooksToDeleteLength === numberOfWebhooks}\n onValueChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks?.map((webhook) => (\n <Tr\n key={webhook.id}\n onClick={canUpdate ? goTo(webhook.id) : undefined}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <BaseCheckbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n value={webhooksToDelete?.includes(webhook.id)}\n onValueChange={(selected) => selectOneCheckbox(selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n selected={webhook.isEnabled}\n onChange={(e) => {\n e.stopPropagation();\n enableWebhook({\n ...webhook,\n isEnabled: !webhook.isEnabled,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n icon={<Pencil />}\n noBorder\n />\n )}\n {canDelete && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setWebhooksToDelete([webhook.id]);\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n icon={<Trash />}\n noBorder\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n <Button\n variant=\"secondary\"\n startIcon={<Plus />}\n onClick={() => (canCreate ? goTo('create') : {})}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </Button>\n }\n />\n )}\n </ContentLayout>\n </Main>\n <ConfirmDialog\n isOpen={showModal}\n onToggleDialog={() => setShowModal((prev) => !prev)}\n onConfirm={confirmDelete}\n isConfirmButtonLoading={isDeleting}\n />\n </Layout>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.main\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["React","useTypedSelector","useIntl","useAPIErrorHandler","useNotification","useFocusWhenNavigate","useHistory","useLocation","useRBAC","useNotifyAT","useWebhooks","Layout","jsx","SettingsPageTitle","jsxs","Main","HeaderLayout","LinkButton","NavLink","Plus","ActionLayout","Fragment","Typography","Button","Trash","ContentLayout","Box","LoadingIndicatorPage","Table","TFooter","Thead","Tr","Th","BaseCheckbox","VisuallyHidden","Tbody","Td","Flex","Switch","IconButton","Pencil","EmptyStateLayout","EmptyDocuments","ConfirmDialog","CheckPagePermissions"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage-WQ27QMWQ.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotifyAT,\n ActionLayout,\n BaseCheckbox,\n Box,\n Button,\n ContentLayout,\n EmptyStateLayout,\n Flex,\n HeaderLayout,\n IconButton,\n Layout,\n Main,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { LinkButton } from '@strapi/design-system/v2';\nimport {\n CheckPagePermissions,\n ConfirmDialog,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { EmptyDocuments, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useHistory, useLocation } from 'react-router-dom';\n\nimport { UpdateWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { useTypedSelector } from '../../../../core/store/hooks';\n\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPage = () => {\n const [showModal, setShowModal] = React.useState(false);\n const [isDeleting, setIsDeleting] = React.useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = React.useState<string[]>([]);\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.webhooks);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n useFocusWhenNavigate();\n const { push } = useHistory();\n const { pathname } = useLocation();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions);\n const { notifyStatus } = useNotifyAT();\n\n const {\n isLoading: isWebhooksLoading,\n webhooks,\n error: webhooksError,\n updateWebhook,\n deleteManyWebhooks,\n } = useWebhooks();\n\n React.useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const enableWebhook = async (body: UpdateWebhook.Request['body'] & UpdateWebhook.Params) => {\n try {\n const res = await updateWebhook(body);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n }\n };\n\n const confirmDelete = async () => {\n try {\n setIsDeleting(true);\n const res = await deleteManyWebhooks({\n ids: webhooksToDelete,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete([]);\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n } finally {\n setIsDeleting(false);\n setShowModal(false);\n }\n };\n\n const selectAllCheckbox = (selected: boolean) =>\n selected\n ? setWebhooksToDelete(webhooks?.map((webhook) => webhook.id) ?? [])\n : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected: boolean, id: string) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const goTo = (to: string) => () => push(`${pathname}/${to}`);\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"Webhooks\" />\n <Main aria-busy={isLoading}>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton\n as={NavLink}\n startIcon={<Plus />}\n variant=\"default\"\n // @ts-expect-error – this is an issue with the DS where as props are not inferred\n to={`${pathname}/create`}\n size=\"S\"\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <ActionLayout\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <ContentLayout>\n {isLoading ? (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n ) : numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter onClick={canCreate ? goTo('create') : undefined} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n indeterminate={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n }\n value={webhooksToDeleteLength === numberOfWebhooks}\n onValueChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks?.map((webhook) => (\n <Tr\n key={webhook.id}\n onClick={canUpdate ? goTo(webhook.id) : undefined}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <BaseCheckbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n value={webhooksToDelete?.includes(webhook.id)}\n onValueChange={(selected) => selectOneCheckbox(selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n selected={webhook.isEnabled}\n onChange={(e) => {\n e.stopPropagation();\n enableWebhook({\n ...webhook,\n isEnabled: !webhook.isEnabled,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n icon={<Pencil />}\n noBorder\n />\n )}\n {canDelete && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setWebhooksToDelete([webhook.id]);\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n icon={<Trash />}\n noBorder\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n <Button\n variant=\"secondary\"\n startIcon={<Plus />}\n onClick={() => (canCreate ? goTo('create') : {})}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </Button>\n }\n />\n )}\n </ContentLayout>\n </Main>\n <ConfirmDialog\n isOpen={showModal}\n onToggleDialog={() => setShowModal((prev) => !prev)}\n onConfirm={confirmDelete}\n isConfirmButtonLoading={isDeleting}\n />\n </Layout>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.main\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["React","useTypedSelector","useIntl","useAPIErrorHandler","useNotification","useFocusWhenNavigate","useHistory","useLocation","useRBAC","useNotifyAT","useWebhooks","Layout","jsx","SettingsPageTitle","jsxs","Main","HeaderLayout","LinkButton","NavLink","Plus","ActionLayout","Fragment","Typography","Button","Trash","ContentLayout","Box","LoadingIndicatorPage","Table","TFooter","Thead","Tr","Th","BaseCheckbox","VisuallyHidden","Tbody","Td","Flex","Switch","IconButton","Pencil","EmptyStateLayout","EmptyDocuments","ConfirmDialog","CheckPagePermissions"],"mappings":"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"}
@@ -5,14 +5,14 @@ import { translatedErrors, useNotification, useOverlayBlocker, useAPIErrorHandle
5
5
  import * as qs from "qs";
6
6
  import { useIntl } from "react-intl";
7
7
  import { useHistory, useLocation } from "react-router-dom";
8
- import { p as useEnterprise, H as useCreateUserMutation, x as isBaseQueryError, j as useTypedSelector, k as useAdminUsers, J as useDeleteManyUsersMutation } from "./index-nxvCbsRp.mjs";
8
+ import { p as useEnterprise, H as useCreateUserMutation, x as isBaseQueryError, j as useTypedSelector, k as useAdminUsers, J as useDeleteManyUsersMutation } from "./index-LblG7sy4.mjs";
9
9
  import { F as Filters } from "./Filters-dLXfVnI0.mjs";
10
10
  import { Envelop, Pencil, Trash } from "@strapi/icons";
11
11
  import { Breadcrumbs, Crumb } from "@strapi/design-system/v2";
12
12
  import { Formik } from "formik";
13
13
  import * as yup from "yup";
14
- import { M as MagicLinkCE, S as SelectRoles } from "./SelectRoles-YHXfTcgD.mjs";
15
- import { g as getFullName } from "./AuthenticatedApp-HHKco102.mjs";
14
+ import { M as MagicLinkCE, S as SelectRoles } from "./SelectRoles-kY2cQn9t.mjs";
15
+ import { g as getFullName } from "./AuthenticatedApp-NOp7zFwi.mjs";
16
16
  import "react-dom/client";
17
17
  import "invariant";
18
18
  import "lodash/isFunction";
@@ -72,7 +72,7 @@ import "lodash/uniqBy";
72
72
  import "lodash/unset";
73
73
  import "lodash/isArray";
74
74
  import "date-fns/parseISO";
75
- import "./useAdminRoles-HCV2gJiW.mjs";
75
+ import "./useAdminRoles-vkrNCJ0G.mjs";
76
76
  import "semver/functions/lt";
77
77
  import "semver/functions/valid";
78
78
  const CreateActionCE = ({ onClick }) => {
@@ -117,7 +117,7 @@ const ModalForm = ({ onToggle }) => {
117
117
  );
118
118
  const MagicLink = useEnterprise(
119
119
  MagicLinkCE,
120
- async () => (await import("./MagicLinkEE-JKZvmPOL.mjs")).MagicLinkEE
120
+ async () => (await import("./MagicLinkEE-Mw3_4xMD.mjs")).MagicLinkEE
121
121
  );
122
122
  const [createUser] = useCreateUserMutation();
123
123
  const headerTitle = formatMessage({
@@ -432,7 +432,7 @@ const ListPageCE = () => {
432
432
  const { pagination, users } = data ?? {};
433
433
  const CreateAction = useEnterprise(
434
434
  CreateActionCE,
435
- async () => (await import("./CreateActionEE--zpyK5a-.mjs")).CreateActionEE
435
+ async () => (await import("./CreateActionEE-wZ329zt5.mjs")).CreateActionEE
436
436
  );
437
437
  const headers = TABLE_HEADERS.map((header) => ({
438
438
  ...header,
@@ -639,7 +639,7 @@ const ListPage = () => {
639
639
  ListPageCE,
640
640
  async () => (
641
641
  // eslint-disable-next-line import/no-cycle
642
- (await import("./ListPage-wNsbiVCE.mjs")).UserListPageEE
642
+ (await import("./ListPage-tVXsHAt1.mjs")).UserListPageEE
643
643
  )
644
644
  );
645
645
  if (!UsersListPage) {
@@ -656,4 +656,4 @@ export {
656
656
  ListPageCE,
657
657
  ProtectedListPage
658
658
  };
659
- //# sourceMappingURL=ListPage-CI9Q5Jj6.mjs.map
659
+ //# sourceMappingURL=ListPage-Ykm_JxVX.mjs.map