@strapi/admin 5.0.3 → 5.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/{ApplicationInfoPage-ExK1vktC.mjs → ApplicationInfoPage-BsWmhqDq.mjs} +2 -2
- package/dist/admin/{ApplicationInfoPage-ExK1vktC.mjs.map → ApplicationInfoPage-BsWmhqDq.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-KGxVL-rm.js → ApplicationInfoPage-MGbrAjXu.js} +2 -2
- package/dist/admin/{ApplicationInfoPage-KGxVL-rm.js.map → ApplicationInfoPage-MGbrAjXu.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-GHedQ62F.mjs → AuthenticatedLayout-6n9hYAUi.mjs} +6 -6
- package/dist/admin/AuthenticatedLayout-6n9hYAUi.mjs.map +1 -0
- package/dist/admin/{AuthenticatedLayout-DxyWXA7n.js → AuthenticatedLayout-DBJc2D_3.js} +6 -6
- package/dist/admin/AuthenticatedLayout-DBJc2D_3.js.map +1 -0
- package/dist/admin/{CreatePage-BrkmbwiI.js → CreatePage-DHpJlXLS.js} +2 -2
- package/dist/admin/{CreatePage-BrkmbwiI.js.map → CreatePage-DHpJlXLS.js.map} +1 -1
- package/dist/admin/{CreatePage-DdUGmRuB.js → CreatePage-Dio9Rn1o.js} +2 -2
- package/dist/admin/{CreatePage-DdUGmRuB.js.map → CreatePage-Dio9Rn1o.js.map} +1 -1
- package/dist/admin/{CreatePage-Begn-7bt.mjs → CreatePage-m-lAl7Xp.mjs} +2 -2
- package/dist/admin/{CreatePage-Begn-7bt.mjs.map → CreatePage-m-lAl7Xp.mjs.map} +1 -1
- package/dist/admin/{CreatePage-D_uPQwIO.mjs → CreatePage-qGxxEdXp.mjs} +2 -2
- package/dist/admin/{CreatePage-D_uPQwIO.mjs.map → CreatePage-qGxxEdXp.mjs.map} +1 -1
- package/dist/admin/{CreateView-BG7tOOr3.js → CreateView-B0SHslmU.js} +2 -2
- package/dist/admin/{CreateView-BG7tOOr3.js.map → CreateView-B0SHslmU.js.map} +1 -1
- package/dist/admin/{CreateView-C_iwqrUp.js → CreateView-DUtL5Qks.js} +2 -2
- package/dist/admin/{CreateView-C_iwqrUp.js.map → CreateView-DUtL5Qks.js.map} +1 -1
- package/dist/admin/{CreateView-BuSvt3Dz.mjs → CreateView-NumS4HKr.mjs} +2 -2
- package/dist/admin/{CreateView-BuSvt3Dz.mjs.map → CreateView-NumS4HKr.mjs.map} +1 -1
- package/dist/admin/{CreateView-CCrezexf.mjs → CreateView-vMzESYUv.mjs} +2 -2
- package/dist/admin/{CreateView-CCrezexf.mjs.map → CreateView-vMzESYUv.mjs.map} +1 -1
- package/dist/admin/{EditPage-DSz_5wcl.mjs → EditPage-4orwjiR5.mjs} +3 -3
- package/dist/admin/{EditPage-DSz_5wcl.mjs.map → EditPage-4orwjiR5.mjs.map} +1 -1
- package/dist/admin/{EditPage-C-gi2d0A.js → EditPage-BBKEYf_n.js} +5 -5
- package/dist/admin/{EditPage-C-gi2d0A.js.map → EditPage-BBKEYf_n.js.map} +1 -1
- package/dist/admin/{EditPage-5L7BJ8dA.js → EditPage-BSFE1F2L.js} +3 -3
- package/dist/admin/{EditPage-5L7BJ8dA.js.map → EditPage-BSFE1F2L.js.map} +1 -1
- package/dist/admin/{EditPage-CcJiL1DV.mjs → EditPage-ECBU2qqf.mjs} +5 -5
- package/dist/admin/{EditPage-CcJiL1DV.mjs.map → EditPage-ECBU2qqf.mjs.map} +1 -1
- package/dist/admin/{EditPage-DcWwhYDE.mjs → EditPage-gvDbFn1y.mjs} +3 -3
- package/dist/admin/{EditPage-DcWwhYDE.mjs.map → EditPage-gvDbFn1y.mjs.map} +1 -1
- package/dist/admin/{EditPage-DQFHvTB8.js → EditPage-iHZa5Nu5.js} +3 -3
- package/dist/admin/{EditPage-DQFHvTB8.js.map → EditPage-iHZa5Nu5.js.map} +1 -1
- package/dist/admin/{EditView-LDAyPGE2.js → EditView-CWik3eny.js} +3 -3
- package/dist/admin/{EditView-LDAyPGE2.js.map → EditView-CWik3eny.js.map} +1 -1
- package/dist/admin/{EditView-D_pJVBhQ.mjs → EditView-DKOOjBW0.mjs} +3 -3
- package/dist/admin/{EditView-D_pJVBhQ.mjs.map → EditView-DKOOjBW0.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-Ciiu0Gnh.js → EditViewPage-CFCACYFa.js} +3 -3
- package/dist/admin/{EditViewPage-Ciiu0Gnh.js.map → EditViewPage-CFCACYFa.js.map} +1 -1
- package/dist/admin/{EditViewPage-BPHtINxR.mjs → EditViewPage-D8mKid9j.mjs} +3 -3
- package/dist/admin/{EditViewPage-BPHtINxR.mjs.map → EditViewPage-D8mKid9j.mjs.map} +1 -1
- package/dist/admin/{EventsTable-BGIFg3WE.mjs → EventsTable-C8oKlTd3.mjs} +2 -2
- package/dist/admin/{EventsTable-BGIFg3WE.mjs.map → EventsTable-C8oKlTd3.mjs.map} +1 -1
- package/dist/admin/{EventsTable-DdndH0LK.js → EventsTable-D8giZmBa.js} +2 -2
- package/dist/admin/{EventsTable-DdndH0LK.js.map → EventsTable-D8giZmBa.js.map} +1 -1
- package/dist/admin/{HomePage-BhbPpItK.mjs → HomePage-B-BofT2F.mjs} +3 -3
- package/dist/admin/{HomePage-BhbPpItK.mjs.map → HomePage-B-BofT2F.mjs.map} +1 -1
- package/dist/admin/{HomePage-C5hmptcm.js → HomePage-BaOPor0N.js} +2 -2
- package/dist/admin/{HomePage-C5hmptcm.js.map → HomePage-BaOPor0N.js.map} +1 -1
- package/dist/admin/{HomePage-DXzTpAZX.js → HomePage-CJjsu6yJ.js} +3 -3
- package/dist/admin/{HomePage-DXzTpAZX.js.map → HomePage-CJjsu6yJ.js.map} +1 -1
- package/dist/admin/{HomePage-B8vP9a18.mjs → HomePage-DftXMtXs.mjs} +2 -2
- package/dist/admin/{HomePage-B8vP9a18.mjs.map → HomePage-DftXMtXs.mjs.map} +1 -1
- package/dist/admin/{InstalledPlugins-DKiC8cuH.js → InstalledPlugins-C_WU42p3.js} +2 -2
- package/dist/admin/{InstalledPlugins-DKiC8cuH.js.map → InstalledPlugins-C_WU42p3.js.map} +1 -1
- package/dist/admin/{InstalledPlugins-4w7kYzQK.mjs → InstalledPlugins-D4XgqAE_.mjs} +2 -2
- package/dist/admin/{InstalledPlugins-4w7kYzQK.mjs.map → InstalledPlugins-D4XgqAE_.mjs.map} +1 -1
- package/dist/admin/{Layout-BW__Xc_t.js → Layout-CP-XfKda.js} +3 -3
- package/dist/admin/{Layout-BW__Xc_t.js.map → Layout-CP-XfKda.js.map} +1 -1
- package/dist/admin/{Layout-Cmas3lwV.mjs → Layout-PGrRt4g4.mjs} +3 -3
- package/dist/admin/{Layout-Cmas3lwV.mjs.map → Layout-PGrRt4g4.mjs.map} +1 -1
- package/dist/admin/{ListPage-D1LrT0ZH.js → ListPage-8ZpwGM0e.js} +5 -5
- package/dist/admin/{ListPage-D1LrT0ZH.js.map → ListPage-8ZpwGM0e.js.map} +1 -1
- package/dist/admin/{ListPage-BTtWvtXz.mjs → ListPage-B5tnzp6F.mjs} +2 -2
- package/dist/admin/{ListPage-BTtWvtXz.mjs.map → ListPage-B5tnzp6F.mjs.map} +1 -1
- package/dist/admin/{ListPage-BBMhpoBZ.mjs → ListPage-B8GpAjjo.mjs} +2 -2
- package/dist/admin/{ListPage-BBMhpoBZ.mjs.map → ListPage-B8GpAjjo.mjs.map} +1 -1
- package/dist/admin/{ListPage-DYsVULtS.js → ListPage-CB50Vpzh.js} +3 -3
- package/dist/admin/{ListPage-DYsVULtS.js.map → ListPage-CB50Vpzh.js.map} +1 -1
- package/dist/admin/{ListPage-CCXNmmwa.js → ListPage-Cm-yYhzz.js} +2 -2
- package/dist/admin/{ListPage-CCXNmmwa.js.map → ListPage-Cm-yYhzz.js.map} +1 -1
- package/dist/admin/{ListPage-B4vXPhNT.js → ListPage-Cq3mdJ9l.js} +2 -2
- package/dist/admin/{ListPage-B4vXPhNT.js.map → ListPage-Cq3mdJ9l.js.map} +1 -1
- package/dist/admin/{ListPage-C0Q36j35.js → ListPage-DboP5xvn.js} +2 -2
- package/dist/admin/{ListPage-C0Q36j35.js.map → ListPage-DboP5xvn.js.map} +1 -1
- package/dist/admin/{ListPage-fBfd-mur.mjs → ListPage-SLyhfNah.mjs} +5 -5
- package/dist/admin/{ListPage-fBfd-mur.mjs.map → ListPage-SLyhfNah.mjs.map} +1 -1
- package/dist/admin/{ListPage-OIbrNVQP.mjs → ListPage-TaQflXg5.mjs} +3 -3
- package/dist/admin/{ListPage-OIbrNVQP.mjs.map → ListPage-TaQflXg5.mjs.map} +1 -1
- package/dist/admin/{ListPage-D83DCZnE.mjs → ListPage-hGfH_9zI.mjs} +2 -2
- package/dist/admin/{ListPage-D83DCZnE.mjs.map → ListPage-hGfH_9zI.mjs.map} +1 -1
- package/dist/admin/{ListView-qufYUAFF.mjs → ListView-BJnflC9h.mjs} +3 -3
- package/dist/admin/{ListView-qufYUAFF.mjs.map → ListView-BJnflC9h.mjs.map} +1 -1
- package/dist/admin/{ListView-B93uYHCO.js → ListView-CYqhqQ5F.js} +3 -3
- package/dist/admin/{ListView-B93uYHCO.js.map → ListView-CYqhqQ5F.js.map} +1 -1
- package/dist/admin/{ListView-rBFAihm1.js → ListView-DD0JJANI.js} +3 -3
- package/dist/admin/{ListView-rBFAihm1.js.map → ListView-DD0JJANI.js.map} +1 -1
- package/dist/admin/{ListView-DweW2hC4.mjs → ListView-DW1TOj76.mjs} +3 -3
- package/dist/admin/{ListView-DweW2hC4.mjs.map → ListView-DW1TOj76.mjs.map} +1 -1
- package/dist/admin/{Login-BLLhLpjY.js → Login-BUKAGgYo.js} +2 -2
- package/dist/admin/{Login-BLLhLpjY.js.map → Login-BUKAGgYo.js.map} +1 -1
- package/dist/admin/{Login-BfY3qHT-.mjs → Login-C03cBo90.mjs} +2 -2
- package/dist/admin/{Login-BfY3qHT-.mjs.map → Login-C03cBo90.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-tyAVVcrF.mjs → MagicLinkEE-BDUghPZR.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-tyAVVcrF.mjs.map → MagicLinkEE-BDUghPZR.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-DmJbRy16.js → MagicLinkEE-ChH11T9g.js} +3 -3
- package/dist/admin/{MagicLinkEE-DmJbRy16.js.map → MagicLinkEE-ChH11T9g.js.map} +1 -1
- package/dist/admin/{MarketplacePage-BjqbBfYn.js → MarketplacePage-DH3yG1LP.js} +4 -10
- package/dist/admin/MarketplacePage-DH3yG1LP.js.map +1 -0
- package/dist/admin/{MarketplacePage-Ce4cgMEU.mjs → MarketplacePage-nqklHBRT.mjs} +4 -10
- package/dist/admin/MarketplacePage-nqklHBRT.mjs.map +1 -0
- package/dist/admin/{ProfilePage-7k8cFYVH.js → ProfilePage-DAHD2joV.js} +3 -3
- package/dist/admin/{ProfilePage-7k8cFYVH.js.map → ProfilePage-DAHD2joV.js.map} +1 -1
- package/dist/admin/{ProfilePage-CX6Lwk1X.mjs → ProfilePage-kV_9teLb.mjs} +3 -3
- package/dist/admin/{ProfilePage-CX6Lwk1X.mjs.map → ProfilePage-kV_9teLb.mjs.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-Dh_RoXug.mjs → PurchaseAuditLogs-D0k9DTpT.mjs} +2 -2
- package/dist/admin/{PurchaseAuditLogs-Dh_RoXug.mjs.map → PurchaseAuditLogs-D0k9DTpT.mjs.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-80N7n97E.js → PurchaseAuditLogs-lp-DrWVM.js} +2 -2
- package/dist/admin/{PurchaseAuditLogs-80N7n97E.js.map → PurchaseAuditLogs-lp-DrWVM.js.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-iWoN27DO.js → PurchaseSingleSignOn-C7Q4_S9b.js} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-iWoN27DO.js.map → PurchaseSingleSignOn-C7Q4_S9b.js.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-BbDXmLgD.mjs → PurchaseSingleSignOn-DCVtDAHy.mjs} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-BbDXmLgD.mjs.map → PurchaseSingleSignOn-DCVtDAHy.mjs.map} +1 -1
- package/dist/admin/{SelectRoles-CCxu1S4k.mjs → SelectRoles-41l96-2X.mjs} +3 -3
- package/dist/admin/{SelectRoles-CCxu1S4k.mjs.map → SelectRoles-41l96-2X.mjs.map} +1 -1
- package/dist/admin/{SelectRoles-CQnu_yr5.js → SelectRoles-CAvI66nC.js} +3 -3
- package/dist/admin/{SelectRoles-CQnu_yr5.js.map → SelectRoles-CAvI66nC.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-B5bvxVii.js → SingleSignOnPage-CmKhH0D-.js} +3 -3
- package/dist/admin/{SingleSignOnPage-B5bvxVii.js.map → SingleSignOnPage-CmKhH0D-.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-EWjZ_2-i.mjs → SingleSignOnPage-WFivqAhu.mjs} +3 -3
- package/dist/admin/{SingleSignOnPage-EWjZ_2-i.mjs.map → SingleSignOnPage-WFivqAhu.mjs.map} +1 -1
- package/dist/admin/{Table-C8w728Ob.js → Table-BKFhuknL.js} +2 -2
- package/dist/admin/{Table-C8w728Ob.js.map → Table-BKFhuknL.js.map} +1 -1
- package/dist/admin/{Table-zgTdjYBv.mjs → Table-DbC9nEt6.mjs} +2 -2
- package/dist/admin/{Table-zgTdjYBv.mjs.map → Table-DbC9nEt6.mjs.map} +1 -1
- package/dist/admin/{TokenTypeSelect-B8cX28-g.js → TokenTypeSelect-CiLmxtYv.js} +2 -2
- package/dist/admin/{TokenTypeSelect-B8cX28-g.js.map → TokenTypeSelect-CiLmxtYv.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-Fwipw6kK.mjs → TokenTypeSelect-DjXGtS0f.mjs} +2 -2
- package/dist/admin/{TokenTypeSelect-Fwipw6kK.mjs.map → TokenTypeSelect-DjXGtS0f.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-M7fTI694.js → UseCasePage-CJgKzfPO.js} +2 -2
- package/dist/admin/{UseCasePage-M7fTI694.js.map → UseCasePage-CJgKzfPO.js.map} +1 -1
- package/dist/admin/{UseCasePage-DfElOUHK.mjs → UseCasePage-uaQecKai.mjs} +2 -2
- package/dist/admin/{UseCasePage-DfElOUHK.mjs.map → UseCasePage-uaQecKai.mjs.map} +1 -1
- package/dist/admin/{constants-DLYBy6ok.js → constants-A7qPNH9R.js} +2 -2
- package/dist/admin/{constants-DLYBy6ok.js.map → constants-A7qPNH9R.js.map} +1 -1
- package/dist/admin/{constants-kiTswp4u.mjs → constants-B1ll13Cl.mjs} +2 -2
- package/dist/admin/{constants-kiTswp4u.mjs.map → constants-B1ll13Cl.mjs.map} +1 -1
- package/dist/admin/{index-BTbZqind.js → index-CkChgOuW.js} +30 -30
- package/dist/admin/{index-BTbZqind.js.map → index-CkChgOuW.js.map} +1 -1
- package/dist/admin/{index-O8wWF32N.mjs → index-DZqM9TPB.mjs} +30 -30
- package/dist/admin/{index-O8wWF32N.mjs.map → index-DZqM9TPB.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/{useAdminRoles-DckmHD5S.mjs → useAdminRoles-5tDiNLn-.mjs} +2 -2
- package/dist/admin/{useAdminRoles-DckmHD5S.mjs.map → useAdminRoles-5tDiNLn-.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-B2bLCaRj.js → useAdminRoles-CHNxbXxY.js} +2 -2
- package/dist/admin/{useAdminRoles-B2bLCaRj.js.map → useAdminRoles-CHNxbXxY.js.map} +1 -1
- package/dist/admin/{validation-CDQ9YkqE.mjs → validation-DUbtPjIz.mjs} +2 -2
- package/dist/admin/{validation-CDQ9YkqE.mjs.map → validation-DUbtPjIz.mjs.map} +1 -1
- package/dist/admin/{validation-CjYeZe1-.js → validation-DX8xoo2f.js} +2 -2
- package/dist/admin/{validation-CjYeZe1-.js.map → validation-DX8xoo2f.js.map} +1 -1
- package/dist/package.json.d.ts +2 -2
- package/dist/server/src/domain/action/index.d.ts +71 -6
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +23 -3
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/admin/AuthenticatedLayout-DxyWXA7n.js.map +0 -1
- package/dist/admin/AuthenticatedLayout-GHedQ62F.mjs.map +0 -1
- package/dist/admin/MarketplacePage-BjqbBfYn.js.map +0 -1
- package/dist/admin/MarketplacePage-Ce4cgMEU.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-C-gi2d0A.js","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the user to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\n )}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </Grid.Item>\n );\n })\n )}\n </Grid.Root>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useIntl","useMatch","useNavigate","useNotification","useEnterprise","MagicLinkCE","useAPIErrorHandler","useTypedSelector","selectAdminPermissions","useRBAC","useUpdateUserMutation","useAdminUsers","React","jsx","Page","pick","id","isBaseQueryError","jsxs","Form","Fragment","Layouts","Button","Check","getDisplayName","BackButton","Box","Flex","Typography","Grid","InputRenderer","SelectRoles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditPage-BBKEYf_n.js","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the user to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\n )}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </Grid.Item>\n );\n })\n )}\n </Grid.Root>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useIntl","useMatch","useNavigate","useNotification","useEnterprise","MagicLinkCE","useAPIErrorHandler","useTypedSelector","selectAdminPermissions","useRBAC","useUpdateUserMutation","useAdminUsers","React","jsx","Page","pick","id","isBaseQueryError","jsxs","Form","Fragment","Layouts","Button","Check","getDisplayName","BackButton","Box","Flex","Typography","Grid","InputRenderer","SelectRoles"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ const selectors = require('./selectors-DYNXQ1tD.js');
|
|
|
10
10
|
const admin = require('./admin-3FVGSNUT.js');
|
|
11
11
|
const icons = require('@strapi/icons');
|
|
12
12
|
const yup = require('yup');
|
|
13
|
-
const index = require('./index-
|
|
13
|
+
const index = require('./index-CkChgOuW.js');
|
|
14
14
|
const useEnterprise = require('./useEnterprise-ijNnK53J.js');
|
|
15
15
|
const styledComponents = require('styled-components');
|
|
16
16
|
const useWebhooks = require('./useWebhooks-CkRHgTl_.js');
|
|
@@ -460,7 +460,7 @@ const WebhookForm = ({
|
|
|
460
460
|
const [showTriggerResponse, setShowTriggerResponse] = React__namespace.useState(false);
|
|
461
461
|
const EventTable = useEnterprise.useEnterprise(
|
|
462
462
|
EventTableCE,
|
|
463
|
-
async () => (await Promise.resolve().then(() => require('./EventsTable-
|
|
463
|
+
async () => (await Promise.resolve().then(() => require('./EventsTable-D8giZmBa.js'))).EventsTableEE
|
|
464
464
|
);
|
|
465
465
|
const mapHeaders = (headers) => {
|
|
466
466
|
if (!Object.keys(headers).length) {
|
|
@@ -776,4 +776,4 @@ const EditPage$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty
|
|
|
776
776
|
exports.EditPage = EditPage;
|
|
777
777
|
exports.EditPage$1 = EditPage$1;
|
|
778
778
|
exports.Events = Events;
|
|
779
|
-
//# sourceMappingURL=EditPage-
|
|
779
|
+
//# sourceMappingURL=EditPage-BSFE1F2L.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-5L7BJ8dA.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/EventsTable.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx","../../admin/src/pages/Settings/pages/Webhooks/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Checkbox,\n Flex,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n Field,\n CheckboxProps,\n} from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label aria-hidden>{label}</Field.Label>\n {/* @ts-expect-error – TODO: add colCount & rowCount */}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 6%;\n vertical-align: middle;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n { id: 'app.utils.publish', defaultMessage: 'Publish' },\n { id: 'app.utils.unpublish', defaultMessage: 'Unpublish' },\n ];\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { formatMessage } = useIntl();\n const headers = getHeaders();\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const events = providedEvents || getCEEvents();\n const { value = [], onChange } = useField<string[]>('events');\n\n const inputName = 'events';\n const inputValue = value;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: EventsRowProps['handleSelect'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n\n onChange(inputName, Array.from(set));\n };\n\n const handleSelectAll: EventsRowProps['handleSelectAll'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n\n onChange(inputName, Array.from(set));\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n 'entry.publish',\n 'entry.unpublish',\n ];\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: (name: string, value: boolean) => void;\n handleSelectAll: (name: string, value: boolean) => void;\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: CheckboxProps['onCheckedChange'] = () => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll(name, valueToSet);\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n checked={\n hasSomeCheckboxSelected && !areAllCheckboxesSelected\n ? 'indeterminate'\n : areAllCheckboxesSelected\n }\n onCheckedChange={onChangeAll}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event} textAlign=\"center\">\n <Flex width=\"100%\" justifyContent=\"center\">\n <Checkbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n checked={inputValue.includes(event)}\n onCheckedChange={(value) => handleSelect(event, !!value)}\n />\n </Flex>\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n","import { Events } from './Events';\n\nconst EventTableCE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n </Events.Root>\n );\n};\n\nexport { EventTableCE };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n","import { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * TriggerContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TriggerContainerProps extends Pick<StatusProps, 'isPending'> {\n onCancel: () => void;\n response?: {\n statusCode: number;\n message?: string;\n };\n}\n\nconst TriggerContainer = ({ isPending, onCancel, response }: TriggerContainerProps) => {\n const { statusCode, message } = response ?? {};\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid.Root gap={4} style={{ alignItems: 'center' }}>\n <Grid.Item col={3} direction=\"column\" alignItems=\"stretch\">\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </Grid.Item>\n <Grid.Item col={3} direction=\"column\" alignItems=\"stretch\">\n <Status isPending={isPending} statusCode={statusCode} />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({\n id: 'Settings.webhooks.trigger.cancel',\n defaultMessage: 'cancel',\n })}\n </Typography>\n <Cross fill=\"neutral400\" height=\"1.2rem\" width=\"1.2rem\" />\n </Flex>\n </button>\n </Flex>\n )}\n </Grid.Item>\n </Grid.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StatusProps {\n isPending: boolean;\n statusCode?: number;\n}\n\nconst Status = ({ isPending, statusCode }: StatusProps) => {\n const { formatMessage } = useIntl();\n\n if (isPending || !statusCode) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Loader height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Check fill=\"success700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Cross fill=\"danger700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Message\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MessageProps {\n statusCode?: number;\n message?: string;\n}\n\nconst Message = ({ statusCode, message }: MessageProps) => {\n const { formatMessage } = useIntl();\n\n if (!statusCode) {\n return null;\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={`25rem`} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\n\nexport { TriggerContainer };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, TextInput } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified}\n loading={isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid.Root gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n )\n .nullable(),\n value: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n )\n .nullable(),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport { Modules } from '@strapi/types';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\n\nimport { CreateWebhook, TriggerWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { WebhookForm, WebhookFormProps, WebhookFormValues } from './components/WebhookForm';\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst cleanData = (\n data: WebhookFormValues\n): Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'> => ({\n ...data,\n headers: data.headers.reduce<Modules.WebhookStore.Webhook['headers']>((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/webhooks/:id');\n const id = match?.params.id;\n const isCreating = id === 'create';\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n /**\n * Prevents the notifications from showing up twice because the function identity\n * coming from the helper plugin is not stable\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const stableFormatAPIError = React.useCallback(formatAPIError, []);\n const [isTriggering, setIsTriggering] = React.useState(false);\n const [triggerResponse, setTriggerResponse] = React.useState<TriggerWebhook.Response['data']>();\n\n const { isLoading, webhooks, error, createWebhook, updateWebhook, triggerWebhook } = useWebhooks(\n { id: id! },\n {\n skip: isCreating,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: stableFormatAPIError(error),\n });\n }\n }, [error, toggleNotification, stableFormatAPIError]);\n\n const handleTriggerWebhook = async () => {\n try {\n setIsTriggering(true);\n\n const res = await triggerWebhook(id!);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setTriggerResponse(res.data);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setIsTriggering(false);\n }\n };\n\n const handleSubmit: WebhookFormProps['handleSubmit'] = async (data, helpers) => {\n try {\n if (isCreating) {\n const res = await createWebhook(cleanData(data));\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.webhooks.created' }),\n });\n\n navigate(`../webhooks/${res.data.id}`, { replace: true });\n } else {\n const res = await updateWebhook({ id: id!, ...cleanData(data) });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const [webhook] = webhooks ?? [];\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <WebhookForm\n data={webhook}\n handleSubmit={handleSubmit}\n triggerWebhook={handleTriggerWebhook}\n isCreating={isCreating}\n isTriggering={isTriggering}\n triggerResponse={triggerResponse}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <Page.Protect permissions={permissions.settings?.webhooks.update}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditPage, EditPage };\n"],"names":["useIntl","Flex","jsx","Field","styled","Table","Thead","jsxs","Tr","Th","VisuallyHidden","Typography","useField","value","Tbody","Td","Checkbox","TextButton","useForm","DSField","Box","index","Grid","StringInput","IconButton","Minus","Plus","React","Combobox","ComboboxOption","Cross","Loader","Check","useEnterprise","Form","Fragment","Layouts","Button","Publish","BackButton","InputRenderer","yup","useMatch","useNavigate","useNotification","useAPIErrorHandler","useWebhooks","isBaseQueryError","Page","Main","useTypedSelector","selectAdminPermissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditPage-BSFE1F2L.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/EventsTable.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx","../../admin/src/pages/Settings/pages/Webhooks/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Checkbox,\n Flex,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n Field,\n CheckboxProps,\n} from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label aria-hidden>{label}</Field.Label>\n {/* @ts-expect-error – TODO: add colCount & rowCount */}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 6%;\n vertical-align: middle;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n { id: 'app.utils.publish', defaultMessage: 'Publish' },\n { id: 'app.utils.unpublish', defaultMessage: 'Unpublish' },\n ];\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { formatMessage } = useIntl();\n const headers = getHeaders();\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const events = providedEvents || getCEEvents();\n const { value = [], onChange } = useField<string[]>('events');\n\n const inputName = 'events';\n const inputValue = value;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: EventsRowProps['handleSelect'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n\n onChange(inputName, Array.from(set));\n };\n\n const handleSelectAll: EventsRowProps['handleSelectAll'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n\n onChange(inputName, Array.from(set));\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n 'entry.publish',\n 'entry.unpublish',\n ];\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: (name: string, value: boolean) => void;\n handleSelectAll: (name: string, value: boolean) => void;\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: CheckboxProps['onCheckedChange'] = () => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll(name, valueToSet);\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n checked={\n hasSomeCheckboxSelected && !areAllCheckboxesSelected\n ? 'indeterminate'\n : areAllCheckboxesSelected\n }\n onCheckedChange={onChangeAll}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event} textAlign=\"center\">\n <Flex width=\"100%\" justifyContent=\"center\">\n <Checkbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n checked={inputValue.includes(event)}\n onCheckedChange={(value) => handleSelect(event, !!value)}\n />\n </Flex>\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n","import { Events } from './Events';\n\nconst EventTableCE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n </Events.Root>\n );\n};\n\nexport { EventTableCE };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n","import { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * TriggerContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TriggerContainerProps extends Pick<StatusProps, 'isPending'> {\n onCancel: () => void;\n response?: {\n statusCode: number;\n message?: string;\n };\n}\n\nconst TriggerContainer = ({ isPending, onCancel, response }: TriggerContainerProps) => {\n const { statusCode, message } = response ?? {};\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid.Root gap={4} style={{ alignItems: 'center' }}>\n <Grid.Item col={3} direction=\"column\" alignItems=\"stretch\">\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </Grid.Item>\n <Grid.Item col={3} direction=\"column\" alignItems=\"stretch\">\n <Status isPending={isPending} statusCode={statusCode} />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({\n id: 'Settings.webhooks.trigger.cancel',\n defaultMessage: 'cancel',\n })}\n </Typography>\n <Cross fill=\"neutral400\" height=\"1.2rem\" width=\"1.2rem\" />\n </Flex>\n </button>\n </Flex>\n )}\n </Grid.Item>\n </Grid.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StatusProps {\n isPending: boolean;\n statusCode?: number;\n}\n\nconst Status = ({ isPending, statusCode }: StatusProps) => {\n const { formatMessage } = useIntl();\n\n if (isPending || !statusCode) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Loader height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Check fill=\"success700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Cross fill=\"danger700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Message\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MessageProps {\n statusCode?: number;\n message?: string;\n}\n\nconst Message = ({ statusCode, message }: MessageProps) => {\n const { formatMessage } = useIntl();\n\n if (!statusCode) {\n return null;\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={`25rem`} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\n\nexport { TriggerContainer };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, TextInput } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified}\n loading={isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid.Root gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n )\n .nullable(),\n value: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n )\n .nullable(),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport { Modules } from '@strapi/types';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\n\nimport { CreateWebhook, TriggerWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { WebhookForm, WebhookFormProps, WebhookFormValues } from './components/WebhookForm';\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst cleanData = (\n data: WebhookFormValues\n): Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'> => ({\n ...data,\n headers: data.headers.reduce<Modules.WebhookStore.Webhook['headers']>((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/webhooks/:id');\n const id = match?.params.id;\n const isCreating = id === 'create';\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n /**\n * Prevents the notifications from showing up twice because the function identity\n * coming from the helper plugin is not stable\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const stableFormatAPIError = React.useCallback(formatAPIError, []);\n const [isTriggering, setIsTriggering] = React.useState(false);\n const [triggerResponse, setTriggerResponse] = React.useState<TriggerWebhook.Response['data']>();\n\n const { isLoading, webhooks, error, createWebhook, updateWebhook, triggerWebhook } = useWebhooks(\n { id: id! },\n {\n skip: isCreating,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: stableFormatAPIError(error),\n });\n }\n }, [error, toggleNotification, stableFormatAPIError]);\n\n const handleTriggerWebhook = async () => {\n try {\n setIsTriggering(true);\n\n const res = await triggerWebhook(id!);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setTriggerResponse(res.data);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setIsTriggering(false);\n }\n };\n\n const handleSubmit: WebhookFormProps['handleSubmit'] = async (data, helpers) => {\n try {\n if (isCreating) {\n const res = await createWebhook(cleanData(data));\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.webhooks.created' }),\n });\n\n navigate(`../webhooks/${res.data.id}`, { replace: true });\n } else {\n const res = await updateWebhook({ id: id!, ...cleanData(data) });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const [webhook] = webhooks ?? [];\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <WebhookForm\n data={webhook}\n handleSubmit={handleSubmit}\n triggerWebhook={handleTriggerWebhook}\n isCreating={isCreating}\n isTriggering={isTriggering}\n triggerResponse={triggerResponse}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <Page.Protect permissions={permissions.settings?.webhooks.update}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditPage, EditPage };\n"],"names":["useIntl","Flex","jsx","Field","styled","Table","Thead","jsxs","Tr","Th","VisuallyHidden","Typography","useField","value","Tbody","Td","Checkbox","TextButton","useForm","DSField","Box","index","Grid","StringInput","IconButton","Minus","Plus","React","Combobox","ComboboxOption","Cross","Loader","Check","useEnterprise","Form","Fragment","Layouts","Button","Publish","BackButton","InputRenderer","yup","useMatch","useNavigate","useNotification","useAPIErrorHandler","useWebhooks","isBaseQueryError","Page","Main","useTypedSelector","selectAdminPermissions"],"mappings":"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"}
|
|
@@ -6,14 +6,14 @@ import pick from 'lodash/pick';
|
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { useMatch, useNavigate } from 'react-router-dom';
|
|
8
8
|
import * as yup from 'yup';
|
|
9
|
-
import { e as errorsTrads, j as useUpdateUserMutation, k as useAdminUsers, F as Form, b as Layouts, B as BackButton, M as MemoizedInputRenderer } from './index-
|
|
9
|
+
import { e as errorsTrads, j as useUpdateUserMutation, k as useAdminUsers, F as Form, b as Layouts, B as BackButton, M as MemoizedInputRenderer } from './index-DZqM9TPB.mjs';
|
|
10
10
|
import { b as useTypedSelector, P as Page, a as useNotification, e as useAPIErrorHandler, k as useRBAC } from './Theme-NAd2H4cV.mjs';
|
|
11
11
|
import { u as useEnterprise } from './useEnterprise-BGzVPL4w.mjs';
|
|
12
12
|
import { s as selectAdminPermissions } from './selectors-ZSFBgSp8.mjs';
|
|
13
13
|
import { i as isBaseQueryError } from './admin-DIy_Bn_0.mjs';
|
|
14
14
|
import { g as getDisplayName } from './users-8N93LH7R.mjs';
|
|
15
|
-
import { M as MagicLinkCE, S as SelectRoles } from './SelectRoles-
|
|
16
|
-
import { C as COMMON_USER_SCHEMA } from './validation-
|
|
15
|
+
import { M as MagicLinkCE, S as SelectRoles } from './SelectRoles-41l96-2X.mjs';
|
|
16
|
+
import { C as COMMON_USER_SCHEMA } from './validation-DUbtPjIz.mjs';
|
|
17
17
|
|
|
18
18
|
const EDIT_VALIDATION_SCHEMA = yup.object().shape({
|
|
19
19
|
...COMMON_USER_SCHEMA,
|
|
@@ -35,7 +35,7 @@ const EditPage = () => {
|
|
|
35
35
|
const { toggleNotification } = useNotification();
|
|
36
36
|
const MagicLink = useEnterprise(
|
|
37
37
|
MagicLinkCE,
|
|
38
|
-
async () => (await import('./MagicLinkEE-
|
|
38
|
+
async () => (await import('./MagicLinkEE-BDUghPZR.mjs')).MagicLinkEE
|
|
39
39
|
);
|
|
40
40
|
const {
|
|
41
41
|
_unstableFormatAPIError: formatAPIError,
|
|
@@ -327,4 +327,4 @@ const ProtectedEditPage = () => {
|
|
|
327
327
|
};
|
|
328
328
|
|
|
329
329
|
export { EditPage, ProtectedEditPage };
|
|
330
|
-
//# sourceMappingURL=EditPage-
|
|
330
|
+
//# sourceMappingURL=EditPage-ECBU2qqf.mjs.map
|