@strapi/admin 5.0.0-alpha.0 → 5.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AdminSeatInfo-YaA1q_2d.js → AdminSeatInfo-JtsYpBbO.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-YaA1q_2d.js.map → AdminSeatInfo-JtsYpBbO.js.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-l78lfIiY.mjs → AdminSeatInfo-ZZsKxX-S.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-l78lfIiY.mjs.map → AdminSeatInfo-ZZsKxX-S.mjs.map} +1 -1
- package/dist/_chunks/{ApplicationInfoPage-Zn5JU2zd.mjs → ApplicationInfoPage-NhhWzHF1.mjs} +7 -8
- package/dist/_chunks/ApplicationInfoPage-NhhWzHF1.mjs.map +1 -0
- package/dist/_chunks/{ApplicationInfoPage-PHLA1Ysy.js → ApplicationInfoPage-xj1SCaSR.js} +5 -6
- package/dist/_chunks/ApplicationInfoPage-xj1SCaSR.js.map +1 -0
- package/dist/_chunks/{AuthResponse-1aYRF7_3.mjs → AuthResponse-jIqWZLMh.mjs} +2 -2
- package/dist/_chunks/{AuthResponse-1aYRF7_3.mjs.map → AuthResponse-jIqWZLMh.mjs.map} +1 -1
- package/dist/_chunks/{AuthResponse-7NG3smr6.js → AuthResponse-maUe9KWA.js} +2 -2
- package/dist/_chunks/{AuthResponse-7NG3smr6.js.map → AuthResponse-maUe9KWA.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedLayout-a7KNOdln.mjs → AuthenticatedLayout-Ffy6uoNF.mjs} +22 -15
- package/dist/_chunks/{AuthenticatedLayout-a7KNOdln.mjs.map → AuthenticatedLayout-Ffy6uoNF.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedLayout-5r4rzKeb.js → AuthenticatedLayout-kxORHKAl.js} +22 -15
- package/dist/_chunks/{AuthenticatedLayout-5r4rzKeb.js.map → AuthenticatedLayout-kxORHKAl.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-R3qV_iCR.js → ComponentConfigurationPage-JMCc1P7r.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-R3qV_iCR.js.map → ComponentConfigurationPage-JMCc1P7r.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-pb8HhFAg.mjs → ComponentConfigurationPage-oiBCHXQO.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-pb8HhFAg.mjs.map → ComponentConfigurationPage-oiBCHXQO.mjs.map} +1 -1
- package/dist/_chunks/{CreateActionEE-a2zWCIpQ.js → CreateActionEE-ThopeFZP.js} +2 -2
- package/dist/_chunks/{CreateActionEE-a2zWCIpQ.js.map → CreateActionEE-ThopeFZP.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-hb4Pr-SD.mjs → CreateActionEE-VMKfXSGW.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-hb4Pr-SD.mjs.map → CreateActionEE-VMKfXSGW.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-Bil0egZ1.mjs → CreatePage-6AeIanOF.mjs} +7 -7
- package/dist/_chunks/{CreatePage-Bil0egZ1.mjs.map → CreatePage-6AeIanOF.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-h5L6QP47.mjs → CreatePage-Gh5xb10f.mjs} +3 -3
- package/dist/_chunks/{CreatePage-h5L6QP47.mjs.map → CreatePage-Gh5xb10f.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-MAI6XyNg.js → CreatePage-JIHfFWS7.js} +3 -3
- package/dist/_chunks/{CreatePage-MAI6XyNg.js.map → CreatePage-JIHfFWS7.js.map} +1 -1
- package/dist/_chunks/{CreatePage-nl6zKkKT.js → CreatePage-WWKaoNH7.js} +7 -7
- package/dist/_chunks/{CreatePage-nl6zKkKT.js.map → CreatePage-WWKaoNH7.js.map} +1 -1
- package/dist/_chunks/{CreatePage-UC4uBFUR.mjs → CreatePage-hxFhldpL.mjs} +3 -3
- package/dist/_chunks/{CreatePage-UC4uBFUR.mjs.map → CreatePage-hxFhldpL.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-NSKUL8l4.js → CreatePage-yjmy0z57.js} +3 -3
- package/dist/_chunks/{CreatePage-NSKUL8l4.js.map → CreatePage-yjmy0z57.js.map} +1 -1
- package/dist/_chunks/{CreateView-kc0iM0LS.js → CreateView-J48m0lSL.js} +3 -3
- package/dist/_chunks/{CreateView-kc0iM0LS.js.map → CreateView-J48m0lSL.js.map} +1 -1
- package/dist/_chunks/{CreateView-3DMhoCPN.js → CreateView-Vqd1PVrJ.js} +3 -3
- package/dist/_chunks/{CreateView-3DMhoCPN.js.map → CreateView-Vqd1PVrJ.js.map} +1 -1
- package/dist/_chunks/{CreateView-RVrFxAFt.mjs → CreateView-oBp0NzJx.mjs} +3 -3
- package/dist/_chunks/{CreateView-RVrFxAFt.mjs.map → CreateView-oBp0NzJx.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-DuSt3AcE.mjs → CreateView-qzpeDBvR.mjs} +3 -3
- package/dist/_chunks/{CreateView-DuSt3AcE.mjs.map → CreateView-qzpeDBvR.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-y_TvxjZM.mjs → EditConfigurationPage-MAUfMzG6.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-y_TvxjZM.mjs.map → EditConfigurationPage-MAUfMzG6.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-OpEZOvAG.js → EditConfigurationPage-PKHUVKGD.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-OpEZOvAG.js.map → EditConfigurationPage-PKHUVKGD.js.map} +1 -1
- package/dist/_chunks/{EditPage-9aK8IFXY.js → EditPage-7bVupT7n.js} +8 -8
- package/dist/_chunks/{EditPage-9aK8IFXY.js.map → EditPage-7bVupT7n.js.map} +1 -1
- package/dist/_chunks/{EditPage-VoRR5DCQ.mjs → EditPage-DQUZsl8H.mjs} +9 -10
- package/dist/_chunks/EditPage-DQUZsl8H.mjs.map +1 -0
- package/dist/_chunks/{EditPage-PpBP7TBo.js → EditPage-Hxt5uBXk.js} +4 -4
- package/dist/_chunks/{EditPage-PpBP7TBo.js.map → EditPage-Hxt5uBXk.js.map} +1 -1
- package/dist/_chunks/{EditPage-fDVAYmuS.mjs → EditPage-Izmz7bdh.mjs} +8 -8
- package/dist/_chunks/{EditPage-fDVAYmuS.mjs.map → EditPage-Izmz7bdh.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-A6olBfVm.js → EditPage-QA0-S3kV.js} +7 -8
- package/dist/_chunks/EditPage-QA0-S3kV.js.map +1 -0
- package/dist/_chunks/{EditPage-_swY0Hy-.mjs → EditPage-THSaM4-0.mjs} +4 -4
- package/dist/_chunks/{EditPage-_swY0Hy-.mjs.map → EditPage-THSaM4-0.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-QoDSqYYq.js → EditPage-vUQIn3OJ.js} +5 -5
- package/dist/_chunks/{EditPage-QoDSqYYq.js.map → EditPage-vUQIn3OJ.js.map} +1 -1
- package/dist/_chunks/{EditPage-wfPrhkA7.mjs → EditPage-zpnfFOjc.mjs} +5 -5
- package/dist/_chunks/{EditPage-wfPrhkA7.mjs.map → EditPage-zpnfFOjc.mjs.map} +1 -1
- package/dist/_chunks/{EditView-C_ynfmtW.js → EditView-63ynF0vf.js} +5 -6
- package/dist/_chunks/EditView-63ynF0vf.js.map +1 -0
- package/dist/_chunks/{EditView-EuUw_2zc.mjs → EditView-cfOpTlAi.mjs} +7 -8
- package/dist/_chunks/EditView-cfOpTlAi.mjs.map +1 -0
- package/dist/_chunks/{EditViewPage-Z_e1dpbU.js → EditViewPage--SujdXIG.js} +5 -6
- package/dist/_chunks/EditViewPage--SujdXIG.js.map +1 -0
- package/dist/_chunks/{EditViewPage-xYzUSAwS.mjs → EditViewPage-JFzIJClS.mjs} +4 -5
- package/dist/_chunks/EditViewPage-JFzIJClS.mjs.map +1 -0
- package/dist/_chunks/{EditViewPage-XtJmgPi5.js → EditViewPage-kkCJlZyh.js} +6 -7
- package/dist/_chunks/EditViewPage-kkCJlZyh.js.map +1 -0
- package/dist/_chunks/{EditViewPage-8uPO5GWR.mjs → EditViewPage-vz8UJ4U_.mjs} +7 -8
- package/dist/_chunks/EditViewPage-vz8UJ4U_.mjs.map +1 -0
- package/dist/_chunks/{EventsTable-hI0aV29K.js → EventsTable-1X4uyY8J.js} +2 -2
- package/dist/_chunks/{EventsTable-hI0aV29K.js.map → EventsTable-1X4uyY8J.js.map} +1 -1
- package/dist/_chunks/{EventsTable-WP7PUujH.mjs → EventsTable-dN2MNNFu.mjs} +2 -2
- package/dist/_chunks/{EventsTable-WP7PUujH.mjs.map → EventsTable-dN2MNNFu.mjs.map} +1 -1
- package/dist/_chunks/{FieldTypeIcon-Is5Qjngf.mjs → FieldTypeIcon-4-UZzZla.mjs} +2 -2
- package/dist/_chunks/{FieldTypeIcon-Is5Qjngf.mjs.map → FieldTypeIcon-4-UZzZla.mjs.map} +1 -1
- package/dist/_chunks/{FieldTypeIcon-OeDSkshr.js → FieldTypeIcon-wxfhExw2.js} +2 -2
- package/dist/_chunks/{FieldTypeIcon-OeDSkshr.js.map → FieldTypeIcon-wxfhExw2.js.map} +1 -1
- package/dist/_chunks/{Filters-tMd2Q5jg.mjs → Filters--lh-i85A.mjs} +2 -3
- package/dist/_chunks/Filters--lh-i85A.mjs.map +1 -0
- package/dist/_chunks/{Filters-xVuf1kg6.js → Filters-V0VODaNk.js} +4 -5
- package/dist/_chunks/Filters-V0VODaNk.js.map +1 -0
- package/dist/_chunks/{Form-EiK_H9BI.js → Form-6QJjWK34.js} +3 -3
- package/dist/_chunks/{Form-EiK_H9BI.js.map → Form-6QJjWK34.js.map} +1 -1
- package/dist/_chunks/{Form-sZKjSFQC.mjs → Form-HXiNxSZi.mjs} +3 -3
- package/dist/_chunks/{Form-sZKjSFQC.mjs.map → Form-HXiNxSZi.mjs.map} +1 -1
- package/dist/_chunks/{History-1AF4LH3c.mjs → History-CRGqDfHr.mjs} +4 -5
- package/dist/_chunks/History-CRGqDfHr.mjs.map +1 -0
- package/dist/_chunks/{History-V_ik1IL0.js → History-R_4lEy01.js} +9 -10
- package/dist/_chunks/History-R_4lEy01.js.map +1 -0
- package/dist/_chunks/{HomePage-7Xva17wM.mjs → HomePage-GJRtRqAj.mjs} +3 -3
- package/dist/_chunks/{HomePage-7Xva17wM.mjs.map → HomePage-GJRtRqAj.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-C6Ivli1q.mjs → HomePage-Si17pjt5.mjs} +4 -4
- package/dist/_chunks/{HomePage-C6Ivli1q.mjs.map → HomePage-Si17pjt5.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-yrIp1-eG.js → HomePage-oiaJD-JE.js} +4 -4
- package/dist/_chunks/{HomePage-yrIp1-eG.js.map → HomePage-oiaJD-JE.js.map} +1 -1
- package/dist/_chunks/{HomePage-zL7HPV7A.js → HomePage-rEW7Jpww.js} +3 -3
- package/dist/_chunks/{HomePage-zL7HPV7A.js.map → HomePage-rEW7Jpww.js.map} +1 -1
- package/dist/_chunks/{InputRenderer-iP1kRki4.mjs → InputRenderer-JfwBoJk0.mjs} +23 -8
- package/dist/_chunks/InputRenderer-JfwBoJk0.mjs.map +1 -0
- package/dist/_chunks/{InputRenderer-RMnWnPI4.js → InputRenderer-hWILsDgK.js} +25 -10
- package/dist/_chunks/InputRenderer-hWILsDgK.js.map +1 -0
- package/dist/_chunks/{InstalledPluginsPage-7m_FfOGl.mjs → InstalledPluginsPage-XqzfeZgq.mjs} +5 -7
- package/dist/_chunks/InstalledPluginsPage-XqzfeZgq.mjs.map +1 -0
- package/dist/_chunks/{InstalledPluginsPage-PrMyistN.js → InstalledPluginsPage-ao6yYe7N.js} +4 -6
- package/dist/_chunks/InstalledPluginsPage-ao6yYe7N.js.map +1 -0
- package/dist/_chunks/{Layout-tDfvrUZo.mjs → Layout-2dctwEHz.mjs} +2 -2
- package/dist/_chunks/{Layout-tDfvrUZo.mjs.map → Layout-2dctwEHz.mjs.map} +1 -1
- package/dist/_chunks/{Layout-EDS3Yv8X.mjs → Layout-3sYAgWn4.mjs} +4 -4
- package/dist/_chunks/{Layout-EDS3Yv8X.mjs.map → Layout-3sYAgWn4.mjs.map} +1 -1
- package/dist/_chunks/{Layout-DC68R0Fa.js → Layout-4vMUN0Ez.js} +2 -2
- package/dist/_chunks/{Layout-DC68R0Fa.js.map → Layout-4vMUN0Ez.js.map} +1 -1
- package/dist/_chunks/{Layout-9Li8e-qi.js → Layout-kbqdKkiF.js} +4 -4
- package/dist/_chunks/{Layout-9Li8e-qi.js.map → Layout-kbqdKkiF.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-Gl8AA-2t.js → ListConfigurationPage-BXuW_9Wt.js} +3 -3
- package/dist/_chunks/{ListConfigurationPage-Gl8AA-2t.js.map → ListConfigurationPage-BXuW_9Wt.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-7O7HiJjG.mjs → ListConfigurationPage-lPILAPkW.mjs} +3 -3
- package/dist/_chunks/{ListConfigurationPage-7O7HiJjG.mjs.map → ListConfigurationPage-lPILAPkW.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-_i7RNkUF.js → ListPage-02WM7Pt9.js} +6 -7
- package/dist/_chunks/ListPage-02WM7Pt9.js.map +1 -0
- package/dist/_chunks/{ListPage-em8KMoKx.js → ListPage-7TAp-q4k.js} +8 -9
- package/dist/_chunks/ListPage-7TAp-q4k.js.map +1 -0
- package/dist/_chunks/{ListPage-RlY1nro4.mjs → ListPage-EdOy02-v.mjs} +6 -7
- package/dist/_chunks/ListPage-EdOy02-v.mjs.map +1 -0
- package/dist/_chunks/{ListPage-1q5Fi4W9.mjs → ListPage-OaldiDCh.mjs} +50 -51
- package/dist/_chunks/ListPage-OaldiDCh.mjs.map +1 -0
- package/dist/_chunks/{ListPage-cBvO_gYR.mjs → ListPage-R8Qs69v7.mjs} +3 -3
- package/dist/_chunks/{ListPage-cBvO_gYR.mjs.map → ListPage-R8Qs69v7.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-DZBRIMkE.mjs → ListPage-SCTNGhhO.mjs} +6 -7
- package/dist/_chunks/ListPage-SCTNGhhO.mjs.map +1 -0
- package/dist/_chunks/{ListPage-God7L19W.mjs → ListPage-YZ45BiMe.mjs} +10 -11
- package/dist/_chunks/ListPage-YZ45BiMe.mjs.map +1 -0
- package/dist/_chunks/{ListPage-skKuhRrN.js → ListPage-ZWUo77nT.js} +49 -49
- package/dist/_chunks/ListPage-ZWUo77nT.js.map +1 -0
- package/dist/_chunks/{ListPage-0eDZZ7Zw.js → ListPage-bE4a6YkV.js} +3 -3
- package/dist/_chunks/{ListPage-0eDZZ7Zw.js.map → ListPage-bE4a6YkV.js.map} +1 -1
- package/dist/_chunks/{ListPage-Ky2tG2bd.mjs → ListPage-p17R2Gql.mjs} +10 -14
- package/dist/_chunks/ListPage-p17R2Gql.mjs.map +1 -0
- package/dist/_chunks/{ListPage-NdzVJ_Ed.js → ListPage-rCVvOLlD.js} +9 -13
- package/dist/_chunks/ListPage-rCVvOLlD.js.map +1 -0
- package/dist/_chunks/{ListPage-aElBcYPH.js → ListPage-u6uVacPz.js} +4 -5
- package/dist/_chunks/ListPage-u6uVacPz.js.map +1 -0
- package/dist/_chunks/{ListView-hm-mjZ8N.mjs → ListView--O7X6dMw.mjs} +7 -8
- package/dist/_chunks/ListView--O7X6dMw.mjs.map +1 -0
- package/dist/_chunks/{ListView--mxDKrnG.js → ListView-SsUn5vcn.js} +5 -6
- package/dist/_chunks/ListView-SsUn5vcn.js.map +1 -0
- package/dist/_chunks/{ListView-vP-PjR4p.js → ListView-ZkjwQBXQ.js} +5 -6
- package/dist/_chunks/ListView-ZkjwQBXQ.js.map +1 -0
- package/dist/_chunks/{ListView-QEgFV6dm.mjs → ListView-oP-C8SCR.mjs} +7 -8
- package/dist/_chunks/ListView-oP-C8SCR.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-xOVa04T_.mjs → ListViewPage-1VNVP9Rw.mjs} +10 -11
- package/dist/_chunks/ListViewPage-1VNVP9Rw.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-NiwpwxBR.js → ListViewPage-idgrhBAP.js} +14 -15
- package/dist/_chunks/ListViewPage-idgrhBAP.js.map +1 -0
- package/dist/_chunks/{Login-0FtP5Ck_.js → Login-4Igrm6CC.js} +2 -2
- package/dist/_chunks/{Login-0FtP5Ck_.js.map → Login-4Igrm6CC.js.map} +1 -1
- package/dist/_chunks/{Login-IFCsIrab.mjs → Login-B55AM-7k.mjs} +2 -2
- package/dist/_chunks/{Login-IFCsIrab.mjs.map → Login-B55AM-7k.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-eaU4kQ6o.mjs → MagicLinkEE-Zy_9ZZ7y.mjs} +3 -3
- package/dist/_chunks/{MagicLinkEE-eaU4kQ6o.mjs.map → MagicLinkEE-Zy_9ZZ7y.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-S7dXBaH0.js → MagicLinkEE-v7xTuVEA.js} +3 -3
- package/dist/_chunks/{MagicLinkEE-S7dXBaH0.js.map → MagicLinkEE-v7xTuVEA.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-f0ZrC_p8.mjs → MarketplacePage-UGys0LVN.mjs} +3 -5
- package/dist/_chunks/MarketplacePage-UGys0LVN.mjs.map +1 -0
- package/dist/_chunks/{MarketplacePage-zSQ_GRnZ.js → MarketplacePage-tWKM5xe8.js} +5 -7
- package/dist/_chunks/MarketplacePage-tWKM5xe8.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-ER4yVLjV.mjs → NoContentTypePage-BaaTD5uB.mjs} +4 -6
- package/dist/_chunks/NoContentTypePage-BaaTD5uB.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-_XU8B8oQ.js → NoContentTypePage-Lbuve_Uu.js} +3 -5
- package/dist/_chunks/NoContentTypePage-Lbuve_Uu.js.map +1 -0
- package/dist/_chunks/{NoPermissionsPage-DcFRsCHz.mjs → NoPermissionsPage--Oa97N7k.mjs} +5 -7
- package/dist/_chunks/NoPermissionsPage--Oa97N7k.mjs.map +1 -0
- package/dist/_chunks/{NoPermissionsPage-5A4Hwjad.js → NoPermissionsPage-q44k5VFX.js} +3 -5
- package/dist/_chunks/NoPermissionsPage-q44k5VFX.js.map +1 -0
- package/dist/_chunks/{Permissions--rdF1ZKQ.js → Permissions-CFuwI0Ni.js} +2 -2
- package/dist/_chunks/{Permissions--rdF1ZKQ.js.map → Permissions-CFuwI0Ni.js.map} +1 -1
- package/dist/_chunks/{Permissions-Ke5fqSQ2.mjs → Permissions-NbmBkSB4.mjs} +2 -2
- package/dist/_chunks/{Permissions-Ke5fqSQ2.mjs.map → Permissions-NbmBkSB4.mjs.map} +1 -1
- package/dist/_chunks/{PrivateRoute-dWrZb-9J.mjs → PrivateRoute-YN_98pM_.mjs} +2 -2
- package/dist/_chunks/{PrivateRoute-dWrZb-9J.mjs.map → PrivateRoute-YN_98pM_.mjs.map} +1 -1
- package/dist/_chunks/{PrivateRoute-GLTcdbu8.js → PrivateRoute-avlq1MEy.js} +2 -2
- package/dist/_chunks/{PrivateRoute-GLTcdbu8.js.map → PrivateRoute-avlq1MEy.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-EEcNKnGH.js → ProfilePage-brPbqDP1.js} +4 -6
- package/dist/_chunks/ProfilePage-brPbqDP1.js.map +1 -0
- package/dist/_chunks/{ProfilePage-bE7txhNu.mjs → ProfilePage-eCIvxxJY.mjs} +5 -7
- package/dist/_chunks/ProfilePage-eCIvxxJY.mjs.map +1 -0
- package/dist/_chunks/{ReviewWorkflowsColumn-hJRkAN5a.js → ReviewWorkflowsColumn-HfjzpLFU.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-hJRkAN5a.js.map → ReviewWorkflowsColumn-HfjzpLFU.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-FDxVKdto.mjs → ReviewWorkflowsColumn-sPZxvFUd.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-FDxVKdto.mjs.map → ReviewWorkflowsColumn-sPZxvFUd.mjs.map} +1 -1
- package/dist/_chunks/{SelectRoles-XK5HcBdP.js → SelectRoles-BmNzL0q5.js} +4 -5
- package/dist/_chunks/SelectRoles-BmNzL0q5.js.map +1 -0
- package/dist/_chunks/{SelectRoles-Iih1yeTu.mjs → SelectRoles-jvH4WUf6.mjs} +3 -4
- package/dist/_chunks/SelectRoles-jvH4WUf6.mjs.map +1 -0
- package/dist/_chunks/{SingleSignOnPage-uURRsIxP.js → SingleSignOnPage-ZyiHtZxJ.js} +4 -5
- package/dist/_chunks/SingleSignOnPage-ZyiHtZxJ.js.map +1 -0
- package/dist/_chunks/{SingleSignOnPage-vOeDxBfa.mjs → SingleSignOnPage-aMd3wcAh.mjs} +6 -7
- package/dist/_chunks/SingleSignOnPage-aMd3wcAh.mjs.map +1 -0
- package/dist/_chunks/{Table-k6gVR2KH.mjs → Table-591I_RMU.mjs} +2 -3
- package/dist/_chunks/Table-591I_RMU.mjs.map +1 -0
- package/dist/_chunks/{Table-VsNr4Mha.js → Table-aUfykqgd.js} +3 -4
- package/dist/_chunks/Table-aUfykqgd.js.map +1 -0
- package/dist/_chunks/{TokenTypeSelect-Z9iyoteG.mjs → TokenTypeSelect-vIBdBE9t.mjs} +2 -3
- package/dist/_chunks/TokenTypeSelect-vIBdBE9t.mjs.map +1 -0
- package/dist/_chunks/{TokenTypeSelect-QN_bDdss.js → TokenTypeSelect-vp-54yBv.js} +3 -4
- package/dist/_chunks/TokenTypeSelect-vp-54yBv.js.map +1 -0
- package/dist/_chunks/{UseCasePage-xAlTWOcX.js → UseCasePage-0_alQEc9.js} +3 -3
- package/dist/_chunks/{UseCasePage-xAlTWOcX.js.map → UseCasePage-0_alQEc9.js.map} +1 -1
- package/dist/_chunks/{UseCasePage-qJwKBweD.mjs → UseCasePage-Cxu2FeWo.mjs} +3 -3
- package/dist/_chunks/{UseCasePage-qJwKBweD.mjs.map → UseCasePage-Cxu2FeWo.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-b3w4qO8B.js → apiTokens-IG3rF-G2.js} +2 -2
- package/dist/_chunks/{apiTokens-b3w4qO8B.js.map → apiTokens-IG3rF-G2.js.map} +1 -1
- package/dist/_chunks/{apiTokens-dGGyJI-w.mjs → apiTokens-wLmJ3Liv.mjs} +2 -2
- package/dist/_chunks/{apiTokens-dGGyJI-w.mjs.map → apiTokens-wLmJ3Liv.mjs.map} +1 -1
- package/dist/_chunks/{constants-WjN6I3sL.mjs → constants-0OGkpIzK.mjs} +3 -3
- package/dist/_chunks/{constants-WjN6I3sL.mjs.map → constants-0OGkpIzK.mjs.map} +1 -1
- package/dist/_chunks/{constants-PHXhIuUs.js → constants-7yqqXq3r.js} +2 -2
- package/dist/_chunks/{constants-PHXhIuUs.js.map → constants-7yqqXq3r.js.map} +1 -1
- package/dist/_chunks/{constants-ruIkLWCb.mjs → constants-JgR8CVx2.mjs} +2 -2
- package/dist/_chunks/{constants-ruIkLWCb.mjs.map → constants-JgR8CVx2.mjs.map} +1 -1
- package/dist/_chunks/{constants-IZEgEoW9.js → constants-XJLrl2Tl.js} +3 -3
- package/dist/_chunks/{constants-IZEgEoW9.js.map → constants-XJLrl2Tl.js.map} +1 -1
- package/dist/_chunks/{index-5ZvCaCyY.mjs → index-GIVuHJgC.mjs} +347 -188
- package/dist/_chunks/index-GIVuHJgC.mjs.map +1 -0
- package/dist/_chunks/{index-ibtz273H.js → index-haHGOQMJ.js} +270 -110
- package/dist/_chunks/index-haHGOQMJ.js.map +1 -0
- package/dist/_chunks/{selectors-JBxTdRJK.mjs → selectors--2Vzk8PA.mjs} +2 -2
- package/dist/_chunks/{selectors-JBxTdRJK.mjs.map → selectors--2Vzk8PA.mjs.map} +1 -1
- package/dist/_chunks/{selectors-TFKI8arF.js → selectors-NSSzzIzx.js} +2 -2
- package/dist/_chunks/{selectors-TFKI8arF.js.map → selectors-NSSzzIzx.js.map} +1 -1
- package/dist/_chunks/{transferTokens-4KlyXDql.mjs → transferTokens-WIsWKVbF.mjs} +2 -2
- package/dist/_chunks/{transferTokens-4KlyXDql.mjs.map → transferTokens-WIsWKVbF.mjs.map} +1 -1
- package/dist/_chunks/{transferTokens-G-suI4pp.js → transferTokens-xL4mlopP.js} +2 -2
- package/dist/_chunks/{transferTokens-G-suI4pp.js.map → transferTokens-xL4mlopP.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-7_YWhmkQ.mjs → useAdminRoles--ozrdfW_.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-7_YWhmkQ.mjs.map → useAdminRoles--ozrdfW_.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-o4dxsCcY.js → useAdminRoles-Y25Pjlcy.js} +2 -2
- package/dist/_chunks/{useAdminRoles-o4dxsCcY.js.map → useAdminRoles-Y25Pjlcy.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-dRoMxL8c.js → useContentTypes-Vr8jkHQL.js} +2 -2
- package/dist/_chunks/{useContentTypes-dRoMxL8c.js.map → useContentTypes-Vr8jkHQL.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-x6OLbsWe.mjs → useContentTypes-ralhLmpD.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-x6OLbsWe.mjs.map → useContentTypes-ralhLmpD.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-wzvrsJoL.mjs → useLicenseLimitNotification-RSTkqcfW.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-wzvrsJoL.mjs.map → useLicenseLimitNotification-RSTkqcfW.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-BaSsY40x.js → useLicenseLimitNotification-fSsffVh-.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-BaSsY40x.js.map → useLicenseLimitNotification-fSsffVh-.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-PAvhwNm3.mjs → useReviewWorkflows--7WPIykR.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-PAvhwNm3.mjs.map → useReviewWorkflows--7WPIykR.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-3SKYABe_.js → useReviewWorkflows-4t3eVbDa.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-3SKYABe_.js.map → useReviewWorkflows-4t3eVbDa.js.map} +1 -1
- package/dist/_chunks/{useSyncRbac-f7CCq_yt.js → useSyncRbac-Fw5UPeMQ.js} +2 -2
- package/dist/_chunks/{useSyncRbac-f7CCq_yt.js.map → useSyncRbac-Fw5UPeMQ.js.map} +1 -1
- package/dist/_chunks/{useSyncRbac-Kt8Li0Yf.mjs → useSyncRbac-JNQibLFa.mjs} +2 -2
- package/dist/_chunks/{useSyncRbac-Kt8Li0Yf.mjs.map → useSyncRbac-JNQibLFa.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-Fhm21I_2.js → useWebhooks-IXb4Ks8E.js} +2 -2
- package/dist/_chunks/{useWebhooks-Fhm21I_2.js.map → useWebhooks-IXb4Ks8E.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-6rWM4vzd.mjs → useWebhooks-sfNt0r3v.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-6rWM4vzd.mjs.map → useWebhooks-sfNt0r3v.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-DlwU9a4N.mjs → validateWorkflow-YRBggwod.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-DlwU9a4N.mjs.map → validateWorkflow-YRBggwod.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-1g4fl4e7.js → validateWorkflow-akFNValJ.js} +2 -2
- package/dist/_chunks/{validateWorkflow-1g4fl4e7.js.map → validateWorkflow-akFNValJ.js.map} +1 -1
- package/dist/_chunks/{validation-NckIpCgz.js → validation--QPWqn0e.js} +2 -2
- package/dist/_chunks/{validation-NckIpCgz.js.map → validation--QPWqn0e.js.map} +1 -1
- package/dist/_chunks/{validation-aaWzg0nE.mjs → validation-hlioQ0PO.mjs} +2 -2
- package/dist/_chunks/{validation-aaWzg0nE.mjs.map → validation-hlioQ0PO.mjs.map} +1 -1
- package/dist/admin/index.js +4 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +21 -18
- package/dist/admin/src/components/PageHelpers.d.ts +6 -2
- package/dist/admin/src/content-manager/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/content-manager/history/tests/mockData.d.ts +692 -0
- package/dist/admin/src/content-manager/history/tests/server.d.ts +3 -0
- package/dist/admin/src/content-manager/services/api.d.ts +1 -1
- package/dist/admin/src/content-manager/services/components.d.ts +2 -2
- package/dist/admin/src/content-manager/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/content-manager/services/documents.d.ts +17 -20
- package/dist/admin/src/content-manager/services/init.d.ts +1 -1
- package/dist/admin/src/content-manager/services/relations.d.ts +2 -2
- package/dist/admin/src/content-manager/services/uid.d.ts +3 -3
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/store/hooks.d.ts +3 -3
- package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +2 -1
- package/dist/admin/src/hooks/useClipboard.d.ts +4 -0
- package/dist/admin/src/hooks/useFetchClient.d.ts +43 -0
- package/dist/admin/src/hooks/useFocusInputField.d.ts +20 -0
- package/dist/admin/src/hooks/useQueryParams.d.ts +5 -0
- package/dist/admin/src/index.d.ts +8 -6
- package/dist/admin/src/selectors.d.ts +2 -2
- package/dist/admin/src/utils/baseQuery.d.ts +1 -1
- package/dist/admin/src/utils/getFetchClient.d.ts +30 -0
- package/dist/admin/src/utils/normalizeAPIError.d.ts +2 -2
- package/dist/admin/tests/index.js +49173 -0
- package/dist/admin/tests/index.js.map +1 -0
- package/dist/admin/tests/index.mjs +49135 -0
- package/dist/admin/tests/index.mjs.map +1 -0
- package/dist/admin/tests/mockData.d.ts +2053 -0
- package/dist/admin/tests/server.d.ts +2 -0
- package/dist/admin/tests/setup.d.ts +1 -0
- package/dist/admin/tests/store.d.ts +468 -0
- package/dist/admin/tests/utils.d.ts +511 -0
- package/package.json +19 -12
- package/dist/_chunks/ApplicationInfoPage-PHLA1Ysy.js.map +0 -1
- package/dist/_chunks/ApplicationInfoPage-Zn5JU2zd.mjs.map +0 -1
- package/dist/_chunks/EditPage-A6olBfVm.js.map +0 -1
- package/dist/_chunks/EditPage-VoRR5DCQ.mjs.map +0 -1
- package/dist/_chunks/EditView-C_ynfmtW.js.map +0 -1
- package/dist/_chunks/EditView-EuUw_2zc.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-8uPO5GWR.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-XtJmgPi5.js.map +0 -1
- package/dist/_chunks/EditViewPage-Z_e1dpbU.js.map +0 -1
- package/dist/_chunks/EditViewPage-xYzUSAwS.mjs.map +0 -1
- package/dist/_chunks/Filters-tMd2Q5jg.mjs.map +0 -1
- package/dist/_chunks/Filters-xVuf1kg6.js.map +0 -1
- package/dist/_chunks/History-1AF4LH3c.mjs.map +0 -1
- package/dist/_chunks/History-V_ik1IL0.js.map +0 -1
- package/dist/_chunks/InputRenderer-RMnWnPI4.js.map +0 -1
- package/dist/_chunks/InputRenderer-iP1kRki4.mjs.map +0 -1
- package/dist/_chunks/InstalledPluginsPage-7m_FfOGl.mjs.map +0 -1
- package/dist/_chunks/InstalledPluginsPage-PrMyistN.js.map +0 -1
- package/dist/_chunks/ListPage-1q5Fi4W9.mjs.map +0 -1
- package/dist/_chunks/ListPage-DZBRIMkE.mjs.map +0 -1
- package/dist/_chunks/ListPage-God7L19W.mjs.map +0 -1
- package/dist/_chunks/ListPage-Ky2tG2bd.mjs.map +0 -1
- package/dist/_chunks/ListPage-NdzVJ_Ed.js.map +0 -1
- package/dist/_chunks/ListPage-RlY1nro4.mjs.map +0 -1
- package/dist/_chunks/ListPage-_i7RNkUF.js.map +0 -1
- package/dist/_chunks/ListPage-aElBcYPH.js.map +0 -1
- package/dist/_chunks/ListPage-em8KMoKx.js.map +0 -1
- package/dist/_chunks/ListPage-skKuhRrN.js.map +0 -1
- package/dist/_chunks/ListView--mxDKrnG.js.map +0 -1
- package/dist/_chunks/ListView-QEgFV6dm.mjs.map +0 -1
- package/dist/_chunks/ListView-hm-mjZ8N.mjs.map +0 -1
- package/dist/_chunks/ListView-vP-PjR4p.js.map +0 -1
- package/dist/_chunks/ListViewPage-NiwpwxBR.js.map +0 -1
- package/dist/_chunks/ListViewPage-xOVa04T_.mjs.map +0 -1
- package/dist/_chunks/MarketplacePage-f0ZrC_p8.mjs.map +0 -1
- package/dist/_chunks/MarketplacePage-zSQ_GRnZ.js.map +0 -1
- package/dist/_chunks/NoContentTypePage-ER4yVLjV.mjs.map +0 -1
- package/dist/_chunks/NoContentTypePage-_XU8B8oQ.js.map +0 -1
- package/dist/_chunks/NoPermissionsPage-5A4Hwjad.js.map +0 -1
- package/dist/_chunks/NoPermissionsPage-DcFRsCHz.mjs.map +0 -1
- package/dist/_chunks/ProfilePage-EEcNKnGH.js.map +0 -1
- package/dist/_chunks/ProfilePage-bE7txhNu.mjs.map +0 -1
- package/dist/_chunks/SelectRoles-Iih1yeTu.mjs.map +0 -1
- package/dist/_chunks/SelectRoles-XK5HcBdP.js.map +0 -1
- package/dist/_chunks/SingleSignOnPage-uURRsIxP.js.map +0 -1
- package/dist/_chunks/SingleSignOnPage-vOeDxBfa.mjs.map +0 -1
- package/dist/_chunks/Table-VsNr4Mha.js.map +0 -1
- package/dist/_chunks/Table-k6gVR2KH.mjs.map +0 -1
- package/dist/_chunks/TokenTypeSelect-QN_bDdss.js.map +0 -1
- package/dist/_chunks/TokenTypeSelect-Z9iyoteG.mjs.map +0 -1
- package/dist/_chunks/index-5ZvCaCyY.mjs.map +0 -1
- package/dist/_chunks/index-ibtz273H.js.map +0 -1
- package/dist/admin/src/types/errors.d.ts +0 -2
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePage-EEcNKnGH.js","sources":["../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n HeaderLayout,\n Main,\n useNotifyAT,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { useFocusWhenNavigate } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema.required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProfilePage = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n useFocusWhenNavigate();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (\n isBaseQueryError(res.error) &&\n (res.error.name === 'ValidationError' || res.error.message === 'ValidationError')\n ) {\n // @ts-expect-error – We get a BadRequest error here instead of a ValidationError if the currentPassword is wrong.\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <Main aria-busy={isSubmittingForm}>\n <Helmet\n title={formatMessage({\n id: 'Settings.profile.form.section.helmet.title',\n defaultMessage: 'User profile',\n })}\n />\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <HeaderLayout\n title={getDisplayName(user, formatMessage)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={10}>\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </ContentLayout>\n </Box>\n </>\n )}\n </Form>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n as=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { ProfilePage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useTypedSelector","useIntl","useTracking","useNotification","useNotifyAT","useTypedDispatch","useAPIErrorHandler","useFocusWhenNavigate","useAuth","React","useUpdateMeMutation","useIsSSOLockedQuery","currentTheme","setAppTheme","isBaseQueryError","jsx","Page","jsxs","Main","Helmet","Form","Fragment","HeaderLayout","getDisplayName","Button","Check","Box","ContentLayout","Flex","Typography","index","Grid","GridItem","InputRenderer","upperFirst"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePage-bE7txhNu.mjs","sources":["../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n HeaderLayout,\n Main,\n useNotifyAT,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { useFocusWhenNavigate } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema.required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProfilePage = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n useFocusWhenNavigate();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (\n isBaseQueryError(res.error) &&\n (res.error.name === 'ValidationError' || res.error.message === 'ValidationError')\n ) {\n // @ts-expect-error – We get a BadRequest error here instead of a ValidationError if the currentPassword is wrong.\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <Main aria-busy={isSubmittingForm}>\n <Helmet\n title={formatMessage({\n id: 'Settings.profile.form.section.helmet.title',\n defaultMessage: 'User profile',\n })}\n />\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <HeaderLayout\n title={getDisplayName(user, formatMessage)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={10}>\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </ContentLayout>\n </Box>\n </>\n )}\n </Form>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n as=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { ProfilePage };\n"],"names":["translatedErrors","currentTheme"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectRoles-Iih1yeTu.mjs","sources":["../../admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.tsx","../../admin/src/pages/Settings/pages/Users/components/MagicLinkCE.tsx","../../admin/src/pages/Settings/pages/Users/components/SelectRoles.tsx"],"sourcesContent":["import { IconButton } from '@strapi/design-system';\nimport { useClipboard } from '@strapi/helper-plugin';\nimport { Duplicate } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../../components/ContentBox';\nimport { useNotification } from '../../../../../features/Notifications';\n\ninterface MagicLinkWrapperProps {\n children: string;\n target: string;\n}\n\nconst MagicLinkWrapper = ({ children, target }: MagicLinkWrapperProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n const copyLabel = formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n });\n\n const handleClick = async () => {\n const didCopy = await copy(target);\n\n if (didCopy) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'notification.link-copied' }),\n });\n }\n };\n\n return (\n <ContentBox\n endAction={\n <IconButton label={copyLabel} noBorder icon={<Duplicate />} onClick={handleClick} />\n }\n title={target}\n titleEllipsis\n subtitle={children}\n icon={<span style={{ fontSize: 32 }}>✉️</span>}\n iconBackground=\"neutral100\"\n />\n );\n};\n\nexport { MagicLinkWrapper };\nexport type { MagicLinkWrapperProps };\n","import { useIntl } from 'react-intl';\n\nimport { getBasename } from '../../../../../core/utils/basename';\n\nimport { MagicLinkWrapper } from './MagicLinkWrapper';\n\ninterface MagicLinkCEProps {\n registrationToken: string;\n}\n\nconst MagicLinkCE = ({ registrationToken }: MagicLinkCEProps) => {\n const { formatMessage } = useIntl();\n const target = `${\n window.location.origin\n }${getBasename()}/auth/register?registrationToken=${registrationToken}`;\n\n return (\n <MagicLinkWrapper target={target}>\n {formatMessage({\n id: 'app.components.Users.MagicLink.connect',\n defaultMessage: 'Copy and share this link to give access to this user',\n })}\n </MagicLinkWrapper>\n );\n};\n\nexport { MagicLinkCE };\nexport type { MagicLinkCEProps };\n","import { MultiSelect, MultiSelectOption } from '@strapi/design-system';\nimport { Loader as LoadingIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled, { keyframes } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\n\ninterface SelectRolesProps {\n disabled?: boolean;\n}\n\nconst SelectRoles = ({ disabled }: SelectRolesProps) => {\n const { isLoading, roles } = useAdminRoles();\n\n const { formatMessage } = useIntl();\n const { value = [], onChange, error } = useField<string[]>('roles');\n\n const label = formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles',\n defaultMessage: \"User's roles\",\n });\n const hint = formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles.description',\n defaultMessage: 'A user can have one or several roles',\n });\n const placeholder = formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n });\n\n return (\n <MultiSelect\n id=\"roles\"\n disabled={disabled}\n error={error}\n hint={hint}\n label={label}\n name=\"roles\"\n onChange={(v) => {\n onChange('roles', v);\n }}\n placeholder={placeholder}\n startIcon={isLoading ? <Loader /> : undefined}\n value={value.map((v) => v.toString())}\n withTags\n required\n >\n {roles.map((role) => {\n return (\n <MultiSelectOption key={role.id} value={role.id.toString()}>\n {formatMessage({\n id: `global.${role.code}`,\n defaultMessage: role.name,\n })}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n`;\n\nconst LoadingWrapper = styled.div`\n animation: ${rotation} 2s infinite linear;\n`;\n\nconst Loader = () => (\n <LoadingWrapper>\n <LoadingIcon />\n </LoadingWrapper>\n);\n\nexport { SelectRoles };\n"],"names":["LoadingIcon"],"mappings":";;;;;;;;;AAaA,MAAM,mBAAmB,CAAC,EAAE,UAAU,aAAoC;AAClE,QAAA,EAAE,uBAAuB;AACzB,QAAA,EAAE,kBAAkB;AACpB,QAAA,EAAE,SAAS;AAEjB,QAAM,YAAY,cAAc;AAAA,IAC9B,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AAED,QAAM,cAAc,YAAY;AACxB,UAAA,UAAU,MAAM,KAAK,MAAM;AAEjC,QAAI,SAAS;AACQ,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc,EAAE,IAAI,4BAA4B;AAAA,MAAA,CAC1D;AAAA,IACH;AAAA,EAAA;AAIA,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WACE,oBAAC,YAAW,EAAA,OAAO,WAAW,UAAQ,MAAC,MAAO,oBAAA,WAAA,CAAA,CAAU,GAAI,SAAS,YAAa,CAAA;AAAA,MAEpF,OAAO;AAAA,MACP,eAAa;AAAA,MACb,UAAU;AAAA,MACV,0BAAO,QAAK,EAAA,OAAO,EAAE,UAAU,MAAM,UAAE,MAAA;AAAA,MACvC,gBAAe;AAAA,IAAA;AAAA,EAAA;AAGrB;ACpCA,MAAM,cAAc,CAAC,EAAE,wBAA0C;AACzD,QAAA,EAAE,kBAAkB;AACpB,QAAA,SAAS,GACb,OAAO,SAAS,MAClB,GAAG,aAAa,oCAAoC,iBAAiB;AAGnE,SAAA,oBAAC,kBAAiB,EAAA,QACf,UAAc,cAAA;AAAA,IACb,IAAI;AAAA,IACJ,gBAAgB;AAAA,EACjB,CAAA,EACH,CAAA;AAEJ;ACZA,MAAM,cAAc,CAAC,EAAE,eAAiC;AACtD,QAAM,EAAE,WAAW,MAAM,IAAI,cAAc;AAErC,QAAA,EAAE,kBAAkB;AACpB,QAAA,EAAE,QAAQ,IAAI,UAAU,UAAU,SAAmB,OAAO;AAElE,QAAM,QAAQ,cAAc;AAAA,IAC1B,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AACD,QAAM,OAAO,cAAc;AAAA,IACzB,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AACD,QAAM,cAAc,cAAc;AAAA,IAChC,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AAGC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,UAAU,CAAC,MAAM;AACf,iBAAS,SAAS,CAAC;AAAA,MACrB;AAAA,MACA;AAAA,MACA,WAAW,YAAa,oBAAA,QAAA,CAAO,CAAA,IAAK;AAAA,MACpC,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU;AAAA,MACpC,UAAQ;AAAA,MACR,UAAQ;AAAA,MAEP,UAAA,MAAM,IAAI,CAAC,SAAS;AACnB,mCACG,mBAAgC,EAAA,OAAO,KAAK,GAAG,SAAA,GAC7C,UAAc,cAAA;AAAA,UACb,IAAI,UAAU,KAAK,IAAI;AAAA,UACvB,gBAAgB,KAAK;AAAA,QAAA,CACtB,EAJqB,GAAA,KAAK,EAK7B;AAAA,MAAA,CAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASjB,MAAM,iBAAiB,OAAO;AAAA,eACf,QAAQ;AAAA;AAGvB,MAAM,SAAS,MACb,oBAAC,gBACC,EAAA,UAAA,oBAACA,WAAY,CAAA,GACf;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectRoles-XK5HcBdP.js","sources":["../../admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.tsx","../../admin/src/pages/Settings/pages/Users/components/MagicLinkCE.tsx","../../admin/src/pages/Settings/pages/Users/components/SelectRoles.tsx"],"sourcesContent":["import { IconButton } from '@strapi/design-system';\nimport { useClipboard } from '@strapi/helper-plugin';\nimport { Duplicate } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../../components/ContentBox';\nimport { useNotification } from '../../../../../features/Notifications';\n\ninterface MagicLinkWrapperProps {\n children: string;\n target: string;\n}\n\nconst MagicLinkWrapper = ({ children, target }: MagicLinkWrapperProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n const copyLabel = formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n });\n\n const handleClick = async () => {\n const didCopy = await copy(target);\n\n if (didCopy) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'notification.link-copied' }),\n });\n }\n };\n\n return (\n <ContentBox\n endAction={\n <IconButton label={copyLabel} noBorder icon={<Duplicate />} onClick={handleClick} />\n }\n title={target}\n titleEllipsis\n subtitle={children}\n icon={<span style={{ fontSize: 32 }}>✉️</span>}\n iconBackground=\"neutral100\"\n />\n );\n};\n\nexport { MagicLinkWrapper };\nexport type { MagicLinkWrapperProps };\n","import { useIntl } from 'react-intl';\n\nimport { getBasename } from '../../../../../core/utils/basename';\n\nimport { MagicLinkWrapper } from './MagicLinkWrapper';\n\ninterface MagicLinkCEProps {\n registrationToken: string;\n}\n\nconst MagicLinkCE = ({ registrationToken }: MagicLinkCEProps) => {\n const { formatMessage } = useIntl();\n const target = `${\n window.location.origin\n }${getBasename()}/auth/register?registrationToken=${registrationToken}`;\n\n return (\n <MagicLinkWrapper target={target}>\n {formatMessage({\n id: 'app.components.Users.MagicLink.connect',\n defaultMessage: 'Copy and share this link to give access to this user',\n })}\n </MagicLinkWrapper>\n );\n};\n\nexport { MagicLinkCE };\nexport type { MagicLinkCEProps };\n","import { MultiSelect, MultiSelectOption } from '@strapi/design-system';\nimport { Loader as LoadingIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled, { keyframes } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\n\ninterface SelectRolesProps {\n disabled?: boolean;\n}\n\nconst SelectRoles = ({ disabled }: SelectRolesProps) => {\n const { isLoading, roles } = useAdminRoles();\n\n const { formatMessage } = useIntl();\n const { value = [], onChange, error } = useField<string[]>('roles');\n\n const label = formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles',\n defaultMessage: \"User's roles\",\n });\n const hint = formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles.description',\n defaultMessage: 'A user can have one or several roles',\n });\n const placeholder = formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n });\n\n return (\n <MultiSelect\n id=\"roles\"\n disabled={disabled}\n error={error}\n hint={hint}\n label={label}\n name=\"roles\"\n onChange={(v) => {\n onChange('roles', v);\n }}\n placeholder={placeholder}\n startIcon={isLoading ? <Loader /> : undefined}\n value={value.map((v) => v.toString())}\n withTags\n required\n >\n {roles.map((role) => {\n return (\n <MultiSelectOption key={role.id} value={role.id.toString()}>\n {formatMessage({\n id: `global.${role.code}`,\n defaultMessage: role.name,\n })}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n`;\n\nconst LoadingWrapper = styled.div`\n animation: ${rotation} 2s infinite linear;\n`;\n\nconst Loader = () => (\n <LoadingWrapper>\n <LoadingIcon />\n </LoadingWrapper>\n);\n\nexport { SelectRoles };\n"],"names":["useNotification","useIntl","useClipboard","jsx","ContentBox","IconButton","Duplicate","getBasename","useAdminRoles","useField","MultiSelect","MultiSelectOption","keyframes","styled","LoadingIcon"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage-uURRsIxP.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport { useFocusWhenNavigate, useRBAC } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required.id),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <Helmet\n title={formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useTypedSelector","useNotification","useAPIErrorHandler","useGetProviderOptionsQuery","useUpdateProviderOptionsMutation","useRBAC","useAdminRoles","formik","isBaseQueryError","Layout","jsx","Helmet","Main","Formik","jsxs","Form","HeaderLayout","Button","Check","ContentLayout","Page","Flex","Typography","Grid","GridItem","ToggleInput","Select","Option","MultiSelect","MultiSelectOption"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage-vOeDxBfa.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport { useFocusWhenNavigate, useRBAC } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required.id),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <Helmet\n title={formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["translatedErrors"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Table-VsNr4Mha.js","sources":["../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, IconButton, Typography, useCollator } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useQueryParams } from '@strapi/helper-plugin';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\n\nimport type { Entity } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps\n extends Pick<TableImpl.Props<SanitizedTransferToken | ApiToken>, 'headers' | 'isLoading'> {\n onConfirmDelete: (id: Entity.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n}\n\nconst Table = ({\n permissions,\n headers = [],\n isLoading = false,\n tokens = [],\n onConfirmDelete,\n tokenType,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Entity.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n ))}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Entity.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkStyled\n forwardedAs={NavLink}\n to={tokenId.toString()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n >\n {children}\n </LinkStyled>\n );\n};\n\nconst LinkStyled = styled(Link)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const handleClickDelete = () => {\n setShowConfirmDialog(false);\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Box paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <IconButton\n onClick={() => {\n setShowConfirmDialog(true);\n }}\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n borderWidth={0}\n icon={<Trash />}\n />\n <ConfirmDialog\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleClickDelete}\n isOpen={showConfirmDialog}\n />\n </Box>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Entity.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil width={12} />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["useQueryParams","useIntl","useNavigate","useTracking","useCollator","jsx","TableImpl","jsxs","Typography","RelativeTime","Flex","NavLink","styled","Link","React","Box","IconButton","Trash","ConfirmDialog","Pencil"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Table-k6gVR2KH.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, IconButton, Typography, useCollator } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useQueryParams } from '@strapi/helper-plugin';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\n\nimport type { Entity } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps\n extends Pick<TableImpl.Props<SanitizedTransferToken | ApiToken>, 'headers' | 'isLoading'> {\n onConfirmDelete: (id: Entity.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n}\n\nconst Table = ({\n permissions,\n headers = [],\n isLoading = false,\n tokens = [],\n onConfirmDelete,\n tokenType,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Entity.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth={`${250 / 16}rem`}>\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n ))}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Entity.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkStyled\n forwardedAs={NavLink}\n to={tokenId.toString()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n >\n {children}\n </LinkStyled>\n );\n};\n\nconst LinkStyled = styled(Link)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const handleClickDelete = () => {\n setShowConfirmDialog(false);\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Box paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <IconButton\n onClick={() => {\n setShowConfirmDialog(true);\n }}\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n borderWidth={0}\n icon={<Trash />}\n />\n <ConfirmDialog\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleClickDelete}\n isOpen={showConfirmDialog}\n />\n </Box>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Entity.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil width={12} />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["TableImpl"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTypeSelect-QN_bDdss.js","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/utils/locales.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n isOpen={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<Refresh />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { useClipboard } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nimport { getDateFnsLocaleName } from '../../../../../../utils/locales';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n locale: locales[getDateFnsLocaleName(language)],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["useIntl","React","useNotification","useAPIErrorHandler","useRegenerateTokenMutation","jsxs","Fragment","jsx","Button","Refresh","ConfirmDialog","HeaderLayout","Flex","Check","BackButton","useTracking","useClipboard","token","ContentBox","IconButton","Duplicate","Key","locales","format","addDays","SingleSelect","value","SingleSelectOption","Typography","Textarea","TextInput","label"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTypeSelect-Z9iyoteG.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/utils/locales.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n isOpen={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<Refresh />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { useClipboard } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nimport { getDateFnsLocaleName } from '../../../../../../utils/locales';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n locale: locales[getDateFnsLocaleName(language)],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["token","value","label"],"mappings":"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"}
|