@strapi/admin 4.16.0 → 4.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AuthenticatedApp-2b5530b9.mjs → AuthenticatedApp-722b2e84.mjs} +21 -21
- package/dist/_chunks/{AuthenticatedApp-2b5530b9.mjs.map → AuthenticatedApp-722b2e84.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-12b0b80d.js → AuthenticatedApp-7e646400.js} +21 -21
- package/dist/_chunks/{AuthenticatedApp-12b0b80d.js.map → AuthenticatedApp-7e646400.js.map} +1 -1
- package/dist/_chunks/{HomePage-763d3a5f.js → HomePage-0e0dc215.js} +4 -4
- package/dist/_chunks/{HomePage-763d3a5f.js.map → HomePage-0e0dc215.js.map} +1 -1
- package/dist/_chunks/{HomePage-93e2ba01.mjs → HomePage-76bcd0cd.mjs} +4 -4
- package/dist/_chunks/{HomePage-93e2ba01.mjs.map → HomePage-76bcd0cd.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-f6a78451.mjs → HomePage-8c98b31f.mjs} +4 -4
- package/dist/_chunks/{HomePage-f6a78451.mjs.map → HomePage-8c98b31f.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-3ad80266.js → HomePage-ef787733.js} +4 -4
- package/dist/_chunks/{HomePage-3ad80266.js.map → HomePage-ef787733.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-83eaebad.mjs → InstalledPluginsPage-67b5f9c2.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-83eaebad.mjs.map → InstalledPluginsPage-67b5f9c2.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-e3d10fcd.js → InstalledPluginsPage-6f0897e8.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-e3d10fcd.js.map → InstalledPluginsPage-6f0897e8.js.map} +1 -1
- package/dist/_chunks/{Login-a48df094.js → Login-5b447dd2.js} +2 -2
- package/dist/_chunks/{Login-a48df094.js.map → Login-5b447dd2.js.map} +1 -1
- package/dist/_chunks/{Login-e12abb16.mjs → Login-8ade15b8.mjs} +2 -2
- package/dist/_chunks/{Login-e12abb16.mjs.map → Login-8ade15b8.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-193e4eca.js → MarketplacePage-1c954f9d.js} +3 -3
- package/dist/_chunks/{MarketplacePage-193e4eca.js.map → MarketplacePage-1c954f9d.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-b1679fa5.mjs → MarketplacePage-58fc8a9a.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-b1679fa5.mjs.map → MarketplacePage-58fc8a9a.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-3858db75.mjs → ProfilePage-a2f0366d.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-3858db75.mjs.map → ProfilePage-a2f0366d.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-4a1eb00d.js → ProfilePage-a68483d3.js} +3 -3
- package/dist/_chunks/{ProfilePage-4a1eb00d.js.map → ProfilePage-a68483d3.js.map} +1 -1
- package/dist/_chunks/{constants-dd4a9742.js → constants-155022af.js} +3 -3
- package/dist/_chunks/{constants-dd4a9742.js.map → constants-155022af.js.map} +1 -1
- package/dist/_chunks/{constants-481b3914.mjs → constants-32d352b6.mjs} +3 -3
- package/dist/_chunks/{constants-481b3914.mjs.map → constants-32d352b6.mjs.map} +1 -1
- package/dist/_chunks/{constants-5fd54815.js → constants-3967338c.js} +5 -5
- package/dist/_chunks/{constants-5fd54815.js.map → constants-3967338c.js.map} +1 -1
- package/dist/_chunks/{constants-8bdc91a9.mjs → constants-6bf1c3c2.mjs} +5 -5
- package/dist/_chunks/{constants-8bdc91a9.mjs.map → constants-6bf1c3c2.mjs.map} +1 -1
- package/dist/_chunks/{constants-49d63c92.js → constants-d097f266.js} +6 -6
- package/dist/_chunks/{constants-49d63c92.js.map → constants-d097f266.js.map} +1 -1
- package/dist/_chunks/{constants-6876b155.mjs → constants-da1ff847.mjs} +6 -6
- package/dist/_chunks/{constants-6876b155.mjs.map → constants-da1ff847.mjs.map} +1 -1
- package/dist/_chunks/{constants-fac0ce8c.js → constants-eb77e47a.js} +2 -2
- package/dist/_chunks/{constants-fac0ce8c.js.map → constants-eb77e47a.js.map} +1 -1
- package/dist/_chunks/{constants-b0bc030f.mjs → constants-ecad1e20.mjs} +2 -2
- package/dist/_chunks/{constants-b0bc030f.mjs.map → constants-ecad1e20.mjs.map} +1 -1
- package/dist/_chunks/{index-1ddec644.mjs → index-061947f1.mjs} +20 -20
- package/dist/_chunks/{index-1ddec644.mjs.map → index-061947f1.mjs.map} +1 -1
- package/dist/_chunks/{index-6757c461.mjs → index-06e97c47.mjs} +5 -5
- package/dist/_chunks/{index-6757c461.mjs.map → index-06e97c47.mjs.map} +1 -1
- package/dist/_chunks/{index-526ea946.js → index-1482f542.js} +2 -2
- package/dist/_chunks/{index-526ea946.js.map → index-1482f542.js.map} +1 -1
- package/dist/_chunks/{index-8c5b4bda.mjs → index-14887b9d.mjs} +3 -3
- package/dist/_chunks/{index-8c5b4bda.mjs.map → index-14887b9d.mjs.map} +1 -1
- package/dist/_chunks/{index-e76dc085.js → index-1502dedd.js} +4 -4
- package/dist/_chunks/{index-e76dc085.js.map → index-1502dedd.js.map} +1 -1
- package/dist/_chunks/{index-c8f0ea8f.js → index-19bd1210.js} +6 -6
- package/dist/_chunks/{index-c8f0ea8f.js.map → index-19bd1210.js.map} +1 -1
- package/dist/_chunks/{index-4ff0e245.js → index-2064cfaf.js} +3 -3
- package/dist/_chunks/{index-4ff0e245.js.map → index-2064cfaf.js.map} +1 -1
- package/dist/_chunks/{index-0dcabbdd.mjs → index-209cca35.mjs} +3 -3
- package/dist/_chunks/{index-0dcabbdd.mjs.map → index-209cca35.mjs.map} +1 -1
- package/dist/_chunks/{index-b6e7426d.mjs → index-24c2627d.mjs} +3 -3
- package/dist/_chunks/{index-b6e7426d.mjs.map → index-24c2627d.mjs.map} +1 -1
- package/dist/_chunks/{index-cf24d5a0.js → index-24d1e175.js} +5 -5
- package/dist/_chunks/{index-cf24d5a0.js.map → index-24d1e175.js.map} +1 -1
- package/dist/_chunks/{index-4ac37d7c.js → index-272d8fb9.js} +3 -3
- package/dist/_chunks/{index-4ac37d7c.js.map → index-272d8fb9.js.map} +1 -1
- package/dist/_chunks/{index-5d14fd43.mjs → index-2cf8d1f6.mjs} +3 -3
- package/dist/_chunks/{index-5d14fd43.mjs.map → index-2cf8d1f6.mjs.map} +1 -1
- package/dist/_chunks/{index-ad85a00a.mjs → index-35c3f9f1.mjs} +4 -4
- package/dist/_chunks/{index-ad85a00a.mjs.map → index-35c3f9f1.mjs.map} +1 -1
- package/dist/_chunks/{index-95d9bcb0.mjs → index-391891ba.mjs} +3 -3
- package/dist/_chunks/{index-95d9bcb0.mjs.map → index-391891ba.mjs.map} +1 -1
- package/dist/_chunks/{index-5e9a93b3.mjs → index-3939f07e.mjs} +4 -4
- package/dist/_chunks/{index-5e9a93b3.mjs.map → index-3939f07e.mjs.map} +1 -1
- package/dist/_chunks/{index-bd42fb77.mjs → index-3aab6b0f.mjs} +6 -6
- package/dist/_chunks/{index-bd42fb77.mjs.map → index-3aab6b0f.mjs.map} +1 -1
- package/dist/_chunks/{index-9f08bcc3.mjs → index-3c67c00b.mjs} +4 -4
- package/dist/_chunks/{index-9f08bcc3.mjs.map → index-3c67c00b.mjs.map} +1 -1
- package/dist/_chunks/{index-20454411.mjs → index-48c35356.mjs} +5 -5
- package/dist/_chunks/{index-20454411.mjs.map → index-48c35356.mjs.map} +1 -1
- package/dist/_chunks/{index-da64448f.js → index-4a019067.js} +3 -3
- package/dist/_chunks/{index-da64448f.js.map → index-4a019067.js.map} +1 -1
- package/dist/_chunks/{index-69dbf2cf.mjs → index-55155d83.mjs} +2 -2
- package/dist/_chunks/{index-69dbf2cf.mjs.map → index-55155d83.mjs.map} +1 -1
- package/dist/_chunks/{index-9d98e8b2.js → index-57f9a06f.js} +8 -8
- package/dist/_chunks/{index-9d98e8b2.js.map → index-57f9a06f.js.map} +1 -1
- package/dist/_chunks/{index-7e31e982.mjs → index-61852c7a.mjs} +3 -3
- package/dist/_chunks/{index-7e31e982.mjs.map → index-61852c7a.mjs.map} +1 -1
- package/dist/_chunks/{index-56cc01e0.js → index-6685e5a8.js} +3 -3
- package/dist/_chunks/{index-56cc01e0.js.map → index-6685e5a8.js.map} +1 -1
- package/dist/_chunks/{index-eb720419.js → index-6731bae9.js} +5 -5
- package/dist/_chunks/{index-eb720419.js.map → index-6731bae9.js.map} +1 -1
- package/dist/_chunks/{index-296f0769.mjs → index-674778e2.mjs} +2 -2
- package/dist/_chunks/{index-296f0769.mjs.map → index-674778e2.mjs.map} +1 -1
- package/dist/_chunks/{index-eab05381.js → index-6a8a1f1d.js} +3 -3
- package/dist/_chunks/{index-eab05381.js.map → index-6a8a1f1d.js.map} +1 -1
- package/dist/_chunks/{index-faf78cfd.mjs → index-707e89df.mjs} +3 -3
- package/dist/_chunks/{index-faf78cfd.mjs.map → index-707e89df.mjs.map} +1 -1
- package/dist/_chunks/{index-947668f7.js → index-724169b2.js} +3 -3
- package/dist/_chunks/{index-947668f7.js.map → index-724169b2.js.map} +1 -1
- package/dist/_chunks/{index-42a0b19b.js → index-73971882.js} +3 -3
- package/dist/_chunks/{index-42a0b19b.js.map → index-73971882.js.map} +1 -1
- package/dist/_chunks/{index-f09ec538.js → index-78f4851e.js} +3 -3
- package/dist/_chunks/{index-f09ec538.js.map → index-78f4851e.js.map} +1 -1
- package/dist/_chunks/{index-89a1d72c.mjs → index-7a797b0f.mjs} +4 -4
- package/dist/_chunks/{index-89a1d72c.mjs.map → index-7a797b0f.mjs.map} +1 -1
- package/dist/_chunks/{index-f762b27d.js → index-7b174d49.js} +20 -20
- package/dist/_chunks/{index-f762b27d.js.map → index-7b174d49.js.map} +1 -1
- package/dist/_chunks/{index-912140fa.js → index-819443df.js} +4 -4
- package/dist/_chunks/{index-912140fa.js.map → index-819443df.js.map} +1 -1
- package/dist/_chunks/{index-9881aa54.mjs → index-82fca9fd.mjs} +3 -3
- package/dist/_chunks/{index-9881aa54.mjs.map → index-82fca9fd.mjs.map} +1 -1
- package/dist/_chunks/{index-c0f59e46.mjs → index-8609fab4.mjs} +8 -8
- package/dist/_chunks/{index-c0f59e46.mjs.map → index-8609fab4.mjs.map} +1 -1
- package/dist/_chunks/{index-5d044c87.mjs → index-86a4fbbf.mjs} +3 -3
- package/dist/_chunks/{index-5d044c87.mjs.map → index-86a4fbbf.mjs.map} +1 -1
- package/dist/_chunks/{index-8b79ee6c.js → index-8f8eaed6.js} +4 -4
- package/dist/_chunks/{index-8b79ee6c.js.map → index-8f8eaed6.js.map} +1 -1
- package/dist/_chunks/{index-ef2c6efd.js → index-91726188.js} +3 -3
- package/dist/_chunks/{index-ef2c6efd.js.map → index-91726188.js.map} +1 -1
- package/dist/_chunks/{index-bcafdc00.mjs → index-97c03ee2.mjs} +4 -4
- package/dist/_chunks/{index-bcafdc00.mjs.map → index-97c03ee2.mjs.map} +1 -1
- package/dist/_chunks/{index-e04aafb3.mjs → index-9b2501ca.mjs} +2 -2
- package/dist/_chunks/{index-e04aafb3.mjs.map → index-9b2501ca.mjs.map} +1 -1
- package/dist/_chunks/{index-1d2a74ca.mjs → index-aad003e4.mjs} +5 -5
- package/dist/_chunks/{index-1d2a74ca.mjs.map → index-aad003e4.mjs.map} +1 -1
- package/dist/_chunks/{index-60e19de0.js → index-ad0512f0.js} +4 -4
- package/dist/_chunks/{index-60e19de0.js.map → index-ad0512f0.js.map} +1 -1
- package/dist/_chunks/{index-a9574ead.js → index-b247e702.js} +3 -3
- package/dist/_chunks/{index-a9574ead.js.map → index-b247e702.js.map} +1 -1
- package/dist/_chunks/{index-f5a00b06.js → index-b3ad6e5f.js} +3 -3
- package/dist/_chunks/{index-f5a00b06.js.map → index-b3ad6e5f.js.map} +1 -1
- package/dist/_chunks/{index-8759f1d9.js → index-b5eec5e2.js} +5 -5
- package/dist/_chunks/{index-8759f1d9.js.map → index-b5eec5e2.js.map} +1 -1
- package/dist/_chunks/{index-71c88425.js → index-b6b2a306.js} +3 -3
- package/dist/_chunks/{index-71c88425.js.map → index-b6b2a306.js.map} +1 -1
- package/dist/_chunks/{index-ebd0c6b2.mjs → index-be9a9d91.mjs} +3 -3
- package/dist/_chunks/{index-ebd0c6b2.mjs.map → index-be9a9d91.mjs.map} +1 -1
- package/dist/_chunks/{index-98221317.mjs → index-c5fa9006.mjs} +5 -5
- package/dist/_chunks/{index-98221317.mjs.map → index-c5fa9006.mjs.map} +1 -1
- package/dist/_chunks/{index-caa6ed37.js → index-c6c83bb3.js} +2 -2
- package/dist/_chunks/{index-caa6ed37.js.map → index-c6c83bb3.js.map} +1 -1
- package/dist/_chunks/{index-9ebd4c75.js → index-c8b6afca.js} +4 -4
- package/dist/_chunks/{index-9ebd4c75.js.map → index-c8b6afca.js.map} +1 -1
- package/dist/_chunks/{index-c8be54b1.js → index-caab4b20.js} +2 -2
- package/dist/_chunks/{index-c8be54b1.js.map → index-caab4b20.js.map} +1 -1
- package/dist/_chunks/{index-d8d56664.mjs → index-cc38421b.mjs} +5 -5
- package/dist/_chunks/{index-d8d56664.mjs.map → index-cc38421b.mjs.map} +1 -1
- package/dist/_chunks/{index-a8c829e4.js → index-cdcf1a78.js} +5 -5
- package/dist/_chunks/{index-a8c829e4.js.map → index-cdcf1a78.js.map} +1 -1
- package/dist/_chunks/{index-a98002b5.mjs → index-cea88049.mjs} +4 -4
- package/dist/_chunks/{index-a98002b5.mjs.map → index-cea88049.mjs.map} +1 -1
- package/dist/_chunks/{index-ff413b1a.js → index-ceacb143.js} +5 -5
- package/dist/_chunks/{index-ff413b1a.js.map → index-ceacb143.js.map} +1 -1
- package/dist/_chunks/{index-34233ee7.mjs → index-d1219a93.mjs} +3 -3
- package/dist/_chunks/{index-34233ee7.mjs.map → index-d1219a93.mjs.map} +1 -1
- package/dist/_chunks/{index-a61e2ef0.mjs → index-d47fc57d.mjs} +4 -4
- package/dist/_chunks/{index-a61e2ef0.mjs.map → index-d47fc57d.mjs.map} +1 -1
- package/dist/_chunks/{index-60941eee.mjs → index-d844fbda.mjs} +3 -3
- package/dist/_chunks/{index-60941eee.mjs.map → index-d844fbda.mjs.map} +1 -1
- package/dist/_chunks/{index-bdb23c76.js → index-d9aae905.js} +5 -5
- package/dist/_chunks/{index-bdb23c76.js.map → index-d9aae905.js.map} +1 -1
- package/dist/_chunks/{index-ccae5f17.js → index-dab453d2.js} +4 -4
- package/dist/_chunks/{index-ccae5f17.js.map → index-dab453d2.js.map} +1 -1
- package/dist/_chunks/{index-55f565cf.mjs → index-dd897afb.mjs} +3 -3
- package/dist/_chunks/{index-55f565cf.mjs.map → index-dd897afb.mjs.map} +1 -1
- package/dist/_chunks/{index-74601a9b.js → index-ec2d87cb.js} +4 -4
- package/dist/_chunks/{index-74601a9b.js.map → index-ec2d87cb.js.map} +1 -1
- package/dist/_chunks/{index-a1707d3b.js → index-ecfaf6c1.js} +3 -3
- package/dist/_chunks/{index-a1707d3b.js.map → index-ecfaf6c1.js.map} +1 -1
- package/dist/_chunks/{index-1eef7482.mjs → index-ff4fb44c.mjs} +5 -5
- package/dist/_chunks/{index-1eef7482.mjs.map → index-ff4fb44c.mjs.map} +1 -1
- package/dist/_chunks/{schema-e8bfd9c4.js → schema-336f4dd6.js} +2 -2
- package/dist/_chunks/{schema-e8bfd9c4.js.map → schema-336f4dd6.js.map} +1 -1
- package/dist/_chunks/{schema-da392e23.mjs → schema-60d9880c.mjs} +2 -2
- package/dist/_chunks/{schema-da392e23.mjs.map → schema-60d9880c.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-67154f59.mjs → validateWorkflow-022b5005.mjs} +3 -3
- package/dist/_chunks/{validateWorkflow-67154f59.mjs.map → validateWorkflow-022b5005.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-34ccfb57.js → validateWorkflow-7f76e43f.js} +3 -3
- package/dist/_chunks/{validateWorkflow-34ccfb57.js.map → validateWorkflow-7f76e43f.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-2064cfaf.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableEE.js"],"sourcesContent":["import React from 'react';\n\nimport EventTable from '../../../../../../../../../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events';\n\nconst events = {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n};\n\nconst getHeaders = () => {\n return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n};\n\nexport function EventTableEE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n <EventTable.Headers getHeaders={getHeaders} />\n <EventTable.Body providedEvents={events} />\n </EventTable.Root>\n );\n}\n"],"names":["jsxs","EventTable","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,SAAS;AAAA,EACb,oBAAoB,CAAC,mCAAmC;AAC1D;AAEA,MAAM,aAAa,MAAM;AACvB,SAAO,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,eAAgB,CAAA;AACrF;AAEO,SAAS,eAAe;AAE3B,SAAAA,gCAACC,MAAAA,WAAW,MAAX,EACC,UAAA;AAAA,IAACC,+BAAAD,MAAAA,WAAW,SAAX,EAAmB;AAAA,IACpBC,+BAACD,MAAAA,WAAW,MAAX,EAAgB;AAAA,IAChBC,2BAAAA,IAAAD,MAAA,WAAW,SAAX,EAAmB,WAAwB,CAAA;AAAA,IAC3CC,2BAAAA,IAAAD,MAAAA,WAAW,MAAX,EAAgB,gBAAgB,OAAQ,CAAA;AAAA,EAC3C,EAAA,CAAA;AAEJ;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Link, pxToRem, useFetchClient, useAPIErrorHandler, useNotification, useTracking, useRBAC, LinkButton, onRowClick, ConfirmDialog, CheckPagePermissions } from "@strapi/helper-plugin";
|
|
3
3
|
import { useSelector } from "react-redux";
|
|
4
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
4
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-722b2e84.mjs";
|
|
5
5
|
import React__default, { createElement } from "react";
|
|
6
6
|
import { Flex, Loader, Table, TFooter, Thead, Tr, Th, Typography, VisuallyHidden, Tbody, Td, IconButton } from "@strapi/design-system";
|
|
7
7
|
import { Plus, Pencil, Trash } from "@strapi/icons";
|
|
@@ -17,7 +17,7 @@ import { C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from "./constants-8092eeb5.m
|
|
|
17
17
|
import { u as useReviewWorkflows } from "./useReviewWorkflows-9e6b8986.mjs";
|
|
18
18
|
import "semver/functions/lt";
|
|
19
19
|
import "semver/functions/valid";
|
|
20
|
-
import "./index-
|
|
20
|
+
import "./index-3c67c00b.mjs";
|
|
21
21
|
import "react-dom/client";
|
|
22
22
|
import "invariant";
|
|
23
23
|
import "lodash/isFunction";
|
|
@@ -305,4 +305,4 @@ function index() {
|
|
|
305
305
|
export {
|
|
306
306
|
index as default
|
|
307
307
|
};
|
|
308
|
-
//# sourceMappingURL=index-
|
|
308
|
+
//# sourceMappingURL=index-209cca35.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-0dcabbdd.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/ListView/ListView.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/ListView/index.js"],"sourcesContent":["import React from 'react';\n\nimport {\n Flex,\n IconButton,\n Loader,\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n TFooter,\n Th,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n Link,\n LinkButton,\n onRowClick,\n pxToRem,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../../../admin/src/hooks/useContentTypes';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport * as Layout from '../../components/Layout';\nimport * as LimitsModal from '../../components/LimitsModal';\nimport { CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from '../../constants';\nimport { useReviewWorkflows } from '../../hooks/useReviewWorkflows';\n\nconst ActionLink = styled(Link)`\n align-items: center;\n height: ${pxToRem(32)};\n display: flex;\n justify-content: center;\n padding: ${({ theme }) => `${theme.spaces[2]}}`};\n width: ${pxToRem(32)};\n\n svg {\n height: ${pxToRem(12)};\n width: ${pxToRem(12)};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\nexport function ReviewWorkflowsListView() {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const { collectionTypes, singleTypes, isLoading: isLoadingModels } = useContentTypes();\n const { meta, workflows, isLoading, refetch } = useReviewWorkflows();\n const [workflowToDelete, setWorkflowToDelete] = React.useState(null);\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n const { del } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const { trackUsage } = useTracking();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canDelete },\n } = useRBAC(permissions.settings['review-workflows']);\n\n const limits = getFeature('review-workflows');\n\n const { mutateAsync, isLoading: isLoadingMutation } = useMutation(\n async ({ workflowId, stages }) => {\n const {\n data: { data },\n } = await del(`/admin/review-workflows/workflows/${workflowId}`, {\n data: stages,\n });\n\n return data;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.deleted', defaultMessage: 'Deleted' },\n });\n },\n }\n );\n\n const getContentTypeDisplayName = (uid) => {\n const contentType = [...collectionTypes, ...singleTypes].find(\n (contentType) => contentType.uid === uid\n );\n\n return contentType.info.displayName;\n };\n\n const handleDeleteWorkflow = (workflowId) => {\n setWorkflowToDelete(workflowId);\n };\n\n const toggleConfirmDeleteDialog = () => {\n setWorkflowToDelete(null);\n };\n\n const handleConfirmDeleteDialog = async () => {\n try {\n const res = await mutateAsync({ workflowId: workflowToDelete });\n\n await refetch();\n setWorkflowToDelete(null);\n\n return res;\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n return null;\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n\n React.useEffect(() => {\n if (!isLoading && !isLicenseLoading) {\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount > parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal(true);\n }\n }\n }, [isLicenseLoading, isLoading, limits, meta?.workflowCount, meta.workflowsTotal]);\n\n return (\n <>\n <Layout.Header\n primaryAction={\n canCreate && (\n <LinkButton\n startIcon={<Plus />}\n size=\"S\"\n to=\"/settings/review-workflows/create\"\n onClick={(event) => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit. If so,\n * prevent the navigation and show the limits overlay.\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount >= parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n event.preventDefault();\n setShowLimitModal(true);\n } else {\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </LinkButton>\n )\n }\n subtitle={formatMessage({\n id: 'Settings.review-workflows.list.page.subtitle',\n defaultMessage: 'Manage your content review process',\n })}\n title={formatMessage({\n id: 'Settings.review-workflows.list.page.title',\n defaultMessage: 'Review Workflows',\n })}\n />\n\n <Layout.Root>\n {isLoading || isLoadingModels ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.list.isLoading',\n defaultMessage: 'Workflows are loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Table\n colCount={3}\n footer={\n // TODO: we should be able to use a link here instead of an (inaccessible onClick) handler\n canCreate && (\n <TFooter\n icon={<Plus />}\n onClick={() => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount >=\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal(true);\n } else {\n push('/settings/review-workflows/create');\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </TFooter>\n )\n }\n rowCount={1}\n >\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.name.title',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.stages.title',\n defaultMessage: 'Stages',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.contentTypes.title',\n defaultMessage: 'Content Types',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.actions.title',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n\n <Tbody>\n {workflows.map((workflow) => (\n <Tr\n {...onRowClick({\n fn(event) {\n // Abort row onClick event when the user click on the delete button\n if (event.target.nodeName === 'BUTTON') {\n return;\n }\n\n push(`/settings/review-workflows/${workflow.id}`);\n },\n })}\n key={`workflow-${workflow.id}`}\n >\n <Td width={pxToRem(250)}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {workflow.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{workflow.stages.length}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {(workflow?.contentTypes ?? []).map(getContentTypeDisplayName).join(', ')}\n </Typography>\n </Td>\n <Td>\n <Flex alignItems=\"center\" justifyContent=\"end\">\n <ActionLink\n to={`/settings/review-workflows/${workflow.id}`}\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.edit.label',\n defaultMessage: 'Edit {name}',\n },\n { name: workflow.name }\n )}\n >\n <Pencil />\n </ActionLink>\n\n {workflows.length > 1 && canDelete && (\n <IconButton\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.delete.label',\n defaultMessage: 'Delete {name}',\n },\n { name: 'Default workflow' }\n )}\n icon={<Trash />}\n noBorder\n onClick={() => {\n handleDeleteWorkflow(workflow.id);\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n )}\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.review-workflows.list.page.delete.confirm.body',\n defaultMessage:\n 'If you remove this worfklow, all stage-related information will be removed for this content-type. Are you sure you want to remove it?',\n }}\n isConfirmButtonLoading={isLoadingMutation}\n isOpen={!!workflowToDelete}\n onToggleDialog={toggleConfirmDeleteDialog}\n onConfirm={handleConfirmDeleteDialog}\n />\n\n <LimitsModal.Root isOpen={showLimitModal} onClose={() => setShowLimitModal(false)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </Layout.Root>\n </>\n );\n}\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\n\nimport { ReviewWorkflowsListView } from './ListView';\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['review-workflows'].main}>\n <ReviewWorkflowsListView />\n </CheckPagePermissions>\n );\n}\n"],"names":["React","contentType","Layout.Header","Layout.Root","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-209cca35.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/ListView/ListView.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/ListView/index.js"],"sourcesContent":["import React from 'react';\n\nimport {\n Flex,\n IconButton,\n Loader,\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n TFooter,\n Th,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n Link,\n LinkButton,\n onRowClick,\n pxToRem,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../../../admin/src/hooks/useContentTypes';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport * as Layout from '../../components/Layout';\nimport * as LimitsModal from '../../components/LimitsModal';\nimport { CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from '../../constants';\nimport { useReviewWorkflows } from '../../hooks/useReviewWorkflows';\n\nconst ActionLink = styled(Link)`\n align-items: center;\n height: ${pxToRem(32)};\n display: flex;\n justify-content: center;\n padding: ${({ theme }) => `${theme.spaces[2]}}`};\n width: ${pxToRem(32)};\n\n svg {\n height: ${pxToRem(12)};\n width: ${pxToRem(12)};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover,\n &:focus {\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral800};\n }\n }\n }\n`;\n\nexport function ReviewWorkflowsListView() {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const { collectionTypes, singleTypes, isLoading: isLoadingModels } = useContentTypes();\n const { meta, workflows, isLoading, refetch } = useReviewWorkflows();\n const [workflowToDelete, setWorkflowToDelete] = React.useState(null);\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n const { del } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const { trackUsage } = useTracking();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canDelete },\n } = useRBAC(permissions.settings['review-workflows']);\n\n const limits = getFeature('review-workflows');\n\n const { mutateAsync, isLoading: isLoadingMutation } = useMutation(\n async ({ workflowId, stages }) => {\n const {\n data: { data },\n } = await del(`/admin/review-workflows/workflows/${workflowId}`, {\n data: stages,\n });\n\n return data;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.deleted', defaultMessage: 'Deleted' },\n });\n },\n }\n );\n\n const getContentTypeDisplayName = (uid) => {\n const contentType = [...collectionTypes, ...singleTypes].find(\n (contentType) => contentType.uid === uid\n );\n\n return contentType.info.displayName;\n };\n\n const handleDeleteWorkflow = (workflowId) => {\n setWorkflowToDelete(workflowId);\n };\n\n const toggleConfirmDeleteDialog = () => {\n setWorkflowToDelete(null);\n };\n\n const handleConfirmDeleteDialog = async () => {\n try {\n const res = await mutateAsync({ workflowId: workflowToDelete });\n\n await refetch();\n setWorkflowToDelete(null);\n\n return res;\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n return null;\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n\n React.useEffect(() => {\n if (!isLoading && !isLicenseLoading) {\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount > parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal(true);\n }\n }\n }, [isLicenseLoading, isLoading, limits, meta?.workflowCount, meta.workflowsTotal]);\n\n return (\n <>\n <Layout.Header\n primaryAction={\n canCreate && (\n <LinkButton\n startIcon={<Plus />}\n size=\"S\"\n to=\"/settings/review-workflows/create\"\n onClick={(event) => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit. If so,\n * prevent the navigation and show the limits overlay.\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount >= parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n event.preventDefault();\n setShowLimitModal(true);\n } else {\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </LinkButton>\n )\n }\n subtitle={formatMessage({\n id: 'Settings.review-workflows.list.page.subtitle',\n defaultMessage: 'Manage your content review process',\n })}\n title={formatMessage({\n id: 'Settings.review-workflows.list.page.title',\n defaultMessage: 'Review Workflows',\n })}\n />\n\n <Layout.Root>\n {isLoading || isLoadingModels ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.list.isLoading',\n defaultMessage: 'Workflows are loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Table\n colCount={3}\n footer={\n // TODO: we should be able to use a link here instead of an (inaccessible onClick) handler\n canCreate && (\n <TFooter\n icon={<Plus />}\n onClick={() => {\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount >=\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal(true);\n } else {\n push('/settings/review-workflows/create');\n trackUsage('willCreateWorkflow');\n }\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </TFooter>\n )\n }\n rowCount={1}\n >\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.name.title',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.stages.title',\n defaultMessage: 'Stages',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.contentTypes.title',\n defaultMessage: 'Content Types',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.actions.title',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n\n <Tbody>\n {workflows.map((workflow) => (\n <Tr\n {...onRowClick({\n fn(event) {\n // Abort row onClick event when the user click on the delete button\n if (event.target.nodeName === 'BUTTON') {\n return;\n }\n\n push(`/settings/review-workflows/${workflow.id}`);\n },\n })}\n key={`workflow-${workflow.id}`}\n >\n <Td width={pxToRem(250)}>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {workflow.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{workflow.stages.length}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {(workflow?.contentTypes ?? []).map(getContentTypeDisplayName).join(', ')}\n </Typography>\n </Td>\n <Td>\n <Flex alignItems=\"center\" justifyContent=\"end\">\n <ActionLink\n to={`/settings/review-workflows/${workflow.id}`}\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.edit.label',\n defaultMessage: 'Edit {name}',\n },\n { name: workflow.name }\n )}\n >\n <Pencil />\n </ActionLink>\n\n {workflows.length > 1 && canDelete && (\n <IconButton\n aria-label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.delete.label',\n defaultMessage: 'Delete {name}',\n },\n { name: 'Default workflow' }\n )}\n icon={<Trash />}\n noBorder\n onClick={() => {\n handleDeleteWorkflow(workflow.id);\n }}\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n )}\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.review-workflows.list.page.delete.confirm.body',\n defaultMessage:\n 'If you remove this worfklow, all stage-related information will be removed for this content-type. Are you sure you want to remove it?',\n }}\n isConfirmButtonLoading={isLoadingMutation}\n isOpen={!!workflowToDelete}\n onToggleDialog={toggleConfirmDeleteDialog}\n onConfirm={handleConfirmDeleteDialog}\n />\n\n <LimitsModal.Root isOpen={showLimitModal} onClose={() => setShowLimitModal(false)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </Layout.Root>\n </>\n );\n}\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\n\nimport { ReviewWorkflowsListView } from './ListView';\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['review-workflows'].main}>\n <ReviewWorkflowsListView />\n </CheckPagePermissions>\n );\n}\n"],"names":["React","contentType","Layout.Header","Layout.Root","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { Plus, Loader as Loader$1, Check, Cross, Play, ArrowLeft } from "@strapi
|
|
|
10
10
|
import { useFormikContext, FieldArray, Field, useFormik, FormikProvider } from "formik";
|
|
11
11
|
import PropTypes from "prop-types";
|
|
12
12
|
import { useIntl } from "react-intl";
|
|
13
|
-
import { p as useEnterprise } from "./index-
|
|
13
|
+
import { p as useEnterprise } from "./index-3c67c00b.mjs";
|
|
14
14
|
import styled from "styled-components";
|
|
15
15
|
import * as yup from "yup";
|
|
16
16
|
const formatValue = (value) => value.reduce((acc, curr) => {
|
|
@@ -570,7 +570,7 @@ const WebhookForm = ({
|
|
|
570
570
|
const [showTriggerResponse, setShowTriggerResponse] = useState(false);
|
|
571
571
|
const EventTable2 = useEnterprise(
|
|
572
572
|
EventTableCE,
|
|
573
|
-
async () => (await import("./index-
|
|
573
|
+
async () => (await import("./index-391891ba.mjs")).EventTableEE
|
|
574
574
|
);
|
|
575
575
|
const mapHeaders = (headers) => {
|
|
576
576
|
if (!Object.keys(headers).length) {
|
|
@@ -823,4 +823,4 @@ export {
|
|
|
823
823
|
EditView as E,
|
|
824
824
|
EventTable as a
|
|
825
825
|
};
|
|
826
|
-
//# sourceMappingURL=index-
|
|
826
|
+
//# sourceMappingURL=index-24c2627d.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-b6e7426d.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableCE.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport {\n BaseCheckbox,\n Checkbox,\n FieldLabel,\n Flex,\n Loader,\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} from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../hooks/useContentTypes';\n\nexport const formatValue = (value) =>\n value.reduce((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// 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: 10%;\n vertical-align: middle;\n text-align: center;\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\nconst getCEHeaders = (isDraftAndPublish) => {\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 ];\n\n if (isDraftAndPublish) {\n headers.push({ id: 'app.utils.publish', defaultMessage: 'Publish' });\n headers.push({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' });\n }\n\n return headers;\n};\n\nconst getCEEvents = (isDraftAndPublish) => {\n const entryEvents = ['entry.create', 'entry.update', 'entry.delete'];\n\n if (isDraftAndPublish) {\n entryEvents.push('entry.publish', 'entry.unpublish');\n }\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\nconst WebhookEventContext = React.createContext();\n\nconst Root = ({ children }) => {\n const { formatMessage } = useIntl();\n const { collectionTypes, isLoading } = useContentTypes();\n\n const isDraftAndPublish = React.useMemo(\n () => collectionTypes.some((ct) => ct.options.draftAndPublish === true),\n [collectionTypes]\n );\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <WebhookEventContext.Provider value={{ isDraftAndPublish }}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel aria-hidden>{label}</FieldLabel>\n {isLoading && (\n <Loader>\n {formatMessage({\n id: 'Settings.webhooks.events.isLoading',\n defaultMessage: 'Events loading',\n })}\n </Loader>\n )}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n </WebhookEventContext.Provider>\n );\n};\n\nRoot.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst Headers = ({ getHeaders = getCEHeaders }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const { formatMessage } = useIntl();\n const headers = getHeaders(isDraftAndPublish);\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\nHeaders.defaultProps = {\n getHeaders: getCEHeaders,\n};\n\nHeaders.propTypes = {\n getHeaders: PropTypes.func,\n};\n\nconst Body = ({ providedEvents }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents = [];\n\n const formattedValue = formatValue(inputValue);\n\n const handleSelect = ({ target: { name, value } }) => {\n let set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n const handleSelectAll = ({ target: { name, value } }) => {\n let 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 onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventRow\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\nBody.defaultProps = {\n providedEvents: null,\n};\n\nBody.propTypes = {\n providedEvents: PropTypes.object,\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n *\n * @param {string} str - The string to convert.\n * @returns {string} The converted string.\n */\nconst removeHyphensAndTitleCase = (str) =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst EventRow = ({ disabledEvents, name, events, inputValue, handleSelect, handleSelectAll }) => {\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 = ({ target: { name } }) => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll({\n target: { name, value: valueToSet },\n });\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n onChange={onChangeAll}\n value={areAllCheckboxesSelected}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event}>\n <BaseCheckbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n value={inputValue.includes(event)}\n onValueChange={(value) => handleSelect({ target: { name: event, value } })}\n />\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\nEventRow.defaultProps = {\n disabledEvents: [],\n events: [],\n inputValue: [],\n handleSelect() {},\n handleSelectAll() {},\n};\n\nEventRow.propTypes = {\n disabledEvents: PropTypes.array,\n events: PropTypes.array,\n inputValue: PropTypes.array,\n handleSelect: PropTypes.func,\n handleSelectAll: PropTypes.func,\n name: PropTypes.string.isRequired,\n};\n\nexport default { Root, Headers, Body, EventRow };\n","import React from 'react';\n\nimport EventTable from '../Events';\n\n// This component is overwritten by the EE counterpart\nexport function EventTableCE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n </EventTable.Root>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { ComboboxOption, CreatableCombobox } from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\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];\n\nconst Combobox = ({ name, onChange, value, ...props }) => {\n const {\n values: { headers },\n } = useFormikContext();\n const [options, setOptions] = useState(HTTP_HEADERS);\n\n useEffect(() => {\n setOptions(\n HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n )\n );\n }, [headers, value]);\n\n const handleChange = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value) => {\n setOptions((prev) => [...prev, value]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...props}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n value={value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </CreatableCombobox>\n );\n};\n\nCombobox.defaultProps = {\n value: undefined,\n};\n\nCombobox.propTypes = {\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nexport default Combobox;\n","import React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport Combobox from './Combobox';\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </FieldLabel>\n <Box padding={8} background=\"neutral100\" hasRadius>\n <FieldArray\n validateOnChange={false}\n name=\"headers\"\n render={({ push, remove }) => (\n <Grid gap={4}>\n {values.headers.map((header, index) => (\n // eslint-disable-next-line\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={Combobox}\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 error={errors.headers?.[index]?.key && errors.headers[index].key}\n />\n </GridItem>\n <GridItem col={6}>\n <Flex alignItems=\"flex-end\">\n <Box style={{ flex: 1 }}>\n <Field\n as={TextInput}\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 error={errors.headers?.[index]?.value && errors.headers[index].value}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={errors.headers?.[index]?.value ? 0 : 5}\n >\n <RemoveRoundedButton\n disabled={values.headers.length === 1}\n onClick={() => remove(index)}\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n />\n </Flex>\n </Flex>\n </GridItem>\n </React.Fragment>\n ))}\n <GridItem col={12}>\n <TextButton\n type=\"button\"\n onClick={() => {\n push({ key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </TextButton>\n </GridItem>\n </Grid>\n )}\n />\n </Box>\n </Flex>\n );\n};\n\nexport default HeadersInput;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\n// Being discussed in Notion: create a <Icon /> component in Parts\nconst Icon = styled.svg(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n path {\n fill: ${theme.colors[color]};\n }\n`\n);\n\nconst Status = ({ isPending, statusCode }) => {\n const { formatMessage } = useIntl();\n\n if (isPending) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Loader} />\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 <Icon as={Check} color=\"success700\" />\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 <Icon as={Cross} color=\"danger700\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\nStatus.propTypes = {\n isPending: PropTypes.bool.isRequired,\n statusCode: PropTypes.number,\n};\nStatus.defaultProps = {\n statusCode: undefined,\n};\n\nconst Message = ({ statusCode, message }) => {\n const { formatMessage } = useIntl();\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={pxToRem(250)} 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};\nMessage.propTypes = {\n statusCode: PropTypes.number,\n message: PropTypes.string,\n};\nMessage.defaultProps = {\n statusCode: undefined,\n message: undefined,\n};\n\nconst CancelButton = ({ onCancel }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({ id: 'Settings.webhooks.trigger.cancel', defaultMessage: 'cancel' })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n );\n};\n\nCancelButton.propTypes = { onCancel: PropTypes.func.isRequired };\n\nconst TriggerContainer = ({ isPending, onCancel, response }) => {\n const { statusCode, message } = response;\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid gap={4} style={{ alignItems: 'center' }}>\n <GridItem col={3}>\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </GridItem>\n <GridItem col={3}>\n <Status isPending={isPending} statusCode={statusCode} />\n </GridItem>\n <GridItem col={6}>\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <CancelButton onCancel={onCancel} />\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nTriggerContainer.defaultProps = {\n isPending: false,\n onCancel() {},\n response: {},\n};\n\nTriggerContainer.propTypes = {\n isPending: PropTypes.bool,\n onCancel: PropTypes.func,\n response: PropTypes.object,\n};\n\nexport default TriggerContainer;\n","import * as yup from 'yup';\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nexport const makeWebhookValidationSchema = ({ formatMessage }) =>\n yup.object().shape({\n name: yup\n .string()\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 .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 let 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.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n ),\n value: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n ),\n })\n );\n }),\n events: yup.array(),\n });\n","import React, { useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n TextInput,\n} from '@strapi/design-system';\nimport { Form, Link } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { useEnterprise } from '../../../../../../../hooks/useEnterprise';\nimport { EventTableCE } from '../EventTable';\nimport HeadersInput from '../HeadersInput';\nimport TriggerContainer from '../TriggerContainer';\n\nimport { makeWebhookValidationSchema } from './utils/makeWebhookValidationSchema';\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable'\n )\n ).EventTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n * @param {Object} headers\n * @returns {Array}\n */\n const mapHeaders = (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 const formik = useFormik({\n initialValues: {\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n },\n onSubmit(values, { resetForm, setSubmitting }) {\n handleSubmit(values);\n\n resetForm({ values });\n setSubmitting(false);\n },\n validationSchema: makeWebhookValidationSchema({ formatMessage }),\n validateOnChange: false,\n validateOnBlur: false,\n });\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <HeaderLayout\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 size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!formik.dirty}\n loading={formik.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={\n <Link startIcon={<ArrowLeft />} to=\"/settings/webhooks\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\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 gap={6}>\n <GridItem col={6}>\n <Field\n as={TextInput}\n name=\"name\"\n error={formik?.errors?.name && formik.errors.name}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n required\n />\n </GridItem>\n <GridItem col={12}>\n <Field\n as={TextInput}\n name=\"url\"\n error={formik?.errors?.url && formik.errors.url}\n label={formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n })}\n required\n />\n </GridItem>\n </Grid>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n </FormikProvider>\n );\n};\n\nWebhookForm.propTypes = {\n data: PropTypes.object,\n handleSubmit: PropTypes.func.isRequired,\n triggerWebhook: PropTypes.func.isRequired,\n isCreating: PropTypes.bool.isRequired,\n isTriggering: PropTypes.bool.isRequired,\n triggerResponse: PropTypes.object,\n};\n\nWebhookForm.defaultProps = {\n data: undefined,\n triggerResponse: undefined,\n};\n\nexport default WebhookForm;\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\nimport WebhookForm from './components/WebhookForm';\n\nconst cleanData = (data) => ({\n ...data,\n headers: data.headers.reduce((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditView = () => {\n const {\n params: { id },\n } = useRouteMatch('/settings/webhooks/:id');\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const queryClient = useQueryClient();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n } = useQuery(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/webhooks/${id}`);\n\n return data;\n },\n {\n enabled: !isCreating,\n }\n );\n\n React.useEffect(() => {\n if (webhookError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhookError),\n });\n }\n }, [webhookError, toggleNotification, formatAPIError]);\n\n const {\n isLoading: isTriggering,\n data: triggerResponse,\n isIdle: isTriggerIdle,\n mutate,\n } = useMutation(() => post(`/admin/webhooks/${id}/trigger`));\n\n const triggerWebhook = () =>\n mutate(null, {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const createWebhookMutation = useMutation((body) => post('/admin/webhooks', body));\n\n const updateWebhookMutation = useMutation(({ id, body }) => put(`/admin/webhooks/${id}`, body));\n\n const handleSubmit = async (data) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data), {\n onSuccess({ data: result }) {\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.webhooks.created' },\n });\n replace(`/settings/webhooks/${result.data.id}`);\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n return;\n }\n updateWebhookMutation.mutate(\n { id, body: cleanData(data) },\n {\n onSuccess() {\n queryClient.invalidateQueries(['webhooks', id]);\n toggleNotification({\n type: 'success',\n message: { id: 'notification.form.success.fields' },\n });\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n }\n );\n };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n {...{\n data: webhookData,\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n isTriggerIdle,\n triggerResponse: triggerResponse?.data.data,\n }}\n />\n </Main>\n );\n};\n\nexport default EditView;\n"],"names":["Table","Thead","Tr","Th","Tbody","name","Td","value","React","Loader","EventTable","Publish","id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-24c2627d.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableCE.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport {\n BaseCheckbox,\n Checkbox,\n FieldLabel,\n Flex,\n Loader,\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} from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../hooks/useContentTypes';\n\nexport const formatValue = (value) =>\n value.reduce((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// 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: 10%;\n vertical-align: middle;\n text-align: center;\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\nconst getCEHeaders = (isDraftAndPublish) => {\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 ];\n\n if (isDraftAndPublish) {\n headers.push({ id: 'app.utils.publish', defaultMessage: 'Publish' });\n headers.push({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' });\n }\n\n return headers;\n};\n\nconst getCEEvents = (isDraftAndPublish) => {\n const entryEvents = ['entry.create', 'entry.update', 'entry.delete'];\n\n if (isDraftAndPublish) {\n entryEvents.push('entry.publish', 'entry.unpublish');\n }\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\nconst WebhookEventContext = React.createContext();\n\nconst Root = ({ children }) => {\n const { formatMessage } = useIntl();\n const { collectionTypes, isLoading } = useContentTypes();\n\n const isDraftAndPublish = React.useMemo(\n () => collectionTypes.some((ct) => ct.options.draftAndPublish === true),\n [collectionTypes]\n );\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <WebhookEventContext.Provider value={{ isDraftAndPublish }}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel aria-hidden>{label}</FieldLabel>\n {isLoading && (\n <Loader>\n {formatMessage({\n id: 'Settings.webhooks.events.isLoading',\n defaultMessage: 'Events loading',\n })}\n </Loader>\n )}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n </WebhookEventContext.Provider>\n );\n};\n\nRoot.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst Headers = ({ getHeaders = getCEHeaders }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const { formatMessage } = useIntl();\n const headers = getHeaders(isDraftAndPublish);\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\nHeaders.defaultProps = {\n getHeaders: getCEHeaders,\n};\n\nHeaders.propTypes = {\n getHeaders: PropTypes.func,\n};\n\nconst Body = ({ providedEvents }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents = [];\n\n const formattedValue = formatValue(inputValue);\n\n const handleSelect = ({ target: { name, value } }) => {\n let set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n const handleSelectAll = ({ target: { name, value } }) => {\n let 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 onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventRow\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\nBody.defaultProps = {\n providedEvents: null,\n};\n\nBody.propTypes = {\n providedEvents: PropTypes.object,\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n *\n * @param {string} str - The string to convert.\n * @returns {string} The converted string.\n */\nconst removeHyphensAndTitleCase = (str) =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst EventRow = ({ disabledEvents, name, events, inputValue, handleSelect, handleSelectAll }) => {\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 = ({ target: { name } }) => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll({\n target: { name, value: valueToSet },\n });\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n onChange={onChangeAll}\n value={areAllCheckboxesSelected}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event}>\n <BaseCheckbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n value={inputValue.includes(event)}\n onValueChange={(value) => handleSelect({ target: { name: event, value } })}\n />\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\nEventRow.defaultProps = {\n disabledEvents: [],\n events: [],\n inputValue: [],\n handleSelect() {},\n handleSelectAll() {},\n};\n\nEventRow.propTypes = {\n disabledEvents: PropTypes.array,\n events: PropTypes.array,\n inputValue: PropTypes.array,\n handleSelect: PropTypes.func,\n handleSelectAll: PropTypes.func,\n name: PropTypes.string.isRequired,\n};\n\nexport default { Root, Headers, Body, EventRow };\n","import React from 'react';\n\nimport EventTable from '../Events';\n\n// This component is overwritten by the EE counterpart\nexport function EventTableCE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n </EventTable.Root>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { ComboboxOption, CreatableCombobox } from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\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];\n\nconst Combobox = ({ name, onChange, value, ...props }) => {\n const {\n values: { headers },\n } = useFormikContext();\n const [options, setOptions] = useState(HTTP_HEADERS);\n\n useEffect(() => {\n setOptions(\n HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n )\n );\n }, [headers, value]);\n\n const handleChange = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value) => {\n setOptions((prev) => [...prev, value]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...props}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n value={value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </CreatableCombobox>\n );\n};\n\nCombobox.defaultProps = {\n value: undefined,\n};\n\nCombobox.propTypes = {\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nexport default Combobox;\n","import React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport Combobox from './Combobox';\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </FieldLabel>\n <Box padding={8} background=\"neutral100\" hasRadius>\n <FieldArray\n validateOnChange={false}\n name=\"headers\"\n render={({ push, remove }) => (\n <Grid gap={4}>\n {values.headers.map((header, index) => (\n // eslint-disable-next-line\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={Combobox}\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 error={errors.headers?.[index]?.key && errors.headers[index].key}\n />\n </GridItem>\n <GridItem col={6}>\n <Flex alignItems=\"flex-end\">\n <Box style={{ flex: 1 }}>\n <Field\n as={TextInput}\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 error={errors.headers?.[index]?.value && errors.headers[index].value}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={errors.headers?.[index]?.value ? 0 : 5}\n >\n <RemoveRoundedButton\n disabled={values.headers.length === 1}\n onClick={() => remove(index)}\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n />\n </Flex>\n </Flex>\n </GridItem>\n </React.Fragment>\n ))}\n <GridItem col={12}>\n <TextButton\n type=\"button\"\n onClick={() => {\n push({ key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </TextButton>\n </GridItem>\n </Grid>\n )}\n />\n </Box>\n </Flex>\n );\n};\n\nexport default HeadersInput;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\n// Being discussed in Notion: create a <Icon /> component in Parts\nconst Icon = styled.svg(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n path {\n fill: ${theme.colors[color]};\n }\n`\n);\n\nconst Status = ({ isPending, statusCode }) => {\n const { formatMessage } = useIntl();\n\n if (isPending) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Loader} />\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 <Icon as={Check} color=\"success700\" />\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 <Icon as={Cross} color=\"danger700\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\nStatus.propTypes = {\n isPending: PropTypes.bool.isRequired,\n statusCode: PropTypes.number,\n};\nStatus.defaultProps = {\n statusCode: undefined,\n};\n\nconst Message = ({ statusCode, message }) => {\n const { formatMessage } = useIntl();\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={pxToRem(250)} 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};\nMessage.propTypes = {\n statusCode: PropTypes.number,\n message: PropTypes.string,\n};\nMessage.defaultProps = {\n statusCode: undefined,\n message: undefined,\n};\n\nconst CancelButton = ({ onCancel }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({ id: 'Settings.webhooks.trigger.cancel', defaultMessage: 'cancel' })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n );\n};\n\nCancelButton.propTypes = { onCancel: PropTypes.func.isRequired };\n\nconst TriggerContainer = ({ isPending, onCancel, response }) => {\n const { statusCode, message } = response;\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid gap={4} style={{ alignItems: 'center' }}>\n <GridItem col={3}>\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </GridItem>\n <GridItem col={3}>\n <Status isPending={isPending} statusCode={statusCode} />\n </GridItem>\n <GridItem col={6}>\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <CancelButton onCancel={onCancel} />\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nTriggerContainer.defaultProps = {\n isPending: false,\n onCancel() {},\n response: {},\n};\n\nTriggerContainer.propTypes = {\n isPending: PropTypes.bool,\n onCancel: PropTypes.func,\n response: PropTypes.object,\n};\n\nexport default TriggerContainer;\n","import * as yup from 'yup';\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nexport const makeWebhookValidationSchema = ({ formatMessage }) =>\n yup.object().shape({\n name: yup\n .string()\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 .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 let 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.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n ),\n value: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n ),\n })\n );\n }),\n events: yup.array(),\n });\n","import React, { useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n TextInput,\n} from '@strapi/design-system';\nimport { Form, Link } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { useEnterprise } from '../../../../../../../hooks/useEnterprise';\nimport { EventTableCE } from '../EventTable';\nimport HeadersInput from '../HeadersInput';\nimport TriggerContainer from '../TriggerContainer';\n\nimport { makeWebhookValidationSchema } from './utils/makeWebhookValidationSchema';\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable'\n )\n ).EventTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n * @param {Object} headers\n * @returns {Array}\n */\n const mapHeaders = (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 const formik = useFormik({\n initialValues: {\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n },\n onSubmit(values, { resetForm, setSubmitting }) {\n handleSubmit(values);\n\n resetForm({ values });\n setSubmitting(false);\n },\n validationSchema: makeWebhookValidationSchema({ formatMessage }),\n validateOnChange: false,\n validateOnBlur: false,\n });\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <HeaderLayout\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 size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!formik.dirty}\n loading={formik.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={\n <Link startIcon={<ArrowLeft />} to=\"/settings/webhooks\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\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 gap={6}>\n <GridItem col={6}>\n <Field\n as={TextInput}\n name=\"name\"\n error={formik?.errors?.name && formik.errors.name}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n required\n />\n </GridItem>\n <GridItem col={12}>\n <Field\n as={TextInput}\n name=\"url\"\n error={formik?.errors?.url && formik.errors.url}\n label={formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n })}\n required\n />\n </GridItem>\n </Grid>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n </FormikProvider>\n );\n};\n\nWebhookForm.propTypes = {\n data: PropTypes.object,\n handleSubmit: PropTypes.func.isRequired,\n triggerWebhook: PropTypes.func.isRequired,\n isCreating: PropTypes.bool.isRequired,\n isTriggering: PropTypes.bool.isRequired,\n triggerResponse: PropTypes.object,\n};\n\nWebhookForm.defaultProps = {\n data: undefined,\n triggerResponse: undefined,\n};\n\nexport default WebhookForm;\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\nimport WebhookForm from './components/WebhookForm';\n\nconst cleanData = (data) => ({\n ...data,\n headers: data.headers.reduce((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditView = () => {\n const {\n params: { id },\n } = useRouteMatch('/settings/webhooks/:id');\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const queryClient = useQueryClient();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n } = useQuery(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/webhooks/${id}`);\n\n return data;\n },\n {\n enabled: !isCreating,\n }\n );\n\n React.useEffect(() => {\n if (webhookError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhookError),\n });\n }\n }, [webhookError, toggleNotification, formatAPIError]);\n\n const {\n isLoading: isTriggering,\n data: triggerResponse,\n isIdle: isTriggerIdle,\n mutate,\n } = useMutation(() => post(`/admin/webhooks/${id}/trigger`));\n\n const triggerWebhook = () =>\n mutate(null, {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const createWebhookMutation = useMutation((body) => post('/admin/webhooks', body));\n\n const updateWebhookMutation = useMutation(({ id, body }) => put(`/admin/webhooks/${id}`, body));\n\n const handleSubmit = async (data) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data), {\n onSuccess({ data: result }) {\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.webhooks.created' },\n });\n replace(`/settings/webhooks/${result.data.id}`);\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n return;\n }\n updateWebhookMutation.mutate(\n { id, body: cleanData(data) },\n {\n onSuccess() {\n queryClient.invalidateQueries(['webhooks', id]);\n toggleNotification({\n type: 'success',\n message: { id: 'notification.form.success.fields' },\n });\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n }\n );\n };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n {...{\n data: webhookData,\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n isTriggerIdle,\n triggerResponse: triggerResponse?.data.data,\n }}\n />\n </Main>\n );\n};\n\nexport default EditView;\n"],"names":["Table","Thead","Tr","Th","Tbody","name","Td","value","React","Loader","EventTable","Publish","id"],"mappings":"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"}
|
|
@@ -11,14 +11,14 @@ require("lodash/cloneDeep");
|
|
|
11
11
|
require("lodash/get");
|
|
12
12
|
require("lodash/omit");
|
|
13
13
|
require("lodash/isNaN");
|
|
14
|
-
require("./schema-
|
|
14
|
+
require("./schema-336f4dd6.js");
|
|
15
15
|
require("lodash/merge");
|
|
16
16
|
require("lodash/set");
|
|
17
|
-
const index = require("./index-
|
|
17
|
+
const index = require("./index-57f9a06f.js");
|
|
18
18
|
require("react");
|
|
19
19
|
require("react-dnd");
|
|
20
20
|
require("@reduxjs/toolkit");
|
|
21
|
-
require("./index-
|
|
21
|
+
require("./index-8f8eaed6.js");
|
|
22
22
|
require("react-dom/client");
|
|
23
23
|
require("invariant");
|
|
24
24
|
require("lodash/isFunction");
|
|
@@ -42,7 +42,7 @@ require("lodash/isEmpty");
|
|
|
42
42
|
require("lodash/toNumber");
|
|
43
43
|
require("lodash/sortBy");
|
|
44
44
|
require("./DragLayer-f07eee6c.js");
|
|
45
|
-
require("./AuthenticatedApp-
|
|
45
|
+
require("./AuthenticatedApp-7e646400.js");
|
|
46
46
|
require("semver/functions/lt");
|
|
47
47
|
require("semver/functions/valid");
|
|
48
48
|
require("react-dnd-html5-backend");
|
|
@@ -126,4 +126,4 @@ ReviewWorkflowsAssigneeEE.propTypes = {
|
|
|
126
126
|
};
|
|
127
127
|
exports.ReviewWorkflowsAssigneeEE = ReviewWorkflowsAssigneeEE;
|
|
128
128
|
exports.ReviewWorkflowsStageEE = ReviewWorkflowsStageEE;
|
|
129
|
-
//# sourceMappingURL=index-
|
|
129
|
+
//# sourceMappingURL=index-24d1e175.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-24d1e175.js","sources":["../../ee/admin/src/content-manager/pages/ListView/ReviewWorkflowsColumn/ReviewWorkflowsStageEE.js","../../ee/admin/src/content-manager/pages/ListView/ReviewWorkflowsColumn/ReviewWorkflowsAssigneeEE.js"],"sourcesContent":["import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\n\nimport { STAGE_COLOR_DEFAULT } from '../../../../pages/SettingsPage/pages/ReviewWorkflows/constants';\nimport { getStageColorByHex } from '../../../../pages/SettingsPage/pages/ReviewWorkflows/utils/colors';\n\nexport function ReviewWorkflowsStageEE({ color, name }) {\n const { themeColorName } = getStageColorByHex(color);\n\n return (\n <Flex alignItems=\"center\" gap={2} maxWidth={pxToRem(300)}>\n <Box\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n\n <Typography fontWeight=\"regular\" textColor=\"neutral700\" ellipsis>\n {name}\n </Typography>\n </Flex>\n );\n}\n\nReviewWorkflowsStageEE.defaultProps = {\n color: STAGE_COLOR_DEFAULT,\n};\n\nReviewWorkflowsStageEE.propTypes = {\n color: PropTypes.string,\n name: PropTypes.string.isRequired,\n};\n","import React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getDisplayName } from '../../../../../../../admin/src/content-manager/utils';\n\nexport function ReviewWorkflowsAssigneeEE({ user }) {\n const { formatMessage } = useIntl();\n\n return <Typography textColor=\"neutral800\">{getDisplayName(user, formatMessage)}</Typography>;\n}\n\nReviewWorkflowsAssigneeEE.propTypes = {\n user: PropTypes.shape({\n firstname: PropTypes.string,\n lastname: PropTypes.string,\n username: PropTypes.string,\n }).isRequired,\n};\n"],"names":["getStageColorByHex","jsxs","Flex","pxToRem","jsx","Box","Typography","STAGE_COLOR_DEFAULT","PropTypes","useIntl","getDisplayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,SAAS,uBAAuB,EAAE,OAAO,QAAQ;AACtD,QAAM,EAAE,eAAA,IAAmBA,OAAA,mBAAmB,KAAK;AAGjD,SAAAC,gCAACC,aAAAA,QAAK,YAAW,UAAS,KAAK,GAAG,UAAUC,aAAAA,QAAQ,GAAG,GACrD,UAAA;AAAA,IAAAC,2BAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,aAAa,mBAAmB,aAAa,eAAe;AAAA,QAC5D,WAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEAD,2BAAAA,IAACE,2BAAW,YAAW,WAAU,WAAU,cAAa,UAAQ,MAC7D,UACH,KAAA,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,uBAAuB,eAAe;AAAA,EACpC,OAAOC,UAAA;AACT;AAEA,uBAAuB,YAAY;AAAA,EACjC,OAAOC,mBAAU,QAAA;AAAA,EACjB,MAAMA,mBAAAA,QAAU,OAAO;AACzB;AC7BgB,SAAA,0BAA0B,EAAE,QAAQ;AAC5C,QAAA,EAAE,kBAAkBC,UAAAA;AAE1B,wCAAQH,aAAAA,YAAW,EAAA,WAAU,cAAc,UAAeI,MAAAA,eAAA,MAAM,aAAa,EAAE,CAAA;AACjF;AAEA,0BAA0B,YAAY;AAAA,EACpC,MAAMF,2BAAU,MAAM;AAAA,IACpB,WAAWA,mBAAU,QAAA;AAAA,IACrB,UAAUA,mBAAU,QAAA;AAAA,IACpB,UAAUA,mBAAU,QAAA;AAAA,EACrB,CAAA,EAAE;AACL;;;"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
5
5
|
const reactRedux = require("react-redux");
|
|
6
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
6
|
+
const AuthenticatedApp = require("./AuthenticatedApp-7e646400.js");
|
|
7
7
|
const React = require("react");
|
|
8
8
|
const designSystem = require("@strapi/design-system");
|
|
9
9
|
const Icons = require("@strapi/icons");
|
|
@@ -15,7 +15,7 @@ const produce = require("immer");
|
|
|
15
15
|
require("react-query");
|
|
16
16
|
require("semver/functions/lt");
|
|
17
17
|
require("semver/functions/valid");
|
|
18
|
-
require("./index-
|
|
18
|
+
require("./index-8f8eaed6.js");
|
|
19
19
|
require("react-dom/client");
|
|
20
20
|
require("invariant");
|
|
21
21
|
require("lodash/isFunction");
|
|
@@ -362,4 +362,4 @@ const ProtectedListPage = () => {
|
|
|
362
362
|
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings.roles.main, children: /* @__PURE__ */ jsxRuntime.jsx(RoleListPage, {}) });
|
|
363
363
|
};
|
|
364
364
|
exports.default = ProtectedListPage;
|
|
365
|
-
//# sourceMappingURL=index-
|
|
365
|
+
//# sourceMappingURL=index-272d8fb9.js.map
|