@strapi/admin 5.5.0 → 5.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/{AdminSeatInfo-BaUlvJzw.mjs → AdminSeatInfo-CfbjPdSS.mjs} +4 -4
- package/dist/admin/{AdminSeatInfo-BaUlvJzw.mjs.map → AdminSeatInfo-CfbjPdSS.mjs.map} +1 -1
- package/dist/admin/{AdminSeatInfo-YZSkpqTQ.js → AdminSeatInfo-DJY5XfV1.js} +4 -4
- package/dist/admin/{AdminSeatInfo-YZSkpqTQ.js.map → AdminSeatInfo-DJY5XfV1.js.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-ClnQrMNQ.js → ApplicationInfoPage-C8Js51px.js} +5 -5
- package/dist/admin/{ApplicationInfoPage-ClnQrMNQ.js.map → ApplicationInfoPage-C8Js51px.js.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-Ks5SLUGu.mjs → ApplicationInfoPage-IKNw1l3b.mjs} +5 -5
- package/dist/admin/{ApplicationInfoPage-Ks5SLUGu.mjs.map → ApplicationInfoPage-IKNw1l3b.mjs.map} +1 -1
- package/dist/admin/{AuthResponse-B8hxRyao.js → AuthResponse-4S-gAOdq.js} +2 -2
- package/dist/admin/{AuthResponse-B8hxRyao.js.map → AuthResponse-4S-gAOdq.js.map} +1 -1
- package/dist/admin/{AuthResponse-8JdghoaK.mjs → AuthResponse-CWs8VL81.mjs} +2 -2
- package/dist/admin/{AuthResponse-8JdghoaK.mjs.map → AuthResponse-CWs8VL81.mjs.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-DsJdSL_P.js → AuthenticatedLayout-BS8WApcc.js} +13 -15
- package/dist/admin/{AuthenticatedLayout-DsJdSL_P.js.map → AuthenticatedLayout-BS8WApcc.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-Cg52L7aR.mjs → AuthenticatedLayout-CUCcjQYz.mjs} +13 -15
- package/dist/admin/{AuthenticatedLayout-Cg52L7aR.mjs.map → AuthenticatedLayout-CUCcjQYz.mjs.map} +1 -1
- package/dist/admin/{CreateActionEE-BnGBSrSz.js → CreateActionEE-CRTFGenF.js} +2 -2
- package/dist/admin/{CreateActionEE-BnGBSrSz.js.map → CreateActionEE-CRTFGenF.js.map} +1 -1
- package/dist/admin/{CreateActionEE-Bz3zvzzy.mjs → CreateActionEE-JUvyeAny.mjs} +2 -2
- package/dist/admin/{CreateActionEE-Bz3zvzzy.mjs.map → CreateActionEE-JUvyeAny.mjs.map} +1 -1
- package/dist/admin/{CreatePage-CY7csJBb.mjs → CreatePage-B7adJJTS.mjs} +3 -3
- package/dist/admin/{CreatePage-CY7csJBb.mjs.map → CreatePage-B7adJJTS.mjs.map} +1 -1
- package/dist/admin/{CreatePage-hAU7MYMO.mjs → CreatePage-Ho2L832V.mjs} +5 -5
- package/dist/admin/{CreatePage-hAU7MYMO.mjs.map → CreatePage-Ho2L832V.mjs.map} +1 -1
- package/dist/admin/{CreatePage-BiPSXJ-5.js → CreatePage-X40MsEu9.js} +5 -5
- package/dist/admin/{CreatePage-BiPSXJ-5.js.map → CreatePage-X40MsEu9.js.map} +1 -1
- package/dist/admin/{CreatePage-C1_fxsS6.js → CreatePage-r-ZRvum0.js} +3 -3
- package/dist/admin/{CreatePage-C1_fxsS6.js.map → CreatePage-r-ZRvum0.js.map} +1 -1
- package/dist/admin/{CreateView-BaOGTZm4.mjs → CreateView-BhtF8q5d.mjs} +3 -3
- package/dist/admin/{CreateView-BaOGTZm4.mjs.map → CreateView-BhtF8q5d.mjs.map} +1 -1
- package/dist/admin/{CreateView-EXtz_hGf.js → CreateView-Bz00BS8b.js} +3 -3
- package/dist/admin/{CreateView-EXtz_hGf.js.map → CreateView-Bz00BS8b.js.map} +1 -1
- package/dist/admin/{CreateView-DndCRvYM.js → CreateView-DJgGSvqH.js} +3 -3
- package/dist/admin/{CreateView-DndCRvYM.js.map → CreateView-DJgGSvqH.js.map} +1 -1
- package/dist/admin/{CreateView-DCx5JOxR.mjs → CreateView-DkA_AV__.mjs} +3 -3
- package/dist/admin/{CreateView-DCx5JOxR.mjs.map → CreateView-DkA_AV__.mjs.map} +1 -1
- package/dist/admin/{EditPage-ChQWSaBb.js → EditPage-BNx574ls.js} +6 -6
- package/dist/admin/{EditPage-ChQWSaBb.js.map → EditPage-BNx574ls.js.map} +1 -1
- package/dist/admin/{EditPage-DhzUBzXn.mjs → EditPage-BzG6Tnyz.mjs} +8 -8
- package/dist/admin/{EditPage-DhzUBzXn.mjs.map → EditPage-BzG6Tnyz.mjs.map} +1 -1
- package/dist/admin/{EditPage-BFAXkHHw.js → EditPage-Ct1G9w6R.js} +7 -7
- package/dist/admin/{EditPage-BFAXkHHw.js.map → EditPage-Ct1G9w6R.js.map} +1 -1
- package/dist/admin/{EditPage-Colh61BU.js → EditPage-DU0xZ5NS.js} +8 -8
- package/dist/admin/{EditPage-Colh61BU.js.map → EditPage-DU0xZ5NS.js.map} +1 -1
- package/dist/admin/{EditPage-CouwHHq5.mjs → EditPage-K8FVv06l.mjs} +6 -6
- package/dist/admin/{EditPage-CouwHHq5.mjs.map → EditPage-K8FVv06l.mjs.map} +1 -1
- package/dist/admin/{EditPage-CxBdyVKZ.mjs → EditPage-kL54-F2l.mjs} +7 -7
- package/dist/admin/{EditPage-CxBdyVKZ.mjs.map → EditPage-kL54-F2l.mjs.map} +1 -1
- package/dist/admin/{EditView-DViZU0kt.mjs → EditView-CqNmM6VS.mjs} +6 -6
- package/dist/admin/{EditView-DViZU0kt.mjs.map → EditView-CqNmM6VS.mjs.map} +1 -1
- package/dist/admin/{EditView-_x-Ox_M_.js → EditView-DUjICSdC.js} +6 -6
- package/dist/admin/{EditView-_x-Ox_M_.js.map → EditView-DUjICSdC.js.map} +1 -1
- package/dist/admin/{EditViewPage-CNcABIQh.js → EditViewPage-B0D0S4Ne.js} +6 -6
- package/dist/admin/{EditViewPage-CNcABIQh.js.map → EditViewPage-B0D0S4Ne.js.map} +1 -1
- package/dist/admin/{EditViewPage-BJRqDkwj.mjs → EditViewPage-CpbgcsSJ.mjs} +6 -6
- package/dist/admin/{EditViewPage-BJRqDkwj.mjs.map → EditViewPage-CpbgcsSJ.mjs.map} +1 -1
- package/dist/admin/{EventsTable-BmLpsREo.js → EventsTable-4orDAPit.js} +2 -2
- package/dist/admin/{EventsTable-BmLpsREo.js.map → EventsTable-4orDAPit.js.map} +1 -1
- package/dist/admin/{EventsTable-CPOsecQe.mjs → EventsTable-Tpl3_Njy.mjs} +2 -2
- package/dist/admin/{EventsTable-CPOsecQe.mjs.map → EventsTable-Tpl3_Njy.mjs.map} +1 -1
- package/dist/admin/{HomePage-DUBrDS1c.js → HomePage-C6cnCK0L.js} +3 -3
- package/dist/admin/{HomePage-DUBrDS1c.js.map → HomePage-C6cnCK0L.js.map} +1 -1
- package/dist/admin/{HomePage-BLO4BMS9.mjs → HomePage-D4XOzGPD.mjs} +3 -3
- package/dist/admin/{HomePage-BLO4BMS9.mjs.map → HomePage-D4XOzGPD.mjs.map} +1 -1
- package/dist/admin/{HomePage-K7dp73m_.js → HomePage-DuO_Lyap.js} +5 -5
- package/dist/admin/{HomePage-K7dp73m_.js.map → HomePage-DuO_Lyap.js.map} +1 -1
- package/dist/admin/{HomePage-D3Uf6UN4.mjs → HomePage-UcvSRaJ8.mjs} +5 -5
- package/dist/admin/{HomePage-D3Uf6UN4.mjs.map → HomePage-UcvSRaJ8.mjs.map} +1 -1
- package/dist/admin/{InstalledPlugins-ByaKVrZv.mjs → InstalledPlugins-BjooHFn5.mjs} +4 -4
- package/dist/admin/{InstalledPlugins-ByaKVrZv.mjs.map → InstalledPlugins-BjooHFn5.mjs.map} +1 -1
- package/dist/admin/{InstalledPlugins-G0h9zQEW.js → InstalledPlugins-CXf9b9Py.js} +4 -4
- package/dist/admin/{InstalledPlugins-G0h9zQEW.js.map → InstalledPlugins-CXf9b9Py.js.map} +1 -1
- package/dist/admin/{Layout-CbrrMtL2.mjs → Layout-BkjD8iXK.mjs} +5 -5
- package/dist/admin/{Layout-CbrrMtL2.mjs.map → Layout-BkjD8iXK.mjs.map} +1 -1
- package/dist/admin/{Layout-BLVFaprL.js → Layout-CqSpT2BF.js} +5 -5
- package/dist/admin/{Layout-BLVFaprL.js.map → Layout-CqSpT2BF.js.map} +1 -1
- package/dist/admin/{ListPage-CkTkRZ-v.js → ListPage-BVlR57Rv.js} +4 -4
- package/dist/admin/{ListPage-CkTkRZ-v.js.map → ListPage-BVlR57Rv.js.map} +1 -1
- package/dist/admin/{ListPage-4M1uu6wf.mjs → ListPage-BxdlFLUJ.mjs} +4 -4
- package/dist/admin/{ListPage-4M1uu6wf.mjs.map → ListPage-BxdlFLUJ.mjs.map} +1 -1
- package/dist/admin/{ListPage-ZNh7krfj.js → ListPage-CDytavBP.js} +8 -8
- package/dist/admin/{ListPage-ZNh7krfj.js.map → ListPage-CDytavBP.js.map} +1 -1
- package/dist/admin/{ListPage-BIUdwz07.mjs → ListPage-CaONZ3ZV.mjs} +4 -4
- package/dist/admin/{ListPage-BIUdwz07.mjs.map → ListPage-CaONZ3ZV.mjs.map} +1 -1
- package/dist/admin/{ListPage-BZ40sST-.mjs → ListPage-Cd2_Tzmd.mjs} +3 -3
- package/dist/admin/{ListPage-BZ40sST-.mjs.map → ListPage-Cd2_Tzmd.mjs.map} +1 -1
- package/dist/admin/{ListPage-BSTrnVTi.js → ListPage-Cq3FpjYT.js} +4 -4
- package/dist/admin/{ListPage-BSTrnVTi.js.map → ListPage-Cq3FpjYT.js.map} +1 -1
- package/dist/admin/{ListPage-ChU9V3B9.mjs → ListPage-DFMpRUMg.mjs} +11 -8
- package/dist/admin/ListPage-DFMpRUMg.mjs.map +1 -0
- package/dist/admin/{ListPage-Di3HlXje.mjs → ListPage-DO8N50PC.mjs} +8 -8
- package/dist/admin/{ListPage-Di3HlXje.mjs.map → ListPage-DO8N50PC.mjs.map} +1 -1
- package/dist/admin/{ListPage-izEi5h_a.js → ListPage-DW64cMCC.js} +3 -3
- package/dist/admin/{ListPage-izEi5h_a.js.map → ListPage-DW64cMCC.js.map} +1 -1
- package/dist/admin/{ListPage-78TTyjRW.js → ListPage-JwoE5tdU.js} +11 -8
- package/dist/admin/ListPage-JwoE5tdU.js.map +1 -0
- package/dist/admin/{ListView-C8TDoKgA.mjs → ListView-BOk67lWz.mjs} +5 -5
- package/dist/admin/{ListView-C8TDoKgA.mjs.map → ListView-BOk67lWz.mjs.map} +1 -1
- package/dist/admin/{ListView-oxxjGoRq.mjs → ListView-BZG6Bd61.mjs} +5 -5
- package/dist/admin/{ListView-oxxjGoRq.mjs.map → ListView-BZG6Bd61.mjs.map} +1 -1
- package/dist/admin/{ListView-_kkmfYba.js → ListView-Cfi0gSDJ.js} +5 -5
- package/dist/admin/{ListView-_kkmfYba.js.map → ListView-Cfi0gSDJ.js.map} +1 -1
- package/dist/admin/{ListView-DGGmdLTN.js → ListView-F0R1le7c.js} +5 -5
- package/dist/admin/{ListView-DGGmdLTN.js.map → ListView-F0R1le7c.js.map} +1 -1
- package/dist/admin/{Login-D52-chj8.mjs → Login-BI8AYLAL.mjs} +3 -3
- package/dist/admin/{Login-D52-chj8.mjs.map → Login-BI8AYLAL.mjs.map} +1 -1
- package/dist/admin/{Login-BxcGmG9I.js → Login-DUETxKFs.js} +3 -3
- package/dist/admin/{Login-BxcGmG9I.js.map → Login-DUETxKFs.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-BHAvK52d.mjs → MagicLinkEE-CFs77BqE.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-BHAvK52d.mjs.map → MagicLinkEE-CFs77BqE.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-rP1-20h_.js → MagicLinkEE-CeU7fCGW.js} +3 -3
- package/dist/admin/{MagicLinkEE-rP1-20h_.js.map → MagicLinkEE-CeU7fCGW.js.map} +1 -1
- package/dist/admin/{MarketplacePage-B5xSZ82i.js → MarketplacePage-CnmY7V8p.js} +3 -3
- package/dist/admin/{MarketplacePage-B5xSZ82i.js.map → MarketplacePage-CnmY7V8p.js.map} +1 -1
- package/dist/admin/{MarketplacePage-DnRo5FVA.mjs → MarketplacePage-DCpLvpPa.mjs} +3 -3
- package/dist/admin/{MarketplacePage-DnRo5FVA.mjs.map → MarketplacePage-DCpLvpPa.mjs.map} +1 -1
- package/dist/admin/{Permissions-DII2emCe.js → Permissions-Cmimrby0.js} +2 -2
- package/dist/admin/{Permissions-DII2emCe.js.map → Permissions-Cmimrby0.js.map} +1 -1
- package/dist/admin/{Permissions-CuCHl6U_.mjs → Permissions-CqkJcZdu.mjs} +2 -2
- package/dist/admin/{Permissions-CuCHl6U_.mjs.map → Permissions-CqkJcZdu.mjs.map} +1 -1
- package/dist/admin/{PrivateRoute-DapCxuPg.mjs → PrivateRoute-CzKixo0E.mjs} +2 -2
- package/dist/admin/{PrivateRoute-DapCxuPg.mjs.map → PrivateRoute-CzKixo0E.mjs.map} +1 -1
- package/dist/admin/{PrivateRoute-D7Y029Yb.js → PrivateRoute-qahg_uiu.js} +2 -2
- package/dist/admin/{PrivateRoute-D7Y029Yb.js.map → PrivateRoute-qahg_uiu.js.map} +1 -1
- package/dist/admin/{ProfilePage-ufhuFD88.mjs → ProfilePage-D7nCJ8Sq.mjs} +5 -5
- package/dist/admin/{ProfilePage-ufhuFD88.mjs.map → ProfilePage-D7nCJ8Sq.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-Dkr09vJx.js → ProfilePage-DxtUqQT4.js} +5 -5
- package/dist/admin/{ProfilePage-Dkr09vJx.js.map → ProfilePage-DxtUqQT4.js.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-BZvdCbs2.mjs → PurchaseAuditLogs-CjPI_sTk.mjs} +2 -2
- package/dist/admin/{PurchaseAuditLogs-BZvdCbs2.mjs.map → PurchaseAuditLogs-CjPI_sTk.mjs.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-L2z8_K8T.js → PurchaseAuditLogs-Dxt7tGVT.js} +2 -2
- package/dist/admin/{PurchaseAuditLogs-L2z8_K8T.js.map → PurchaseAuditLogs-Dxt7tGVT.js.map} +1 -1
- package/dist/admin/{PurchaseContentHistory-DaQnUXhI.js → PurchaseContentHistory-72XrP1Nx.js} +2 -2
- package/dist/admin/{PurchaseContentHistory-DaQnUXhI.js.map → PurchaseContentHistory-72XrP1Nx.js.map} +1 -1
- package/dist/admin/{PurchaseContentHistory-BZigpAbD.mjs → PurchaseContentHistory-BRDGlI9D.mjs} +2 -2
- package/dist/admin/{PurchaseContentHistory-BZigpAbD.mjs.map → PurchaseContentHistory-BRDGlI9D.mjs.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-DOIzr_pq.mjs → PurchaseSingleSignOn-B4tdCkZt.mjs} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-DOIzr_pq.mjs.map → PurchaseSingleSignOn-B4tdCkZt.mjs.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-BJ0_Yr9o.js → PurchaseSingleSignOn-CSXRFbEE.js} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-BJ0_Yr9o.js.map → PurchaseSingleSignOn-CSXRFbEE.js.map} +1 -1
- package/dist/admin/{SelectRoles-DNO41U4M.js → SelectRoles-BiMOdYqa.js} +4 -4
- package/dist/admin/{SelectRoles-DNO41U4M.js.map → SelectRoles-BiMOdYqa.js.map} +1 -1
- package/dist/admin/{SelectRoles-B9s9k4YX.mjs → SelectRoles-CYiNmROx.mjs} +4 -4
- package/dist/admin/{SelectRoles-B9s9k4YX.mjs.map → SelectRoles-CYiNmROx.mjs.map} +1 -1
- package/dist/admin/{SingleSignOnPage-pGFzuYF4.js → SingleSignOnPage-DbYL7y2F.js} +5 -5
- package/dist/admin/{SingleSignOnPage-pGFzuYF4.js.map → SingleSignOnPage-DbYL7y2F.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-C5wlFrDd.mjs → SingleSignOnPage-feJugnXU.mjs} +5 -5
- package/dist/admin/{SingleSignOnPage-C5wlFrDd.mjs.map → SingleSignOnPage-feJugnXU.mjs.map} +1 -1
- package/dist/admin/{Table-IeOJZ1ui.mjs → Table-BC-eAWXR.mjs} +3 -3
- package/dist/admin/{Table-IeOJZ1ui.mjs.map → Table-BC-eAWXR.mjs.map} +1 -1
- package/dist/admin/{Table-d9xm6QPh.js → Table-By3QmrLE.js} +3 -3
- package/dist/admin/{Table-d9xm6QPh.js.map → Table-By3QmrLE.js.map} +1 -1
- package/dist/admin/{Theme-Cw2LYZGD.mjs → Theme-5Y8Pi0Wm.mjs} +2 -2
- package/dist/admin/{Theme-Cw2LYZGD.mjs.map → Theme-5Y8Pi0Wm.mjs.map} +1 -1
- package/dist/admin/{Theme-CV_l77KL.js → Theme-DWGZX5tv.js} +2 -2
- package/dist/admin/{Theme-CV_l77KL.js.map → Theme-DWGZX5tv.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-DrRs9zSH.mjs → TokenTypeSelect-BZ9m_SK0.mjs} +4 -4
- package/dist/admin/{TokenTypeSelect-DrRs9zSH.mjs.map → TokenTypeSelect-BZ9m_SK0.mjs.map} +1 -1
- package/dist/admin/{TokenTypeSelect-Cw-VuQ1P.js → TokenTypeSelect-DMM7sXvu.js} +4 -4
- package/dist/admin/{TokenTypeSelect-Cw-VuQ1P.js.map → TokenTypeSelect-DMM7sXvu.js.map} +1 -1
- package/dist/admin/{UseCasePage-DeQWTKlZ.js → UseCasePage-Cp6Y3ATZ.js} +4 -4
- package/dist/admin/{UseCasePage-DeQWTKlZ.js.map → UseCasePage-Cp6Y3ATZ.js.map} +1 -1
- package/dist/admin/{UseCasePage-CtZkFcjB.mjs → UseCasePage-DgjCWiMb.mjs} +4 -4
- package/dist/admin/{UseCasePage-CtZkFcjB.mjs.map → UseCasePage-DgjCWiMb.mjs.map} +1 -1
- package/dist/admin/{admin-CuE4OEl1.mjs → admin-DOzK8yjX.mjs} +3 -2
- package/dist/admin/admin-DOzK8yjX.mjs.map +1 -0
- package/dist/admin/{admin-CoWMk1La.js → admin-DRnq5SAg.js} +4 -2
- package/dist/admin/admin-DRnq5SAg.js.map +1 -0
- package/dist/admin/{apiTokens-BbGEd8hG.mjs → apiTokens-ByCd8ZnO.mjs} +2 -2
- package/dist/admin/{apiTokens-BbGEd8hG.mjs.map → apiTokens-ByCd8ZnO.mjs.map} +1 -1
- package/dist/admin/{apiTokens-rxLmW4xI.js → apiTokens-rbJHW5Y2.js} +2 -2
- package/dist/admin/{apiTokens-rxLmW4xI.js.map → apiTokens-rbJHW5Y2.js.map} +1 -1
- package/dist/admin/{constants-C8Wa9CxZ.js → constants-Diu3_Krs.js} +3 -3
- package/dist/admin/{constants-C8Wa9CxZ.js.map → constants-Diu3_Krs.js.map} +1 -1
- package/dist/admin/{constants-4R_fd3x_.mjs → constants-wpt-ey4P.mjs} +3 -3
- package/dist/admin/{constants-4R_fd3x_.mjs.map → constants-wpt-ey4P.mjs.map} +1 -1
- package/dist/admin/ee.js +1 -1
- package/dist/admin/ee.mjs +1 -1
- package/dist/admin/{en-CY1R-ci3.js → en-CJdNdwAe.js} +4 -3
- package/dist/admin/{en-CY1R-ci3.js.map → en-CJdNdwAe.js.map} +1 -1
- package/dist/admin/{en-BS7ztn-4.mjs → en-DOZzjg_v.mjs} +4 -4
- package/dist/admin/{en-BS7ztn-4.mjs.map → en-DOZzjg_v.mjs.map} +1 -1
- package/dist/admin/{en-GB-Bi4x4fHH.js → en-GB-BjOvFjLX.js} +2 -2
- package/dist/admin/en-GB-BjOvFjLX.js.map +1 -0
- package/dist/admin/en-GB-Ceyy7cF8.mjs +6 -0
- package/dist/admin/en-GB-Ceyy7cF8.mjs.map +1 -0
- package/dist/admin/{es-C-MB13Am.js → es-CeFZcM6R.js} +9 -2
- package/dist/admin/{es-C-MB13Am.js.map → es-CeFZcM6R.js.map} +1 -1
- package/dist/admin/{es-t8XFZqIM.mjs → es-XEfESBGO.mjs} +9 -2
- package/dist/admin/{es-t8XFZqIM.mjs.map → es-XEfESBGO.mjs.map} +1 -1
- package/dist/admin/{fr-ClHlHI4r.js → fr-BMaOPAWr.js} +32 -2
- package/dist/admin/{fr-ClHlHI4r.js.map → fr-BMaOPAWr.js.map} +1 -1
- package/dist/admin/{fr-CKlZ-5Zr.mjs → fr-CndUnB7j.mjs} +32 -3
- package/dist/admin/{fr-CKlZ-5Zr.mjs.map → fr-CndUnB7j.mjs.map} +1 -1
- package/dist/admin/{index-RRj8QByf.js → index-OBwI3kaz.js} +51 -38
- package/dist/admin/index-OBwI3kaz.js.map +1 -0
- package/dist/admin/{index-UBwCyQ_3.mjs → index-UvlzzkEs.mjs} +52 -39
- package/dist/admin/index-UvlzzkEs.mjs.map +1 -0
- package/dist/admin/index.js +3 -3
- package/dist/admin/index.mjs +3 -3
- package/dist/admin/{selectors-8LCQywHx.mjs → selectors-BUDjU_0m.mjs} +2 -2
- package/dist/admin/{selectors-8LCQywHx.mjs.map → selectors-BUDjU_0m.mjs.map} +1 -1
- package/dist/admin/{selectors-CM2KPWni.js → selectors-BhMLvxvP.js} +2 -2
- package/dist/admin/{selectors-CM2KPWni.js.map → selectors-BhMLvxvP.js.map} +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/RoleRow.d.ts +2 -1
- package/dist/admin/test.js +2 -2
- package/dist/admin/test.mjs +2 -2
- package/dist/admin/{transferTokens-CeXBOv8T.js → transferTokens-AcbwoJPr.js} +2 -2
- package/dist/admin/{transferTokens-CeXBOv8T.js.map → transferTokens-AcbwoJPr.js.map} +1 -1
- package/dist/admin/{transferTokens-DRhm3E2K.mjs → transferTokens-CQP13miB.mjs} +2 -2
- package/dist/admin/{transferTokens-DRhm3E2K.mjs.map → transferTokens-CQP13miB.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-kFi4kBOs.mjs → useAdminRoles-CkR0jcwl.mjs} +2 -2
- package/dist/admin/{useAdminRoles-kFi4kBOs.mjs.map → useAdminRoles-CkR0jcwl.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-DwDmGIlP.js → useAdminRoles-soH1aqS1.js} +2 -2
- package/dist/admin/{useAdminRoles-DwDmGIlP.js.map → useAdminRoles-soH1aqS1.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-C8shIk-h.mjs → useLicenseLimitNotification-DQKWFvvl.mjs} +3 -3
- package/dist/admin/{useLicenseLimitNotification-C8shIk-h.mjs.map → useLicenseLimitNotification-DQKWFvvl.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-B6SNDncg.js → useLicenseLimitNotification-bcc8RZRX.js} +3 -3
- package/dist/admin/{useLicenseLimitNotification-B6SNDncg.js.map → useLicenseLimitNotification-bcc8RZRX.js.map} +1 -1
- package/dist/admin/{useLicenseLimits-JFp6koHQ.js → useLicenseLimits-73hrs_pV.js} +2 -2
- package/dist/admin/{useLicenseLimits-JFp6koHQ.js.map → useLicenseLimits-73hrs_pV.js.map} +1 -1
- package/dist/admin/{useLicenseLimits-BsqWmbk9.mjs → useLicenseLimits-CcOoSJ8p.mjs} +2 -2
- package/dist/admin/{useLicenseLimits-BsqWmbk9.mjs.map → useLicenseLimits-CcOoSJ8p.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-ChRqPd68.mjs → useWebhooks-PMmtSF2F.mjs} +2 -2
- package/dist/admin/{useWebhooks-ChRqPd68.mjs.map → useWebhooks-PMmtSF2F.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-CeQ6X5FT.js → useWebhooks-oYy_qRlY.js} +2 -2
- package/dist/admin/{useWebhooks-CeQ6X5FT.js.map → useWebhooks-oYy_qRlY.js.map} +1 -1
- package/dist/admin/{validation-DODfSh2_.mjs → validation--G09jBta.mjs} +2 -2
- package/dist/admin/{validation-DODfSh2_.mjs.map → validation--G09jBta.mjs.map} +1 -1
- package/dist/admin/{validation-phe0S4q6.js → validation-k0MUuBCQ.js} +2 -2
- package/dist/admin/{validation-phe0S4q6.js.map → validation-k0MUuBCQ.js.map} +1 -1
- package/dist/package.json.d.ts +8 -9
- package/package.json +8 -9
- package/dist/admin/ListPage-78TTyjRW.js.map +0 -1
- package/dist/admin/ListPage-ChU9V3B9.mjs.map +0 -1
- package/dist/admin/admin-CoWMk1La.js.map +0 -1
- package/dist/admin/admin-CuE4OEl1.mjs.map +0 -1
- package/dist/admin/en-GB-Bi4x4fHH.js.map +0 -1
- package/dist/admin/en-GB-CLX4m6_Z.mjs +0 -6
- package/dist/admin/en-GB-CLX4m6_Z.mjs.map +0 -1
- package/dist/admin/index-RRj8QByf.js.map +0 -1
- package/dist/admin/index-UBwCyQ_3.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-ZNh7krfj.js","sources":["../../admin/src/pages/Settings/pages/Users/components/CreateActionCE.tsx","../../admin/src/pages/Settings/pages/Users/components/NewUserForm.tsx","../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, ButtonProps } from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface CreateActionCEProps extends Pick<ButtonProps, 'onClick'> {}\n\nconst CreateActionCE = React.forwardRef<HTMLButtonElement, CreateActionCEProps>((props, ref) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button ref={ref} startIcon={<Mail />} size=\"S\" {...props}>\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n );\n});\n\nexport { CreateActionCE };\nexport type { CreateActionCEProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n Modal,\n Typography,\n Breadcrumbs,\n Crumb,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, type FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { useCreateUserMutation } from '../../../../../services/users';\nimport { FormLayoutInputProps } from '../../../../../types/forms';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nimport { MagicLinkCE } from './MagicLinkCE';\nimport { SelectRoles } from './SelectRoles';\n\nimport type { Data } from '@strapi/types';\n\ninterface ModalFormProps {\n onToggle: () => void;\n}\n\ntype FormLayout = FormLayoutInputProps[][];\n\nconst ModalForm = ({ onToggle }: ModalFormProps) => {\n const [currentStep, setStep] = React.useState<keyof typeof STEPPER>('create');\n const [registrationToken, setRegistrationToken] = React.useState('');\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const roleLayout = useEnterprise<FormLayout, FormLayout, FormLayout>(\n ROLE_LAYOUT,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).ROLE_LAYOUT,\n {\n combine(ceRoles, eeRoles) {\n return [...ceRoles, ...eeRoles];\n },\n\n defaultValue: [],\n }\n );\n\n const initialValues = useEnterprise<InitialData>(\n FORM_INITIAL_VALUES,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).FORM_INITIAL_VALUES,\n {\n combine(ceValues, eeValues) {\n return {\n ...ceValues,\n ...eeValues,\n };\n },\n\n defaultValue: FORM_INITIAL_VALUES,\n }\n );\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n\n const [createUser] = useCreateUserMutation();\n\n const headerTitle = formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n });\n\n const handleSubmit = async (body: InitialData, { setErrors }: FormHelpers<InitialData>) => {\n const res = await createUser({\n ...body,\n roles: body.roles ?? [],\n });\n\n if ('data' in res) {\n // NOTE: when enabling SSO, the user doesn't have to register and the token is undefined\n if (res.data.registrationToken) {\n setRegistrationToken(res.data.registrationToken);\n }\n\n goNext();\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n }\n }\n };\n\n const goNext = () => {\n if (next) {\n setStep(next);\n } else {\n onToggle();\n }\n };\n\n const { buttonSubmitLabel, isDisabled, next } = STEPPER[currentStep];\n\n // block rendering until the EE component is fully loaded\n if (!MagicLink) {\n return null;\n }\n\n return (\n <Modal.Root defaultOpen onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={headerTitle}>\n <Crumb isCurrent>{headerTitle}</Crumb>\n </Breadcrumbs>\n </Modal.Header>\n <Form\n method={currentStep === 'create' ? 'POST' : 'PUT'}\n initialValues={initialValues ?? {}}\n onSubmit={handleSubmit}\n validationSchema={FORM_SCHEMA}\n >\n {({ isSubmitting }) => {\n return (\n <>\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {currentStep !== 'create' && (\n <MagicLink registrationToken={registrationToken} />\n )}\n <Box>\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'User details',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={5}>\n {FORM_LAYOUT.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={formatMessage(field.placeholder)}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Flex>\n </Box>\n </Box>\n <Box>\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Box paddingTop={4}>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={isDisabled} />\n </Grid.Item>\n {roleLayout.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={\n field.placeholder\n ? formatMessage(field.placeholder)\n : undefined\n }\n hint={field.hint ? formatMessage(field.hint) : undefined}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Box>\n </Box>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n {currentStep === 'create' ? (\n <Button type=\"submit\" loading={isSubmitting}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n ) : (\n <Button type=\"button\" loading={isSubmitting} onClick={onToggle}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n )}\n </Modal.Footer>\n </>\n );\n }}\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\ninterface InitialData {\n firstname?: string;\n lastname?: string;\n email?: string;\n roles?: Data.ID[];\n useSSORegistration?: boolean;\n}\n\nconst FORM_INITIAL_VALUES = {\n firstname: '',\n lastname: '',\n email: '',\n roles: [],\n};\n\nconst ROLE_LAYOUT: FormLayout = [];\n\nconst FORM_LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n ],\n] satisfies FormLayout;\n\nconst FORM_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable(),\n lastname: yup.string(),\n email: yup\n .string()\n .email(translatedErrors.email)\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst STEPPER = {\n create: {\n buttonSubmitLabel: {\n id: 'app.containers.Users.ModalForm.footer.button-success',\n defaultMessage: 'Invite user',\n },\n isDisabled: false,\n next: 'magic-link',\n },\n 'magic-link': {\n buttonSubmitLabel: { id: 'global.finish', defaultMessage: 'Finish' },\n isDisabled: true,\n next: null,\n },\n} as const;\n\nexport { ModalForm };\nexport type { InitialData };\n","import * as React from 'react';\n\nimport { Flex, Typography, Status, IconButton, Dialog } from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport * as qs from 'qs';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Filters } from '../../../../components/Filters';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { Pagination } from '../../../../components/Pagination';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { Table } from '../../../../components/Table';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n const [showDeleteConfirmation, setShowDeleteConfirmation] = React.useState(false);\n const [idsToDelete, setIdsToDelete] = React.useState<Array<SanitizedAdminUser['id']>>([]);\n const { data, isError, isLoading } = useAdminUsers(qs.parse(search, { ignoreQueryPrefix: true }));\n\n const { pagination, users = [] } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n const handleDeleteAll = async (ids: Array<SanitizedAdminUser['id']>) => {\n try {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'global.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleRowClick = (id: SanitizedAdminUser['id']) => () => {\n if (canRead) {\n navigate(id.toString());\n }\n };\n\n const handleDeleteClick = (id: SanitizedAdminUser['id']) => async () => {\n setIdsToDelete([id]);\n setShowDeleteConfirmation(true);\n };\n\n const confirmDelete = async () => {\n await handleDeleteAll(idsToDelete);\n setShowDeleteConfirmation(false);\n };\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n if (isError) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n <Layouts.Action\n startActions={\n <>\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n <Filters.Root options={FILTERS}>\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n </>\n }\n />\n <Layouts.Content>\n <Table.Root rows={users} headers={headers}>\n <Table.ActionBar />\n <Table.Content>\n <Table.Head>\n {canDelete ? <Table.HeaderCheckboxCell /> : null}\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {users.map((user) => (\n <Table.Row\n key={user.id}\n onClick={handleRowClick(user.id)}\n cursor={canRead ? 'pointer' : 'default'}\n >\n {canDelete ? <Table.CheckboxCell id={user.id} /> : null}\n {headers.map(({ cellFormatter, name, ...rest }) => {\n return (\n <Table.Cell key={name}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(user, { name, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{user[name] || '-'}</Typography>\n )}\n </Table.Cell>\n );\n })}\n {canRead || canDelete ? (\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n {canRead ? (\n <IconButton\n tag={NavLink}\n to={user.id.toString()}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n ) : null}\n {canDelete ? (\n <IconButton\n onClick={handleDeleteClick(user.id)}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n ) : null}\n </Flex>\n </Table.Cell>\n ) : null}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root {...pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n <Dialog.Root open={showDeleteConfirmation} onOpenChange={setShowDeleteConfirmation}>\n <ConfirmDialog onConfirm={confirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nconst TABLE_HEADERS: Array<\n Omit<Table.Header<SanitizedAdminUser, any>, 'label'> & { label: MessageDescriptor }\n> = [\n {\n name: 'firstname',\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n {\n name: 'lastname',\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n {\n name: 'email',\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n {\n name: 'roles',\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n cellFormatter({ roles }) {\n return (\n <Typography textColor=\"neutral800\">{roles.map((role) => role.name).join(',\\n')}</Typography>\n );\n },\n },\n {\n name: 'username',\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n {\n name: 'isActive',\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n cellFormatter({ isActive }) {\n return (\n <Flex>\n <Status\n size=\"S\"\n borderWidth={0}\n background=\"transparent\"\n color=\"neutral800\"\n variant={isActive ? 'success' : 'danger'}\n >\n <Typography>{isActive ? 'Active' : 'Inactive'}</Typography>\n </Status>\n </Flex>\n );\n },\n },\n];\n\nconst FILTERS = [\n {\n name: 'firstname',\n label: 'Firstname',\n type: 'string',\n },\n {\n name: 'lastname',\n label: 'Lastname',\n type: 'string',\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n },\n {\n name: 'username',\n label: 'Username',\n type: 'string',\n },\n {\n name: 'isActive',\n label: 'Active user',\n type: 'boolean',\n },\n] satisfies Filters.Filter[];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\n"],"names":["React","useIntl","jsx","Button","Mail","useNotification","useAPIErrorHandler","useEnterprise","MagicLinkCE","useCreateUserMutation","isBaseQueryError","Modal","jsxs","Breadcrumbs","Crumb","Form","Fragment","Flex","Box","Typography","Grid","InputRenderer","SelectRoles","yup","translatedErrors","useTypedSelector","useRBAC","useNavigate","useLocation","useAdminUsers","qs","users","useDeleteManyUsersMutation","Page","Layouts","SearchInput","Filters","Table","IconButton","NavLink","getDisplayName","Pencil","Trash","Pagination","Dialog","ConfirmDialog","Status"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListPage-CDytavBP.js","sources":["../../admin/src/pages/Settings/pages/Users/components/CreateActionCE.tsx","../../admin/src/pages/Settings/pages/Users/components/NewUserForm.tsx","../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, ButtonProps } from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface CreateActionCEProps extends Pick<ButtonProps, 'onClick'> {}\n\nconst CreateActionCE = React.forwardRef<HTMLButtonElement, CreateActionCEProps>((props, ref) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button ref={ref} startIcon={<Mail />} size=\"S\" {...props}>\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n );\n});\n\nexport { CreateActionCE };\nexport type { CreateActionCEProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n Modal,\n Typography,\n Breadcrumbs,\n Crumb,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, type FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { useCreateUserMutation } from '../../../../../services/users';\nimport { FormLayoutInputProps } from '../../../../../types/forms';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nimport { MagicLinkCE } from './MagicLinkCE';\nimport { SelectRoles } from './SelectRoles';\n\nimport type { Data } from '@strapi/types';\n\ninterface ModalFormProps {\n onToggle: () => void;\n}\n\ntype FormLayout = FormLayoutInputProps[][];\n\nconst ModalForm = ({ onToggle }: ModalFormProps) => {\n const [currentStep, setStep] = React.useState<keyof typeof STEPPER>('create');\n const [registrationToken, setRegistrationToken] = React.useState('');\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const roleLayout = useEnterprise<FormLayout, FormLayout, FormLayout>(\n ROLE_LAYOUT,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).ROLE_LAYOUT,\n {\n combine(ceRoles, eeRoles) {\n return [...ceRoles, ...eeRoles];\n },\n\n defaultValue: [],\n }\n );\n\n const initialValues = useEnterprise<InitialData>(\n FORM_INITIAL_VALUES,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).FORM_INITIAL_VALUES,\n {\n combine(ceValues, eeValues) {\n return {\n ...ceValues,\n ...eeValues,\n };\n },\n\n defaultValue: FORM_INITIAL_VALUES,\n }\n );\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n\n const [createUser] = useCreateUserMutation();\n\n const headerTitle = formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n });\n\n const handleSubmit = async (body: InitialData, { setErrors }: FormHelpers<InitialData>) => {\n const res = await createUser({\n ...body,\n roles: body.roles ?? [],\n });\n\n if ('data' in res) {\n // NOTE: when enabling SSO, the user doesn't have to register and the token is undefined\n if (res.data.registrationToken) {\n setRegistrationToken(res.data.registrationToken);\n }\n\n goNext();\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n }\n }\n };\n\n const goNext = () => {\n if (next) {\n setStep(next);\n } else {\n onToggle();\n }\n };\n\n const { buttonSubmitLabel, isDisabled, next } = STEPPER[currentStep];\n\n // block rendering until the EE component is fully loaded\n if (!MagicLink) {\n return null;\n }\n\n return (\n <Modal.Root defaultOpen onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={headerTitle}>\n <Crumb isCurrent>{headerTitle}</Crumb>\n </Breadcrumbs>\n </Modal.Header>\n <Form\n method={currentStep === 'create' ? 'POST' : 'PUT'}\n initialValues={initialValues ?? {}}\n onSubmit={handleSubmit}\n validationSchema={FORM_SCHEMA}\n >\n {({ isSubmitting }) => {\n return (\n <>\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {currentStep !== 'create' && (\n <MagicLink registrationToken={registrationToken} />\n )}\n <Box>\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'User details',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={5}>\n {FORM_LAYOUT.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={formatMessage(field.placeholder)}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Flex>\n </Box>\n </Box>\n <Box>\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Box paddingTop={4}>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={isDisabled} />\n </Grid.Item>\n {roleLayout.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={\n field.placeholder\n ? formatMessage(field.placeholder)\n : undefined\n }\n hint={field.hint ? formatMessage(field.hint) : undefined}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Box>\n </Box>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n {currentStep === 'create' ? (\n <Button type=\"submit\" loading={isSubmitting}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n ) : (\n <Button type=\"button\" loading={isSubmitting} onClick={onToggle}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n )}\n </Modal.Footer>\n </>\n );\n }}\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\ninterface InitialData {\n firstname?: string;\n lastname?: string;\n email?: string;\n roles?: Data.ID[];\n useSSORegistration?: boolean;\n}\n\nconst FORM_INITIAL_VALUES = {\n firstname: '',\n lastname: '',\n email: '',\n roles: [],\n};\n\nconst ROLE_LAYOUT: FormLayout = [];\n\nconst FORM_LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n ],\n] satisfies FormLayout;\n\nconst FORM_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable(),\n lastname: yup.string(),\n email: yup\n .string()\n .email(translatedErrors.email)\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst STEPPER = {\n create: {\n buttonSubmitLabel: {\n id: 'app.containers.Users.ModalForm.footer.button-success',\n defaultMessage: 'Invite user',\n },\n isDisabled: false,\n next: 'magic-link',\n },\n 'magic-link': {\n buttonSubmitLabel: { id: 'global.finish', defaultMessage: 'Finish' },\n isDisabled: true,\n next: null,\n },\n} as const;\n\nexport { ModalForm };\nexport type { InitialData };\n","import * as React from 'react';\n\nimport { Flex, Typography, Status, IconButton, Dialog } from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport * as qs from 'qs';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Filters } from '../../../../components/Filters';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { Pagination } from '../../../../components/Pagination';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { Table } from '../../../../components/Table';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n const [showDeleteConfirmation, setShowDeleteConfirmation] = React.useState(false);\n const [idsToDelete, setIdsToDelete] = React.useState<Array<SanitizedAdminUser['id']>>([]);\n const { data, isError, isLoading } = useAdminUsers(qs.parse(search, { ignoreQueryPrefix: true }));\n\n const { pagination, users = [] } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n const handleDeleteAll = async (ids: Array<SanitizedAdminUser['id']>) => {\n try {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'global.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleRowClick = (id: SanitizedAdminUser['id']) => () => {\n if (canRead) {\n navigate(id.toString());\n }\n };\n\n const handleDeleteClick = (id: SanitizedAdminUser['id']) => async () => {\n setIdsToDelete([id]);\n setShowDeleteConfirmation(true);\n };\n\n const confirmDelete = async () => {\n await handleDeleteAll(idsToDelete);\n setShowDeleteConfirmation(false);\n };\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n if (isError) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n <Layouts.Action\n startActions={\n <>\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n <Filters.Root options={FILTERS}>\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n </>\n }\n />\n <Layouts.Content>\n <Table.Root rows={users} headers={headers}>\n <Table.ActionBar />\n <Table.Content>\n <Table.Head>\n {canDelete ? <Table.HeaderCheckboxCell /> : null}\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {users.map((user) => (\n <Table.Row\n key={user.id}\n onClick={handleRowClick(user.id)}\n cursor={canRead ? 'pointer' : 'default'}\n >\n {canDelete ? <Table.CheckboxCell id={user.id} /> : null}\n {headers.map(({ cellFormatter, name, ...rest }) => {\n return (\n <Table.Cell key={name}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(user, { name, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{user[name] || '-'}</Typography>\n )}\n </Table.Cell>\n );\n })}\n {canRead || canDelete ? (\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n {canRead ? (\n <IconButton\n tag={NavLink}\n to={user.id.toString()}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n ) : null}\n {canDelete ? (\n <IconButton\n onClick={handleDeleteClick(user.id)}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n ) : null}\n </Flex>\n </Table.Cell>\n ) : null}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root {...pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n <Dialog.Root open={showDeleteConfirmation} onOpenChange={setShowDeleteConfirmation}>\n <ConfirmDialog onConfirm={confirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nconst TABLE_HEADERS: Array<\n Omit<Table.Header<SanitizedAdminUser, any>, 'label'> & { label: MessageDescriptor }\n> = [\n {\n name: 'firstname',\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n {\n name: 'lastname',\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n {\n name: 'email',\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n {\n name: 'roles',\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n cellFormatter({ roles }) {\n return (\n <Typography textColor=\"neutral800\">{roles.map((role) => role.name).join(',\\n')}</Typography>\n );\n },\n },\n {\n name: 'username',\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n {\n name: 'isActive',\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n cellFormatter({ isActive }) {\n return (\n <Flex>\n <Status\n size=\"S\"\n borderWidth={0}\n background=\"transparent\"\n color=\"neutral800\"\n variant={isActive ? 'success' : 'danger'}\n >\n <Typography>{isActive ? 'Active' : 'Inactive'}</Typography>\n </Status>\n </Flex>\n );\n },\n },\n];\n\nconst FILTERS = [\n {\n name: 'firstname',\n label: 'Firstname',\n type: 'string',\n },\n {\n name: 'lastname',\n label: 'Lastname',\n type: 'string',\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n },\n {\n name: 'username',\n label: 'Username',\n type: 'string',\n },\n {\n name: 'isActive',\n label: 'Active user',\n type: 'boolean',\n },\n] satisfies Filters.Filter[];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\n"],"names":["React","useIntl","jsx","Button","Mail","useNotification","useAPIErrorHandler","useEnterprise","MagicLinkCE","useCreateUserMutation","isBaseQueryError","Modal","jsxs","Breadcrumbs","Crumb","Form","Fragment","Flex","Box","Typography","Grid","InputRenderer","SelectRoles","yup","translatedErrors","useTypedSelector","useRBAC","useNavigate","useLocation","useAdminUsers","qs","users","useDeleteManyUsersMutation","Page","Layouts","SearchInput","Filters","Table","IconButton","NavLink","getDisplayName","Pencil","Trash","Pagination","Dialog","ConfirmDialog","Status"],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ import { Plus, Trash, Pencil } from '@strapi/icons';
|
|
|
5
5
|
import { EmptyDocuments } from '@strapi/icons/symbols';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { useNavigate, NavLink } from 'react-router-dom';
|
|
8
|
-
import { b as Layouts, C as ConfirmDialog } from './index-
|
|
9
|
-
import { b as useTypedSelector, P as Page, e as useAPIErrorHandler, a as useNotification, k as useRBAC } from './Theme-
|
|
10
|
-
import { u as useWebhooks } from './useWebhooks-
|
|
8
|
+
import { b as Layouts, C as ConfirmDialog } from './index-UvlzzkEs.mjs';
|
|
9
|
+
import { b as useTypedSelector, P as Page, e as useAPIErrorHandler, a as useNotification, k as useRBAC } from './Theme-5Y8Pi0Wm.mjs';
|
|
10
|
+
import { u as useWebhooks } from './useWebhooks-PMmtSF2F.mjs';
|
|
11
11
|
|
|
12
12
|
const ListPage = () => {
|
|
13
13
|
const [showModal, setShowModal] = React.useState(false);
|
|
@@ -352,4 +352,4 @@ const ProtectedListPage = () => {
|
|
|
352
352
|
};
|
|
353
353
|
|
|
354
354
|
export { ListPage, ProtectedListPage };
|
|
355
|
-
//# sourceMappingURL=ListPage-
|
|
355
|
+
//# sourceMappingURL=ListPage-CaONZ3ZV.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-BIUdwz07.mjs","sources":["../../admin/src/pages/Settings/pages/Webhooks/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotifyAT,\n Checkbox,\n Button,\n EmptyStateLayout,\n Flex,\n IconButton,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\n\nimport { UpdateWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../hooks/useRBAC';\n\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPage = () => {\n const [showModal, setShowModal] = React.useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = React.useState<string[]>([]);\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.webhooks);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions);\n const { notifyStatus } = useNotifyAT();\n\n const {\n isLoading: isWebhooksLoading,\n webhooks,\n error: webhooksError,\n updateWebhook,\n deleteManyWebhooks,\n } = useWebhooks();\n\n React.useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const enableWebhook = async (body: UpdateWebhook.Request['body'] & UpdateWebhook.Params) => {\n try {\n const res = await updateWebhook(body);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const deleteWebhook = async (id: string) => {\n try {\n const res = await deleteManyWebhooks({\n ids: [id],\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const confirmBulkDelete = async () => {\n try {\n const res = await deleteManyWebhooks({\n ids: webhooksToDelete,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete([]);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setShowModal(false);\n }\n };\n\n const selectAllCheckbox = (selected: boolean) =>\n selected\n ? setWebhooksToDelete(webhooks?.map((webhook) => webhook.id) ?? [])\n : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected: boolean, id: string) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isLoading}>\n <Layouts.Header\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton tag={NavLink} startIcon={<Plus />} variant=\"default\" to=\"create\" size=\"S\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <Layouts.Action\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <Layouts.Content>\n {numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter\n onClick={() => {\n if (canCreate) {\n navigate('create');\n }\n }}\n icon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n checked={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n ? 'indeterminate'\n : webhooksToDeleteLength === numberOfWebhooks\n }\n onCheckedChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks?.map((webhook) => (\n <Tr\n key={webhook.id}\n onClick={() => {\n if (canUpdate) {\n navigate(webhook.id);\n }\n }}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n checked={webhooksToDelete?.includes(webhook.id)}\n onCheckedChange={(selected) => selectOneCheckbox(!!selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n aria-label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n checked={webhook.isEnabled}\n onCheckedChange={(enabled) => {\n enableWebhook({\n ...webhook,\n isEnabled: enabled,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n )}\n {canDelete && (\n <DeleteActionButton\n onDelete={() => {\n deleteWebhook(webhook.id);\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n canCreate ? (\n <LinkButton variant=\"secondary\" startIcon={<Plus />} tag={NavLink} to=\"create\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n ) : null\n }\n />\n )}\n </Layouts.Content>\n </Page.Main>\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog onConfirm={confirmBulkDelete} />\n </Dialog.Root>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ntype DeleteActionButtonProps = {\n onDelete: () => void;\n};\n\nconst DeleteActionButton = ({ onDelete }: DeleteActionButtonProps) => {\n const [showModal, setShowModal] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <>\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog\n onConfirm={(e) => {\n e?.stopPropagation();\n onDelete();\n }}\n />\n </Dialog.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListPage-CaONZ3ZV.mjs","sources":["../../admin/src/pages/Settings/pages/Webhooks/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotifyAT,\n Checkbox,\n Button,\n EmptyStateLayout,\n Flex,\n IconButton,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\n\nimport { UpdateWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../hooks/useRBAC';\n\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPage = () => {\n const [showModal, setShowModal] = React.useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = React.useState<string[]>([]);\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.webhooks);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions);\n const { notifyStatus } = useNotifyAT();\n\n const {\n isLoading: isWebhooksLoading,\n webhooks,\n error: webhooksError,\n updateWebhook,\n deleteManyWebhooks,\n } = useWebhooks();\n\n React.useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const enableWebhook = async (body: UpdateWebhook.Request['body'] & UpdateWebhook.Params) => {\n try {\n const res = await updateWebhook(body);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const deleteWebhook = async (id: string) => {\n try {\n const res = await deleteManyWebhooks({\n ids: [id],\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const confirmBulkDelete = async () => {\n try {\n const res = await deleteManyWebhooks({\n ids: webhooksToDelete,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete([]);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setShowModal(false);\n }\n };\n\n const selectAllCheckbox = (selected: boolean) =>\n selected\n ? setWebhooksToDelete(webhooks?.map((webhook) => webhook.id) ?? [])\n : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected: boolean, id: string) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isLoading}>\n <Layouts.Header\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton tag={NavLink} startIcon={<Plus />} variant=\"default\" to=\"create\" size=\"S\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <Layouts.Action\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <Layouts.Content>\n {numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter\n onClick={() => {\n if (canCreate) {\n navigate('create');\n }\n }}\n icon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n checked={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n ? 'indeterminate'\n : webhooksToDeleteLength === numberOfWebhooks\n }\n onCheckedChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks?.map((webhook) => (\n <Tr\n key={webhook.id}\n onClick={() => {\n if (canUpdate) {\n navigate(webhook.id);\n }\n }}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n checked={webhooksToDelete?.includes(webhook.id)}\n onCheckedChange={(selected) => selectOneCheckbox(!!selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n aria-label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n checked={webhook.isEnabled}\n onCheckedChange={(enabled) => {\n enableWebhook({\n ...webhook,\n isEnabled: enabled,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n )}\n {canDelete && (\n <DeleteActionButton\n onDelete={() => {\n deleteWebhook(webhook.id);\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n canCreate ? (\n <LinkButton variant=\"secondary\" startIcon={<Plus />} tag={NavLink} to=\"create\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n ) : null\n }\n />\n )}\n </Layouts.Content>\n </Page.Main>\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog onConfirm={confirmBulkDelete} />\n </Dialog.Root>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ntype DeleteActionButtonProps = {\n onDelete: () => void;\n};\n\nconst DeleteActionButton = ({ onDelete }: DeleteActionButtonProps) => {\n const [showModal, setShowModal] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <>\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog\n onConfirm={(e) => {\n e?.stopPropagation();\n onDelete();\n }}\n />\n </Dialog.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { ListPageCE } from './ListPage-
|
|
3
|
-
import { u as useLicenseLimitNotification } from './useLicenseLimitNotification-
|
|
2
|
+
import { ListPageCE } from './ListPage-DO8N50PC.mjs';
|
|
3
|
+
import { u as useLicenseLimitNotification } from './useLicenseLimitNotification-DQKWFvvl.mjs';
|
|
4
4
|
|
|
5
5
|
const UserListPageEE = () => {
|
|
6
6
|
useLicenseLimitNotification();
|
|
@@ -8,4 +8,4 @@ const UserListPageEE = () => {
|
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
export { UserListPageEE };
|
|
11
|
-
//# sourceMappingURL=ListPage-
|
|
11
|
+
//# sourceMappingURL=ListPage-Cd2_Tzmd.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-
|
|
1
|
+
{"version":3,"file":"ListPage-Cd2_Tzmd.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage.tsx"],"sourcesContent":["import { ListPageCE } from '../../../../../../../admin/src/pages/Settings/pages/Users/ListPage';\nimport { useLicenseLimitNotification } from '../../../../hooks/useLicenseLimitNotification';\n\nexport const UserListPageEE = () => {\n useLicenseLimitNotification();\n\n return <ListPageCE />;\n};\n"],"names":[],"mappings":";;;;AAGO,MAAM,iBAAiB,MAAM;AAClC,EAA4B,2BAAA,EAAA;AAE5B,EAAA,2BAAQ,UAAW,EAAA,EAAA,CAAA;AACrB;;;;"}
|
|
@@ -9,9 +9,9 @@ const icons = require('@strapi/icons');
|
|
|
9
9
|
const symbols = require('@strapi/icons/symbols');
|
|
10
10
|
const reactIntl = require('react-intl');
|
|
11
11
|
const reactRouterDom = require('react-router-dom');
|
|
12
|
-
const index = require('./index-
|
|
13
|
-
const Theme = require('./Theme-
|
|
14
|
-
const useWebhooks = require('./useWebhooks-
|
|
12
|
+
const index = require('./index-OBwI3kaz.js');
|
|
13
|
+
const Theme = require('./Theme-DWGZX5tv.js');
|
|
14
|
+
const useWebhooks = require('./useWebhooks-oYy_qRlY.js');
|
|
15
15
|
|
|
16
16
|
function _interopNamespace(e) {
|
|
17
17
|
if (e && e.__esModule) return e;
|
|
@@ -377,4 +377,4 @@ const ProtectedListPage = () => {
|
|
|
377
377
|
|
|
378
378
|
exports.ListPage = ListPage;
|
|
379
379
|
exports.ProtectedListPage = ProtectedListPage;
|
|
380
|
-
//# sourceMappingURL=ListPage-
|
|
380
|
+
//# sourceMappingURL=ListPage-Cq3FpjYT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-BSTrnVTi.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotifyAT,\n Checkbox,\n Button,\n EmptyStateLayout,\n Flex,\n IconButton,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\n\nimport { UpdateWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../hooks/useRBAC';\n\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPage = () => {\n const [showModal, setShowModal] = React.useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = React.useState<string[]>([]);\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.webhooks);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions);\n const { notifyStatus } = useNotifyAT();\n\n const {\n isLoading: isWebhooksLoading,\n webhooks,\n error: webhooksError,\n updateWebhook,\n deleteManyWebhooks,\n } = useWebhooks();\n\n React.useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const enableWebhook = async (body: UpdateWebhook.Request['body'] & UpdateWebhook.Params) => {\n try {\n const res = await updateWebhook(body);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const deleteWebhook = async (id: string) => {\n try {\n const res = await deleteManyWebhooks({\n ids: [id],\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const confirmBulkDelete = async () => {\n try {\n const res = await deleteManyWebhooks({\n ids: webhooksToDelete,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete([]);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setShowModal(false);\n }\n };\n\n const selectAllCheckbox = (selected: boolean) =>\n selected\n ? setWebhooksToDelete(webhooks?.map((webhook) => webhook.id) ?? [])\n : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected: boolean, id: string) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isLoading}>\n <Layouts.Header\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton tag={NavLink} startIcon={<Plus />} variant=\"default\" to=\"create\" size=\"S\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <Layouts.Action\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <Layouts.Content>\n {numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter\n onClick={() => {\n if (canCreate) {\n navigate('create');\n }\n }}\n icon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n checked={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n ? 'indeterminate'\n : webhooksToDeleteLength === numberOfWebhooks\n }\n onCheckedChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks?.map((webhook) => (\n <Tr\n key={webhook.id}\n onClick={() => {\n if (canUpdate) {\n navigate(webhook.id);\n }\n }}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n checked={webhooksToDelete?.includes(webhook.id)}\n onCheckedChange={(selected) => selectOneCheckbox(!!selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n aria-label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n checked={webhook.isEnabled}\n onCheckedChange={(enabled) => {\n enableWebhook({\n ...webhook,\n isEnabled: enabled,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n )}\n {canDelete && (\n <DeleteActionButton\n onDelete={() => {\n deleteWebhook(webhook.id);\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n canCreate ? (\n <LinkButton variant=\"secondary\" startIcon={<Plus />} tag={NavLink} to=\"create\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n ) : null\n }\n />\n )}\n </Layouts.Content>\n </Page.Main>\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog onConfirm={confirmBulkDelete} />\n </Dialog.Root>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ntype DeleteActionButtonProps = {\n onDelete: () => void;\n};\n\nconst DeleteActionButton = ({ onDelete }: DeleteActionButtonProps) => {\n const [showModal, setShowModal] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <>\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog\n onConfirm={(e) => {\n e?.stopPropagation();\n onDelete();\n }}\n />\n </Dialog.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["React","useTypedSelector","useIntl","useAPIErrorHandler","useNotification","useNavigate","useRBAC","useNotifyAT","useWebhooks","jsx","Page","jsxs","Layouts","LinkButton","NavLink","Plus","Fragment","Typography","Button","Trash","Table","TFooter","Thead","Tr","Th","Checkbox","VisuallyHidden","Tbody","Td","Flex","Switch","IconButton","Pencil","EmptyStateLayout","EmptyDocuments","Dialog","ConfirmDialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListPage-Cq3FpjYT.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotifyAT,\n Checkbox,\n Button,\n EmptyStateLayout,\n Flex,\n IconButton,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\n\nimport { UpdateWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../hooks/useRBAC';\n\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPage = () => {\n const [showModal, setShowModal] = React.useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = React.useState<string[]>([]);\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.webhooks);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions);\n const { notifyStatus } = useNotifyAT();\n\n const {\n isLoading: isWebhooksLoading,\n webhooks,\n error: webhooksError,\n updateWebhook,\n deleteManyWebhooks,\n } = useWebhooks();\n\n React.useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const enableWebhook = async (body: UpdateWebhook.Request['body'] & UpdateWebhook.Params) => {\n try {\n const res = await updateWebhook(body);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const deleteWebhook = async (id: string) => {\n try {\n const res = await deleteManyWebhooks({\n ids: [id],\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const confirmBulkDelete = async () => {\n try {\n const res = await deleteManyWebhooks({\n ids: webhooksToDelete,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setWebhooksToDelete([]);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setShowModal(false);\n }\n };\n\n const selectAllCheckbox = (selected: boolean) =>\n selected\n ? setWebhooksToDelete(webhooks?.map((webhook) => webhook.id) ?? [])\n : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected: boolean, id: string) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isLoading}>\n <Layouts.Header\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton tag={NavLink} startIcon={<Plus />} variant=\"default\" to=\"create\" size=\"S\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <Layouts.Action\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <Layouts.Content>\n {numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter\n onClick={() => {\n if (canCreate) {\n navigate('create');\n }\n }}\n icon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n checked={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n ? 'indeterminate'\n : webhooksToDeleteLength === numberOfWebhooks\n }\n onCheckedChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks?.map((webhook) => (\n <Tr\n key={webhook.id}\n onClick={() => {\n if (canUpdate) {\n navigate(webhook.id);\n }\n }}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n checked={webhooksToDelete?.includes(webhook.id)}\n onCheckedChange={(selected) => selectOneCheckbox(!!selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n aria-label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n checked={webhook.isEnabled}\n onCheckedChange={(enabled) => {\n enableWebhook({\n ...webhook,\n isEnabled: enabled,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n )}\n {canDelete && (\n <DeleteActionButton\n onDelete={() => {\n deleteWebhook(webhook.id);\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n canCreate ? (\n <LinkButton variant=\"secondary\" startIcon={<Plus />} tag={NavLink} to=\"create\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n ) : null\n }\n />\n )}\n </Layouts.Content>\n </Page.Main>\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog onConfirm={confirmBulkDelete} />\n </Dialog.Root>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ntype DeleteActionButtonProps = {\n onDelete: () => void;\n};\n\nconst DeleteActionButton = ({ onDelete }: DeleteActionButtonProps) => {\n const [showModal, setShowModal] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <>\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n\n <Dialog.Root open={showModal} onOpenChange={setShowModal}>\n <ConfirmDialog\n onConfirm={(e) => {\n e?.stopPropagation();\n onDelete();\n }}\n />\n </Dialog.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ListPage, ProtectedListPage };\n"],"names":["React","useTypedSelector","useIntl","useAPIErrorHandler","useNotification","useNavigate","useRBAC","useNotifyAT","useWebhooks","jsx","Page","jsxs","Layouts","LinkButton","NavLink","Plus","Fragment","Typography","Button","Trash","Table","TFooter","Thead","Tr","Th","Checkbox","VisuallyHidden","Tbody","Td","Flex","Switch","IconButton","Pencil","EmptyStateLayout","EmptyDocuments","Dialog","ConfirmDialog"],"mappings":"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"}
|