@strapi/admin 5.10.3 → 5.11.0
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/chunks/{ApplicationInfoPage-DiEcqVEU.mjs → ApplicationInfoPage-BZwUO73O.mjs} +2 -2
- package/dist/admin/chunks/{ApplicationInfoPage-DiEcqVEU.mjs.map → ApplicationInfoPage-BZwUO73O.mjs.map} +1 -1
- package/dist/admin/chunks/{ApplicationInfoPage-CsBvES_c.js → ApplicationInfoPage-DJOazrYK.js} +2 -2
- package/dist/admin/chunks/{ApplicationInfoPage-CsBvES_c.js.map → ApplicationInfoPage-DJOazrYK.js.map} +1 -1
- package/dist/admin/chunks/{AuthenticatedLayout-D_VSoB1l.js → AuthenticatedLayout-Dy75FZrh.js} +7 -6
- package/dist/admin/chunks/AuthenticatedLayout-Dy75FZrh.js.map +1 -0
- package/dist/admin/chunks/{AuthenticatedLayout-C9eZ12Ue.mjs → AuthenticatedLayout-jDyinb04.mjs} +7 -6
- package/dist/admin/chunks/AuthenticatedLayout-jDyinb04.mjs.map +1 -0
- package/dist/admin/chunks/{CreatePage-DQDa78K3.mjs → CreatePage-BO4p8eVo.mjs} +2 -2
- package/dist/admin/chunks/{CreatePage-DQDa78K3.mjs.map → CreatePage-BO4p8eVo.mjs.map} +1 -1
- package/dist/admin/chunks/{CreatePage-DbmpFjHt.js → CreatePage-Bgs19RIr.js} +2 -2
- package/dist/admin/chunks/{CreatePage-DbmpFjHt.js.map → CreatePage-Bgs19RIr.js.map} +1 -1
- package/dist/admin/chunks/{CreatePage-Cb-ETkOn.mjs → CreatePage-CvMkpe3b.mjs} +3 -3
- package/dist/admin/chunks/{CreatePage-Cb-ETkOn.mjs.map → CreatePage-CvMkpe3b.mjs.map} +1 -1
- package/dist/admin/chunks/{CreatePage-DkzHz0zk.js → CreatePage-D0kjwP8s.js} +3 -3
- package/dist/admin/chunks/{CreatePage-DkzHz0zk.js.map → CreatePage-D0kjwP8s.js.map} +1 -1
- package/dist/admin/chunks/{CreateView-CmubtWzn.mjs → CreateView-B5Rq5Uhw.mjs} +4 -4
- package/dist/admin/chunks/{CreateView-CmubtWzn.mjs.map → CreateView-B5Rq5Uhw.mjs.map} +1 -1
- package/dist/admin/chunks/{CreateView-CE4-drK6.js → CreateView-DCsm2KBZ.js} +4 -4
- package/dist/admin/chunks/{CreateView-CE4-drK6.js.map → CreateView-DCsm2KBZ.js.map} +1 -1
- package/dist/admin/chunks/{CreateView-yjsS9KUJ.js → CreateView-DGq7e-Zm.js} +4 -4
- package/dist/admin/chunks/{CreateView-yjsS9KUJ.js.map → CreateView-DGq7e-Zm.js.map} +1 -1
- package/dist/admin/chunks/{CreateView-DZaIevIB.mjs → CreateView-h_bF5XrZ.mjs} +4 -4
- package/dist/admin/chunks/{CreateView-DZaIevIB.mjs.map → CreateView-h_bF5XrZ.mjs.map} +1 -1
- package/dist/admin/chunks/{EditPage-CNaAuT5C.js → EditPage-85v6bKcJ.js} +3 -3
- package/dist/admin/chunks/{EditPage-CNaAuT5C.js.map → EditPage-85v6bKcJ.js.map} +1 -1
- package/dist/admin/chunks/{EditPage-C44OaxjN.mjs → EditPage-CBrPs4kH.mjs} +3 -3
- package/dist/admin/chunks/{EditPage-C44OaxjN.mjs.map → EditPage-CBrPs4kH.mjs.map} +1 -1
- package/dist/admin/chunks/{EditPage-Bjr4f1Bs.mjs → EditPage-CFSx_zaS.mjs} +3 -3
- package/dist/admin/chunks/{EditPage-Bjr4f1Bs.mjs.map → EditPage-CFSx_zaS.mjs.map} +1 -1
- package/dist/admin/chunks/{EditPage-CycQlsFL.js → EditPage-CK8pIRKZ.js} +3 -3
- package/dist/admin/chunks/{EditPage-CycQlsFL.js.map → EditPage-CK8pIRKZ.js.map} +1 -1
- package/dist/admin/chunks/{EditPage-BrMhV8aB.js → EditPage-DHtr1mq1.js} +6 -6
- package/dist/admin/chunks/{EditPage-BrMhV8aB.js.map → EditPage-DHtr1mq1.js.map} +1 -1
- package/dist/admin/chunks/{EditPage-MmQQ4hWc.mjs → EditPage-DrT9bgfE.mjs} +6 -6
- package/dist/admin/chunks/{EditPage-MmQQ4hWc.mjs.map → EditPage-DrT9bgfE.mjs.map} +1 -1
- package/dist/admin/chunks/{EditView-C9cKaoY1.js → EditView-CfJxHMkF.js} +3 -3
- package/dist/admin/chunks/{EditView-C9cKaoY1.js.map → EditView-CfJxHMkF.js.map} +1 -1
- package/dist/admin/chunks/{EditView-CFIkvFrt.mjs → EditView-XfGT5Bj1.mjs} +3 -3
- package/dist/admin/chunks/{EditView-CFIkvFrt.mjs.map → EditView-XfGT5Bj1.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-CwdhHAuX.mjs → EditViewPage-BLftPAqX.mjs} +3 -3
- package/dist/admin/chunks/{EditViewPage-CwdhHAuX.mjs.map → EditViewPage-BLftPAqX.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-DBga-70A.js → EditViewPage-Dvm8m28e.js} +3 -3
- package/dist/admin/chunks/{EditViewPage-DBga-70A.js.map → EditViewPage-Dvm8m28e.js.map} +1 -1
- package/dist/admin/chunks/{EventsTable-fkWvAMuL.js → EventsTable-C1FNa1mh.js} +3 -3
- package/dist/admin/chunks/{EventsTable-fkWvAMuL.js.map → EventsTable-C1FNa1mh.js.map} +1 -1
- package/dist/admin/chunks/{EventsTable-CeqMb1jP.mjs → EventsTable-aDYIp-4O.mjs} +3 -3
- package/dist/admin/chunks/{EventsTable-CeqMb1jP.mjs.map → EventsTable-aDYIp-4O.mjs.map} +1 -1
- package/dist/admin/chunks/{HomePage-CVc0RfvD.js → HomePage-8CeDS3qO.js} +3 -3
- package/dist/admin/chunks/{HomePage-CVc0RfvD.js.map → HomePage-8CeDS3qO.js.map} +1 -1
- package/dist/admin/chunks/{HomePage-B2skN1xt.js → HomePage-BKwoMagC.js} +3 -3
- package/dist/admin/chunks/{HomePage-B2skN1xt.js.map → HomePage-BKwoMagC.js.map} +1 -1
- package/dist/admin/chunks/{HomePage-DGTeFboL.mjs → HomePage-BRggBAHf.mjs} +3 -3
- package/dist/admin/chunks/{HomePage-DGTeFboL.mjs.map → HomePage-BRggBAHf.mjs.map} +1 -1
- package/dist/admin/chunks/{HomePage-MfOqcIag.mjs → HomePage-DuRHJoC7.mjs} +3 -3
- package/dist/admin/chunks/{HomePage-MfOqcIag.mjs.map → HomePage-DuRHJoC7.mjs.map} +1 -1
- package/dist/admin/chunks/{InstalledPlugins-5j7xjDqh.mjs → InstalledPlugins-23tOdYYB.mjs} +2 -2
- package/dist/admin/chunks/{InstalledPlugins-5j7xjDqh.mjs.map → InstalledPlugins-23tOdYYB.mjs.map} +1 -1
- package/dist/admin/chunks/{InstalledPlugins-BXM3i3xr.js → InstalledPlugins-z8ODfbJj.js} +2 -2
- package/dist/admin/chunks/{InstalledPlugins-BXM3i3xr.js.map → InstalledPlugins-z8ODfbJj.js.map} +1 -1
- package/dist/admin/chunks/{Layout-DST1PxaO.js → Layout-BZgwh-LZ.js} +3 -3
- package/dist/admin/chunks/{Layout-DST1PxaO.js.map → Layout-BZgwh-LZ.js.map} +1 -1
- package/dist/admin/chunks/{Layout-DYjtK6iP.mjs → Layout-CmzbGRtV.mjs} +3 -3
- package/dist/admin/chunks/{Layout-DYjtK6iP.mjs.map → Layout-CmzbGRtV.mjs.map} +1 -1
- package/dist/admin/chunks/{ListPage-BhGt3EBQ.mjs → ListPage-BE3aimOU.mjs} +2 -2
- package/dist/admin/chunks/{ListPage-BhGt3EBQ.mjs.map → ListPage-BE3aimOU.mjs.map} +1 -1
- package/dist/admin/chunks/{ListPage-CWINpwfS.js → ListPage-BRVhZryp.js} +6 -6
- package/dist/admin/chunks/{ListPage-CWINpwfS.js.map → ListPage-BRVhZryp.js.map} +1 -1
- package/dist/admin/chunks/{ListPage-srJutHdv.mjs → ListPage-BuFQNHRU.mjs} +3 -3
- package/dist/admin/chunks/{ListPage-srJutHdv.mjs.map → ListPage-BuFQNHRU.mjs.map} +1 -1
- package/dist/admin/chunks/{ListPage-CLXy5r60.js → ListPage-C46MNvAQ.js} +3 -3
- package/dist/admin/chunks/{ListPage-CLXy5r60.js.map → ListPage-C46MNvAQ.js.map} +1 -1
- package/dist/admin/chunks/{ListPage-BVI0O8bq.mjs → ListPage-CTxfjKUP.mjs} +2 -2
- package/dist/admin/chunks/{ListPage-BVI0O8bq.mjs.map → ListPage-CTxfjKUP.mjs.map} +1 -1
- package/dist/admin/chunks/{ListPage-B5Hb8BA-.mjs → ListPage-CovdXetq.mjs} +6 -6
- package/dist/admin/chunks/{ListPage-B5Hb8BA-.mjs.map → ListPage-CovdXetq.mjs.map} +1 -1
- package/dist/admin/chunks/{ListPage-BgyypnOM.js → ListPage-D7fIXyTM.js} +5 -5
- package/dist/admin/chunks/{ListPage-BgyypnOM.js.map → ListPage-D7fIXyTM.js.map} +1 -1
- package/dist/admin/chunks/{ListPage-PwzVjSsA.mjs → ListPage-DoR-NV6v.mjs} +5 -5
- package/dist/admin/chunks/{ListPage-PwzVjSsA.mjs.map → ListPage-DoR-NV6v.mjs.map} +1 -1
- package/dist/admin/chunks/{ListPage-D21yUih2.js → ListPage-SVEmrFSg.js} +2 -2
- package/dist/admin/chunks/{ListPage-D21yUih2.js.map → ListPage-SVEmrFSg.js.map} +1 -1
- package/dist/admin/chunks/{ListPage-DbfL2rpi.js → ListPage-fOcHewxm.js} +2 -2
- package/dist/admin/chunks/{ListPage-DbfL2rpi.js.map → ListPage-fOcHewxm.js.map} +1 -1
- package/dist/admin/chunks/{ListView--KzJiQiO.mjs → ListView-BUbdI3-z.mjs} +3 -3
- package/dist/admin/chunks/{ListView--KzJiQiO.mjs.map → ListView-BUbdI3-z.mjs.map} +1 -1
- package/dist/admin/chunks/{ListView-DzwvQ8nW.js → ListView-CGHuleNQ.js} +3 -3
- package/dist/admin/chunks/{ListView-DzwvQ8nW.js.map → ListView-CGHuleNQ.js.map} +1 -1
- package/dist/admin/chunks/{ListView-CoGoDDiF.mjs → ListView-DxPGNDw_.mjs} +3 -3
- package/dist/admin/chunks/{ListView-CoGoDDiF.mjs.map → ListView-DxPGNDw_.mjs.map} +1 -1
- package/dist/admin/chunks/{ListView-DGfxO89i.js → ListView-HZFAPppY.js} +3 -3
- package/dist/admin/chunks/{ListView-DGfxO89i.js.map → ListView-HZFAPppY.js.map} +1 -1
- package/dist/admin/chunks/{Login-Dtkhd0GV.mjs → Login-B_Z4SJVp.mjs} +2 -2
- package/dist/admin/chunks/{Login-Dtkhd0GV.mjs.map → Login-B_Z4SJVp.mjs.map} +1 -1
- package/dist/admin/chunks/{Login-Iw84AH9L.js → Login-CjRacmoJ.js} +2 -2
- package/dist/admin/chunks/{Login-Iw84AH9L.js.map → Login-CjRacmoJ.js.map} +1 -1
- package/dist/admin/chunks/{MagicLinkEE-C5K8p8Rk.js → MagicLinkEE-DZLJwQiC.js} +4 -4
- package/dist/admin/chunks/{MagicLinkEE-C5K8p8Rk.js.map → MagicLinkEE-DZLJwQiC.js.map} +1 -1
- package/dist/admin/chunks/{MagicLinkEE-EcyHC46Y.mjs → MagicLinkEE-Oh6er0ux.mjs} +4 -4
- package/dist/admin/chunks/{MagicLinkEE-EcyHC46Y.mjs.map → MagicLinkEE-Oh6er0ux.mjs.map} +1 -1
- package/dist/admin/chunks/{MarketplacePage-CcAYozK2.mjs → MarketplacePage-BUksRtFV.mjs} +2 -2
- package/dist/admin/chunks/{MarketplacePage-CcAYozK2.mjs.map → MarketplacePage-BUksRtFV.mjs.map} +1 -1
- package/dist/admin/chunks/{MarketplacePage-BmqfuAvB.js → MarketplacePage-D-PvEBXN.js} +2 -2
- package/dist/admin/chunks/{MarketplacePage-BmqfuAvB.js.map → MarketplacePage-D-PvEBXN.js.map} +1 -1
- package/dist/admin/chunks/{ProfilePage-CN8SAQ9w.mjs → ProfilePage-D0cczhuo.mjs} +3 -3
- package/dist/admin/chunks/{ProfilePage-CN8SAQ9w.mjs.map → ProfilePage-D0cczhuo.mjs.map} +1 -1
- package/dist/admin/chunks/{ProfilePage-DiGV7o6c.js → ProfilePage-DghUK7p_.js} +3 -3
- package/dist/admin/chunks/{ProfilePage-DiGV7o6c.js.map → ProfilePage-DghUK7p_.js.map} +1 -1
- package/dist/admin/chunks/{PurchaseAuditLogs-DnWVbru3.js → PurchaseAuditLogs-BIBa5E6F.js} +2 -2
- package/dist/admin/chunks/{PurchaseAuditLogs-DnWVbru3.js.map → PurchaseAuditLogs-BIBa5E6F.js.map} +1 -1
- package/dist/admin/chunks/{PurchaseAuditLogs-BI41XTBD.mjs → PurchaseAuditLogs-BOqpGLyP.mjs} +2 -2
- package/dist/admin/chunks/{PurchaseAuditLogs-BI41XTBD.mjs.map → PurchaseAuditLogs-BOqpGLyP.mjs.map} +1 -1
- package/dist/admin/chunks/{PurchaseContentHistory-BzC2C4Pv.mjs → PurchaseContentHistory-DqyUHK_8.mjs} +2 -2
- package/dist/admin/chunks/{PurchaseContentHistory-BzC2C4Pv.mjs.map → PurchaseContentHistory-DqyUHK_8.mjs.map} +1 -1
- package/dist/admin/chunks/{PurchaseContentHistory-DUk7otrp.js → PurchaseContentHistory-y25nmJsq.js} +2 -2
- package/dist/admin/chunks/{PurchaseContentHistory-DUk7otrp.js.map → PurchaseContentHistory-y25nmJsq.js.map} +1 -1
- package/dist/admin/chunks/{PurchaseSingleSignOn-Bq0YHAHt.js → PurchaseSingleSignOn-DloQ-NfU.js} +2 -2
- package/dist/admin/chunks/{PurchaseSingleSignOn-Bq0YHAHt.js.map → PurchaseSingleSignOn-DloQ-NfU.js.map} +1 -1
- package/dist/admin/chunks/{PurchaseSingleSignOn-G1TKPP15.mjs → PurchaseSingleSignOn-L8wgCpHG.mjs} +2 -2
- package/dist/admin/chunks/{PurchaseSingleSignOn-G1TKPP15.mjs.map → PurchaseSingleSignOn-L8wgCpHG.mjs.map} +1 -1
- package/dist/admin/chunks/{SelectRoles-CKInlnSd.js → SelectRoles-ChZyGpDA.js} +3 -3
- package/dist/admin/chunks/{SelectRoles-CKInlnSd.js.map → SelectRoles-ChZyGpDA.js.map} +1 -1
- package/dist/admin/chunks/{SelectRoles-DR4KBZkw.mjs → SelectRoles-hAMu1PFv.mjs} +3 -3
- package/dist/admin/chunks/{SelectRoles-DR4KBZkw.mjs.map → SelectRoles-hAMu1PFv.mjs.map} +1 -1
- package/dist/admin/chunks/{SingleSignOnPage-CRzrEUGp.mjs → SingleSignOnPage-B-NIM66a.mjs} +3 -3
- package/dist/admin/chunks/{SingleSignOnPage-CRzrEUGp.mjs.map → SingleSignOnPage-B-NIM66a.mjs.map} +1 -1
- package/dist/admin/chunks/{SingleSignOnPage-DtRVlrGP.js → SingleSignOnPage-D-JNyyk2.js} +3 -3
- package/dist/admin/chunks/{SingleSignOnPage-DtRVlrGP.js.map → SingleSignOnPage-D-JNyyk2.js.map} +1 -1
- package/dist/admin/chunks/{Table-CBZnqMuN.js → Table-U6zMuKE5.js} +2 -2
- package/dist/admin/chunks/{Table-CBZnqMuN.js.map → Table-U6zMuKE5.js.map} +1 -1
- package/dist/admin/chunks/{Table-BohVeu0r.mjs → Table-b4wXHsis.mjs} +2 -2
- package/dist/admin/chunks/{Table-BohVeu0r.mjs.map → Table-b4wXHsis.mjs.map} +1 -1
- package/dist/admin/chunks/{TokenTypeSelect-CpEAVZ_b.mjs → TokenTypeSelect-BUFFAUgx.mjs} +2 -2
- package/dist/admin/chunks/{TokenTypeSelect-CpEAVZ_b.mjs.map → TokenTypeSelect-BUFFAUgx.mjs.map} +1 -1
- package/dist/admin/chunks/{TokenTypeSelect-BV_ZNiY_.js → TokenTypeSelect-DCa4dg3r.js} +2 -2
- package/dist/admin/chunks/{TokenTypeSelect-BV_ZNiY_.js.map → TokenTypeSelect-DCa4dg3r.js.map} +1 -1
- package/dist/admin/chunks/{UseCasePage-Bro5fyP3.mjs → UseCasePage-BlHgNz7W.mjs} +2 -2
- package/dist/admin/chunks/{UseCasePage-Bro5fyP3.mjs.map → UseCasePage-BlHgNz7W.mjs.map} +1 -1
- package/dist/admin/chunks/{UseCasePage-CipG2GC4.js → UseCasePage-CYCPZztF.js} +2 -2
- package/dist/admin/chunks/{UseCasePage-CipG2GC4.js.map → UseCasePage-CYCPZztF.js.map} +1 -1
- package/dist/admin/chunks/{constants-BddeukI7.mjs → constants-BY_PZgf3.mjs} +2 -2
- package/dist/admin/chunks/{constants-BddeukI7.mjs.map → constants-BY_PZgf3.mjs.map} +1 -1
- package/dist/admin/chunks/{constants-CaerHoe3.js → constants-D3gM8ElF.js} +2 -2
- package/dist/admin/chunks/{constants-CaerHoe3.js.map → constants-D3gM8ElF.js.map} +1 -1
- package/dist/admin/chunks/{index-HGaughzt.js → index-BdqtLS-k.js} +32 -32
- package/dist/admin/chunks/{index-HGaughzt.js.map → index-BdqtLS-k.js.map} +1 -1
- package/dist/admin/chunks/{index-BM8-DG5K.mjs → index-C3BO0YZa.mjs} +32 -32
- package/dist/admin/chunks/{index-BM8-DG5K.mjs.map → index-C3BO0YZa.mjs.map} +1 -1
- package/dist/admin/chunks/uk-D7QEPfXn.mjs +788 -0
- package/dist/admin/chunks/uk-D7QEPfXn.mjs.map +1 -0
- package/dist/admin/chunks/uk-WdcESeZB.js +807 -0
- package/dist/admin/chunks/uk-WdcESeZB.js.map +1 -0
- package/dist/admin/chunks/{useAdminRoles-C6Es4UUq.mjs → useAdminRoles-D68i2BI_.mjs} +2 -2
- package/dist/admin/chunks/{useAdminRoles-C6Es4UUq.mjs.map → useAdminRoles-D68i2BI_.mjs.map} +1 -1
- package/dist/admin/chunks/{useAdminRoles-_4HKisJz.js → useAdminRoles-Dy5KXk0R.js} +2 -2
- package/dist/admin/chunks/{useAdminRoles-_4HKisJz.js.map → useAdminRoles-Dy5KXk0R.js.map} +1 -1
- package/dist/admin/chunks/{validation-Dmvl0gZQ.mjs → validation-XFv2h8gD.mjs} +2 -2
- package/dist/admin/chunks/{validation-Dmvl0gZQ.mjs.map → validation-XFv2h8gD.mjs.map} +1 -1
- package/dist/admin/chunks/{validation-dPl3P7dv.js → validation-sucpUItn.js} +2 -2
- package/dist/admin/chunks/{validation-dPl3P7dv.js.map → validation-sucpUItn.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +0 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +0 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
- package/package.json +11 -11
- package/dist/admin/chunks/AuthenticatedLayout-C9eZ12Ue.mjs.map +0 -1
- package/dist/admin/chunks/AuthenticatedLayout-D_VSoB1l.js.map +0 -1
- package/dist/admin/chunks/uk-Cb6a0PAZ.mjs +0 -201
- package/dist/admin/chunks/uk-Cb6a0PAZ.mjs.map +0 -1
- package/dist/admin/chunks/uk-gz16FlMw.js +0 -212
- package/dist/admin/chunks/uk-gz16FlMw.js.map +0 -1
package/dist/admin/chunks/{SingleSignOnPage-CRzrEUGp.mjs.map → SingleSignOnPage-B-NIM66a.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage-CRzrEUGp.mjs","sources":["../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\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),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : 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) : 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 helpers: FormHelpers<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 helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.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 <Layouts.Root>\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 <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\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 <Layouts.Content>\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\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\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 size: 6,\n type: 'boolean' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\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":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","err","defaultMessage","isLoadingData","_jsxs","Layouts","Root","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","_Fragment","Header","primaryAction","Button","loading","startIcon","Check","title","subtitle","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","hint","label","size","options","map","toString","placeholder","field","Item","col","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SingleSignOnPage-B-NIM66a.mjs","sources":["../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\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),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : 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) : 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 helpers: FormHelpers<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 helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.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 <Layouts.Root>\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 <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\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 <Layouts.Content>\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\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\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 size: 6,\n type: 'boolean' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\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":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","err","defaultMessage","isLoadingData","_jsxs","Layouts","Root","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","_Fragment","Header","primaryAction","Button","loading","startIcon","Check","title","subtitle","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","hint","label","size","options","map","toString","placeholder","field","Item","col","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ var designSystem = require('@strapi/design-system');
|
|
|
5
5
|
var icons = require('@strapi/icons');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
7
|
var yup = require('yup');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-BdqtLS-k.js');
|
|
9
9
|
var Theme = require('./Theme-DDlJz91O.js');
|
|
10
|
-
var useAdminRoles = require('./useAdminRoles-
|
|
10
|
+
var useAdminRoles = require('./useAdminRoles-Dy5KXk0R.js');
|
|
11
11
|
var admin = require('./admin-udBiOv2o.js');
|
|
12
12
|
require('react-dom/client');
|
|
13
13
|
require('react');
|
|
@@ -303,4 +303,4 @@ const ProtectedSSO = ()=>{
|
|
|
303
303
|
|
|
304
304
|
exports.ProtectedSSO = ProtectedSSO;
|
|
305
305
|
exports.SingleSignOnPage = SingleSignOnPage;
|
|
306
|
-
//# sourceMappingURL=SingleSignOnPage-
|
|
306
|
+
//# sourceMappingURL=SingleSignOnPage-D-JNyyk2.js.map
|
package/dist/admin/chunks/{SingleSignOnPage-DtRVlrGP.js.map → SingleSignOnPage-D-JNyyk2.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage-DtRVlrGP.js","sources":["../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\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),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : 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) : 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 helpers: FormHelpers<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 helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.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 <Layouts.Root>\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 <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\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 <Layouts.Content>\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\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\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 size: 6,\n type: 'boolean' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\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":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","err","defaultMessage","isLoadingData","_jsxs","Layouts","Root","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","_Fragment","Header","primaryAction","Button","loading","startIcon","Check","title","subtitle","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","hint","label","size","options","map","toString","placeholder","field","Item","col","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,MAAMA,MAASC,GAAAA,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAChCC,IAAAA,YAAAA,EAAcH,eAAII,IAAI,EAAA,CAAGC,QAAQ,CAACC,kBAAiBD,QAAQ,CAAA;AAC3DE,IAAAA,WAAAA,EAAaP,eAAIQ,KAAK,EAAA,CAAGC,IAAI,CAAC,cAAA,EAAgB,CAACC,KAAOC,EAAAA,UAAAA,GAAAA;QACpD,OAAOD,KAAAA,GAAQC,WAAWN,QAAQ,CAACC,kBAAiBD,QAAQ,CAAA,GAAIM,WAAWC,QAAQ,EAAA;AACrF,KAAA,CAAA;AACAC,IAAAA,cAAAA,EAAgBb,cACbc,CAAAA,KAAK,EACLF,CAAAA,QAAQ,GACRG,EAAE,CACDf,cAAIQ,CAAAA,KAAK,EAAGC,CAAAA,IAAI,CAAC,gBAAA,EAAkB,CAACC,KAAOC,EAAAA,UAAAA,GAAAA;QACzC,OAAOD,KAAAA,GAAQC,WAAWN,QAAQ,CAACC,kBAAiBD,QAAQ,CAAA,GAAIM,WAAWC,QAAQ,EAAA;AACrF,KAAA,CAAA;AAEN,CAAA,CAAA;MAEaI,gBAAmB,GAAA,IAAA;IAC9B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,sBAAiB,CAAA,CAACC,QAAUA,KAAMC,CAAAA,SAAS,CAACH,WAAW,CAAA;IAC3E,MAAM,EAAEI,kBAAkB,EAAE,GAAGC,qBAAAA,EAAAA;AAC/B,IAAA,MAAM,EACJC,uBAAyBC,EAAAA,cAAc,EACvCC,+BAAiCC,EAAAA,sBAAsB,EACxD,GAAGC,wBAAAA,EAAAA;AAEJ,IAAA,MAAM,EAAEC,SAAWC,EAAAA,wBAAwB,EAAEC,IAAI,EAAE,GAAGC,gCAAAA,EAAAA;AAEtD,IAAA,MAAM,CAACC,qBAAuB,EAAA,EAAEJ,WAAWK,gBAAgB,EAAE,CAAC,GAC5DC,sCAAAA,EAAAA;AAEF,IAAA,MAAM,EACJN,SAAAA,EAAWO,oBAAoB,EAC/BC,cAAgB,EAAA,EAAEC,SAAS,EAAEC,OAASC,EAAAA,YAAY,EAAE,EACrD,GAAGC,aAAQ,CAAA;QACV,GAAGvB,WAAAA,CAAYwB,QAAQ,EAAEC,GAAG;AAC5BC,QAAAA,SAAAA,EAAW1B,WAAYwB,CAAAA,QAAQ,EAAEG,KAAAA,CAAMC,QAAQ;AACjD,KAAA,CAAA;IAEA,MAAM,EAAED,KAAK,EAAEhB,SAAAA,EAAWkB,cAAc,EAAE,GAAGC,4BAAcC,SAAW,EAAA;AACpEC,QAAAA,IAAAA,EAAM,CAACV;AACT,KAAA,CAAA;IAEA,MAAMW,YAAAA,GAAe,OACnBC,IACAC,EAAAA,OAAAA,GAAAA;QAEA,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMrB,qBAAsBmB,CAAAA,IAAAA,CAAAA;AAExC,YAAA,IAAI,WAAWE,GAAK,EAAA;gBAClB,IAAIC,sBAAAA,CAAiBD,IAAIE,KAAK,CAAA,IAAKF,IAAIE,KAAK,CAACC,IAAI,KAAK,iBAAmB,EAAA;AACvEJ,oBAAAA,OAAAA,CAAQK,SAAS,CAAC/B,sBAAuB2B,CAAAA,GAAAA,CAAIE,KAAK,CAAA,CAAA;iBAC7C,MAAA;oBACLlC,kBAAmB,CAAA;wBACjBqC,IAAM,EAAA,QAAA;wBACNC,OAASnC,EAAAA,cAAAA,CAAe6B,IAAIE,KAAK;AACnC,qBAAA,CAAA;AACF;AAEA,gBAAA;AACF;YAEAlC,kBAAmB,CAAA;gBACjBqC,IAAM,EAAA,SAAA;AACNC,gBAAAA,OAAAA,EAAS5C,aAAc,CAAA;oBAAE6C,EAAI,EAAA;AAA6B,iBAAA;AAC5D,aAAA,CAAA;AACF,SAAA,CAAE,OAAOC,GAAK,EAAA;YACZxC,kBAAmB,CAAA;gBACjBqC,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAAS5C,aAAc,CAAA;oBACrB6C,EAAI,EAAA,oBAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,MAAMC,aAAAA,GAAgBjB,kBAAkBX,oBAAwBN,IAAAA,wBAAAA;IAEhE,qBACEmC,eAAA,CAACC,cAAQC,IAAI,EAAA;;AACX,0BAAAC,cAAA,CAACC,WAAKC,KAAK,EAAA;0BACRtD,aACC,CAAA;oBAAE6C,EAAI,EAAA,oBAAA;oBAAsBE,cAAgB,EAAA;iBAC5C,EAAA;oBACEN,IAAM,EAAA;AACR,iBAAA;;AAGJ,0BAAAW,cAAA,CAACC,WAAKE,IAAI,EAAA;AAACC,gBAAAA,WAAAA,EAAWtC,gBAAoB8B,IAAAA,aAAAA;AAAeS,gBAAAA,QAAAA,EAAU,CAAC,CAAA;AAClE,gBAAA,QAAA,gBAAAL,cAACM,CAAAA,UAAAA,EAAAA;oBACCC,MAAO,EAAA,KAAA;oBACPC,QAAUzB,EAAAA,YAAAA;oBACV0B,gBAAkB/E,EAAAA,MAAAA;AAClBgF,oBAAAA,QAAAA,EAAU,CAACxC,SAAAA;AACXyC,oBAAAA,aAAAA,EACEhD,IAAQ,IAAA;wBACN7B,YAAc,EAAA,KAAA;wBACdI,WAAa,EAAA,IAAA;wBACbM,cAAgB,EAAA;AAClB,qBAAA;AAGD,oBAAA,QAAA,EAAA,CAAC,EAAEoE,QAAQ,EAAEC,YAAY,EAAE,iBAC1BhB,eAAA,CAAAiB,mBAAA,EAAA;;AACE,8CAAAd,cAAA,CAACF,cAAQiB,MAAM,EAAA;AACbC,oCAAAA,aAAAA,gBACEhB,cAACiB,CAAAA,mBAAAA,EAAAA;AACCP,wCAAAA,QAAAA,EAAU,CAACE,QAAAA;wCACXM,OAASL,EAAAA,YAAAA;AACTM,wCAAAA,SAAAA,gBAAWnB,cAACoB,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;wCACZ7B,IAAK,EAAA,QAAA;kDAEJ3C,aAAc,CAAA;4CACb6C,EAAI,EAAA,aAAA;4CACJE,cAAgB,EAAA;AAClB,yCAAA;;AAGJ0B,oCAAAA,KAAAA,EAAOzE,aAAc,CAAA;wCACnB6C,EAAI,EAAA,oBAAA;wCACJE,cAAgB,EAAA;AAClB,qCAAA,CAAA;AACA2B,oCAAAA,QAAAA,EAAU1E,aAAc,CAAA;wCACtB6C,EAAI,EAAA,0BAAA;wCACJE,cAAgB,EAAA;AAClB,qCAAA;;AAEF,8CAAAK,cAAA,CAACF,cAAQyB,OAAO,EAAA;AACbV,oCAAAA,QAAAA,EAAAA,YAAAA,IAAgBjB,aACf,iBAAAI,cAAA,CAACC,UAAKuB,CAAAA,OAAO,sBAEb3B,eAAC4B,CAAAA,iBAAAA,EAAAA;wCACCC,SAAU,EAAA,QAAA;wCACVC,UAAW,EAAA,SAAA;wCACXC,GAAK,EAAA,CAAA;wCACLC,UAAW,EAAA,UAAA;wCACXC,OAAS,EAAA,CAAA;wCACTC,MAAO,EAAA,cAAA;wCACPC,SAAS,EAAA,IAAA;;0DAEThC,cAACiC,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,GAAI,EAAA,IAAA;0DAC7BvF,aAAc,CAAA;oDACb6C,EAAI,EAAA,iBAAA;oDACJE,cAAgB,EAAA;AAClB,iDAAA;;AAEF,0DAAAK,cAAA,CAACoC,kBAAKrC,IAAI,EAAA;gDAAC6B,GAAK,EAAA,CAAA;AACb,gDAAA,QAAA,EAAA;AACC,oDAAA;AACES,wDAAAA,IAAAA,EAAMzF,aAAc,CAAA;4DAClB6C,EAAI,EAAA,4CAAA;4DACJE,cAAgB,EAAA;AAClB,yDAAA,CAAA;AACA2C,wDAAAA,KAAAA,EAAO1F,aAAc,CAAA;4DACnB6C,EAAI,EAAA,sCAAA;4DACJE,cAAgB,EAAA;AAClB,yDAAA,CAAA;wDACAN,IAAM,EAAA,cAAA;wDACNkD,IAAM,EAAA,CAAA;wDACNhD,IAAM,EAAA;AACR,qDAAA;AACA,oDAAA;AACE8C,wDAAAA,IAAAA,EAAMzF,aAAc,CAAA;4DAClB6C,EAAI,EAAA,2CAAA;4DACJE,cACE,EAAA;AACJ,yDAAA,CAAA;AACA2C,wDAAAA,KAAAA,EAAO1F,aAAc,CAAA;4DACnB6C,EAAI,EAAA,qCAAA;4DACJE,cAAgB,EAAA;AAClB,yDAAA,CAAA;wDACAN,IAAM,EAAA,aAAA;wDACNmD,OAAS/D,EAAAA,KAAAA,CAAMgE,GAAG,CAAC,CAAC,EAAEhD,EAAE,EAAEJ,IAAI,EAAE,IAAM;gEACpCiD,KAAOjD,EAAAA,IAAAA;AACPhD,gEAAAA,KAAAA,EAAOoD,GAAGiD,QAAQ;6DACpB,CAAA,CAAA;AACAC,wDAAAA,WAAAA,EAAa/F,aAAc,CAAA;4DACzB6C,EAAI,EAAA,2CAAA;4DACJE,cAAgB,EAAA;AAClB,yDAAA,CAAA;wDACA4C,IAAM,EAAA,CAAA;wDACNhD,IAAM,EAAA;AACR,qDAAA;AACA,oDAAA;AACE8C,wDAAAA,IAAAA,EAAMzF,aAAc,CAAA;4DAClB6C,EAAI,EAAA,uDAAA;4DACJE,cACE,EAAA;AACJ,yDAAA,CAAA;AACA2C,wDAAAA,KAAAA,EAAO1F,aAAc,CAAA;4DACnB6C,EAAI,EAAA,iDAAA;4DACJE,cAAgB,EAAA;AAClB,yDAAA,CAAA;wDACAN,IAAM,EAAA,gBAAA;wDACNmD,OAAS/D,EAAAA,KAAAA,CAAMgE,GAAG,CAAC,CAAC,EAAEhD,EAAE,EAAEJ,IAAI,EAAE,IAAM;gEACpCiD,KAAOjD,EAAAA,IAAAA;AACPhD,gEAAAA,KAAAA,EAAOoD,GAAGiD,QAAQ;6DACpB,CAAA,CAAA;AACAC,wDAAAA,WAAAA,EAAa/F,aAAc,CAAA;4DACzB6C,EAAI,EAAA,2CAAA;4DACJE,cAAgB,EAAA;AAClB,yDAAA,CAAA;wDACA4C,IAAM,EAAA,CAAA;wDACNhD,IAAM,EAAA;AACR;iDACD,CAACkD,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGK,KAAO,EAAA,iBACvB5C,cAACoC,CAAAA,iBAAAA,CAAKS,IAAI,EAAA;wDAERC,GAAKP,EAAAA,IAAAA;wDACLb,SAAU,EAAA,QAAA;wDACVC,UAAW,EAAA,SAAA;AAEX,wDAAA,QAAA,gBAAA3B,cAAC+C,CAAAA,iBAAAA,EAAAA;AAAmB,4DAAA,GAAGH;;AALlBA,qDAAAA,EAAAA,KAAAA,CAAMvD,IAAI,CAAA;;;;;;;;;;;AAkBzC;AAIA,MAAM0D,oBAAoB,CAACC,KAAAA,GAAAA;AACzB,IAAA,OAAQA,MAAMzD,IAAI;QAChB,KAAK,OAAA;AACH,YAAA,qBAAOS,cAACiD,CAAAA,gBAAAA,EAAAA;AAAkB,gBAAA,GAAGD;;AAC/B,QAAA;AACE,YAAA,qBAAOhD,cAACkD,CAAAA,2BAAAA,EAAAA;AAAe,gBAAA,GAAGF;;AAC9B;AACF,CAAA;AAMA,MAAMC,gBAAmB,GAAA,CAAC,EAAEZ,IAAI,EAAEC,KAAK,EAAEjD,IAAI,EAAEmD,OAAO,EAAE,GAAGQ,KAA8B,EAAA,GAAA;AACvF,IAAA,MAAMJ,QAAQO,cAAS9D,CAAAA,IAAAA,CAAAA;IAEvB,qBACEQ,eAAA,CAACuD,mBAAMrD,IAAI,EAAA;QAACV,IAAMA,EAAAA,IAAAA;QAAMgD,IAAMA,EAAAA,IAAAA;AAAMjD,QAAAA,KAAAA,EAAOwD,MAAMxD,KAAK;;AACpD,0BAAAY,cAAA,CAACoD,mBAAMC,KAAK,EAAA;AAAEf,gBAAAA,QAAAA,EAAAA;;0BACdtC,cAACsD,CAAAA,wBAAAA,EAAAA;AACCC,gBAAAA,QAAAA,EAAU,CAAClH,KAAAA,GAAUuG,KAAMW,CAAAA,QAAQ,CAAC,gBAAkBlH,EAAAA,KAAAA,CAAAA;AACtDmH,gBAAAA,OAAAA,EAAS,IAAMZ,KAAAA,CAAMW,QAAQ,CAAC,kBAAkB,EAAE,CAAA;gBAClDlH,KAAOuG,EAAAA,KAAAA,CAAMvG,KAAK,IAAI,EAAE;gBACxBoH,QAAQ,EAAA,IAAA;AACP,gBAAA,GAAGT,KAAK;0BAERR,OAAQC,CAAAA,GAAG,CAAC,CAAC,EAAEH,KAAK,EAAEjG,KAAK,EAAE,iBAC5B2D,cAAC0D,CAAAA,8BAAAA,EAAAA;wBAA8BrH,KAAOA,EAAAA,KAAAA;AACnCiG,wBAAAA,QAAAA,EAAAA;AADqBjG,qBAAAA,EAAAA,KAAAA,CAAAA;;AAK5B,0BAAA2D,cAAA,CAACoD,mBAAMO,IAAI,EAAA,EAAA,CAAA;AACX,0BAAA3D,cAAA,CAACoD,mBAAMQ,KAAK,EAAA,EAAA;;;AAGlB,CAAA;MAEaC,YAAe,GAAA,IAAA;IAC1B,MAAM/G,WAAAA,GAAcC,sBAAiB,CAAA,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,CAACH,WAAW,CAACwB,QAAQ,EAAEC,GAAKuF,EAAAA,IAAAA,CAAAA;IAE3F,qBACE9D,cAAA,CAACC,WAAK8D,OAAO,EAAA;QAACjH,WAAaA,EAAAA,WAAAA;AACzB,QAAA,QAAA,gBAAAkD,cAACrD,CAAAA,gBAAAA,EAAAA,EAAAA;;AAGP;;;;;"}
|
|
1
|
+
{"version":3,"file":"SingleSignOnPage-D-JNyyk2.js","sources":["../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\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),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : 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) : 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 helpers: FormHelpers<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 helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.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 <Layouts.Root>\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 <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\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 <Layouts.Content>\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\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\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 size: 6,\n type: 'boolean' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\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 label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\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":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","err","defaultMessage","isLoadingData","_jsxs","Layouts","Root","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","_Fragment","Header","primaryAction","Button","loading","startIcon","Check","title","subtitle","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","hint","label","size","options","map","toString","placeholder","field","Item","col","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ var icons = require('@strapi/icons');
|
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
|
9
9
|
var styledComponents = require('styled-components');
|
|
10
|
-
var index = require('./index-
|
|
10
|
+
var index = require('./index-BdqtLS-k.js');
|
|
11
11
|
var RelativeTime = require('./RelativeTime-ChFKZs4z.js');
|
|
12
12
|
var Theme = require('./Theme-DDlJz91O.js');
|
|
13
13
|
|
|
@@ -194,4 +194,4 @@ const UpdateButton = ({ tokenName, tokenId })=>{
|
|
|
194
194
|
};
|
|
195
195
|
|
|
196
196
|
exports.Table = Table;
|
|
197
|
-
//# sourceMappingURL=Table-
|
|
197
|
+
//# sourceMappingURL=Table-U6zMuKE5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table-CBZnqMuN.js","sources":["../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\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=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\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 <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\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 handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\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 />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table-U6zMuKE5.js","sources":["../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\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=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\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 <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\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 handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\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 />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { Trash, Pencil } from '@strapi/icons';
|
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { useNavigate, NavLink } from 'react-router-dom';
|
|
7
7
|
import { styled } from 'styled-components';
|
|
8
|
-
import { T as Table$1, C as ConfirmDialog } from './index-
|
|
8
|
+
import { T as Table$1, C as ConfirmDialog } from './index-C3BO0YZa.mjs';
|
|
9
9
|
import { R as RelativeTime } from './RelativeTime-r7oMqUVy.mjs';
|
|
10
10
|
import { n as useQueryParams, c as useTracking } from './Theme-C3oHrQcy.mjs';
|
|
11
11
|
|
|
@@ -192,4 +192,4 @@ const UpdateButton = ({ tokenName, tokenId })=>{
|
|
|
192
192
|
};
|
|
193
193
|
|
|
194
194
|
export { Table as T };
|
|
195
|
-
//# sourceMappingURL=Table-
|
|
195
|
+
//# sourceMappingURL=Table-b4wXHsis.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table-BohVeu0r.mjs","sources":["../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\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=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\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 <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\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 handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\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 />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table-b4wXHsis.mjs","sources":["../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\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=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\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 <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\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 handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\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 />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { Flex, Button, Dialog, IconButton, Field, SingleSelect, SingleSelectOption, Typography, Textarea, TextInput } from '@strapi/design-system';
|
|
4
4
|
import { Check, ArrowClockwise, Duplicate, Key } from '@strapi/icons';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
|
-
import { b as Layouts, B as BackButton, C as ConfirmDialog, t as useClipboard, v as ContentBox } from './index-
|
|
6
|
+
import { b as Layouts, B as BackButton, C as ConfirmDialog, t as useClipboard, v as ContentBox } from './index-C3BO0YZa.mjs';
|
|
7
7
|
import { a as useNotification, e as useAPIErrorHandler, c as useTracking } from './Theme-C3oHrQcy.mjs';
|
|
8
8
|
import { e as useRegenerateTokenMutation } from './transferTokens-9pdM-Bum.mjs';
|
|
9
9
|
import { format, addDays } from 'date-fns';
|
|
@@ -364,4 +364,4 @@ const TokenTypeSelect = ({ name = 'type', error, value, onChange, canEditInputs,
|
|
|
364
364
|
};
|
|
365
365
|
|
|
366
366
|
export { FormHead as F, LifeSpanInput as L, TokenBox as T, TokenName as a, TokenDescription as b, TokenTypeSelect as c };
|
|
367
|
-
//# sourceMappingURL=TokenTypeSelect-
|
|
367
|
+
//# sourceMappingURL=TokenTypeSelect-BUFFAUgx.mjs.map
|
package/dist/admin/chunks/{TokenTypeSelect-CpEAVZ_b.mjs.map → TokenTypeSelect-BUFFAUgx.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTypeSelect-CpEAVZ_b.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, Dialog, Flex } from '@strapi/design-system';\nimport { Check, ArrowClockwise } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\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 <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\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 </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\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 </Dialog.Root>\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 <Layouts.Header\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 variant=\"ghost\"\n type=\"button\"\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\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, Field } 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 <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\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 <Field.Error />\n </Field.Root>\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 { Field, 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 <Field.Root\n name=\"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 >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={onChange} disabled={!canEditInputs} value={value} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { Field, 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 <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } 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 <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\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 <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","disabled","Check","navigationAction","BackButton","ellipsis","TokenBox","tokenType","trackUsage","useTracking","copy","useClipboard","handleClick","didCopy","ContentBox","span","style","alignSelf","IconButton","label","padding","height","Duplicate","subtitle","icon","Key","iconBackground","getDateFnsLocaleName","locale","Object","keys","locales","includes","getDateOfExpiration","createdAt","duration","language","durationInDays","format","addDays","Date","isErrorMessageMessageDescriptor","LifeSpanInput","value","onChange","isCreating","_Fragment","Field","undefined","required","Label","SingleSelect","target","placeholder","SingleSelectOption","Error","Typography","textColor","parseInt","TokenDescription","Textarea","TokenName","TextInput","TokenTypeSelect","options","map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenTypeSelect-BUFFAUgx.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, Dialog, Flex } from '@strapi/design-system';\nimport { Check, ArrowClockwise } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\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 <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\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 </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\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 </Dialog.Root>\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 <Layouts.Header\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 variant=\"ghost\"\n type=\"button\"\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\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, Field } 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 <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\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 <Field.Error />\n </Field.Root>\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 { Field, 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 <Field.Root\n name=\"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 >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={onChange} disabled={!canEditInputs} value={value} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { Field, 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 <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } 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 <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\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 <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","disabled","Check","navigationAction","BackButton","ellipsis","TokenBox","tokenType","trackUsage","useTracking","copy","useClipboard","handleClick","didCopy","ContentBox","span","style","alignSelf","IconButton","label","padding","height","Duplicate","subtitle","icon","Key","iconBackground","getDateFnsLocaleName","locale","Object","keys","locales","includes","getDateOfExpiration","createdAt","duration","language","durationInDays","format","addDays","Date","isErrorMessageMessageDescriptor","LifeSpanInput","value","onChange","isCreating","_Fragment","Field","undefined","required","Label","SingleSelect","target","placeholder","SingleSelectOption","Error","Typography","textColor","parseInt","TokenDescription","Textarea","TokenName","TextInput","TokenTypeSelect","options","map"],"mappings":"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"}
|