@strapi/admin 4.15.5-alpha.2 → 4.15.5-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AuthenticatedApp-fa931d1d.mjs → AuthenticatedApp-2cfb41e2.mjs} +21 -21
- package/dist/_chunks/{AuthenticatedApp-fa931d1d.mjs.map → AuthenticatedApp-2cfb41e2.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-4b160235.js → AuthenticatedApp-79e3f141.js} +21 -21
- package/dist/_chunks/{AuthenticatedApp-4b160235.js.map → AuthenticatedApp-79e3f141.js.map} +1 -1
- package/dist/_chunks/{HomePage-8e98be60.mjs → HomePage-1376624b.mjs} +4 -4
- package/dist/_chunks/{HomePage-8e98be60.mjs.map → HomePage-1376624b.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-b91d1592.js → HomePage-a617d19a.js} +4 -4
- package/dist/_chunks/{HomePage-b91d1592.js.map → HomePage-a617d19a.js.map} +1 -1
- package/dist/_chunks/{HomePage-b6967648.js → HomePage-a9e9942a.js} +4 -4
- package/dist/_chunks/{HomePage-b6967648.js.map → HomePage-a9e9942a.js.map} +1 -1
- package/dist/_chunks/{HomePage-9bda39b5.mjs → HomePage-e333ff90.mjs} +4 -4
- package/dist/_chunks/{HomePage-9bda39b5.mjs.map → HomePage-e333ff90.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-ee6d69b0.mjs → InstalledPluginsPage-c7ccd2b2.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-ee6d69b0.mjs.map → InstalledPluginsPage-c7ccd2b2.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-d4b90e9c.js → InstalledPluginsPage-fb2aaa1f.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-d4b90e9c.js.map → InstalledPluginsPage-fb2aaa1f.js.map} +1 -1
- package/dist/_chunks/{Login-4fc5dcbb.mjs → Login-69bf063c.mjs} +2 -2
- package/dist/_chunks/{Login-4fc5dcbb.mjs.map → Login-69bf063c.mjs.map} +1 -1
- package/dist/_chunks/{Login-5fbf37c3.js → Login-d6fd38ea.js} +2 -2
- package/dist/_chunks/{Login-5fbf37c3.js.map → Login-d6fd38ea.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-ff0d02c6.js → MarketplacePage-7c516084.js} +3 -3
- package/dist/_chunks/{MarketplacePage-ff0d02c6.js.map → MarketplacePage-7c516084.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-ec9bf1db.mjs → MarketplacePage-c829d0de.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-ec9bf1db.mjs.map → MarketplacePage-c829d0de.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-96a8404e.js → ProfilePage-a2e54283.js} +3 -3
- package/dist/_chunks/{ProfilePage-96a8404e.js.map → ProfilePage-a2e54283.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-caeace8c.mjs → ProfilePage-c6d8c69f.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-caeace8c.mjs.map → ProfilePage-c6d8c69f.mjs.map} +1 -1
- package/dist/_chunks/{build-f011d8dc.mjs → build-20299009.mjs} +2 -2
- package/dist/_chunks/{build-f011d8dc.mjs.map → build-20299009.mjs.map} +1 -1
- package/dist/_chunks/{build-b285bccd.js → build-58827c7a.js} +2 -2
- package/dist/_chunks/{build-b285bccd.js.map → build-58827c7a.js.map} +1 -1
- package/dist/_chunks/{constants-86882708.js → constants-4c06740e.js} +3 -3
- package/dist/_chunks/{constants-86882708.js.map → constants-4c06740e.js.map} +1 -1
- package/dist/_chunks/{constants-ffa23daa.mjs → constants-5f0670d7.mjs} +5 -5
- package/dist/_chunks/{constants-ffa23daa.mjs.map → constants-5f0670d7.mjs.map} +1 -1
- package/dist/_chunks/{constants-129cf022.mjs → constants-842c6449.mjs} +6 -6
- package/dist/_chunks/{constants-129cf022.mjs.map → constants-842c6449.mjs.map} +1 -1
- package/dist/_chunks/{constants-1bd1239d.js → constants-9212941b.js} +6 -6
- package/dist/_chunks/{constants-1bd1239d.js.map → constants-9212941b.js.map} +1 -1
- package/dist/_chunks/{constants-cd5a4e71.js → constants-962e9922.js} +5 -5
- package/dist/_chunks/{constants-cd5a4e71.js.map → constants-962e9922.js.map} +1 -1
- package/dist/_chunks/{constants-916debf1.js → constants-a16f9961.js} +2 -2
- package/dist/_chunks/{constants-916debf1.js.map → constants-a16f9961.js.map} +1 -1
- package/dist/_chunks/{constants-39df4f04.mjs → constants-a3372db6.mjs} +3 -3
- package/dist/_chunks/{constants-39df4f04.mjs.map → constants-a3372db6.mjs.map} +1 -1
- package/dist/_chunks/{constants-7bfc7134.mjs → constants-fad06b7f.mjs} +2 -2
- package/dist/_chunks/{constants-7bfc7134.mjs.map → constants-fad06b7f.mjs.map} +1 -1
- package/dist/_chunks/{develop-3c9f7452.mjs → develop-7066af5e.mjs} +2 -2
- package/dist/_chunks/{develop-3c9f7452.mjs.map → develop-7066af5e.mjs.map} +1 -1
- package/dist/_chunks/{develop-9765d7ba.js → develop-a7d5cf0c.js} +2 -2
- package/dist/_chunks/{develop-9765d7ba.js.map → develop-a7d5cf0c.js.map} +1 -1
- package/dist/_chunks/{index-653e1ab3.js → index-07d155a0.js} +2 -2
- package/dist/_chunks/{index-653e1ab3.js.map → index-07d155a0.js.map} +1 -1
- package/dist/_chunks/{index-1eaab33f.js → index-12b7d75f.js} +4 -4
- package/dist/_chunks/{index-1eaab33f.js.map → index-12b7d75f.js.map} +1 -1
- package/dist/_chunks/{index-4343f97f.mjs → index-1316edb2.mjs} +4 -4
- package/dist/_chunks/{index-4343f97f.mjs.map → index-1316edb2.mjs.map} +1 -1
- package/dist/_chunks/{index-3fb94612.js → index-174cc6b9.js} +4 -4
- package/dist/_chunks/{index-3fb94612.js.map → index-174cc6b9.js.map} +1 -1
- package/dist/_chunks/{index-05f82f02.js → index-18fed2cd.js} +3 -3
- package/dist/_chunks/{index-05f82f02.js.map → index-18fed2cd.js.map} +1 -1
- package/dist/_chunks/{index-77124563.mjs → index-1e3a2719.mjs} +5 -5
- package/dist/_chunks/{index-77124563.mjs.map → index-1e3a2719.mjs.map} +1 -1
- package/dist/_chunks/{index-0bd0d840.mjs → index-242c514c.mjs} +3 -3
- package/dist/_chunks/{index-0bd0d840.mjs.map → index-242c514c.mjs.map} +1 -1
- package/dist/_chunks/{index-cdc1221a.js → index-252284ed.js} +3 -3
- package/dist/_chunks/{index-cdc1221a.js.map → index-252284ed.js.map} +1 -1
- package/dist/_chunks/{index-4e8af716.js → index-25bb4a4d.js} +5 -5
- package/dist/_chunks/{index-4e8af716.js.map → index-25bb4a4d.js.map} +1 -1
- package/dist/_chunks/{index-f3c67f77.js → index-25c9158f.js} +2 -2
- package/dist/_chunks/{index-f3c67f77.js.map → index-25c9158f.js.map} +1 -1
- package/dist/_chunks/{index-8acbbabe.js → index-25feef65.js} +6 -6
- package/dist/_chunks/{index-8acbbabe.js.map → index-25feef65.js.map} +1 -1
- package/dist/_chunks/{index-05ada54b.js → index-2aed5618.js} +3 -3
- package/dist/_chunks/{index-05ada54b.js.map → index-2aed5618.js.map} +1 -1
- package/dist/_chunks/{index-f18d27fd.js → index-2b331655.js} +3 -3
- package/dist/_chunks/{index-f18d27fd.js.map → index-2b331655.js.map} +1 -1
- package/dist/_chunks/{index-a220f0b2.mjs → index-314f72f4.mjs} +4 -4
- package/dist/_chunks/{index-a220f0b2.mjs.map → index-314f72f4.mjs.map} +1 -1
- package/dist/_chunks/{index-006ef0ac.js → index-341222f2.js} +3 -3
- package/dist/_chunks/{index-006ef0ac.js.map → index-341222f2.js.map} +1 -1
- package/dist/_chunks/{index-7c0dcf2b.js → index-3444ab6f.js} +4 -4
- package/dist/_chunks/{index-7c0dcf2b.js.map → index-3444ab6f.js.map} +1 -1
- package/dist/_chunks/{index-09752dfe.js → index-35fc9959.js} +3 -3
- package/dist/_chunks/{index-09752dfe.js.map → index-35fc9959.js.map} +1 -1
- package/dist/_chunks/{index-9b3ff96c.mjs → index-45a78b18.mjs} +20 -20
- package/dist/_chunks/{index-9b3ff96c.mjs.map → index-45a78b18.mjs.map} +1 -1
- package/dist/_chunks/{index-d5711ebb.js → index-48ebb88c.js} +5 -5
- package/dist/_chunks/{index-d5711ebb.js.map → index-48ebb88c.js.map} +1 -1
- package/dist/_chunks/{index-05001647.js → index-4a241498.js} +8 -8
- package/dist/_chunks/{index-05001647.js.map → index-4a241498.js.map} +1 -1
- package/dist/_chunks/{index-54dc318d.js → index-4c29f67c.js} +3 -3
- package/dist/_chunks/{index-54dc318d.js.map → index-4c29f67c.js.map} +1 -1
- package/dist/_chunks/{index-c184f4d7.mjs → index-517fbe00.mjs} +5 -5
- package/dist/_chunks/{index-c184f4d7.mjs.map → index-517fbe00.mjs.map} +1 -1
- package/dist/_chunks/{index-7028ad70.js → index-563a992a.js} +4 -4
- package/dist/_chunks/{index-7028ad70.js.map → index-563a992a.js.map} +1 -1
- package/dist/_chunks/{index-782c0685.mjs → index-5b44cba5.mjs} +2 -2
- package/dist/_chunks/{index-782c0685.mjs.map → index-5b44cba5.mjs.map} +1 -1
- package/dist/_chunks/{index-f4a061be.mjs → index-61c915cd.mjs} +2 -2
- package/dist/_chunks/{index-f4a061be.mjs.map → index-61c915cd.mjs.map} +1 -1
- package/dist/_chunks/{index-f0f40db4.mjs → index-61e392e8.mjs} +5 -5
- package/dist/_chunks/{index-f0f40db4.mjs.map → index-61e392e8.mjs.map} +1 -1
- package/dist/_chunks/{index-7a956856.js → index-66177bc5.js} +4 -4
- package/dist/_chunks/{index-7a956856.js.map → index-66177bc5.js.map} +1 -1
- package/dist/_chunks/{index-9c88e73f.js → index-68ae52b6.js} +5 -5
- package/dist/_chunks/{index-9c88e73f.js.map → index-68ae52b6.js.map} +1 -1
- package/dist/_chunks/{index-43e86c36.mjs → index-693383db.mjs} +5 -5
- package/dist/_chunks/{index-43e86c36.mjs.map → index-693383db.mjs.map} +1 -1
- package/dist/_chunks/{index-8d895e56.mjs → index-6b7dceb1.mjs} +3 -3
- package/dist/_chunks/{index-8d895e56.mjs.map → index-6b7dceb1.mjs.map} +1 -1
- package/dist/_chunks/{index-d9f9de85.mjs → index-703c58c8.mjs} +4 -4
- package/dist/_chunks/{index-d9f9de85.mjs.map → index-703c58c8.mjs.map} +1 -1
- package/dist/_chunks/{index-96af3a65.js → index-7338912f.js} +5 -5
- package/dist/_chunks/{index-96af3a65.js.map → index-7338912f.js.map} +1 -1
- package/dist/_chunks/{index-1bf08614.mjs → index-7a1a0c5c.mjs} +3 -3
- package/dist/_chunks/{index-1bf08614.mjs.map → index-7a1a0c5c.mjs.map} +1 -1
- package/dist/_chunks/{index-6861cd84.mjs → index-7d449292.mjs} +3 -3
- package/dist/_chunks/{index-6861cd84.mjs.map → index-7d449292.mjs.map} +1 -1
- package/dist/_chunks/{index-de154c58.mjs → index-80574f48.mjs} +3 -3
- package/dist/_chunks/{index-de154c58.mjs.map → index-80574f48.mjs.map} +1 -1
- package/dist/_chunks/{index-55a46be8.mjs → index-9910aa5a.mjs} +3 -3
- package/dist/_chunks/{index-55a46be8.mjs.map → index-9910aa5a.mjs.map} +1 -1
- package/dist/_chunks/{index-df043af5.mjs → index-996f7ad1.mjs} +3 -3
- package/dist/_chunks/{index-df043af5.mjs.map → index-996f7ad1.mjs.map} +1 -1
- package/dist/_chunks/{index-a684490c.mjs → index-9b3107a4.mjs} +3 -3
- package/dist/_chunks/{index-a684490c.mjs.map → index-9b3107a4.mjs.map} +1 -1
- package/dist/_chunks/{index-e013fe86.js → index-9d03d359.js} +3 -3
- package/dist/_chunks/{index-e013fe86.js.map → index-9d03d359.js.map} +1 -1
- package/dist/_chunks/{index-cd2af4a0.mjs → index-9e5d59f5.mjs} +5 -5
- package/dist/_chunks/{index-cd2af4a0.mjs.map → index-9e5d59f5.mjs.map} +1 -1
- package/dist/_chunks/{index-57ae9065.mjs → index-9f88ad83.mjs} +3 -3
- package/dist/_chunks/{index-57ae9065.mjs.map → index-9f88ad83.mjs.map} +1 -1
- package/dist/_chunks/{index-f67d8e8d.mjs → index-adb714e8.mjs} +2 -2
- package/dist/_chunks/{index-f67d8e8d.mjs.map → index-adb714e8.mjs.map} +1 -1
- package/dist/_chunks/{index-b593ff2a.mjs → index-b53ba38d.mjs} +4 -4
- package/dist/_chunks/{index-b593ff2a.mjs.map → index-b53ba38d.mjs.map} +1 -1
- package/dist/_chunks/{index-c075b5a1.mjs → index-b53cf07d.mjs} +52 -40
- package/dist/_chunks/index-b53cf07d.mjs.map +1 -0
- package/dist/_chunks/{index-62b7bdbe.js → index-b84b9fee.js} +52 -40
- package/dist/_chunks/index-b84b9fee.js.map +1 -0
- package/dist/_chunks/{index-326b9481.mjs → index-bef99193.mjs} +4 -4
- package/dist/_chunks/{index-326b9481.mjs.map → index-bef99193.mjs.map} +1 -1
- package/dist/_chunks/{index-6bfd0b33.js → index-c2b86584.js} +3 -3
- package/dist/_chunks/{index-6bfd0b33.js.map → index-c2b86584.js.map} +1 -1
- package/dist/_chunks/{index-82f22c48.js → index-c3469f69.js} +3 -3
- package/dist/_chunks/{index-82f22c48.js.map → index-c3469f69.js.map} +1 -1
- package/dist/_chunks/{index-e2db7aa8.mjs → index-c4116296.mjs} +6 -6
- package/dist/_chunks/{index-e2db7aa8.mjs.map → index-c4116296.mjs.map} +1 -1
- package/dist/_chunks/{index-d33c8d9f.mjs → index-cf4fe6b7.mjs} +8 -8
- package/dist/_chunks/{index-d33c8d9f.mjs.map → index-cf4fe6b7.mjs.map} +1 -1
- package/dist/_chunks/{index-d196ac50.js → index-d4029932.js} +4 -4
- package/dist/_chunks/{index-d196ac50.js.map → index-d4029932.js.map} +1 -1
- package/dist/_chunks/{index-eea1e084.mjs → index-dcbab202.mjs} +3 -3
- package/dist/_chunks/{index-eea1e084.mjs.map → index-dcbab202.mjs.map} +1 -1
- package/dist/_chunks/{index-dff777b7.js → index-dcd31235.js} +3 -3
- package/dist/_chunks/{index-dff777b7.js.map → index-dcd31235.js.map} +1 -1
- package/dist/_chunks/{index-332b3702.mjs → index-dede2234.mjs} +3 -3
- package/dist/_chunks/{index-332b3702.mjs.map → index-dede2234.mjs.map} +1 -1
- package/dist/_chunks/{index-853bad50.mjs → index-df70cfd7.mjs} +5 -5
- package/dist/_chunks/{index-853bad50.mjs.map → index-df70cfd7.mjs.map} +1 -1
- package/dist/_chunks/{index-c40ee26a.mjs → index-dfc0437b.mjs} +4 -4
- package/dist/_chunks/{index-c40ee26a.mjs.map → index-dfc0437b.mjs.map} +1 -1
- package/dist/_chunks/{index-455d0b3e.js → index-e8b17b94.js} +5 -5
- package/dist/_chunks/{index-455d0b3e.js.map → index-e8b17b94.js.map} +1 -1
- package/dist/_chunks/{index-539c5eac.js → index-ea8946fb.js} +2 -2
- package/dist/_chunks/{index-539c5eac.js.map → index-ea8946fb.js.map} +1 -1
- package/dist/_chunks/{index-0c5f6415.js → index-ecb3cfba.js} +5 -5
- package/dist/_chunks/{index-0c5f6415.js.map → index-ecb3cfba.js.map} +1 -1
- package/dist/_chunks/{index-d80de23d.mjs → index-ed287ba8.mjs} +3 -3
- package/dist/_chunks/{index-d80de23d.mjs.map → index-ed287ba8.mjs.map} +1 -1
- package/dist/_chunks/{index-891d1527.mjs → index-edf62e62.mjs} +4 -4
- package/dist/_chunks/{index-891d1527.mjs.map → index-edf62e62.mjs.map} +1 -1
- package/dist/_chunks/{index-706ae836.js → index-ef0c2ffb.js} +4 -4
- package/dist/_chunks/{index-706ae836.js.map → index-ef0c2ffb.js.map} +1 -1
- package/dist/_chunks/{index-2ed87ac8.js → index-f088fe2c.js} +3 -3
- package/dist/_chunks/{index-2ed87ac8.js.map → index-f088fe2c.js.map} +1 -1
- package/dist/_chunks/{index-234ed67d.mjs → index-f097ccea.mjs} +3 -3
- package/dist/_chunks/{index-234ed67d.mjs.map → index-f097ccea.mjs.map} +1 -1
- package/dist/_chunks/{index-55d6d65a.js → index-fbe9dba1.js} +3 -3
- package/dist/_chunks/{index-55d6d65a.js.map → index-fbe9dba1.js.map} +1 -1
- package/dist/_chunks/{index-b6c497e5.js → index-fc7a00f0.js} +20 -20
- package/dist/_chunks/{index-b6c497e5.js.map → index-fc7a00f0.js.map} +1 -1
- package/dist/_chunks/{schema-82ad2cb1.mjs → schema-1808aa2d.mjs} +2 -2
- package/dist/_chunks/{schema-82ad2cb1.mjs.map → schema-1808aa2d.mjs.map} +1 -1
- package/dist/_chunks/{schema-8bb5b01b.js → schema-e73a6250.js} +2 -2
- package/dist/_chunks/{schema-8bb5b01b.js.map → schema-e73a6250.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-f5761727.js → validateWorkflow-11ecf8ee.js} +3 -3
- package/dist/_chunks/{validateWorkflow-f5761727.js.map → validateWorkflow-11ecf8ee.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-23b1ee38.mjs → validateWorkflow-1ec1040b.mjs} +3 -3
- package/dist/_chunks/{validateWorkflow-23b1ee38.mjs.map → validateWorkflow-1ec1040b.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.mjs +1 -1
- package/package.json +12 -12
- package/dist/_chunks/index-62b7bdbe.js.map +0 -1
- package/dist/_chunks/index-c075b5a1.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-de154c58.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useAuditLogsData.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useFormatTimeStamp.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getActionTypesDefaultMessages.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionItem.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionBody.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/PaginationFooter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/TableRows/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/ComboboxFilter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/tableHeaders.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ProtectedListPage/index.js"],"sourcesContent":["import { useFetchClient, useNotification, useQueryParams } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\nimport { useLocation } from 'react-router-dom';\n\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\n\nconst useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {\n const { get } = useFetchClient();\n const { search } = useLocation();\n const toggleNotification = useNotification();\n const [{ query }] = useQueryParams();\n\n const queryOptions = {\n keepPreviousData: true,\n retry: false,\n staleTime: 1000 * 20, // 20 seconds\n onError: (error) => toggleNotification({ type: 'warning', message: error.message }),\n };\n\n const {\n users,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n ...queryOptions,\n enabled: canReadUsers,\n staleTime: 2 * (1000 * 60), // 2 minutes\n }\n );\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n } = useQuery(\n ['auditLogs', search],\n async () => {\n const { data } = await get(`/admin/audit-logs`, {\n params: query,\n });\n\n return data;\n },\n {\n ...queryOptions,\n enabled: canReadAuditLogs,\n }\n );\n\n return {\n auditLogs,\n users,\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n\nexport default useAuditLogsData;\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nconst useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n\nexport default useFormatTimeStamp;\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value) => {\n return actionTypes[value] || value;\n};\n","import React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\n\nconst ActionItem = ({ actionLabel, actionName }) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n\nActionItem.propTypes = {\n actionLabel: PropTypes.string.isRequired,\n actionName: PropTypes.string.isRequired,\n};\n\nexport default ActionItem;\n","import React from 'react';\n\nimport { Box, Flex, Grid, JSONInput, Loader, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nimport ActionItem from './ActionItem';\n\nconst ActionBody = ({ status, data, formattedDate }) => {\n const { formatMessage } = useIntl();\n\n if (status === 'loading') {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid>\n <JSONInput\n value={JSON.stringify(payload, null, 2)}\n disabled\n label={formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n />\n </>\n );\n};\n\nActionBody.defaultProps = {\n data: {},\n};\n\nActionBody.propTypes = {\n status: PropTypes.oneOf(['idle', 'loading', 'error', 'success']).isRequired,\n data: PropTypes.shape({\n action: PropTypes.string,\n date: PropTypes.string,\n payload: PropTypes.object,\n user: PropTypes.object,\n }),\n formattedDate: PropTypes.string.isRequired,\n};\n\nexport default ActionBody;\n","import React from 'react';\n\nimport { ModalBody, ModalHeader, ModalLayout } from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useQuery } from 'react-query';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\n\nimport ActionBody from './ActionBody';\n\nconst Modal = ({ handleClose, logId }) => {\n const { get } = useFetchClient();\n const toggleNotification = useNotification();\n\n const fetchAuditLog = async (id) => {\n const { data } = await get(`/admin/audit-logs/${id}`);\n\n if (!data) {\n throw new Error('Audit log not found');\n }\n\n return data;\n };\n\n const { data, status } = useQuery(['audit-log', logId], () => fetchAuditLog(logId), {\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n handleClose();\n },\n });\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data ? formatTimeStamp(data.date) : '';\n\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <ModalBody>\n <ActionBody status={status} data={data} formattedDate={formattedDate} />\n </ModalBody>\n </ModalLayout>\n );\n};\n\nModal.propTypes = {\n handleClose: PropTypes.func.isRequired,\n logId: PropTypes.string.isRequired,\n};\n\nexport default Modal;\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { PageSizeURLQuery, PaginationURLQuery } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\n\nconst PaginationFooter = ({ pagination }) => {\n return (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n );\n};\n\nPaginationFooter.defaultProps = {\n pagination: {\n pageCount: 0,\n pageSize: 50,\n total: 0,\n },\n};\n\nPaginationFooter.propTypes = {\n pagination: PropTypes.shape({\n page: PropTypes.number,\n pageCount: PropTypes.number,\n pageSize: PropTypes.number,\n total: PropTypes.number,\n }),\n};\n\nexport default PaginationFooter;\n","import React from 'react';\n\nimport { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Eye } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nconst TableRows = ({ headers, rows, onOpenModal }) => {\n const { formatMessage } = useIntl();\n const formatTimeStamp = useFormatTimeStamp();\n\n const getCellValue = ({ type, value, model }) => {\n if (type === 'date') {\n return formatTimeStamp(value);\n }\n\n if (type === 'action') {\n return formatMessage(\n {\n id: `Settings.permissions.auditLogs.${value}`,\n defaultMessage: getDefaultMessage(value),\n },\n { model }\n );\n }\n\n return value || '-';\n };\n\n return (\n <Tbody>\n {rows.map((data) => {\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => onOpenModal(data.id),\n })}\n >\n {headers.map(({ key, name, cellFormatter }) => {\n return (\n <Td key={key}>\n <Typography textColor=\"neutral800\">\n {getCellValue({\n type: key,\n value: cellFormatter ? cellFormatter(data[name]) : data[name],\n model: data.payload?.model,\n })}\n </Typography>\n </Td>\n );\n })}\n <Td {...stopPropagation}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => onOpenModal(data.id)}\n aria-label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${data.action} action` }\n )}\n noBorder\n icon={<Eye />}\n />\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nTableRows.defaultProps = {\n rows: [],\n};\n\nTableRows.propTypes = {\n headers: PropTypes.array.isRequired,\n rows: PropTypes.array,\n onOpenModal: PropTypes.func.isRequired,\n};\n\nexport default TableRows;\n","import React from 'react';\n\nimport { Combobox, ComboboxOption } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst ComboboxFilter = ({ value, options, onChange }) => {\n const { formatMessage } = useIntl();\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n return (\n <Combobox aria-label={ariaLabel} value={value} onChange={onChange}>\n {options.map(({ label, customValue }) => {\n return (\n <ComboboxOption key={customValue} value={customValue}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\nComboboxFilter.defaultProps = {\n value: null,\n};\n\nComboboxFilter.propTypes = {\n value: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n customValue: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default ComboboxFilter;\n","import ComboboxFilter from '../ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nconst customOperators = [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n];\n\nconst getDisplayedFilters = ({ formatMessage, users, canReadUsers }) => {\n const actionOptions = Object.keys(actionTypes).map((action) => {\n return {\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n customValue: action,\n };\n });\n\n const filters = [\n {\n name: 'action',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n customInput: ComboboxFilter,\n options: actionOptions,\n },\n fieldSchema: { type: 'enumeration' },\n },\n {\n name: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n },\n fieldSchema: { type: 'datetime' },\n },\n ];\n\n if (canReadUsers && users) {\n const getDisplayNameFromUser = (user) => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return formatMessage(\n {\n id: 'Settings.permissions.auditLogs.user.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname: user.firstname,\n lastname: user.lastname,\n }\n );\n }\n\n return user.email;\n };\n\n const userOptions = users.map((user) => {\n return {\n label: getDisplayNameFromUser(user),\n // Combobox expects a string value\n customValue: user.id.toString(),\n };\n });\n\n return [\n ...filters,\n {\n name: 'user',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n options: userOptions,\n customInput: ComboboxFilter,\n },\n fieldSchema: { type: 'relation', mainField: { name: 'id' } },\n },\n ];\n }\n\n return filters;\n};\n\nexport default getDisplayedFilters;\n","const tableHeaders = [\n {\n name: 'action',\n key: 'action',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n },\n sortable: true,\n },\n },\n {\n name: 'date',\n key: 'date',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n },\n sortable: true,\n },\n },\n {\n key: 'user',\n name: 'user',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n },\n sortable: false,\n },\n cellFormatter: (user) => (user ? user.displayName : ''),\n },\n];\n\nexport default tableHeaders;\n","import React from 'react';\n\nimport {\n ActionLayout,\n Box,\n ContentLayout,\n HeaderLayout,\n Layout,\n Main,\n} from '@strapi/design-system';\nimport {\n AnErrorOccurred,\n DynamicTable,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useQueryParams,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport Filters from '../../../../../../../../admin/src/pages/SettingsPage/components/Filters';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\n\nimport useAuditLogsData from './hooks/useAuditLogsData';\nimport Modal from './Modal';\nimport PaginationFooter from './PaginationFooter';\nimport TableRows from './TableRows';\nimport getDisplayedFilters from './utils/getDisplayedFilters';\nimport tableHeaders from './utils/tableHeaders';\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n } = useRBAC({\n ...permissions.settings.auditLogs,\n readUsers: permissions.settings.users.read,\n });\n\n const [{ query }, setQuery] = useQueryParams();\n const { auditLogs, users, isLoading, hasError } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n useFocusWhenNavigate();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const title = formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n if (hasError) {\n return (\n <Layout>\n <ContentLayout>\n <Box paddingTop={8}>\n <AnErrorOccurred />\n </Box>\n </ContentLayout>\n </Layout>\n );\n }\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name={title} />\n <HeaderLayout\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <ActionLayout startActions={<Filters displayedFilters={displayedFilters} />} />\n <ContentLayout canRead={canReadAuditLogs}>\n <DynamicTable\n contentType=\"Audit logs\"\n headers={headers}\n rows={auditLogs?.results || []}\n withBulkActions\n isLoading={isLoading}\n >\n <TableRows\n headers={headers}\n rows={auditLogs?.results || []}\n onOpenModal={(id) => setQuery({ id })}\n />\n </DynamicTable>\n <PaginationFooter pagination={auditLogs?.pagination} />\n </ContentLayout>\n {query?.id && <Modal handleClose={() => setQuery({ id: null }, 'remove')} logId={query.id} />}\n </Main>\n );\n};\n\nexport default ListView;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport ListView from '../ListView';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.auditLogs.main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["data"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-80574f48.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useAuditLogsData.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useFormatTimeStamp.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getActionTypesDefaultMessages.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionItem.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionBody.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/PaginationFooter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/TableRows/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/ComboboxFilter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/tableHeaders.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ProtectedListPage/index.js"],"sourcesContent":["import { useFetchClient, useNotification, useQueryParams } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\nimport { useLocation } from 'react-router-dom';\n\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\n\nconst useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {\n const { get } = useFetchClient();\n const { search } = useLocation();\n const toggleNotification = useNotification();\n const [{ query }] = useQueryParams();\n\n const queryOptions = {\n keepPreviousData: true,\n retry: false,\n staleTime: 1000 * 20, // 20 seconds\n onError: (error) => toggleNotification({ type: 'warning', message: error.message }),\n };\n\n const {\n users,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n ...queryOptions,\n enabled: canReadUsers,\n staleTime: 2 * (1000 * 60), // 2 minutes\n }\n );\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n } = useQuery(\n ['auditLogs', search],\n async () => {\n const { data } = await get(`/admin/audit-logs`, {\n params: query,\n });\n\n return data;\n },\n {\n ...queryOptions,\n enabled: canReadAuditLogs,\n }\n );\n\n return {\n auditLogs,\n users,\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n\nexport default useAuditLogsData;\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nconst useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n\nexport default useFormatTimeStamp;\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value) => {\n return actionTypes[value] || value;\n};\n","import React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\n\nconst ActionItem = ({ actionLabel, actionName }) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n\nActionItem.propTypes = {\n actionLabel: PropTypes.string.isRequired,\n actionName: PropTypes.string.isRequired,\n};\n\nexport default ActionItem;\n","import React from 'react';\n\nimport { Box, Flex, Grid, JSONInput, Loader, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nimport ActionItem from './ActionItem';\n\nconst ActionBody = ({ status, data, formattedDate }) => {\n const { formatMessage } = useIntl();\n\n if (status === 'loading') {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid>\n <JSONInput\n value={JSON.stringify(payload, null, 2)}\n disabled\n label={formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n />\n </>\n );\n};\n\nActionBody.defaultProps = {\n data: {},\n};\n\nActionBody.propTypes = {\n status: PropTypes.oneOf(['idle', 'loading', 'error', 'success']).isRequired,\n data: PropTypes.shape({\n action: PropTypes.string,\n date: PropTypes.string,\n payload: PropTypes.object,\n user: PropTypes.object,\n }),\n formattedDate: PropTypes.string.isRequired,\n};\n\nexport default ActionBody;\n","import React from 'react';\n\nimport { ModalBody, ModalHeader, ModalLayout } from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useQuery } from 'react-query';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\n\nimport ActionBody from './ActionBody';\n\nconst Modal = ({ handleClose, logId }) => {\n const { get } = useFetchClient();\n const toggleNotification = useNotification();\n\n const fetchAuditLog = async (id) => {\n const { data } = await get(`/admin/audit-logs/${id}`);\n\n if (!data) {\n throw new Error('Audit log not found');\n }\n\n return data;\n };\n\n const { data, status } = useQuery(['audit-log', logId], () => fetchAuditLog(logId), {\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n handleClose();\n },\n });\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data ? formatTimeStamp(data.date) : '';\n\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <ModalBody>\n <ActionBody status={status} data={data} formattedDate={formattedDate} />\n </ModalBody>\n </ModalLayout>\n );\n};\n\nModal.propTypes = {\n handleClose: PropTypes.func.isRequired,\n logId: PropTypes.string.isRequired,\n};\n\nexport default Modal;\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { PageSizeURLQuery, PaginationURLQuery } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\n\nconst PaginationFooter = ({ pagination }) => {\n return (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n );\n};\n\nPaginationFooter.defaultProps = {\n pagination: {\n pageCount: 0,\n pageSize: 50,\n total: 0,\n },\n};\n\nPaginationFooter.propTypes = {\n pagination: PropTypes.shape({\n page: PropTypes.number,\n pageCount: PropTypes.number,\n pageSize: PropTypes.number,\n total: PropTypes.number,\n }),\n};\n\nexport default PaginationFooter;\n","import React from 'react';\n\nimport { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Eye } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nconst TableRows = ({ headers, rows, onOpenModal }) => {\n const { formatMessage } = useIntl();\n const formatTimeStamp = useFormatTimeStamp();\n\n const getCellValue = ({ type, value, model }) => {\n if (type === 'date') {\n return formatTimeStamp(value);\n }\n\n if (type === 'action') {\n return formatMessage(\n {\n id: `Settings.permissions.auditLogs.${value}`,\n defaultMessage: getDefaultMessage(value),\n },\n { model }\n );\n }\n\n return value || '-';\n };\n\n return (\n <Tbody>\n {rows.map((data) => {\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => onOpenModal(data.id),\n })}\n >\n {headers.map(({ key, name, cellFormatter }) => {\n return (\n <Td key={key}>\n <Typography textColor=\"neutral800\">\n {getCellValue({\n type: key,\n value: cellFormatter ? cellFormatter(data[name]) : data[name],\n model: data.payload?.model,\n })}\n </Typography>\n </Td>\n );\n })}\n <Td {...stopPropagation}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => onOpenModal(data.id)}\n aria-label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${data.action} action` }\n )}\n noBorder\n icon={<Eye />}\n />\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nTableRows.defaultProps = {\n rows: [],\n};\n\nTableRows.propTypes = {\n headers: PropTypes.array.isRequired,\n rows: PropTypes.array,\n onOpenModal: PropTypes.func.isRequired,\n};\n\nexport default TableRows;\n","import React from 'react';\n\nimport { Combobox, ComboboxOption } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst ComboboxFilter = ({ value, options, onChange }) => {\n const { formatMessage } = useIntl();\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n return (\n <Combobox aria-label={ariaLabel} value={value} onChange={onChange}>\n {options.map(({ label, customValue }) => {\n return (\n <ComboboxOption key={customValue} value={customValue}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\nComboboxFilter.defaultProps = {\n value: null,\n};\n\nComboboxFilter.propTypes = {\n value: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n customValue: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default ComboboxFilter;\n","import ComboboxFilter from '../ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nconst customOperators = [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n];\n\nconst getDisplayedFilters = ({ formatMessage, users, canReadUsers }) => {\n const actionOptions = Object.keys(actionTypes).map((action) => {\n return {\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n customValue: action,\n };\n });\n\n const filters = [\n {\n name: 'action',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n customInput: ComboboxFilter,\n options: actionOptions,\n },\n fieldSchema: { type: 'enumeration' },\n },\n {\n name: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n },\n fieldSchema: { type: 'datetime' },\n },\n ];\n\n if (canReadUsers && users) {\n const getDisplayNameFromUser = (user) => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return formatMessage(\n {\n id: 'Settings.permissions.auditLogs.user.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname: user.firstname,\n lastname: user.lastname,\n }\n );\n }\n\n return user.email;\n };\n\n const userOptions = users.map((user) => {\n return {\n label: getDisplayNameFromUser(user),\n // Combobox expects a string value\n customValue: user.id.toString(),\n };\n });\n\n return [\n ...filters,\n {\n name: 'user',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n options: userOptions,\n customInput: ComboboxFilter,\n },\n fieldSchema: { type: 'relation', mainField: { name: 'id' } },\n },\n ];\n }\n\n return filters;\n};\n\nexport default getDisplayedFilters;\n","const tableHeaders = [\n {\n name: 'action',\n key: 'action',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n },\n sortable: true,\n },\n },\n {\n name: 'date',\n key: 'date',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n },\n sortable: true,\n },\n },\n {\n key: 'user',\n name: 'user',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n },\n sortable: false,\n },\n cellFormatter: (user) => (user ? user.displayName : ''),\n },\n];\n\nexport default tableHeaders;\n","import React from 'react';\n\nimport {\n ActionLayout,\n Box,\n ContentLayout,\n HeaderLayout,\n Layout,\n Main,\n} from '@strapi/design-system';\nimport {\n AnErrorOccurred,\n DynamicTable,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useQueryParams,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport Filters from '../../../../../../../../admin/src/pages/SettingsPage/components/Filters';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\n\nimport useAuditLogsData from './hooks/useAuditLogsData';\nimport Modal from './Modal';\nimport PaginationFooter from './PaginationFooter';\nimport TableRows from './TableRows';\nimport getDisplayedFilters from './utils/getDisplayedFilters';\nimport tableHeaders from './utils/tableHeaders';\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n } = useRBAC({\n ...permissions.settings.auditLogs,\n readUsers: permissions.settings.users.read,\n });\n\n const [{ query }, setQuery] = useQueryParams();\n const { auditLogs, users, isLoading, hasError } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n useFocusWhenNavigate();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const title = formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n if (hasError) {\n return (\n <Layout>\n <ContentLayout>\n <Box paddingTop={8}>\n <AnErrorOccurred />\n </Box>\n </ContentLayout>\n </Layout>\n );\n }\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name={title} />\n <HeaderLayout\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <ActionLayout startActions={<Filters displayedFilters={displayedFilters} />} />\n <ContentLayout canRead={canReadAuditLogs}>\n <DynamicTable\n contentType=\"Audit logs\"\n headers={headers}\n rows={auditLogs?.results || []}\n withBulkActions\n isLoading={isLoading}\n >\n <TableRows\n headers={headers}\n rows={auditLogs?.results || []}\n onOpenModal={(id) => setQuery({ id })}\n />\n </DynamicTable>\n <PaginationFooter pagination={auditLogs?.pagination} />\n </ContentLayout>\n {query?.id && <Modal handleClose={() => setQuery({ id: null }, 'remove')} logId={query.id} />}\n </Main>\n );\n};\n\nexport default ListView;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport ListView from '../ListView';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.auditLogs.main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["data"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,mBAAmB,CAAC,EAAE,kBAAkB,mBAAmB;AACzD,QAAA,EAAE,QAAQ;AACV,QAAA,EAAE,WAAW;AACnB,QAAM,qBAAqB;AAC3B,QAAM,CAAC,EAAE,OAAO,IAAI,eAAe;AAEnC,QAAM,eAAe;AAAA,IACnB,kBAAkB;AAAA,IAClB,OAAO;AAAA,IACP,WAAW,MAAO;AAAA;AAAA,IAClB,SAAS,CAAC,UAAU,mBAAmB,EAAE,MAAM,WAAW,SAAS,MAAM,SAAS;AAAA,EAAA;AAG9E,QAAA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,IACT;AAAA,IACF,CAAC;AAAA,IACD;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,WAAW,KAAK,MAAO;AAAA;AAAA,IACzB;AAAA,EAAA;AAGI,QAAA;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,IACP;AAAA,IACF,CAAC,aAAa,MAAM;AAAA,IACpB,YAAY;AACV,YAAM,EAAE,KAAS,IAAA,MAAM,IAAI,qBAAqB;AAAA,QAC9C,QAAQ;AAAA,MAAA,CACT;AAEM,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,IACX;AAAA,EAAA;AAGK,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,WAAW,kBAAkB;AAAA,IAC7B,UAAU,oBAAoB;AAAA,EAAA;AAElC;ACtDA,MAAM,qBAAqB,MAAM;AACzB,QAAA,EAAE,eAAe;AAEjB,QAAA,kBAAkB,CAAC,UAAU;AAC3B,UAAA,OAAO,SAAS,KAAK;AAErB,UAAA,gBAAgB,WAAW,MAAM;AAAA,MACrC,WAAW;AAAA,IAAA,CACZ;AACK,UAAA,gBAAgB,WAAW,MAAM;AAAA,MACrC,WAAW;AAAA,MACX,WAAW;AAAA,IAAA,CACZ;AAEM,WAAA,GAAG,aAAa,KAAK,aAAa;AAAA,EAAA;AAGpC,SAAA;AACT;ACrBO,MAAM,cAAc;AAAA,EACzB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,gBAAgB;AAAA,EAChB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAEa,MAAA,oBAAoB,CAAC,UAAU;AACnC,SAAA,YAAY,KAAK,KAAK;AAC/B;AC5BA,MAAM,aAAa,CAAC,EAAE,aAAa,iBAAiB;AAClD,8BACG,MAAK,EAAA,WAAU,UAAS,YAAW,YAAW,KAAK,GAClD,UAAA;AAAA,IAAA,oBAAC,YAAW,EAAA,WAAU,cAAa,SAAQ,SACxC,UACH,aAAA;AAAA,IACC,oBAAA,YAAA,EAAW,WAAU,cAAc,UAAW,YAAA;AAAA,EACjD,EAAA,CAAA;AAEJ;AAEA,WAAW,YAAY;AAAA,EACrB,aAAa,UAAU,OAAO;AAAA,EAC9B,YAAY,UAAU,OAAO;AAC/B;ACTA,MAAM,aAAa,CAAC,EAAE,QAAQ,MAAM,oBAAoB;AAChD,QAAA,EAAE,kBAAkB;AAE1B,MAAI,WAAW,WAAW;AAEtB,WAAA,oBAAC,MAAK,EAAA,SAAS,GAAG,gBAAe,UAAS,YAAW,UACnD,UAAA,oBAAC,QAAO,EAAA,UAAA,qBAAA,CAAkB,EAC5B,CAAA;AAAA,EAEJ;AAEA,QAAM,EAAE,QAAQ,MAAM,QAAA,IAAY;AAElC,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAC,oBAAA,KAAA,EAAI,cAAc,GACjB,UAAA,oBAAC,cAAW,SAAQ,SAAQ,IAAG,SAC5B,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IAAA,CACjB,GACH,EACF,CAAA;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,aAAa;AAAA,QACb,cAAc;AAAA,QACd,cAAc;AAAA,QACd,YAAW;AAAA,QACX,WAAS;AAAA,QAET,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAa,cAAc;AAAA,gBACzB,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB;AAAA,cACD,YAAY;AAAA,gBACV;AAAA,kBACE,IAAI,kCAAkC,MAAM;AAAA,kBAC5C,gBAAgB,kBAAkB,MAAM;AAAA,gBAC1C;AAAA,gBACA,EAAE,OAAO,SAAS,MAAM;AAAA,cAC1B;AAAA,YAAA;AAAA,UACF;AAAA,UACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAa,cAAc;AAAA,gBACzB,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB;AAAA,cACD,YAAY;AAAA,YAAA;AAAA,UACd;AAAA,UACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAa,cAAc;AAAA,gBACzB,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB;AAAA,cACD,YAAY,MAAM,eAAe;AAAA,YAAA;AAAA,UACnC;AAAA,UACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAa,cAAc;AAAA,gBACzB,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB;AAAA,cACD,YAAY,MAAM,GAAG,SAAc,KAAA;AAAA,YAAA;AAAA,UACrC;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,QACtC,UAAQ;AAAA,QACR,OAAO,cAAc;AAAA,UACnB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IACH;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,WAAW,eAAe;AAAA,EACxB,MAAM,CAAC;AACT;AAEA,WAAW,YAAY;AAAA,EACrB,QAAQ,UAAU,MAAM,CAAC,QAAQ,WAAW,SAAS,SAAS,CAAC,EAAE;AAAA,EACjE,MAAM,UAAU,MAAM;AAAA,IACpB,QAAQ,UAAU;AAAA,IAClB,MAAM,UAAU;AAAA,IAChB,SAAS,UAAU;AAAA,IACnB,MAAM,UAAU;AAAA,EAAA,CACjB;AAAA,EACD,eAAe,UAAU,OAAO;AAClC;AC5FA,MAAM,QAAQ,CAAC,EAAE,aAAa,YAAY;AAClC,QAAA,EAAE,QAAQ;AAChB,QAAM,qBAAqB;AAErB,QAAA,gBAAgB,OAAO,OAAO;AAC5B,UAAA,EAAE,MAAAA,UAAS,MAAM,IAAI,qBAAqB,EAAE,EAAE;AAEpD,QAAI,CAACA,OAAM;AACH,YAAA,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEOA,WAAAA;AAAAA,EAAA;AAGT,QAAM,EAAE,MAAM,OAAO,IAAI,SAAS,CAAC,aAAa,KAAK,GAAG,MAAM,cAAc,KAAK,GAAG;AAAA,IAClF,UAAU;AACW,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,EAAE,IAAI,sBAAsB,gBAAgB,mBAAmB;AAAA,MAAA,CACzE;AACW;IACd;AAAA,EAAA,CACD;AAED,QAAM,kBAAkB;AACxB,QAAM,gBAAgB,OAAO,gBAAgB,KAAK,IAAI,IAAI;AAE1D,SACG,qBAAA,aAAA,EAAY,SAAS,aAAa,YAAW,SAC5C,UAAA;AAAA,IAAA,oBAAC,aAIC,EAAA,UAAA,oBAAC,aAAY,EAAA,OAAO,eAAe,IAAG,SACpC,UAAA,oBAAC,OAAM,EAAA,WAAS,MAAE,UAAA,cAAA,CAAc,EAClC,CAAA,GACF;AAAA,wBACC,WACC,EAAA,UAAA,oBAAC,cAAW,QAAgB,MAAY,cAA8B,CAAA,GACxE;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,MAAM,YAAY;AAAA,EAChB,aAAa,UAAU,KAAK;AAAA,EAC5B,OAAO,UAAU,OAAO;AAC1B;ACrDA,MAAM,mBAAmB,CAAC,EAAE,iBAAiB;AAEzC,SAAA,oBAAC,OAAI,YAAY,GACf,+BAAC,MAAK,EAAA,YAAW,YAAW,gBAAe,iBACzC,UAAA;AAAA,IAAA,oBAAC,kBAAiB,EAAA;AAAA,IAClB,oBAAC,sBAAmB,YAAwB;AAAA,EAAA,EAC9C,CAAA,EACF,CAAA;AAEJ;AAEA,iBAAiB,eAAe;AAAA,EAC9B,YAAY;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEA,iBAAiB,YAAY;AAAA,EAC3B,YAAY,UAAU,MAAM;AAAA,IAC1B,MAAM,UAAU;AAAA,IAChB,WAAW,UAAU;AAAA,IACrB,UAAU,UAAU;AAAA,IACpB,OAAO,UAAU;AAAA,EAAA,CAClB;AACH;ACrBA,MAAM,YAAY,CAAC,EAAE,SAAS,MAAM,kBAAkB;AAC9C,QAAA,EAAE,kBAAkB;AAC1B,QAAM,kBAAkB;AAExB,QAAM,eAAe,CAAC,EAAE,MAAM,OAAO,YAAY;AAC/C,QAAI,SAAS,QAAQ;AACnB,aAAO,gBAAgB,KAAK;AAAA,IAC9B;AAEA,QAAI,SAAS,UAAU;AACd,aAAA;AAAA,QACL;AAAA,UACE,IAAI,kCAAkC,KAAK;AAAA,UAC3C,gBAAgB,kBAAkB,KAAK;AAAA,QACzC;AAAA,QACA,EAAE,MAAM;AAAA,MAAA;AAAA,IAEZ;AAEA,WAAO,SAAS;AAAA,EAAA;AAGlB,SACG,oBAAA,OAAA,EACE,UAAK,KAAA,IAAI,CAAC,SAAS;AAEhB,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QAEE,GAAG,WAAW;AAAA,UACb,IAAI,MAAM,YAAY,KAAK,EAAE;AAAA,QAAA,CAC9B;AAAA,QAEA,UAAA;AAAA,UAAA,QAAQ,IAAI,CAAC,EAAE,KAAK,MAAM,oBAAoB;AAC7C,uCACG,IACC,EAAA,UAAA,oBAAC,YAAW,EAAA,WAAU,cACnB,UAAa,aAAA;AAAA,cACZ,MAAM;AAAA,cACN,OAAO,gBAAgB,cAAc,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI;AAAA,cAC5D,OAAO,KAAK,SAAS;AAAA,YAAA,CACtB,EACH,CAAA,KAPO,GAQT;AAAA,UAAA,CAEH;AAAA,8BACA,IAAI,EAAA,GAAG,iBACN,UAAC,oBAAA,MAAA,EAAK,gBAAe,OACnB,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS,MAAM,YAAY,KAAK,EAAE;AAAA,cAClC,cAAY;AAAA,gBACV,EAAE,IAAI,4BAA4B,gBAAgB,mBAAmB;AAAA,gBACrE,EAAE,QAAQ,GAAG,KAAK,MAAM,UAAU;AAAA,cACpC;AAAA,cACA,UAAQ;AAAA,cACR,0BAAO,KAAI,EAAA;AAAA,YAAA;AAAA,aAEf,EACF,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MA9BK,KAAK;AAAA,IAAA;AAAA,EAiCf,CAAA,EACH,CAAA;AAEJ;AAEA,UAAU,eAAe;AAAA,EACvB,MAAM,CAAC;AACT;AAEA,UAAU,YAAY;AAAA,EACpB,SAAS,UAAU,MAAM;AAAA,EACzB,MAAM,UAAU;AAAA,EAChB,aAAa,UAAU,KAAK;AAC9B;AC9EA,MAAM,iBAAiB,CAAC,EAAE,OAAO,SAAS,eAAe;AACjD,QAAA,EAAE,kBAAkB;AAC1B,QAAM,YAAY,cAAc;AAAA,IAC9B,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AAED,SACG,oBAAA,UAAA,EAAS,cAAY,WAAW,OAAc,UAC5C,UAAQ,QAAA,IAAI,CAAC,EAAE,OAAO,YAAA,MAAkB;AACvC,WACG,oBAAA,gBAAA,EAAiC,OAAO,aACtC,mBADkB,WAErB;AAAA,EAEH,CAAA,EACH,CAAA;AAEJ;AAEA,eAAe,eAAe;AAAA,EAC5B,OAAO;AACT;AAEA,eAAe,YAAY;AAAA,EACzB,OAAO,UAAU;AAAA,EACjB,SAAS,UAAU;AAAA,IACjB,UAAU,MAAM;AAAA,MACd,OAAO,UAAU,OAAO;AAAA,MACxB,aAAa,UAAU,OAAO;AAAA,IAC/B,CAAA,EAAE;AAAA,EAAA,EACH;AAAA,EACF,UAAU,UAAU,KAAK;AAC3B;ACnCA,MAAM,kBAAkB;AAAA,EACtB;AAAA,IACE,WAAW,EAAE,IAAI,6CAA6C,gBAAgB,KAAK;AAAA,IACnF,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,WAAW,EAAE,IAAI,6CAA6C,gBAAgB,SAAS;AAAA,IACvF,OAAO;AAAA,EACT;AACF;AAEA,MAAM,sBAAsB,CAAC,EAAE,eAAe,OAAO,mBAAmB;AACtE,QAAM,gBAAgB,OAAO,KAAK,WAAW,EAAE,IAAI,CAAC,WAAW;AACtD,WAAA;AAAA,MACL,OAAO;AAAA,QACL;AAAA,UACE,IAAI,kCAAkC,MAAM;AAAA,UAC5C,gBAAgB,kBAAkB,MAAM;AAAA,QAC1C;AAAA,QACA,EAAE,OAAO,OAAU;AAAA,MACrB;AAAA,MACA,aAAa;AAAA,IAAA;AAAA,EACf,CACD;AAED,QAAM,UAAU;AAAA,IACd;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA,QACT;AAAA,QACA,OAAO,cAAc;AAAA,UACnB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD,aAAa;AAAA,QACb,SAAS;AAAA,MACX;AAAA,MACA,aAAa,EAAE,MAAM,cAAc;AAAA,IACrC;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA,QACT,OAAO,cAAc;AAAA,UACnB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MACH;AAAA,MACA,aAAa,EAAE,MAAM,WAAW;AAAA,IAClC;AAAA,EAAA;AAGF,MAAI,gBAAgB,OAAO;AACnB,UAAA,yBAAyB,CAAC,SAAS;AACvC,UAAI,KAAK,UAAU;AACjB,eAAO,KAAK;AAAA,MACd;AAEI,UAAA,KAAK,aAAa,KAAK,UAAU;AAC5B,eAAA;AAAA,UACL;AAAA,YACE,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,WAAW,KAAK;AAAA,YAChB,UAAU,KAAK;AAAA,UACjB;AAAA,QAAA;AAAA,MAEJ;AAEA,aAAO,KAAK;AAAA,IAAA;AAGd,UAAM,cAAc,MAAM,IAAI,CAAC,SAAS;AAC/B,aAAA;AAAA,QACL,OAAO,uBAAuB,IAAI;AAAA;AAAA,QAElC,aAAa,KAAK,GAAG,SAAS;AAAA,MAAA;AAAA,IAChC,CACD;AAEM,WAAA;AAAA,MACL,GAAG;AAAA,MACH;AAAA,QACE,MAAM;AAAA,QACN,WAAW;AAAA,UACT;AAAA,UACA,OAAO,cAAc;AAAA,YACnB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UACD,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,aAAa,EAAE,MAAM,YAAY,WAAW,EAAE,MAAM,OAAO;AAAA,MAC7D;AAAA,IAAA;AAAA,EAEJ;AAEO,SAAA;AACT;ACxGA,MAAM,eAAe;AAAA,EACnB;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,IACL,WAAW;AAAA,MACT,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,IACL,WAAW;AAAA,MACT,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,MACT,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,IACA,eAAe,CAAC,SAAU,OAAO,KAAK,cAAc;AAAA,EACtD;AACF;ACJA,MAAM,WAAW,MAAM;AACf,QAAA,EAAE,kBAAkB;AACpB,QAAA,cAAc,YAAY,sBAAsB;AAEhD,QAAA;AAAA,IACJ,gBAAgB,EAAE,SAAS,kBAAkB,aAAa;AAAA,MACxD,QAAQ;AAAA,IACV,GAAG,YAAY,SAAS;AAAA,IACxB,WAAW,YAAY,SAAS,MAAM;AAAA,EAAA,CACvC;AAED,QAAM,CAAC,EAAE,MAAA,GAAS,QAAQ,IAAI,eAAe;AAC7C,QAAM,EAAE,WAAW,OAAO,WAAW,SAAA,IAAa,iBAAiB;AAAA,IACjE;AAAA,IACA;AAAA,EAAA,CACD;AAEoB;AAErB,QAAM,mBAAmB,oBAAoB,EAAE,eAAe,OAAO,cAAc;AAEnF,QAAM,QAAQ,cAAc;AAAA,IAC1B,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AAED,QAAM,UAAU,aAAa,IAAI,CAAC,YAAY;AAAA,IAC5C,GAAG;AAAA,IACH,WAAW;AAAA,MACT,GAAG,OAAO;AAAA,MACV,OAAO,cAAc,OAAO,UAAU,KAAK;AAAA,IAC7C;AAAA,EACA,EAAA;AAEF,MAAI,UAAU;AACZ,WACG,oBAAA,QAAA,EACC,UAAC,oBAAA,eAAA,EACC,UAAC,oBAAA,KAAA,EAAI,YAAY,GACf,UAAC,oBAAA,iBAAA,CAAA,CAAgB,EACnB,CAAA,GACF,EACF,CAAA;AAAA,EAEJ;AAGE,SAAA,qBAAC,MAAK,EAAA,aAAW,WACf,UAAA;AAAA,IAAC,oBAAA,mBAAA,EAAkB,MAAM,MAAO,CAAA;AAAA,IAChC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,UAAU,cAAc;AAAA,UACtB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IACH;AAAA,wBACC,cAAa,EAAA,cAAe,oBAAA,SAAA,EAAQ,iBAAoC,CAAA,GAAI;AAAA,IAC7E,qBAAC,eAAc,EAAA,SAAS,kBACtB,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ;AAAA,UACA,MAAM,WAAW,WAAW,CAAC;AAAA,UAC7B,iBAAe;AAAA,UACf;AAAA,UAEA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,MAAM,WAAW,WAAW,CAAC;AAAA,cAC7B,aAAa,CAAC,OAAO,SAAS,EAAE,IAAI;AAAA,YAAA;AAAA,UACtC;AAAA,QAAA;AAAA,MACF;AAAA,MACC,oBAAA,kBAAA,EAAiB,YAAY,WAAW,WAAY,CAAA;AAAA,IAAA,GACvD;AAAA,IACC,OAAO,MAAO,oBAAA,OAAA,EAAM,aAAa,MAAM,SAAS,EAAE,IAAI,KAAQ,GAAA,QAAQ,GAAG,OAAO,MAAM,IAAI;AAAA,EAC7F,EAAA,CAAA;AAEJ;ACnGA,MAAM,oBAAoB,MAAM;AACxB,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,wBAAqB,aAAa,YAAY,SAAS,UAAU,MAChE,UAAC,oBAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
|
|
@@ -6,7 +6,7 @@ import isEqual from "lodash/isEqual";
|
|
|
6
6
|
import { useIntl } from "react-intl";
|
|
7
7
|
import { useSelector } from "react-redux";
|
|
8
8
|
import { u as useAdminRoles } from "./useAdminRoles-7ab5d521.mjs";
|
|
9
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
9
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-2cfb41e2.mjs";
|
|
10
10
|
import * as React from "react";
|
|
11
11
|
import produce from "immer";
|
|
12
12
|
import omit from "lodash/omit";
|
|
@@ -18,7 +18,7 @@ import { f as formatAPIErrors } from "./formatAPIErrors-db6ed675.mjs";
|
|
|
18
18
|
import "react-query";
|
|
19
19
|
import "semver/functions/lt";
|
|
20
20
|
import "semver/functions/valid";
|
|
21
|
-
import "./index-
|
|
21
|
+
import "./index-bef99193.mjs";
|
|
22
22
|
import "react-dom/client";
|
|
23
23
|
import "invariant";
|
|
24
24
|
import "lodash/isFunction";
|
|
@@ -390,4 +390,4 @@ export {
|
|
|
390
390
|
SingleSignOn,
|
|
391
391
|
ProtectedSSO as default
|
|
392
392
|
};
|
|
393
|
-
//# sourceMappingURL=index-
|
|
393
|
+
//# sourceMappingURL=index-9910aa5a.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-55a46be8.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOn/hooks/useSettingsForm.ts","../../ee/admin/src/pages/SettingsPage/pages/SingleSignOn/utils/schema.js","../../ee/admin/src/pages/SettingsPage/pages/SingleSignOn/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport {\n getYupInnerErrors,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n} from '@strapi/helper-plugin';\nimport produce from 'immer';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport set from 'lodash/set';\nimport { ValidationError } from 'yup';\n\nimport { formatAPIErrors } from '../../../../../../../../admin/src/utils/formatAPIErrors';\n\ninterface GetDataSucceedAction {\n type: 'GET_DATA_SUCCEEDED';\n data: {\n [key: string]: unknown;\n };\n fieldsToPick: string[];\n}\n\ninterface OnCancelAction {\n type: 'ON_CANCEL';\n}\n\ninterface OnChangeAction {\n type: 'ON_CHANGE';\n keys: string;\n value: unknown;\n}\n\ninterface OnSubmitAction {\n type: 'ON_SUBMIT';\n}\n\ninterface OnSubmitSucceedAction {\n type: 'ON_SUBMIT_SUCCEEDED';\n data: {\n [key: string]: unknown;\n };\n}\n\ninterface SetErrorsAction {\n type: 'SET_ERRORS';\n errors: Record<string, unknown>;\n}\n\ninterface InitialState {\n fieldsToPick: string[];\n formErrors?: Record<string, unknown>;\n initialData: Record<string, unknown>;\n isLoading: boolean;\n modifiedData: Record<string, unknown>;\n showHeaderButtonLoader: boolean;\n showHeaderLoader: boolean;\n}\n\nconst initialState: InitialState = {\n fieldsToPick: [],\n formErrors: {},\n initialData: {},\n isLoading: true,\n modifiedData: {},\n showHeaderButtonLoader: false,\n showHeaderLoader: true,\n};\n\ntype Action =\n | GetDataSucceedAction\n | OnCancelAction\n | OnChangeAction\n | OnSubmitAction\n | OnSubmitSucceedAction\n | SetErrorsAction;\n\nconst reducer = (state: typeof initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n draftState.isLoading = false;\n draftState.showHeaderLoader = false;\n draftState.initialData = pick(action.data, state.fieldsToPick);\n draftState.modifiedData = pick(action.data, state.fieldsToPick);\n break;\n }\n case 'ON_CANCEL': {\n draftState.modifiedData = state.initialData;\n draftState.formErrors = {};\n break;\n }\n case 'ON_CHANGE': {\n if (action.keys.includes('username') && !action.value) {\n set(draftState.modifiedData, action.keys.split('.'), null);\n } else {\n set(draftState.modifiedData, action.keys.split('.'), action.value);\n }\n break;\n }\n case 'ON_SUBMIT': {\n draftState.showHeaderButtonLoader = true;\n break;\n }\n case 'ON_SUBMIT_SUCCEEDED': {\n draftState.initialData = pick(action.data, state.fieldsToPick);\n draftState.modifiedData = pick(action.data, state.fieldsToPick);\n draftState.showHeaderButtonLoader = false;\n break;\n }\n case 'SET_ERRORS': {\n draftState.formErrors = action.errors;\n draftState.showHeaderButtonLoader = false;\n break;\n }\n default:\n return draftState;\n }\n });\n\nconst checkFormValidity = async (data: Record<string, unknown>, schema: any) => {\n let errors = null;\n\n try {\n await schema.validate(data, { abortEarly: false });\n } catch (err) {\n if (err instanceof ValidationError) {\n errors = getYupInnerErrors(err);\n }\n }\n\n return errors;\n};\n\n/**\n * TODO: refactor this, it's confusing and hard to read.\n * It's also only used in `Settings/pages/SingleSignOn` so it can\n * probably be deleted and everything written there...\n */\nexport const useSettingsForm = (\n schema: Record<string, unknown>,\n cbSuccess: (data: any) => void,\n fieldsToPick: string[]\n) => {\n const [\n { formErrors, initialData, isLoading, modifiedData, showHeaderButtonLoader, showHeaderLoader },\n dispatch,\n ] = React.useReducer(reducer, { ...initialState, fieldsToPick });\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n\n const { get, put } = useFetchClient();\n\n React.useEffect(() => {\n const getData = async () => {\n try {\n const {\n data: { data },\n } = await get('/admin/providers/options');\n\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n fieldsToPick,\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n }\n };\n\n getData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleCancel = () => {\n dispatch({\n type: 'ON_CANCEL',\n });\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: string; value?: unknown };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n const setField = (fieldName: string, value: unknown) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: fieldName,\n value,\n });\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n\n const errors = await checkFormValidity(modifiedData, schema);\n\n dispatch({\n type: 'SET_ERRORS',\n errors: errors || {},\n });\n\n if (!errors) {\n try {\n // @ts-expect-error - context assertation\n lockApp();\n\n dispatch({\n type: 'ON_SUBMIT',\n });\n const cleanedData = omit(modifiedData, ['confirmPassword', 'registrationToken']);\n\n if (cleanedData.roles) {\n // @ts-expect-error hooks needs refactoring anyways\n cleanedData.roles = cleanedData.roles.map((role) => role.id);\n }\n if (cleanedData.ssoLockedRoles) {\n // @ts-expect-error hooks needs refactoring anyways\n cleanedData.ssoLockedRoles = [...new Set(cleanedData.ssoLockedRoles)];\n }\n\n const {\n data: { data },\n } = await put('/admin/providers/options', cleanedData);\n\n cbSuccess(data);\n\n dispatch({\n type: 'ON_SUBMIT_SUCCEEDED',\n data,\n });\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (err) {\n // @ts-expect-error hooks needs refactoring anyways\n const data = err?.response?.payload ?? { data: {} };\n\n if (!!data?.data && typeof data.data === 'string') {\n toggleNotification({\n type: 'warning',\n message: data.data,\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: data.message,\n });\n }\n\n const apiErrors = formatAPIErrors(data);\n\n dispatch({\n type: 'SET_ERRORS',\n errors: apiErrors,\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n }\n };\n\n return [\n { formErrors, initialData, isLoading, modifiedData, showHeaderButtonLoader, showHeaderLoader },\n dispatch,\n { handleCancel, handleChange, handleSubmit, setField },\n ] as const;\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport default schema;\n","import * as React from 'react';\n\nimport {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../../../admin/src/selectors';\n\nimport { useSettingsForm } from './hooks/useSettingsForm';\nimport schema from './utils/schema';\n\nexport const SingleSignOn = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings.sso,\n readRoles: permissions.settings.roles.read,\n });\n\n const [\n { formErrors, initialData, isLoading: isLoadingForm, modifiedData, showHeaderButtonLoader },\n ,\n { handleChange, handleSubmit },\n ] = useSettingsForm(schema, () => {}, ['autoRegister', 'defaultRole', 'ssoLockedRoles']);\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n enabled: canReadRoles,\n });\n\n const isLoading = isLoadingPermissions || isLoadingRoles || isLoadingForm;\n // TODO: focus() first error field, but it looks like that requires refactoring from useSettingsForm to Formik\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main tabIndex={-1}>\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Button\n data-testid=\"save-button\"\n disabled={isEqual(initialData, modifiedData)}\n loading={showHeaderButtonLoader}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({ id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isLoading ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} m={6} s={12}>\n <ToggleInput\n aria-label=\"autoRegister\"\n data-testid=\"autoRegister\"\n disabled={!canUpdate}\n checked={modifiedData.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoRegister', value: e.target.checked },\n });\n }}\n />\n </GridItem>\n <GridItem col={6} m={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n formErrors.defaultRole\n ? formatMessage({\n id: formErrors.defaultRole.id,\n defaultMessage: formErrors.defaultRole.id,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) => {\n handleChange({ target: { name: 'defaultRole', value } });\n }}\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={modifiedData.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} m={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n formErrors.ssoLockedRoles\n ? formatMessage({\n id: formErrors.ssoLockedRoles.id,\n defaultMessage: formErrors.ssoLockedRoles.id,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) => {\n handleChange({ target: { name: 'ssoLockedRoles', value } });\n }}\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => {\n handleChange({ target: { name: 'ssoLockedRoles' } });\n }}\n value={modifiedData.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </form>\n </Main>\n </Layout>\n );\n};\n\nconst ProtectedSSO = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.sso.main}>\n <SingleSignOn />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedSSO;\n"],"names":["schema"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-9910aa5a.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOn/hooks/useSettingsForm.ts","../../ee/admin/src/pages/SettingsPage/pages/SingleSignOn/utils/schema.js","../../ee/admin/src/pages/SettingsPage/pages/SingleSignOn/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport {\n getYupInnerErrors,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n} from '@strapi/helper-plugin';\nimport produce from 'immer';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport set from 'lodash/set';\nimport { ValidationError } from 'yup';\n\nimport { formatAPIErrors } from '../../../../../../../../admin/src/utils/formatAPIErrors';\n\ninterface GetDataSucceedAction {\n type: 'GET_DATA_SUCCEEDED';\n data: {\n [key: string]: unknown;\n };\n fieldsToPick: string[];\n}\n\ninterface OnCancelAction {\n type: 'ON_CANCEL';\n}\n\ninterface OnChangeAction {\n type: 'ON_CHANGE';\n keys: string;\n value: unknown;\n}\n\ninterface OnSubmitAction {\n type: 'ON_SUBMIT';\n}\n\ninterface OnSubmitSucceedAction {\n type: 'ON_SUBMIT_SUCCEEDED';\n data: {\n [key: string]: unknown;\n };\n}\n\ninterface SetErrorsAction {\n type: 'SET_ERRORS';\n errors: Record<string, unknown>;\n}\n\ninterface InitialState {\n fieldsToPick: string[];\n formErrors?: Record<string, unknown>;\n initialData: Record<string, unknown>;\n isLoading: boolean;\n modifiedData: Record<string, unknown>;\n showHeaderButtonLoader: boolean;\n showHeaderLoader: boolean;\n}\n\nconst initialState: InitialState = {\n fieldsToPick: [],\n formErrors: {},\n initialData: {},\n isLoading: true,\n modifiedData: {},\n showHeaderButtonLoader: false,\n showHeaderLoader: true,\n};\n\ntype Action =\n | GetDataSucceedAction\n | OnCancelAction\n | OnChangeAction\n | OnSubmitAction\n | OnSubmitSucceedAction\n | SetErrorsAction;\n\nconst reducer = (state: typeof initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n draftState.isLoading = false;\n draftState.showHeaderLoader = false;\n draftState.initialData = pick(action.data, state.fieldsToPick);\n draftState.modifiedData = pick(action.data, state.fieldsToPick);\n break;\n }\n case 'ON_CANCEL': {\n draftState.modifiedData = state.initialData;\n draftState.formErrors = {};\n break;\n }\n case 'ON_CHANGE': {\n if (action.keys.includes('username') && !action.value) {\n set(draftState.modifiedData, action.keys.split('.'), null);\n } else {\n set(draftState.modifiedData, action.keys.split('.'), action.value);\n }\n break;\n }\n case 'ON_SUBMIT': {\n draftState.showHeaderButtonLoader = true;\n break;\n }\n case 'ON_SUBMIT_SUCCEEDED': {\n draftState.initialData = pick(action.data, state.fieldsToPick);\n draftState.modifiedData = pick(action.data, state.fieldsToPick);\n draftState.showHeaderButtonLoader = false;\n break;\n }\n case 'SET_ERRORS': {\n draftState.formErrors = action.errors;\n draftState.showHeaderButtonLoader = false;\n break;\n }\n default:\n return draftState;\n }\n });\n\nconst checkFormValidity = async (data: Record<string, unknown>, schema: any) => {\n let errors = null;\n\n try {\n await schema.validate(data, { abortEarly: false });\n } catch (err) {\n if (err instanceof ValidationError) {\n errors = getYupInnerErrors(err);\n }\n }\n\n return errors;\n};\n\n/**\n * TODO: refactor this, it's confusing and hard to read.\n * It's also only used in `Settings/pages/SingleSignOn` so it can\n * probably be deleted and everything written there...\n */\nexport const useSettingsForm = (\n schema: Record<string, unknown>,\n cbSuccess: (data: any) => void,\n fieldsToPick: string[]\n) => {\n const [\n { formErrors, initialData, isLoading, modifiedData, showHeaderButtonLoader, showHeaderLoader },\n dispatch,\n ] = React.useReducer(reducer, { ...initialState, fieldsToPick });\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n\n const { get, put } = useFetchClient();\n\n React.useEffect(() => {\n const getData = async () => {\n try {\n const {\n data: { data },\n } = await get('/admin/providers/options');\n\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n fieldsToPick,\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n }\n };\n\n getData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleCancel = () => {\n dispatch({\n type: 'ON_CANCEL',\n });\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: string; value?: unknown };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n const setField = (fieldName: string, value: unknown) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: fieldName,\n value,\n });\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n\n const errors = await checkFormValidity(modifiedData, schema);\n\n dispatch({\n type: 'SET_ERRORS',\n errors: errors || {},\n });\n\n if (!errors) {\n try {\n // @ts-expect-error - context assertation\n lockApp();\n\n dispatch({\n type: 'ON_SUBMIT',\n });\n const cleanedData = omit(modifiedData, ['confirmPassword', 'registrationToken']);\n\n if (cleanedData.roles) {\n // @ts-expect-error hooks needs refactoring anyways\n cleanedData.roles = cleanedData.roles.map((role) => role.id);\n }\n if (cleanedData.ssoLockedRoles) {\n // @ts-expect-error hooks needs refactoring anyways\n cleanedData.ssoLockedRoles = [...new Set(cleanedData.ssoLockedRoles)];\n }\n\n const {\n data: { data },\n } = await put('/admin/providers/options', cleanedData);\n\n cbSuccess(data);\n\n dispatch({\n type: 'ON_SUBMIT_SUCCEEDED',\n data,\n });\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (err) {\n // @ts-expect-error hooks needs refactoring anyways\n const data = err?.response?.payload ?? { data: {} };\n\n if (!!data?.data && typeof data.data === 'string') {\n toggleNotification({\n type: 'warning',\n message: data.data,\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: data.message,\n });\n }\n\n const apiErrors = formatAPIErrors(data);\n\n dispatch({\n type: 'SET_ERRORS',\n errors: apiErrors,\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n }\n };\n\n return [\n { formErrors, initialData, isLoading, modifiedData, showHeaderButtonLoader, showHeaderLoader },\n dispatch,\n { handleCancel, handleChange, handleSubmit, setField },\n ] as const;\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport default schema;\n","import * as React from 'react';\n\nimport {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../../../admin/src/selectors';\n\nimport { useSettingsForm } from './hooks/useSettingsForm';\nimport schema from './utils/schema';\n\nexport const SingleSignOn = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings.sso,\n readRoles: permissions.settings.roles.read,\n });\n\n const [\n { formErrors, initialData, isLoading: isLoadingForm, modifiedData, showHeaderButtonLoader },\n ,\n { handleChange, handleSubmit },\n ] = useSettingsForm(schema, () => {}, ['autoRegister', 'defaultRole', 'ssoLockedRoles']);\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n enabled: canReadRoles,\n });\n\n const isLoading = isLoadingPermissions || isLoadingRoles || isLoadingForm;\n // TODO: focus() first error field, but it looks like that requires refactoring from useSettingsForm to Formik\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main tabIndex={-1}>\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Button\n data-testid=\"save-button\"\n disabled={isEqual(initialData, modifiedData)}\n loading={showHeaderButtonLoader}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({ id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isLoading ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} m={6} s={12}>\n <ToggleInput\n aria-label=\"autoRegister\"\n data-testid=\"autoRegister\"\n disabled={!canUpdate}\n checked={modifiedData.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoRegister', value: e.target.checked },\n });\n }}\n />\n </GridItem>\n <GridItem col={6} m={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n formErrors.defaultRole\n ? formatMessage({\n id: formErrors.defaultRole.id,\n defaultMessage: formErrors.defaultRole.id,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) => {\n handleChange({ target: { name: 'defaultRole', value } });\n }}\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={modifiedData.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} m={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n formErrors.ssoLockedRoles\n ? formatMessage({\n id: formErrors.ssoLockedRoles.id,\n defaultMessage: formErrors.ssoLockedRoles.id,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) => {\n handleChange({ target: { name: 'ssoLockedRoles', value } });\n }}\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => {\n handleChange({ target: { name: 'ssoLockedRoles' } });\n }}\n value={modifiedData.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </form>\n </Main>\n </Layout>\n );\n};\n\nconst ProtectedSSO = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.sso.main}>\n <SingleSignOn />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedSSO;\n"],"names":["schema"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useAPIErrorHandler, useNotification, useFocusWhenNavigate, useRBAC, useFetchClient, SettingsPageTitle, LinkButton, LoadingIndicatorPage, onRowClick, stopPropagation, ConfirmDialog, CheckPagePermissions } from "@strapi/helper-plugin";
|
|
3
3
|
import { useSelector } from "react-redux";
|
|
4
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
4
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-2cfb41e2.mjs";
|
|
5
5
|
import { useState, useEffect } from "react";
|
|
6
6
|
import { useNotifyAT, Layout, Main, HeaderLayout, ActionLayout, Typography, Button, ContentLayout, Box, Table, TFooter, Thead, Tr, Th, BaseCheckbox, VisuallyHidden, Tbody, Td, Flex, Switch, IconButton, EmptyStateLayout } from "@strapi/design-system";
|
|
7
7
|
import { Plus, Trash, Pencil, EmptyDocuments } from "@strapi/icons";
|
|
@@ -10,7 +10,7 @@ import { useQuery, useMutation } from "react-query";
|
|
|
10
10
|
import { useHistory, useLocation } from "react-router-dom";
|
|
11
11
|
import "semver/functions/lt";
|
|
12
12
|
import "semver/functions/valid";
|
|
13
|
-
import "./index-
|
|
13
|
+
import "./index-bef99193.mjs";
|
|
14
14
|
import "react-dom/client";
|
|
15
15
|
import "invariant";
|
|
16
16
|
import "lodash/isFunction";
|
|
@@ -335,4 +335,4 @@ const ProtectedListView = () => {
|
|
|
335
335
|
export {
|
|
336
336
|
ProtectedListView as default
|
|
337
337
|
};
|
|
338
|
-
//# sourceMappingURL=index-
|
|
338
|
+
//# sourceMappingURL=index-996f7ad1.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-df043af5.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/ProtectedListView/index.js"],"sourcesContent":["/* eslint-disable no-nested-ternary */\nimport React, { useEffect, useState } from 'react';\n\nimport {\n ActionLayout,\n BaseCheckbox,\n Box,\n Button,\n ContentLayout,\n EmptyStateLayout,\n Flex,\n HeaderLayout,\n IconButton,\n Layout,\n Main,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n LinkButton,\n LoadingIndicatorPage,\n onRowClick,\n SettingsPageTitle,\n stopPropagation,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { EmptyDocuments, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nconst ListView = () => {\n const [showModal, setShowModal] = useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = useState([]);\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n useFocusWhenNavigate();\n const { push } = useHistory();\n const { pathname } = useLocation();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions.settings.webhooks);\n const { get, post, put } = useFetchClient();\n const { notifyStatus } = useNotifyAT();\n\n const QUERY_KEY = 'webhooks';\n const {\n isLoading: isWebhooksLoading,\n data: webhooks,\n error: webhooksError,\n refetch: refetchWebhooks,\n } = useQuery(QUERY_KEY, async () => {\n const {\n data: { data },\n } = await get('/admin/webhooks');\n\n return data;\n });\n\n useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const deleteMutation = useMutation(\n async () => {\n await post('/admin/webhooks/batch-delete', {\n ids: webhooksToDelete,\n });\n },\n {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n setShowModal(false);\n },\n onSuccess() {\n setWebhooksToDelete([]);\n setShowModal(false);\n refetchWebhooks();\n },\n }\n );\n\n const enabledMutation = useMutation(\n async ({ isEnabled, id }) => {\n const { id: _, ...webhook } = webhooks.find((webhook) => webhook.id === id) ?? {};\n const body = {\n ...webhook,\n isEnabled,\n };\n\n await put(`/admin/webhooks/${id}`, body);\n },\n {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n onSuccess() {\n refetchWebhooks();\n },\n }\n );\n\n const confirmDelete = () => deleteMutation.mutate();\n\n const selectAllCheckbox = (selected) =>\n selected ? setWebhooksToDelete(webhooks.map((webhook) => webhook.id)) : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected, id) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const goTo = (to) => push(`${pathname}/${to}`);\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"Webhooks\" />\n <Main aria-busy={isLoading}>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton startIcon={<Plus />} variant=\"default\" to={`${pathname}/create`} size=\"S\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <ActionLayout\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <ContentLayout>\n {isLoading ? (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n ) : numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter onClick={() => (canCreate ? goTo('create') : {})} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n indeterminate={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n }\n value={webhooksToDeleteLength === numberOfWebhooks}\n onValueChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks.map((webhook) => (\n <Tr\n key={webhook.id}\n {...onRowClick({\n fn: () => goTo(webhook.id),\n condition: canUpdate,\n })}\n >\n <Td {...stopPropagation}>\n <BaseCheckbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n value={webhooksToDelete?.includes(webhook.id)}\n onValueChange={(selected) => selectOneCheckbox(selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n selected={webhook.isEnabled}\n onChange={(e) => {\n e.stopPropagation();\n enabledMutation.mutate({\n isEnabled: !webhook.isEnabled,\n id: webhook.id,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n icon={<Pencil />}\n noBorder\n />\n )}\n {canDelete && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setWebhooksToDelete([webhook.id]);\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n icon={<Trash />}\n noBorder\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n <Button\n variant=\"secondary\"\n startIcon={<Plus />}\n onClick={() => (canCreate ? goTo('create') : {})}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </Button>\n }\n />\n )}\n </ContentLayout>\n </Main>\n <ConfirmDialog\n isOpen={showModal}\n onToggleDialog={() => setShowModal((prev) => !prev)}\n onConfirm={confirmDelete}\n isConfirmButtonLoading={deleteMutation.isLoading}\n />\n </Layout>\n );\n};\n\nexport default ListView;\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 ProtectedListView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.webhooks.main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListView;\n"],"names":["webhook"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-996f7ad1.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/ProtectedListView/index.js"],"sourcesContent":["/* eslint-disable no-nested-ternary */\nimport React, { useEffect, useState } from 'react';\n\nimport {\n ActionLayout,\n BaseCheckbox,\n Box,\n Button,\n ContentLayout,\n EmptyStateLayout,\n Flex,\n HeaderLayout,\n IconButton,\n Layout,\n Main,\n Switch,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n LinkButton,\n LoadingIndicatorPage,\n onRowClick,\n SettingsPageTitle,\n stopPropagation,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { EmptyDocuments, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nconst ListView = () => {\n const [showModal, setShowModal] = useState(false);\n const [webhooksToDelete, setWebhooksToDelete] = useState([]);\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n useFocusWhenNavigate();\n const { push } = useHistory();\n const { pathname } = useLocation();\n\n const {\n isLoading: isRBACLoading,\n allowedActions: { canCreate, canUpdate, canDelete },\n } = useRBAC(permissions.settings.webhooks);\n const { get, post, put } = useFetchClient();\n const { notifyStatus } = useNotifyAT();\n\n const QUERY_KEY = 'webhooks';\n const {\n isLoading: isWebhooksLoading,\n data: webhooks,\n error: webhooksError,\n refetch: refetchWebhooks,\n } = useQuery(QUERY_KEY, async () => {\n const {\n data: { data },\n } = await get('/admin/webhooks');\n\n return data;\n });\n\n useEffect(() => {\n if (webhooksError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhooksError),\n });\n\n return;\n }\n if (webhooks) {\n notifyStatus(\n formatMessage({\n id: 'Settings.webhooks.list.loading.success',\n defaultMessage: 'Webhooks have been loaded',\n })\n );\n }\n }, [webhooks, webhooksError, toggleNotification, formatMessage, notifyStatus, formatAPIError]);\n\n const deleteMutation = useMutation(\n async () => {\n await post('/admin/webhooks/batch-delete', {\n ids: webhooksToDelete,\n });\n },\n {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n setShowModal(false);\n },\n onSuccess() {\n setWebhooksToDelete([]);\n setShowModal(false);\n refetchWebhooks();\n },\n }\n );\n\n const enabledMutation = useMutation(\n async ({ isEnabled, id }) => {\n const { id: _, ...webhook } = webhooks.find((webhook) => webhook.id === id) ?? {};\n const body = {\n ...webhook,\n isEnabled,\n };\n\n await put(`/admin/webhooks/${id}`, body);\n },\n {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n onSuccess() {\n refetchWebhooks();\n },\n }\n );\n\n const confirmDelete = () => deleteMutation.mutate();\n\n const selectAllCheckbox = (selected) =>\n selected ? setWebhooksToDelete(webhooks.map((webhook) => webhook.id)) : setWebhooksToDelete([]);\n\n const selectOneCheckbox = (selected, id) =>\n selected\n ? setWebhooksToDelete((prev) => [...prev, id])\n : setWebhooksToDelete((prev) => prev.filter((webhookId) => webhookId !== id));\n\n const goTo = (to) => push(`${pathname}/${to}`);\n\n const isLoading = isRBACLoading || isWebhooksLoading;\n const numberOfWebhooks = webhooks?.length ?? 0;\n const webhooksToDeleteLength = webhooksToDelete.length;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"Webhooks\" />\n <Main aria-busy={isLoading}>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' })}\n subtitle={formatMessage({\n id: 'Settings.webhooks.list.description',\n defaultMessage: 'Get POST changes notifications',\n })}\n primaryAction={\n canCreate &&\n !isLoading && (\n <LinkButton startIcon={<Plus />} variant=\"default\" to={`${pathname}/create`} size=\"S\">\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </LinkButton>\n )\n }\n />\n {webhooksToDeleteLength > 0 && canDelete && (\n <ActionLayout\n startActions={\n <>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.webhooks.to.delete',\n defaultMessage:\n '{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected',\n },\n { webhooksToDeleteLength }\n )}\n </Typography>\n <Button\n onClick={() => setShowModal(true)}\n startIcon={<Trash />}\n size=\"L\"\n variant=\"danger-light\"\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n </>\n }\n />\n )}\n <ContentLayout>\n {isLoading ? (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n ) : numberOfWebhooks > 0 ? (\n <Table\n colCount={5}\n rowCount={numberOfWebhooks + 1}\n footer={\n <TFooter onClick={() => (canCreate ? goTo('create') : {})} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </TFooter>\n }\n >\n <Thead>\n <Tr>\n <Th>\n <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n indeterminate={\n webhooksToDeleteLength > 0 && webhooksToDeleteLength < numberOfWebhooks\n }\n value={webhooksToDeleteLength === numberOfWebhooks}\n onValueChange={selectAllCheckbox}\n />\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th width=\"60%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.form.url',\n defaultMessage: 'URL',\n })}\n </Typography>\n </Th>\n <Th width=\"20%\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.list.th.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {webhooks.map((webhook) => (\n <Tr\n key={webhook.id}\n {...onRowClick({\n fn: () => goTo(webhook.id),\n condition: canUpdate,\n })}\n >\n <Td {...stopPropagation}>\n <BaseCheckbox\n aria-label={`${formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n })} ${webhook.name}`}\n value={webhooksToDelete?.includes(webhook.id)}\n onValueChange={(selected) => selectOneCheckbox(selected, webhook.id)}\n name=\"select\"\n />\n </Td>\n <Td>\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {webhook.name}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{webhook.url}</Typography>\n </Td>\n <Td>\n <Flex>\n <Switch\n onLabel={formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })}\n offLabel={formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n label={`${webhook.name} ${formatMessage({\n id: 'Settings.webhooks.list.th.status',\n defaultMessage: 'Status',\n })}`}\n selected={webhook.isEnabled}\n onChange={(e) => {\n e.stopPropagation();\n enabledMutation.mutate({\n isEnabled: !webhook.isEnabled,\n id: webhook.id,\n });\n }}\n visibleLabels\n />\n </Flex>\n </Td>\n <Td>\n <Flex gap={1}>\n {canUpdate && (\n <IconButton\n label={formatMessage({\n id: 'Settings.webhooks.events.update',\n defaultMessage: 'Update',\n })}\n icon={<Pencil />}\n noBorder\n />\n )}\n {canDelete && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n setWebhooksToDelete([webhook.id]);\n setShowModal(true);\n }}\n label={formatMessage({\n id: 'Settings.webhooks.events.delete',\n defaultMessage: 'Delete webhook',\n })}\n icon={<Trash />}\n noBorder\n />\n )}\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"160px\" />}\n content={formatMessage({\n id: 'Settings.webhooks.list.empty.description',\n defaultMessage: 'No webhooks found',\n })}\n action={\n <Button\n variant=\"secondary\"\n startIcon={<Plus />}\n onClick={() => (canCreate ? goTo('create') : {})}\n >\n {formatMessage({\n id: 'Settings.webhooks.list.button.add',\n defaultMessage: 'Create new webhook',\n })}\n </Button>\n }\n />\n )}\n </ContentLayout>\n </Main>\n <ConfirmDialog\n isOpen={showModal}\n onToggleDialog={() => setShowModal((prev) => !prev)}\n onConfirm={confirmDelete}\n isConfirmButtonLoading={deleteMutation.isLoading}\n />\n </Layout>\n );\n};\n\nexport default ListView;\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 ProtectedListView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.webhooks.main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListView;\n"],"names":["webhook"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { Plus, Loader as Loader$1, Check, Cross, Play, ArrowLeft } from "@strapi
|
|
|
10
10
|
import { useFormikContext, FieldArray, Field, useFormik, FormikProvider } from "formik";
|
|
11
11
|
import PropTypes from "prop-types";
|
|
12
12
|
import { useIntl } from "react-intl";
|
|
13
|
-
import { p as useEnterprise } from "./index-
|
|
13
|
+
import { p as useEnterprise } from "./index-bef99193.mjs";
|
|
14
14
|
import styled from "styled-components";
|
|
15
15
|
import * as yup from "yup";
|
|
16
16
|
const formatValue = (value) => value.reduce((acc, curr) => {
|
|
@@ -570,7 +570,7 @@ const WebhookForm = ({
|
|
|
570
570
|
const [showTriggerResponse, setShowTriggerResponse] = useState(false);
|
|
571
571
|
const EventTable2 = useEnterprise(
|
|
572
572
|
EventTableCE,
|
|
573
|
-
async () => (await import("./index-
|
|
573
|
+
async () => (await import("./index-7a1a0c5c.mjs")).EventTableEE
|
|
574
574
|
);
|
|
575
575
|
const mapHeaders = (headers) => {
|
|
576
576
|
if (!Object.keys(headers).length) {
|
|
@@ -823,4 +823,4 @@ export {
|
|
|
823
823
|
EditView as E,
|
|
824
824
|
EventTable as a
|
|
825
825
|
};
|
|
826
|
-
//# sourceMappingURL=index-
|
|
826
|
+
//# sourceMappingURL=index-9b3107a4.mjs.map
|