@strapi/admin 4.24.3 → 4.24.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AdminSeatInfo-fdPAODrT.js → AdminSeatInfo-3kscEri6.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-fdPAODrT.js.map → AdminSeatInfo-3kscEri6.js.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-_8WVfI2k.mjs → AdminSeatInfo-U_XS6M6s.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-_8WVfI2k.mjs.map → AdminSeatInfo-U_XS6M6s.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-0W-A9CKn.mjs → AuthenticatedApp-0lbYYEL6.mjs} +20 -20
- package/dist/_chunks/{AuthenticatedApp-0W-A9CKn.mjs.map → AuthenticatedApp-0lbYYEL6.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-dvvFgV0a.js → AuthenticatedApp-lxbOleXq.js} +20 -20
- package/dist/_chunks/{AuthenticatedApp-dvvFgV0a.js.map → AuthenticatedApp-lxbOleXq.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-qW2hEfot.js → CreateActionEE-4Ia1GtCm.js} +2 -2
- package/dist/_chunks/{CreateActionEE-qW2hEfot.js.map → CreateActionEE-4Ia1GtCm.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-yhlazfz4.mjs → CreateActionEE-wQpjzlQY.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-yhlazfz4.mjs.map → CreateActionEE-wQpjzlQY.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-E-FvhPuI.js → CreatePage-D88IVvvF.js} +8 -8
- package/dist/_chunks/{CreatePage-E-FvhPuI.js.map → CreatePage-D88IVvvF.js.map} +1 -1
- package/dist/_chunks/{CreatePage-CmrFQMJC.js → CreatePage-I04A9LP8.js} +3 -3
- package/dist/_chunks/{CreatePage-CmrFQMJC.js.map → CreatePage-I04A9LP8.js.map} +1 -1
- package/dist/_chunks/{CreatePage-WBJSFt1L.mjs → CreatePage-KcWY_3Ok.mjs} +3 -3
- package/dist/_chunks/{CreatePage-WBJSFt1L.mjs.map → CreatePage-KcWY_3Ok.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-R_LEACGf.mjs → CreatePage-ZRESExEH.mjs} +8 -8
- package/dist/_chunks/{CreatePage-R_LEACGf.mjs.map → CreatePage-ZRESExEH.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-s86FxN96.js → CreatePage-ss2dbhLF.js} +6 -6
- package/dist/_chunks/{CreatePage-s86FxN96.js.map → CreatePage-ss2dbhLF.js.map} +1 -1
- package/dist/_chunks/{CreatePage-7lgLZNL_.mjs → CreatePage-z4ZBkS23.mjs} +6 -6
- package/dist/_chunks/{CreatePage-7lgLZNL_.mjs.map → CreatePage-z4ZBkS23.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-Z1S1YP34.js → CreateView-6nLdBBKy.js} +6 -6
- package/dist/_chunks/{CreateView-Z1S1YP34.js.map → CreateView-6nLdBBKy.js.map} +1 -1
- package/dist/_chunks/{CreateView-qeInzVb7.js → CreateView-jA6jhg3-.js} +6 -6
- package/dist/_chunks/{CreateView-qeInzVb7.js.map → CreateView-jA6jhg3-.js.map} +1 -1
- package/dist/_chunks/{CreateView-QIHJRLXd.mjs → CreateView-jwhpW8_9.mjs} +6 -6
- package/dist/_chunks/{CreateView-QIHJRLXd.mjs.map → CreateView-jwhpW8_9.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-Uil4HEmI.mjs → CreateView-okjLiPdb.mjs} +6 -6
- package/dist/_chunks/{CreateView-Uil4HEmI.mjs.map → CreateView-okjLiPdb.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-aHkkOEtD.js → EditPage-B1SVKQb0.js} +4 -4
- package/dist/_chunks/{EditPage-aHkkOEtD.js.map → EditPage-B1SVKQb0.js.map} +1 -1
- package/dist/_chunks/{EditPage-jBeiCR0x.mjs → EditPage-H1GaqsPD.mjs} +4 -4
- package/dist/_chunks/{EditPage-jBeiCR0x.mjs.map → EditPage-H1GaqsPD.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-yYXStg87.mjs → EditPage-JONsb219.mjs} +9 -9
- package/dist/_chunks/{EditPage-yYXStg87.mjs.map → EditPage-JONsb219.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-meUEmcmo.js → EditPage-NJUXeBbY.js} +6 -6
- package/dist/_chunks/{EditPage-meUEmcmo.js.map → EditPage-NJUXeBbY.js.map} +1 -1
- package/dist/_chunks/{EditPage-pV2YK6mV.mjs → EditPage-QoGStdUX.mjs} +6 -6
- package/dist/_chunks/{EditPage-pV2YK6mV.mjs.map → EditPage-QoGStdUX.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-CJjc7Mry.js → EditPage-TVheouo9.js} +9 -9
- package/dist/_chunks/{EditPage-CJjc7Mry.js.map → EditPage-TVheouo9.js.map} +1 -1
- package/dist/_chunks/{EditPage-px7lwDfY.js → EditPage-YcUodPsx.js} +6 -6
- package/dist/_chunks/{EditPage-px7lwDfY.js.map → EditPage-YcUodPsx.js.map} +1 -1
- package/dist/_chunks/{EditPage-26cM6Br1.mjs → EditPage-Za05JaXt.mjs} +6 -6
- package/dist/_chunks/{EditPage-26cM6Br1.mjs.map → EditPage-Za05JaXt.mjs.map} +1 -1
- package/dist/_chunks/{EditView-6wM2eONF.js → EditView-nVpR9Bvw.js} +4 -4
- package/dist/_chunks/{EditView-6wM2eONF.js.map → EditView-nVpR9Bvw.js.map} +1 -1
- package/dist/_chunks/{EditView-r1HOA27b.mjs → EditView-tb5yJvsj.mjs} +4 -4
- package/dist/_chunks/{EditView-r1HOA27b.mjs.map → EditView-tb5yJvsj.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-4bV32Q7r.mjs → EditViewPage-VP3QMQWr.mjs} +4 -4
- package/dist/_chunks/{EditViewPage-4bV32Q7r.mjs.map → EditViewPage-VP3QMQWr.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-8suVqokC.js → EditViewPage-vpD6HRFw.js} +4 -4
- package/dist/_chunks/{EditViewPage-8suVqokC.js.map → EditViewPage-vpD6HRFw.js.map} +1 -1
- package/dist/_chunks/{EventsTable-Ftc5pejf.js → EventsTable-R1dGc0f2.js} +6 -6
- package/dist/_chunks/{EventsTable-Ftc5pejf.js.map → EventsTable-R1dGc0f2.js.map} +1 -1
- package/dist/_chunks/{EventsTable-bsy7mgkN.mjs → EventsTable-o63exNQr.mjs} +6 -6
- package/dist/_chunks/{EventsTable-bsy7mgkN.mjs.map → EventsTable-o63exNQr.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-1ud8e5XT.mjs → HomePage-7YZnnhqh.mjs} +5 -5
- package/dist/_chunks/{HomePage-1ud8e5XT.mjs.map → HomePage-7YZnnhqh.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-8ggsrnev.js → HomePage-QPkJoZ4c.js} +5 -5
- package/dist/_chunks/{HomePage-8ggsrnev.js.map → HomePage-QPkJoZ4c.js.map} +1 -1
- package/dist/_chunks/{HomePage-aDvEczFh.mjs → HomePage-jNlAA81t.mjs} +6 -6
- package/dist/_chunks/{HomePage-aDvEczFh.mjs.map → HomePage-jNlAA81t.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-xFGSMMww.js → HomePage-yjafRxVs.js} +6 -6
- package/dist/_chunks/{HomePage-xFGSMMww.js.map → HomePage-yjafRxVs.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-A2ujADFv.js → InformationBoxEE-3LIRn7dg.js} +3 -3
- package/dist/_chunks/{InformationBoxEE-A2ujADFv.js.map → InformationBoxEE-3LIRn7dg.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-zSYNqXtZ.mjs → InformationBoxEE-koyu3Wew.mjs} +3 -3
- package/dist/_chunks/{InformationBoxEE-zSYNqXtZ.mjs.map → InformationBoxEE-koyu3Wew.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-Xv7kCAsO.js → InstalledPluginsPage-DIzBnpfK.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-Xv7kCAsO.js.map → InstalledPluginsPage-DIzBnpfK.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-xIBYKYPq.mjs → InstalledPluginsPage-p1dCLD-H.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-xIBYKYPq.mjs.map → InstalledPluginsPage-p1dCLD-H.mjs.map} +1 -1
- package/dist/_chunks/{Layout-ozKmjzbz.js → Layout-G1k4LM-Y.js} +2 -2
- package/dist/_chunks/{Layout-ozKmjzbz.js.map → Layout-G1k4LM-Y.js.map} +1 -1
- package/dist/_chunks/{Layout-kVEDYKjZ.mjs → Layout-n4rT_uDB.mjs} +2 -2
- package/dist/_chunks/{Layout-kVEDYKjZ.mjs.map → Layout-n4rT_uDB.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-ZQalZLZt.mjs → ListPage-6RZ9gRu-.mjs} +3 -3
- package/dist/_chunks/{ListPage-ZQalZLZt.mjs.map → ListPage-6RZ9gRu-.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-KoaGD8iE.js → ListPage-8w6D-jVh.js} +3 -3
- package/dist/_chunks/{ListPage-KoaGD8iE.js.map → ListPage-8w6D-jVh.js.map} +1 -1
- package/dist/_chunks/{ListPage-du5SItim.js → ListPage-F2abqUc7.js} +6 -6
- package/dist/_chunks/{ListPage-du5SItim.js.map → ListPage-F2abqUc7.js.map} +1 -1
- package/dist/_chunks/{ListPage-kRuB5e4n.js → ListPage-GvJnM1rf.js} +2 -2
- package/dist/_chunks/{ListPage-kRuB5e4n.js.map → ListPage-GvJnM1rf.js.map} +1 -1
- package/dist/_chunks/{ListPage-lCvnc3iq.mjs → ListPage-Qz1QBu1U.mjs} +8 -8
- package/dist/_chunks/{ListPage-lCvnc3iq.mjs.map → ListPage-Qz1QBu1U.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-RZZQIdBT.mjs → ListPage-Whvg01F1.mjs} +6 -6
- package/dist/_chunks/{ListPage-RZZQIdBT.mjs.map → ListPage-Whvg01F1.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-5iTFDpe-.mjs → ListPage-WwmsejNN.mjs} +4 -4
- package/dist/_chunks/{ListPage-5iTFDpe-.mjs.map → ListPage-WwmsejNN.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-yI278EXh.js → ListPage-cVk3Bc9t.js} +7 -7
- package/dist/_chunks/{ListPage-yI278EXh.js.map → ListPage-cVk3Bc9t.js.map} +1 -1
- package/dist/_chunks/{ListPage-bu783mQv.mjs → ListPage-omWNFry9.mjs} +2 -2
- package/dist/_chunks/{ListPage-bu783mQv.mjs.map → ListPage-omWNFry9.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-d6Qy0aWV.js → ListPage-qJqkmYmG.js} +4 -4
- package/dist/_chunks/{ListPage-d6Qy0aWV.js.map → ListPage-qJqkmYmG.js.map} +1 -1
- package/dist/_chunks/{ListPage-HgFd2Cws.js → ListPage-tqVIW5k4.js} +8 -8
- package/dist/_chunks/{ListPage-HgFd2Cws.js.map → ListPage-tqVIW5k4.js.map} +1 -1
- package/dist/_chunks/{ListPage-KtyVYRvB.mjs → ListPage-vOdTh503.mjs} +7 -7
- package/dist/_chunks/{ListPage-KtyVYRvB.mjs.map → ListPage-vOdTh503.mjs.map} +1 -1
- package/dist/_chunks/{ListView-xePUNiV9.js → ListView-1WKGsXzK.js} +3 -3
- package/dist/_chunks/{ListView-xePUNiV9.js.map → ListView-1WKGsXzK.js.map} +1 -1
- package/dist/_chunks/{ListView-ebjkV0Qn.mjs → ListView-GBX5d49E.mjs} +3 -3
- package/dist/_chunks/{ListView-ebjkV0Qn.mjs.map → ListView-GBX5d49E.mjs.map} +1 -1
- package/dist/_chunks/{ListView-k-063mrg.mjs → ListView-KfAA0iIH.mjs} +3 -3
- package/dist/_chunks/{ListView-k-063mrg.mjs.map → ListView-KfAA0iIH.mjs.map} +1 -1
- package/dist/_chunks/{ListView-p6uHjVs9.js → ListView-ZlcQHvJ3.js} +3 -3
- package/dist/_chunks/{ListView-p6uHjVs9.js.map → ListView-ZlcQHvJ3.js.map} +1 -1
- package/dist/_chunks/{Login-GqfmOsm6.mjs → Login-QiGzJtzk.mjs} +2 -2
- package/dist/_chunks/{Login-GqfmOsm6.mjs.map → Login-QiGzJtzk.mjs.map} +1 -1
- package/dist/_chunks/{Login-OI2su1GC.js → Login-Z-obAOV_.js} +2 -2
- package/dist/_chunks/{Login-OI2su1GC.js.map → Login-Z-obAOV_.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-b2IcvqS1.mjs → MagicLinkEE-4ZMNpiis.mjs} +4 -4
- package/dist/_chunks/{MagicLinkEE-b2IcvqS1.mjs.map → MagicLinkEE-4ZMNpiis.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-FcXopU1u.js → MagicLinkEE-95iDjl7f.js} +4 -4
- package/dist/_chunks/{MagicLinkEE-FcXopU1u.js.map → MagicLinkEE-95iDjl7f.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-Ehut4NEK.mjs → MarketplacePage-fxKPePNY.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-Ehut4NEK.mjs.map → MarketplacePage-fxKPePNY.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-9z1R0T1b.js → MarketplacePage-vEeLVnHa.js} +3 -3
- package/dist/_chunks/{MarketplacePage-9z1R0T1b.js.map → MarketplacePage-vEeLVnHa.js.map} +1 -1
- package/dist/_chunks/{Permissions-0jgnqArp.js → Permissions-AbrBsIIE.js} +2 -2
- package/dist/_chunks/{Permissions-0jgnqArp.js.map → Permissions-AbrBsIIE.js.map} +1 -1
- package/dist/_chunks/{Permissions--3sZ-eg8.mjs → Permissions-n03gxmL_.mjs} +2 -2
- package/dist/_chunks/{Permissions--3sZ-eg8.mjs.map → Permissions-n03gxmL_.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-rByTEZSv.mjs → ProfilePage--TajCvU5.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-rByTEZSv.mjs.map → ProfilePage--TajCvU5.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-HCD8iiDz.js → ProfilePage-6GDtE_5t.js} +3 -3
- package/dist/_chunks/{ProfilePage-HCD8iiDz.js.map → ProfilePage-6GDtE_5t.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-GuEM0Pzw.mjs → ReviewWorkflowsColumn-A2vgIO7Z.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-GuEM0Pzw.mjs.map → ReviewWorkflowsColumn-A2vgIO7Z.mjs.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-cwsnu2ZR.js → ReviewWorkflowsColumn-VVXE2ap7.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-cwsnu2ZR.js.map → ReviewWorkflowsColumn-VVXE2ap7.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-JMx8T14x.js → SelectRoles-oqWbpRZY.js} +3 -3
- package/dist/_chunks/{SelectRoles-JMx8T14x.js.map → SelectRoles-oqWbpRZY.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-SPS56XJu.mjs → SelectRoles-zpbOY00F.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-SPS56XJu.mjs.map → SelectRoles-zpbOY00F.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-55PUQgmA.mjs → SettingsPage-7hH4YDJD.mjs} +21 -21
- package/dist/_chunks/{SettingsPage-55PUQgmA.mjs.map → SettingsPage-7hH4YDJD.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-x4AKyEnW.js → SettingsPage-BLZhhOZm.js} +21 -21
- package/dist/_chunks/{SettingsPage-x4AKyEnW.js.map → SettingsPage-BLZhhOZm.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-mbZtYqh1.mjs → SingleSignOnPage-2JhF9yLD.mjs} +3 -3
- package/dist/_chunks/{SingleSignOnPage-mbZtYqh1.mjs.map → SingleSignOnPage-2JhF9yLD.mjs.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-NRMmwjF0.js → SingleSignOnPage-zySVgs7l.js} +3 -3
- package/dist/_chunks/{SingleSignOnPage-NRMmwjF0.js.map → SingleSignOnPage-zySVgs7l.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-T4JplhIP.mjs → TokenTypeSelect-avtVlM4U.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect-T4JplhIP.mjs.map → TokenTypeSelect-avtVlM4U.mjs.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-mzw7r8sl.js → TokenTypeSelect-yKyBg6et.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect-mzw7r8sl.js.map → TokenTypeSelect-yKyBg6et.js.map} +1 -1
- package/dist/_chunks/{apiTokens-FKSBkURH.js → apiTokens-Fz46KjUa.js} +2 -2
- package/dist/_chunks/{apiTokens-FKSBkURH.js.map → apiTokens-Fz46KjUa.js.map} +1 -1
- package/dist/_chunks/{apiTokens-CUBfON9a.mjs → apiTokens-_uEFOSxo.mjs} +2 -2
- package/dist/_chunks/{apiTokens-CUBfON9a.mjs.map → apiTokens-_uEFOSxo.mjs.map} +1 -1
- package/dist/_chunks/{constants-mGmqWhng.mjs → constants--_M6UoZ4.mjs} +6 -6
- package/dist/_chunks/{constants-mGmqWhng.mjs.map → constants--_M6UoZ4.mjs.map} +1 -1
- package/dist/_chunks/{constants-xvtwsVOy.js → constants-34QE-ssT.js} +6 -6
- package/dist/_chunks/{constants-xvtwsVOy.js.map → constants-34QE-ssT.js.map} +1 -1
- package/dist/_chunks/{constants-KYmN2NOr.mjs → constants-IK-0WZ7u.mjs} +2 -2
- package/dist/_chunks/{constants-KYmN2NOr.mjs.map → constants-IK-0WZ7u.mjs.map} +1 -1
- package/dist/_chunks/{constants-Ws4oXuLS.js → constants-kqVTJhs8.js} +2 -2
- package/dist/_chunks/{constants-Ws4oXuLS.js.map → constants-kqVTJhs8.js.map} +1 -1
- package/dist/_chunks/{constants-dvnXMd4F.js → constants-kwbjUNGi.js} +4 -4
- package/dist/_chunks/{constants-dvnXMd4F.js.map → constants-kwbjUNGi.js.map} +1 -1
- package/dist/_chunks/{constants-scI6GjKg.mjs → constants-muu7Jvr4.mjs} +4 -4
- package/dist/_chunks/{constants-scI6GjKg.mjs.map → constants-muu7Jvr4.mjs.map} +1 -1
- package/dist/_chunks/{constants-Z11Xre4u.js → constants-n13NeBdx.js} +2 -2
- package/dist/_chunks/{constants-Z11Xre4u.js.map → constants-n13NeBdx.js.map} +1 -1
- package/dist/_chunks/{constants-fsggVjP9.mjs → constants-tICE3HHu.mjs} +2 -2
- package/dist/_chunks/{constants-fsggVjP9.mjs.map → constants-tICE3HHu.mjs.map} +1 -1
- package/dist/_chunks/{index-54UXR7Wc.mjs → index-8K1fBeVH.mjs} +10 -10
- package/dist/_chunks/{index-54UXR7Wc.mjs.map → index-8K1fBeVH.mjs.map} +1 -1
- package/dist/_chunks/{index-kZ-K27W9.js → index-FHaNkHzZ.js} +10 -10
- package/dist/_chunks/{index-kZ-K27W9.js.map → index-FHaNkHzZ.js.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-FHvDJlqd.js → reviewWorkflows-4eBk1YNs.js} +2 -2
- package/dist/_chunks/{reviewWorkflows-FHvDJlqd.js.map → reviewWorkflows-4eBk1YNs.js.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-A6sfQAOx.mjs → reviewWorkflows-WCYQPbYX.mjs} +2 -2
- package/dist/_chunks/{reviewWorkflows-A6sfQAOx.mjs.map → reviewWorkflows-WCYQPbYX.mjs.map} +1 -1
- package/dist/_chunks/{transferTokens-Lyu3xygE.mjs → transferTokens-S2XiLG7D.mjs} +2 -2
- package/dist/_chunks/{transferTokens-Lyu3xygE.mjs.map → transferTokens-S2XiLG7D.mjs.map} +1 -1
- package/dist/_chunks/{transferTokens-DCO_Nrwf.js → transferTokens-g5OOUo9l.js} +2 -2
- package/dist/_chunks/{transferTokens-DCO_Nrwf.js.map → transferTokens-g5OOUo9l.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-eAVDHW69.mjs → useAdminRoles-LgKfXXz2.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-eAVDHW69.mjs.map → useAdminRoles-LgKfXXz2.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles--o-EQss7.js → useAdminRoles-nq87-w6F.js} +2 -2
- package/dist/_chunks/{useAdminRoles--o-EQss7.js.map → useAdminRoles-nq87-w6F.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-j--ijKnN.mjs → useContentTypes-lUhEXXr8.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-j--ijKnN.mjs.map → useContentTypes-lUhEXXr8.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-j9gMwsYu.js → useContentTypes-oLxeeWt4.js} +2 -2
- package/dist/_chunks/{useContentTypes-j9gMwsYu.js.map → useContentTypes-oLxeeWt4.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-VEpn45Ni.mjs → useLicenseLimitNotification-uxikTXVQ.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-VEpn45Ni.mjs.map → useLicenseLimitNotification-uxikTXVQ.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-L4kV-m6_.js → useLicenseLimitNotification-vzmVHxuO.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-L4kV-m6_.js.map → useLicenseLimitNotification-vzmVHxuO.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-tIp2ZkjD.mjs → useReviewWorkflows-5B04Sj5C.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-tIp2ZkjD.mjs.map → useReviewWorkflows-5B04Sj5C.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-a0C1ikFJ.js → useReviewWorkflows-br5LG5gi.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-a0C1ikFJ.js.map → useReviewWorkflows-br5LG5gi.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-g9J_FFMC.js → useWebhooks-GXgjznJO.js} +2 -2
- package/dist/_chunks/{useWebhooks-g9J_FFMC.js.map → useWebhooks-GXgjznJO.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-4jpSbuXr.mjs → useWebhooks-iOOrR2-A.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-4jpSbuXr.mjs.map → useWebhooks-iOOrR2-A.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-ubW4LNUb.mjs → validateWorkflow-Ija2Jla4.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-ubW4LNUb.mjs.map → validateWorkflow-Ija2Jla4.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-GRDaNqdW.js → validateWorkflow-PqK5EbxP.js} +2 -2
- package/dist/_chunks/{validateWorkflow-GRDaNqdW.js.map → validateWorkflow-PqK5EbxP.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/package.json +12 -12
|
@@ -3,12 +3,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
5
5
|
const reactRedux = require("react-redux");
|
|
6
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
7
|
-
const EditViewPage = require("./EditViewPage-
|
|
6
|
+
const AuthenticatedApp = require("./AuthenticatedApp-lxbOleXq.js");
|
|
7
|
+
const EditViewPage = require("./EditViewPage-vpD6HRFw.js");
|
|
8
8
|
require("react");
|
|
9
9
|
require("semver/functions/lt");
|
|
10
10
|
require("semver/functions/valid");
|
|
11
|
-
require("./index-
|
|
11
|
+
require("./index-FHaNkHzZ.js");
|
|
12
12
|
require("react-dom/client");
|
|
13
13
|
require("@strapi/design-system");
|
|
14
14
|
require("invariant");
|
|
@@ -75,9 +75,9 @@ require("lodash/uniqBy");
|
|
|
75
75
|
require("lodash/unset");
|
|
76
76
|
require("lodash/isArray");
|
|
77
77
|
require("date-fns/parseISO");
|
|
78
|
-
require("./apiTokens-
|
|
78
|
+
require("./apiTokens-Fz46KjUa.js");
|
|
79
79
|
require("./constants-RMqZXSqh.js");
|
|
80
|
-
require("./TokenTypeSelect-
|
|
80
|
+
require("./TokenTypeSelect-yKyBg6et.js");
|
|
81
81
|
require("date-fns");
|
|
82
82
|
require("date-fns/locale");
|
|
83
83
|
require("lodash/map");
|
|
@@ -89,4 +89,4 @@ const ProtectedCreateView = () => {
|
|
|
89
89
|
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings?.["api-tokens"].create, children: /* @__PURE__ */ jsxRuntime.jsx(EditViewPage.EditView, {}) });
|
|
90
90
|
};
|
|
91
91
|
exports.ProtectedCreateView = ProtectedCreateView;
|
|
92
|
-
//# sourceMappingURL=CreateView-
|
|
92
|
+
//# sourceMappingURL=CreateView-jA6jhg3-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateView-
|
|
1
|
+
{"version":3,"file":"CreateView-jA6jhg3-.js","sources":["../../admin/src/pages/Settings/pages/ApiTokens/CreateView.tsx"],"sourcesContent":["import { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { EditView } from './EditView/EditViewPage';\n\nexport const ProtectedCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.['api-tokens'].create}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":["useSelector","selectAdminPermissions","jsx","CheckPagePermissions","EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,sBAAsB,MAAM;AACjC,QAAA,cAAcA,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAC,2BAAA,IAACC,aAAqB,sBAAA,EAAA,aAAa,YAAY,WAAW,YAAY,EAAE,QACtE,UAACD,2BAAA,IAAAE,aAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { CheckPagePermissions } from "@strapi/helper-plugin";
|
|
3
3
|
import { useSelector } from "react-redux";
|
|
4
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
5
|
-
import { EditView } from "./EditView-
|
|
4
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-0lbYYEL6.mjs";
|
|
5
|
+
import { EditView } from "./EditView-tb5yJvsj.mjs";
|
|
6
6
|
import "react";
|
|
7
7
|
import "semver/functions/lt";
|
|
8
8
|
import "semver/functions/valid";
|
|
9
|
-
import "./index-
|
|
9
|
+
import "./index-8K1fBeVH.mjs";
|
|
10
10
|
import "react-dom/client";
|
|
11
11
|
import "@strapi/design-system";
|
|
12
12
|
import "invariant";
|
|
@@ -73,9 +73,9 @@ import "lodash/uniqBy";
|
|
|
73
73
|
import "lodash/unset";
|
|
74
74
|
import "lodash/isArray";
|
|
75
75
|
import "date-fns/parseISO";
|
|
76
|
-
import "./transferTokens-
|
|
76
|
+
import "./transferTokens-S2XiLG7D.mjs";
|
|
77
77
|
import "./constants-fJt30IoY.mjs";
|
|
78
|
-
import "./TokenTypeSelect-
|
|
78
|
+
import "./TokenTypeSelect-avtVlM4U.mjs";
|
|
79
79
|
import "date-fns";
|
|
80
80
|
import "date-fns/locale";
|
|
81
81
|
const ProtectedCreateView = () => {
|
|
@@ -85,4 +85,4 @@ const ProtectedCreateView = () => {
|
|
|
85
85
|
export {
|
|
86
86
|
ProtectedCreateView
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=CreateView-
|
|
88
|
+
//# sourceMappingURL=CreateView-jwhpW8_9.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateView-
|
|
1
|
+
{"version":3,"file":"CreateView-jwhpW8_9.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/CreateView.tsx"],"sourcesContent":["import { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { EditView } from './EditView';\n\nexport const ProtectedCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.['transfer-tokens'].create}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,sBAAsB,MAAM;AACjC,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,sBAAqB,EAAA,aAAa,YAAY,WAAW,iBAAiB,EAAE,QAC3E,UAAC,oBAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { CheckPagePermissions } from "@strapi/helper-plugin";
|
|
3
3
|
import { useSelector } from "react-redux";
|
|
4
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
5
|
-
import { EditView } from "./EditViewPage-
|
|
4
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-0lbYYEL6.mjs";
|
|
5
|
+
import { EditView } from "./EditViewPage-VP3QMQWr.mjs";
|
|
6
6
|
import "react";
|
|
7
7
|
import "semver/functions/lt";
|
|
8
8
|
import "semver/functions/valid";
|
|
9
|
-
import "./index-
|
|
9
|
+
import "./index-8K1fBeVH.mjs";
|
|
10
10
|
import "react-dom/client";
|
|
11
11
|
import "@strapi/design-system";
|
|
12
12
|
import "invariant";
|
|
@@ -73,9 +73,9 @@ import "lodash/uniqBy";
|
|
|
73
73
|
import "lodash/unset";
|
|
74
74
|
import "lodash/isArray";
|
|
75
75
|
import "date-fns/parseISO";
|
|
76
|
-
import "./apiTokens-
|
|
76
|
+
import "./apiTokens-_uEFOSxo.mjs";
|
|
77
77
|
import "./constants-fJt30IoY.mjs";
|
|
78
|
-
import "./TokenTypeSelect-
|
|
78
|
+
import "./TokenTypeSelect-avtVlM4U.mjs";
|
|
79
79
|
import "date-fns";
|
|
80
80
|
import "date-fns/locale";
|
|
81
81
|
import "lodash/map";
|
|
@@ -89,4 +89,4 @@ const ProtectedCreateView = () => {
|
|
|
89
89
|
export {
|
|
90
90
|
ProtectedCreateView
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=CreateView-
|
|
92
|
+
//# sourceMappingURL=CreateView-okjLiPdb.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateView-
|
|
1
|
+
{"version":3,"file":"CreateView-okjLiPdb.mjs","sources":["../../admin/src/pages/Settings/pages/ApiTokens/CreateView.tsx"],"sourcesContent":["import { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { EditView } from './EditView/EditViewPage';\n\nexport const ProtectedCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.['api-tokens'].create}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,sBAAsB,MAAM;AACjC,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,sBAAqB,EAAA,aAAa,YAAY,WAAW,YAAY,EAAE,QACtE,UAAC,oBAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
|
|
@@ -10,9 +10,9 @@ const formik = require("formik");
|
|
|
10
10
|
const reactIntl = require("react-intl");
|
|
11
11
|
const reactRouterDom = require("react-router-dom");
|
|
12
12
|
const yup = require("yup");
|
|
13
|
-
const index = require("./index-
|
|
14
|
-
const useAdminRoles = require("./useAdminRoles
|
|
15
|
-
const Permissions = require("./Permissions-
|
|
13
|
+
const index = require("./index-FHaNkHzZ.js");
|
|
14
|
+
const useAdminRoles = require("./useAdminRoles-nq87-w6F.js");
|
|
15
|
+
const Permissions = require("./Permissions-AbrBsIIE.js");
|
|
16
16
|
require("react-dom/client");
|
|
17
17
|
require("invariant");
|
|
18
18
|
require("lodash/isFunction");
|
|
@@ -345,4 +345,4 @@ const ProtectedEditPage = () => {
|
|
|
345
345
|
};
|
|
346
346
|
exports.EditPage = EditPage;
|
|
347
347
|
exports.ProtectedEditPage = ProtectedEditPage;
|
|
348
|
-
//# sourceMappingURL=EditPage-
|
|
348
|
+
//# sourceMappingURL=EditPage-B1SVKQb0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-aHkkOEtD.js","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx","../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n","import * as React from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Redirect to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – This will be fixed in V5\n lockApp();\n\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – This will be fixed in V5\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n type=\"submit\"\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout &&\n !isRoleLoading &&\n !isLoadingPermissions &&\n permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(permissions);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["useIntl","Box","Flex","jsxs","jsx","Typography","Button","Grid","GridItem","TextInput","Textarea","yup","translatedErrors","useNotification","useRouteMatch","React","useOverlayBlocker","useTracking","useAPIErrorHandler","useGetRolePermissionLayoutQuery","useAdminRoles","useGetRolePermissionsQuery","useUpdateRoleMutation","useUpdateRolePermissionsMutation","Redirect","formik","isBaseQueryError","Main","SettingsPageTitle","Formik","HeaderLayout","Link","NavLink","ArrowLeft","ContentLayout","Permissions","LoadingIndicatorPage","useTypedSelector","useRBAC"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditPage-B1SVKQb0.js","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx","../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n","import * as React from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Redirect to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – This will be fixed in V5\n lockApp();\n\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – This will be fixed in V5\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n type=\"submit\"\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout &&\n !isRoleLoading &&\n !isLoadingPermissions &&\n permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(permissions);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["useIntl","Box","Flex","jsxs","jsx","Typography","Button","Grid","GridItem","TextInput","Textarea","yup","translatedErrors","useNotification","useRouteMatch","React","useOverlayBlocker","useTracking","useAPIErrorHandler","useGetRolePermissionLayoutQuery","useAdminRoles","useGetRolePermissionsQuery","useUpdateRoleMutation","useUpdateRolePermissionsMutation","Redirect","formik","isBaseQueryError","Main","SettingsPageTitle","Formik","HeaderLayout","Link","NavLink","ArrowLeft","ContentLayout","Permissions","LoadingIndicatorPage","useTypedSelector","useRBAC"],"mappings":"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"}
|
|
@@ -8,9 +8,9 @@ import { Formik } from "formik";
|
|
|
8
8
|
import { useIntl } from "react-intl";
|
|
9
9
|
import { Redirect, useRouteMatch, NavLink } from "react-router-dom";
|
|
10
10
|
import * as yup from "yup";
|
|
11
|
-
import { j as useTypedSelector, A as useGetRolePermissionLayoutQuery, B as useGetRolePermissionsQuery, G as useUpdateRoleMutation, E as useUpdateRolePermissionsMutation, x as isBaseQueryError } from "./index-
|
|
12
|
-
import { u as useAdminRoles } from "./useAdminRoles-
|
|
13
|
-
import { P as Permissions } from "./Permissions
|
|
11
|
+
import { j as useTypedSelector, A as useGetRolePermissionLayoutQuery, B as useGetRolePermissionsQuery, G as useUpdateRoleMutation, E as useUpdateRolePermissionsMutation, x as isBaseQueryError } from "./index-8K1fBeVH.mjs";
|
|
12
|
+
import { u as useAdminRoles } from "./useAdminRoles-LgKfXXz2.mjs";
|
|
13
|
+
import { P as Permissions } from "./Permissions-n03gxmL_.mjs";
|
|
14
14
|
import "react-dom/client";
|
|
15
15
|
import "invariant";
|
|
16
16
|
import "lodash/isFunction";
|
|
@@ -325,4 +325,4 @@ export {
|
|
|
325
325
|
EditPage,
|
|
326
326
|
ProtectedEditPage
|
|
327
327
|
};
|
|
328
|
-
//# sourceMappingURL=EditPage-
|
|
328
|
+
//# sourceMappingURL=EditPage-H1GaqsPD.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-jBeiCR0x.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx","../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n","import * as React from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Redirect to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – This will be fixed in V5\n lockApp();\n\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – This will be fixed in V5\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n type=\"submit\"\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout &&\n !isRoleLoading &&\n !isLoadingPermissions &&\n permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(permissions);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditPage-H1GaqsPD.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx","../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n","import * as React from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Redirect to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – This will be fixed in V5\n lockApp();\n\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – This will be fixed in V5\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n type=\"submit\"\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout &&\n !isRoleLoading &&\n !isLoadingPermissions &&\n permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(permissions);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":[],"mappings":"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"}
|
|
@@ -7,16 +7,16 @@ import { useFormik, FormikProvider, Form } from "formik";
|
|
|
7
7
|
import { useIntl } from "react-intl";
|
|
8
8
|
import { useSelector, useDispatch } from "react-redux";
|
|
9
9
|
import { useParams } from "react-router-dom";
|
|
10
|
-
import { u as useAdminRoles } from "./useAdminRoles-
|
|
11
|
-
import { u as useContentTypes } from "./useContentTypes-
|
|
12
|
-
import { j as selectServerState, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, k as selectHasDeletedServerStages, c as selectRoles, s as selectIsLoading, v as validateWorkflow, u as useInjectReducer, l as setWorkflow, d as setWorkflows, e as setContentTypes, f as setRoles, g as setIsLoading, r as resetWorkflow, W as WorkflowAttributes, S as Stages, i as reducer } from "./validateWorkflow-
|
|
13
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
14
|
-
import { m as useLicenseLimits, x as isBaseQueryError } from "./index-
|
|
15
|
-
import { e as useUpdateWorkflowMutation } from "./reviewWorkflows-
|
|
16
|
-
import { D as DragLayerRendered, H as Header, B as Back, R as Root } from "./Layout-
|
|
10
|
+
import { u as useAdminRoles } from "./useAdminRoles-LgKfXXz2.mjs";
|
|
11
|
+
import { u as useContentTypes } from "./useContentTypes-lUhEXXr8.mjs";
|
|
12
|
+
import { j as selectServerState, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, k as selectHasDeletedServerStages, c as selectRoles, s as selectIsLoading, v as validateWorkflow, u as useInjectReducer, l as setWorkflow, d as setWorkflows, e as setContentTypes, f as setRoles, g as setIsLoading, r as resetWorkflow, W as WorkflowAttributes, S as Stages, i as reducer } from "./validateWorkflow-Ija2Jla4.mjs";
|
|
13
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-0lbYYEL6.mjs";
|
|
14
|
+
import { m as useLicenseLimits, x as isBaseQueryError } from "./index-8K1fBeVH.mjs";
|
|
15
|
+
import { e as useUpdateWorkflowMutation } from "./reviewWorkflows-WCYQPbYX.mjs";
|
|
16
|
+
import { D as DragLayerRendered, H as Header, B as Back, R as Root } from "./Layout-n4rT_uDB.mjs";
|
|
17
17
|
import { L as LimitsModal } from "./LimitsModal-slvRtty7.mjs";
|
|
18
18
|
import { C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, a as CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME, R as REDUX_NAMESPACE } from "./constants-8sAt6dKz.mjs";
|
|
19
|
-
import { u as useReviewWorkflows } from "./useReviewWorkflows-
|
|
19
|
+
import { u as useReviewWorkflows } from "./useReviewWorkflows-5B04Sj5C.mjs";
|
|
20
20
|
import "styled-components";
|
|
21
21
|
import "prop-types";
|
|
22
22
|
import "@strapi/design-system/v2";
|
|
@@ -368,4 +368,4 @@ const ReviewWorkflowsEditPage = () => {
|
|
|
368
368
|
export {
|
|
369
369
|
ReviewWorkflowsEditPage
|
|
370
370
|
};
|
|
371
|
-
//# sourceMappingURL=EditPage-
|
|
371
|
+
//# sourceMappingURL=EditPage-JONsb219.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-yYXStg87.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification, useRBAC } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useParams } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { selectAdminPermissions } from '../../../../../../../admin/src/selectors';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { Stage } from '../../../../../../../shared/contracts/review-workflows';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\nimport { useUpdateWorkflowMutation } from '../../../../services/reviewWorkflows';\n\nimport {\n resetWorkflow,\n setIsLoading,\n setWorkflow,\n setContentTypes,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectHasDeletedServerStages,\n selectIsLoading,\n selectRoles,\n selectServerState,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsEditPage = () => {\n const { workflowId } = useParams<{ workflowId: string }>();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { isLoading: isLoadingWorkflow, meta, workflows } = useReviewWorkflows();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const serverState = useSelector(selectServerState);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const hasDeletedServerStages = useSelector(selectHasDeletedServerStages);\n const roles = useSelector(selectRoles);\n const isLoading = useSelector(selectIsLoading);\n const {\n allowedActions: { canDelete, canUpdate },\n } = useRBAC(permissions.settings?.['review-workflows']);\n const [savePrompts, setSavePrompts] = React.useState<{\n hasDeletedServerStages?: boolean;\n hasReassignedContentTypes?: boolean;\n }>({});\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles(undefined);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [saving, setSaving] = React.useState(false);\n\n const workflow = workflows?.find((workflow) => workflow.id === parseInt(workflowId, 10));\n const contentTypesFromOtherWorkflows = workflows\n ?.filter((workflow) => workflow.id !== parseInt(workflowId, 10))\n .flatMap((workflow) => workflow.contentTypes);\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n\n const [updateWorkflow] = useUpdateWorkflowMutation();\n\n const submitForm = async () => {\n // reset the error messages\n setInitialErrors(undefined);\n setSaving(true);\n\n try {\n const res = await updateWorkflow({\n id: workflowId!,\n data: {\n ...currentWorkflow,\n\n // compare permissions of stages and only submit them if at least one has\n // changed; this enables partial updates e.g. for users who don't have\n // permissions to see roles\n stages: currentWorkflow.stages?.map((stage) => {\n let hasUpdatedPermissions = true;\n const serverStage = serverState.workflow?.stages?.find(\n (serverStage) => serverStage.id === stage?.id\n );\n\n if (serverStage) {\n hasUpdatedPermissions =\n serverStage.permissions?.length !== stage.permissions?.length ||\n !serverStage.permissions?.every(\n (serverPermission) =>\n !!stage.permissions?.find(\n (permission) => permission.role === serverPermission.role\n )\n );\n }\n\n return {\n ...stage,\n permissions: hasUpdatedPermissions ? stage.permissions : undefined,\n } satisfies Stage;\n }),\n },\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved', defaultMessage: 'Saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n } finally {\n setSaving(false);\n }\n\n setSavePrompts({});\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (hasDeletedServerStages || isContentTypeReassignment) {\n if (hasDeletedServerStages) {\n setSavePrompts((prev) => ({ ...prev, hasDeletedServerStages: true }));\n }\n\n if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n }\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n if (!isLoadingWorkflow && workflow && workflows) {\n dispatch(setWorkflow({ workflow }));\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingWorkflow || isLoadingContentTypes || isLoadingRoles));\n\n // reset the state to the initial state to avoid flashes if a user\n // navigates from an edit-view to a create-view\n return () => {\n dispatch(resetWorkflow());\n };\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingWorkflow,\n isLoadingRoles,\n serverRoles,\n singleTypes,\n workflow,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [\n currentWorkflow.stages,\n isLicenseLoading,\n isLoadingWorkflow,\n limits,\n meta,\n numberOfWorkflows,\n stagesPerWorkflow,\n ]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n // TODO: redirect back to list-view if workflow is not found?\n\n return (\n <>\n <Layout.DragLayerRendered />\n\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n canUpdate && (\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n // if the confirm dialog is open the loading state is on\n // the confirm button already\n loading={!Boolean(Object.keys(savePrompts).length > 0) && saving}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n subtitle={\n !isLoading &&\n formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow.stages?.length }\n )\n }\n title={currentWorkflow.name || ''}\n />\n\n <Layout.Root>\n {isLoading ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes canUpdate={canUpdate} />\n <Stages\n canDelete={canDelete}\n canUpdate={canUpdate}\n stages={formik.values?.stages}\n />\n </Flex>\n )}\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasDeletedServerStages && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.stages.body',\n defaultMessage:\n 'All entries assigned to deleted stages will be moved to the previous stage.',\n })}\n </Typography>\n )}\n\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["workflow","serverStage","Layout.DragLayerRendered","Layout.Header","Layout.Back","Layout.Root"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditPage-JONsb219.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification, useRBAC } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useParams } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { selectAdminPermissions } from '../../../../../../../admin/src/selectors';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { Stage } from '../../../../../../../shared/contracts/review-workflows';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\nimport { useUpdateWorkflowMutation } from '../../../../services/reviewWorkflows';\n\nimport {\n resetWorkflow,\n setIsLoading,\n setWorkflow,\n setContentTypes,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectHasDeletedServerStages,\n selectIsLoading,\n selectRoles,\n selectServerState,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsEditPage = () => {\n const { workflowId } = useParams<{ workflowId: string }>();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { isLoading: isLoadingWorkflow, meta, workflows } = useReviewWorkflows();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const serverState = useSelector(selectServerState);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const hasDeletedServerStages = useSelector(selectHasDeletedServerStages);\n const roles = useSelector(selectRoles);\n const isLoading = useSelector(selectIsLoading);\n const {\n allowedActions: { canDelete, canUpdate },\n } = useRBAC(permissions.settings?.['review-workflows']);\n const [savePrompts, setSavePrompts] = React.useState<{\n hasDeletedServerStages?: boolean;\n hasReassignedContentTypes?: boolean;\n }>({});\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles(undefined);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [saving, setSaving] = React.useState(false);\n\n const workflow = workflows?.find((workflow) => workflow.id === parseInt(workflowId, 10));\n const contentTypesFromOtherWorkflows = workflows\n ?.filter((workflow) => workflow.id !== parseInt(workflowId, 10))\n .flatMap((workflow) => workflow.contentTypes);\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n\n const [updateWorkflow] = useUpdateWorkflowMutation();\n\n const submitForm = async () => {\n // reset the error messages\n setInitialErrors(undefined);\n setSaving(true);\n\n try {\n const res = await updateWorkflow({\n id: workflowId!,\n data: {\n ...currentWorkflow,\n\n // compare permissions of stages and only submit them if at least one has\n // changed; this enables partial updates e.g. for users who don't have\n // permissions to see roles\n stages: currentWorkflow.stages?.map((stage) => {\n let hasUpdatedPermissions = true;\n const serverStage = serverState.workflow?.stages?.find(\n (serverStage) => serverStage.id === stage?.id\n );\n\n if (serverStage) {\n hasUpdatedPermissions =\n serverStage.permissions?.length !== stage.permissions?.length ||\n !serverStage.permissions?.every(\n (serverPermission) =>\n !!stage.permissions?.find(\n (permission) => permission.role === serverPermission.role\n )\n );\n }\n\n return {\n ...stage,\n permissions: hasUpdatedPermissions ? stage.permissions : undefined,\n } satisfies Stage;\n }),\n },\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved', defaultMessage: 'Saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n } finally {\n setSaving(false);\n }\n\n setSavePrompts({});\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (hasDeletedServerStages || isContentTypeReassignment) {\n if (hasDeletedServerStages) {\n setSavePrompts((prev) => ({ ...prev, hasDeletedServerStages: true }));\n }\n\n if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n }\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n if (!isLoadingWorkflow && workflow && workflows) {\n dispatch(setWorkflow({ workflow }));\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingWorkflow || isLoadingContentTypes || isLoadingRoles));\n\n // reset the state to the initial state to avoid flashes if a user\n // navigates from an edit-view to a create-view\n return () => {\n dispatch(resetWorkflow());\n };\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingWorkflow,\n isLoadingRoles,\n serverRoles,\n singleTypes,\n workflow,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [\n currentWorkflow.stages,\n isLicenseLoading,\n isLoadingWorkflow,\n limits,\n meta,\n numberOfWorkflows,\n stagesPerWorkflow,\n ]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n // TODO: redirect back to list-view if workflow is not found?\n\n return (\n <>\n <Layout.DragLayerRendered />\n\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n canUpdate && (\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n // if the confirm dialog is open the loading state is on\n // the confirm button already\n loading={!Boolean(Object.keys(savePrompts).length > 0) && saving}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n subtitle={\n !isLoading &&\n formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow.stages?.length }\n )\n }\n title={currentWorkflow.name || ''}\n />\n\n <Layout.Root>\n {isLoading ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes canUpdate={canUpdate} />\n <Stages\n canDelete={canDelete}\n canUpdate={canUpdate}\n stages={formik.values?.stages}\n />\n </Flex>\n )}\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasDeletedServerStages && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.stages.body',\n defaultMessage:\n 'All entries assigned to deleted stages will be moved to the previous stage.',\n })}\n </Typography>\n )}\n\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["workflow","serverStage","Layout.DragLayerRendered","Layout.Header","Layout.Back","Layout.Root"],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ const React = require("react");
|
|
|
4
4
|
const designSystem = require("@strapi/design-system");
|
|
5
5
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
6
6
|
const reactRouterDom = require("react-router-dom");
|
|
7
|
-
const index = require("./index-
|
|
8
|
-
const useContentTypes = require("./useContentTypes-
|
|
9
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
7
|
+
const index = require("./index-FHaNkHzZ.js");
|
|
8
|
+
const useContentTypes = require("./useContentTypes-oLxeeWt4.js");
|
|
9
|
+
const AuthenticatedApp = require("./AuthenticatedApp-lxbOleXq.js");
|
|
10
10
|
const v2 = require("@strapi/design-system/v2");
|
|
11
11
|
const Icons = require("@strapi/icons");
|
|
12
12
|
const formik = require("formik");
|
|
@@ -14,7 +14,7 @@ const reactIntl = require("react-intl");
|
|
|
14
14
|
const yup = require("yup");
|
|
15
15
|
const reactContext = require("@radix-ui/react-context");
|
|
16
16
|
const styled = require("styled-components");
|
|
17
|
-
const useWebhooks = require("./useWebhooks-
|
|
17
|
+
const useWebhooks = require("./useWebhooks-GXgjznJO.js");
|
|
18
18
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
19
19
|
function _interopNamespace(e) {
|
|
20
20
|
if (e && e.__esModule)
|
|
@@ -493,7 +493,7 @@ const WebhookForm = ({
|
|
|
493
493
|
const [showTriggerResponse, setShowTriggerResponse] = React__namespace.useState(false);
|
|
494
494
|
const EventTable = index.useEnterprise(
|
|
495
495
|
EventTableCE,
|
|
496
|
-
async () => (await Promise.resolve().then(() => require("./EventsTable-
|
|
496
|
+
async () => (await Promise.resolve().then(() => require("./EventsTable-R1dGc0f2.js"))).EventsTableEE
|
|
497
497
|
);
|
|
498
498
|
const mapHeaders = (headers) => {
|
|
499
499
|
if (!Object.keys(headers).length) {
|
|
@@ -806,4 +806,4 @@ const EditPage$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
|
|
|
806
806
|
exports.EditPage = EditPage;
|
|
807
807
|
exports.EditPage$1 = EditPage$1;
|
|
808
808
|
exports.Events = Events;
|
|
809
|
-
//# sourceMappingURL=EditPage-
|
|
809
|
+
//# sourceMappingURL=EditPage-NJUXeBbY.js.map
|