@strapi/admin 5.0.0-beta.5 → 5.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/{AdminSeatInfo-jPH1stsB.mjs → AdminSeatInfo-f4TfgHFE.mjs} +8 -17
- package/dist/admin/AdminSeatInfo-f4TfgHFE.mjs.map +1 -0
- package/dist/admin/{AdminSeatInfo-H5eNy3Gq.js → AdminSeatInfo-jSvlksaP.js} +7 -16
- package/dist/admin/AdminSeatInfo-jSvlksaP.js.map +1 -0
- package/dist/admin/{ApplicationInfoPage-leY1AEgo.js → ApplicationInfoPage-75RPd0Ro.js} +35 -49
- package/dist/admin/ApplicationInfoPage-75RPd0Ro.js.map +1 -0
- package/dist/admin/{ApplicationInfoPage-QiVVy6LS.mjs → ApplicationInfoPage-aB-vx1uX.mjs} +37 -50
- package/dist/admin/ApplicationInfoPage-aB-vx1uX.mjs.map +1 -0
- package/dist/admin/{AuthResponse-B3Y_lz50.mjs → AuthResponse-HbQI8hB8.mjs} +2 -2
- package/dist/admin/{AuthResponse-B3Y_lz50.mjs.map → AuthResponse-HbQI8hB8.mjs.map} +1 -1
- package/dist/admin/{AuthResponse-FrsRAqFn.js → AuthResponse-YXlkDXrI.js} +2 -2
- package/dist/admin/{AuthResponse-FrsRAqFn.js.map → AuthResponse-YXlkDXrI.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-CHSwnqUb.mjs → AuthenticatedLayout-LYVDZ-jl.mjs} +274 -219
- package/dist/admin/AuthenticatedLayout-LYVDZ-jl.mjs.map +1 -0
- package/dist/admin/{AuthenticatedLayout-vS7Bwbws.js → AuthenticatedLayout-xkecaUXJ.js} +278 -224
- package/dist/admin/AuthenticatedLayout-xkecaUXJ.js.map +1 -0
- package/dist/admin/{ContentBox-xqJCP2BC.js → ContentBox-3MRTNw0X.js} +7 -10
- package/dist/admin/ContentBox-3MRTNw0X.js.map +1 -0
- package/dist/admin/{ContentBox-PbS25I_4.mjs → ContentBox-9LBDzws0.mjs} +5 -4
- package/dist/admin/ContentBox-9LBDzws0.mjs.map +1 -0
- package/dist/admin/{CreateActionEE-2DKYzbq_.js → CreateActionEE-9Z-woKCk.js} +4 -12
- package/dist/admin/CreateActionEE-9Z-woKCk.js.map +1 -0
- package/dist/admin/{CreateActionEE-TcGdWjIN.mjs → CreateActionEE-QiVnA7Rx.mjs} +6 -14
- package/dist/admin/CreateActionEE-QiVnA7Rx.mjs.map +1 -0
- package/dist/admin/{CreatePage-BrnwHVcz.mjs → CreatePage-1iAK5V1h.mjs} +30 -27
- package/dist/admin/CreatePage-1iAK5V1h.mjs.map +1 -0
- package/dist/admin/{CreatePage-FylqLa6E.js → CreatePage-ZrJXDmLJ.js} +3 -3
- package/dist/admin/{CreatePage-FylqLa6E.js.map → CreatePage-ZrJXDmLJ.js.map} +1 -1
- package/dist/admin/{CreatePage-rnuGS1p6.mjs → CreatePage-jsVARlnB.mjs} +3 -3
- package/dist/admin/{CreatePage-rnuGS1p6.mjs.map → CreatePage-jsVARlnB.mjs.map} +1 -1
- package/dist/admin/{CreatePage-aBOoUjUW.js → CreatePage-uHcWJ0EG.js} +30 -30
- package/dist/admin/CreatePage-uHcWJ0EG.js.map +1 -0
- package/dist/admin/{CreateView-s_woT94q.js → CreateView-1WqjD6uO.js} +3 -3
- package/dist/admin/{CreateView-s_woT94q.js.map → CreateView-1WqjD6uO.js.map} +1 -1
- package/dist/admin/{CreateView-g1_N_BFO.mjs → CreateView-Bi2p6uqA.mjs} +3 -3
- package/dist/admin/{CreateView-g1_N_BFO.mjs.map → CreateView-Bi2p6uqA.mjs.map} +1 -1
- package/dist/admin/{CreateView-L-2WWDGY.js → CreateView-HhvACL4t.js} +3 -3
- package/dist/admin/{CreateView-L-2WWDGY.js.map → CreateView-HhvACL4t.js.map} +1 -1
- package/dist/admin/{CreateView-v0E-2MUk.mjs → CreateView-tSUpjqXs.mjs} +3 -3
- package/dist/admin/{CreateView-v0E-2MUk.mjs.map → CreateView-tSUpjqXs.mjs.map} +1 -1
- package/dist/admin/{EditPage-QD0hqEQx.js → EditPage-2l5T1lDC.js} +217 -272
- package/dist/admin/EditPage-2l5T1lDC.js.map +1 -0
- package/dist/admin/{EditPage-x0JVIh4C.mjs → EditPage-JmGISZmG.mjs} +218 -270
- package/dist/admin/EditPage-JmGISZmG.mjs.map +1 -0
- package/dist/admin/{EditPage-FLtTVd-J.js → EditPage-LMYuiLOp.js} +45 -29
- package/dist/admin/EditPage-LMYuiLOp.js.map +1 -0
- package/dist/admin/{EditPage-l77sfwOj.js → EditPage-MGQBBDmf.js} +12 -12
- package/dist/admin/EditPage-MGQBBDmf.js.map +1 -0
- package/dist/admin/{EditPage-RH6-47fP.mjs → EditPage-xQSTfVfO.mjs} +46 -30
- package/dist/admin/EditPage-xQSTfVfO.mjs.map +1 -0
- package/dist/admin/{EditPage-pZmycDG6.mjs → EditPage-yFuP3hZG.mjs} +13 -13
- package/dist/admin/EditPage-yFuP3hZG.mjs.map +1 -0
- package/dist/admin/{EditView-dEKhCE7v.mjs → EditView-06IK7yeo.mjs} +9 -9
- package/dist/admin/EditView-06IK7yeo.mjs.map +1 -0
- package/dist/admin/{EditView-0jWi165t.js → EditView-9cnQdotQ.js} +8 -8
- package/dist/admin/EditView-9cnQdotQ.js.map +1 -0
- package/dist/admin/{EditViewPage-mLGPwfRP.js → EditViewPage-ZTHin7cu.js} +20 -21
- package/dist/admin/EditViewPage-ZTHin7cu.js.map +1 -0
- package/dist/admin/{EditViewPage-urKxemM0.mjs → EditViewPage-x06h850j.mjs} +17 -17
- package/dist/admin/EditViewPage-x06h850j.mjs.map +1 -0
- package/dist/admin/{EventsTable-y0d489dF.js → EventsTable-i6DpZCjP.js} +2 -2
- package/dist/admin/{EventsTable-y0d489dF.js.map → EventsTable-i6DpZCjP.js.map} +1 -1
- package/dist/admin/{EventsTable-BCAvurrX.mjs → EventsTable-uKf7y-DM.mjs} +2 -2
- package/dist/admin/{EventsTable-BCAvurrX.mjs.map → EventsTable-uKf7y-DM.mjs.map} +1 -1
- package/dist/admin/{HomePage-jcsulO2V.mjs → HomePage-Dk_BC7we.mjs} +3 -3
- package/dist/admin/{HomePage-jcsulO2V.mjs.map → HomePage-Dk_BC7we.mjs.map} +1 -1
- package/dist/admin/{HomePage-p-eVAC_O.js → HomePage-VKuqPKIc.js} +58 -48
- package/dist/admin/HomePage-VKuqPKIc.js.map +1 -0
- package/dist/admin/{HomePage-1CH8bE47.js → HomePage-tgoADIWe.js} +3 -3
- package/dist/admin/{HomePage-1CH8bE47.js.map → HomePage-tgoADIWe.js.map} +1 -1
- package/dist/admin/{HomePage-hsBKC9UT.mjs → HomePage-ytofle46.mjs} +42 -29
- package/dist/admin/HomePage-ytofle46.mjs.map +1 -0
- package/dist/admin/{InstalledPluginsPage-s_PGIc3_.mjs → InstalledPluginsPage--iVM14K3.mjs} +9 -8
- package/dist/admin/InstalledPluginsPage--iVM14K3.mjs.map +1 -0
- package/dist/admin/{InstalledPluginsPage-ZIPyDrzh.js → InstalledPluginsPage-5fDQJ3wY.js} +8 -7
- package/dist/admin/InstalledPluginsPage-5fDQJ3wY.js.map +1 -0
- package/dist/admin/{Layout-TtAytojj.js → Layout-BYaZsvrJ.js} +15 -17
- package/dist/admin/Layout-BYaZsvrJ.js.map +1 -0
- package/dist/admin/{Layout-E5qOsA9X.mjs → Layout-woodqxaL.mjs} +12 -13
- package/dist/admin/Layout-woodqxaL.mjs.map +1 -0
- package/dist/admin/{ListPage-FJ7Z1gS2.js → ListPage-0zYjdNsU.js} +13 -14
- package/dist/admin/ListPage-0zYjdNsU.js.map +1 -0
- package/dist/admin/{ListPage-_p5xKu6Q.mjs → ListPage-4VNlnYoD.mjs} +3 -3
- package/dist/admin/{ListPage-_p5xKu6Q.mjs.map → ListPage-4VNlnYoD.mjs.map} +1 -1
- package/dist/admin/{ListPage-hhPlIMGc.js → ListPage-5OElNgYk.js} +15 -20
- package/dist/admin/ListPage-5OElNgYk.js.map +1 -0
- package/dist/admin/{ListPage-VymLq96p.mjs → ListPage-7wUYXUgs.mjs} +18 -19
- package/dist/admin/ListPage-7wUYXUgs.mjs.map +1 -0
- package/dist/admin/{ListPage-54QP9CgX.mjs → ListPage-HCUzAC2B.mjs} +19 -32
- package/dist/admin/ListPage-HCUzAC2B.mjs.map +1 -0
- package/dist/admin/{ListPage-AzfR4Vrk.js → ListPage-MxOKlYmC.js} +17 -18
- package/dist/admin/ListPage-MxOKlYmC.js.map +1 -0
- package/dist/admin/{ListPage-M4WMxB5d.mjs → ListPage-NURPzLD-.mjs} +15 -20
- package/dist/admin/ListPage-NURPzLD-.mjs.map +1 -0
- package/dist/admin/{ListPage-av7186GD.js → ListPage-V26wHeo6.js} +18 -31
- package/dist/admin/ListPage-V26wHeo6.js.map +1 -0
- package/dist/admin/{ListPage-ojfvM5qr.js → ListPage-XZshrlES.js} +3 -3
- package/dist/admin/{ListPage-ojfvM5qr.js.map → ListPage-XZshrlES.js.map} +1 -1
- package/dist/admin/{ListPage-DVSiz4k2.mjs → ListPage-wtqw0RXL.mjs} +14 -15
- package/dist/admin/ListPage-wtqw0RXL.mjs.map +1 -0
- package/dist/admin/{ListView-WmnatWVx.js → ListView-SmHj4MFz.js} +15 -13
- package/dist/admin/ListView-SmHj4MFz.js.map +1 -0
- package/dist/admin/{ListView-QWjCBmaw.mjs → ListView-VRdl68JN.mjs} +14 -14
- package/dist/admin/ListView-VRdl68JN.mjs.map +1 -0
- package/dist/admin/{ListView-lSCZzdzM.mjs → ListView-hi5fg7r8.mjs} +15 -13
- package/dist/admin/ListView-hi5fg7r8.mjs.map +1 -0
- package/dist/admin/{ListView-MHzoKSAg.js → ListView-siyyh4f7.js} +14 -14
- package/dist/admin/ListView-siyyh4f7.js.map +1 -0
- package/dist/admin/{Login--ZDAgCsE.mjs → Login-9hdTvAlD.mjs} +5 -5
- package/dist/admin/Login-9hdTvAlD.mjs.map +1 -0
- package/dist/admin/{Login-Qfx7Y8LA.js → Login-bGhxScoT.js} +6 -10
- package/dist/admin/Login-bGhxScoT.js.map +1 -0
- package/dist/admin/{MagicLinkEE-QVRUN_dM.js → MagicLinkEE-5c7HTc8n.js} +3 -3
- package/dist/admin/{MagicLinkEE-QVRUN_dM.js.map → MagicLinkEE-5c7HTc8n.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-HT2w-ynq.mjs → MagicLinkEE-cAwS-v3S.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-HT2w-ynq.mjs.map → MagicLinkEE-cAwS-v3S.mjs.map} +1 -1
- package/dist/admin/{MarketplacePage-e41eJgNp.mjs → MarketplacePage-hCtNAEWd.mjs} +66 -86
- package/dist/admin/MarketplacePage-hCtNAEWd.mjs.map +1 -0
- package/dist/admin/{MarketplacePage-bs_XrVBk.js → MarketplacePage-t6FAhfMK.js} +72 -93
- package/dist/admin/MarketplacePage-t6FAhfMK.js.map +1 -0
- package/dist/admin/{Ornaments-RhzFP9rf.js → Ornaments-UTssGzOw.js} +8 -8
- package/dist/admin/{Ornaments-RhzFP9rf.js.map → Ornaments-UTssGzOw.js.map} +1 -1
- package/dist/admin/{Ornaments-izqdN6fh.mjs → Ornaments-h_LCCr5P.mjs} +8 -8
- package/dist/admin/{Ornaments-izqdN6fh.mjs.map → Ornaments-h_LCCr5P.mjs.map} +1 -1
- package/dist/admin/{Permissions-eyokRb6a.mjs → Permissions-Ng22nlYS.mjs} +51 -51
- package/dist/admin/Permissions-Ng22nlYS.mjs.map +1 -0
- package/dist/admin/{Permissions-IbcPzM2X.js → Permissions-aRi-vOk-.js} +68 -69
- package/dist/admin/Permissions-aRi-vOk-.js.map +1 -0
- package/dist/admin/{PrivateRoute-KAM10GGM.js → PrivateRoute--JuZZan_.js} +2 -2
- package/dist/admin/{PrivateRoute-KAM10GGM.js.map → PrivateRoute--JuZZan_.js.map} +1 -1
- package/dist/admin/{PrivateRoute-wDu6Vo0N.mjs → PrivateRoute-hfATZKl-.mjs} +2 -2
- package/dist/admin/{PrivateRoute-wDu6Vo0N.mjs.map → PrivateRoute-hfATZKl-.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-1ptv647K.js → ProfilePage-8ieqgIrW.js} +11 -11
- package/dist/admin/ProfilePage-8ieqgIrW.js.map +1 -0
- package/dist/admin/{ProfilePage-jsFPZpKL.mjs → ProfilePage-imi1Exl5.mjs} +12 -12
- package/dist/admin/ProfilePage-imi1Exl5.mjs.map +1 -0
- package/dist/admin/{PurchaseAuditLogs-8_4PcW7P.mjs → PurchaseAuditLogs-RGCYZl25.mjs} +8 -7
- package/dist/admin/PurchaseAuditLogs-RGCYZl25.mjs.map +1 -0
- package/dist/admin/{PurchaseAuditLogs-tS_tVSGI.js → PurchaseAuditLogs-xUopaGaS.js} +7 -6
- package/dist/admin/PurchaseAuditLogs-xUopaGaS.js.map +1 -0
- package/dist/admin/{PurchaseSingleSignOn-9SV6-fYs.js → PurchaseSingleSignOn-XOgkJmcn.js} +7 -6
- package/dist/admin/PurchaseSingleSignOn-XOgkJmcn.js.map +1 -0
- package/dist/admin/{PurchaseSingleSignOn--gblfVu6.mjs → PurchaseSingleSignOn-uMysWmJV.mjs} +8 -7
- package/dist/admin/PurchaseSingleSignOn-uMysWmJV.mjs.map +1 -0
- package/dist/admin/{SSOProviders-JTam8pNP.js → SSOProviders-AirHFyBl.js} +6 -10
- package/dist/admin/SSOProviders-AirHFyBl.js.map +1 -0
- package/dist/admin/{SSOProviders-f1OPn1AH.mjs → SSOProviders-t8D-v8As.mjs} +4 -4
- package/dist/admin/SSOProviders-t8D-v8As.mjs.map +1 -0
- package/dist/admin/{SelectRoles-9TYXaG64.mjs → SelectRoles-kh6E_r88.mjs} +44 -39
- package/dist/admin/SelectRoles-kh6E_r88.mjs.map +1 -0
- package/dist/admin/{SelectRoles-OEKLwb7S.js → SelectRoles-uO7YohIC.js} +44 -43
- package/dist/admin/SelectRoles-uO7YohIC.js.map +1 -0
- package/dist/admin/SingleSignOnPage-T90Opl7K.mjs +231 -0
- package/dist/admin/SingleSignOnPage-T90Opl7K.mjs.map +1 -0
- package/dist/admin/SingleSignOnPage-bnlsJPDh.js +256 -0
- package/dist/admin/SingleSignOnPage-bnlsJPDh.js.map +1 -0
- package/dist/admin/{Table-PQ0O80QL.mjs → Table-XkC1iUuN.mjs} +8 -9
- package/dist/admin/Table-XkC1iUuN.mjs.map +1 -0
- package/dist/admin/{Table--gMZz8mZ.js → Table-qGOQznHA.js} +8 -12
- package/dist/admin/Table-qGOQznHA.js.map +1 -0
- package/dist/admin/{TokenTypeSelect-QB3M2AO_.js → TokenTypeSelect-733TgUaC.js} +86 -68
- package/dist/admin/TokenTypeSelect-733TgUaC.js.map +1 -0
- package/dist/admin/{TokenTypeSelect-zx8B_1pv.mjs → TokenTypeSelect-kjhQiPbj.mjs} +88 -70
- package/dist/admin/TokenTypeSelect-kjhQiPbj.mjs.map +1 -0
- package/dist/admin/{UseCasePage-khHikw1F.mjs → UseCasePage-cNK2fN9i.mjs} +17 -34
- package/dist/admin/UseCasePage-cNK2fN9i.mjs.map +1 -0
- package/dist/admin/{UseCasePage-R3vzwRYQ.js → UseCasePage-uk5jmSsj.js} +16 -36
- package/dist/admin/UseCasePage-uk5jmSsj.js.map +1 -0
- package/dist/admin/admin-dE-jnuNr.mjs +339 -0
- package/dist/admin/admin-dE-jnuNr.mjs.map +1 -0
- package/dist/admin/{admin-vlKSOeHB.js → admin-sk7xXllW.js} +146 -61
- package/dist/admin/admin-sk7xXllW.js.map +1 -0
- package/dist/admin/{apiTokens-dBRuo1wd.mjs → apiTokens-W-bmo-dU.mjs} +2 -2
- package/dist/admin/{apiTokens-dBRuo1wd.mjs.map → apiTokens-W-bmo-dU.mjs.map} +1 -1
- package/dist/admin/{apiTokens-lXn03No3.js → apiTokens-amUH0Wax.js} +2 -2
- package/dist/admin/{apiTokens-lXn03No3.js.map → apiTokens-amUH0Wax.js.map} +1 -1
- package/dist/admin/{constants-O2S8dPXm.mjs → constants-K5IOuR0b.mjs} +8 -9
- package/dist/admin/constants-K5IOuR0b.mjs.map +1 -0
- package/dist/admin/{constants-EH1lNehX.js → constants-ZW8_ZgiN.js} +8 -13
- package/dist/admin/constants-ZW8_ZgiN.js.map +1 -0
- package/dist/admin/ee.js +1 -1
- package/dist/admin/ee.mjs +1 -1
- package/dist/admin/{en-qvX6GTOD.mjs → en-D7rooMTs.mjs} +2 -1
- package/dist/admin/{en-qvX6GTOD.mjs.map → en-D7rooMTs.mjs.map} +1 -1
- package/dist/admin/{en-2FB7x9Rq.js → en-zVbLVH-h.js} +2 -1
- package/dist/admin/{en-2FB7x9Rq.js.map → en-zVbLVH-h.js.map} +1 -1
- package/dist/admin/{index-3MYZ88xc.mjs → index--VHJr8__.mjs} +609 -427
- package/dist/admin/index--VHJr8__.mjs.map +1 -0
- package/dist/admin/{index-Ze-KuF2r.js → index-8r8zglVb.js} +620 -438
- package/dist/admin/index-8r8zglVb.js.map +1 -0
- package/dist/admin/index.js +6 -3
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +3 -3
- package/dist/admin/{rbac-sYT_mXH0.mjs → rbac-OjYDiE2n.mjs} +13 -13
- package/dist/admin/rbac-OjYDiE2n.mjs.map +1 -0
- package/dist/admin/{rbac-WZsv1761.js → rbac-xo8GO653.js} +14 -14
- package/dist/admin/rbac-xo8GO653.js.map +1 -0
- package/dist/admin/{selectors-3gRe5pAj.mjs → selectors-k4OkEbL7.mjs} +2 -2
- package/dist/admin/{selectors-3gRe5pAj.mjs.map → selectors-k4OkEbL7.mjs.map} +1 -1
- package/dist/admin/{selectors-CiTVxP8O.js → selectors-lQOnkFXz.js} +2 -2
- package/dist/admin/{selectors-CiTVxP8O.js.map → selectors-lQOnkFXz.js.map} +1 -1
- package/dist/admin/src/components/FormInputs/Email.d.ts +1 -1
- package/dist/admin/src/components/FormInputs/Enumeration.d.ts +1 -1
- package/dist/admin/src/components/FormInputs/Json.d.ts +2 -4
- package/dist/admin/src/components/FormInputs/Password.d.ts +1 -1
- package/dist/admin/src/components/FormInputs/String.d.ts +1 -4
- package/dist/admin/src/components/FormInputs/Textarea.d.ts +1 -1
- package/dist/admin/src/components/FormInputs/types.d.ts +1 -0
- package/dist/admin/src/components/Layouts/ActionLayout.d.ts +7 -0
- package/dist/admin/src/components/Layouts/ContentLayout.d.ts +6 -0
- package/dist/admin/src/components/Layouts/GridLayout.d.ts +17 -0
- package/dist/admin/src/components/Layouts/HeaderLayout.d.ts +19 -0
- package/dist/admin/src/components/MainNav/MainNav.d.ts +3 -0
- package/dist/admin/src/components/MainNav/NavLink.d.ts +24 -0
- package/dist/admin/src/components/MainNav/NavUser.d.ts +7 -0
- package/dist/admin/src/features/BackButton.d.ts +1 -1
- package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +2 -4
- package/dist/admin/src/hooks/useFetchClient.d.ts +7 -8
- package/dist/admin/src/hooks/useFocusInputField.d.ts +2 -5
- package/dist/admin/src/index.d.ts +6 -1
- package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +4 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +6 -50
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +2 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/constants.d.ts +3 -3
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/Events.d.ts +2 -3
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.d.ts +2 -2
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/utils/baseQuery.d.ts +6 -6
- package/dist/admin/src/utils/getFetchClient.d.ts +40 -10
- package/dist/admin/src/utils/normalizeAPIError.d.ts +2 -5
- package/dist/admin/test.js +2 -2
- package/dist/admin/test.mjs +2 -2
- package/dist/admin/{transferTokens-5qQjIKFd.js → transferTokens-6WfQBaQ-.js} +2 -2
- package/dist/admin/{transferTokens-5qQjIKFd.js.map → transferTokens-6WfQBaQ-.js.map} +1 -1
- package/dist/admin/{transferTokens-OLPKYcY_.mjs → transferTokens-i692XANY.mjs} +2 -2
- package/dist/admin/{transferTokens-OLPKYcY_.mjs.map → transferTokens-i692XANY.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-K6leAcQd.js → useAdminRoles-Y5UQ6Egv.js} +2 -2
- package/dist/admin/{useAdminRoles-K6leAcQd.js.map → useAdminRoles-Y5UQ6Egv.js.map} +1 -1
- package/dist/admin/{useAdminRoles-dMrStp_i.mjs → useAdminRoles-eVMCxlw1.mjs} +2 -2
- package/dist/admin/{useAdminRoles-dMrStp_i.mjs.map → useAdminRoles-eVMCxlw1.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-aTNbD3xK.mjs → useLicenseLimitNotification-OHVMxaBa.mjs} +3 -3
- package/dist/admin/{useLicenseLimitNotification-aTNbD3xK.mjs.map → useLicenseLimitNotification-OHVMxaBa.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-0UWeCY_u.js → useLicenseLimitNotification-sfaZoueO.js} +3 -3
- package/dist/admin/{useLicenseLimitNotification-0UWeCY_u.js.map → useLicenseLimitNotification-sfaZoueO.js.map} +1 -1
- package/dist/admin/{useLicenseLimits-F7K-YWAE.mjs → useLicenseLimits--WDjYzSj.mjs} +2 -2
- package/dist/admin/{useLicenseLimits-F7K-YWAE.mjs.map → useLicenseLimits--WDjYzSj.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimits-m11DOu9p.js → useLicenseLimits-mA4KtQ81.js} +2 -2
- package/dist/admin/{useLicenseLimits-m11DOu9p.js.map → useLicenseLimits-mA4KtQ81.js.map} +1 -1
- package/dist/admin/{useWebhooks-7BXPSMHG.mjs → useWebhooks-0pDqX-k4.mjs} +2 -2
- package/dist/admin/{useWebhooks-7BXPSMHG.mjs.map → useWebhooks-0pDqX-k4.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-oZ5DKtvz.js → useWebhooks-BBj9Ew7F.js} +2 -2
- package/dist/admin/{useWebhooks-oZ5DKtvz.js.map → useWebhooks-BBj9Ew7F.js.map} +1 -1
- package/dist/admin/{validation-FXocLGal.js → validation-hp8oweyu.js} +2 -2
- package/dist/admin/{validation-FXocLGal.js.map → validation-hp8oweyu.js.map} +1 -1
- package/dist/admin/{validation-EKBCSsCp.mjs → validation-xeirflOd.mjs} +2 -2
- package/dist/admin/{validation-EKBCSsCp.mjs.map → validation-xeirflOd.mjs.map} +1 -1
- package/dist/package.json.d.ts +14 -15
- package/dist/server/index.js +9 -6
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +9 -6
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
- package/package.json +15 -16
- package/dist/admin/AdminSeatInfo-H5eNy3Gq.js.map +0 -1
- package/dist/admin/AdminSeatInfo-jPH1stsB.mjs.map +0 -1
- package/dist/admin/ApplicationInfoPage-QiVVy6LS.mjs.map +0 -1
- package/dist/admin/ApplicationInfoPage-leY1AEgo.js.map +0 -1
- package/dist/admin/AuthenticatedLayout-CHSwnqUb.mjs.map +0 -1
- package/dist/admin/AuthenticatedLayout-vS7Bwbws.js.map +0 -1
- package/dist/admin/ContentBox-PbS25I_4.mjs.map +0 -1
- package/dist/admin/ContentBox-xqJCP2BC.js.map +0 -1
- package/dist/admin/CreateActionEE-2DKYzbq_.js.map +0 -1
- package/dist/admin/CreateActionEE-TcGdWjIN.mjs.map +0 -1
- package/dist/admin/CreatePage-BrnwHVcz.mjs.map +0 -1
- package/dist/admin/CreatePage-aBOoUjUW.js.map +0 -1
- package/dist/admin/EditPage-FLtTVd-J.js.map +0 -1
- package/dist/admin/EditPage-QD0hqEQx.js.map +0 -1
- package/dist/admin/EditPage-RH6-47fP.mjs.map +0 -1
- package/dist/admin/EditPage-l77sfwOj.js.map +0 -1
- package/dist/admin/EditPage-pZmycDG6.mjs.map +0 -1
- package/dist/admin/EditPage-x0JVIh4C.mjs.map +0 -1
- package/dist/admin/EditView-0jWi165t.js.map +0 -1
- package/dist/admin/EditView-dEKhCE7v.mjs.map +0 -1
- package/dist/admin/EditViewPage-mLGPwfRP.js.map +0 -1
- package/dist/admin/EditViewPage-urKxemM0.mjs.map +0 -1
- package/dist/admin/HomePage-hsBKC9UT.mjs.map +0 -1
- package/dist/admin/HomePage-p-eVAC_O.js.map +0 -1
- package/dist/admin/InstalledPluginsPage-ZIPyDrzh.js.map +0 -1
- package/dist/admin/InstalledPluginsPage-s_PGIc3_.mjs.map +0 -1
- package/dist/admin/Layout-E5qOsA9X.mjs.map +0 -1
- package/dist/admin/Layout-TtAytojj.js.map +0 -1
- package/dist/admin/ListPage-54QP9CgX.mjs.map +0 -1
- package/dist/admin/ListPage-AzfR4Vrk.js.map +0 -1
- package/dist/admin/ListPage-DVSiz4k2.mjs.map +0 -1
- package/dist/admin/ListPage-FJ7Z1gS2.js.map +0 -1
- package/dist/admin/ListPage-M4WMxB5d.mjs.map +0 -1
- package/dist/admin/ListPage-VymLq96p.mjs.map +0 -1
- package/dist/admin/ListPage-av7186GD.js.map +0 -1
- package/dist/admin/ListPage-hhPlIMGc.js.map +0 -1
- package/dist/admin/ListView-MHzoKSAg.js.map +0 -1
- package/dist/admin/ListView-QWjCBmaw.mjs.map +0 -1
- package/dist/admin/ListView-WmnatWVx.js.map +0 -1
- package/dist/admin/ListView-lSCZzdzM.mjs.map +0 -1
- package/dist/admin/Login--ZDAgCsE.mjs.map +0 -1
- package/dist/admin/Login-Qfx7Y8LA.js.map +0 -1
- package/dist/admin/MarketplacePage-bs_XrVBk.js.map +0 -1
- package/dist/admin/MarketplacePage-e41eJgNp.mjs.map +0 -1
- package/dist/admin/Permissions-IbcPzM2X.js.map +0 -1
- package/dist/admin/Permissions-eyokRb6a.mjs.map +0 -1
- package/dist/admin/ProfilePage-1ptv647K.js.map +0 -1
- package/dist/admin/ProfilePage-jsFPZpKL.mjs.map +0 -1
- package/dist/admin/PurchaseAuditLogs-8_4PcW7P.mjs.map +0 -1
- package/dist/admin/PurchaseAuditLogs-tS_tVSGI.js.map +0 -1
- package/dist/admin/PurchaseSingleSignOn--gblfVu6.mjs.map +0 -1
- package/dist/admin/PurchaseSingleSignOn-9SV6-fYs.js.map +0 -1
- package/dist/admin/SSOProviders-JTam8pNP.js.map +0 -1
- package/dist/admin/SSOProviders-f1OPn1AH.mjs.map +0 -1
- package/dist/admin/SelectRoles-9TYXaG64.mjs.map +0 -1
- package/dist/admin/SelectRoles-OEKLwb7S.js.map +0 -1
- package/dist/admin/SingleSignOnPage-ELEF2pqT.mjs +0 -234
- package/dist/admin/SingleSignOnPage-ELEF2pqT.mjs.map +0 -1
- package/dist/admin/SingleSignOnPage-TFMqxPEF.js +0 -259
- package/dist/admin/SingleSignOnPage-TFMqxPEF.js.map +0 -1
- package/dist/admin/Table--gMZz8mZ.js.map +0 -1
- package/dist/admin/Table-PQ0O80QL.mjs.map +0 -1
- package/dist/admin/TokenTypeSelect-QB3M2AO_.js.map +0 -1
- package/dist/admin/TokenTypeSelect-zx8B_1pv.mjs.map +0 -1
- package/dist/admin/UseCasePage-R3vzwRYQ.js.map +0 -1
- package/dist/admin/UseCasePage-khHikw1F.mjs.map +0 -1
- package/dist/admin/admin-DUKhYsmP.mjs +0 -256
- package/dist/admin/admin-DUKhYsmP.mjs.map +0 -1
- package/dist/admin/admin-vlKSOeHB.js.map +0 -1
- package/dist/admin/constants-EH1lNehX.js.map +0 -1
- package/dist/admin/constants-O2S8dPXm.mjs.map +0 -1
- package/dist/admin/index-3MYZ88xc.mjs.map +0 -1
- package/dist/admin/index-Ze-KuF2r.js.map +0 -1
- package/dist/admin/rbac-WZsv1761.js.map +0 -1
- package/dist/admin/rbac-sYT_mXH0.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditPage-JmGISZmG.mjs","sources":["../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/EventsTable.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx","../../admin/src/pages/Settings/pages/Webhooks/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n BaseCheckbox,\n Checkbox,\n Flex,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n Field,\n} from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label aria-hidden>{label}</Field.Label>\n {/* @ts-expect-error – TODO: add colCount & rowCount */}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 6%;\n vertical-align: middle;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n { id: 'app.utils.publish', defaultMessage: 'Publish' },\n { id: 'app.utils.unpublish', defaultMessage: 'Unpublish' },\n ];\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { formatMessage } = useIntl();\n const headers = getHeaders();\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const events = providedEvents || getCEEvents();\n const { value = [], onChange } = useField<string[]>('events');\n\n const inputName = 'events';\n const inputValue = value;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: EventsRowProps['handleSelect'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n\n onChange(inputName, Array.from(set));\n };\n\n const handleSelectAll: EventsRowProps['handleSelectAll'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n\n onChange(inputName, Array.from(set));\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n 'entry.publish',\n 'entry.unpublish',\n ];\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: (name: string, value: boolean) => void;\n handleSelectAll: (name: string, value: boolean) => void;\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: React.ChangeEventHandler<HTMLInputElement> = ({ target: { name } }) => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll(name, valueToSet);\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n onChange={onChangeAll}\n value={areAllCheckboxesSelected}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event} textAlign=\"center\">\n <BaseCheckbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n value={inputValue.includes(event)}\n onValueChange={(value) => handleSelect(event, value)}\n />\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n","import { Events } from './Events';\n\nconst EventTableCE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n </Events.Root>\n );\n};\n\nexport { EventTableCE };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n GridItem,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const { value = [] } = useField<Header[]>('headers');\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((_, index) => {\n return (\n <Grid key={index} gap={4}>\n <GridItem col={6}>\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </GridItem>\n <GridItem col={6}>\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <Flex paddingTop={6} style={{ alignSelf: 'flex-start' }}>\n <IconButton\n borderRadius=\"3rem\"\n width=\"2rem\"\n height=\"2rem\"\n padding=\"0.4rem\"\n alignItems=\"center\"\n justifyContent=\"center\"\n disabled={value.length === 1}\n onClick={() => removeFieldRow('headers', index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Flex>\n </GridItem>\n <GridItem col={12}>\n <TextButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </TextButton>\n </GridItem>\n </Grid>\n );\n })}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n","import { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * TriggerContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TriggerContainerProps extends Pick<StatusProps, 'isPending'> {\n onCancel: () => void;\n response?: {\n statusCode: number;\n message?: string;\n };\n}\n\nconst TriggerContainer = ({ isPending, onCancel, response }: TriggerContainerProps) => {\n const { statusCode, message } = response ?? {};\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid gap={4} style={{ alignItems: 'center' }}>\n <GridItem col={3}>\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </GridItem>\n <GridItem col={3}>\n <Status isPending={isPending} statusCode={statusCode} />\n </GridItem>\n <GridItem col={6}>\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({\n id: 'Settings.webhooks.trigger.cancel',\n defaultMessage: 'cancel',\n })}\n </Typography>\n <Cross fill=\"neutral400\" height=\"1.2rem\" width=\"1.2rem\" />\n </Flex>\n </button>\n </Flex>\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StatusProps {\n isPending: boolean;\n statusCode?: number;\n}\n\nconst Status = ({ isPending, statusCode }: StatusProps) => {\n const { formatMessage } = useIntl();\n\n if (isPending || !statusCode) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Loader height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Check fill=\"success700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Cross fill=\"danger700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Message\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MessageProps {\n statusCode?: number;\n message?: string;\n}\n\nconst Message = ({ statusCode, message }: MessageProps) => {\n const { formatMessage } = useIntl();\n\n if (!statusCode) {\n return null;\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={`25rem`} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\n\nexport { TriggerContainer };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, GridItem, TextInput } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!modified}\n loading={isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n ),\n value: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n ),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport { Modules } from '@strapi/types';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\n\nimport { CreateWebhook, TriggerWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { WebhookForm, WebhookFormProps, WebhookFormValues } from './components/WebhookForm';\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst cleanData = (\n data: WebhookFormValues\n): Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'> => ({\n ...data,\n headers: data.headers.reduce<Modules.WebhookStore.Webhook['headers']>((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/webhooks/:id');\n const id = match?.params.id;\n const isCreating = id === 'create';\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const [isTriggering, setIsTriggering] = React.useState(false);\n const [triggerResponse, setTriggerResponse] = React.useState<TriggerWebhook.Response['data']>();\n\n const { isLoading, webhooks, error, createWebhook, updateWebhook, triggerWebhook } = useWebhooks(\n { id: id! },\n {\n skip: isCreating,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, toggleNotification, formatAPIError]);\n\n const handleTriggerWebhook = async () => {\n try {\n setIsTriggering(true);\n\n const res = await triggerWebhook(id!);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setTriggerResponse(res.data);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setIsTriggering(false);\n }\n };\n\n const handleSubmit: WebhookFormProps['handleSubmit'] = async (data, helpers) => {\n try {\n if (isCreating) {\n const res = await createWebhook(cleanData(data));\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.webhooks.created' }),\n });\n\n navigate(res.data.id, { replace: true });\n } else {\n const res = await updateWebhook({ id: id!, ...cleanData(data) });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const [webhook] = webhooks ?? [];\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <WebhookForm\n data={webhook}\n handleSubmit={handleSubmit}\n triggerWebhook={handleTriggerWebhook}\n isCreating={isCreating}\n isTriggering={isTriggering}\n triggerResponse={triggerResponse}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <Page.Protect permissions={permissions.settings?.webhooks.update}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditPage, EditPage };\n"],"names":["Table","Thead","Tr","Th","value","Tbody","name","Td","DSField","Publish"],"mappings":"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"}
|
|
@@ -9,11 +9,11 @@ const formik = require('formik');
|
|
|
9
9
|
const reactIntl = require('react-intl');
|
|
10
10
|
const reactRouterDom = require('react-router-dom');
|
|
11
11
|
const yup = require('yup');
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const useAdminRoles = require('./useAdminRoles-
|
|
15
|
-
const admin = require('./admin-
|
|
16
|
-
const Permissions = require('./Permissions-
|
|
12
|
+
const index = require('./index-8r8zglVb.js');
|
|
13
|
+
const rbac = require('./rbac-xo8GO653.js');
|
|
14
|
+
const useAdminRoles = require('./useAdminRoles-Y5UQ6Egv.js');
|
|
15
|
+
const admin = require('./admin-sk7xXllW.js');
|
|
16
|
+
const Permissions = require('./Permissions-aRi-vOk-.js');
|
|
17
17
|
|
|
18
18
|
function _interopNamespace(e) {
|
|
19
19
|
if (e && e.__esModule) return e;
|
|
@@ -59,35 +59,51 @@ const RoleForm = ({ disabled, role, values, errors, onChange, onBlur }) => {
|
|
|
59
59
|
) })
|
|
60
60
|
] }),
|
|
61
61
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { gap: 4, children: [
|
|
62
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.
|
|
63
|
-
designSystem.
|
|
62
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
63
|
+
designSystem.Field.Root,
|
|
64
64
|
{
|
|
65
|
-
disabled,
|
|
66
65
|
name: "name",
|
|
67
66
|
error: errors.name && formatMessage({ id: errors.name }),
|
|
68
|
-
label: formatMessage({
|
|
69
|
-
id: "global.name",
|
|
70
|
-
defaultMessage: "Name"
|
|
71
|
-
}),
|
|
72
|
-
onChange,
|
|
73
|
-
onBlur,
|
|
74
67
|
required: true,
|
|
75
|
-
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
70
|
+
id: "global.name",
|
|
71
|
+
defaultMessage: "Name"
|
|
72
|
+
}) }),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
designSystem.TextInput,
|
|
75
|
+
{
|
|
76
|
+
disabled,
|
|
77
|
+
onChange,
|
|
78
|
+
onBlur,
|
|
79
|
+
value: values.name || ""
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
|
|
83
|
+
]
|
|
76
84
|
}
|
|
77
85
|
) }),
|
|
78
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.
|
|
79
|
-
designSystem.
|
|
86
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
87
|
+
designSystem.Field.Root,
|
|
80
88
|
{
|
|
81
|
-
|
|
82
|
-
label: formatMessage({
|
|
83
|
-
id: "global.description",
|
|
84
|
-
defaultMessage: "Description"
|
|
85
|
-
}),
|
|
86
|
-
id: "description",
|
|
89
|
+
name: "description",
|
|
87
90
|
error: errors.name && formatMessage({ id: errors.name }),
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
+
children: [
|
|
92
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
93
|
+
id: "global.description",
|
|
94
|
+
defaultMessage: "Description"
|
|
95
|
+
}) }),
|
|
96
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
+
designSystem.Textarea,
|
|
98
|
+
{
|
|
99
|
+
disabled,
|
|
100
|
+
onChange,
|
|
101
|
+
onBlur,
|
|
102
|
+
value: values.description
|
|
103
|
+
}
|
|
104
|
+
),
|
|
105
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
|
|
106
|
+
]
|
|
91
107
|
}
|
|
92
108
|
) })
|
|
93
109
|
] })
|
|
@@ -216,7 +232,7 @@ const EditPage = () => {
|
|
|
216
232
|
validateOnChange: false,
|
|
217
233
|
children: ({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, children: [
|
|
218
234
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
219
|
-
|
|
235
|
+
index.Layouts.Header,
|
|
220
236
|
{
|
|
221
237
|
primaryAction: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { gap: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
222
238
|
designSystem.Button,
|
|
@@ -242,7 +258,7 @@ const EditPage = () => {
|
|
|
242
258
|
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(index.BackButton, {})
|
|
243
259
|
}
|
|
244
260
|
),
|
|
245
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
261
|
+
/* @__PURE__ */ jsxRuntime.jsx(index.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: [
|
|
246
262
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
247
263
|
RoleForm,
|
|
248
264
|
{
|
|
@@ -278,4 +294,4 @@ const ProtectedEditPage = () => {
|
|
|
278
294
|
|
|
279
295
|
exports.EditPage = EditPage;
|
|
280
296
|
exports.ProtectedEditPage = ProtectedEditPage;
|
|
281
|
-
//# sourceMappingURL=EditPage-
|
|
297
|
+
//# sourceMappingURL=EditPage-LMYuiLOp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditPage-LMYuiLOp.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 Field,\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 <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.name || ''}\n />\n <Field.Error />\n </Field.Root>\n </GridItem>\n <GridItem col={6}>\n <Field.Root\n name=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.description}\n />\n <Field.Error />\n </Field.Root>\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, Flex, Main } from '@strapi/design-system';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\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.id),\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 = useMatch('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\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 <Navigate to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\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: 'danger',\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: 'danger',\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: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n if (isLoadingPermissionsLayout || isRoleLoading || isLoadingPermissions || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\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 <Layouts.Header\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={<BackButton />}\n />\n <Layouts.Content>\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 <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.update\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["useIntl","Box","Flex","jsxs","jsx","Typography","Button","Grid","GridItem","Field","TextInput","Textarea","yup","translatedErrors","useNotification","useMatch","React","useTracking","useAPIErrorHandler","useGetRolePermissionLayoutQuery","useAdminRoles","useGetRolePermissionsQuery","useUpdateRoleMutation","useUpdateRolePermissionsMutation","Navigate","isBaseQueryError","Page","Main","Formik","Layouts","BackButton","Permissions","useTypedSelector"],"mappings":"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"}
|
|
@@ -10,14 +10,14 @@ const pick = require('lodash/pick');
|
|
|
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 rbac = require('./rbac-
|
|
13
|
+
const index = require('./index-8r8zglVb.js');
|
|
14
|
+
const rbac = require('./rbac-xo8GO653.js');
|
|
15
15
|
const useEnterprise = require('./useEnterprise-DUs6BYlP.js');
|
|
16
|
-
const selectors = require('./selectors-
|
|
17
|
-
const admin = require('./admin-
|
|
16
|
+
const selectors = require('./selectors-lQOnkFXz.js');
|
|
17
|
+
const admin = require('./admin-sk7xXllW.js');
|
|
18
18
|
const users = require('./users-R5A0kUOV.js');
|
|
19
|
-
const SelectRoles = require('./SelectRoles-
|
|
20
|
-
const validation = require('./validation-
|
|
19
|
+
const SelectRoles = require('./SelectRoles-uO7YohIC.js');
|
|
20
|
+
const validation = require('./validation-hp8oweyu.js');
|
|
21
21
|
|
|
22
22
|
const _interopDefault = e => e && e.__esModule ? e : { default: e };
|
|
23
23
|
|
|
@@ -63,7 +63,7 @@ const EditPage = () => {
|
|
|
63
63
|
const { toggleNotification } = rbac.useNotification();
|
|
64
64
|
const MagicLink = useEnterprise.useEnterprise(
|
|
65
65
|
SelectRoles.MagicLinkCE,
|
|
66
|
-
async () => (await Promise.resolve().then(() => require('./MagicLinkEE-
|
|
66
|
+
async () => (await Promise.resolve().then(() => require('./MagicLinkEE-5c7HTc8n.js'))).MagicLinkEE
|
|
67
67
|
);
|
|
68
68
|
const {
|
|
69
69
|
_unstableFormatAPIError: formatAPIError,
|
|
@@ -161,7 +161,7 @@ const EditPage = () => {
|
|
|
161
161
|
children: ({ isSubmitting, modified }) => {
|
|
162
162
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
163
163
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
164
|
-
|
|
164
|
+
index.Layouts.Header,
|
|
165
165
|
{
|
|
166
166
|
primaryAction: /* @__PURE__ */ jsxRuntime.jsx(
|
|
167
167
|
designSystem.Button,
|
|
@@ -187,7 +187,7 @@ const EditPage = () => {
|
|
|
187
187
|
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(index.BackButton, {})
|
|
188
188
|
}
|
|
189
189
|
),
|
|
190
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
190
|
+
/* @__PURE__ */ jsxRuntime.jsxs(index.Layouts.Content, { children: [
|
|
191
191
|
user?.registrationToken && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsx(MagicLink, { registrationToken: user.registrationToken }) }),
|
|
192
192
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 7, children: [
|
|
193
193
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -201,7 +201,7 @@ const EditPage = () => {
|
|
|
201
201
|
paddingLeft: 7,
|
|
202
202
|
paddingRight: 7,
|
|
203
203
|
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
|
|
204
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta",
|
|
204
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
|
|
205
205
|
id: "app.components.Users.ModalCreateBody.block-title.details",
|
|
206
206
|
defaultMessage: "Details"
|
|
207
207
|
}) }),
|
|
@@ -232,7 +232,7 @@ const EditPage = () => {
|
|
|
232
232
|
paddingLeft: 7,
|
|
233
233
|
paddingRight: 7,
|
|
234
234
|
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
|
|
235
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta",
|
|
235
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
|
|
236
236
|
id: "global.roles",
|
|
237
237
|
defaultMessage: "User's role"
|
|
238
238
|
}) }),
|
|
@@ -348,4 +348,4 @@ const ProtectedEditPage = () => {
|
|
|
348
348
|
|
|
349
349
|
exports.EditPage = EditPage;
|
|
350
350
|
exports.ProtectedEditPage = ProtectedEditPage;
|
|
351
|
-
//# sourceMappingURL=EditPage-
|
|
351
|
+
//# sourceMappingURL=EditPage-MGQBBDmf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditPage-MGQBBDmf.js","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the use to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\n )}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <GridItem key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </GridItem>\n );\n })\n )}\n </Grid>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles disabled={!canUpdate} />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useIntl","useMatch","useNavigate","useNotification","useEnterprise","MagicLinkCE","useAPIErrorHandler","useTypedSelector","selectAdminPermissions","useRBAC","useUpdateUserMutation","useAdminUsers","React","jsx","Page","pick","id","isBaseQueryError","jsxs","Form","Fragment","Layouts","Button","Check","getDisplayName","BackButton","Box","Flex","Typography","Grid","GridItem","InputRenderer","SelectRoles"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Box, Flex, Typography, Button, Grid, GridItem, TextInput, Textarea, Main
|
|
3
|
+
import { Box, Flex, Typography, Button, Grid, GridItem, Field, TextInput, Textarea, Main } from '@strapi/design-system';
|
|
4
4
|
import { Formik } from 'formik';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { useMatch, Navigate } from 'react-router-dom';
|
|
7
7
|
import * as yup from 'yup';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { u as useAdminRoles } from './useAdminRoles-
|
|
11
|
-
import { i as isBaseQueryError } from './admin-
|
|
12
|
-
import { P as Permissions } from './Permissions-
|
|
8
|
+
import { e as errorsTrads, f as useGetRolePermissionLayoutQuery, g as useGetRolePermissionsQuery, q as useUpdateRoleMutation, i as useUpdateRolePermissionsMutation, b as Layouts, B as BackButton } from './index--VHJr8__.mjs';
|
|
9
|
+
import { b as useTypedSelector, P as Page, u as useNotification, d as useTracking, f as useAPIErrorHandler } from './rbac-OjYDiE2n.mjs';
|
|
10
|
+
import { u as useAdminRoles } from './useAdminRoles-eVMCxlw1.mjs';
|
|
11
|
+
import { i as isBaseQueryError } from './admin-dE-jnuNr.mjs';
|
|
12
|
+
import { P as Permissions } from './Permissions-Ng22nlYS.mjs';
|
|
13
13
|
|
|
14
14
|
const RoleForm = ({ disabled, role, values, errors, onChange, onBlur }) => {
|
|
15
15
|
const { formatMessage } = useIntl();
|
|
@@ -34,35 +34,51 @@ const RoleForm = ({ disabled, role, values, errors, onChange, onBlur }) => {
|
|
|
34
34
|
) })
|
|
35
35
|
] }),
|
|
36
36
|
/* @__PURE__ */ jsxs(Grid, { gap: 4, children: [
|
|
37
|
-
/* @__PURE__ */ jsx(GridItem, { col: 6, children: /* @__PURE__ */
|
|
38
|
-
|
|
37
|
+
/* @__PURE__ */ jsx(GridItem, { col: 6, children: /* @__PURE__ */ jsxs(
|
|
38
|
+
Field.Root,
|
|
39
39
|
{
|
|
40
|
-
disabled,
|
|
41
40
|
name: "name",
|
|
42
41
|
error: errors.name && formatMessage({ id: errors.name }),
|
|
43
|
-
label: formatMessage({
|
|
44
|
-
id: "global.name",
|
|
45
|
-
defaultMessage: "Name"
|
|
46
|
-
}),
|
|
47
|
-
onChange,
|
|
48
|
-
onBlur,
|
|
49
42
|
required: true,
|
|
50
|
-
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
45
|
+
id: "global.name",
|
|
46
|
+
defaultMessage: "Name"
|
|
47
|
+
}) }),
|
|
48
|
+
/* @__PURE__ */ jsx(
|
|
49
|
+
TextInput,
|
|
50
|
+
{
|
|
51
|
+
disabled,
|
|
52
|
+
onChange,
|
|
53
|
+
onBlur,
|
|
54
|
+
value: values.name || ""
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsx(Field.Error, {})
|
|
58
|
+
]
|
|
51
59
|
}
|
|
52
60
|
) }),
|
|
53
|
-
/* @__PURE__ */ jsx(GridItem, { col: 6, children: /* @__PURE__ */
|
|
54
|
-
|
|
61
|
+
/* @__PURE__ */ jsx(GridItem, { col: 6, children: /* @__PURE__ */ jsxs(
|
|
62
|
+
Field.Root,
|
|
55
63
|
{
|
|
56
|
-
|
|
57
|
-
label: formatMessage({
|
|
58
|
-
id: "global.description",
|
|
59
|
-
defaultMessage: "Description"
|
|
60
|
-
}),
|
|
61
|
-
id: "description",
|
|
64
|
+
name: "description",
|
|
62
65
|
error: errors.name && formatMessage({ id: errors.name }),
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
68
|
+
id: "global.description",
|
|
69
|
+
defaultMessage: "Description"
|
|
70
|
+
}) }),
|
|
71
|
+
/* @__PURE__ */ jsx(
|
|
72
|
+
Textarea,
|
|
73
|
+
{
|
|
74
|
+
disabled,
|
|
75
|
+
onChange,
|
|
76
|
+
onBlur,
|
|
77
|
+
value: values.description
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
/* @__PURE__ */ jsx(Field.Error, {})
|
|
81
|
+
]
|
|
66
82
|
}
|
|
67
83
|
) })
|
|
68
84
|
] })
|
|
@@ -191,7 +207,7 @@ const EditPage = () => {
|
|
|
191
207
|
validateOnChange: false,
|
|
192
208
|
children: ({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, children: [
|
|
193
209
|
/* @__PURE__ */ jsx(
|
|
194
|
-
|
|
210
|
+
Layouts.Header,
|
|
195
211
|
{
|
|
196
212
|
primaryAction: /* @__PURE__ */ jsx(Flex, { gap: 2, children: /* @__PURE__ */ jsx(
|
|
197
213
|
Button,
|
|
@@ -217,7 +233,7 @@ const EditPage = () => {
|
|
|
217
233
|
navigationAction: /* @__PURE__ */ jsx(BackButton, {})
|
|
218
234
|
}
|
|
219
235
|
),
|
|
220
|
-
/* @__PURE__ */ jsx(
|
|
236
|
+
/* @__PURE__ */ jsx(Layouts.Content, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 6, children: [
|
|
221
237
|
/* @__PURE__ */ jsx(
|
|
222
238
|
RoleForm,
|
|
223
239
|
{
|
|
@@ -252,4 +268,4 @@ const ProtectedEditPage = () => {
|
|
|
252
268
|
};
|
|
253
269
|
|
|
254
270
|
export { EditPage, ProtectedEditPage };
|
|
255
|
-
//# sourceMappingURL=EditPage-
|
|
271
|
+
//# sourceMappingURL=EditPage-xQSTfVfO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditPage-xQSTfVfO.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 Field,\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 <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.name || ''}\n />\n <Field.Error />\n </Field.Root>\n </GridItem>\n <GridItem col={6}>\n <Field.Root\n name=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.description}\n />\n <Field.Error />\n </Field.Root>\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, Flex, Main } from '@strapi/design-system';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\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.id),\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 = useMatch('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\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 <Navigate to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\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: 'danger',\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: 'danger',\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: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n if (isLoadingPermissionsLayout || isRoleLoading || isLoadingPermissions || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\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 <Layouts.Header\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={<BackButton />}\n />\n <Layouts.Content>\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 <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.update\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["translatedErrors"],"mappings":"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"}
|