@strapi/admin 4.25.10 → 4.25.11
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.
- package/dist/_chunks/{AdminSeatInfo-6zKyZssa.js → AdminSeatInfo-IvRzj9In.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-6zKyZssa.js.map → AdminSeatInfo-IvRzj9In.js.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-Md5oKgdi.mjs → AdminSeatInfo-TaZ4UZ-e.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-Md5oKgdi.mjs.map → AdminSeatInfo-TaZ4UZ-e.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-MPoeoIOU.mjs → AuthenticatedApp-V2Dm6x5Q.mjs} +20 -20
- package/dist/_chunks/{AuthenticatedApp-MPoeoIOU.mjs.map → AuthenticatedApp-V2Dm6x5Q.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-Qy5uXoF3.js → AuthenticatedApp-d4HwjDw9.js} +20 -20
- package/dist/_chunks/{AuthenticatedApp-Qy5uXoF3.js.map → AuthenticatedApp-d4HwjDw9.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-FAHFAEmB.mjs → CreateActionEE-Gpsnkp99.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-FAHFAEmB.mjs.map → CreateActionEE-Gpsnkp99.mjs.map} +1 -1
- package/dist/_chunks/{CreateActionEE-upWBCmFE.js → CreateActionEE-mG66fRGh.js} +2 -2
- package/dist/_chunks/{CreateActionEE-upWBCmFE.js.map → CreateActionEE-mG66fRGh.js.map} +1 -1
- package/dist/_chunks/{CreatePage-hzhKSiJ0.mjs → CreatePage--nAZgwjm.mjs} +6 -6
- package/dist/_chunks/{CreatePage-hzhKSiJ0.mjs.map → CreatePage--nAZgwjm.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-GlDbH1lS.js → CreatePage-1uKKLoXZ.js} +8 -8
- package/dist/_chunks/{CreatePage-GlDbH1lS.js.map → CreatePage-1uKKLoXZ.js.map} +1 -1
- package/dist/_chunks/{CreatePage-wy4nvb2g.mjs → CreatePage-8nvBHija.mjs} +3 -3
- package/dist/_chunks/{CreatePage-wy4nvb2g.mjs.map → CreatePage-8nvBHija.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-x78bBThb.mjs → CreatePage-Xf207JjQ.mjs} +8 -8
- package/dist/_chunks/{CreatePage-x78bBThb.mjs.map → CreatePage-Xf207JjQ.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-0azPmoEO.js → CreatePage-jJLx2t7F.js} +3 -3
- package/dist/_chunks/{CreatePage-0azPmoEO.js.map → CreatePage-jJLx2t7F.js.map} +1 -1
- package/dist/_chunks/{CreatePage-X7AwX0nX.js → CreatePage-oB2CMjjF.js} +6 -6
- package/dist/_chunks/{CreatePage-X7AwX0nX.js.map → CreatePage-oB2CMjjF.js.map} +1 -1
- package/dist/_chunks/{CreateView-1pa9tRAV.js → CreateView-E5_ZJ-Vh.js} +6 -6
- package/dist/_chunks/{CreateView-1pa9tRAV.js.map → CreateView-E5_ZJ-Vh.js.map} +1 -1
- package/dist/_chunks/{CreateView-Xs06-Who.mjs → CreateView-R8w7JCuU.mjs} +6 -6
- package/dist/_chunks/{CreateView-Xs06-Who.mjs.map → CreateView-R8w7JCuU.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-7FP7qeFz.js → CreateView-VaG7ng5p.js} +6 -6
- package/dist/_chunks/{CreateView-7FP7qeFz.js.map → CreateView-VaG7ng5p.js.map} +1 -1
- package/dist/_chunks/{CreateView-lrGthjNo.mjs → CreateView-WmVucWXm.mjs} +6 -6
- package/dist/_chunks/{CreateView-lrGthjNo.mjs.map → CreateView-WmVucWXm.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-uqR-CSI7.js → EditPage-6Evkx0nK.js} +6 -6
- package/dist/_chunks/{EditPage-uqR-CSI7.js.map → EditPage-6Evkx0nK.js.map} +1 -1
- package/dist/_chunks/{EditPage-4DJ3Tjlb.js → EditPage-PlgV4-L7.js} +9 -9
- package/dist/_chunks/{EditPage-4DJ3Tjlb.js.map → EditPage-PlgV4-L7.js.map} +1 -1
- package/dist/_chunks/{EditPage-lpcjU1iO.mjs → EditPage-SAberV0V.mjs} +9 -9
- package/dist/_chunks/{EditPage-lpcjU1iO.mjs.map → EditPage-SAberV0V.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-bT_J6RPv.js → EditPage-VGOMmzQ_.js} +4 -4
- package/dist/_chunks/{EditPage-bT_J6RPv.js.map → EditPage-VGOMmzQ_.js.map} +1 -1
- package/dist/_chunks/{EditPage-QI0u5f-m.mjs → EditPage-VeKEtPyX.mjs} +4 -4
- package/dist/_chunks/{EditPage-QI0u5f-m.mjs.map → EditPage-VeKEtPyX.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-po_MJGqG.mjs → EditPage-_4I8Oa-k.mjs} +6 -6
- package/dist/_chunks/{EditPage-po_MJGqG.mjs.map → EditPage-_4I8Oa-k.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-b1mM_YNY.js → EditPage-bJwcoPI1.js} +6 -6
- package/dist/_chunks/{EditPage-b1mM_YNY.js.map → EditPage-bJwcoPI1.js.map} +1 -1
- package/dist/_chunks/{EditPage-jP3J_b-g.mjs → EditPage-vlnUWevv.mjs} +6 -6
- package/dist/_chunks/{EditPage-jP3J_b-g.mjs.map → EditPage-vlnUWevv.mjs.map} +1 -1
- package/dist/_chunks/{EditView-OkrQPrNV.mjs → EditView-PG_79Ymb.mjs} +4 -4
- package/dist/_chunks/{EditView-OkrQPrNV.mjs.map → EditView-PG_79Ymb.mjs.map} +1 -1
- package/dist/_chunks/{EditView-ZqREhMRs.js → EditView-qJoMSmHP.js} +4 -4
- package/dist/_chunks/{EditView-ZqREhMRs.js.map → EditView-qJoMSmHP.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-y6-QEPXe.js → EditViewPage-7G0Sf6s3.js} +4 -4
- package/dist/_chunks/{EditViewPage-y6-QEPXe.js.map → EditViewPage-7G0Sf6s3.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-M2aXbEr9.mjs → EditViewPage-eBg6Xxbl.mjs} +4 -4
- package/dist/_chunks/{EditViewPage-M2aXbEr9.mjs.map → EditViewPage-eBg6Xxbl.mjs.map} +1 -1
- package/dist/_chunks/{EventsTable-v1WZ_gi9.js → EventsTable-C2IKm2Mp.js} +6 -6
- package/dist/_chunks/{EventsTable-v1WZ_gi9.js.map → EventsTable-C2IKm2Mp.js.map} +1 -1
- package/dist/_chunks/{EventsTable-DiHkzjty.mjs → EventsTable-sSfq6Y3w.mjs} +6 -6
- package/dist/_chunks/{EventsTable-DiHkzjty.mjs.map → EventsTable-sSfq6Y3w.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-TYvBggdQ.mjs → HomePage--1av04GJ.mjs} +6 -6
- package/dist/_chunks/{HomePage-TYvBggdQ.mjs.map → HomePage--1av04GJ.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-p5SWGQgz.js → HomePage-8_8QD2eN.js} +5 -5
- package/dist/_chunks/{HomePage-p5SWGQgz.js.map → HomePage-8_8QD2eN.js.map} +1 -1
- package/dist/_chunks/{HomePage-qF-dEV8u.js → HomePage-KOdImcon.js} +6 -6
- package/dist/_chunks/{HomePage-qF-dEV8u.js.map → HomePage-KOdImcon.js.map} +1 -1
- package/dist/_chunks/{HomePage-n1fwbnez.mjs → HomePage-kMCTTezi.mjs} +5 -5
- package/dist/_chunks/{HomePage-n1fwbnez.mjs.map → HomePage-kMCTTezi.mjs.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-7zOeWUFf.mjs → InformationBoxEE-2joxHMYk.mjs} +3 -3
- package/dist/_chunks/{InformationBoxEE-7zOeWUFf.mjs.map → InformationBoxEE-2joxHMYk.mjs.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-zUIffb4F.js → InformationBoxEE-XL9B065O.js} +3 -3
- package/dist/_chunks/{InformationBoxEE-zUIffb4F.js.map → InformationBoxEE-XL9B065O.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-4oPT9TZu.mjs → InstalledPluginsPage-IbGZ86IQ.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-4oPT9TZu.mjs.map → InstalledPluginsPage-IbGZ86IQ.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-2Vr4BFUf.js → InstalledPluginsPage-RK949zqM.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-2Vr4BFUf.js.map → InstalledPluginsPage-RK949zqM.js.map} +1 -1
- package/dist/_chunks/{Layout-cW_d_wLg.js → Layout-ApjEjb_C.js} +2 -2
- package/dist/_chunks/{Layout-cW_d_wLg.js.map → Layout-ApjEjb_C.js.map} +1 -1
- package/dist/_chunks/{Layout-jwPGTxyo.mjs → Layout-gqXnnLEz.mjs} +2 -2
- package/dist/_chunks/{Layout-jwPGTxyo.mjs.map → Layout-gqXnnLEz.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-boe-QdwP.mjs → ListPage-Dr-G32ny.mjs} +3 -3
- package/dist/_chunks/{ListPage-boe-QdwP.mjs.map → ListPage-Dr-G32ny.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-yrF1oGFd.js → ListPage-QJ9u-Wnh.js} +8 -8
- package/dist/_chunks/{ListPage-yrF1oGFd.js.map → ListPage-QJ9u-Wnh.js.map} +1 -1
- package/dist/_chunks/{ListPage-um6bRMmX.mjs → ListPage-R8Mv7jb0.mjs} +7 -7
- package/dist/_chunks/{ListPage-um6bRMmX.mjs.map → ListPage-R8Mv7jb0.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-kxukYyMR.js → ListPage-WQWZd0h5.js} +4 -4
- package/dist/_chunks/{ListPage-kxukYyMR.js.map → ListPage-WQWZd0h5.js.map} +1 -1
- package/dist/_chunks/{ListPage-USWD7OAn.mjs → ListPage-m14W3vSp.mjs} +6 -6
- package/dist/_chunks/{ListPage-USWD7OAn.mjs.map → ListPage-m14W3vSp.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-mYq4GXDx.mjs → ListPage-nnFjETUn.mjs} +2 -2
- package/dist/_chunks/{ListPage-mYq4GXDx.mjs.map → ListPage-nnFjETUn.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-gQmALRcv.js → ListPage-nohDKXEq.js} +3 -3
- package/dist/_chunks/{ListPage-gQmALRcv.js.map → ListPage-nohDKXEq.js.map} +1 -1
- package/dist/_chunks/{ListPage-XuUYNFON.mjs → ListPage-o6L_K8zP.mjs} +4 -4
- package/dist/_chunks/{ListPage-XuUYNFON.mjs.map → ListPage-o6L_K8zP.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-U-CCr8z2.js → ListPage-oEz5aRQg.js} +7 -7
- package/dist/_chunks/{ListPage-U-CCr8z2.js.map → ListPage-oEz5aRQg.js.map} +1 -1
- package/dist/_chunks/{ListPage-iMHN5Q_L.js → ListPage-pIynCOwO.js} +6 -6
- package/dist/_chunks/{ListPage-iMHN5Q_L.js.map → ListPage-pIynCOwO.js.map} +1 -1
- package/dist/_chunks/{ListPage-cf0xg9Vl.js → ListPage-tkJ_3XtP.js} +2 -2
- package/dist/_chunks/{ListPage-cf0xg9Vl.js.map → ListPage-tkJ_3XtP.js.map} +1 -1
- package/dist/_chunks/{ListPage-tQZAAMZ2.mjs → ListPage-zcELnM0p.mjs} +8 -8
- package/dist/_chunks/{ListPage-tQZAAMZ2.mjs.map → ListPage-zcELnM0p.mjs.map} +1 -1
- package/dist/_chunks/{ListView-Y8xl3SNS.mjs → ListView-0fHREVEs.mjs} +3 -3
- package/dist/_chunks/{ListView-Y8xl3SNS.mjs.map → ListView-0fHREVEs.mjs.map} +1 -1
- package/dist/_chunks/{ListView-8aqFHxwk.js → ListView-GZj1TPXW.js} +3 -3
- package/dist/_chunks/{ListView-8aqFHxwk.js.map → ListView-GZj1TPXW.js.map} +1 -1
- package/dist/_chunks/{ListView-1y2gjseP.js → ListView-HUto2Z9a.js} +3 -3
- package/dist/_chunks/{ListView-1y2gjseP.js.map → ListView-HUto2Z9a.js.map} +1 -1
- package/dist/_chunks/{ListView-1TZSzm0E.mjs → ListView-u6Hur78O.mjs} +3 -3
- package/dist/_chunks/{ListView-1TZSzm0E.mjs.map → ListView-u6Hur78O.mjs.map} +1 -1
- package/dist/_chunks/{Login-39PECWHo.js → Login-4FOq3sMY.js} +2 -2
- package/dist/_chunks/{Login-39PECWHo.js.map → Login-4FOq3sMY.js.map} +1 -1
- package/dist/_chunks/{Login-MvF-l7Jf.mjs → Login-Bop3n16U.mjs} +2 -2
- package/dist/_chunks/{Login-MvF-l7Jf.mjs.map → Login-Bop3n16U.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-RZbU7-RH.js → MagicLinkEE-fQDGvBPD.js} +4 -4
- package/dist/_chunks/{MagicLinkEE-RZbU7-RH.js.map → MagicLinkEE-fQDGvBPD.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-2SgSsQ9D.mjs → MagicLinkEE-xTlGsx4K.mjs} +4 -4
- package/dist/_chunks/{MagicLinkEE-2SgSsQ9D.mjs.map → MagicLinkEE-xTlGsx4K.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-avpto0An.mjs → MarketplacePage-JD39Vp_U.mjs} +8 -4
- package/dist/_chunks/MarketplacePage-JD39Vp_U.mjs.map +1 -0
- package/dist/_chunks/{MarketplacePage-wE94Wh4I.js → MarketplacePage-ycBwltCT.js} +8 -4
- package/dist/_chunks/MarketplacePage-ycBwltCT.js.map +1 -0
- package/dist/_chunks/{Permissions-1Q5T7SVl.js → Permissions-34PVE5l6.js} +2 -2
- package/dist/_chunks/{Permissions-1Q5T7SVl.js.map → Permissions-34PVE5l6.js.map} +1 -1
- package/dist/_chunks/{Permissions-UlAp5vXm.mjs → Permissions-GD25CJav.mjs} +2 -2
- package/dist/_chunks/{Permissions-UlAp5vXm.mjs.map → Permissions-GD25CJav.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-g36T4a0Q.mjs → ProfilePage-Z1dDvamO.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-g36T4a0Q.mjs.map → ProfilePage-Z1dDvamO.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-efqbtTP9.js → ProfilePage-m9T_jYzt.js} +3 -3
- package/dist/_chunks/{ProfilePage-efqbtTP9.js.map → ProfilePage-m9T_jYzt.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-23m0Jbcb.mjs → ReviewWorkflowsColumn-MHXwihX0.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-23m0Jbcb.mjs.map → ReviewWorkflowsColumn-MHXwihX0.mjs.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-1rphvuAX.js → ReviewWorkflowsColumn-wFq2rw5O.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-1rphvuAX.js.map → ReviewWorkflowsColumn-wFq2rw5O.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-EMflJoZf.js → SelectRoles-OYK2B3u2.js} +3 -3
- package/dist/_chunks/{SelectRoles-EMflJoZf.js.map → SelectRoles-OYK2B3u2.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-EcNeQDtr.mjs → SelectRoles-Q7FxAHaJ.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-EcNeQDtr.mjs.map → SelectRoles-Q7FxAHaJ.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-ctRMOKpC.mjs → SettingsPage-Wo10cVFB.mjs} +21 -21
- package/dist/_chunks/{SettingsPage-ctRMOKpC.mjs.map → SettingsPage-Wo10cVFB.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-pbZQYRba.js → SettingsPage-r7M2dq3I.js} +21 -21
- package/dist/_chunks/{SettingsPage-pbZQYRba.js.map → SettingsPage-r7M2dq3I.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-hF18NC0F.mjs → SingleSignOnPage-JXlR2r4R.mjs} +3 -3
- package/dist/_chunks/{SingleSignOnPage-hF18NC0F.mjs.map → SingleSignOnPage-JXlR2r4R.mjs.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-0PwZElsW.js → SingleSignOnPage-NyiQL_wU.js} +3 -3
- package/dist/_chunks/{SingleSignOnPage-0PwZElsW.js.map → SingleSignOnPage-NyiQL_wU.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-OKSX2lfX.js → TokenTypeSelect-F79ta7iK.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect-OKSX2lfX.js.map → TokenTypeSelect-F79ta7iK.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-VOdl0ZmL.mjs → TokenTypeSelect-HPb-tc3H.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect-VOdl0ZmL.mjs.map → TokenTypeSelect-HPb-tc3H.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-EVFBWYmA.js → apiTokens-JqxtCsPu.js} +2 -2
- package/dist/_chunks/{apiTokens-EVFBWYmA.js.map → apiTokens-JqxtCsPu.js.map} +1 -1
- package/dist/_chunks/{apiTokens-yJQ8-8xC.mjs → apiTokens-t5Agrc8F.mjs} +2 -2
- package/dist/_chunks/{apiTokens-yJQ8-8xC.mjs.map → apiTokens-t5Agrc8F.mjs.map} +1 -1
- package/dist/_chunks/{constants-0ftEXoFj.mjs → constants-4YpDDDmy.mjs} +2 -2
- package/dist/_chunks/{constants-0ftEXoFj.mjs.map → constants-4YpDDDmy.mjs.map} +1 -1
- package/dist/_chunks/{constants-s0SKq0VB.js → constants-VsoMjeOR.js} +4 -4
- package/dist/_chunks/{constants-s0SKq0VB.js.map → constants-VsoMjeOR.js.map} +1 -1
- package/dist/_chunks/{constants-6DC4IjBd.mjs → constants-Xm38B-F8.mjs} +6 -6
- package/dist/_chunks/{constants-6DC4IjBd.mjs.map → constants-Xm38B-F8.mjs.map} +1 -1
- package/dist/_chunks/{constants-iyl1t6wG.js → constants-Y8Gj8EuL.js} +2 -2
- package/dist/_chunks/{constants-iyl1t6wG.js.map → constants-Y8Gj8EuL.js.map} +1 -1
- package/dist/_chunks/{constants-FtFKsXD2.mjs → constants-jWFql0Ju.mjs} +2 -2
- package/dist/_chunks/{constants-FtFKsXD2.mjs.map → constants-jWFql0Ju.mjs.map} +1 -1
- package/dist/_chunks/{constants-5cTkDbEw.mjs → constants-jro5nuh2.mjs} +4 -4
- package/dist/_chunks/{constants-5cTkDbEw.mjs.map → constants-jro5nuh2.mjs.map} +1 -1
- package/dist/_chunks/{constants-XwCwfaxY.js → constants-obwPO3fy.js} +2 -2
- package/dist/_chunks/{constants-XwCwfaxY.js.map → constants-obwPO3fy.js.map} +1 -1
- package/dist/_chunks/{constants-GrxlpuUW.js → constants-t8b57vSd.js} +6 -6
- package/dist/_chunks/{constants-GrxlpuUW.js.map → constants-t8b57vSd.js.map} +1 -1
- package/dist/_chunks/{index-Ts0i8jmH.js → index-VyjiJi0S.js} +10 -10
- package/dist/_chunks/{index-Ts0i8jmH.js.map → index-VyjiJi0S.js.map} +1 -1
- package/dist/_chunks/{index-eT0CIaDr.mjs → index-qQynS5yD.mjs} +10 -10
- package/dist/_chunks/{index-eT0CIaDr.mjs.map → index-qQynS5yD.mjs.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-X4opVwyZ.mjs → reviewWorkflows-lF_2qmI8.mjs} +2 -2
- package/dist/_chunks/{reviewWorkflows-X4opVwyZ.mjs.map → reviewWorkflows-lF_2qmI8.mjs.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-VYHOVjTk.js → reviewWorkflows-v74f5ogs.js} +2 -2
- package/dist/_chunks/{reviewWorkflows-VYHOVjTk.js.map → reviewWorkflows-v74f5ogs.js.map} +1 -1
- package/dist/_chunks/{transferTokens-XbqoKHA6.js → transferTokens-GuF0F-xw.js} +2 -2
- package/dist/_chunks/{transferTokens-XbqoKHA6.js.map → transferTokens-GuF0F-xw.js.map} +1 -1
- package/dist/_chunks/{transferTokens-tZFQBBDc.mjs → transferTokens-gOQ9NmIp.mjs} +2 -2
- package/dist/_chunks/{transferTokens-tZFQBBDc.mjs.map → transferTokens-gOQ9NmIp.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-lZ7mEYnT.mjs → useAdminRoles-1eHA6jB7.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-lZ7mEYnT.mjs.map → useAdminRoles-1eHA6jB7.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-MjR-VmL_.js → useAdminRoles-Azeibt7M.js} +2 -2
- package/dist/_chunks/{useAdminRoles-MjR-VmL_.js.map → useAdminRoles-Azeibt7M.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-buqO4eWt.mjs → useContentTypes-XTpMl3U-.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-buqO4eWt.mjs.map → useContentTypes-XTpMl3U-.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-dP0t6DnS.js → useContentTypes-onkhq4uE.js} +2 -2
- package/dist/_chunks/{useContentTypes-dP0t6DnS.js.map → useContentTypes-onkhq4uE.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-QwULiYn5.mjs → useLicenseLimitNotification-VyBWXhDc.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-QwULiYn5.mjs.map → useLicenseLimitNotification-VyBWXhDc.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-HG-BNi8G.js → useLicenseLimitNotification-pfHm0cux.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-HG-BNi8G.js.map → useLicenseLimitNotification-pfHm0cux.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-Xn3L8MI8.mjs → useReviewWorkflows--OSBhIG-.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-Xn3L8MI8.mjs.map → useReviewWorkflows--OSBhIG-.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-vusjQAH8.js → useReviewWorkflows-syV84pfl.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-vusjQAH8.js.map → useReviewWorkflows-syV84pfl.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-yfZ95LU8.js → useWebhooks-iXkr6ExT.js} +2 -2
- package/dist/_chunks/{useWebhooks-yfZ95LU8.js.map → useWebhooks-iXkr6ExT.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-FgW5WF9_.mjs → useWebhooks-ukVCvQKw.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-FgW5WF9_.mjs.map → useWebhooks-ukVCvQKw.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-JGLqIx3z.mjs → validateWorkflow-cqSZZDgN.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-JGLqIx3z.mjs.map → validateWorkflow-cqSZZDgN.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-4DkGfvCG.js → validateWorkflow-nEwtJ3ZE.js} +2 -2
- package/dist/_chunks/{validateWorkflow-4DkGfvCG.js.map → validateWorkflow-nEwtJ3ZE.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/package.json +12 -12
- package/dist/_chunks/MarketplacePage-avpto0An.mjs.map +0 -1
- package/dist/_chunks/MarketplacePage-wE94Wh4I.js.map +0 -1
|
@@ -7,9 +7,9 @@ import { AxiosError } from "axios";
|
|
|
7
7
|
import produce from "immer";
|
|
8
8
|
import { useIntl } from "react-intl";
|
|
9
9
|
import { useHistory } from "react-router-dom";
|
|
10
|
-
import { j as useTypedSelector } from "./index-
|
|
11
|
-
import { u as useAdminRoles } from "./useAdminRoles-
|
|
12
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
10
|
+
import { j as useTypedSelector } from "./index-qQynS5yD.mjs";
|
|
11
|
+
import { u as useAdminRoles } from "./useAdminRoles-1eHA6jB7.mjs";
|
|
12
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-V2Dm6x5Q.mjs";
|
|
13
13
|
import "react-dom/client";
|
|
14
14
|
import "invariant";
|
|
15
15
|
import "lodash/isFunction";
|
|
@@ -345,4 +345,4 @@ export {
|
|
|
345
345
|
ListPage,
|
|
346
346
|
ProtectedListPage
|
|
347
347
|
};
|
|
348
|
-
//# sourceMappingURL=ListPage-
|
|
348
|
+
//# sourceMappingURL=ListPage-o6L_K8zP.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-XuUYNFON.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleRow.tsx","../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import { Box, Flex, IconButton, IconButtonProps, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\n\ninterface RoleRowProps extends Pick<AdminRole, 'id' | 'name' | 'description' | 'usersCount'> {\n icons: Array<Required<Pick<IconButtonProps, 'icon' | 'label' | 'onClick'>>>;\n rowIndex: number;\n canUpdate?: boolean;\n}\n\nconst RoleRow = ({\n id,\n name,\n description,\n usersCount,\n icons,\n rowIndex,\n canUpdate,\n}: RoleRowProps) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton\n onClick={icon.onClick}\n label={icon.label}\n borderWidth={0}\n icon={icon.icon}\n />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nexport { RoleRow };\nexport type { RoleRowProps };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport produce from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const { push } = useHistory();\n const [{ showModalConfirmButtonLoading, roleToDelete }, dispatch] = React.useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (error instanceof AxiosError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }\n handleToggleModal();\n };\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n push(`/settings/roles/duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n icon: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => push(`/settings/roles/${role.id}`),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAoB;AACZ,QAAA,EAAE,kBAAkB;AACpB,QAAA,CAAG,EAAA,UAAU,IAAI;AAEvB,QAAM,iBAAiB;AAAA,IACrB;AAAA,MACE,IAAI;AAAA,MACJ,gBAAgB;AAAA,IAClB;AAAA,IACA,EAAE,QAAQ,WAAW;AAAA,EAAA;AAIrB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,iBAAe;AAAA,MAEd,GAAI,YACD,WAAW;AAAA;AAAA,QAET,IAAI,WAAW;AAAA,MAChB,CAAA,IACD,CAAC;AAAA,MAEL,UAAA;AAAA,QAAA,oBAAC,IAAG,EAAA,UAAU,QAAQ,GAAG,GACvB,UAAA,oBAAC,YAAW,EAAA,UAAQ,MAAC,WAAU,cAC5B,UAAA,KACH,CAAA,GACF;AAAA,QACC,oBAAA,IAAA,EAAG,UAAU,QAAQ,GAAG,GACvB,UAAC,oBAAA,YAAA,EAAW,UAAQ,MAAC,WAAU,cAC5B,sBACH,CAAA,GACF;AAAA,4BACC,IACC,EAAA,UAAA,oBAAC,cAAW,WAAU,cAAc,0BAAe,EACrD,CAAA;AAAA,QACA,oBAAC,MACC,UAAC,oBAAA,MAAA,EAAK,gBAAe,YAAY,GAAG,iBACjC,UAAM,MAAA;AAAA,UAAI,CAAC,MAAM,MAChB,OACE,oBAAC,OAAqB,aAAa,MAAM,IAAI,IAAI,GAC/C,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS,KAAK;AAAA,cACd,OAAO,KAAK;AAAA,cACZ,aAAa;AAAA,cACb,MAAM,KAAK;AAAA,YAAA;AAAA,UAAA,KALL,KAAK,KAOf,IACE;AAAA,WAER,EACF,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IApCK;AAAA,EAAA;AAuCX;AChCA,MAAM,WAAW,MAAM;AACf,QAAA,EAAE,kBAAkB;AACL;AACf,QAAA,cAAc,iBAAiB,sBAAsB;AACrD,QAAA,EAAE,mBAAmB;AAC3B,QAAM,qBAAqB;AAC3B,QAAM,CAAC,0BAA0B,4BAA4B,IAAI,MAAM,SAAS,KAAK;AACrF,QAAM,CAAC,EAAE,OAAO,IAAI,eAAgC;AAC9C,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,WAAW,WAAW,SAAS,UAAU;AAAA,EACzD,IAAA,QAAQ,YAAY,UAAU,KAAK;AAEvC,QAAM,EAAE,OAAO,SAAS,aAAiB,IAAA;AAAA,IACvC,EAAE,SAAS,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,MAAM,KAAK,IAAI,OAAU;AAAA,IACtE;AAAA,MACE,2BAA2B;AAAA,MAC3B,MAAM,2BAA2B,CAAC;AAAA,IACpC;AAAA,EAAA;AAGI,QAAA,EAAE,SAAS;AACjB,QAAM,CAAC,EAAE,+BAA+B,aAAgB,GAAA,QAAQ,IAAI,MAAM;AAAA,IACxE;AAAA,IACA;AAAA,EAAA;AAGI,QAAA,EAAE,SAAS;AAEjB,QAAM,mBAAmB,YAAY;AAC/B,QAAA;AACO,eAAA;AAAA,QACP,MAAM;AAAA,MAAA,CACP;AAED,YAAM,KAAK,6BAA6B;AAAA,QACtC,KAAK,CAAC,YAAY;AAAA,MAAA,CACnB;AAED,YAAM,aAAa;AAEV,eAAA;AAAA,QACP,MAAM;AAAA,MAAA,CACP;AAAA,aACM,OAAO;AACd,UAAI,iBAAiB,YAAY;AACZ,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,eAAe,KAAK;AAAA,QAAA,CAC9B;AAAA,MACH;AAAA,IACF;AACkB;EAAA;AAGd,QAAA,qBAAqB,MAAM,KAAK,qBAAqB;AAE3D,QAAM,oBAAoB,MAAM,6BAA6B,CAAC,SAAS,CAAC,IAAI;AAE5E,QAAM,oBAAoB,CAAC,SAAoB,CAAC,MAA2C;AACzF,MAAE,eAAe;AACjB,MAAE,gBAAgB;AAElB,QAAI,KAAK,YAAY;AACA,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,EAAE,IAAI,iDAAiD;AAAA,MAAA,CACjE;AAAA,IAAA,OACI;AACI,eAAA;AAAA,QACP,MAAM;AAAA,QACN,IAAI,KAAK;AAAA,MAAA,CACV;AAEiB;IACpB;AAAA,EAAA;AAGF,QAAM,uBAAuB,CAAC,SAAoB,CAAC,MAA2C;AAC5F,MAAE,eAAe;AACjB,MAAE,gBAAgB;AAEb,SAAA,6BAA6B,KAAK,EAAE,EAAE;AAAA,EAAA;AAGvC,QAAA,WAAW,MAAM,SAAS;AAChC,QAAM,WAAW;AAEjB,MAAI,yBAAyB;AAC3B,WACG,oBAAA,MAAA,EACC,UAAC,oBAAA,sBAAA,CAAA,CAAqB,EACxB,CAAA;AAAA,EAEJ;AAEA,8BACG,MACC,EAAA,UAAA;AAAA,IAAC,oBAAA,mBAAA,EAAkB,MAAK,QAAQ,CAAA;AAAA,IAChC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eACE,YACG,oBAAA,QAAA,EAAO,SAAS,oBAAoB,WAAW,oBAAC,MAAK,CAAA,CAAA,GAAI,MAAK,KAC5D,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,GACH,IACE;AAAA,QAEN,OAAO,cAAc;AAAA,UACnB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD,UAAU,cAAc;AAAA,UACtB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD,IAAG;AAAA,MAAA;AAAA,IACL;AAAA,IACC,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,EAAE,IAAI,8BAA8B,gBAAgB,sBAAsB;AAAA,cAC1E;AAAA,gBACE,QAAQ,cAAc;AAAA,kBACpB,IAAI;AAAA,kBACJ,gBAAgB;AAAA,gBAAA,CACjB;AAAA,cACH;AAAA,YACF;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ;AAAA,IAED,+BACE,eACC,EAAA,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,QACE,YACE,oBAAC,SAAQ,EAAA,SAAS,oBAAoB,MAAM,oBAAC,MAAK,CAAA,CAAA,GAC/C,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,GACH,IACE;AAAA,QAGN,UAAA;AAAA,UAAA,oBAAC,OACC,EAAA,UAAA,qBAAC,IAAG,EAAA,iBAAe,GACjB,UAAA;AAAA,YAAA,oBAAC,MACC,UAAC,oBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,cACb,IAAI;AAAA,cACJ,gBAAgB;AAAA,YAAA,CACjB,GACH,EACF,CAAA;AAAA,YACA,oBAAC,MACC,UAAC,oBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,cACb,IAAI;AAAA,cACJ,gBAAgB;AAAA,YAAA,CACjB,GACH,EACF,CAAA;AAAA,YACA,oBAAC,MACC,UAAC,oBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,cACb,IAAI;AAAA,cACJ,gBAAgB;AAAA,YAAA,CACjB,GACH,EACF,CAAA;AAAA,YACC,oBAAA,IAAA,EACC,UAAC,oBAAA,gBAAA,EACE,UAAc,cAAA;AAAA,cACb,IAAI;AAAA,cACJ,gBAAgB;AAAA,YAAA,CACjB,GACH,EACF,CAAA;AAAA,UAAA,EAAA,CACF,EACF,CAAA;AAAA,8BACC,OACE,EAAA,UAAA,OAAO,IAAI,CAAC,MAAM,UACjB;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,IAAI,KAAK;AAAA,cACT,MAAM,KAAK;AAAA,cACX,aAAa,KAAK;AAAA,cAClB,YAAY,KAAK;AAAA,cACjB,OACE;AAAA,gBACE,aACG;AAAA,kBACC,SAAS,qBAAqB,IAAI;AAAA,kBAClC,OAAO,cAAc;AAAA,oBACnB,IAAI;AAAA,oBACJ,gBAAgB;AAAA,kBAAA,CACjB;AAAA,kBACD,0BAAO,WAAU,EAAA;AAAA,gBACnB;AAAA,gBACF,aACG;AAAA,kBACC,SAAS,MAAM,KAAK,mBAAmB,KAAK,EAAE,EAAE;AAAA,kBAChD,OAAO,cAAc,EAAE,IAAI,kBAAkB,gBAAgB,QAAQ;AAAA,kBACrE,0BAAO,QAAO,EAAA;AAAA,gBAChB;AAAA,gBACF,aACG;AAAA,kBACC,SAAS,kBAAkB,IAAI;AAAA,kBAC/B,OAAO,cAAc,EAAE,IAAI,iBAAiB,gBAAgB,UAAU;AAAA,kBACtE,0BAAO,OAAM,EAAA;AAAA,gBACf;AAAA,cAAA,EACF,OAAO,OAAO;AAAA,cAElB,UAAU,QAAQ;AAAA,cAClB;AAAA,YAAA;AAAA,YA/BK,KAAK;AAAA,UAiCb,CAAA,GACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,wBAAwB;AAAA,QACxB,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,EACF,EAAA,CAAA;AAEJ;AAgBA,MAAM,eAAe;AAAA,EACnB,cAAc;AAAA,EACd,+BAA+B;AAAA,EAC/B,mBAAmB;AACrB;AAwBA,MAAM,UAAU,CAAC,OAAc,WAC7B,QAAQ,OAAO,CAAC,eAAe;AAC7B,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,mBAAmB;AACtB,iBAAW,gCAAgC;AAC3C;AAAA,IACF;AAAA,IACA,KAAK,6BAA6B;AAChC,iBAAW,oBAAoB;AAC/B,iBAAW,eAAe;AAC1B;AAAA,IACF;AAAA,IACA,KAAK,wBAAwB;AAC3B,iBAAW,oBAAoB;AAC/B,iBAAW,eAAe;AAC1B,iBAAW,gCAAgC;AAC3C;AAAA,IACF;AAAA,IACA,KAAK,sBAAsB;AACzB,iBAAW,eAAe,OAAO;AAEjC;AAAA,IACF;AAAA,IACA;AACS,aAAA;AAAA,EACX;AACF,CAAC;AAMH,MAAM,oBAAoB,MAAM;AACxB,QAAA,cAAc,iBAAiB,sBAAsB;AAGzD,SAAA,oBAAC,wBAAqB,aAAa,YAAY,UAAU,MAAM,MAC7D,UAAC,oBAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"ListPage-o6L_K8zP.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleRow.tsx","../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import { Box, Flex, IconButton, IconButtonProps, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\n\ninterface RoleRowProps extends Pick<AdminRole, 'id' | 'name' | 'description' | 'usersCount'> {\n icons: Array<Required<Pick<IconButtonProps, 'icon' | 'label' | 'onClick'>>>;\n rowIndex: number;\n canUpdate?: boolean;\n}\n\nconst RoleRow = ({\n id,\n name,\n description,\n usersCount,\n icons,\n rowIndex,\n canUpdate,\n}: RoleRowProps) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton\n onClick={icon.onClick}\n label={icon.label}\n borderWidth={0}\n icon={icon.icon}\n />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nexport { RoleRow };\nexport type { RoleRowProps };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport produce from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const { push } = useHistory();\n const [{ showModalConfirmButtonLoading, roleToDelete }, dispatch] = React.useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (error instanceof AxiosError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }\n handleToggleModal();\n };\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n push(`/settings/roles/duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n icon: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => push(`/settings/roles/${role.id}`),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const ListPage = require("./ListPage-
|
|
5
|
-
const useLicenseLimitNotification = require("./useLicenseLimitNotification-
|
|
4
|
+
const ListPage = require("./ListPage-QJ9u-Wnh.js");
|
|
5
|
+
const useLicenseLimitNotification = require("./useLicenseLimitNotification-pfHm0cux.js");
|
|
6
6
|
require("react");
|
|
7
7
|
require("@strapi/design-system");
|
|
8
8
|
require("@strapi/helper-plugin");
|
|
9
9
|
require("qs");
|
|
10
10
|
require("react-intl");
|
|
11
11
|
require("react-router-dom");
|
|
12
|
-
require("./index-
|
|
12
|
+
require("./index-VyjiJi0S.js");
|
|
13
13
|
require("react-dom/client");
|
|
14
14
|
require("invariant");
|
|
15
15
|
require("lodash/isFunction");
|
|
@@ -74,9 +74,9 @@ require("lodash/unset");
|
|
|
74
74
|
require("lodash/isArray");
|
|
75
75
|
require("date-fns/parseISO");
|
|
76
76
|
require("./Filters-Gdnt7qft.js");
|
|
77
|
-
require("./SelectRoles-
|
|
78
|
-
require("./useAdminRoles-
|
|
79
|
-
require("./AuthenticatedApp-
|
|
77
|
+
require("./SelectRoles-OYK2B3u2.js");
|
|
78
|
+
require("./useAdminRoles-Azeibt7M.js");
|
|
79
|
+
require("./AuthenticatedApp-d4HwjDw9.js");
|
|
80
80
|
require("semver/functions/lt");
|
|
81
81
|
require("semver/functions/valid");
|
|
82
82
|
require("lodash/isNil");
|
|
@@ -85,4 +85,4 @@ const UserListPageEE = () => {
|
|
|
85
85
|
return /* @__PURE__ */ jsxRuntime.jsx(ListPage.ListPageCE, {});
|
|
86
86
|
};
|
|
87
87
|
exports.UserListPageEE = UserListPageEE;
|
|
88
|
-
//# sourceMappingURL=ListPage-
|
|
88
|
+
//# sourceMappingURL=ListPage-oEz5aRQg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-
|
|
1
|
+
{"version":3,"file":"ListPage-oEz5aRQg.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage.tsx"],"sourcesContent":["import { ListPageCE } from '../../../../../../../admin/src/pages/Settings/pages/Users/ListPage';\nimport { useLicenseLimitNotification } from '../../../../hooks/useLicenseLimitNotification';\n\nexport const UserListPageEE = () => {\n useLicenseLimitNotification();\n\n return <ListPageCE />;\n};\n"],"names":["useLicenseLimitNotification","ListPageCE"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,iBAAiB,MAAM;AACNA,8BAAAA;AAE5B,wCAAQC,qBAAW,CAAA,CAAA;AACrB;;"}
|
|
@@ -8,12 +8,12 @@ const Icons = require("@strapi/icons");
|
|
|
8
8
|
const reactIntl = require("react-intl");
|
|
9
9
|
const reactRouterDom = require("react-router-dom");
|
|
10
10
|
const styled = require("styled-components");
|
|
11
|
-
const index = require("./index-
|
|
12
|
-
const useContentTypes = require("./useContentTypes-
|
|
13
|
-
const Layout = require("./Layout-
|
|
11
|
+
const index = require("./index-VyjiJi0S.js");
|
|
12
|
+
const useContentTypes = require("./useContentTypes-onkhq4uE.js");
|
|
13
|
+
const Layout = require("./Layout-ApjEjb_C.js");
|
|
14
14
|
const LimitsModal = require("./LimitsModal-gq7jwfap.js");
|
|
15
15
|
const constants = require("./constants-L1I-Y-RJ.js");
|
|
16
|
-
const useReviewWorkflows = require("./useReviewWorkflows-
|
|
16
|
+
const useReviewWorkflows = require("./useReviewWorkflows-syV84pfl.js");
|
|
17
17
|
require("react-dom/client");
|
|
18
18
|
require("invariant");
|
|
19
19
|
require("lodash/isFunction");
|
|
@@ -76,7 +76,7 @@ require("lodash/uniqBy");
|
|
|
76
76
|
require("lodash/unset");
|
|
77
77
|
require("lodash/isArray");
|
|
78
78
|
require("date-fns/parseISO");
|
|
79
|
-
require("./reviewWorkflows-
|
|
79
|
+
require("./reviewWorkflows-v74f5ogs.js");
|
|
80
80
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
81
81
|
const React__default = /* @__PURE__ */ _interopDefault(React);
|
|
82
82
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
@@ -346,4 +346,4 @@ const ProtectedReviewWorkflowsPage = () => {
|
|
|
346
346
|
};
|
|
347
347
|
exports.ProtectedReviewWorkflowsPage = ProtectedReviewWorkflowsPage;
|
|
348
348
|
exports.ReviewWorkflowsListView = ReviewWorkflowsListView;
|
|
349
|
-
//# sourceMappingURL=ListPage-
|
|
349
|
+
//# sourceMappingURL=ListPage-pIynCOwO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-iMHN5Q_L.js","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":["styled","Link","pxToRem","useIntl","useHistory","useTracking","React","useContentTypes","useReviewWorkflows","useAPIErrorHandler","useNotification","useLicenseLimits","useTypedSelector","useRBAC","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","contentType","jsxs","Fragment","jsx","Layout.Header","LinkButton","Plus","Layout.Root","Flex","Loader","Table","TFooter","Thead","Tr","Th","Typography","VisuallyHidden","Tbody","createElement","onRowClick","Td","Pencil","IconButton","Trash","ConfirmDialog","LimitsModal","CheckPagePermissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListPage-pIynCOwO.js","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":["styled","Link","pxToRem","useIntl","useHistory","useTracking","React","useContentTypes","useReviewWorkflows","useAPIErrorHandler","useNotification","useLicenseLimits","useTypedSelector","useRBAC","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","contentType","jsxs","Fragment","jsx","Layout.Header","LinkButton","Plus","Layout.Root","Flex","Loader","Table","TFooter","Thead","Tr","Th","Typography","VisuallyHidden","Tbody","createElement","onRowClick","Td","Pencil","IconButton","Trash","ConfirmDialog","LimitsModal","CheckPagePermissions"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const designSystem = require("@strapi/design-system");
|
|
5
5
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
6
6
|
const reactIntl = require("react-intl");
|
|
7
|
-
const index = require("./index-
|
|
7
|
+
const index = require("./index-VyjiJi0S.js");
|
|
8
8
|
const Filters = require("./Filters-Gdnt7qft.js");
|
|
9
9
|
const React = require("react");
|
|
10
10
|
const v2 = require("@strapi/design-system/v2");
|
|
@@ -614,4 +614,4 @@ const ProtectedListPage = () => {
|
|
|
614
614
|
};
|
|
615
615
|
exports.ListPage = ListPage;
|
|
616
616
|
exports.ProtectedListPage = ProtectedListPage;
|
|
617
|
-
//# sourceMappingURL=ListPage-
|
|
617
|
+
//# sourceMappingURL=ListPage-tkJ_3XtP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-cf0xg9Vl.js","sources":["../../ee/admin/src/services/auditLogs.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/PaginationFooter.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/TableRows.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.tsx"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery };\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nexport const useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value: string) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n JSONInput,\n Loader,\n ModalBody,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useNotification, useAPIErrorHandler } from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\n\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useGetAuditLogQuery } from '../../../../../services/auditLogs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { actionTypes, getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\ninterface ModalProps {\n handleClose: () => void;\n logId: string;\n}\n\nexport const Modal = ({ handleClose, logId }: ModalProps) => {\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading } = useGetAuditLogQuery(logId);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n handleClose();\n }\n }, [error, formatAPIError, handleClose, toggleNotification]);\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data && 'date' in data ? formatTimeStamp(data.date) : '';\n\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <ModalBody>\n <ActionBody isLoading={isLoading} data={data as AuditLog} formattedDate={formattedDate} />\n </ModalBody>\n </ModalLayout>\n );\n};\n\ninterface ActionBodyProps {\n isLoading?: boolean;\n data: AuditLog;\n formattedDate: string;\n}\n\nconst ActionBody = ({ isLoading, data, formattedDate }: ActionBodyProps) => {\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n {/**\n * TODO: this will need to be translated.\n */}\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action as keyof typeof actionTypes),\n },\n // @ts-expect-error - any\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid>\n <JSONInput\n value={JSON.stringify(payload, null, 2)}\n disabled\n label={formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n />\n </>\n );\n};\n\ninterface ActionItemProps {\n actionLabel: string;\n actionName: string;\n}\n\nconst ActionItem = ({ actionLabel, actionName }: ActionItemProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { PageSizeURLQuery, PaginationURLQuery } from '@strapi/helper-plugin';\n\nimport { Pagination } from '../../../../../../../../shared/contracts/shared';\n\ntype PaginationFooterProps = {\n pagination: Pagination;\n};\n\nexport const PaginationFooter = (\n { pagination }: PaginationFooterProps = {\n pagination: {\n page: 1,\n pageCount: 0,\n pageSize: 50,\n total: 0,\n },\n }\n) => {\n return (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n );\n};\n","import React from 'react';\n\nimport { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Eye } from '@strapi/icons';\nimport { Attribute, Entity } from '@strapi/types';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { ListLayoutRow } from '../../../../../../../../admin/src/content-manager/utils/layouts';\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nexport interface TableHeader extends Omit<ListLayoutRow, 'metadatas' | 'fieldSchema' | 'name'> {\n metadatas: Omit<ListLayoutRow['metadatas'], 'label'> & {\n label: string;\n };\n name: keyof AuditLog;\n fieldSchema?: Attribute.Any | { type: 'custom' };\n cellFormatter?: (data?: AuditLog[keyof AuditLog]) => React.ReactNode;\n}\n\ntype TableRowsProps = {\n headers: TableHeader[];\n rows: AuditLog[];\n onOpenModal: (id: Entity.ID) => void;\n};\n\nexport const TableRows = ({ headers, rows, onOpenModal }: TableRowsProps) => {\n const { formatMessage } = useIntl();\n const formatTimeStamp = useFormatTimeStamp();\n\n // Not sure that 'value' can be typed properly\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const getCellValue = ({ type, value, model }: { type: string; value: any; model: unknown }) => {\n if (type === 'date') {\n return formatTimeStamp(value);\n }\n\n if (type === 'action') {\n return formatMessage(\n {\n id: `Settings.permissions.auditLogs.${value}`,\n defaultMessage: getDefaultMessage(value),\n },\n // @ts-expect-error - Model\n { model }\n );\n }\n\n return value || '-';\n };\n\n return (\n <Tbody>\n {rows.map((data) => {\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => onOpenModal(data.id),\n })}\n >\n {headers?.map(({ key, name, cellFormatter }) => {\n const rowValue = data[name];\n\n return (\n <Td key={key}>\n <Typography textColor=\"neutral800\">\n {getCellValue({\n type: key,\n value: cellFormatter ? cellFormatter(rowValue) : rowValue,\n model: data.payload?.model,\n })}\n </Typography>\n </Td>\n );\n })}\n <Td {...stopPropagation}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => onOpenModal(data.id)}\n aria-label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${data.action} action` }\n )}\n noBorder\n icon={<Eye />}\n />\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nTableRows.defaultProps = {\n rows: [],\n};\n\nTableRows.propTypes = {\n headers: PropTypes.array.isRequired,\n rows: PropTypes.array,\n onOpenModal: PropTypes.func.isRequired,\n};\n","import * as React from 'react';\n\nimport { useAPIErrorHandler, useNotification, useQueryParams } from '@strapi/helper-plugin';\n\nimport { useAdminUsers } from '../../../../../../../../admin/src/services/users';\nimport { useGetAuditLogsQuery } from '../../../../../services/auditLogs';\n\nexport const useAuditLogsData = ({\n canReadAuditLogs,\n canReadUsers,\n}: {\n canReadAuditLogs: boolean;\n canReadUsers: boolean;\n}) => {\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams();\n\n const {\n data,\n error,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n skip: !canReadUsers,\n refetchOnMountOrArgChange: true,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'warning', message: formatAPIError(error) });\n }\n }, [error, toggleNotification, formatAPIError]);\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n error: auditLogsError,\n } = useGetAuditLogsQuery(query, {\n refetchOnMountOrArgChange: true,\n skip: !canReadAuditLogs,\n });\n\n React.useEffect(() => {\n if (auditLogsError) {\n toggleNotification({ type: 'warning', message: formatAPIError(auditLogsError) });\n }\n }, [auditLogsError, toggleNotification, formatAPIError]);\n\n return {\n auditLogs,\n users: data?.users ?? [],\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n","import { Combobox, ComboboxOption, ComboboxProps } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ntype ComboboxFilterProps = {\n value?: string;\n options?: { label: string; customValue: string }[];\n onChange?: ComboboxProps['onChange'];\n};\n\nexport const ComboboxFilter = (\n { value, options, onChange }: ComboboxFilterProps = {\n value: undefined,\n }\n) => {\n const { formatMessage } = useIntl();\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n return (\n <Combobox aria-label={ariaLabel} value={value} onChange={onChange}>\n {options?.map(({ label, customValue }) => {\n return (\n <ComboboxOption key={customValue} value={customValue}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n","import { FilterData } from '@strapi/helper-plugin';\nimport { IntlShape } from 'react-intl';\n\nimport { SanitizedAdminUser } from '../../../../../../../../shared/contracts/shared';\nimport { ComboboxFilter } from '../components/ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nconst customOperators = [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n];\n\nexport const getDisplayedFilters = ({\n formatMessage,\n users,\n canReadUsers,\n}: {\n formatMessage: IntlShape['formatMessage'];\n users: SanitizedAdminUser[];\n canReadUsers: boolean;\n}): FilterData[] => {\n const filters = [\n {\n name: 'action',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n customInput: ComboboxFilter,\n // Default return of Object.keys function is string\n options: (Object.keys(actionTypes) as (keyof typeof actionTypes)[]).map((action) => ({\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n customValue: action,\n })),\n },\n fieldSchema: { type: 'enumeration' },\n },\n {\n name: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n },\n fieldSchema: { type: 'datetime' },\n },\n ] satisfies FilterData[];\n\n if (canReadUsers && users) {\n const getDisplayNameFromUser = (user: SanitizedAdminUser) => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return formatMessage(\n {\n id: 'Settings.permissions.auditLogs.user.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname: user.firstname,\n lastname: user.lastname,\n }\n );\n }\n\n return user.email;\n };\n\n return [\n ...filters,\n {\n name: 'user',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n options: users.map((user) => ({\n label: getDisplayNameFromUser(user),\n // Combobox expects a string value\n customValue: user.id.toString(),\n })),\n customInput: ComboboxFilter,\n },\n fieldSchema: { type: 'relation', mainField: { name: 'id' } },\n } satisfies FilterData,\n ];\n }\n\n return filters;\n};\n","import {\n ActionLayout,\n Box,\n ContentLayout,\n HeaderLayout,\n Layout,\n Main,\n} from '@strapi/design-system';\nimport {\n AnErrorOccurred,\n DynamicTable,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useQueryParams,\n useRBAC,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\n\nimport { useTypedSelector } from '../../../../../../../admin/src/core/store/hooks';\nimport { Filters } from '../../../../../../../admin/src/pages/Settings/components/Filters';\nimport { SanitizedAdminUserForAuditLogs } from '../../../../../../../shared/contracts/audit-logs';\n\nimport { Modal } from './components/Modal';\nimport { PaginationFooter } from './components/PaginationFooter';\nimport { TableHeader, TableRows } from './components/TableRows';\nimport { useAuditLogsData } from './hooks/useAuditLogsData';\nimport { getDisplayedFilters } from './utils/getDisplayedFilters';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n isLoading: isLoadingRBAC,\n } = useRBAC({\n ...permissions?.auditLogs,\n readUsers: permissions?.users.read || [],\n });\n\n const [{ query }, setQuery] = useQueryParams<{ id?: string | null }>();\n const {\n auditLogs,\n users,\n isLoading: isLoadingData,\n hasError,\n } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n useFocusWhenNavigate();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const headers = [\n {\n name: 'action',\n key: 'action',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n sortable: true,\n },\n },\n {\n name: 'date',\n key: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n sortable: true,\n },\n },\n {\n key: 'user',\n name: 'user',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n sortable: false,\n },\n // In this case, the passed parameter cannot and shouldn't be something else than User\n cellFormatter: (user) => (user ? (user as SanitizedAdminUserForAuditLogs).displayName : ''),\n },\n ] satisfies TableHeader[];\n\n if (hasError) {\n return (\n <Layout>\n <ContentLayout>\n <Box paddingTop={8}>\n <AnErrorOccurred />\n </Box>\n </ContentLayout>\n </Layout>\n );\n }\n\n const isLoading = isLoadingData || isLoadingRBAC;\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle\n name={formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n })}\n />\n <HeaderLayout\n title={formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n })}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <ActionLayout startActions={<Filters displayedFilters={displayedFilters} />} />\n <ContentLayout>\n <DynamicTable\n contentType=\"Audit logs\"\n headers={headers}\n rows={auditLogs?.results || []}\n withBulkActions\n isLoading={isLoading}\n >\n <TableRows\n headers={headers}\n rows={auditLogs?.results || []}\n onOpenModal={(id) => setQuery({ id: `${id}` })}\n />\n </DynamicTable>\n {auditLogs?.pagination && <PaginationFooter pagination={auditLogs.pagination} />}\n </ContentLayout>\n {query?.id && <Modal handleClose={() => setQuery({ id: null }, 'remove')} logId={query.id} />}\n </Main>\n );\n};\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.auditLogs?.main\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["adminApi","useIntl","parseISO","useNotification","useAPIErrorHandler","React","jsxs","ModalLayout","jsx","ModalHeader","Breadcrumbs","Crumb","ModalBody","Flex","Loader","Fragment","Box","Typography","Grid","JSONInput","PageSizeURLQuery","PaginationURLQuery","Tbody","Tr","onRowClick","Td","stopPropagation","IconButton","Eye","PropTypes","useQueryParams","useAdminUsers","Combobox","ComboboxOption","useTypedSelector","useRBAC","useFocusWhenNavigate","Layout","ContentLayout","AnErrorOccurred","Main","SettingsPageTitle","HeaderLayout","ActionLayout","Filters","DynamicTable","CheckPagePermissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListPage-tkJ_3XtP.js","sources":["../../ee/admin/src/services/auditLogs.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/PaginationFooter.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/TableRows.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.tsx","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.ts","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.tsx"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery };\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nexport const useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value: string) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n JSONInput,\n Loader,\n ModalBody,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useNotification, useAPIErrorHandler } from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\n\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useGetAuditLogQuery } from '../../../../../services/auditLogs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { actionTypes, getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\ninterface ModalProps {\n handleClose: () => void;\n logId: string;\n}\n\nexport const Modal = ({ handleClose, logId }: ModalProps) => {\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading } = useGetAuditLogQuery(logId);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n handleClose();\n }\n }, [error, formatAPIError, handleClose, toggleNotification]);\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data && 'date' in data ? formatTimeStamp(data.date) : '';\n\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <ModalBody>\n <ActionBody isLoading={isLoading} data={data as AuditLog} formattedDate={formattedDate} />\n </ModalBody>\n </ModalLayout>\n );\n};\n\ninterface ActionBodyProps {\n isLoading?: boolean;\n data: AuditLog;\n formattedDate: string;\n}\n\nconst ActionBody = ({ isLoading, data, formattedDate }: ActionBodyProps) => {\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n {/**\n * TODO: this will need to be translated.\n */}\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action as keyof typeof actionTypes),\n },\n // @ts-expect-error - any\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid>\n <JSONInput\n value={JSON.stringify(payload, null, 2)}\n disabled\n label={formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n />\n </>\n );\n};\n\ninterface ActionItemProps {\n actionLabel: string;\n actionName: string;\n}\n\nconst ActionItem = ({ actionLabel, actionName }: ActionItemProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { PageSizeURLQuery, PaginationURLQuery } from '@strapi/helper-plugin';\n\nimport { Pagination } from '../../../../../../../../shared/contracts/shared';\n\ntype PaginationFooterProps = {\n pagination: Pagination;\n};\n\nexport const PaginationFooter = (\n { pagination }: PaginationFooterProps = {\n pagination: {\n page: 1,\n pageCount: 0,\n pageSize: 50,\n total: 0,\n },\n }\n) => {\n return (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n );\n};\n","import React from 'react';\n\nimport { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Eye } from '@strapi/icons';\nimport { Attribute, Entity } from '@strapi/types';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { ListLayoutRow } from '../../../../../../../../admin/src/content-manager/utils/layouts';\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nexport interface TableHeader extends Omit<ListLayoutRow, 'metadatas' | 'fieldSchema' | 'name'> {\n metadatas: Omit<ListLayoutRow['metadatas'], 'label'> & {\n label: string;\n };\n name: keyof AuditLog;\n fieldSchema?: Attribute.Any | { type: 'custom' };\n cellFormatter?: (data?: AuditLog[keyof AuditLog]) => React.ReactNode;\n}\n\ntype TableRowsProps = {\n headers: TableHeader[];\n rows: AuditLog[];\n onOpenModal: (id: Entity.ID) => void;\n};\n\nexport const TableRows = ({ headers, rows, onOpenModal }: TableRowsProps) => {\n const { formatMessage } = useIntl();\n const formatTimeStamp = useFormatTimeStamp();\n\n // Not sure that 'value' can be typed properly\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const getCellValue = ({ type, value, model }: { type: string; value: any; model: unknown }) => {\n if (type === 'date') {\n return formatTimeStamp(value);\n }\n\n if (type === 'action') {\n return formatMessage(\n {\n id: `Settings.permissions.auditLogs.${value}`,\n defaultMessage: getDefaultMessage(value),\n },\n // @ts-expect-error - Model\n { model }\n );\n }\n\n return value || '-';\n };\n\n return (\n <Tbody>\n {rows.map((data) => {\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => onOpenModal(data.id),\n })}\n >\n {headers?.map(({ key, name, cellFormatter }) => {\n const rowValue = data[name];\n\n return (\n <Td key={key}>\n <Typography textColor=\"neutral800\">\n {getCellValue({\n type: key,\n value: cellFormatter ? cellFormatter(rowValue) : rowValue,\n model: data.payload?.model,\n })}\n </Typography>\n </Td>\n );\n })}\n <Td {...stopPropagation}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => onOpenModal(data.id)}\n aria-label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${data.action} action` }\n )}\n noBorder\n icon={<Eye />}\n />\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nTableRows.defaultProps = {\n rows: [],\n};\n\nTableRows.propTypes = {\n headers: PropTypes.array.isRequired,\n rows: PropTypes.array,\n onOpenModal: PropTypes.func.isRequired,\n};\n","import * as React from 'react';\n\nimport { useAPIErrorHandler, useNotification, useQueryParams } from '@strapi/helper-plugin';\n\nimport { useAdminUsers } from '../../../../../../../../admin/src/services/users';\nimport { useGetAuditLogsQuery } from '../../../../../services/auditLogs';\n\nexport const useAuditLogsData = ({\n canReadAuditLogs,\n canReadUsers,\n}: {\n canReadAuditLogs: boolean;\n canReadUsers: boolean;\n}) => {\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams();\n\n const {\n data,\n error,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n skip: !canReadUsers,\n refetchOnMountOrArgChange: true,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'warning', message: formatAPIError(error) });\n }\n }, [error, toggleNotification, formatAPIError]);\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n error: auditLogsError,\n } = useGetAuditLogsQuery(query, {\n refetchOnMountOrArgChange: true,\n skip: !canReadAuditLogs,\n });\n\n React.useEffect(() => {\n if (auditLogsError) {\n toggleNotification({ type: 'warning', message: formatAPIError(auditLogsError) });\n }\n }, [auditLogsError, toggleNotification, formatAPIError]);\n\n return {\n auditLogs,\n users: data?.users ?? [],\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n","import { Combobox, ComboboxOption, ComboboxProps } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ntype ComboboxFilterProps = {\n value?: string;\n options?: { label: string; customValue: string }[];\n onChange?: ComboboxProps['onChange'];\n};\n\nexport const ComboboxFilter = (\n { value, options, onChange }: ComboboxFilterProps = {\n value: undefined,\n }\n) => {\n const { formatMessage } = useIntl();\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n return (\n <Combobox aria-label={ariaLabel} value={value} onChange={onChange}>\n {options?.map(({ label, customValue }) => {\n return (\n <ComboboxOption key={customValue} value={customValue}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n","import { FilterData } from '@strapi/helper-plugin';\nimport { IntlShape } from 'react-intl';\n\nimport { SanitizedAdminUser } from '../../../../../../../../shared/contracts/shared';\nimport { ComboboxFilter } from '../components/ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nconst customOperators = [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n];\n\nexport const getDisplayedFilters = ({\n formatMessage,\n users,\n canReadUsers,\n}: {\n formatMessage: IntlShape['formatMessage'];\n users: SanitizedAdminUser[];\n canReadUsers: boolean;\n}): FilterData[] => {\n const filters = [\n {\n name: 'action',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n customInput: ComboboxFilter,\n // Default return of Object.keys function is string\n options: (Object.keys(actionTypes) as (keyof typeof actionTypes)[]).map((action) => ({\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n customValue: action,\n })),\n },\n fieldSchema: { type: 'enumeration' },\n },\n {\n name: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n },\n fieldSchema: { type: 'datetime' },\n },\n ] satisfies FilterData[];\n\n if (canReadUsers && users) {\n const getDisplayNameFromUser = (user: SanitizedAdminUser) => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return formatMessage(\n {\n id: 'Settings.permissions.auditLogs.user.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname: user.firstname,\n lastname: user.lastname,\n }\n );\n }\n\n return user.email;\n };\n\n return [\n ...filters,\n {\n name: 'user',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n options: users.map((user) => ({\n label: getDisplayNameFromUser(user),\n // Combobox expects a string value\n customValue: user.id.toString(),\n })),\n customInput: ComboboxFilter,\n },\n fieldSchema: { type: 'relation', mainField: { name: 'id' } },\n } satisfies FilterData,\n ];\n }\n\n return filters;\n};\n","import {\n ActionLayout,\n Box,\n ContentLayout,\n HeaderLayout,\n Layout,\n Main,\n} from '@strapi/design-system';\nimport {\n AnErrorOccurred,\n DynamicTable,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useQueryParams,\n useRBAC,\n CheckPagePermissions,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\n\nimport { useTypedSelector } from '../../../../../../../admin/src/core/store/hooks';\nimport { Filters } from '../../../../../../../admin/src/pages/Settings/components/Filters';\nimport { SanitizedAdminUserForAuditLogs } from '../../../../../../../shared/contracts/audit-logs';\n\nimport { Modal } from './components/Modal';\nimport { PaginationFooter } from './components/PaginationFooter';\nimport { TableHeader, TableRows } from './components/TableRows';\nimport { useAuditLogsData } from './hooks/useAuditLogsData';\nimport { getDisplayedFilters } from './utils/getDisplayedFilters';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n isLoading: isLoadingRBAC,\n } = useRBAC({\n ...permissions?.auditLogs,\n readUsers: permissions?.users.read || [],\n });\n\n const [{ query }, setQuery] = useQueryParams<{ id?: string | null }>();\n const {\n auditLogs,\n users,\n isLoading: isLoadingData,\n hasError,\n } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n useFocusWhenNavigate();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const headers = [\n {\n name: 'action',\n key: 'action',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n sortable: true,\n },\n },\n {\n name: 'date',\n key: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n sortable: true,\n },\n },\n {\n key: 'user',\n name: 'user',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n sortable: false,\n },\n // In this case, the passed parameter cannot and shouldn't be something else than User\n cellFormatter: (user) => (user ? (user as SanitizedAdminUserForAuditLogs).displayName : ''),\n },\n ] satisfies TableHeader[];\n\n if (hasError) {\n return (\n <Layout>\n <ContentLayout>\n <Box paddingTop={8}>\n <AnErrorOccurred />\n </Box>\n </ContentLayout>\n </Layout>\n );\n }\n\n const isLoading = isLoadingData || isLoadingRBAC;\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle\n name={formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n })}\n />\n <HeaderLayout\n title={formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n })}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <ActionLayout startActions={<Filters displayedFilters={displayedFilters} />} />\n <ContentLayout>\n <DynamicTable\n contentType=\"Audit logs\"\n headers={headers}\n rows={auditLogs?.results || []}\n withBulkActions\n isLoading={isLoading}\n >\n <TableRows\n headers={headers}\n rows={auditLogs?.results || []}\n onOpenModal={(id) => setQuery({ id: `${id}` })}\n />\n </DynamicTable>\n {auditLogs?.pagination && <PaginationFooter pagination={auditLogs.pagination} />}\n </ContentLayout>\n {query?.id && <Modal handleClose={() => setQuery({ id: null }, 'remove')} logId={query.id} />}\n </Main>\n );\n};\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.auditLogs?.main\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["adminApi","useIntl","parseISO","useNotification","useAPIErrorHandler","React","jsxs","ModalLayout","jsx","ModalHeader","Breadcrumbs","Crumb","ModalBody","Flex","Loader","Fragment","Box","Typography","Grid","JSONInput","PageSizeURLQuery","PaginationURLQuery","Tbody","Tr","onRowClick","Td","stopPropagation","IconButton","Eye","PropTypes","useQueryParams","useAdminUsers","Combobox","ComboboxOption","useTypedSelector","useRBAC","useFocusWhenNavigate","Layout","ContentLayout","AnErrorOccurred","Main","SettingsPageTitle","HeaderLayout","ActionLayout","Filters","DynamicTable","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-
|
|
8
|
+
import { p as useEnterprise, H as useCreateUserMutation, x as isBaseQueryError, j as useTypedSelector, k as useAdminUsers, J as useDeleteManyUsersMutation } from "./index-qQynS5yD.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-
|
|
15
|
-
import { g as getFullName } from "./AuthenticatedApp-
|
|
14
|
+
import { M as MagicLinkCE, S as SelectRoles } from "./SelectRoles-Q7FxAHaJ.mjs";
|
|
15
|
+
import { g as getFullName } from "./AuthenticatedApp-V2Dm6x5Q.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-
|
|
75
|
+
import "./useAdminRoles-1eHA6jB7.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-
|
|
120
|
+
async () => (await import("./MagicLinkEE-xTlGsx4K.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-
|
|
435
|
+
async () => (await import("./CreateActionEE-Gpsnkp99.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-
|
|
642
|
+
(await import("./ListPage-R8Mv7jb0.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-
|
|
659
|
+
//# sourceMappingURL=ListPage-zcELnM0p.mjs.map
|