@strapi/admin 5.0.0-beta.2 → 5.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/{AdminSeatInfo-pcU6Psg5.js → AdminSeatInfo-H5eNy3Gq.js} +5 -5
- package/dist/admin/{AdminSeatInfo-pcU6Psg5.js.map → AdminSeatInfo-H5eNy3Gq.js.map} +1 -1
- package/dist/admin/{AdminSeatInfo-KKTvi8LR.mjs → AdminSeatInfo-jPH1stsB.mjs} +4 -4
- package/dist/admin/{AdminSeatInfo-KKTvi8LR.mjs.map → AdminSeatInfo-jPH1stsB.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-eFuntlx4.mjs → ApplicationInfoPage-QiVVy6LS.mjs} +4 -4
- package/dist/admin/{ApplicationInfoPage-eFuntlx4.mjs.map → ApplicationInfoPage-QiVVy6LS.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-Ip1_DTk9.js → ApplicationInfoPage-leY1AEgo.js} +14 -14
- package/dist/admin/{ApplicationInfoPage-Ip1_DTk9.js.map → ApplicationInfoPage-leY1AEgo.js.map} +1 -1
- package/dist/admin/{AuthResponse-no1FFPpN.mjs → AuthResponse-5G-7aJDM.mjs} +2 -2
- package/dist/admin/{AuthResponse-no1FFPpN.mjs.map → AuthResponse-5G-7aJDM.mjs.map} +1 -1
- package/dist/admin/{AuthResponse-j4iu1hDd.js → AuthResponse-kdo9DYPT.js} +4 -4
- package/dist/admin/{AuthResponse-j4iu1hDd.js.map → AuthResponse-kdo9DYPT.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-GD2XM4Xh.js → AuthenticatedLayout-1x0WC6c6.js} +41 -62
- package/dist/admin/AuthenticatedLayout-1x0WC6c6.js.map +1 -0
- package/dist/admin/{AuthenticatedLayout-mta84NQE.mjs → AuthenticatedLayout-zaOd05gw.mjs} +23 -44
- package/dist/admin/AuthenticatedLayout-zaOd05gw.mjs.map +1 -0
- package/dist/admin/{CreateActionEE-j8NEQArt.js → CreateActionEE-2DKYzbq_.js} +2 -2
- package/dist/admin/{CreateActionEE-j8NEQArt.js.map → CreateActionEE-2DKYzbq_.js.map} +1 -1
- package/dist/admin/{CreateActionEE-9o2Mj6Ml.mjs → CreateActionEE-TcGdWjIN.mjs} +2 -2
- package/dist/admin/{CreateActionEE-9o2Mj6Ml.mjs.map → CreateActionEE-TcGdWjIN.mjs.map} +1 -1
- package/dist/admin/{CreatePage-V4cSRx8F.js → CreatePage-J84OUqE4.js} +12 -12
- package/dist/admin/{CreatePage-V4cSRx8F.js.map → CreatePage-J84OUqE4.js.map} +1 -1
- package/dist/admin/{CreatePage-FJXNWV-g.mjs → CreatePage-gSoe3n8A.mjs} +3 -3
- package/dist/admin/{CreatePage-FJXNWV-g.mjs.map → CreatePage-gSoe3n8A.mjs.map} +1 -1
- package/dist/admin/{CreatePage-P-JKk6La.mjs → CreatePage-pniatTP-.mjs} +5 -5
- package/dist/admin/{CreatePage-P-JKk6La.mjs.map → CreatePage-pniatTP-.mjs.map} +1 -1
- package/dist/admin/{CreatePage-ZcVRwog2.js → CreatePage-z4ERqv1R.js} +5 -5
- package/dist/admin/{CreatePage-ZcVRwog2.js.map → CreatePage-z4ERqv1R.js.map} +1 -1
- package/dist/admin/{CreateView-BKV0PWUL.mjs → CreateView-BdO0Pvex.mjs} +3 -3
- package/dist/admin/{CreateView-BKV0PWUL.mjs.map → CreateView-BdO0Pvex.mjs.map} +1 -1
- package/dist/admin/CreateView-JNmfRawb.js +17 -0
- package/dist/admin/{CreateView-tQxib6Yo.js.map → CreateView-JNmfRawb.js.map} +1 -1
- package/dist/admin/CreateView-NwMXZjDh.js +17 -0
- package/dist/admin/{CreateView-5zt3cfsd.js.map → CreateView-NwMXZjDh.js.map} +1 -1
- package/dist/admin/{CreateView-A1wdcygq.mjs → CreateView-sFb3ySEj.mjs} +3 -3
- package/dist/admin/{CreateView-A1wdcygq.mjs.map → CreateView-sFb3ySEj.mjs.map} +1 -1
- package/dist/admin/{EditPage-qN5pbP1W.mjs → EditPage-3wx6NJgA.mjs} +7 -7
- package/dist/admin/{EditPage-qN5pbP1W.mjs.map → EditPage-3wx6NJgA.mjs.map} +1 -1
- package/dist/admin/{EditPage-k_6aHRVf.mjs → EditPage-IQRLHMer.mjs} +10 -9
- package/dist/admin/EditPage-IQRLHMer.mjs.map +1 -0
- package/dist/admin/{EditPage-YUSwYkTW.js → EditPage-dAyJwJfs.js} +19 -18
- package/dist/admin/EditPage-dAyJwJfs.js.map +1 -0
- package/dist/admin/{EditPage-L3K_x3mo.js → EditPage-eR6riBsR.js} +13 -13
- package/dist/admin/{EditPage-L3K_x3mo.js.map → EditPage-eR6riBsR.js.map} +1 -1
- package/dist/admin/{EditPage-7LbHuqPq.js → EditPage-rdOE18EC.js} +13 -13
- package/dist/admin/{EditPage-7LbHuqPq.js.map → EditPage-rdOE18EC.js.map} +1 -1
- package/dist/admin/{EditPage-NKv-e2KT.mjs → EditPage-yztdPcnM.mjs} +6 -6
- package/dist/admin/{EditPage-NKv-e2KT.mjs.map → EditPage-yztdPcnM.mjs.map} +1 -1
- package/dist/admin/{EditView-NsG_ztE8.mjs → EditView-fbzip_S8.mjs} +6 -6
- package/dist/admin/{EditView-NsG_ztE8.mjs.map → EditView-fbzip_S8.mjs.map} +1 -1
- package/dist/admin/{EditView-HPIQBaUm.js → EditView-oyHNBKvL.js} +16 -16
- package/dist/admin/{EditView-HPIQBaUm.js.map → EditView-oyHNBKvL.js.map} +1 -1
- package/dist/admin/{EditViewPage-_RgRquw7.js → EditViewPage-LdDGNi6d.js} +18 -18
- package/dist/admin/{EditViewPage-_RgRquw7.js.map → EditViewPage-LdDGNi6d.js.map} +1 -1
- package/dist/admin/{EditViewPage-SORieV31.mjs → EditViewPage-rDgxiutd.mjs} +8 -8
- package/dist/admin/{EditViewPage-SORieV31.mjs.map → EditViewPage-rDgxiutd.mjs.map} +1 -1
- package/dist/admin/{EventsTable-lKzkleEo.js → EventsTable--peC0Geq.js} +2 -2
- package/dist/admin/{EventsTable-lKzkleEo.js.map → EventsTable--peC0Geq.js.map} +1 -1
- package/dist/admin/{EventsTable-ZGByQmYS.mjs → EventsTable-rNMPq-X1.mjs} +2 -2
- package/dist/admin/{EventsTable-ZGByQmYS.mjs.map → EventsTable-rNMPq-X1.mjs.map} +1 -1
- package/dist/admin/{HomePage-WL46uo6c.js → HomePage-14WM2hIE.js} +3 -3
- package/dist/admin/{HomePage-WL46uo6c.js.map → HomePage-14WM2hIE.js.map} +1 -1
- package/dist/admin/{HomePage-XsltwUHu.js → HomePage-e2Bs6Kar.js} +12 -12
- package/dist/admin/{HomePage-XsltwUHu.js.map → HomePage-e2Bs6Kar.js.map} +1 -1
- package/dist/admin/{HomePage-Gt7-reqY.mjs → HomePage-qgAro8dS.mjs} +5 -5
- package/dist/admin/{HomePage-Gt7-reqY.mjs.map → HomePage-qgAro8dS.mjs.map} +1 -1
- package/dist/admin/{HomePage-WNfhIqeG.mjs → HomePage-zQ7HL9y6.mjs} +3 -3
- package/dist/admin/{HomePage-WNfhIqeG.mjs.map → HomePage-zQ7HL9y6.mjs.map} +1 -1
- package/dist/admin/{InstalledPluginsPage-GYKMwvHv.js → InstalledPluginsPage-ZIPyDrzh.js} +10 -10
- package/dist/admin/{InstalledPluginsPage-GYKMwvHv.js.map → InstalledPluginsPage-ZIPyDrzh.js.map} +1 -1
- package/dist/admin/{InstalledPluginsPage--ZsKfXh4.mjs → InstalledPluginsPage-s_PGIc3_.mjs} +4 -4
- package/dist/admin/{InstalledPluginsPage--ZsKfXh4.mjs.map → InstalledPluginsPage-s_PGIc3_.mjs.map} +1 -1
- package/dist/admin/{Layout-Ojd0IVLT.js → Layout-KAX2c8wc.js} +12 -12
- package/dist/admin/Layout-KAX2c8wc.js.map +1 -0
- package/dist/admin/{Layout-fD9qm3jw.mjs → Layout-mEj5c1Bi.mjs} +6 -6
- package/dist/admin/Layout-mEj5c1Bi.mjs.map +1 -0
- package/dist/admin/{ListPage-fjrFazMD.mjs → ListPage-AI8neqxV.mjs} +4 -4
- package/dist/admin/{ListPage-fjrFazMD.mjs.map → ListPage-AI8neqxV.mjs.map} +1 -1
- package/dist/admin/{ListPage-bixYhMBi.js → ListPage-ARW72ceH.js} +13 -13
- package/dist/admin/{ListPage-bixYhMBi.js.map → ListPage-ARW72ceH.js.map} +1 -1
- package/dist/admin/{ListPage-ddKZOtpb.js → ListPage-AUimd0cK.js} +20 -20
- package/dist/admin/{ListPage-ddKZOtpb.js.map → ListPage-AUimd0cK.js.map} +1 -1
- package/dist/admin/{ListPage-cdXKmKwt.mjs → ListPage-BIpKdUdv.mjs} +5 -5
- package/dist/admin/{ListPage-cdXKmKwt.mjs.map → ListPage-BIpKdUdv.mjs.map} +1 -1
- package/dist/admin/{ListPage-qABnTZzR.js → ListPage-DxI49fdQ.js} +14 -14
- package/dist/admin/{ListPage-qABnTZzR.js.map → ListPage-DxI49fdQ.js.map} +1 -1
- package/dist/admin/{ListPage-2KQUGpSp.js → ListPage-MvgbZlgc.js} +3 -3
- package/dist/admin/{ListPage-2KQUGpSp.js.map → ListPage-MvgbZlgc.js.map} +1 -1
- package/dist/admin/{ListPage-WozCiyeB.mjs → ListPage-ZDEeaYvm.mjs} +3 -3
- package/dist/admin/{ListPage-WozCiyeB.mjs.map → ListPage-ZDEeaYvm.mjs.map} +1 -1
- package/dist/admin/{ListPage-FjHi4ZGu.mjs → ListPage-asZ9aDzG.mjs} +5 -5
- package/dist/admin/{ListPage-FjHi4ZGu.mjs.map → ListPage-asZ9aDzG.mjs.map} +1 -1
- package/dist/admin/{ListPage-BjjqJKzh.js → ListPage-romICg1Z.js} +16 -16
- package/dist/admin/{ListPage-BjjqJKzh.js.map → ListPage-romICg1Z.js.map} +1 -1
- package/dist/admin/{ListPage-TQPuZR4V.mjs → ListPage-tniramRN.mjs} +9 -9
- package/dist/admin/{ListPage-TQPuZR4V.mjs.map → ListPage-tniramRN.mjs.map} +1 -1
- package/dist/admin/{ListView-9E8SVTSf.js → ListView-1VRmjfh8.js} +13 -13
- package/dist/admin/{ListView-9E8SVTSf.js.map → ListView-1VRmjfh8.js.map} +1 -1
- package/dist/admin/{ListView-T5y4ambL.mjs → ListView-6hlTFx5H.mjs} +5 -5
- package/dist/admin/{ListView-T5y4ambL.mjs.map → ListView-6hlTFx5H.mjs.map} +1 -1
- package/dist/admin/{ListView-jUavvOoD.mjs → ListView-GYuN24HV.mjs} +4 -4
- package/dist/admin/{ListView-jUavvOoD.mjs.map → ListView-GYuN24HV.mjs.map} +1 -1
- package/dist/admin/{ListView-ZC27Df9H.js → ListView-ph55AtDF.js} +14 -14
- package/dist/admin/{ListView-ZC27Df9H.js.map → ListView-ph55AtDF.js.map} +1 -1
- package/dist/admin/{Login-pnQ7v5vq.mjs → Login-LxE58baP.mjs} +3 -3
- package/dist/admin/{Login-pnQ7v5vq.mjs.map → Login-LxE58baP.mjs.map} +1 -1
- package/dist/admin/{Login-1AOrPSGD.js → Login-WeDT3kAj.js} +4 -4
- package/dist/admin/{Login-1AOrPSGD.js.map → Login-WeDT3kAj.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-ahlmWLG6.mjs → MagicLinkEE-AO_SBYi5.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-ahlmWLG6.mjs.map → MagicLinkEE-AO_SBYi5.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-BpisXVzq.js → MagicLinkEE-_fUwHKdf.js} +3 -3
- package/dist/admin/{MagicLinkEE-BpisXVzq.js.map → MagicLinkEE-_fUwHKdf.js.map} +1 -1
- package/dist/admin/{MarketplacePage-gDPY0phu.mjs → MarketplacePage-26cUn4e5.mjs} +3 -3
- package/dist/admin/{MarketplacePage-gDPY0phu.mjs.map → MarketplacePage-26cUn4e5.mjs.map} +1 -1
- package/dist/admin/{MarketplacePage-Ogkt8lJq.js → MarketplacePage-m8Lf3adM.js} +17 -17
- package/dist/admin/{MarketplacePage-Ogkt8lJq.js.map → MarketplacePage-m8Lf3adM.js.map} +1 -1
- package/dist/admin/{Permissions-RkPUHIVE.js → Permissions-NRzJqZEr.js} +7 -7
- package/dist/admin/{Permissions-RkPUHIVE.js.map → Permissions-NRzJqZEr.js.map} +1 -1
- package/dist/admin/{Permissions-l8yWERDW.mjs → Permissions-VzklM1ie.mjs} +3 -3
- package/dist/admin/{Permissions-l8yWERDW.mjs.map → Permissions-VzklM1ie.mjs.map} +1 -1
- package/dist/admin/{PrivateRoute-I8uiqYMc.js → PrivateRoute-KAM10GGM.js} +3 -3
- package/dist/admin/{PrivateRoute-I8uiqYMc.js.map → PrivateRoute-KAM10GGM.js.map} +1 -1
- package/dist/admin/{PrivateRoute-m7OeCfYA.mjs → PrivateRoute-wDu6Vo0N.mjs} +2 -2
- package/dist/admin/{PrivateRoute-m7OeCfYA.mjs.map → PrivateRoute-wDu6Vo0N.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-mO3MQozZ.mjs → ProfilePage-0d-k7mtP.mjs} +6 -6
- package/dist/admin/{ProfilePage-mO3MQozZ.mjs.map → ProfilePage-0d-k7mtP.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-yLYrmYfh.js → ProfilePage-oSih4pcL.js} +20 -20
- package/dist/admin/{ProfilePage-yLYrmYfh.js.map → ProfilePage-oSih4pcL.js.map} +1 -1
- package/dist/admin/{SelectRoles-vs_GIRku.mjs → SelectRoles-V_PZUtVT.mjs} +4 -4
- package/dist/admin/{SelectRoles-vs_GIRku.mjs.map → SelectRoles-V_PZUtVT.mjs.map} +1 -1
- package/dist/admin/{SelectRoles-E27rLNXb.js → SelectRoles-ZsRUnSdr.js} +5 -5
- package/dist/admin/{SelectRoles-E27rLNXb.js.map → SelectRoles-ZsRUnSdr.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-EIJNDHZ1.js → SingleSignOnPage-jtjy4_4U.js} +16 -16
- package/dist/admin/{SingleSignOnPage-EIJNDHZ1.js.map → SingleSignOnPage-jtjy4_4U.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-rFbze2qS.mjs → SingleSignOnPage-kbLz1A_y.mjs} +5 -5
- package/dist/admin/{SingleSignOnPage-rFbze2qS.mjs.map → SingleSignOnPage-kbLz1A_y.mjs.map} +1 -1
- package/dist/admin/{Table-yt4e2psj.mjs → Table-ZFyORhH3.mjs} +3 -3
- package/dist/admin/{Table-yt4e2psj.mjs.map → Table-ZFyORhH3.mjs.map} +1 -1
- package/dist/admin/{Table-y_iVVRmo.js → Table-kMt3jQ2g.js} +5 -5
- package/dist/admin/{Table-y_iVVRmo.js.map → Table-kMt3jQ2g.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-6UaG68id.js → TokenTypeSelect-Ngz4ONEL.js} +8 -8
- package/dist/admin/{TokenTypeSelect-6UaG68id.js.map → TokenTypeSelect-Ngz4ONEL.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-FTMoBhn3.mjs → TokenTypeSelect-oOKwvsQ2.mjs} +4 -4
- package/dist/admin/{TokenTypeSelect-FTMoBhn3.mjs.map → TokenTypeSelect-oOKwvsQ2.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-ifVOOcqK.mjs → UseCasePage-2wum_xzS.mjs} +4 -4
- package/dist/admin/{UseCasePage-ifVOOcqK.mjs.map → UseCasePage-2wum_xzS.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-PzT7YQgK.js → UseCasePage-qrhHiF5S.js} +6 -6
- package/dist/admin/{UseCasePage-PzT7YQgK.js.map → UseCasePage-qrhHiF5S.js.map} +1 -1
- package/dist/admin/{admin-w3o7ePNm.mjs → admin-DUKhYsmP.mjs} +12 -2
- package/dist/admin/admin-DUKhYsmP.mjs.map +1 -0
- package/dist/admin/{admin-vcfA8Zox.js → admin-vlKSOeHB.js} +12 -1
- package/dist/admin/admin-vlKSOeHB.js.map +1 -0
- package/dist/admin/{apiTokens-75EXEvGS.mjs → apiTokens-dBRuo1wd.mjs} +2 -2
- package/dist/admin/{apiTokens-75EXEvGS.mjs.map → apiTokens-dBRuo1wd.mjs.map} +1 -1
- package/dist/admin/{apiTokens-wqQgdbcG.js → apiTokens-lXn03No3.js} +2 -2
- package/dist/admin/{apiTokens-wqQgdbcG.js.map → apiTokens-lXn03No3.js.map} +1 -1
- package/dist/admin/{constants-ORUQO0uh.mjs → constants-enREoOEa.mjs} +3 -3
- package/dist/admin/{constants-ORUQO0uh.mjs.map → constants-enREoOEa.mjs.map} +1 -1
- package/dist/admin/{constants-oTDk_K7z.js → constants-jQFnBWVd.js} +4 -4
- package/dist/admin/{constants-oTDk_K7z.js.map → constants-jQFnBWVd.js.map} +1 -1
- package/dist/admin/ee.js +1 -1
- package/dist/admin/ee.mjs +1 -1
- package/dist/admin/{index-tmvI3DXu.js → index-dcaxfEDi.js} +113 -90
- package/dist/admin/index-dcaxfEDi.js.map +1 -0
- package/dist/admin/{index-PCKQWB49.mjs → index-oBxjGftZ.mjs} +72 -49
- package/dist/admin/index-oBxjGftZ.mjs.map +1 -0
- package/dist/admin/index.js +13 -13
- package/dist/admin/index.mjs +3 -3
- package/dist/admin/{Theme-j7r62OPn.js → rbac-WZsv1761.js} +128 -50
- package/dist/admin/rbac-WZsv1761.js.map +1 -0
- package/dist/admin/{Theme-Gult7t3_.mjs → rbac-sYT_mXH0.mjs} +128 -51
- package/dist/admin/rbac-sYT_mXH0.mjs.map +1 -0
- package/dist/admin/{selectors-i8UwQyuC.mjs → selectors-3gRe5pAj.mjs} +2 -2
- package/dist/admin/{selectors-i8UwQyuC.mjs.map → selectors-3gRe5pAj.mjs.map} +1 -1
- package/dist/admin/selectors-CiTVxP8O.js +8 -0
- package/dist/admin/{selectors-1-hG3q3-.js.map → selectors-CiTVxP8O.js.map} +1 -1
- package/dist/admin/src/StrapiApp.d.ts +3 -0
- package/dist/admin/src/components/Form.d.ts +10 -1
- package/dist/admin/src/core/apis/rbac.d.ts +24 -0
- package/dist/admin/src/features/Auth.d.ts +14 -3
- package/dist/admin/src/features/StrapiApp.d.ts +2 -0
- package/dist/admin/src/hooks/useRBAC.d.ts +33 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/utils/once.d.ts +1 -0
- package/dist/admin/src/utils/urls.d.ts +7 -1
- package/dist/admin/src/utils/users.d.ts +4 -3
- package/dist/admin/test.js +48 -48
- package/dist/admin/test.js.map +1 -1
- package/dist/admin/test.mjs +44 -44
- package/dist/admin/test.mjs.map +1 -1
- package/dist/admin/{transferTokens-GqOwfpHk.js → transferTokens-5qQjIKFd.js} +2 -2
- package/dist/admin/{transferTokens-GqOwfpHk.js.map → transferTokens-5qQjIKFd.js.map} +1 -1
- package/dist/admin/{transferTokens-Dibaubom.mjs → transferTokens-OLPKYcY_.mjs} +2 -2
- package/dist/admin/{transferTokens-Dibaubom.mjs.map → transferTokens-OLPKYcY_.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-iyGa9Xh9.mjs → useAdminRoles-HWIbyk2Z.mjs} +2 -2
- package/dist/admin/{useAdminRoles-iyGa9Xh9.mjs.map → useAdminRoles-HWIbyk2Z.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-XTNZhJh5.js → useAdminRoles-Q2BxHs4o.js} +2 -2
- package/dist/admin/{useAdminRoles-XTNZhJh5.js.map → useAdminRoles-Q2BxHs4o.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-qeIH3VJE.js → useLicenseLimitNotification-0UWeCY_u.js} +4 -4
- package/dist/admin/{useLicenseLimitNotification-qeIH3VJE.js.map → useLicenseLimitNotification-0UWeCY_u.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-d06Aex_I.mjs → useLicenseLimitNotification-aTNbD3xK.mjs} +3 -3
- package/dist/admin/{useLicenseLimitNotification-d06Aex_I.mjs.map → useLicenseLimitNotification-aTNbD3xK.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimits-EyslHDFM.mjs → useLicenseLimits-F7K-YWAE.mjs} +2 -2
- package/dist/admin/{useLicenseLimits-EyslHDFM.mjs.map → useLicenseLimits-F7K-YWAE.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimits-bLiwF5ah.js → useLicenseLimits-m11DOu9p.js} +2 -2
- package/dist/admin/{useLicenseLimits-bLiwF5ah.js.map → useLicenseLimits-m11DOu9p.js.map} +1 -1
- package/dist/admin/{useWebhooks-Dae71Az5.mjs → useWebhooks-7BXPSMHG.mjs} +2 -2
- package/dist/admin/{useWebhooks-Dae71Az5.mjs.map → useWebhooks-7BXPSMHG.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-WyRAGIH5.js → useWebhooks-oZ5DKtvz.js} +2 -2
- package/dist/admin/{useWebhooks-WyRAGIH5.js.map → useWebhooks-oZ5DKtvz.js.map} +1 -1
- package/dist/admin/users-R5A0kUOV.js +33 -0
- package/dist/admin/users-R5A0kUOV.js.map +1 -0
- package/dist/admin/users-a4KTyEyc.mjs +30 -0
- package/dist/admin/users-a4KTyEyc.mjs.map +1 -0
- package/dist/admin/{validation-Tb5_X4v4.js → validation-2MGgF10o.js} +2 -2
- package/dist/admin/{validation-Tb5_X4v4.js.map → validation-2MGgF10o.js.map} +1 -1
- package/dist/admin/{validation-GUb7vvsl.mjs → validation-gH-06ERZ.mjs} +2 -2
- package/dist/admin/{validation-GUb7vvsl.mjs.map → validation-gH-06ERZ.mjs.map} +1 -1
- package/dist/ee/server/index.js +15 -15
- package/dist/ee/server/index.js.map +1 -1
- package/dist/ee/server/index.mjs +15 -15
- package/dist/ee/server/index.mjs.map +1 -1
- package/dist/package.json.d.ts +14 -14
- package/dist/server/index.js +30 -34
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +30 -34
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/webhooks.d.ts.map +1 -1
- package/dist/server/src/services/passport.d.ts.map +1 -1
- package/dist/server/src/validation/project-settings.d.ts +8 -8
- package/package.json +15 -15
- package/dist/admin/AuthenticatedLayout-GD2XM4Xh.js.map +0 -1
- package/dist/admin/AuthenticatedLayout-mta84NQE.mjs.map +0 -1
- package/dist/admin/CreateView-5zt3cfsd.js +0 -17
- package/dist/admin/CreateView-tQxib6Yo.js +0 -17
- package/dist/admin/EditPage-YUSwYkTW.js.map +0 -1
- package/dist/admin/EditPage-k_6aHRVf.mjs.map +0 -1
- package/dist/admin/Layout-Ojd0IVLT.js.map +0 -1
- package/dist/admin/Layout-fD9qm3jw.mjs.map +0 -1
- package/dist/admin/Theme-Gult7t3_.mjs.map +0 -1
- package/dist/admin/Theme-j7r62OPn.js.map +0 -1
- package/dist/admin/admin-vcfA8Zox.js.map +0 -1
- package/dist/admin/admin-w3o7ePNm.mjs.map +0 -1
- package/dist/admin/index-PCKQWB49.mjs.map +0 -1
- package/dist/admin/index-tmvI3DXu.js.map +0 -1
- package/dist/admin/selectors-1-hG3q3-.js +0 -8
- package/dist/admin/src/utils/hashAdminUserEmail.d.ts +0 -6
- package/dist/admin/users-BKmHEtNM.js +0 -19
- package/dist/admin/users-BKmHEtNM.js.map +0 -1
- package/dist/admin/users-P2ivP9Cm.mjs +0 -17
- package/dist/admin/users-P2ivP9Cm.mjs.map +0 -1
|
@@ -5,14 +5,14 @@ import { Envelop, Pencil, Trash } from '@strapi/icons';
|
|
|
5
5
|
import * as qs from 'qs';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { useNavigate, useLocation, NavLink } from 'react-router-dom';
|
|
8
|
-
import { e as errorsTrads, q as useCreateUserMutation, F as Form, I as InputRenderer, i as useAdminUsers, r as useDeleteManyUsersMutation, S as SearchInput, s as Filters, T as Table, P as Pagination } from './index-
|
|
9
|
-
import { u as useNotification, f as useAPIErrorHandler, b as useTypedSelector, P as Page, k as useRBAC } from './
|
|
8
|
+
import { e as errorsTrads, q as useCreateUserMutation, F as Form, I as InputRenderer, i as useAdminUsers, r as useDeleteManyUsersMutation, S as SearchInput, s as Filters, T as Table, P as Pagination } from './index-oBxjGftZ.mjs';
|
|
9
|
+
import { u as useNotification, f as useAPIErrorHandler, b as useTypedSelector, P as Page, k as useRBAC } from './rbac-sYT_mXH0.mjs';
|
|
10
10
|
import { u as useEnterprise } from './useEnterprise-jpsYZWzn.mjs';
|
|
11
|
-
import { g as getDisplayName } from './users-
|
|
11
|
+
import { g as getDisplayName } from './users-a4KTyEyc.mjs';
|
|
12
12
|
import { Breadcrumbs, Crumb } from '@strapi/design-system/v2';
|
|
13
13
|
import * as yup from 'yup';
|
|
14
|
-
import { i as isBaseQueryError } from './admin-
|
|
15
|
-
import { M as MagicLinkCE, S as SelectRoles } from './SelectRoles-
|
|
14
|
+
import { i as isBaseQueryError } from './admin-DUKhYsmP.mjs';
|
|
15
|
+
import { M as MagicLinkCE, S as SelectRoles } from './SelectRoles-V_PZUtVT.mjs';
|
|
16
16
|
|
|
17
17
|
const CreateActionCE = ({ onClick }) => {
|
|
18
18
|
const { formatMessage } = useIntl();
|
|
@@ -56,7 +56,7 @@ const ModalForm = ({ onToggle }) => {
|
|
|
56
56
|
);
|
|
57
57
|
const MagicLink = useEnterprise(
|
|
58
58
|
MagicLinkCE,
|
|
59
|
-
async () => (await import('./MagicLinkEE-
|
|
59
|
+
async () => (await import('./MagicLinkEE-AO_SBYi5.mjs')).MagicLinkEE
|
|
60
60
|
);
|
|
61
61
|
const [createUser] = useCreateUserMutation();
|
|
62
62
|
const headerTitle = formatMessage({
|
|
@@ -274,7 +274,7 @@ const ListPageCE = () => {
|
|
|
274
274
|
const { pagination, users = [] } = data ?? {};
|
|
275
275
|
const CreateAction = useEnterprise(
|
|
276
276
|
CreateActionCE,
|
|
277
|
-
async () => (await import('./CreateActionEE-
|
|
277
|
+
async () => (await import('./CreateActionEE-TcGdWjIN.mjs')).CreateActionEE
|
|
278
278
|
);
|
|
279
279
|
const headers = TABLE_HEADERS.map((header) => ({
|
|
280
280
|
...header,
|
|
@@ -518,7 +518,7 @@ const ListPage = () => {
|
|
|
518
518
|
ListPageCE,
|
|
519
519
|
async () => (
|
|
520
520
|
// eslint-disable-next-line import/no-cycle
|
|
521
|
-
(await import('./ListPage-
|
|
521
|
+
(await import('./ListPage-ZDEeaYvm.mjs')).UserListPageEE
|
|
522
522
|
)
|
|
523
523
|
);
|
|
524
524
|
if (!UsersListPage) {
|
|
@@ -532,4 +532,4 @@ const ProtectedListPage = () => {
|
|
|
532
532
|
};
|
|
533
533
|
|
|
534
534
|
export { ListPage, ListPageCE, ProtectedListPage };
|
|
535
|
-
//# sourceMappingURL=ListPage-
|
|
535
|
+
//# sourceMappingURL=ListPage-tniramRN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-TQPuZR4V.mjs","sources":["../../admin/src/pages/Settings/pages/Users/components/CreateActionCE.tsx","../../admin/src/pages/Settings/pages/Users/components/NewUserForm.tsx","../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import { Button, ButtonProps } from '@strapi/design-system';\nimport { Envelop } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface CreateActionCEProps extends Pick<ButtonProps, 'onClick'> {}\n\nconst CreateActionCE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onClick} startIcon={<Envelop />} size=\"S\">\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n );\n};\n\nexport { CreateActionCE };\nexport type { CreateActionCEProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, type FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { useCreateUserMutation } from '../../../../../services/users';\nimport { FormLayoutInputProps } from '../../../../../types/forms';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nimport { MagicLinkCE } from './MagicLinkCE';\nimport { SelectRoles } from './SelectRoles';\n\nimport type { Data } from '@strapi/types';\n\ninterface ModalFormProps {\n onToggle: () => void;\n}\n\ntype FormLayout = FormLayoutInputProps[][];\n\nconst ModalForm = ({ onToggle }: ModalFormProps) => {\n const [currentStep, setStep] = React.useState<keyof typeof STEPPER>('create');\n const [registrationToken, setRegistrationToken] = React.useState('');\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const roleLayout = useEnterprise<FormLayout, FormLayout, FormLayout>(\n ROLE_LAYOUT,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).ROLE_LAYOUT,\n {\n combine(ceRoles, eeRoles) {\n return [...ceRoles, ...eeRoles];\n },\n\n defaultValue: [],\n }\n );\n\n const initialValues = useEnterprise<InitialData>(\n FORM_INITIAL_VALUES,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).FORM_INITIAL_VALUES,\n {\n combine(ceValues, eeValues) {\n return {\n ...ceValues,\n ...eeValues,\n };\n },\n\n defaultValue: FORM_INITIAL_VALUES,\n }\n );\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n\n const [createUser] = useCreateUserMutation();\n\n const headerTitle = formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n });\n\n const handleSubmit = async (body: InitialData, { setErrors }: FormHelpers<InitialData>) => {\n const res = await createUser({\n ...body,\n roles: body.roles ?? [],\n });\n\n if ('data' in res) {\n if (res.data.registrationToken) {\n setRegistrationToken(res.data.registrationToken);\n\n goNext();\n } else {\n // This shouldn't happen, but just incase.\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n }\n }\n };\n\n const goNext = () => {\n if (next) {\n setStep(next);\n } else {\n onToggle();\n }\n };\n\n const { buttonSubmitLabel, isDisabled, next } = STEPPER[currentStep];\n\n // block rendering until the EE component is fully loaded\n if (!MagicLink) {\n return null;\n }\n\n return (\n <ModalLayout onClose={onToggle} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={headerTitle}>\n <Crumb isCurrent>{headerTitle}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <Form\n method={currentStep === 'create' ? 'POST' : 'PUT'}\n initialValues={initialValues ?? {}}\n onSubmit={handleSubmit}\n validationSchema={FORM_SCHEMA}\n >\n {({ isSubmitting }) => {\n return (\n <>\n <ModalBody>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {currentStep !== 'create' && <MagicLink registrationToken={registrationToken} />}\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'User details',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid gap={5}>\n {FORM_LAYOUT.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <GridItem key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={formatMessage(field.placeholder)}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Flex>\n </Box>\n </Box>\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Box paddingTop={4}>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles disabled={isDisabled} />\n </GridItem>\n {roleLayout.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <GridItem key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={\n field.placeholder ? formatMessage(field.placeholder) : undefined\n }\n hint={field.hint ? formatMessage(field.hint) : undefined}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Box>\n </Box>\n </Flex>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endActions={\n currentStep === 'create' ? (\n <Button type=\"submit\" loading={isSubmitting}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n ) : (\n <Button type=\"button\" loading={isSubmitting} onClick={onToggle}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n )\n }\n />\n </>\n );\n }}\n </Form>\n </ModalLayout>\n );\n};\n\ninterface InitialData {\n firstname?: string;\n lastname?: string;\n email?: string;\n roles?: Data.ID[];\n useSSORegistration?: boolean;\n}\n\nconst FORM_INITIAL_VALUES = {\n firstname: '',\n lastname: '',\n email: '',\n roles: [],\n};\n\nconst ROLE_LAYOUT: FormLayout = [];\n\nconst FORM_LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n ],\n] satisfies FormLayout;\n\nconst FORM_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst STEPPER = {\n create: {\n buttonSubmitLabel: {\n id: 'app.containers.Users.ModalForm.footer.button-success',\n defaultMessage: 'Invite user',\n },\n isDisabled: false,\n next: 'magic-link',\n },\n 'magic-link': {\n buttonSubmitLabel: { id: 'global.finish', defaultMessage: 'Finish' },\n isDisabled: true,\n next: null,\n },\n} as const;\n\nexport { ModalForm };\nexport type { InitialData };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n ContentLayout,\n HeaderLayout,\n Flex,\n Typography,\n Status,\n IconButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport * as qs from 'qs';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { Filters } from '../../../../components/Filters';\nimport { Page } from '../../../../components/PageHelpers';\nimport { Pagination } from '../../../../components/Pagination';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { Table } from '../../../../components/Table';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n const { data, isError, isLoading } = useAdminUsers(qs.parse(search, { ignoreQueryPrefix: true }));\n\n const { pagination, users = [] } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n const handleDeleteAll = async (ids: Array<SanitizedAdminUser['id']>) => {\n try {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'global.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleRowClick = (id: SanitizedAdminUser['id']) => () => {\n if (canRead) {\n navigate(id.toString());\n }\n };\n\n const handleDeleteClick = (id: SanitizedAdminUser['id']) => async () =>\n await handleDeleteAll([id]);\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n if (isError) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <HeaderLayout\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n <ActionLayout\n startActions={\n <>\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n <Filters.Root options={FILTERS}>\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n </>\n }\n />\n <ContentLayout>\n <Table.Root rows={users} headers={headers}>\n <Table.ActionBar />\n <Table.Content>\n <Table.Head>\n {canDelete ? <Table.HeaderCheckboxCell /> : null}\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {users.map((user) => (\n <Table.Row\n key={user.id}\n onClick={handleRowClick(user.id)}\n cursor={canRead ? 'pointer' : 'default'}\n >\n {canDelete ? <Table.CheckboxCell id={user.id} /> : null}\n {headers.map(({ cellFormatter, name, ...rest }) => {\n return (\n <Table.Cell key={name}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(user, { name, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{user[name] || '-'}</Typography>\n )}\n </Table.Cell>\n );\n })}\n {canRead || canDelete ? (\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n {canRead ? (\n <IconButton\n forwardedAs={NavLink}\n // @ts-expect-error – This is an issue in the DS with the as prop not adding the inferred props to the component.\n to={user.id.toString()}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getDisplayName(user) }\n )}\n noBorder\n icon={<Pencil />}\n />\n ) : null}\n {canDelete ? (\n <IconButton\n onClick={handleDeleteClick(user.id)}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getDisplayName(user) }\n )}\n noBorder\n icon={<Trash />}\n />\n ) : null}\n </Flex>\n </Table.Cell>\n ) : null}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root {...pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </ContentLayout>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n </Page.Main>\n );\n};\n\nconst TABLE_HEADERS: Array<\n Omit<Table.Header<SanitizedAdminUser, any>, 'label'> & { label: MessageDescriptor }\n> = [\n {\n name: 'firstname',\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n {\n name: 'lastname',\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n {\n name: 'email',\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n {\n name: 'roles',\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n cellFormatter({ roles }) {\n return (\n <Typography textColor=\"neutral800\">{roles.map((role) => role.name).join(',\\n')}</Typography>\n );\n },\n },\n {\n name: 'username',\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n {\n name: 'isActive',\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n cellFormatter({ isActive }) {\n return (\n <Flex>\n <Status\n size=\"S\"\n borderWidth={0}\n background=\"transparent\"\n color=\"neutral800\"\n variant={isActive ? 'success' : 'danger'}\n >\n {isActive ? 'Active' : 'Inactive'}\n </Status>\n </Flex>\n );\n },\n },\n];\n\nconst FILTERS = [\n {\n name: 'firstname',\n label: 'Firstname',\n type: 'string',\n },\n {\n name: 'lastname',\n label: 'Lastname',\n type: 'string',\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n },\n {\n name: 'username',\n label: 'Username',\n type: 'string',\n },\n {\n name: 'isActive',\n label: 'Active user',\n type: 'boolean',\n },\n] satisfies Filters.Filter[];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\n"],"names":["translatedErrors"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListPage-tniramRN.mjs","sources":["../../admin/src/pages/Settings/pages/Users/components/CreateActionCE.tsx","../../admin/src/pages/Settings/pages/Users/components/NewUserForm.tsx","../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import { Button, ButtonProps } from '@strapi/design-system';\nimport { Envelop } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface CreateActionCEProps extends Pick<ButtonProps, 'onClick'> {}\n\nconst CreateActionCE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onClick} startIcon={<Envelop />} size=\"S\">\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n );\n};\n\nexport { CreateActionCE };\nexport type { CreateActionCEProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, type FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { useCreateUserMutation } from '../../../../../services/users';\nimport { FormLayoutInputProps } from '../../../../../types/forms';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nimport { MagicLinkCE } from './MagicLinkCE';\nimport { SelectRoles } from './SelectRoles';\n\nimport type { Data } from '@strapi/types';\n\ninterface ModalFormProps {\n onToggle: () => void;\n}\n\ntype FormLayout = FormLayoutInputProps[][];\n\nconst ModalForm = ({ onToggle }: ModalFormProps) => {\n const [currentStep, setStep] = React.useState<keyof typeof STEPPER>('create');\n const [registrationToken, setRegistrationToken] = React.useState('');\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const roleLayout = useEnterprise<FormLayout, FormLayout, FormLayout>(\n ROLE_LAYOUT,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).ROLE_LAYOUT,\n {\n combine(ceRoles, eeRoles) {\n return [...ceRoles, ...eeRoles];\n },\n\n defaultValue: [],\n }\n );\n\n const initialValues = useEnterprise<InitialData>(\n FORM_INITIAL_VALUES,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).FORM_INITIAL_VALUES,\n {\n combine(ceValues, eeValues) {\n return {\n ...ceValues,\n ...eeValues,\n };\n },\n\n defaultValue: FORM_INITIAL_VALUES,\n }\n );\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n\n const [createUser] = useCreateUserMutation();\n\n const headerTitle = formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n });\n\n const handleSubmit = async (body: InitialData, { setErrors }: FormHelpers<InitialData>) => {\n const res = await createUser({\n ...body,\n roles: body.roles ?? [],\n });\n\n if ('data' in res) {\n if (res.data.registrationToken) {\n setRegistrationToken(res.data.registrationToken);\n\n goNext();\n } else {\n // This shouldn't happen, but just incase.\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n }\n }\n };\n\n const goNext = () => {\n if (next) {\n setStep(next);\n } else {\n onToggle();\n }\n };\n\n const { buttonSubmitLabel, isDisabled, next } = STEPPER[currentStep];\n\n // block rendering until the EE component is fully loaded\n if (!MagicLink) {\n return null;\n }\n\n return (\n <ModalLayout onClose={onToggle} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={headerTitle}>\n <Crumb isCurrent>{headerTitle}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <Form\n method={currentStep === 'create' ? 'POST' : 'PUT'}\n initialValues={initialValues ?? {}}\n onSubmit={handleSubmit}\n validationSchema={FORM_SCHEMA}\n >\n {({ isSubmitting }) => {\n return (\n <>\n <ModalBody>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {currentStep !== 'create' && <MagicLink registrationToken={registrationToken} />}\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'User details',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid gap={5}>\n {FORM_LAYOUT.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <GridItem key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={formatMessage(field.placeholder)}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Flex>\n </Box>\n </Box>\n <Box>\n <Typography variant=\"beta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Box paddingTop={4}>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles disabled={isDisabled} />\n </GridItem>\n {roleLayout.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <GridItem key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={\n field.placeholder ? formatMessage(field.placeholder) : undefined\n }\n hint={field.hint ? formatMessage(field.hint) : undefined}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Box>\n </Box>\n </Flex>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endActions={\n currentStep === 'create' ? (\n <Button type=\"submit\" loading={isSubmitting}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n ) : (\n <Button type=\"button\" loading={isSubmitting} onClick={onToggle}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n )\n }\n />\n </>\n );\n }}\n </Form>\n </ModalLayout>\n );\n};\n\ninterface InitialData {\n firstname?: string;\n lastname?: string;\n email?: string;\n roles?: Data.ID[];\n useSSORegistration?: boolean;\n}\n\nconst FORM_INITIAL_VALUES = {\n firstname: '',\n lastname: '',\n email: '',\n roles: [],\n};\n\nconst ROLE_LAYOUT: FormLayout = [];\n\nconst FORM_LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n ],\n] satisfies FormLayout;\n\nconst FORM_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst STEPPER = {\n create: {\n buttonSubmitLabel: {\n id: 'app.containers.Users.ModalForm.footer.button-success',\n defaultMessage: 'Invite user',\n },\n isDisabled: false,\n next: 'magic-link',\n },\n 'magic-link': {\n buttonSubmitLabel: { id: 'global.finish', defaultMessage: 'Finish' },\n isDisabled: true,\n next: null,\n },\n} as const;\n\nexport { ModalForm };\nexport type { InitialData };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n ContentLayout,\n HeaderLayout,\n Flex,\n Typography,\n Status,\n IconButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport * as qs from 'qs';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { Filters } from '../../../../components/Filters';\nimport { Page } from '../../../../components/PageHelpers';\nimport { Pagination } from '../../../../components/Pagination';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { Table } from '../../../../components/Table';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n const { data, isError, isLoading } = useAdminUsers(qs.parse(search, { ignoreQueryPrefix: true }));\n\n const { pagination, users = [] } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n const handleDeleteAll = async (ids: Array<SanitizedAdminUser['id']>) => {\n try {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'global.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleRowClick = (id: SanitizedAdminUser['id']) => () => {\n if (canRead) {\n navigate(id.toString());\n }\n };\n\n const handleDeleteClick = (id: SanitizedAdminUser['id']) => async () =>\n await handleDeleteAll([id]);\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n if (isError) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <HeaderLayout\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n <ActionLayout\n startActions={\n <>\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n <Filters.Root options={FILTERS}>\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n </>\n }\n />\n <ContentLayout>\n <Table.Root rows={users} headers={headers}>\n <Table.ActionBar />\n <Table.Content>\n <Table.Head>\n {canDelete ? <Table.HeaderCheckboxCell /> : null}\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {users.map((user) => (\n <Table.Row\n key={user.id}\n onClick={handleRowClick(user.id)}\n cursor={canRead ? 'pointer' : 'default'}\n >\n {canDelete ? <Table.CheckboxCell id={user.id} /> : null}\n {headers.map(({ cellFormatter, name, ...rest }) => {\n return (\n <Table.Cell key={name}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(user, { name, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{user[name] || '-'}</Typography>\n )}\n </Table.Cell>\n );\n })}\n {canRead || canDelete ? (\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n {canRead ? (\n <IconButton\n forwardedAs={NavLink}\n // @ts-expect-error – This is an issue in the DS with the as prop not adding the inferred props to the component.\n to={user.id.toString()}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getDisplayName(user) }\n )}\n noBorder\n icon={<Pencil />}\n />\n ) : null}\n {canDelete ? (\n <IconButton\n onClick={handleDeleteClick(user.id)}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getDisplayName(user) }\n )}\n noBorder\n icon={<Trash />}\n />\n ) : null}\n </Flex>\n </Table.Cell>\n ) : null}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root {...pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </ContentLayout>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n </Page.Main>\n );\n};\n\nconst TABLE_HEADERS: Array<\n Omit<Table.Header<SanitizedAdminUser, any>, 'label'> & { label: MessageDescriptor }\n> = [\n {\n name: 'firstname',\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n {\n name: 'lastname',\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n {\n name: 'email',\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n {\n name: 'roles',\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n cellFormatter({ roles }) {\n return (\n <Typography textColor=\"neutral800\">{roles.map((role) => role.name).join(',\\n')}</Typography>\n );\n },\n },\n {\n name: 'username',\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n {\n name: 'isActive',\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n cellFormatter({ isActive }) {\n return (\n <Flex>\n <Status\n size=\"S\"\n borderWidth={0}\n background=\"transparent\"\n color=\"neutral800\"\n variant={isActive ? 'success' : 'danger'}\n >\n {isActive ? 'Active' : 'Inactive'}\n </Status>\n </Flex>\n );\n },\n },\n];\n\nconst FILTERS = [\n {\n name: 'firstname',\n label: 'Firstname',\n type: 'string',\n },\n {\n name: 'lastname',\n label: 'Lastname',\n type: 'string',\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n },\n {\n name: 'username',\n label: 'Username',\n type: 'string',\n },\n {\n name: 'isActive',\n label: 'Active user',\n type: 'boolean',\n },\n] satisfies Filters.Filter[];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\n"],"names":["translatedErrors"],"mappings":"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"}
|
|
@@ -9,11 +9,11 @@ const icons = require('@strapi/icons');
|
|
|
9
9
|
const qs = require('qs');
|
|
10
10
|
const reactIntl = require('react-intl');
|
|
11
11
|
const reactRouterDom = require('react-router-dom');
|
|
12
|
-
const
|
|
12
|
+
const rbac = require('./rbac-WZsv1761.js');
|
|
13
13
|
const useOnce = require('./useOnce--ZSbXFh3.js');
|
|
14
|
-
const transferTokens = require('./transferTokens-
|
|
14
|
+
const transferTokens = require('./transferTokens-5qQjIKFd.js');
|
|
15
15
|
const constants = require('./constants-8PhEUZTR.js');
|
|
16
|
-
const Table = require('./Table-
|
|
16
|
+
const Table = require('./Table-kMt3jQ2g.js');
|
|
17
17
|
|
|
18
18
|
function _interopNamespace(e) {
|
|
19
19
|
if (e && e.__esModule) return e;
|
|
@@ -72,17 +72,17 @@ const tableHeaders = [
|
|
|
72
72
|
];
|
|
73
73
|
const ListView = () => {
|
|
74
74
|
const { formatMessage } = reactIntl.useIntl();
|
|
75
|
-
const { toggleNotification } =
|
|
76
|
-
const permissions =
|
|
75
|
+
const { toggleNotification } = rbac.useNotification();
|
|
76
|
+
const permissions = rbac.useTypedSelector(
|
|
77
77
|
(state) => state.admin_app.permissions.settings?.["transfer-tokens"]
|
|
78
78
|
);
|
|
79
79
|
const {
|
|
80
80
|
isLoading: isLoadingRBAC,
|
|
81
81
|
allowedActions: { canCreate, canDelete, canUpdate, canRead }
|
|
82
|
-
} =
|
|
82
|
+
} = rbac.useRBAC(permissions);
|
|
83
83
|
const navigate = reactRouterDom.useNavigate();
|
|
84
|
-
const { trackUsage } =
|
|
85
|
-
const { _unstableFormatAPIError: formatAPIError } =
|
|
84
|
+
const { trackUsage } = rbac.useTracking();
|
|
85
|
+
const { _unstableFormatAPIError: formatAPIError } = rbac.useAPIErrorHandler();
|
|
86
86
|
React__namespace.useEffect(() => {
|
|
87
87
|
navigate({ search: qs__namespace.stringify({ sort: "name:ASC" }, { encode: false }) });
|
|
88
88
|
}, [navigate]);
|
|
@@ -137,7 +137,7 @@ const ListView = () => {
|
|
|
137
137
|
};
|
|
138
138
|
const isLoading = isLoadingTokens || isLoadingRBAC;
|
|
139
139
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
140
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
140
|
+
/* @__PURE__ */ jsxRuntime.jsx(rbac.Page.Title, { children: formatMessage(
|
|
141
141
|
{ id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
|
|
142
142
|
{
|
|
143
143
|
name: "Transfer Tokens"
|
|
@@ -173,7 +173,7 @@ const ListView = () => {
|
|
|
173
173
|
) : void 0
|
|
174
174
|
}
|
|
175
175
|
),
|
|
176
|
-
!canRead ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
176
|
+
!canRead ? /* @__PURE__ */ jsxRuntime.jsx(rbac.Page.NoPermissions, {}) : /* @__PURE__ */ jsxRuntime.jsx(rbac.Page.Main, { "aria-busy": isLoading, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ContentLayout, { children: [
|
|
177
177
|
transferTokens$1.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
178
178
|
Table.Table,
|
|
179
179
|
{
|
|
@@ -221,12 +221,12 @@ const ListView = () => {
|
|
|
221
221
|
] });
|
|
222
222
|
};
|
|
223
223
|
const ProtectedListView = () => {
|
|
224
|
-
const permissions =
|
|
224
|
+
const permissions = rbac.useTypedSelector(
|
|
225
225
|
(state) => state.admin_app.permissions.settings?.["transfer-tokens"].main
|
|
226
226
|
);
|
|
227
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
227
|
+
return /* @__PURE__ */ jsxRuntime.jsx(rbac.Page.Protect, { permissions, children: /* @__PURE__ */ jsxRuntime.jsx(ListView, {}) });
|
|
228
228
|
};
|
|
229
229
|
|
|
230
230
|
exports.ListView = ListView;
|
|
231
231
|
exports.ProtectedListView = ProtectedListView;
|
|
232
|
-
//# sourceMappingURL=ListView-
|
|
232
|
+
//# sourceMappingURL=ListView-1VRmjfh8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView-9E8SVTSf.js","sources":["../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["useIntl","useNotification","useTypedSelector","useRBAC","useNavigate","useTracking","useAPIErrorHandler","React","qs","useOnce","TRANSFER_TOKEN_TYPE","transferTokens","useGetTransferTokensQuery","useDeleteTransferTokenMutation","jsxs","Fragment","jsx","Page","HeaderLayout","LinkButton","Plus","ContentLayout","Table","EmptyStateLayout","EmptyDocuments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView-1VRmjfh8.js","sources":["../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["useIntl","useNotification","useTypedSelector","useRBAC","useNavigate","useTracking","useAPIErrorHandler","React","qs","useOnce","TRANSFER_TOKEN_TYPE","transferTokens","useGetTransferTokensQuery","useDeleteTransferTokenMutation","jsxs","Fragment","jsx","Page","HeaderLayout","LinkButton","Plus","ContentLayout","Table","EmptyStateLayout","EmptyDocuments"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,YAAe,GAAA;AAAA,EACnB;AAAA,IACE,IAAM,EAAA,MAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,uCAAA;AAAA,MACJ,cAAgB,EAAA,MAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EACA;AAAA,IACE,IAAM,EAAA,aAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,8CAAA;AAAA,MACJ,cAAgB,EAAA,aAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA;AAAA,IACE,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,YAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA;AAAA,IACE,IAAM,EAAA,YAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,6CAAA;AAAA,MACJ,cAAgB,EAAA,WAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,KAAA;AAAA,GACZ;AACF,CAAA,CAAA;AAMA,MAAM,WAAW,MAAM;AACrB,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIA,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,oBAAgB,EAAA,CAAA;AAC/C,EAAA,MAAM,WAAc,GAAAC,qBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,SAAU,CAAA,WAAA,CAAY,WAAW,iBAAiB,CAAA;AAAA,GACrE,CAAA;AACA,EAAM,MAAA;AAAA,IACJ,SAAW,EAAA,aAAA;AAAA,IACX,cAAgB,EAAA,EAAE,SAAW,EAAA,SAAA,EAAW,WAAW,OAAQ,EAAA;AAAA,GAC7D,GAAIC,aAAQ,WAAW,CAAA,CAAA;AACvB,EAAA,MAAM,WAAWC,0BAAY,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,gBAAY,EAAA,CAAA;AACnC,EAAA,MAAM,EAAE,uBAAA,EAAyB,cAAe,EAAA,GAAIC,uBAAmB,EAAA,CAAA;AAEvE,EAAAC,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,QAAA,CAAS,EAAE,MAAA,EAAQC,aAAG,CAAA,SAAA,CAAU,EAAE,IAAA,EAAM,UAAW,EAAA,EAAG,EAAE,MAAA,EAAQ,KAAM,EAAC,GAAG,CAAA,CAAA;AAAA,GAC5E,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AAEb,EAAAC,eAAA,CAAQ,MAAM;AACZ,IAAA,UAAA,CAAW,qBAAuB,EAAA;AAAA,MAChC,SAAW,EAAAC,6BAAA;AAAA,KACZ,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAA,MAAM,OAAU,GAAA,YAAA,CAAa,GAAI,CAAA,CAAC,MAAY,MAAA;AAAA,IAC5C,GAAG,MAAA;AAAA,IACH,KAAA,EAAO,aAAc,CAAA,MAAA,CAAO,KAAK,CAAA;AAAA,GACjC,CAAA,CAAA,CAAA;AAEF,EAAM,MAAA;AAAA,IACJ,IAAA,EAAMC,mBAAiB,EAAC;AAAA,IACxB,SAAW,EAAA,eAAA;AAAA,IACX,KAAA;AAAA,GACF,GAAIC,yCAA0B,KAAW,CAAA,EAAA;AAAA,IACvC,MAAM,CAAC,OAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAAL,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAII,gBAAgB,EAAA;AAClB,MAAA,UAAA,CAAW,oBAAsB,EAAA;AAAA,QAC/B,QAAQA,gBAAe,CAAA,MAAA;AAAA,QACvB,SAAW,EAAAD,6BAAA;AAAA,OACZ,CAAA,CAAA;AAAA,KACH;AAAA,GACC,EAAA,CAAC,UAAY,EAAAC,gBAAc,CAAC,CAAA,CAAA;AAE/B,EAAAJ,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,KAAO,EAAA;AACT,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,OAAA,EAAS,eAAe,KAAK,CAAA;AAAA,OAC9B,CAAA,CAAA;AAAA,KACH;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,cAAA,EAAgB,kBAAkB,CAAC,CAAA,CAAA;AAE9C,EAAM,MAAA,CAAC,WAAW,CAAA,GAAIM,6CAA+B,EAAA,CAAA;AAErD,EAAM,MAAA,YAAA,GAAe,OAAO,EAAgB,KAAA;AAC1C,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAM,MAAM,WAAA,CAAY,EAAE,CAAA,CAAA;AAEhC,MAAA,IAAI,WAAW,GAAK,EAAA;AAClB,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,QAAA;AAAA,UACN,OAAA,EAAS,cAAe,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,SAClC,CAAA,CAAA;AAAA,OACH;AAAA,KACM,CAAA,MAAA;AACN,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,SAAS,aAAc,CAAA,EAAE,IAAI,oBAAsB,EAAA,cAAA,EAAgB,oBAAoB,CAAA;AAAA,OACxF,CAAA,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,YAAY,eAAmB,IAAA,aAAA,CAAA;AAErC,EAAA,uBAEIC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAAC,SAAA,CAAK,OAAL,EACE,QAAA,EAAA,aAAA;AAAA,MACC,EAAE,EAAA,EAAI,oBAAsB,EAAA,cAAA,EAAgB,mBAAoB,EAAA;AAAA,MAChE;AAAA,QACE,IAAM,EAAA,iBAAA;AAAA,OACR;AAAA,KAEJ,EAAA,CAAA;AAAA,oBACAD,cAAA;AAAA,MAACE,yBAAA;AAAA,MAAA;AAAA,QACC,OAAO,aAAc,CAAA;AAAA,UACnB,EAAI,EAAA,+BAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,QACD,UAAU,aAAc,CAAA;AAAA,UACtB,EAAI,EAAA,qCAAA;AAAA,UACJ,cAAgB,EAAA,qCAAA;AAAA;AAAA,SACjB,CAAA;AAAA,QACD,eACE,SACE,mBAAAF,cAAA;AAAA,UAACG,uBAAA;AAAA,UAAA;AAAA,YACC,aAAY,EAAA,8BAAA;AAAA,YACZ,SAAA,iCAAYC,UAAK,EAAA,EAAA,CAAA;AAAA,YACjB,IAAK,EAAA,GAAA;AAAA,YACL,OAAA,EAAS,MACP,UAAA,CAAW,sBAAwB,EAAA;AAAA,cACjC,SAAW,EAAAV,6BAAA;AAAA,aACZ,CAAA;AAAA,YAEH,EAAG,EAAA,kCAAA;AAAA,YAEF,QAAc,EAAA,aAAA,CAAA;AAAA,cACb,EAAI,EAAA,gCAAA;AAAA,cACJ,cAAgB,EAAA,2BAAA;AAAA,aACjB,CAAA;AAAA,WAAA;AAAA,SAED,GAAA,KAAA,CAAA;AAAA,OAAA;AAAA,KAER;AAAA,IACC,CAAC,OAAA,mBACCM,cAAA,CAAAC,SAAA,CAAK,eAAL,EAAmB,CAAA,mBAEnBD,cAAA,CAAAC,SAAA,CAAK,IAAL,EAAA,EAAU,WAAW,EAAA,SAAA,EACpB,0CAACI,0BACE,EAAA,EAAA,QAAA,EAAA;AAAA,MAAAV,gBAAA,CAAe,SAAS,CACvB,oBAAAK,cAAA;AAAA,QAACM,WAAA;AAAA,QAAA;AAAA,UACC,WAAa,EAAA,EAAE,OAAS,EAAA,SAAA,EAAW,SAAU,EAAA;AAAA,UAC7C,OAAA;AAAA,UACA,SAAA;AAAA,UACA,eAAiB,EAAA,YAAA;AAAA,UACjB,MAAQ,EAAAX,gBAAA;AAAA,UACR,SAAW,EAAAD,6BAAA;AAAA,SAAA;AAAA,OACb;AAAA,MAED,SAAA,IAAaC,gBAAe,CAAA,MAAA,KAAW,CACtC,mBAAAK,cAAA;AAAA,QAACO,6BAAA;AAAA,QAAA;AAAA,UACC,MACE,kBAAAP,cAAA;AAAA,YAACG,uBAAA;AAAA,YAAA;AAAA,cACC,OAAQ,EAAA,WAAA;AAAA,cACR,SAAA,iCAAYC,UAAK,EAAA,EAAA,CAAA;AAAA,cACjB,EAAG,EAAA,kCAAA;AAAA,cAEF,QAAc,EAAA,aAAA,CAAA;AAAA,gBACb,EAAI,EAAA,qCAAA;AAAA,gBACJ,cAAgB,EAAA,wBAAA;AAAA,eACjB,CAAA;AAAA,aAAA;AAAA,WACH;AAAA,UAEF,IAAM,kBAAAJ,cAAA,CAACQ,oBAAe,EAAA,EAAA,KAAA,EAAM,OAAQ,EAAA,CAAA;AAAA,UACpC,SAAS,aAAc,CAAA;AAAA,YACrB,EAAI,EAAA,uCAAA;AAAA,YACJ,cAAgB,EAAA,+BAAA;AAAA,WACjB,CAAA;AAAA,SAAA;AAAA,OAED,GAAA,IAAA;AAAA,MACH,CAAC,SAAA,IAAab,gBAAe,CAAA,MAAA,KAAW,CACvC,mBAAAK,cAAA;AAAA,QAACO,6BAAA;AAAA,QAAA;AAAA,UACC,IAAM,kBAAAP,cAAA,CAACQ,oBAAe,EAAA,EAAA,KAAA,EAAM,OAAQ,EAAA,CAAA;AAAA,UACpC,SAAS,aAAc,CAAA;AAAA,YACrB,EAAI,EAAA,0CAAA;AAAA,YACJ,cAAgB,EAAA,mCAAA;AAAA,WACjB,CAAA;AAAA,SAAA;AAAA,OAED,GAAA,IAAA;AAAA,KAAA,EACN,CACF,EAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,EAAA;AAMA,MAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM,WAAc,GAAAtB,qBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,UAAU,WAAY,CAAA,QAAA,GAAW,iBAAiB,CAAE,CAAA,IAAA;AAAA,GACvE,CAAA;AAEA,EAAA,sCACGe,SAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAAD,cAAA,CAAC,YAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;;"}
|
|
@@ -5,12 +5,12 @@ import { Plus, EmptyDocuments } from '@strapi/icons';
|
|
|
5
5
|
import * as qs from 'qs';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { useNavigate } from 'react-router-dom';
|
|
8
|
-
import { j as useGuidedTour } from './index-
|
|
9
|
-
import { b as useTypedSelector, P as Page, u as useNotification, k as useRBAC, d as useTracking, f as useAPIErrorHandler } from './
|
|
8
|
+
import { j as useGuidedTour } from './index-oBxjGftZ.mjs';
|
|
9
|
+
import { b as useTypedSelector, P as Page, u as useNotification, k as useRBAC, d as useTracking, f as useAPIErrorHandler } from './rbac-sYT_mXH0.mjs';
|
|
10
10
|
import { u as useOnce } from './useOnce-GJ2Ta2mZ.mjs';
|
|
11
|
-
import { u as useGetAPITokensQuery, a as useDeleteAPITokenMutation } from './apiTokens-
|
|
11
|
+
import { u as useGetAPITokensQuery, a as useDeleteAPITokenMutation } from './apiTokens-dBRuo1wd.mjs';
|
|
12
12
|
import { A as API_TOKEN_TYPE } from './constants-EoEtSd4i.mjs';
|
|
13
|
-
import { T as Table } from './Table-
|
|
13
|
+
import { T as Table } from './Table-ZFyORhH3.mjs';
|
|
14
14
|
|
|
15
15
|
const TABLE_HEADERS = [
|
|
16
16
|
{
|
|
@@ -194,4 +194,4 @@ const ProtectedListView = () => {
|
|
|
194
194
|
};
|
|
195
195
|
|
|
196
196
|
export { ListView, ProtectedListView };
|
|
197
|
-
//# sourceMappingURL=ListView-
|
|
197
|
+
//# sourceMappingURL=ListView-6hlTFx5H.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView-T5y4ambL.mjs","sources":["../../admin/src/pages/Settings/pages/ApiTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../components/GuidedTour/Provider';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useDeleteAPITokenMutation, useGetAPITokensQuery } from '../../../../services/apiTokens';\nimport { API_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst TABLE_HEADERS = [\n {\n name: 'name',\n label: {\n id: 'Settings.apiTokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.apiTokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n];\n\nexport const ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens']\n );\n const {\n allowedActions: { canRead, canCreate, canDelete, canUpdate },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const startSection = useGuidedTour('ListView', (state) => state.startSection);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n startSection('apiTokens');\n }, [startSection]);\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: API_TOKEN_TYPE,\n });\n });\n\n const { data: apiTokens = [], isLoading, error } = useGetAPITokensQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n trackUsage('didAccessTokenList', { number: apiTokens.length, tokenType: API_TOKEN_TYPE });\n }, [apiTokens, trackUsage]);\n\n const [deleteToken] = useDeleteAPITokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n trackUsage('didDeleteToken');\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' })}\n subtitle={formatMessage({\n id: 'Settings.apiTokens.description',\n defaultMessage: 'List of generated tokens to consume the API',\n })}\n primaryAction={\n canCreate && (\n <LinkButton\n data-testid=\"create-api-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n })\n }\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.create',\n defaultMessage: 'Create new API Token',\n })}\n </LinkButton>\n )\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {apiTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={apiTokens}\n tokenType={API_TOKEN_TYPE}\n />\n )}\n {canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.addFirstToken',\n defaultMessage: 'Add your first API Token',\n })}\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.addNewToken',\n defaultMessage: 'Add new API Token',\n })}\n </LinkButton>\n }\n />\n ) : null}\n {!canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\nexport const ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView-6hlTFx5H.mjs","sources":["../../admin/src/pages/Settings/pages/ApiTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../components/GuidedTour/Provider';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useDeleteAPITokenMutation, useGetAPITokensQuery } from '../../../../services/apiTokens';\nimport { API_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst TABLE_HEADERS = [\n {\n name: 'name',\n label: {\n id: 'Settings.apiTokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.apiTokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n];\n\nexport const ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens']\n );\n const {\n allowedActions: { canRead, canCreate, canDelete, canUpdate },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const startSection = useGuidedTour('ListView', (state) => state.startSection);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n startSection('apiTokens');\n }, [startSection]);\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: API_TOKEN_TYPE,\n });\n });\n\n const { data: apiTokens = [], isLoading, error } = useGetAPITokensQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n trackUsage('didAccessTokenList', { number: apiTokens.length, tokenType: API_TOKEN_TYPE });\n }, [apiTokens, trackUsage]);\n\n const [deleteToken] = useDeleteAPITokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n trackUsage('didDeleteToken');\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' })}\n subtitle={formatMessage({\n id: 'Settings.apiTokens.description',\n defaultMessage: 'List of generated tokens to consume the API',\n })}\n primaryAction={\n canCreate && (\n <LinkButton\n data-testid=\"create-api-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n })\n }\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.create',\n defaultMessage: 'Create new API Token',\n })}\n </LinkButton>\n )\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {apiTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={apiTokens}\n tokenType={API_TOKEN_TYPE}\n />\n )}\n {canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.addFirstToken',\n defaultMessage: 'Add your first API Token',\n })}\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.addNewToken',\n defaultMessage: 'Add new API Token',\n })}\n </LinkButton>\n }\n />\n ) : null}\n {!canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\nexport const ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,11 @@ import { Plus, EmptyDocuments } from '@strapi/icons';
|
|
|
5
5
|
import * as qs from 'qs';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { useNavigate } from 'react-router-dom';
|
|
8
|
-
import { b as useTypedSelector, P as Page, u as useNotification, k as useRBAC, d as useTracking, f as useAPIErrorHandler } from './
|
|
8
|
+
import { b as useTypedSelector, P as Page, u as useNotification, k as useRBAC, d as useTracking, f as useAPIErrorHandler } from './rbac-sYT_mXH0.mjs';
|
|
9
9
|
import { u as useOnce } from './useOnce-GJ2Ta2mZ.mjs';
|
|
10
|
-
import { c as useGetTransferTokensQuery, d as useDeleteTransferTokenMutation } from './transferTokens-
|
|
10
|
+
import { c as useGetTransferTokensQuery, d as useDeleteTransferTokenMutation } from './transferTokens-OLPKYcY_.mjs';
|
|
11
11
|
import { T as TRANSFER_TOKEN_TYPE } from './constants-EoEtSd4i.mjs';
|
|
12
|
-
import { T as Table } from './Table-
|
|
12
|
+
import { T as Table } from './Table-ZFyORhH3.mjs';
|
|
13
13
|
|
|
14
14
|
const tableHeaders = [
|
|
15
15
|
{
|
|
@@ -203,4 +203,4 @@ const ProtectedListView = () => {
|
|
|
203
203
|
};
|
|
204
204
|
|
|
205
205
|
export { ListView, ProtectedListView };
|
|
206
|
-
//# sourceMappingURL=ListView-
|
|
206
|
+
//# sourceMappingURL=ListView-GYuN24HV.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView-jUavvOoD.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView-GYuN24HV.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":[],"mappings":"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"}
|