@strapi/admin 4.15.5 → 4.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AuthenticatedApp-61dfdab8.js → AuthenticatedApp-12b0b80d.js} +23 -23
- package/dist/_chunks/{AuthenticatedApp-61dfdab8.js.map → AuthenticatedApp-12b0b80d.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-da1595e9.mjs → AuthenticatedApp-2b5530b9.mjs} +23 -23
- package/dist/_chunks/{AuthenticatedApp-da1595e9.mjs.map → AuthenticatedApp-2b5530b9.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-48934b34.js → HomePage-3ad80266.js} +4 -4
- package/dist/_chunks/{HomePage-48934b34.js.map → HomePage-3ad80266.js.map} +1 -1
- package/dist/_chunks/{HomePage-f3052b59.js → HomePage-763d3a5f.js} +4 -4
- package/dist/_chunks/{HomePage-f3052b59.js.map → HomePage-763d3a5f.js.map} +1 -1
- package/dist/_chunks/{HomePage-2690d237.mjs → HomePage-93e2ba01.mjs} +4 -4
- package/dist/_chunks/{HomePage-2690d237.mjs.map → HomePage-93e2ba01.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-3792b299.mjs → HomePage-f6a78451.mjs} +4 -4
- package/dist/_chunks/{HomePage-3792b299.mjs.map → HomePage-f6a78451.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-3bd06321.mjs → InstalledPluginsPage-83eaebad.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-3bd06321.mjs.map → InstalledPluginsPage-83eaebad.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-da0780c1.js → InstalledPluginsPage-e3d10fcd.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-da0780c1.js.map → InstalledPluginsPage-e3d10fcd.js.map} +1 -1
- package/dist/_chunks/{Login-ab4b47ad.js → Login-a48df094.js} +2 -2
- package/dist/_chunks/{Login-ab4b47ad.js.map → Login-a48df094.js.map} +1 -1
- package/dist/_chunks/{Login-8f68c65a.mjs → Login-e12abb16.mjs} +2 -2
- package/dist/_chunks/{Login-8f68c65a.mjs.map → Login-e12abb16.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-935fca72.js → MarketplacePage-193e4eca.js} +3 -3
- package/dist/_chunks/{MarketplacePage-935fca72.js.map → MarketplacePage-193e4eca.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-95af86bb.mjs → MarketplacePage-b1679fa5.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-95af86bb.mjs.map → MarketplacePage-b1679fa5.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-20de1b54.mjs → ProfilePage-3858db75.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-20de1b54.mjs.map → ProfilePage-3858db75.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-b8b29c4d.js → ProfilePage-4a1eb00d.js} +3 -3
- package/dist/_chunks/{ProfilePage-b8b29c4d.js.map → ProfilePage-4a1eb00d.js.map} +1 -1
- package/dist/_chunks/{SalesPage-c5cbb366.js → SalesPage-4a0a68fb.js} +2 -2
- package/dist/_chunks/SalesPage-4a0a68fb.js.map +1 -0
- package/dist/_chunks/{SalesPage-c7c94c3f.mjs → SalesPage-fceedf48.mjs} +2 -2
- package/dist/_chunks/{SalesPage-c7c94c3f.mjs.map → SalesPage-fceedf48.mjs.map} +1 -1
- package/dist/_chunks/{build-92e15b93.mjs → build-1026ce7c.mjs} +2 -2
- package/dist/_chunks/{build-92e15b93.mjs.map → build-1026ce7c.mjs.map} +1 -1
- package/dist/_chunks/{build-df2f219f.js → build-d99bcc06.js} +2 -2
- package/dist/_chunks/{build-df2f219f.js.map → build-d99bcc06.js.map} +1 -1
- package/dist/_chunks/{constants-db792b94.mjs → constants-481b3914.mjs} +3 -3
- package/dist/_chunks/{constants-db792b94.mjs.map → constants-481b3914.mjs.map} +1 -1
- package/dist/_chunks/{constants-797ada28.js → constants-49d63c92.js} +6 -6
- package/dist/_chunks/{constants-797ada28.js.map → constants-49d63c92.js.map} +1 -1
- package/dist/_chunks/{constants-008a1527.js → constants-5fd54815.js} +5 -5
- package/dist/_chunks/{constants-008a1527.js.map → constants-5fd54815.js.map} +1 -1
- package/dist/_chunks/{constants-278adc05.mjs → constants-6876b155.mjs} +6 -6
- package/dist/_chunks/{constants-278adc05.mjs.map → constants-6876b155.mjs.map} +1 -1
- package/dist/_chunks/{constants-1d345364.mjs → constants-8bdc91a9.mjs} +5 -5
- package/dist/_chunks/{constants-1d345364.mjs.map → constants-8bdc91a9.mjs.map} +1 -1
- package/dist/_chunks/{constants-29d123f8.mjs → constants-b0bc030f.mjs} +2 -2
- package/dist/_chunks/{constants-29d123f8.mjs.map → constants-b0bc030f.mjs.map} +1 -1
- package/dist/_chunks/{constants-ec71917d.js → constants-dd4a9742.js} +3 -3
- package/dist/_chunks/{constants-ec71917d.js.map → constants-dd4a9742.js.map} +1 -1
- package/dist/_chunks/{constants-4be682e5.js → constants-fac0ce8c.js} +2 -2
- package/dist/_chunks/{constants-4be682e5.js.map → constants-fac0ce8c.js.map} +1 -1
- package/dist/_chunks/{develop-a46fed01.mjs → develop-72394876.mjs} +2 -2
- package/dist/_chunks/{develop-a46fed01.mjs.map → develop-72394876.mjs.map} +1 -1
- package/dist/_chunks/{develop-4d25a6e0.js → develop-da585b1e.js} +2 -2
- package/dist/_chunks/{develop-4d25a6e0.js.map → develop-da585b1e.js.map} +1 -1
- package/dist/_chunks/{index-40d047a8.mjs → index-0dcabbdd.mjs} +3 -3
- package/dist/_chunks/{index-40d047a8.mjs.map → index-0dcabbdd.mjs.map} +1 -1
- package/dist/_chunks/{index-1ebd9d8c.mjs → index-1d2a74ca.mjs} +5 -5
- package/dist/_chunks/{index-1ebd9d8c.mjs.map → index-1d2a74ca.mjs.map} +1 -1
- package/dist/_chunks/{index-f5b276a8.mjs → index-1ddec644.mjs} +21 -21
- package/dist/_chunks/{index-f5b276a8.mjs.map → index-1ddec644.mjs.map} +1 -1
- package/dist/_chunks/{index-a9625818.mjs → index-1eef7482.mjs} +5 -5
- package/dist/_chunks/{index-a9625818.mjs.map → index-1eef7482.mjs.map} +1 -1
- package/dist/_chunks/{index-834fad5c.mjs → index-20454411.mjs} +5 -5
- package/dist/_chunks/{index-834fad5c.mjs.map → index-20454411.mjs.map} +1 -1
- package/dist/_chunks/{index-40495ca1.mjs → index-296f0769.mjs} +2 -2
- package/dist/_chunks/{index-40495ca1.mjs.map → index-296f0769.mjs.map} +1 -1
- package/dist/_chunks/{index-d2b3c398.mjs → index-34233ee7.mjs} +3 -3
- package/dist/_chunks/{index-d2b3c398.mjs.map → index-34233ee7.mjs.map} +1 -1
- package/dist/_chunks/{index-924a1288.js → index-42a0b19b.js} +3 -3
- package/dist/_chunks/{index-924a1288.js.map → index-42a0b19b.js.map} +1 -1
- package/dist/_chunks/{index-dc89c18c.mjs → index-49b7e6ff.mjs} +8 -4
- package/dist/_chunks/index-49b7e6ff.mjs.map +1 -0
- package/dist/_chunks/{index-bc709e72.js → index-4ac37d7c.js} +3 -3
- package/dist/_chunks/{index-bc709e72.js.map → index-4ac37d7c.js.map} +1 -1
- package/dist/_chunks/{index-0fbbca7a.js → index-4ff0e245.js} +3 -3
- package/dist/_chunks/{index-0fbbca7a.js.map → index-4ff0e245.js.map} +1 -1
- package/dist/_chunks/{index-cbf9952d.js → index-526ea946.js} +2 -2
- package/dist/_chunks/{index-cbf9952d.js.map → index-526ea946.js.map} +1 -1
- package/dist/_chunks/{index-1932eedf.mjs → index-55f565cf.mjs} +3 -3
- package/dist/_chunks/{index-1932eedf.mjs.map → index-55f565cf.mjs.map} +1 -1
- package/dist/_chunks/{index-e34335f1.js → index-56cc01e0.js} +3 -3
- package/dist/_chunks/{index-e34335f1.js.map → index-56cc01e0.js.map} +1 -1
- package/dist/_chunks/{index-51986071.mjs → index-5d044c87.mjs} +3 -3
- package/dist/_chunks/{index-51986071.mjs.map → index-5d044c87.mjs.map} +1 -1
- package/dist/_chunks/{index-3c693658.mjs → index-5d14fd43.mjs} +3 -3
- package/dist/_chunks/{index-3c693658.mjs.map → index-5d14fd43.mjs.map} +1 -1
- package/dist/_chunks/{index-f3e7f8cc.mjs → index-5e9a93b3.mjs} +4 -4
- package/dist/_chunks/{index-f3e7f8cc.mjs.map → index-5e9a93b3.mjs.map} +1 -1
- package/dist/_chunks/{index-46c3ee85.mjs → index-60941eee.mjs} +3 -3
- package/dist/_chunks/{index-46c3ee85.mjs.map → index-60941eee.mjs.map} +1 -1
- package/dist/_chunks/{index-9c26fffe.js → index-60e19de0.js} +4 -4
- package/dist/_chunks/{index-9c26fffe.js.map → index-60e19de0.js.map} +1 -1
- package/dist/_chunks/{index-003c2cab.mjs → index-6757c461.mjs} +5 -5
- package/dist/_chunks/{index-003c2cab.mjs.map → index-6757c461.mjs.map} +1 -1
- package/dist/_chunks/{index-b42866c5.mjs → index-69dbf2cf.mjs} +2 -2
- package/dist/_chunks/{index-b42866c5.mjs.map → index-69dbf2cf.mjs.map} +1 -1
- package/dist/_chunks/{index-035f8c59.js → index-71c88425.js} +3 -3
- package/dist/_chunks/{index-035f8c59.js.map → index-71c88425.js.map} +1 -1
- package/dist/_chunks/{index-f7cf652c.js → index-74601a9b.js} +4 -4
- package/dist/_chunks/{index-f7cf652c.js.map → index-74601a9b.js.map} +1 -1
- package/dist/_chunks/{index-cc38783c.mjs → index-7e31e982.mjs} +3 -3
- package/dist/_chunks/{index-cc38783c.mjs.map → index-7e31e982.mjs.map} +1 -1
- package/dist/_chunks/{index-787a0db6.js → index-8759f1d9.js} +5 -5
- package/dist/_chunks/{index-787a0db6.js.map → index-8759f1d9.js.map} +1 -1
- package/dist/_chunks/{index-f55a69e7.mjs → index-89a1d72c.mjs} +4 -4
- package/dist/_chunks/{index-f55a69e7.mjs.map → index-89a1d72c.mjs.map} +1 -1
- package/dist/_chunks/{index-0ed05075.js → index-8b79ee6c.js} +14 -8
- package/dist/_chunks/{index-0ed05075.js.map → index-8b79ee6c.js.map} +1 -1
- package/dist/_chunks/{index-154693de.mjs → index-8c5b4bda.mjs} +3 -3
- package/dist/_chunks/{index-154693de.mjs.map → index-8c5b4bda.mjs.map} +1 -1
- package/dist/_chunks/{index-7bfab5f5.js → index-912140fa.js} +4 -4
- package/dist/_chunks/{index-7bfab5f5.js.map → index-912140fa.js.map} +1 -1
- package/dist/_chunks/{index-eebad65d.js → index-947668f7.js} +3 -3
- package/dist/_chunks/{index-eebad65d.js.map → index-947668f7.js.map} +1 -1
- package/dist/_chunks/{index-8e034257.mjs → index-95d9bcb0.mjs} +3 -3
- package/dist/_chunks/{index-8e034257.mjs.map → index-95d9bcb0.mjs.map} +1 -1
- package/dist/_chunks/{index-56b499fb.mjs → index-98221317.mjs} +5 -5
- package/dist/_chunks/{index-56b499fb.mjs.map → index-98221317.mjs.map} +1 -1
- package/dist/_chunks/{index-6797e259.mjs → index-9881aa54.mjs} +3 -3
- package/dist/_chunks/{index-6797e259.mjs.map → index-9881aa54.mjs.map} +1 -1
- package/dist/_chunks/{index-9304d6de.js → index-9d98e8b2.js} +511 -475
- package/dist/_chunks/index-9d98e8b2.js.map +1 -0
- package/dist/_chunks/{index-97a59f73.js → index-9ebd4c75.js} +4 -4
- package/dist/_chunks/{index-97a59f73.js.map → index-9ebd4c75.js.map} +1 -1
- package/dist/_chunks/{index-b6ee936b.mjs → index-9f08bcc3.mjs} +14 -8
- package/dist/_chunks/{index-b6ee936b.mjs.map → index-9f08bcc3.mjs.map} +1 -1
- package/dist/_chunks/{index-eaff38ba.js → index-a1707d3b.js} +3 -3
- package/dist/_chunks/{index-eaff38ba.js.map → index-a1707d3b.js.map} +1 -1
- package/dist/_chunks/{index-039f8e26.mjs → index-a61e2ef0.mjs} +4 -4
- package/dist/_chunks/{index-039f8e26.mjs.map → index-a61e2ef0.mjs.map} +1 -1
- package/dist/_chunks/{index-b2d4d126.js → index-a8c829e4.js} +5 -5
- package/dist/_chunks/{index-b2d4d126.js.map → index-a8c829e4.js.map} +1 -1
- package/dist/_chunks/{index-72494b79.js → index-a9574ead.js} +3 -3
- package/dist/_chunks/{index-72494b79.js.map → index-a9574ead.js.map} +1 -1
- package/dist/_chunks/{index-9118a940.mjs → index-a98002b5.mjs} +4 -4
- package/dist/_chunks/{index-9118a940.mjs.map → index-a98002b5.mjs.map} +1 -1
- package/dist/_chunks/{index-d9882c45.mjs → index-ad85a00a.mjs} +4 -4
- package/dist/_chunks/{index-d9882c45.mjs.map → index-ad85a00a.mjs.map} +1 -1
- package/dist/_chunks/{index-bde05e9e.mjs → index-b6e7426d.mjs} +3 -3
- package/dist/_chunks/{index-bde05e9e.mjs.map → index-b6e7426d.mjs.map} +1 -1
- package/dist/_chunks/{index-46138ec7.mjs → index-bcafdc00.mjs} +4 -4
- package/dist/_chunks/{index-46138ec7.mjs.map → index-bcafdc00.mjs.map} +1 -1
- package/dist/_chunks/{index-a6f1ccf6.mjs → index-bd42fb77.mjs} +6 -6
- package/dist/_chunks/{index-a6f1ccf6.mjs.map → index-bd42fb77.mjs.map} +1 -1
- package/dist/_chunks/{index-bac648de.js → index-bdb23c76.js} +5 -5
- package/dist/_chunks/{index-bac648de.js.map → index-bdb23c76.js.map} +1 -1
- package/dist/_chunks/{index-81509193.mjs → index-c0f59e46.mjs} +513 -477
- package/dist/_chunks/index-c0f59e46.mjs.map +1 -0
- package/dist/_chunks/{index-557e0c47.js → index-c8be54b1.js} +2 -2
- package/dist/_chunks/{index-557e0c47.js.map → index-c8be54b1.js.map} +1 -1
- package/dist/_chunks/{index-345c0ae9.js → index-c8f0ea8f.js} +6 -6
- package/dist/_chunks/{index-345c0ae9.js.map → index-c8f0ea8f.js.map} +1 -1
- package/dist/_chunks/{index-f7dbd21b.js → index-caa6ed37.js} +2 -2
- package/dist/_chunks/{index-f7dbd21b.js.map → index-caa6ed37.js.map} +1 -1
- package/dist/_chunks/{index-25975989.js → index-ccae5f17.js} +4 -4
- package/dist/_chunks/{index-25975989.js.map → index-ccae5f17.js.map} +1 -1
- package/dist/_chunks/{index-d5f569ab.js → index-cf24d5a0.js} +5 -5
- package/dist/_chunks/{index-d5f569ab.js.map → index-cf24d5a0.js.map} +1 -1
- package/dist/_chunks/{index-6353193a.mjs → index-d8d56664.mjs} +5 -5
- package/dist/_chunks/{index-6353193a.mjs.map → index-d8d56664.mjs.map} +1 -1
- package/dist/_chunks/{index-69d47db4.js → index-da64448f.js} +3 -3
- package/dist/_chunks/{index-69d47db4.js.map → index-da64448f.js.map} +1 -1
- package/dist/_chunks/{index-be3e5f69.mjs → index-e04aafb3.mjs} +2 -2
- package/dist/_chunks/{index-be3e5f69.mjs.map → index-e04aafb3.mjs.map} +1 -1
- package/dist/_chunks/{index-9f30a92e.js → index-e76dc085.js} +4 -4
- package/dist/_chunks/{index-9f30a92e.js.map → index-e76dc085.js.map} +1 -1
- package/dist/_chunks/{index-bfb581a2.js → index-eab05381.js} +3 -3
- package/dist/_chunks/{index-bfb581a2.js.map → index-eab05381.js.map} +1 -1
- package/dist/_chunks/{index-2b22b1a0.js → index-eb720419.js} +5 -5
- package/dist/_chunks/{index-2b22b1a0.js.map → index-eb720419.js.map} +1 -1
- package/dist/_chunks/{index-4f557234.mjs → index-ebd0c6b2.mjs} +3 -3
- package/dist/_chunks/{index-4f557234.mjs.map → index-ebd0c6b2.mjs.map} +1 -1
- package/dist/_chunks/{index-e0e235a0.js → index-ef2c6efd.js} +3 -3
- package/dist/_chunks/{index-e0e235a0.js.map → index-ef2c6efd.js.map} +1 -1
- package/dist/_chunks/{index-1f4afa21.js → index-f09ec538.js} +3 -3
- package/dist/_chunks/{index-1f4afa21.js.map → index-f09ec538.js.map} +1 -1
- package/dist/_chunks/{index-9f2d5dc8.js → index-f5a00b06.js} +3 -3
- package/dist/_chunks/{index-9f2d5dc8.js.map → index-f5a00b06.js.map} +1 -1
- package/dist/_chunks/{index-5a5b0567.js → index-f762b27d.js} +21 -21
- package/dist/_chunks/{index-5a5b0567.js.map → index-f762b27d.js.map} +1 -1
- package/dist/_chunks/{index-f52ae628.mjs → index-faf78cfd.mjs} +3 -3
- package/dist/_chunks/{index-f52ae628.mjs.map → index-faf78cfd.mjs.map} +1 -1
- package/dist/_chunks/{index-0c9fceff.js → index-ff413b1a.js} +5 -5
- package/dist/_chunks/{index-0c9fceff.js.map → index-ff413b1a.js.map} +1 -1
- package/dist/_chunks/{index-1a74fa41.js → index-ffd2f664.js} +8 -4
- package/dist/_chunks/index-ffd2f664.js.map +1 -0
- package/dist/_chunks/{ru-d43423ea.mjs → ru-9aad40c5.mjs} +91 -42
- package/dist/_chunks/{ru-d43423ea.mjs.map → ru-9aad40c5.mjs.map} +1 -1
- package/dist/_chunks/{ru-07958f09.js → ru-c0293425.js} +91 -42
- package/dist/_chunks/{ru-07958f09.js.map → ru-c0293425.js.map} +1 -1
- package/dist/_chunks/{schema-a7f695ae.mjs → schema-da392e23.mjs} +2 -2
- package/dist/_chunks/{schema-a7f695ae.mjs.map → schema-da392e23.mjs.map} +1 -1
- package/dist/_chunks/{schema-15e33d1c.js → schema-e8bfd9c4.js} +2 -2
- package/dist/_chunks/{schema-15e33d1c.js.map → schema-e8bfd9c4.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-6b5dffaf.js → validateWorkflow-34ccfb57.js} +3 -3
- package/dist/_chunks/{validateWorkflow-6b5dffaf.js.map → validateWorkflow-34ccfb57.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-2f84e76e.mjs → validateWorkflow-67154f59.mjs} +3 -3
- package/dist/_chunks/{validateWorkflow-2f84e76e.mjs.map → validateWorkflow-67154f59.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksContent.d.ts +5 -0
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksEditor.d.ts +34 -0
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksInput.d.ts +18 -0
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksToolbar.d.ts +2 -0
- package/dist/admin/src/content-manager/components/BlocksInput/hooks/useBlocksStore.d.ts +32 -0
- package/dist/admin/src/content-manager/components/BlocksInput/hooks/useModifiersStore.d.ts +20 -0
- package/dist/admin/src/content-manager/components/BlocksInput/plugins/withLinks.d.ts +8 -0
- package/dist/admin/src/content-manager/components/BlocksInput/plugins/withStrapiSchema.d.ts +8 -0
- package/dist/admin/src/content-manager/components/BlocksInput/tests/mock-schema.d.ts +2 -0
- package/dist/admin/src/content-manager/components/BlocksInput/utils/links.d.ts +10 -0
- package/dist/admin/src/content-manager/components/BlocksInput/utils/types.d.ts +6 -0
- package/dist/admin/src/hooks/useAdminUsers.d.ts +3 -3
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/render.d.ts +3 -1
- package/dist/cli.js +1 -1
- package/dist/cli.mjs +1 -1
- package/package.json +14 -14
- package/server/services/__tests__/user.test.js +15 -0
- package/server/services/user.js +1 -4
- package/dist/_chunks/SalesPage-c5cbb366.js.map +0 -1
- package/dist/_chunks/index-1a74fa41.js.map +0 -1
- package/dist/_chunks/index-81509193.mjs.map +0 -1
- package/dist/_chunks/index-9304d6de.js.map +0 -1
- package/dist/_chunks/index-dc89c18c.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-3c693658.mjs","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/ListView/utils/tableHeaders.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedListView/index.js"],"sourcesContent":["const tableHeaders = [\n {\n name: 'name',\n key: 'name',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n },\n {\n name: 'description',\n key: 'description',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n },\n {\n name: 'createdAt',\n key: 'createdAt',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n },\n {\n name: 'lastUsedAt',\n key: 'lastUsedAt',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n },\n];\n\nexport default tableHeaders;\n","import React, { useEffect, useRef } from 'react';\n\nimport { ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LinkButton,\n NoContent,\n NoPermissions,\n SettingsPageTitle,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { TRANSFER_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport Table from '../../../components/Tokens/Table';\n\nimport tableHeaders from './utils/tableHeaders';\n\nconst TransferTokenListView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions.settings['transfer-tokens']);\n const { push } = useHistory();\n const { trackUsage } = useTracking();\n\n const { startSection } = useGuidedTour();\n const startSectionRef = useRef(startSection);\n const { get, del } = useFetchClient();\n\n useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('transferTokens');\n }\n }, []);\n\n useEffect(() => {\n push({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [push]);\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n const {\n data: transferTokens,\n status,\n isFetching,\n refetch,\n } = useQuery(\n ['transfer-tokens'],\n async () => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n const {\n data: { data },\n } = await get(`/admin/transfer/tokens`);\n\n trackUsage('didAccessTokenList', { number: data.length, tokenType: TRANSFER_TOKEN_TYPE });\n\n return data;\n },\n {\n enabled: canRead,\n onError(err) {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const isLoading =\n canRead &&\n ((status !== 'success' && status !== 'error') || (status === 'success' && isFetching));\n\n const deleteMutation = useMutation(\n async (id) => {\n await del(`/admin/transfer/tokens/${id}`);\n },\n {\n async onSuccess() {\n await refetch(['transfer-tokens']);\n },\n onError(err) {\n if (err?.response?.data?.data) {\n toggleNotification({ type: 'warning', message: err.response.data.data });\n } else if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const hasTransferTokens = transferTokens && transferTokens?.length > 0;\n const shouldDisplayDynamicTable = canRead && hasTransferTokens;\n const shouldDisplayNoContent = canRead && !hasTransferTokens && !canCreate;\n const shouldDisplayNoContentWithCreationButton = canRead && !hasTransferTokens && canCreate;\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n <ContentLayout>\n {!canRead && <NoPermissions />}\n {shouldDisplayDynamicTable && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n contentType=\"trasfer-tokens\"\n rows={transferTokens}\n isLoading={isLoading}\n onConfirmDelete={(id) => deleteMutation.mutateAsync(id)}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {shouldDisplayNoContentWithCreationButton && (\n <NoContent\n content={{\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n }}\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n />\n )}\n {shouldDisplayNoContent && (\n <NoContent\n content={{\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n }}\n />\n )}\n </ContentLayout>\n </Main>\n );\n};\n\nexport default TransferTokenListView;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListView from '../ListView';\n\nconst ProtectedTransferTokenListView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['transfer-tokens'].main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedTransferTokenListView;\n"],"names":["qs","ListView"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-5d14fd43.mjs","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/ListView/utils/tableHeaders.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedListView/index.js"],"sourcesContent":["const tableHeaders = [\n {\n name: 'name',\n key: 'name',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n },\n {\n name: 'description',\n key: 'description',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n },\n {\n name: 'createdAt',\n key: 'createdAt',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n },\n {\n name: 'lastUsedAt',\n key: 'lastUsedAt',\n metadatas: {\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n },\n];\n\nexport default tableHeaders;\n","import React, { useEffect, useRef } from 'react';\n\nimport { ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LinkButton,\n NoContent,\n NoPermissions,\n SettingsPageTitle,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { TRANSFER_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport Table from '../../../components/Tokens/Table';\n\nimport tableHeaders from './utils/tableHeaders';\n\nconst TransferTokenListView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions.settings['transfer-tokens']);\n const { push } = useHistory();\n const { trackUsage } = useTracking();\n\n const { startSection } = useGuidedTour();\n const startSectionRef = useRef(startSection);\n const { get, del } = useFetchClient();\n\n useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('transferTokens');\n }\n }, []);\n\n useEffect(() => {\n push({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [push]);\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n const {\n data: transferTokens,\n status,\n isFetching,\n refetch,\n } = useQuery(\n ['transfer-tokens'],\n async () => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n const {\n data: { data },\n } = await get(`/admin/transfer/tokens`);\n\n trackUsage('didAccessTokenList', { number: data.length, tokenType: TRANSFER_TOKEN_TYPE });\n\n return data;\n },\n {\n enabled: canRead,\n onError(err) {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const isLoading =\n canRead &&\n ((status !== 'success' && status !== 'error') || (status === 'success' && isFetching));\n\n const deleteMutation = useMutation(\n async (id) => {\n await del(`/admin/transfer/tokens/${id}`);\n },\n {\n async onSuccess() {\n await refetch(['transfer-tokens']);\n },\n onError(err) {\n if (err?.response?.data?.data) {\n toggleNotification({ type: 'warning', message: err.response.data.data });\n } else if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const hasTransferTokens = transferTokens && transferTokens?.length > 0;\n const shouldDisplayDynamicTable = canRead && hasTransferTokens;\n const shouldDisplayNoContent = canRead && !hasTransferTokens && !canCreate;\n const shouldDisplayNoContentWithCreationButton = canRead && !hasTransferTokens && canCreate;\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n <ContentLayout>\n {!canRead && <NoPermissions />}\n {shouldDisplayDynamicTable && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n contentType=\"trasfer-tokens\"\n rows={transferTokens}\n isLoading={isLoading}\n onConfirmDelete={(id) => deleteMutation.mutateAsync(id)}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {shouldDisplayNoContentWithCreationButton && (\n <NoContent\n content={{\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n }}\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n />\n )}\n {shouldDisplayNoContent && (\n <NoContent\n content={{\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n }}\n />\n )}\n </ContentLayout>\n </Main>\n );\n};\n\nexport default TransferTokenListView;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListView from '../ListView';\n\nconst ProtectedTransferTokenListView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['transfer-tokens'].main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedTransferTokenListView;\n"],"names":["qs","ListView"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { CheckPagePermissions } from "@strapi/helper-plugin";
|
|
3
3
|
import { useSelector } from "react-redux";
|
|
4
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
5
|
-
import { A as ApiTokenCreateView } from "./index-
|
|
4
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-2b5530b9.mjs";
|
|
5
|
+
import { A as ApiTokenCreateView } from "./index-69dbf2cf.mjs";
|
|
6
6
|
import "react";
|
|
7
7
|
import "react-query";
|
|
8
8
|
import "semver/functions/lt";
|
|
9
9
|
import "semver/functions/valid";
|
|
10
|
-
import "./index-
|
|
10
|
+
import "./index-9f08bcc3.mjs";
|
|
11
11
|
import "react-dom/client";
|
|
12
12
|
import "@strapi/design-system";
|
|
13
13
|
import "invariant";
|
|
@@ -52,4 +52,4 @@ const ProtectedApiTokenCreateView = () => {
|
|
|
52
52
|
export {
|
|
53
53
|
ProtectedApiTokenCreateView as default
|
|
54
54
|
};
|
|
55
|
-
//# sourceMappingURL=index-
|
|
55
|
+
//# sourceMappingURL=index-5e9a93b3.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-5e9a93b3.mjs","sources":["../../admin/src/pages/SettingsPage/pages/ApiTokens/ProtectedEditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedApiTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['api-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedApiTokenCreateView;\n"],"names":["EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,8BAA8B,MAAM;AAClC,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,sBAAqB,EAAA,aAAa,YAAY,SAAS,YAAY,EAAE,MACpE,UAAC,oBAAAA,oBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { onRowClick, pxToRem, stopPropagation, useFocusWhenNavigate, useQueryParams, useRBAC, LoadingIndicatorPage, SettingsPageTitle, SearchURLQuery, ConfirmDialog, useAPIErrorHandler, useNotification, getFetchClient, 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-2b5530b9.mjs";
|
|
5
5
|
import { useState, useReducer, useCallback } from "react";
|
|
6
6
|
import { Tr, Td, Typography, Flex, Box, IconButton, Main, HeaderLayout, Button, ActionLayout, ContentLayout, Table, TFooter, Thead, Th, VisuallyHidden, Tbody } from "@strapi/design-system";
|
|
7
7
|
import { Plus, Duplicate, Pencil, Trash } from "@strapi/icons";
|
|
@@ -13,7 +13,7 @@ import produce from "immer";
|
|
|
13
13
|
import "react-query";
|
|
14
14
|
import "semver/functions/lt";
|
|
15
15
|
import "semver/functions/valid";
|
|
16
|
-
import "./index-
|
|
16
|
+
import "./index-9f08bcc3.mjs";
|
|
17
17
|
import "react-dom/client";
|
|
18
18
|
import "invariant";
|
|
19
19
|
import "lodash/isFunction";
|
|
@@ -359,4 +359,4 @@ const ProtectedListPage = () => {
|
|
|
359
359
|
export {
|
|
360
360
|
ProtectedListPage as default
|
|
361
361
|
};
|
|
362
|
-
//# sourceMappingURL=index-
|
|
362
|
+
//# sourceMappingURL=index-60941eee.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-46c3ee85.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/EmptyRole/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/RoleRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/reducer.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js"],"sourcesContent":["export default () => 'todo empty role';\n","import React from 'react';\n\nimport { Box, Flex, IconButton, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleRow = ({ id, name, description, usersCount, icons, rowIndex, canUpdate }) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton onClick={icon.onClick} label={icon.label} noBorder icon={icon.icon} />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nRoleRow.propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n usersCount: PropTypes.number.isRequired,\n icons: PropTypes.array.isRequired,\n rowIndex: PropTypes.number.isRequired,\n canUpdate: PropTypes.bool,\n};\n\nRoleRow.defaultProps = {\n canUpdate: false,\n};\n\nexport default RoleRow;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nexport const initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useCallback, useReducer, useState } from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nimport EmptyRole from './components/EmptyRole';\nimport BaseRoleRow from './components/RoleRow';\nimport reducer, { initialState } from './reducer';\n\nconst useRoleActions = ({ canCreate, canDelete, canUpdate, refetchRoles }) => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = useState(false);\n const { push } = useHistory();\n const [{ selectedRoles, showModalConfirmButtonLoading, roleToDelete }, dispatch] = useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n handleToggleModal();\n };\n\n const onRoleDuplicate = useCallback(\n (id) => {\n push(`/settings/roles/duplicate/${id}`);\n },\n [push]\n );\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const onRoleRemove = useCallback((roleId) => {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: roleId,\n });\n\n handleToggleModal();\n }, []);\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleGoTo = useCallback(\n (id) => {\n push(`/settings/roles/${id}`);\n },\n [push]\n );\n\n const handleClickDelete = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n onRoleRemove(role.id);\n }\n },\n [toggleNotification, onRoleRemove]\n );\n\n const handleClickDuplicate = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n onRoleDuplicate(role.id);\n },\n [onRoleDuplicate]\n );\n\n const getIcons = useCallback(\n (role) => [\n ...(canCreate\n ? [\n {\n onClick: (e) => handleClickDuplicate(e, role),\n label: formatMessage({ id: 'app.utils.duplicate', defaultMessage: 'Duplicate' }),\n icon: <Duplicate />,\n },\n ]\n : []),\n ...(canUpdate\n ? [\n {\n onClick: () => handleGoTo(role.id),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n },\n ]\n : []),\n ...(canDelete\n ? [\n {\n onClick: (e) => handleClickDelete(e, role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n },\n ]\n : []),\n ],\n [\n formatMessage,\n handleClickDelete,\n handleClickDuplicate,\n handleGoTo,\n canCreate,\n canUpdate,\n canDelete,\n ]\n );\n\n return {\n handleNewRoleClick,\n getIcons,\n selectedRoles,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n };\n};\n\nconst RoleListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useSelector(selectAdminPermissions);\n const [{ query }] = useQueryParams();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings.roles);\n\n const {\n roles,\n isLoading,\n refetch: refetchRoles,\n } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n cacheTime: 0,\n enabled: !isLoadingForPermissions && canRead,\n }\n );\n\n const {\n handleNewRoleClick,\n getIcons,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n } = useRoleActions({ refetchRoles, canCreate, canDelete, canUpdate });\n\n // ! TODO - Show the search bar only if the user is allowed to read - add the search input\n // canRead\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n const title = formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n });\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={title}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <BaseRoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={getIcons(role)}\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n {!rowCount && !isLoading && <EmptyRole />}\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\nexport default RoleListPage;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListPage from '../ListPage';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["BaseRoleRow","ListPage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-60941eee.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/EmptyRole/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/RoleRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/reducer.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js"],"sourcesContent":["export default () => 'todo empty role';\n","import React from 'react';\n\nimport { Box, Flex, IconButton, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleRow = ({ id, name, description, usersCount, icons, rowIndex, canUpdate }) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton onClick={icon.onClick} label={icon.label} noBorder icon={icon.icon} />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nRoleRow.propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n usersCount: PropTypes.number.isRequired,\n icons: PropTypes.array.isRequired,\n rowIndex: PropTypes.number.isRequired,\n canUpdate: PropTypes.bool,\n};\n\nRoleRow.defaultProps = {\n canUpdate: false,\n};\n\nexport default RoleRow;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nexport const initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useCallback, useReducer, useState } from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nimport EmptyRole from './components/EmptyRole';\nimport BaseRoleRow from './components/RoleRow';\nimport reducer, { initialState } from './reducer';\n\nconst useRoleActions = ({ canCreate, canDelete, canUpdate, refetchRoles }) => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = useState(false);\n const { push } = useHistory();\n const [{ selectedRoles, showModalConfirmButtonLoading, roleToDelete }, dispatch] = useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n handleToggleModal();\n };\n\n const onRoleDuplicate = useCallback(\n (id) => {\n push(`/settings/roles/duplicate/${id}`);\n },\n [push]\n );\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const onRoleRemove = useCallback((roleId) => {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: roleId,\n });\n\n handleToggleModal();\n }, []);\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleGoTo = useCallback(\n (id) => {\n push(`/settings/roles/${id}`);\n },\n [push]\n );\n\n const handleClickDelete = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n onRoleRemove(role.id);\n }\n },\n [toggleNotification, onRoleRemove]\n );\n\n const handleClickDuplicate = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n onRoleDuplicate(role.id);\n },\n [onRoleDuplicate]\n );\n\n const getIcons = useCallback(\n (role) => [\n ...(canCreate\n ? [\n {\n onClick: (e) => handleClickDuplicate(e, role),\n label: formatMessage({ id: 'app.utils.duplicate', defaultMessage: 'Duplicate' }),\n icon: <Duplicate />,\n },\n ]\n : []),\n ...(canUpdate\n ? [\n {\n onClick: () => handleGoTo(role.id),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n },\n ]\n : []),\n ...(canDelete\n ? [\n {\n onClick: (e) => handleClickDelete(e, role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n },\n ]\n : []),\n ],\n [\n formatMessage,\n handleClickDelete,\n handleClickDuplicate,\n handleGoTo,\n canCreate,\n canUpdate,\n canDelete,\n ]\n );\n\n return {\n handleNewRoleClick,\n getIcons,\n selectedRoles,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n };\n};\n\nconst RoleListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useSelector(selectAdminPermissions);\n const [{ query }] = useQueryParams();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings.roles);\n\n const {\n roles,\n isLoading,\n refetch: refetchRoles,\n } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n cacheTime: 0,\n enabled: !isLoadingForPermissions && canRead,\n }\n );\n\n const {\n handleNewRoleClick,\n getIcons,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n } = useRoleActions({ refetchRoles, canCreate, canDelete, canUpdate });\n\n // ! TODO - Show the search bar only if the user is allowed to read - add the search input\n // canRead\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n const title = formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n });\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={title}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <BaseRoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={getIcons(role)}\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n {!rowCount && !isLoading && <EmptyRole />}\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\nexport default RoleListPage;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListPage from '../ListPage';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["BaseRoleRow","ListPage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAA,YAAe,MAAM;ACOrB,MAAM,UAAU,CAAC,EAAE,IAAI,MAAM,aAAa,YAAY,OAAO,UAAU,gBAAgB;AAC/E,QAAA,EAAE,kBAAkB;AACpB,QAAA,CAAG,EAAA,UAAU,IAAI;AAEvB,QAAM,iBAAiB;AAAA,IACrB;AAAA,MACE,IAAI;AAAA,MACJ,gBAAgB;AAAA,IAClB;AAAA,IACA,EAAE,QAAQ,WAAW;AAAA,EAAA;AAIrB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,iBAAe;AAAA,MAEd,GAAI,YACD,WAAW;AAAA,QACT,IAAI,WAAW;AAAA,MAChB,CAAA,IACD,CAAC;AAAA,MAEL,UAAA;AAAA,QAAA,oBAAC,IAAG,EAAA,UAAU,QAAQ,GAAG,GACvB,UAAA,oBAAC,YAAW,EAAA,UAAQ,MAAC,WAAU,cAC5B,UAAA,KACH,CAAA,GACF;AAAA,QACC,oBAAA,IAAA,EAAG,UAAU,QAAQ,GAAG,GACvB,UAAC,oBAAA,YAAA,EAAW,UAAQ,MAAC,WAAU,cAC5B,sBACH,CAAA,GACF;AAAA,4BACC,IACC,EAAA,UAAA,oBAAC,cAAW,WAAU,cAAc,0BAAe,EACrD,CAAA;AAAA,QACA,oBAAC,MACC,UAAC,oBAAA,MAAA,EAAK,gBAAe,YAAY,GAAG,iBACjC,UAAM,MAAA;AAAA,UAAI,CAAC,MAAM,MAChB,OACE,oBAAC,KAAqB,EAAA,aAAa,MAAM,IAAI,IAAI,GAC/C,UAAC,oBAAA,YAAA,EAAW,SAAS,KAAK,SAAS,OAAO,KAAK,OAAO,UAAQ,MAAC,MAAM,KAAK,KAAM,CAAA,EAAA,GADxE,KAAK,KAEf,IACE;AAAA,WAER,EACF,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IA9BK;AAAA,EAAA;AAiCX;AAEA,QAAQ,YAAY;AAAA,EAClB,IAAI,UAAU,OAAO;AAAA,EACrB,MAAM,UAAU,OAAO;AAAA,EACvB,aAAa,UAAU,OAAO;AAAA,EAC9B,YAAY,UAAU,OAAO;AAAA,EAC7B,OAAO,UAAU,MAAM;AAAA,EACvB,UAAU,UAAU,OAAO;AAAA,EAC3B,WAAW,UAAU;AACvB;AAEA,QAAQ,eAAe;AAAA,EACrB,WAAW;AACb;AClEO,MAAM,eAAe;AAAA,EAC1B,cAAc;AAAA,EACd,+BAA+B;AAAA,EAC/B,mBAAmB;AACrB;AAEA,MAAM,UAAU,CAAC,OAAO,WACtB,QAAQ,OAAO,CAAC,eAAe;AAC7B,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,mBAAmB;AACtB,iBAAW,gCAAgC;AAC3C;AAAA,IACF;AAAA,IACA,KAAK,6BAA6B;AAChC,iBAAW,oBAAoB;AAC/B,iBAAW,eAAe;AAC1B;AAAA,IACF;AAAA,IACA,KAAK,wBAAwB;AAC3B,iBAAW,oBAAoB;AAC/B,iBAAW,eAAe;AAC1B,iBAAW,gCAAgC;AAC3C;AAAA,IACF;AAAA,IACA,KAAK,sBAAsB;AACzB,iBAAW,eAAe,OAAO;AAEjC;AAAA,IACF;AAAA,IACA;AACS,aAAA;AAAA,EACX;AACF,CAAC;ACMH,MAAM,iBAAiB,CAAC,EAAE,WAAW,WAAW,WAAW,mBAAmB;AACtE,QAAA,EAAE,kBAAkB;AACpB,QAAA,EAAE,mBAAmB;AAC3B,QAAM,qBAAqB;AAC3B,QAAM,CAAC,0BAA0B,4BAA4B,IAAI,SAAS,KAAK;AACzE,QAAA,EAAE,SAAS;AACjB,QAAM,CAAC,EAAE,eAAe,+BAA+B,aAAa,GAAG,QAAQ,IAAI;AAAA,IACjF;AAAA,IACA;AAAA,EAAA;AAGI,QAAA,EAAE,SAAS;AAEjB,QAAM,mBAAmB,YAAY;AAC/B,QAAA;AACO,eAAA;AAAA,QACP,MAAM;AAAA,MAAA,CACP;AAED,YAAM,KAAK,6BAA6B;AAAA,QACtC,KAAK,CAAC,YAAY;AAAA,MAAA,CACnB;AAED,YAAM,aAAa;AAEV,eAAA;AAAA,QACP,MAAM;AAAA,MAAA,CACP;AAAA,aACM,OAAO;AACK,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,eAAe,KAAK;AAAA,MAAA,CAC9B;AAAA,IACH;AACkB;EAAA;AAGpB,QAAM,kBAAkB;AAAA,IACtB,CAAC,OAAO;AACD,WAAA,6BAA6B,EAAE,EAAE;AAAA,IACxC;AAAA,IACA,CAAC,IAAI;AAAA,EAAA;AAGD,QAAA,qBAAqB,MAAM,KAAK,qBAAqB;AAErD,QAAA,eAAe,YAAY,CAAC,WAAW;AAClC,aAAA;AAAA,MACP,MAAM;AAAA,MACN,IAAI;AAAA,IAAA,CACL;AAEiB;EACpB,GAAG,CAAE,CAAA;AAEL,QAAM,oBAAoB,MAAM,6BAA6B,CAAC,SAAS,CAAC,IAAI;AAE5E,QAAM,aAAa;AAAA,IACjB,CAAC,OAAO;AACD,WAAA,mBAAmB,EAAE,EAAE;AAAA,IAC9B;AAAA,IACA,CAAC,IAAI;AAAA,EAAA;AAGP,QAAM,oBAAoB;AAAA,IACxB,CAAC,GAAG,SAAS;AACX,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAElB,UAAI,KAAK,YAAY;AACA,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,EAAE,IAAI,iDAAiD;AAAA,QAAA,CACjE;AAAA,MAAA,OACI;AACL,qBAAa,KAAK,EAAE;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,YAAY;AAAA,EAAA;AAGnC,QAAM,uBAAuB;AAAA,IAC3B,CAAC,GAAG,SAAS;AACX,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAClB,sBAAgB,KAAK,EAAE;AAAA,IACzB;AAAA,IACA,CAAC,eAAe;AAAA,EAAA;AAGlB,QAAM,WAAW;AAAA,IACf,CAAC,SAAS;AAAA,MACR,GAAI,YACA;AAAA,QACE;AAAA,UACE,SAAS,CAAC,MAAM,qBAAqB,GAAG,IAAI;AAAA,UAC5C,OAAO,cAAc,EAAE,IAAI,uBAAuB,gBAAgB,aAAa;AAAA,UAC/E,0BAAO,WAAU,EAAA;AAAA,QACnB;AAAA,MAAA,IAEF,CAAC;AAAA,MACL,GAAI,YACA;AAAA,QACE;AAAA,UACE,SAAS,MAAM,WAAW,KAAK,EAAE;AAAA,UACjC,OAAO,cAAc,EAAE,IAAI,kBAAkB,gBAAgB,QAAQ;AAAA,UACrE,0BAAO,QAAO,EAAA;AAAA,QAChB;AAAA,MAAA,IAEF,CAAC;AAAA,MACL,GAAI,YACA;AAAA,QACE;AAAA,UACE,SAAS,CAAC,MAAM,kBAAkB,GAAG,IAAI;AAAA,UACzC,OAAO,cAAc,EAAE,IAAI,iBAAiB,gBAAgB,UAAU;AAAA,UACtE,0BAAO,OAAM,EAAA;AAAA,QACf;AAAA,MAAA,IAEF,CAAC;AAAA,IACP;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EAAA;AAGK,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,MAAM,eAAe,MAAM;AACnB,QAAA,EAAE,kBAAkB;AACL;AACf,QAAA,cAAc,YAAY,sBAAsB;AACtD,QAAM,CAAC,EAAE,OAAO,IAAI,eAAe;AAC7B,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,WAAW,WAAW,SAAS,UAAU;AAAA,EACzD,IAAA,QAAQ,YAAY,SAAS,KAAK;AAEhC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EAAA,IACP;AAAA,IACF,EAAE,SAAS,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,MAAM,KAAK,IAAI,OAAU;AAAA,IACtE;AAAA,MACE,WAAW;AAAA,MACX,SAAS,CAAC,2BAA2B;AAAA,IACvC;AAAA,EAAA;AAGI,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,eAAe,EAAE,cAAc,WAAW,WAAW,WAAW;AAK9D,QAAA,WAAW,MAAM,SAAS;AAChC,QAAM,WAAW;AAEjB,MAAI,yBAAyB;AAC3B,WACG,oBAAA,MAAA,EACC,UAAC,oBAAA,sBAAA,CAAA,CAAqB,EACxB,CAAA;AAAA,EAEJ;AAEA,QAAM,QAAQ,cAAc;AAAA,IAC1B,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AAED,8BACG,MACC,EAAA,UAAA;AAAA,IAAC,oBAAA,mBAAA,EAAkB,MAAK,QAAQ,CAAA;AAAA,IAChC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eACE,YACG,oBAAA,QAAA,EAAO,SAAS,oBAAoB,WAAW,oBAAC,MAAK,CAAA,CAAA,GAAI,MAAK,KAC5D,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,GACH,IACE;AAAA,QAEN;AAAA,QACA,UAAU,cAAc;AAAA,UACtB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD,IAAG;AAAA,MAAA;AAAA,IACL;AAAA,IACC,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,EAAE,IAAI,8BAA8B,gBAAgB,sBAAsB;AAAA,cAC1E,EAAE,QAAQ,MAAM;AAAA,YAClB;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ;AAAA,IAED,gCACE,eACC,EAAA,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,QACE,YACE,oBAAC,SAAQ,EAAA,SAAS,oBAAoB,MAAM,oBAAC,MAAK,CAAA,CAAA,GAC/C,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB,GACH,IACE;AAAA,UAGN,UAAA;AAAA,YAAA,oBAAC,OACC,EAAA,UAAA,qBAAC,IAAG,EAAA,iBAAe,GACjB,UAAA;AAAA,cAAA,oBAAC,MACC,UAAC,oBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,gBACb,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB,GACH,EACF,CAAA;AAAA,cACA,oBAAC,MACC,UAAC,oBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,gBACb,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB,GACH,EACF,CAAA;AAAA,cACA,oBAAC,MACC,UAAC,oBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,gBACb,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB,GACH,EACF,CAAA;AAAA,cACC,oBAAA,IAAA,EACC,UAAC,oBAAA,gBAAA,EACE,UAAc,cAAA;AAAA,gBACb,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB,GACH,EACF,CAAA;AAAA,YAAA,EAAA,CACF,EACF,CAAA;AAAA,gCACC,OACE,EAAA,UAAA,OAAO,IAAI,CAAC,MAAM,UACjB;AAAA,cAACA;AAAAA,cAAA;AAAA,gBAEC,IAAI,KAAK;AAAA,gBACT,MAAM,KAAK;AAAA,gBACX,aAAa,KAAK;AAAA,gBAClB,YAAY,KAAK;AAAA,gBACjB,OAAO,SAAS,IAAI;AAAA,gBACpB,UAAU,QAAQ;AAAA,gBAClB;AAAA,cAAA;AAAA,cAPK,KAAK;AAAA,YASb,CAAA,GACH;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,MACC,CAAC,YAAY,CAAC,iCAAc,WAAU,CAAA,CAAA;AAAA,IAAA,GACzC;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,wBAAwB;AAAA,QACxB,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,EACF,EAAA,CAAA;AAEJ;AChVA,MAAM,oBAAoB,MAAM;AACxB,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,wBAAqB,aAAa,YAAY,SAAS,MAAM,MAC5D,UAAC,oBAAAC,cAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
|
|
@@ -3,13 +3,13 @@ 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-
|
|
7
|
-
const index = require("./index-
|
|
6
|
+
const AuthenticatedApp = require("./AuthenticatedApp-12b0b80d.js");
|
|
7
|
+
const index = require("./index-42a0b19b.js");
|
|
8
8
|
require("react");
|
|
9
9
|
require("react-query");
|
|
10
10
|
require("semver/functions/lt");
|
|
11
11
|
require("semver/functions/valid");
|
|
12
|
-
require("./index-
|
|
12
|
+
require("./index-8b79ee6c.js");
|
|
13
13
|
require("react-dom/client");
|
|
14
14
|
require("@strapi/design-system");
|
|
15
15
|
require("invariant");
|
|
@@ -44,4 +44,4 @@ const ProtectedCreateView = () => {
|
|
|
44
44
|
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings.webhooks.create, children: /* @__PURE__ */ jsxRuntime.jsx(index.EditView, {}) });
|
|
45
45
|
};
|
|
46
46
|
exports.default = ProtectedCreateView;
|
|
47
|
-
//# sourceMappingURL=index-
|
|
47
|
+
//# sourceMappingURL=index-60e19de0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-60e19de0.js","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/ProtectedCreateView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.webhooks.create}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedCreateView;\n"],"names":["useSelector","selectAdminPermissions","jsx","CheckPagePermissions","EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,sBAAsB,MAAM;AAC1B,QAAA,cAAcA,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAC,2BAAA,IAACC,qCAAqB,aAAa,YAAY,SAAS,SAAS,QAC/D,UAACD,2BAAA,IAAAE,MAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useFetchClient, useAPIErrorHandler, useNotification, useRBAC, ConfirmDialog, CheckPagePermissions } from "@strapi/helper-plugin";
|
|
3
3
|
import { useSelector, useDispatch } from "react-redux";
|
|
4
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
4
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-2b5530b9.mjs";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { Button, Flex, Loader, Typography } from "@strapi/design-system";
|
|
7
7
|
import { Check } from "@strapi/icons";
|
|
@@ -12,7 +12,7 @@ import { useMutation } from "react-query";
|
|
|
12
12
|
import { useParams } from "react-router-dom";
|
|
13
13
|
import { u as useAdminRoles } from "./useAdminRoles-7ab5d521.mjs";
|
|
14
14
|
import { u as useContentTypes } from "./useContentTypes-53b449bb.mjs";
|
|
15
|
-
import { j as selectServerState, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, k as selectHasDeletedServerStages, c as selectRoles, s as selectIsLoading, v as validateWorkflow, u as useInjectReducer, l as setWorkflow, d as setWorkflows, e as setContentTypes, f as setRoles, g as setIsLoading, r as resetWorkflow, W as WorkflowAttributes, S as Stages, i as reducer } from "./validateWorkflow-
|
|
15
|
+
import { j as selectServerState, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, k as selectHasDeletedServerStages, c as selectRoles, s as selectIsLoading, v as validateWorkflow, u as useInjectReducer, l as setWorkflow, d as setWorkflows, e as setContentTypes, f as setRoles, g as setIsLoading, r as resetWorkflow, W as WorkflowAttributes, S as Stages, i as reducer } from "./validateWorkflow-67154f59.mjs";
|
|
16
16
|
import { u as useLicenseLimits } from "./useLicenseLimits-13a102d3.mjs";
|
|
17
17
|
import { D as DragLayerRendered, H as Header, B as Back, R as Root } from "./Layout-72fa2ace.mjs";
|
|
18
18
|
import { L as LimitsModal, T as Title, B as Body } from "./LimitsModal-da04700e.mjs";
|
|
@@ -20,7 +20,7 @@ import { C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, a as CHARGEBEE_STAGES_PER_WOR
|
|
|
20
20
|
import { u as useReviewWorkflows } from "./useReviewWorkflows-9e6b8986.mjs";
|
|
21
21
|
import "semver/functions/lt";
|
|
22
22
|
import "semver/functions/valid";
|
|
23
|
-
import "./index-
|
|
23
|
+
import "./index-9f08bcc3.mjs";
|
|
24
24
|
import "react-dom/client";
|
|
25
25
|
import "invariant";
|
|
26
26
|
import "lodash/isFunction";
|
|
@@ -43,7 +43,7 @@ import "react-dnd-html5-backend";
|
|
|
43
43
|
import "lodash/cloneDeep";
|
|
44
44
|
import "axios";
|
|
45
45
|
import "prop-types";
|
|
46
|
-
import "./schema-
|
|
46
|
+
import "./schema-da392e23.mjs";
|
|
47
47
|
import "lodash/isBoolean";
|
|
48
48
|
import "lodash/isEmpty";
|
|
49
49
|
import "lodash/isNaN";
|
|
@@ -356,4 +356,4 @@ function index() {
|
|
|
356
356
|
export {
|
|
357
357
|
index as default
|
|
358
358
|
};
|
|
359
|
-
//# sourceMappingURL=index-
|
|
359
|
+
//# sourceMappingURL=index-6757c461.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-003c2cab.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/EditView.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport {\n ConfirmDialog,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider } from 'formik';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useParams } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../../../admin/src/hooks/useInjectReducer';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport {\n resetWorkflow,\n setIsLoading,\n setWorkflow,\n setContentTypes,\n setRoles,\n setWorkflows,\n} from '../../actions';\nimport * as Layout from '../../components/Layout';\nimport * as LimitsModal from '../../components/LimitsModal';\nimport { Stages } from '../../components/Stages';\nimport { WorkflowAttributes } from '../../components/WorkflowAttributes';\nimport {\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from '../../constants';\nimport { useReviewWorkflows } from '../../hooks/useReviewWorkflows';\nimport { reducer } from '../../reducer';\nimport {\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectHasDeletedServerStages,\n selectIsLoading,\n selectRoles,\n selectServerState,\n} from '../../selectors';\nimport { validateWorkflow } from '../../utils/validateWorkflow';\n\nexport function ReviewWorkflowsEditView() {\n const { workflowId } = useParams();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { isLoading: isLoadingWorkflow, meta, workflows, refetch } = useReviewWorkflows();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const serverState = useSelector(selectServerState);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const hasDeletedServerStages = useSelector(selectHasDeletedServerStages);\n const roles = useSelector(selectRoles);\n const isLoading = useSelector(selectIsLoading);\n const {\n allowedActions: { canDelete, canUpdate },\n } = useRBAC(permissions.settings['review-workflows']);\n const [savePrompts, setSavePrompts] = React.useState({});\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles(undefined, {\n retry: false,\n });\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n const [initialErrors, setInitialErrors] = React.useState(null);\n\n const workflow = workflows.find((workflow) => workflow.id === parseInt(workflowId, 10));\n const contentTypesFromOtherWorkflows = workflows\n .filter((workflow) => workflow.id !== parseInt(workflowId, 10))\n .flatMap((workflow) => workflow.contentTypes);\n\n const { mutateAsync, isLoading: isLoadingMutation } = useMutation(\n async ({ workflow }) => {\n const {\n data: { data },\n } = await put(`/admin/review-workflows/workflows/${workflow.id}`, {\n data: workflow,\n });\n\n return data;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved', defaultMessage: 'Saved' },\n });\n },\n }\n );\n\n const updateWorkflow = async (workflow) => {\n // reset the error messages\n setInitialErrors(null);\n\n try {\n const res = await mutateAsync({\n workflow: {\n ...workflow,\n\n // compare permissions of stages and only submit them if at least one has\n // changed; this enables partial updates e.g. for users who don't have\n // permissions to see roles\n stages: workflow.stages.map((stage) => {\n let hasUpdatedPermissions = true;\n const serverStage = serverState.workflow.stages.find(\n (serverStage) => serverStage.id === stage?.id\n );\n\n if (serverStage) {\n hasUpdatedPermissions =\n serverStage.permissions?.length !== stage.permission?.length ||\n !serverStage.permissions.every(\n (serverPermission) =>\n !!stage.permissions.find(\n (permission) => permission.role === serverPermission.role\n )\n );\n }\n\n return {\n ...stage,\n permissions: hasUpdatedPermissions ? stage.permissions : undefined,\n };\n }),\n },\n });\n\n return res;\n } catch (error) {\n // TODO: this would benefit from a utility to get a formik error\n // representation from an API error\n if (\n error.response.data?.error?.name === 'ValidationError' &&\n error.response.data?.error?.details?.errors?.length > 0\n ) {\n setInitialErrors(\n error.response.data?.error?.details?.errors.reduce((acc, error) => {\n set(acc, error.path, error.message);\n\n return acc;\n }, {})\n );\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n return null;\n }\n };\n\n const submitForm = async () => {\n await updateWorkflow(currentWorkflow);\n await refetch();\n\n setSavePrompts({});\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes.some((contentType) =>\n contentTypesFromOtherWorkflows.includes(contentType)\n );\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount > parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n currentWorkflow.stages.length >\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal('stage');\n } else if (hasDeletedServerStages || isContentTypeReassignment) {\n if (hasDeletedServerStages) {\n setSavePrompts((prev) => ({ ...prev, hasDeletedServerStages: true }));\n }\n\n if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n }\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n const limits = getFeature('review-workflows');\n\n React.useEffect(() => {\n if (!isLoadingWorkflow) {\n dispatch(setWorkflow({ workflow }));\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingWorkflow || isLoadingContentTypes || isLoadingRoles));\n\n // reset the state to the initial state to avoid flashes if a user\n // navigates from an edit-view to a create-view\n return () => {\n dispatch(resetWorkflow());\n };\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingWorkflow,\n isLoadingRoles,\n serverRoles,\n singleTypes,\n workflow,\n workflows,\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 (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount > parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal('workflow');\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n currentWorkflow.stages.length >\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [\n currentWorkflow.stages.length,\n isLicenseLoading,\n isLoadingWorkflow,\n limits,\n meta?.workflowCount,\n meta.workflowsTotal,\n ]);\n\n React.useEffect(() => {\n if (!isLoading && roles.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n // TODO: redirect back to list-view if workflow is not found?\n\n return (\n <>\n <Layout.DragLayerRendered />\n\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n canUpdate && (\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n // if the confirm dialog is open the loading state is on\n // the confirm button already\n loading={!Object.keys(savePrompts).length > 0 && isLoadingMutation}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n subtitle={\n !isLoading &&\n formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow.stages.length }\n )\n }\n title={currentWorkflow.name}\n />\n\n <Layout.Root>\n {isLoading ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes canUpdate={canUpdate} />\n <Stages\n canDelete={canDelete}\n canUpdate={canUpdate}\n stages={formik.values?.stages}\n />\n </Flex>\n )}\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasDeletedServerStages && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.stages.body',\n defaultMessage:\n 'All entries assigned to deleted stages will be moved to the previous stage.',\n })}\n </Typography>\n )}\n\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows.filter((contentType) =>\n currentWorkflow.contentTypes.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.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.edit.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'stage'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.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 { ReviewWorkflowsEditView } from './EditView';\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['review-workflows'].main}>\n <ReviewWorkflowsEditView />\n </CheckPagePermissions>\n );\n}\n"],"names":["workflow","serverStage","error","Layout.DragLayerRendered","Layout.Header","Layout.Back","Layout.Root","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-6757c461.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/EditView.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport {\n ConfirmDialog,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider } from 'formik';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useParams } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../../../admin/src/hooks/useInjectReducer';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport {\n resetWorkflow,\n setIsLoading,\n setWorkflow,\n setContentTypes,\n setRoles,\n setWorkflows,\n} from '../../actions';\nimport * as Layout from '../../components/Layout';\nimport * as LimitsModal from '../../components/LimitsModal';\nimport { Stages } from '../../components/Stages';\nimport { WorkflowAttributes } from '../../components/WorkflowAttributes';\nimport {\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from '../../constants';\nimport { useReviewWorkflows } from '../../hooks/useReviewWorkflows';\nimport { reducer } from '../../reducer';\nimport {\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectHasDeletedServerStages,\n selectIsLoading,\n selectRoles,\n selectServerState,\n} from '../../selectors';\nimport { validateWorkflow } from '../../utils/validateWorkflow';\n\nexport function ReviewWorkflowsEditView() {\n const { workflowId } = useParams();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { isLoading: isLoadingWorkflow, meta, workflows, refetch } = useReviewWorkflows();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const serverState = useSelector(selectServerState);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const hasDeletedServerStages = useSelector(selectHasDeletedServerStages);\n const roles = useSelector(selectRoles);\n const isLoading = useSelector(selectIsLoading);\n const {\n allowedActions: { canDelete, canUpdate },\n } = useRBAC(permissions.settings['review-workflows']);\n const [savePrompts, setSavePrompts] = React.useState({});\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles(undefined, {\n retry: false,\n });\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n const [initialErrors, setInitialErrors] = React.useState(null);\n\n const workflow = workflows.find((workflow) => workflow.id === parseInt(workflowId, 10));\n const contentTypesFromOtherWorkflows = workflows\n .filter((workflow) => workflow.id !== parseInt(workflowId, 10))\n .flatMap((workflow) => workflow.contentTypes);\n\n const { mutateAsync, isLoading: isLoadingMutation } = useMutation(\n async ({ workflow }) => {\n const {\n data: { data },\n } = await put(`/admin/review-workflows/workflows/${workflow.id}`, {\n data: workflow,\n });\n\n return data;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved', defaultMessage: 'Saved' },\n });\n },\n }\n );\n\n const updateWorkflow = async (workflow) => {\n // reset the error messages\n setInitialErrors(null);\n\n try {\n const res = await mutateAsync({\n workflow: {\n ...workflow,\n\n // compare permissions of stages and only submit them if at least one has\n // changed; this enables partial updates e.g. for users who don't have\n // permissions to see roles\n stages: workflow.stages.map((stage) => {\n let hasUpdatedPermissions = true;\n const serverStage = serverState.workflow.stages.find(\n (serverStage) => serverStage.id === stage?.id\n );\n\n if (serverStage) {\n hasUpdatedPermissions =\n serverStage.permissions?.length !== stage.permission?.length ||\n !serverStage.permissions.every(\n (serverPermission) =>\n !!stage.permissions.find(\n (permission) => permission.role === serverPermission.role\n )\n );\n }\n\n return {\n ...stage,\n permissions: hasUpdatedPermissions ? stage.permissions : undefined,\n };\n }),\n },\n });\n\n return res;\n } catch (error) {\n // TODO: this would benefit from a utility to get a formik error\n // representation from an API error\n if (\n error.response.data?.error?.name === 'ValidationError' &&\n error.response.data?.error?.details?.errors?.length > 0\n ) {\n setInitialErrors(\n error.response.data?.error?.details?.errors.reduce((acc, error) => {\n set(acc, error.path, error.message);\n\n return acc;\n }, {})\n );\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n return null;\n }\n };\n\n const submitForm = async () => {\n await updateWorkflow(currentWorkflow);\n await refetch();\n\n setSavePrompts({});\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes.some((contentType) =>\n contentTypesFromOtherWorkflows.includes(contentType)\n );\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount > parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n currentWorkflow.stages.length >\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal('stage');\n } else if (hasDeletedServerStages || isContentTypeReassignment) {\n if (hasDeletedServerStages) {\n setSavePrompts((prev) => ({ ...prev, hasDeletedServerStages: true }));\n }\n\n if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n }\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n const limits = getFeature('review-workflows');\n\n React.useEffect(() => {\n if (!isLoadingWorkflow) {\n dispatch(setWorkflow({ workflow }));\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingWorkflow || isLoadingContentTypes || isLoadingRoles));\n\n // reset the state to the initial state to avoid flashes if a user\n // navigates from an edit-view to a create-view\n return () => {\n dispatch(resetWorkflow());\n };\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingWorkflow,\n isLoadingRoles,\n serverRoles,\n singleTypes,\n workflow,\n workflows,\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 (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n meta?.workflowCount > parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal('workflow');\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n currentWorkflow.stages.length >\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [\n currentWorkflow.stages.length,\n isLicenseLoading,\n isLoadingWorkflow,\n limits,\n meta?.workflowCount,\n meta.workflowsTotal,\n ]);\n\n React.useEffect(() => {\n if (!isLoading && roles.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n // TODO: redirect back to list-view if workflow is not found?\n\n return (\n <>\n <Layout.DragLayerRendered />\n\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n canUpdate && (\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n // if the confirm dialog is open the loading state is on\n // the confirm button already\n loading={!Object.keys(savePrompts).length > 0 && isLoadingMutation}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n subtitle={\n !isLoading &&\n formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow.stages.length }\n )\n }\n title={currentWorkflow.name}\n />\n\n <Layout.Root>\n {isLoading ? (\n <Flex justifyContent=\"center\">\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n </Flex>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes canUpdate={canUpdate} />\n <Stages\n canDelete={canDelete}\n canUpdate={canUpdate}\n stages={formik.values?.stages}\n />\n </Flex>\n )}\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasDeletedServerStages && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.stages.body',\n defaultMessage:\n 'All entries assigned to deleted stages will be moved to the previous stage.',\n })}\n </Typography>\n )}\n\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows.filter((contentType) =>\n currentWorkflow.contentTypes.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.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.edit.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'stage'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.edit.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.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 { ReviewWorkflowsEditView } from './EditView';\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['review-workflows'].main}>\n <ReviewWorkflowsEditView />\n </CheckPagePermissions>\n );\n}\n"],"names":["workflow","serverStage","error","Layout.DragLayerRendered","Layout.Header","Layout.Back","Layout.Root","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { useQuery } from "react-query";
|
|
|
8
8
|
import { useSelector } from "react-redux";
|
|
9
9
|
import { useHistory, useRouteMatch } from "react-router-dom";
|
|
10
10
|
import { createContext } from "@radix-ui/react-context";
|
|
11
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
11
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-2b5530b9.mjs";
|
|
12
12
|
import { f as formatAPIErrors } from "./formatAPIErrors-db6ed675.mjs";
|
|
13
13
|
import { A as API_TOKEN_TYPE } from "./constants-d3dd8ed6.mjs";
|
|
14
14
|
import { T as TokenName, a as TokenDescription, L as LifeSpanInput, b as TokenTypeSelect, s as schema, F as FormHead, c as TokenBox } from "./index-176cc121.mjs";
|
|
@@ -863,4 +863,4 @@ const ApiTokenCreateView = () => {
|
|
|
863
863
|
export {
|
|
864
864
|
ApiTokenCreateView as A
|
|
865
865
|
};
|
|
866
|
-
//# sourceMappingURL=index-
|
|
866
|
+
//# sourceMappingURL=index-69dbf2cf.mjs.map
|