@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage-TFMqxPEF.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../admin/src/hooks/useRBAC';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required.id),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canRead: canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\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 toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Page.Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["yup","translatedErrors","useIntl","useTypedSelector","useNotification","useAPIErrorHandler","useGetProviderOptionsQuery","useUpdateProviderOptionsMutation","useRBAC","useAdminRoles","isBaseQueryError","Layout","jsx","Page","Formik","jsxs","Form","HeaderLayout","Button","Check","ContentLayout","Flex","Typography","Grid","GridItem","ToggleInput","Select","Option","MultiSelect","MultiSelectOption"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Table--gMZz8mZ.js","sources":["../../admin/src/components/RelativeTime.tsx","../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n","import * as React from 'react';\n\nimport { Box, Flex, IconButton, Typography, useCollator } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\n\nimport type { Data } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps\n extends Pick<TableImpl.Props<SanitizedTransferToken | ApiToken>, 'headers' | 'isLoading'> {\n onConfirmDelete: (id: Data.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n}\n\nconst Table = ({\n permissions,\n headers = [],\n isLoading = false,\n tokens = [],\n onConfirmDelete,\n tokenType,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Data.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n ))}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkStyled\n forwardedAs={NavLink}\n to={tokenId.toString()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n >\n {children}\n </LinkStyled>\n );\n};\n\nconst LinkStyled = styled(Link)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const handleClickDelete = () => {\n setShowConfirmDialog(false);\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Box paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <IconButton\n onClick={() => {\n setShowConfirmDialog(true);\n }}\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n borderWidth={0}\n icon={<Trash />}\n />\n <ConfirmDialog\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleClickDelete}\n isOpen={showConfirmDialog}\n />\n </Box>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil width={12} />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["React","useIntl","intervalToDuration","isPast","jsx","useQueryParams","useNavigate","useTracking","useCollator","TableImpl","jsxs","Typography","Flex","NavLink","styled","Link","Box","IconButton","Trash","ConfirmDialog","Pencil"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,YAAmC,CAAC,OAAA,EAAS,UAAU,MAAQ,EAAA,OAAA,EAAS,WAAW,SAAS,CAAA,CAAA;AA2BlG,MAAM,eAAeA,gBAAM,CAAA,UAAA;AAAA,EACzB,CAAC,EAAE,SAAW,EAAA,eAAA,GAAkB,EAAI,EAAA,GAAG,SAAU,EAAA,EAAG,YAAiB,KAAA;AACnE,IAAA,MAAM,EAAE,kBAAA,EAAoB,UAAY,EAAA,UAAA,KAAeC,iBAAQ,EAAA,CAAA;AAK/D,IAAA,MAAM,WAAWC,0BAAmB,CAAA;AAAA,MAClC,KAAO,EAAA,SAAA;AAAA,MACP,GAAA,EAAK,KAAK,GAAI,EAAA;AAAA;AAAA,KAEf,CAAA,CAAA;AAED,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,IAAK,CAAA,CAAC,YAAiB,KAAA;AAC5C,MAAO,OAAA,QAAA,CAAS,YAAY,CAAI,GAAA,CAAA,IAAK,OAAO,IAAK,CAAA,QAAQ,CAAE,CAAA,QAAA,CAAS,YAAY,CAAA,CAAA;AAAA,KACjF,CAAA,CAAA;AAED,IAAM,MAAA,YAAA,GAAeC,eAAO,SAAS,CAAA,GAAI,CAAC,QAAS,CAAA,IAAI,CAAI,GAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAGxE,IAAA,MAAM,iBAAiB,eAAgB,CAAA,IAAA;AAAA,MACrC,CAAC,MAAW,KAAA,QAAA,CAAS,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,SAAA;AAAA,KAC7C,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,cAChB,GAAA,cAAA,CAAe,IACf,GAAA,kBAAA,CAAmB,cAAc,IAAM,EAAA,EAAE,OAAS,EAAA,MAAA,EAAQ,CAAA,CAAA;AAE9D,IACE,uBAAAC,cAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,QAAA,EAAU,UAAU,WAAY,EAAA;AAAA,QAChC,IAAK,EAAA,MAAA;AAAA,QACL,KAAA,EAAO,GAAG,UAAW,CAAA,SAAS,CAAC,CAAI,CAAA,EAAA,UAAA,CAAW,SAAS,CAAC,CAAA,CAAA;AAAA,QACvD,GAAG,SAAA;AAAA,QAEH,QAAA,EAAA,WAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AACF,CAAA;;ACrCA,MAAM,QAAQ,CAAC;AAAA,EACb,WAAA;AAAA,EACA,UAAU,EAAC;AAAA,EACX,SAAY,GAAA,KAAA;AAAA,EACZ,SAAS,EAAC;AAAA,EACV,eAAA;AAAA,EACA,SAAA;AACF,CAAkB,KAAA;AAChB,EAAA,MAAM,CAAC,EAAE,KAAM,EAAC,IAAIC,oBAAkC,EAAA,CAAA;AACtD,EAAA,MAAM,EAAE,aAAA,EAAe,MAAO,EAAA,GAAIJ,iBAAQ,EAAA,CAAA;AAC1C,EAAA,MAAM,GAAG,SAAS,CAAA,GAAI,SAAS,KAAM,CAAA,IAAA,GAAO,KAAM,CAAA,IAAA,CAAK,KAAM,CAAA,GAAG,CAAI,GAAA,CAAC,QAAW,KAAK,CAAA,CAAA;AACrF,EAAA,MAAM,WAAWK,0BAAY,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,gBAAY,EAAA,CAAA;AACnC,EAAM,MAAA,SAAA,GAAYC,yBAAY,MAAM,CAAA,CAAA;AAEpC,EAAM,MAAA,YAAA,GAAe,CAAC,GAAG,MAAM,EAAE,IAAK,CAAA,CAAC,GAAG,CAAM,KAAA;AAC9C,IAAA,OAAO,SAAc,KAAA,MAAA,GACjB,SAAU,CAAA,OAAA,CAAQ,EAAE,IAAM,EAAA,CAAA,CAAE,IAAI,CAAA,GAChC,SAAU,CAAA,OAAA,CAAQ,CAAE,CAAA,IAAA,EAAM,EAAE,IAAI,CAAA,CAAA;AAAA,GACrC,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,SAAA,EAAW,SAAW,EAAA,OAAA,EAAY,GAAA,WAAA,CAAA;AAE1C,EAAM,MAAA,cAAA,GAAiB,CAAC,EAAA,KAAgB,MAAM;AAC5C,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,UAAA,CAAW,uBAAyB,EAAA;AAAA,QAClC,SAAA;AAAA,OACD,CAAA,CAAA;AACD,MAAS,QAAA,CAAA,EAAA,CAAG,UAAU,CAAA,CAAA;AAAA,KACxB;AAAA,GACF,CAAA;AAEA,EACE,uBAAAJ,cAAA,CAACK,WAAU,CAAA,IAAA,EAAV,EAAe,OAAA,EAAkB,IAAM,EAAA,YAAA,EAAc,SACpD,EAAA,QAAA,kBAAAC,eAAA,CAACD,WAAU,CAAA,OAAA,EAAV,EACC,QAAA,EAAA;AAAA,oBAAAL,cAAA,CAACK,YAAU,IAAV,EAAA,EACE,QAAQ,EAAA,OAAA,CAAA,GAAA,CAAI,CAAC,MACZ,qBAAAL,cAAA,CAACK,WAAU,CAAA,UAAA,EAAV,EAAwC,GAAG,MAAA,EAAA,EAAjB,MAAO,CAAA,IAAkB,CACrD,CACH,EAAA,CAAA;AAAA,oBACAL,cAAA,CAACK,WAAU,CAAA,KAAA,EAAV,EAAgB,CAAA;AAAA,oBACjBL,cAAA,CAACK,WAAU,CAAA,OAAA,EAAV,EAAkB,CAAA;AAAA,mCAClBA,WAAU,CAAA,IAAA,EAAV,EACE,QAAA,EAAA,YAAA,CAAa,IAAI,CAAC,KAAA,qBAChBC,eAAA,CAAAD,WAAA,CAAU,KAAV,EAA6B,OAAA,EAAS,cAAe,CAAA,KAAA,CAAM,EAAE,CAC5D,EAAA,QAAA,EAAA;AAAA,sBAAAL,cAAA,CAACK,YAAU,IAAV,EAAA,EAAe,UAAU,CAAG,EAAA,GAAA,GAAM,EAAE,CACnC,GAAA,CAAA,EAAA,QAAA,kBAAAL,cAAA,CAACO,uBAAW,EAAA,EAAA,SAAA,EAAU,cAAa,UAAW,EAAA,MAAA,EAAO,UAAQ,IAC1D,EAAA,QAAA,EAAA,KAAA,CAAM,MACT,CACF,EAAA,CAAA;AAAA,qCACCF,WAAU,CAAA,IAAA,EAAV,EAAe,QAAA,EAAU,GAAG,GAAM,GAAA,EAAE,CACnC,GAAA,CAAA,EAAA,QAAA,kBAAAL,cAAA,CAACO,2BAAW,SAAU,EAAA,YAAA,EAAa,UAAQ,IACxC,EAAA,QAAA,EAAA,KAAA,CAAM,aACT,CACF,EAAA,CAAA;AAAA,qCACCF,WAAU,CAAA,IAAA,EAAV,EACC,QAAA,kBAAAL,cAAA,CAACO,2BAAW,SAAU,EAAA,YAAA,EAEpB,QAAC,kBAAAP,cAAA,CAAA,YAAA,EAAA,EAAa,WAAW,IAAI,IAAA,CAAK,MAAM,SAAS,CAAA,EAAG,GACtD,CACF,EAAA,CAAA;AAAA,sBACAA,cAAA,CAACK,YAAU,IAAV,EAAA,EACE,gBAAM,UACL,oBAAAL,cAAA,CAACO,uBAAW,EAAA,EAAA,SAAA,EAAU,YACpB,EAAA,QAAA,kBAAAP,cAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,SAAW,EAAA,IAAI,IAAK,CAAA,KAAA,CAAM,UAAU,CAAA;AAAA,UACpC,eAAiB,EAAA;AAAA,YACf;AAAA,cACE,IAAM,EAAA,OAAA;AAAA,cACN,SAAW,EAAA,CAAA;AAAA,cACX,MAAM,aAAc,CAAA;AAAA,gBAClB,EAAI,EAAA,6BAAA;AAAA,gBACJ,cAAgB,EAAA,WAAA;AAAA,eACjB,CAAA;AAAA,aACH;AAAA,WACF;AAAA,SAAA;AAAA,SAEJ,CAEJ,EAAA,CAAA;AAAA,MACC,SAAA,IAAa,OAAW,IAAA,SAAA,mBACtBA,cAAA,CAAAK,WAAA,CAAU,MAAV,EACC,QAAA,kBAAAC,eAAA,CAACE,iBAAK,EAAA,EAAA,cAAA,EAAe,KAClB,EAAA,QAAA,EAAA;AAAA,QAAA,SAAA,mCAAc,YAAa,EAAA,EAAA,SAAA,EAAW,MAAM,IAAM,EAAA,OAAA,EAAS,MAAM,EAAI,EAAA,CAAA;AAAA,QACrE,SACC,oBAAAR,cAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,WAAW,KAAM,CAAA,IAAA;AAAA,YACjB,aAAe,EAAA,MAAM,eAAkB,GAAA,KAAA,CAAM,EAAE,CAAA;AAAA,YAC/C,SAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA,EAEJ,GACF,CACE,GAAA,IAAA;AAAA,KAjDc,EAAA,EAAA,KAAA,CAAM,EAkD1B,CACD,CACH,EAAA,CAAA;AAAA,GAAA,EACF,CACF,EAAA,CAAA,CAAA;AAEJ,EAAA;AAMA,MAAM,YAAe,GAAA;AAAA,EACnB,IAAM,EAAA;AAAA,IACJ,EAAI,EAAA,0BAAA;AAAA,IACJ,cAAgB,EAAA,eAAA;AAAA,GAClB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,EAAI,EAAA,0BAAA;AAAA,IACJ,cAAgB,EAAA,eAAA;AAAA,GAClB;AACF,CAAA,CAAA;AASA,MAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAa,GAAA,MAAA;AAAA,EACb,QAAA;AACF,CAA0B,KAAA;AACxB,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIH,iBAAQ,EAAA,CAAA;AAElC,EACE,uBAAAG,cAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAAS,sBAAA;AAAA,MACb,EAAA,EAAI,QAAQ,QAAS,EAAA;AAAA,MACrB,KAAA,EAAO,cAAc,YAAa,CAAA,UAAU,GAAG,EAAE,MAAA,EAAQ,WAAW,CAAA;AAAA,MAEnE,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,CAAA,CAAA;AAEA,MAAM,UAAA,GAAaC,wBAAOC,OAAI,CAAA,CAAA;AAAA;AAAA;AAAA,YAAA,EAGhB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,OAAO,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAQpC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,OAAO,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAUtD,MAAM,eAAe,CAAC,EAAE,SAAW,EAAA,aAAA,EAAe,WAAmC,KAAA;AACnF,EAAM,MAAA,EAAE,aAAc,EAAA,GAAId,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIM,gBAAY,EAAA,CAAA;AACnC,EAAA,MAAM,CAAC,iBAAmB,EAAA,oBAAoB,CAAI,GAAAP,gBAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AACtE,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,oBAAA,CAAqB,KAAK,CAAA,CAAA;AAC1B,IAAA,UAAA,CAAW,iBAAmB,EAAA;AAAA,MAC5B,SAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAc,aAAA,EAAA,CAAA;AAAA,GAChB,CAAA;AAEA,EACE,uBAAAU,eAAA,CAACM,oBAAI,WAAa,EAAA,CAAA,EAAG,SAAS,CAAC,CAAA,KAAM,CAAE,CAAA,eAAA,EACrC,EAAA,QAAA,EAAA;AAAA,oBAAAZ,cAAA;AAAA,MAACa,uBAAA;AAAA,MAAA;AAAA,QACC,SAAS,MAAM;AACb,UAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AAAA,SAC3B;AAAA,QACA,KAAO,EAAA,aAAA;AAAA,UACL;AAAA,YACE,EAAI,EAAA,sBAAA;AAAA,YACJ,cAAgB,EAAA,iBAAA;AAAA,WAClB;AAAA,UACA,EAAE,MAAA,EAAQ,CAAG,EAAA,SAAS,CAAG,CAAA,EAAA;AAAA,SAC3B;AAAA,QACA,IAAK,EAAA,QAAA;AAAA,QACL,WAAa,EAAA,CAAA;AAAA,QACb,IAAA,iCAAOC,WAAM,EAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KACf;AAAA,oBACAd,cAAA;AAAA,MAACe,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,MAAM,oBAAA,CAAqB,KAAK,CAAA;AAAA,QACzC,SAAW,EAAA,iBAAA;AAAA,QACX,MAAQ,EAAA,iBAAA;AAAA,OAAA;AAAA,KACV;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAOA,MAAM,YAAe,GAAA,CAAC,EAAE,SAAA,EAAW,SAA2B,KAAA;AAC5D,EACE,uBAAAf,cAAA,CAAC,iBAAc,SAAsB,EAAA,OAAA,EACnC,yCAACgB,YAAO,EAAA,EAAA,KAAA,EAAO,IAAI,CACrB,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Table-PQ0O80QL.mjs","sources":["../../admin/src/components/RelativeTime.tsx","../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n","import * as React from 'react';\n\nimport { Box, Flex, IconButton, Typography, useCollator } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\n\nimport type { Data } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps\n extends Pick<TableImpl.Props<SanitizedTransferToken | ApiToken>, 'headers' | 'isLoading'> {\n onConfirmDelete: (id: Data.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n}\n\nconst Table = ({\n permissions,\n headers = [],\n isLoading = false,\n tokens = [],\n onConfirmDelete,\n tokenType,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Data.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n ))}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkStyled\n forwardedAs={NavLink}\n to={tokenId.toString()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n >\n {children}\n </LinkStyled>\n );\n};\n\nconst LinkStyled = styled(Link)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const handleClickDelete = () => {\n setShowConfirmDialog(false);\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Box paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <IconButton\n onClick={() => {\n setShowConfirmDialog(true);\n }}\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n borderWidth={0}\n icon={<Trash />}\n />\n <ConfirmDialog\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleClickDelete}\n isOpen={showConfirmDialog}\n />\n </Box>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil width={12} />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["TableImpl"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTypeSelect-QB3M2AO_.js","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/utils/locales.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n isOpen={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<Refresh />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nimport { getDateFnsLocaleName } from '../../../../../../utils/locales';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n locale: locales[getDateFnsLocaleName(language)],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["useIntl","React","useNotification","useAPIErrorHandler","useRegenerateTokenMutation","jsxs","Fragment","jsx","Button","Refresh","ConfirmDialog","HeaderLayout","Flex","Check","BackButton","useTracking","useClipboard","token","ContentBox","IconButton","Duplicate","Key","locales","format","addDays","SingleSelect","value","SingleSelectOption","Typography","Textarea","TextInput","label"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTypeSelect-zx8B_1pv.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/utils/locales.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n isOpen={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<Refresh />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nimport { getDateFnsLocaleName } from '../../../../../../utils/locales';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n locale: locales[getDateFnsLocaleName(language)],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["token","value","label"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UseCasePage-R3vzwRYQ.js","sources":["../../admin/src/pages/UseCasePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Main,\n Option,\n Select,\n TextButton,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { parse } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { Logo } from '../components/UnauthenticatedLogo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { LayoutContent, UnauthenticatedLayout } from '../layouts/UnauthenticatedLayout';\n\nexport const options = [\n {\n intlLabel: {\n id: 'Usecase.front-end',\n defaultMessage: 'Front-end developer',\n },\n value: 'front_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.back-end',\n defaultMessage: 'Back-end developer',\n },\n value: 'back_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.full-stack',\n defaultMessage: 'Full-stack developer',\n },\n value: 'full_stack_developer',\n },\n {\n intlLabel: {\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n },\n value: 'content_manager',\n },\n {\n intlLabel: {\n id: 'Usecase.content-creator',\n defaultMessage: 'Content Creator',\n },\n value: 'content_creator',\n },\n {\n intlLabel: {\n id: 'Usecase.other',\n defaultMessage: 'Other',\n },\n value: 'other',\n },\n];\n\nconst TypographyCenter = styled(Typography)`\n text-align: center;\n`;\n\nconst UseCasePage = () => {\n const { toggleNotification } = useNotification();\n const location = useLocation();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const [role, setRole] = React.useState<string | number | null>(null);\n const [otherRole, setOtherRole] = React.useState('');\n\n const { firstname, email } = useAuth('UseCasePage', (state) => state.user) ?? {};\n const { hasAdmin } = parse(location.search, { ignoreQueryPrefix: true });\n const isOther = role === 'other';\n\n const handleSubmit = async (event: React.FormEvent, skipPersona: boolean) => {\n event.preventDefault();\n try {\n await fetch('https://analytics.strapi.io/register', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n email,\n username: firstname,\n firstAdmin: Boolean(!hasAdmin),\n persona: {\n role: skipPersona ? undefined : role,\n otherRole: skipPersona ? undefined : otherRole,\n },\n }),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Usecase.notification.success.project-created',\n defaultMessage: 'Project has been successfully created',\n }),\n });\n navigate('/');\n } catch (err) {\n // Silent\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main labelledBy=\"usecase-title\">\n <LayoutContent>\n <form onSubmit={(e) => handleSubmit(e, false)}>\n <Flex direction=\"column\" paddingBottom={7}>\n <Logo />\n <Box paddingTop={6} paddingBottom={1} width={`${250 / 16}rem`}>\n <TypographyCenter variant=\"alpha\" as=\"h1\" id=\"usecase-title\">\n {formatMessage({\n id: 'Usecase.title',\n defaultMessage: 'Tell us a bit more about yourself',\n })}\n </TypographyCenter>\n </Box>\n </Flex>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Select\n id=\"usecase\"\n data-testid=\"usecase\"\n label={formatMessage({\n id: 'Usecase.input.work-type',\n defaultMessage: 'What type of work do you do?',\n })}\n // onClear={() => setRole(null)}\n // clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onChange={(value) => setRole(value)}\n value={role}\n >\n {options.map(({ intlLabel, value }) => (\n <Option key={value} value={value}>\n {formatMessage(intlLabel)}\n </Option>\n ))}\n </Select>\n {isOther && (\n <TextInput\n name=\"other\"\n label={formatMessage({ id: 'Usecase.other', defaultMessage: 'Other' })}\n value={otherRole}\n onChange={(e) => setOtherRole(e.target.value)}\n data-testid=\"other\"\n />\n )}\n <Button type=\"submit\" size=\"L\" fullWidth disabled={!role}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <TextButton onClick={(event) => handleSubmit(event, true)}>\n {formatMessage({\n id: 'Usecase.button.skip',\n defaultMessage: 'Skip this question',\n })}\n </TextButton>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst PrivateUseCasePage = () => {\n return (\n <PrivateRoute>\n <UseCasePage />\n </PrivateRoute>\n );\n};\n\nexport { PrivateUseCasePage, UseCasePage };\n"],"names":["styled","Typography","useNotification","useLocation","useNavigate","useIntl","React","useAuth","parse","jsx","UnauthenticatedLayout","jsxs","Main","LayoutContent","Flex","Logo","Box","Select","Option","TextInput","Button","TextButton","PrivateRoute"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UseCasePage-khHikw1F.mjs","sources":["../../admin/src/pages/UseCasePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Main,\n Option,\n Select,\n TextButton,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { parse } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { Logo } from '../components/UnauthenticatedLogo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { LayoutContent, UnauthenticatedLayout } from '../layouts/UnauthenticatedLayout';\n\nexport const options = [\n {\n intlLabel: {\n id: 'Usecase.front-end',\n defaultMessage: 'Front-end developer',\n },\n value: 'front_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.back-end',\n defaultMessage: 'Back-end developer',\n },\n value: 'back_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.full-stack',\n defaultMessage: 'Full-stack developer',\n },\n value: 'full_stack_developer',\n },\n {\n intlLabel: {\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n },\n value: 'content_manager',\n },\n {\n intlLabel: {\n id: 'Usecase.content-creator',\n defaultMessage: 'Content Creator',\n },\n value: 'content_creator',\n },\n {\n intlLabel: {\n id: 'Usecase.other',\n defaultMessage: 'Other',\n },\n value: 'other',\n },\n];\n\nconst TypographyCenter = styled(Typography)`\n text-align: center;\n`;\n\nconst UseCasePage = () => {\n const { toggleNotification } = useNotification();\n const location = useLocation();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const [role, setRole] = React.useState<string | number | null>(null);\n const [otherRole, setOtherRole] = React.useState('');\n\n const { firstname, email } = useAuth('UseCasePage', (state) => state.user) ?? {};\n const { hasAdmin } = parse(location.search, { ignoreQueryPrefix: true });\n const isOther = role === 'other';\n\n const handleSubmit = async (event: React.FormEvent, skipPersona: boolean) => {\n event.preventDefault();\n try {\n await fetch('https://analytics.strapi.io/register', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n email,\n username: firstname,\n firstAdmin: Boolean(!hasAdmin),\n persona: {\n role: skipPersona ? undefined : role,\n otherRole: skipPersona ? undefined : otherRole,\n },\n }),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Usecase.notification.success.project-created',\n defaultMessage: 'Project has been successfully created',\n }),\n });\n navigate('/');\n } catch (err) {\n // Silent\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main labelledBy=\"usecase-title\">\n <LayoutContent>\n <form onSubmit={(e) => handleSubmit(e, false)}>\n <Flex direction=\"column\" paddingBottom={7}>\n <Logo />\n <Box paddingTop={6} paddingBottom={1} width={`${250 / 16}rem`}>\n <TypographyCenter variant=\"alpha\" as=\"h1\" id=\"usecase-title\">\n {formatMessage({\n id: 'Usecase.title',\n defaultMessage: 'Tell us a bit more about yourself',\n })}\n </TypographyCenter>\n </Box>\n </Flex>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Select\n id=\"usecase\"\n data-testid=\"usecase\"\n label={formatMessage({\n id: 'Usecase.input.work-type',\n defaultMessage: 'What type of work do you do?',\n })}\n // onClear={() => setRole(null)}\n // clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onChange={(value) => setRole(value)}\n value={role}\n >\n {options.map(({ intlLabel, value }) => (\n <Option key={value} value={value}>\n {formatMessage(intlLabel)}\n </Option>\n ))}\n </Select>\n {isOther && (\n <TextInput\n name=\"other\"\n label={formatMessage({ id: 'Usecase.other', defaultMessage: 'Other' })}\n value={otherRole}\n onChange={(e) => setOtherRole(e.target.value)}\n data-testid=\"other\"\n />\n )}\n <Button type=\"submit\" size=\"L\" fullWidth disabled={!role}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <TextButton onClick={(event) => handleSubmit(event, true)}>\n {formatMessage({\n id: 'Usecase.button.skip',\n defaultMessage: 'Skip this question',\n })}\n </TextButton>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst PrivateUseCasePage = () => {\n return (\n <PrivateRoute>\n <UseCasePage />\n </PrivateRoute>\n );\n};\n\nexport { PrivateUseCasePage, UseCasePage };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
import { createApi } from '@reduxjs/toolkit/query/react';
|
|
2
|
-
import axios, { isAxiosError } from 'axios';
|
|
3
|
-
import qs__default from 'qs';
|
|
4
|
-
|
|
5
|
-
const STORAGE_KEYS = {
|
|
6
|
-
TOKEN: "jwtToken",
|
|
7
|
-
USER: "userInfo"
|
|
8
|
-
};
|
|
9
|
-
const fetchClient = () => {
|
|
10
|
-
const instance2 = axios.create({
|
|
11
|
-
headers: {
|
|
12
|
-
Accept: "application/json",
|
|
13
|
-
"Content-Type": "application/json"
|
|
14
|
-
},
|
|
15
|
-
paramsSerializer: (params) => {
|
|
16
|
-
return qs__default.stringify(params, { encode: false });
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
instance2.interceptors.request.use(
|
|
20
|
-
async (config) => {
|
|
21
|
-
config.headers.Authorization = `Bearer ${getToken()}`;
|
|
22
|
-
return config;
|
|
23
|
-
},
|
|
24
|
-
(error) => Promise.reject(error)
|
|
25
|
-
);
|
|
26
|
-
instance2.interceptors.response.use(
|
|
27
|
-
(response) => response,
|
|
28
|
-
(error) => {
|
|
29
|
-
if (error?.response?.status === 401) {
|
|
30
|
-
clearItem(STORAGE_KEYS.TOKEN);
|
|
31
|
-
clearItem(STORAGE_KEYS.USER);
|
|
32
|
-
window.location.reload();
|
|
33
|
-
}
|
|
34
|
-
throw error;
|
|
35
|
-
}
|
|
36
|
-
);
|
|
37
|
-
return instance2;
|
|
38
|
-
};
|
|
39
|
-
const clearItem = (key) => {
|
|
40
|
-
if (window.localStorage.getItem(key)) {
|
|
41
|
-
return window.localStorage.removeItem(key);
|
|
42
|
-
}
|
|
43
|
-
if (window.sessionStorage.getItem(key)) {
|
|
44
|
-
return window.sessionStorage.removeItem(key);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const getToken = () => JSON.parse(
|
|
48
|
-
localStorage.getItem(STORAGE_KEYS.TOKEN) ?? sessionStorage.getItem(STORAGE_KEYS.TOKEN) ?? '""'
|
|
49
|
-
);
|
|
50
|
-
const instance = fetchClient();
|
|
51
|
-
const addPrependingSlash = (url) => url.charAt(0) !== "/" ? `/${url}` : url;
|
|
52
|
-
const hasProtocol = (url) => new RegExp("^(?:[a-z+]+:)?//", "i").test(url);
|
|
53
|
-
const normalizeUrl = (url) => hasProtocol(url) ? url : addPrependingSlash(url);
|
|
54
|
-
const getFetchClient = (defaultOptions = {}) => {
|
|
55
|
-
instance.defaults.baseURL = window.strapi.backendURL;
|
|
56
|
-
return {
|
|
57
|
-
get: (url, config) => instance.get(normalizeUrl(url), {
|
|
58
|
-
...defaultOptions,
|
|
59
|
-
...config
|
|
60
|
-
}),
|
|
61
|
-
put: (url, data, config) => instance.put(normalizeUrl(url), data, { ...defaultOptions, ...config }),
|
|
62
|
-
post: (url, data, config) => instance.post(normalizeUrl(url), data, { ...defaultOptions, ...config }),
|
|
63
|
-
del: (url, config) => instance.delete(normalizeUrl(url), { ...defaultOptions, ...config })
|
|
64
|
-
};
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
const axiosBaseQuery = () => async (query, { signal }) => {
|
|
68
|
-
try {
|
|
69
|
-
const { get, post, del, put } = getFetchClient();
|
|
70
|
-
if (typeof query === "string") {
|
|
71
|
-
const result = await get(query, { signal });
|
|
72
|
-
return { data: result.data };
|
|
73
|
-
} else {
|
|
74
|
-
const { url, method = "GET", data, config } = query;
|
|
75
|
-
if (method === "POST") {
|
|
76
|
-
const result2 = await post(url, data, { ...config, signal });
|
|
77
|
-
return { data: result2.data };
|
|
78
|
-
}
|
|
79
|
-
if (method === "DELETE") {
|
|
80
|
-
const result2 = await del(url, { ...config, signal });
|
|
81
|
-
return { data: result2.data };
|
|
82
|
-
}
|
|
83
|
-
if (method === "PUT") {
|
|
84
|
-
const result2 = await put(url, data, { ...config, signal });
|
|
85
|
-
return { data: result2.data };
|
|
86
|
-
}
|
|
87
|
-
const result = await get(url, { ...config, signal });
|
|
88
|
-
return { data: result.data };
|
|
89
|
-
}
|
|
90
|
-
} catch (err) {
|
|
91
|
-
if (isAxiosError(err)) {
|
|
92
|
-
if (typeof err.response?.data === "object" && err.response?.data !== null && "error" in err.response?.data) {
|
|
93
|
-
return { data: void 0, error: err.response?.data.error };
|
|
94
|
-
} else {
|
|
95
|
-
return {
|
|
96
|
-
data: void 0,
|
|
97
|
-
error: {
|
|
98
|
-
name: "UnknownError",
|
|
99
|
-
message: "There was an unknown error response from the API",
|
|
100
|
-
details: err.response?.data,
|
|
101
|
-
status: err.response?.status
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const error = err;
|
|
107
|
-
return {
|
|
108
|
-
data: void 0,
|
|
109
|
-
error: {
|
|
110
|
-
name: error.name,
|
|
111
|
-
message: error.message,
|
|
112
|
-
stack: error.stack
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
const isBaseQueryError = (error) => {
|
|
118
|
-
return error.name !== void 0;
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
const adminApi = createApi({
|
|
122
|
-
reducerPath: "adminApi",
|
|
123
|
-
baseQuery: axiosBaseQuery(),
|
|
124
|
-
tagTypes: [
|
|
125
|
-
"ApiToken",
|
|
126
|
-
"LicenseLimits",
|
|
127
|
-
"Me",
|
|
128
|
-
"ProjectSettings",
|
|
129
|
-
"ProvidersOptions",
|
|
130
|
-
"Role",
|
|
131
|
-
"RolePermissions",
|
|
132
|
-
"TransferToken",
|
|
133
|
-
"User",
|
|
134
|
-
"Webhook"
|
|
135
|
-
],
|
|
136
|
-
endpoints: (builder) => ({
|
|
137
|
-
/**
|
|
138
|
-
* This is here because it's shared between the transfer-token routes & the api-tokens.
|
|
139
|
-
*/
|
|
140
|
-
regenerateToken: builder.mutation({
|
|
141
|
-
query: (url) => ({
|
|
142
|
-
method: "POST",
|
|
143
|
-
url: `${url}/regenerate`
|
|
144
|
-
}),
|
|
145
|
-
transformResponse: (response) => response.data
|
|
146
|
-
})
|
|
147
|
-
})
|
|
148
|
-
});
|
|
149
|
-
const { useRegenerateTokenMutation } = adminApi;
|
|
150
|
-
|
|
151
|
-
const prefixFileUrlWithBackendUrl = (fileURL) => {
|
|
152
|
-
return !!fileURL && fileURL.startsWith("/") ? `${window.strapi.backendURL}${fileURL}` : fileURL;
|
|
153
|
-
};
|
|
154
|
-
const createAbsoluteUrl = (url) => {
|
|
155
|
-
if (!url) {
|
|
156
|
-
return window.location.origin;
|
|
157
|
-
}
|
|
158
|
-
if (url.startsWith("/")) {
|
|
159
|
-
return new URL(url, window.location.origin).toString();
|
|
160
|
-
} else {
|
|
161
|
-
return url;
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
const admin = adminApi.injectEndpoints({
|
|
166
|
-
endpoints: (builder) => ({
|
|
167
|
-
init: builder.query({
|
|
168
|
-
query: () => ({
|
|
169
|
-
url: "/admin/init",
|
|
170
|
-
method: "GET"
|
|
171
|
-
}),
|
|
172
|
-
transformResponse(res) {
|
|
173
|
-
return res.data;
|
|
174
|
-
}
|
|
175
|
-
}),
|
|
176
|
-
information: builder.query({
|
|
177
|
-
query: () => ({
|
|
178
|
-
url: "/admin/information",
|
|
179
|
-
method: "GET"
|
|
180
|
-
}),
|
|
181
|
-
transformResponse(res) {
|
|
182
|
-
return res.data;
|
|
183
|
-
}
|
|
184
|
-
}),
|
|
185
|
-
telemetryProperties: builder.query({
|
|
186
|
-
query: () => ({
|
|
187
|
-
url: "/admin/telemetry-properties",
|
|
188
|
-
method: "GET",
|
|
189
|
-
config: {
|
|
190
|
-
validateStatus: (status) => status < 500
|
|
191
|
-
}
|
|
192
|
-
}),
|
|
193
|
-
transformResponse(res) {
|
|
194
|
-
return res.data;
|
|
195
|
-
}
|
|
196
|
-
}),
|
|
197
|
-
projectSettings: builder.query({
|
|
198
|
-
query: () => ({
|
|
199
|
-
url: "/admin/project-settings",
|
|
200
|
-
method: "GET"
|
|
201
|
-
}),
|
|
202
|
-
providesTags: ["ProjectSettings"],
|
|
203
|
-
transformResponse(data) {
|
|
204
|
-
return {
|
|
205
|
-
authLogo: data.authLogo ? {
|
|
206
|
-
name: data.authLogo.name,
|
|
207
|
-
url: prefixFileUrlWithBackendUrl(data.authLogo.url)
|
|
208
|
-
} : void 0,
|
|
209
|
-
menuLogo: data.menuLogo ? {
|
|
210
|
-
name: data.menuLogo.name,
|
|
211
|
-
url: prefixFileUrlWithBackendUrl(data.menuLogo.url)
|
|
212
|
-
} : void 0
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
}),
|
|
216
|
-
updateProjectSettings: builder.mutation({
|
|
217
|
-
query: (data) => ({
|
|
218
|
-
url: "/admin/project-settings",
|
|
219
|
-
method: "POST",
|
|
220
|
-
data,
|
|
221
|
-
config: {
|
|
222
|
-
headers: {
|
|
223
|
-
"Content-Type": "multipart/form-data"
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}),
|
|
227
|
-
invalidatesTags: ["ProjectSettings"]
|
|
228
|
-
}),
|
|
229
|
-
getPlugins: builder.query({
|
|
230
|
-
query: () => ({
|
|
231
|
-
url: "/admin/plugins",
|
|
232
|
-
method: "GET"
|
|
233
|
-
})
|
|
234
|
-
}),
|
|
235
|
-
getLicenseLimits: builder.query({
|
|
236
|
-
query: () => ({
|
|
237
|
-
url: "/admin/license-limit-information",
|
|
238
|
-
method: "GET"
|
|
239
|
-
}),
|
|
240
|
-
providesTags: ["LicenseLimits"]
|
|
241
|
-
})
|
|
242
|
-
}),
|
|
243
|
-
overrideExisting: false
|
|
244
|
-
});
|
|
245
|
-
const {
|
|
246
|
-
useInitQuery,
|
|
247
|
-
useTelemetryPropertiesQuery,
|
|
248
|
-
useInformationQuery,
|
|
249
|
-
useProjectSettingsQuery,
|
|
250
|
-
useUpdateProjectSettingsMutation,
|
|
251
|
-
useGetPluginsQuery,
|
|
252
|
-
useGetLicenseLimitsQuery
|
|
253
|
-
} = admin;
|
|
254
|
-
|
|
255
|
-
export { useGetPluginsQuery as a, adminApi as b, useInformationQuery as c, useRegenerateTokenMutation as d, useInitQuery as e, useTelemetryPropertiesQuery as f, useProjectSettingsQuery as g, useUpdateProjectSettingsMutation as h, isBaseQueryError as i, createAbsoluteUrl as j, getFetchClient as k, useGetLicenseLimitsQuery as u };
|
|
256
|
-
//# sourceMappingURL=admin-DUKhYsmP.mjs.map
|