@strapi/admin 4.15.5-alpha.0 → 4.15.5-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AuthenticatedApp-f7762ffc.js → AuthenticatedApp-4b160235.js} +21 -21
- package/dist/_chunks/{AuthenticatedApp-f7762ffc.js.map → AuthenticatedApp-4b160235.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-cdd2864d.mjs → AuthenticatedApp-fa931d1d.mjs} +21 -21
- package/dist/_chunks/{AuthenticatedApp-cdd2864d.mjs.map → AuthenticatedApp-fa931d1d.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-b8295a09.mjs → HomePage-8e98be60.mjs} +4 -4
- package/dist/_chunks/{HomePage-b8295a09.mjs.map → HomePage-8e98be60.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-b616b5dd.mjs → HomePage-9bda39b5.mjs} +4 -4
- package/dist/_chunks/{HomePage-b616b5dd.mjs.map → HomePage-9bda39b5.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-1d4bec73.js → HomePage-b6967648.js} +4 -4
- package/dist/_chunks/{HomePage-1d4bec73.js.map → HomePage-b6967648.js.map} +1 -1
- package/dist/_chunks/{HomePage-71ca4441.js → HomePage-b91d1592.js} +4 -4
- package/dist/_chunks/{HomePage-71ca4441.js.map → HomePage-b91d1592.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-38e390ab.js → InstalledPluginsPage-d4b90e9c.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-38e390ab.js.map → InstalledPluginsPage-d4b90e9c.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-b5010373.mjs → InstalledPluginsPage-ee6d69b0.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-b5010373.mjs.map → InstalledPluginsPage-ee6d69b0.mjs.map} +1 -1
- package/dist/_chunks/{Login-37c8f863.mjs → Login-4fc5dcbb.mjs} +2 -2
- package/dist/_chunks/{Login-37c8f863.mjs.map → Login-4fc5dcbb.mjs.map} +1 -1
- package/dist/_chunks/{Login-6400aa3b.js → Login-5fbf37c3.js} +2 -2
- package/dist/_chunks/{Login-6400aa3b.js.map → Login-5fbf37c3.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-4c8d674b.mjs → MarketplacePage-ec9bf1db.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-4c8d674b.mjs.map → MarketplacePage-ec9bf1db.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-f01cf836.js → MarketplacePage-ff0d02c6.js} +3 -3
- package/dist/_chunks/{MarketplacePage-f01cf836.js.map → MarketplacePage-ff0d02c6.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-a970034d.js → ProfilePage-96a8404e.js} +56 -8
- package/dist/_chunks/ProfilePage-96a8404e.js.map +1 -0
- package/dist/_chunks/{ProfilePage-7c3e5ad6.mjs → ProfilePage-caeace8c.mjs} +56 -8
- package/dist/_chunks/ProfilePage-caeace8c.mjs.map +1 -0
- package/dist/_chunks/{build-0fb2b1db.js → build-b285bccd.js} +2 -2
- package/dist/_chunks/{build-0fb2b1db.js.map → build-b285bccd.js.map} +1 -1
- package/dist/_chunks/{build-0a74f94d.mjs → build-f011d8dc.mjs} +2 -2
- package/dist/_chunks/{build-0a74f94d.mjs.map → build-f011d8dc.mjs.map} +1 -1
- package/dist/_chunks/{constants-8b2ba8d0.mjs → constants-129cf022.mjs} +6 -6
- package/dist/_chunks/{constants-8b2ba8d0.mjs.map → constants-129cf022.mjs.map} +1 -1
- package/dist/_chunks/{constants-91628e1e.js → constants-1bd1239d.js} +6 -6
- package/dist/_chunks/{constants-91628e1e.js.map → constants-1bd1239d.js.map} +1 -1
- package/dist/_chunks/{constants-8523a9f7.mjs → constants-39df4f04.mjs} +3 -3
- package/dist/_chunks/{constants-8523a9f7.mjs.map → constants-39df4f04.mjs.map} +1 -1
- package/dist/_chunks/{constants-a7b1c05e.mjs → constants-7bfc7134.mjs} +2 -2
- package/dist/_chunks/{constants-a7b1c05e.mjs.map → constants-7bfc7134.mjs.map} +1 -1
- package/dist/_chunks/{constants-b98f01f7.js → constants-86882708.js} +3 -3
- package/dist/_chunks/{constants-b98f01f7.js.map → constants-86882708.js.map} +1 -1
- package/dist/_chunks/{constants-643fcaf9.js → constants-916debf1.js} +2 -2
- package/dist/_chunks/{constants-643fcaf9.js.map → constants-916debf1.js.map} +1 -1
- package/dist/_chunks/{constants-dfdfded9.js → constants-cd5a4e71.js} +5 -5
- package/dist/_chunks/{constants-dfdfded9.js.map → constants-cd5a4e71.js.map} +1 -1
- package/dist/_chunks/{constants-65707dfb.mjs → constants-ffa23daa.mjs} +5 -5
- package/dist/_chunks/{constants-65707dfb.mjs.map → constants-ffa23daa.mjs.map} +1 -1
- package/dist/_chunks/{develop-5fd15ecf.mjs → develop-3c9f7452.mjs} +2 -2
- package/dist/_chunks/{develop-5fd15ecf.mjs.map → develop-3c9f7452.mjs.map} +1 -1
- package/dist/_chunks/{develop-ec19d09d.js → develop-9765d7ba.js} +2 -2
- package/dist/_chunks/{develop-ec19d09d.js.map → develop-9765d7ba.js.map} +1 -1
- package/dist/_chunks/{index-43b10023.js → index-006ef0ac.js} +3 -3
- package/dist/_chunks/{index-43b10023.js.map → index-006ef0ac.js.map} +1 -1
- package/dist/_chunks/{index-98a58f34.js → index-05001647.js} +8 -8
- package/dist/_chunks/{index-98a58f34.js.map → index-05001647.js.map} +1 -1
- package/dist/_chunks/{index-e78be262.js → index-05ada54b.js} +3 -3
- package/dist/_chunks/{index-e78be262.js.map → index-05ada54b.js.map} +1 -1
- package/dist/_chunks/{index-f1ace542.js → index-05f82f02.js} +3 -3
- package/dist/_chunks/{index-f1ace542.js.map → index-05f82f02.js.map} +1 -1
- package/dist/_chunks/{index-0b745772.js → index-09752dfe.js} +3 -3
- package/dist/_chunks/{index-0b745772.js.map → index-09752dfe.js.map} +1 -1
- package/dist/_chunks/{index-dd6de307.mjs → index-0bd0d840.mjs} +3 -3
- package/dist/_chunks/{index-dd6de307.mjs.map → index-0bd0d840.mjs.map} +1 -1
- package/dist/_chunks/{index-d75d8d15.js → index-0c5f6415.js} +5 -5
- package/dist/_chunks/{index-d75d8d15.js.map → index-0c5f6415.js.map} +1 -1
- package/dist/_chunks/{index-de552d3f.mjs → index-1bf08614.mjs} +3 -3
- package/dist/_chunks/{index-de552d3f.mjs.map → index-1bf08614.mjs.map} +1 -1
- package/dist/_chunks/{index-154451f2.js → index-1eaab33f.js} +4 -4
- package/dist/_chunks/{index-154451f2.js.map → index-1eaab33f.js.map} +1 -1
- package/dist/_chunks/{index-9e6e4c3f.mjs → index-234ed67d.mjs} +3 -3
- package/dist/_chunks/{index-9e6e4c3f.mjs.map → index-234ed67d.mjs.map} +1 -1
- package/dist/_chunks/{index-6431bc24.js → index-2ed87ac8.js} +3 -3
- package/dist/_chunks/{index-6431bc24.js.map → index-2ed87ac8.js.map} +1 -1
- package/dist/_chunks/{index-a2d01aca.mjs → index-326b9481.mjs} +4 -4
- package/dist/_chunks/{index-a2d01aca.mjs.map → index-326b9481.mjs.map} +1 -1
- package/dist/_chunks/{index-3fac3161.mjs → index-332b3702.mjs} +3 -3
- package/dist/_chunks/{index-3fac3161.mjs.map → index-332b3702.mjs.map} +1 -1
- package/dist/_chunks/{index-d9602c22.js → index-3fb94612.js} +4 -4
- package/dist/_chunks/{index-d9602c22.js.map → index-3fb94612.js.map} +1 -1
- package/dist/_chunks/{index-0d895d5c.mjs → index-4343f97f.mjs} +4 -4
- package/dist/_chunks/{index-0d895d5c.mjs.map → index-4343f97f.mjs.map} +1 -1
- package/dist/_chunks/{index-2503ccd8.mjs → index-43e86c36.mjs} +5 -5
- package/dist/_chunks/{index-2503ccd8.mjs.map → index-43e86c36.mjs.map} +1 -1
- package/dist/_chunks/{index-f90f4c5e.js → index-455d0b3e.js} +5 -5
- package/dist/_chunks/{index-f90f4c5e.js.map → index-455d0b3e.js.map} +1 -1
- package/dist/_chunks/{index-071e584f.js → index-4e8af716.js} +5 -5
- package/dist/_chunks/{index-071e584f.js.map → index-4e8af716.js.map} +1 -1
- package/dist/_chunks/{index-51c81518.js → index-539c5eac.js} +2 -2
- package/dist/_chunks/{index-51c81518.js.map → index-539c5eac.js.map} +1 -1
- package/dist/_chunks/{index-ceae3e82.js → index-54dc318d.js} +3 -3
- package/dist/_chunks/{index-ceae3e82.js.map → index-54dc318d.js.map} +1 -1
- package/dist/_chunks/{index-a5248bde.mjs → index-55a46be8.mjs} +3 -3
- package/dist/_chunks/{index-a5248bde.mjs.map → index-55a46be8.mjs.map} +1 -1
- package/dist/_chunks/{index-c1f8110c.js → index-55d6d65a.js} +3 -3
- package/dist/_chunks/{index-c1f8110c.js.map → index-55d6d65a.js.map} +1 -1
- package/dist/_chunks/{index-e8ddad38.mjs → index-57ae9065.mjs} +3 -3
- package/dist/_chunks/{index-e8ddad38.mjs.map → index-57ae9065.mjs.map} +1 -1
- package/dist/_chunks/{index-2772208e.js → index-62b7bdbe.js} +10 -9
- package/dist/_chunks/index-62b7bdbe.js.map +1 -0
- package/dist/_chunks/{index-330bae16.js → index-653e1ab3.js} +2 -2
- package/dist/_chunks/{index-330bae16.js.map → index-653e1ab3.js.map} +1 -1
- package/dist/_chunks/{index-6d864827.mjs → index-6861cd84.mjs} +3 -3
- package/dist/_chunks/{index-6d864827.mjs.map → index-6861cd84.mjs.map} +1 -1
- package/dist/_chunks/{index-db4e548d.js → index-6bfd0b33.js} +3 -3
- package/dist/_chunks/{index-db4e548d.js.map → index-6bfd0b33.js.map} +1 -1
- package/dist/_chunks/{index-0767a707.js → index-7028ad70.js} +4 -4
- package/dist/_chunks/{index-0767a707.js.map → index-7028ad70.js.map} +1 -1
- package/dist/_chunks/{index-30805cdb.js → index-706ae836.js} +4 -4
- package/dist/_chunks/{index-30805cdb.js.map → index-706ae836.js.map} +1 -1
- package/dist/_chunks/{index-d02782dc.mjs → index-77124563.mjs} +5 -5
- package/dist/_chunks/{index-d02782dc.mjs.map → index-77124563.mjs.map} +1 -1
- package/dist/_chunks/{index-c38703f5.mjs → index-782c0685.mjs} +2 -2
- package/dist/_chunks/{index-c38703f5.mjs.map → index-782c0685.mjs.map} +1 -1
- package/dist/_chunks/{index-98907333.js → index-7a956856.js} +4 -4
- package/dist/_chunks/{index-98907333.js.map → index-7a956856.js.map} +1 -1
- package/dist/_chunks/{index-0f8c5c53.js → index-7c0dcf2b.js} +4 -4
- package/dist/_chunks/{index-0f8c5c53.js.map → index-7c0dcf2b.js.map} +1 -1
- package/dist/_chunks/{index-cf1f4293.js → index-82f22c48.js} +3 -3
- package/dist/_chunks/{index-cf1f4293.js.map → index-82f22c48.js.map} +1 -1
- package/dist/_chunks/{index-d1583f5b.mjs → index-853bad50.mjs} +5 -5
- package/dist/_chunks/{index-d1583f5b.mjs.map → index-853bad50.mjs.map} +1 -1
- package/dist/_chunks/{index-e364920e.mjs → index-891d1527.mjs} +4 -4
- package/dist/_chunks/{index-e364920e.mjs.map → index-891d1527.mjs.map} +1 -1
- package/dist/_chunks/{index-83592788.js → index-8acbbabe.js} +6 -6
- package/dist/_chunks/{index-83592788.js.map → index-8acbbabe.js.map} +1 -1
- package/dist/_chunks/{index-7f99a8c0.mjs → index-8d895e56.mjs} +3 -3
- package/dist/_chunks/{index-7f99a8c0.mjs.map → index-8d895e56.mjs.map} +1 -1
- package/dist/_chunks/{index-854f0f9f.js → index-96af3a65.js} +5 -5
- package/dist/_chunks/{index-854f0f9f.js.map → index-96af3a65.js.map} +1 -1
- package/dist/_chunks/{index-3c50082a.mjs → index-9b3ff96c.mjs} +20 -20
- package/dist/_chunks/{index-3c50082a.mjs.map → index-9b3ff96c.mjs.map} +1 -1
- package/dist/_chunks/{index-f8139fa9.js → index-9c88e73f.js} +5 -5
- package/dist/_chunks/{index-f8139fa9.js.map → index-9c88e73f.js.map} +1 -1
- package/dist/_chunks/{index-dec0eba6.mjs → index-a220f0b2.mjs} +4 -4
- package/dist/_chunks/{index-dec0eba6.mjs.map → index-a220f0b2.mjs.map} +1 -1
- package/dist/_chunks/{index-6708aec7.mjs → index-a684490c.mjs} +3 -3
- package/dist/_chunks/{index-6708aec7.mjs.map → index-a684490c.mjs.map} +1 -1
- package/dist/_chunks/{index-aa8d6cd9.mjs → index-b593ff2a.mjs} +4 -4
- package/dist/_chunks/{index-aa8d6cd9.mjs.map → index-b593ff2a.mjs.map} +1 -1
- package/dist/_chunks/{index-22572721.js → index-b6c497e5.js} +20 -20
- package/dist/_chunks/{index-22572721.js.map → index-b6c497e5.js.map} +1 -1
- package/dist/_chunks/{index-f11d5a06.mjs → index-c075b5a1.mjs} +10 -9
- package/dist/_chunks/index-c075b5a1.mjs.map +1 -0
- package/dist/_chunks/{index-73f7ad03.mjs → index-c184f4d7.mjs} +5 -5
- package/dist/_chunks/{index-73f7ad03.mjs.map → index-c184f4d7.mjs.map} +1 -1
- package/dist/_chunks/{index-7a8208cf.mjs → index-c40ee26a.mjs} +4 -4
- package/dist/_chunks/{index-7a8208cf.mjs.map → index-c40ee26a.mjs.map} +1 -1
- package/dist/_chunks/{index-cdb822dc.mjs → index-cd2af4a0.mjs} +5 -5
- package/dist/_chunks/{index-cdb822dc.mjs.map → index-cd2af4a0.mjs.map} +1 -1
- package/dist/_chunks/{index-26633f85.js → index-cdc1221a.js} +3 -3
- package/dist/_chunks/{index-26633f85.js.map → index-cdc1221a.js.map} +1 -1
- package/dist/_chunks/{index-e1ee4796.js → index-d196ac50.js} +4 -4
- package/dist/_chunks/{index-e1ee4796.js.map → index-d196ac50.js.map} +1 -1
- package/dist/_chunks/{index-089af133.mjs → index-d33c8d9f.mjs} +8 -8
- package/dist/_chunks/{index-089af133.mjs.map → index-d33c8d9f.mjs.map} +1 -1
- package/dist/_chunks/{index-47b49cd4.js → index-d5711ebb.js} +5 -5
- package/dist/_chunks/{index-47b49cd4.js.map → index-d5711ebb.js.map} +1 -1
- package/dist/_chunks/{index-d05d2739.mjs → index-d80de23d.mjs} +3 -3
- package/dist/_chunks/{index-d05d2739.mjs.map → index-d80de23d.mjs.map} +1 -1
- package/dist/_chunks/{index-a422ec17.mjs → index-d9f9de85.mjs} +4 -4
- package/dist/_chunks/{index-a422ec17.mjs.map → index-d9f9de85.mjs.map} +1 -1
- package/dist/_chunks/{index-8a902627.mjs → index-de154c58.mjs} +3 -3
- package/dist/_chunks/{index-8a902627.mjs.map → index-de154c58.mjs.map} +1 -1
- package/dist/_chunks/{index-1f3328ca.mjs → index-df043af5.mjs} +3 -3
- package/dist/_chunks/{index-1f3328ca.mjs.map → index-df043af5.mjs.map} +1 -1
- package/dist/_chunks/{index-86fc0c9c.js → index-dff777b7.js} +3 -3
- package/dist/_chunks/{index-86fc0c9c.js.map → index-dff777b7.js.map} +1 -1
- package/dist/_chunks/{index-33bf61b3.js → index-e013fe86.js} +3 -3
- package/dist/_chunks/{index-33bf61b3.js.map → index-e013fe86.js.map} +1 -1
- package/dist/_chunks/{index-0b0a40c2.mjs → index-e2db7aa8.mjs} +6 -6
- package/dist/_chunks/{index-0b0a40c2.mjs.map → index-e2db7aa8.mjs.map} +1 -1
- package/dist/_chunks/{index-64c904e2.mjs → index-eea1e084.mjs} +3 -3
- package/dist/_chunks/{index-64c904e2.mjs.map → index-eea1e084.mjs.map} +1 -1
- package/dist/_chunks/{index-ee0697f5.mjs → index-f0f40db4.mjs} +5 -5
- package/dist/_chunks/{index-ee0697f5.mjs.map → index-f0f40db4.mjs.map} +1 -1
- package/dist/_chunks/{index-a0f622ec.js → index-f18d27fd.js} +3 -3
- package/dist/_chunks/{index-a0f622ec.js.map → index-f18d27fd.js.map} +1 -1
- package/dist/_chunks/{index-6b9ce159.js → index-f3c67f77.js} +2 -2
- package/dist/_chunks/{index-6b9ce159.js.map → index-f3c67f77.js.map} +1 -1
- package/dist/_chunks/{index-e309a639.mjs → index-f4a061be.mjs} +2 -2
- package/dist/_chunks/{index-e309a639.mjs.map → index-f4a061be.mjs.map} +1 -1
- package/dist/_chunks/{index-ddfb8187.mjs → index-f67d8e8d.mjs} +2 -2
- package/dist/_chunks/{index-ddfb8187.mjs.map → index-f67d8e8d.mjs.map} +1 -1
- package/dist/_chunks/{schema-f1cf6f90.mjs → schema-82ad2cb1.mjs} +2 -2
- package/dist/_chunks/{schema-f1cf6f90.mjs.map → schema-82ad2cb1.mjs.map} +1 -1
- package/dist/_chunks/{schema-c67fdb98.js → schema-8bb5b01b.js} +2 -2
- package/dist/_chunks/{schema-c67fdb98.js.map → schema-8bb5b01b.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-c7605fca.mjs → validateWorkflow-23b1ee38.mjs} +3 -3
- package/dist/_chunks/{validateWorkflow-c7605fca.mjs.map → validateWorkflow-23b1ee38.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-0ae76680.js → validateWorkflow-f5761727.js} +3 -3
- package/dist/_chunks/{validateWorkflow-0ae76680.js.map → validateWorkflow-f5761727.js.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/dist/shared/contracts/users.d.ts +12 -9
- package/package.json +12 -12
- package/dist/_chunks/ProfilePage-7c3e5ad6.mjs.map +0 -1
- package/dist/_chunks/ProfilePage-a970034d.js.map +0 -1
- package/dist/_chunks/index-2772208e.js.map +0 -1
- package/dist/_chunks/index-f11d5a06.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-6d864827.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js"],"sourcesContent":["import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport Permissions from '../EditPage/components/Permissions';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport schema from './utils/schema';\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\nconst CreatePage = () => {\n const route = useRouteMatch('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const { replace } = useHistory();\n const permissionsRef = useRef();\n const { trackUsage } = useTracking();\n const { post, put } = useFetchClient();\n\n const { params } = route ?? {};\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(params?.id, {\n cacheTime: 0,\n });\n\n const { permissions: rolePermissions, isLoading: isLoadingRole } = useAdminRolePermissions(\n { id: params?.id },\n {\n cacheTime: 0,\n\n // only fetch permissions if a role is cloned\n enabled: !!params?.id,\n }\n );\n\n const handleCreateRoleSubmit = (data) => {\n lockApp();\n setIsSubmiting(true);\n\n if (params?.id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n Promise.resolve(post('/admin/roles', data))\n .then(async ({ data: res }) => {\n const { permissionsToSend } = permissionsRef.current.getPermissions();\n\n if (params?.id) {\n trackUsage('didDuplicateRole');\n } else {\n trackUsage('didCreateNewRole');\n }\n\n if (res.data.id && !isEmpty(permissionsToSend)) {\n await put(`/admin/roles/${res.data.id}/permissions`, { permissions: permissionsToSend });\n }\n\n return res;\n })\n .then((res) => {\n setIsSubmiting(false);\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n replace(`/settings/roles/${res.data.id}`);\n })\n .catch((err) => {\n console.error(err);\n setIsSubmiting(false);\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n })\n .finally(() => {\n unlockApp();\n });\n };\n\n const defaultDescription = `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`;\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={{ name: '', description: defaultDescription }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleReset, handleChange }) => (\n <Form noValidate>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button onClick={handleSubmit} loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n {!isLoadingPermissionsLayout && !isLoadingRole ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.create}>\n <CreatePage />\n </CheckPagePermissions>\n );\n}\n\nexport { CreatePage };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-6861cd84.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js"],"sourcesContent":["import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport Permissions from '../EditPage/components/Permissions';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport schema from './utils/schema';\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\nconst CreatePage = () => {\n const route = useRouteMatch('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const { replace } = useHistory();\n const permissionsRef = useRef();\n const { trackUsage } = useTracking();\n const { post, put } = useFetchClient();\n\n const { params } = route ?? {};\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(params?.id, {\n cacheTime: 0,\n });\n\n const { permissions: rolePermissions, isLoading: isLoadingRole } = useAdminRolePermissions(\n { id: params?.id },\n {\n cacheTime: 0,\n\n // only fetch permissions if a role is cloned\n enabled: !!params?.id,\n }\n );\n\n const handleCreateRoleSubmit = (data) => {\n lockApp();\n setIsSubmiting(true);\n\n if (params?.id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n Promise.resolve(post('/admin/roles', data))\n .then(async ({ data: res }) => {\n const { permissionsToSend } = permissionsRef.current.getPermissions();\n\n if (params?.id) {\n trackUsage('didDuplicateRole');\n } else {\n trackUsage('didCreateNewRole');\n }\n\n if (res.data.id && !isEmpty(permissionsToSend)) {\n await put(`/admin/roles/${res.data.id}/permissions`, { permissions: permissionsToSend });\n }\n\n return res;\n })\n .then((res) => {\n setIsSubmiting(false);\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n replace(`/settings/roles/${res.data.id}`);\n })\n .catch((err) => {\n console.error(err);\n setIsSubmiting(false);\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n })\n .finally(() => {\n unlockApp();\n });\n };\n\n const defaultDescription = `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`;\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={{ name: '', description: defaultDescription }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleReset, handleChange }) => (\n <Form noValidate>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button onClick={handleSubmit} loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n {!isLoadingPermissionsLayout && !isLoadingRole ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.create}>\n <CreatePage />\n </CheckPagePermissions>\n );\n}\n\nexport { CreatePage };\n"],"names":[],"mappings":"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"}
|
|
@@ -12,13 +12,13 @@ const reactIntl = require("react-intl");
|
|
|
12
12
|
const reactRedux = require("react-redux");
|
|
13
13
|
const reactRouterDom = require("react-router-dom");
|
|
14
14
|
const styled = require("styled-components");
|
|
15
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
15
|
+
const AuthenticatedApp = require("./AuthenticatedApp-4b160235.js");
|
|
16
16
|
const useAdminRolePermissions = require("./useAdminRolePermissions-cb1a3ee2.js");
|
|
17
17
|
const yup = require("yup");
|
|
18
18
|
require("react-query");
|
|
19
19
|
require("semver/functions/lt");
|
|
20
20
|
require("semver/functions/valid");
|
|
21
|
-
require("./index-
|
|
21
|
+
require("./index-7c0dcf2b.js");
|
|
22
22
|
require("react-dom/client");
|
|
23
23
|
require("invariant");
|
|
24
24
|
require("lodash/isFunction");
|
|
@@ -263,4 +263,4 @@ function index() {
|
|
|
263
263
|
}
|
|
264
264
|
exports.CreatePage = CreatePage;
|
|
265
265
|
exports.default = index;
|
|
266
|
-
//# sourceMappingURL=index-
|
|
266
|
+
//# sourceMappingURL=index-6bfd0b33.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-db4e548d.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js"],"sourcesContent":["import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport Permissions from '../EditPage/components/Permissions';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport schema from './utils/schema';\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\nconst CreatePage = () => {\n const route = useRouteMatch('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const { replace } = useHistory();\n const permissionsRef = useRef();\n const { trackUsage } = useTracking();\n const { post, put } = useFetchClient();\n\n const { params } = route ?? {};\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(params?.id, {\n cacheTime: 0,\n });\n\n const { permissions: rolePermissions, isLoading: isLoadingRole } = useAdminRolePermissions(\n { id: params?.id },\n {\n cacheTime: 0,\n\n // only fetch permissions if a role is cloned\n enabled: !!params?.id,\n }\n );\n\n const handleCreateRoleSubmit = (data) => {\n lockApp();\n setIsSubmiting(true);\n\n if (params?.id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n Promise.resolve(post('/admin/roles', data))\n .then(async ({ data: res }) => {\n const { permissionsToSend } = permissionsRef.current.getPermissions();\n\n if (params?.id) {\n trackUsage('didDuplicateRole');\n } else {\n trackUsage('didCreateNewRole');\n }\n\n if (res.data.id && !isEmpty(permissionsToSend)) {\n await put(`/admin/roles/${res.data.id}/permissions`, { permissions: permissionsToSend });\n }\n\n return res;\n })\n .then((res) => {\n setIsSubmiting(false);\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n replace(`/settings/roles/${res.data.id}`);\n })\n .catch((err) => {\n console.error(err);\n setIsSubmiting(false);\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n })\n .finally(() => {\n unlockApp();\n });\n };\n\n const defaultDescription = `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`;\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={{ name: '', description: defaultDescription }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleReset, handleChange }) => (\n <Form noValidate>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button onClick={handleSubmit} loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n {!isLoadingPermissionsLayout && !isLoadingRole ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.create}>\n <CreatePage />\n </CheckPagePermissions>\n );\n}\n\nexport { CreatePage };\n"],"names":["yup","translatedErrors","styled","useRouteMatch","useNotification","useOverlayBlocker","useIntl","useState","useHistory","useRef","useTracking","useFetchClient","useAdminRolePermissionLayout","useAdminRolePermissions","isEmpty","format","Main","jsx","SettingsPageTitle","Formik","Form","jsxs","Fragment","HeaderLayout","Flex","Button","Link","ArrowLeft","ContentLayout","Box","Typography","Grid","GridItem","TextInput","Textarea","Permissions","LoadingIndicatorPage","useSelector","selectAdminPermissions","CheckPagePermissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-6bfd0b33.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js"],"sourcesContent":["import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport Permissions from '../EditPage/components/Permissions';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport schema from './utils/schema';\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\nconst CreatePage = () => {\n const route = useRouteMatch('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const { replace } = useHistory();\n const permissionsRef = useRef();\n const { trackUsage } = useTracking();\n const { post, put } = useFetchClient();\n\n const { params } = route ?? {};\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(params?.id, {\n cacheTime: 0,\n });\n\n const { permissions: rolePermissions, isLoading: isLoadingRole } = useAdminRolePermissions(\n { id: params?.id },\n {\n cacheTime: 0,\n\n // only fetch permissions if a role is cloned\n enabled: !!params?.id,\n }\n );\n\n const handleCreateRoleSubmit = (data) => {\n lockApp();\n setIsSubmiting(true);\n\n if (params?.id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n Promise.resolve(post('/admin/roles', data))\n .then(async ({ data: res }) => {\n const { permissionsToSend } = permissionsRef.current.getPermissions();\n\n if (params?.id) {\n trackUsage('didDuplicateRole');\n } else {\n trackUsage('didCreateNewRole');\n }\n\n if (res.data.id && !isEmpty(permissionsToSend)) {\n await put(`/admin/roles/${res.data.id}/permissions`, { permissions: permissionsToSend });\n }\n\n return res;\n })\n .then((res) => {\n setIsSubmiting(false);\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n replace(`/settings/roles/${res.data.id}`);\n })\n .catch((err) => {\n console.error(err);\n setIsSubmiting(false);\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n })\n .finally(() => {\n unlockApp();\n });\n };\n\n const defaultDescription = `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`;\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={{ name: '', description: defaultDescription }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleReset, handleChange }) => (\n <Form noValidate>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button onClick={handleSubmit} loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n {!isLoadingPermissionsLayout && !isLoadingRole ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.create}>\n <CreatePage />\n </CheckPagePermissions>\n );\n}\n\nexport { CreatePage };\n"],"names":["yup","translatedErrors","styled","useRouteMatch","useNotification","useOverlayBlocker","useIntl","useState","useHistory","useRef","useTracking","useFetchClient","useAdminRolePermissionLayout","useAdminRolePermissions","isEmpty","format","Main","jsx","SettingsPageTitle","Formik","Form","jsxs","Fragment","HeaderLayout","Flex","Button","Link","ArrowLeft","ContentLayout","Box","Typography","Grid","GridItem","TextInput","Textarea","Permissions","LoadingIndicatorPage","useSelector","selectAdminPermissions","CheckPagePermissions"],"mappings":"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"}
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
5
5
|
const reactRedux = require("react-redux");
|
|
6
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
7
|
-
const index = require("./index-
|
|
6
|
+
const AuthenticatedApp = require("./AuthenticatedApp-4b160235.js");
|
|
7
|
+
const index = require("./index-f3c67f77.js");
|
|
8
8
|
require("react");
|
|
9
9
|
require("react-query");
|
|
10
10
|
require("semver/functions/lt");
|
|
11
11
|
require("semver/functions/valid");
|
|
12
|
-
require("./index-
|
|
12
|
+
require("./index-7c0dcf2b.js");
|
|
13
13
|
require("react-dom/client");
|
|
14
14
|
require("@strapi/design-system");
|
|
15
15
|
require("invariant");
|
|
@@ -48,4 +48,4 @@ const ProtectedTransferTokenCreateView = () => {
|
|
|
48
48
|
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings["transfer-tokens"].read, children: /* @__PURE__ */ jsxRuntime.jsx(index.TransferTokenCreateView, {}) });
|
|
49
49
|
};
|
|
50
50
|
exports.default = ProtectedTransferTokenCreateView;
|
|
51
|
-
//# sourceMappingURL=index-
|
|
51
|
+
//# sourceMappingURL=index-7028ad70.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-7028ad70.js","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedEditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedTransferTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['transfer-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedTransferTokenCreateView;\n"],"names":["useSelector","selectAdminPermissions","jsx","CheckPagePermissions","EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,mCAAmC,MAAM;AACvC,QAAA,cAAcA,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAC,2BAAA,IAACC,aAAqB,sBAAA,EAAA,aAAa,YAAY,SAAS,iBAAiB,EAAE,MACzE,UAACD,2BAAA,IAAAE,MAAA,yBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;;"}
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
5
5
|
const reactRedux = require("react-redux");
|
|
6
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
7
|
-
const index = require("./index-
|
|
6
|
+
const AuthenticatedApp = require("./AuthenticatedApp-4b160235.js");
|
|
7
|
+
const index = require("./index-653e1ab3.js");
|
|
8
8
|
require("react");
|
|
9
9
|
require("react-query");
|
|
10
10
|
require("semver/functions/lt");
|
|
11
11
|
require("semver/functions/valid");
|
|
12
|
-
require("./index-
|
|
12
|
+
require("./index-7c0dcf2b.js");
|
|
13
13
|
require("react-dom/client");
|
|
14
14
|
require("@strapi/design-system");
|
|
15
15
|
require("invariant");
|
|
@@ -52,4 +52,4 @@ const ProtectedApiTokenCreateView = () => {
|
|
|
52
52
|
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings["api-tokens"].read, children: /* @__PURE__ */ jsxRuntime.jsx(index.ApiTokenCreateView, {}) });
|
|
53
53
|
};
|
|
54
54
|
exports.default = ProtectedApiTokenCreateView;
|
|
55
|
-
//# sourceMappingURL=index-
|
|
55
|
+
//# sourceMappingURL=index-706ae836.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-706ae836.js","sources":["../../admin/src/pages/SettingsPage/pages/ApiTokens/ProtectedEditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedApiTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['api-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedApiTokenCreateView;\n"],"names":["useSelector","selectAdminPermissions","jsx","CheckPagePermissions","EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,8BAA8B,MAAM;AAClC,QAAA,cAAcA,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAC,2BAAA,IAACC,aAAqB,sBAAA,EAAA,aAAa,YAAY,SAAS,YAAY,EAAE,MACpE,UAACD,2BAAA,IAAAE,MAAA,oBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCMEditViewDataManager, useAPIErrorHandler, useNotification, useFetchClient, useRBAC } from "@strapi/helper-plugin";
|
|
3
|
-
import { g as getDisplayName, I as Information } from "./index-
|
|
3
|
+
import { g as getDisplayName, I as Information } from "./index-d33c8d9f.mjs";
|
|
4
4
|
import { Field, Flex, Combobox, ComboboxOption, SingleSelect, Typography, Loader, SingleSelectOption, FieldHint, FieldError } from "@strapi/design-system";
|
|
5
5
|
import { useIntl } from "react-intl";
|
|
6
6
|
import { useMutation, useQuery } from "react-query";
|
|
@@ -9,11 +9,11 @@ import "lodash/cloneDeep";
|
|
|
9
9
|
import "lodash/get";
|
|
10
10
|
import "lodash/omit";
|
|
11
11
|
import "lodash/isNaN";
|
|
12
|
-
import "./schema-
|
|
12
|
+
import "./schema-82ad2cb1.mjs";
|
|
13
13
|
import "lodash/merge";
|
|
14
14
|
import "lodash/set";
|
|
15
15
|
import { u as useAdminUsers } from "./useAdminUsers-09f86a58.mjs";
|
|
16
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
16
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-fa931d1d.mjs";
|
|
17
17
|
import { A as ASSIGNEE_ATTRIBUTE_NAME, S as STAGE_ATTRIBUTE_NAME } from "./constants-a92ce583.mjs";
|
|
18
18
|
import * as React from "react";
|
|
19
19
|
import { u as useLicenseLimits } from "./useLicenseLimits-13a102d3.mjs";
|
|
@@ -37,7 +37,7 @@ import "lodash/upperFirst";
|
|
|
37
37
|
import "@strapi/design-system/v2";
|
|
38
38
|
import "react-dnd-html5-backend";
|
|
39
39
|
import "styled-components";
|
|
40
|
-
import "./index-
|
|
40
|
+
import "./index-326b9481.mjs";
|
|
41
41
|
import "react-dom/client";
|
|
42
42
|
import "invariant";
|
|
43
43
|
import "lodash/isFunction";
|
|
@@ -396,4 +396,4 @@ function InformationBoxEE() {
|
|
|
396
396
|
export {
|
|
397
397
|
InformationBoxEE
|
|
398
398
|
};
|
|
399
|
-
//# sourceMappingURL=index-
|
|
399
|
+
//# sourceMappingURL=index-77124563.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-d02782dc.mjs","sources":["../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/AssigneeSelect.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/StageSelect/StageSelect.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/InformationBoxEE.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Combobox, ComboboxOption, Field, Flex } from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector } from 'react-redux';\n\nimport { getDisplayName } from '../../../../../../../../../admin/src/content-manager/utils';\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { ASSIGNEE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function AssigneeSelect() {\n const {\n initialData,\n layout: { uid },\n isSingleType,\n onChange,\n } = useCMEditViewDataManager();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { put } = useFetchClient();\n const {\n allowedActions: { canReadUsers },\n isLoading: isLoadingPermissions,\n } = useRBAC({\n readUsers: permissions.settings.users.read,\n });\n const { users, isLoading, isError } = useAdminUsers(\n {},\n {\n enabled: !isLoadingPermissions && canReadUsers,\n }\n );\n\n const currentAssignee = initialData?.[ASSIGNEE_ATTRIBUTE_NAME] ?? null;\n\n const handleChange = async ({ value: assigneeId }) => {\n mutation.mutate({\n entityId: initialData.id,\n assigneeId: parseInt(assigneeId, 10),\n uid,\n });\n };\n\n const mutation = useMutation(\n async ({ entityId, assigneeId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/assignee`, {\n data: { id: assigneeId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n {\n target: { name: ASSIGNEE_ATTRIBUTE_NAME, value: createdEntity[ASSIGNEE_ATTRIBUTE_NAME] },\n },\n true\n );\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.assignee.notification.saved',\n defaultMessage: 'Assignee updated',\n },\n });\n },\n }\n );\n\n return (\n <Field name={ASSIGNEE_ATTRIBUTE_NAME} id={ASSIGNEE_ATTRIBUTE_NAME}>\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Combobox\n clearLabel={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.clear',\n defaultMessage: 'Clear assignee',\n })}\n error={\n (isError &&\n canReadUsers &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.error',\n defaultMessage: 'An error occurred while fetching users',\n })) ||\n (mutation.error && formatAPIError(mutation.error))\n }\n disabled={!isLoadingPermissions && !isLoading && users.length === 0}\n name={ASSIGNEE_ATTRIBUTE_NAME}\n id={ASSIGNEE_ATTRIBUTE_NAME}\n value={currentAssignee ? currentAssignee.id : null}\n onChange={(value) => handleChange({ value })}\n onClear={() => handleChange({ value: null })}\n placeholder={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.placeholder',\n defaultMessage: 'Select …',\n })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.label',\n defaultMessage: 'Assignee',\n })}\n loading={isLoading || isLoadingPermissions || mutation.isLoading}\n >\n {users.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id}\n textValue={getDisplayName(user, formatMessage)}\n >\n {getDisplayName(user, formatMessage)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n </Flex>\n </Field>\n );\n}\n","import * as React from 'react';\n\nimport { useFetchClient } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\n\nexport function useReviewWorkflowsStages({ id, layout } = {}, queryOptions = {}) {\n const { kind, uid } = layout;\n const slug = kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const { get } = useFetchClient();\n\n const { data, isLoading, refetch } = useQuery(\n ['content-manager', slug, layout.uid, id, 'stages'],\n async () => {\n const { data } = await get(`/admin/content-manager/${slug}/${uid}/${id}/stages`);\n\n return data;\n },\n queryOptions\n );\n\n // these return values need to be memoized, because the default value\n // would lead to infinite rendering loops when used in a dependency array\n // on an effect\n const meta = React.useMemo(() => data?.meta ?? {}, [data?.meta]);\n const stages = React.useMemo(() => data?.data ?? [], [data?.data]);\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n stages,\n isLoading,\n refetch,\n };\n}\n","import * as React from 'react';\n\nimport {\n SingleSelect,\n SingleSelectOption,\n Field,\n FieldError,\n FieldHint,\n Flex,\n Loader,\n Typography,\n} from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport * as LimitsModal from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/constants';\nimport { useReviewWorkflowsStages } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages';\nimport { getStageColorByHex } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/utils/colors';\nimport { STAGE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function StageSelect() {\n const { initialData, layout: contentType, isSingleType, onChange } = useCMEditViewDataManager();\n const { put } = useFetchClient();\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { meta, stages, isLoading, refetch } = useReviewWorkflowsStages(\n { id: initialData.id, layout: contentType },\n {\n enabled: !!initialData?.id,\n }\n );\n const { getFeature } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n\n const limits = getFeature('review-workflows');\n // it is possible to rely on initialData here, because it always will\n // be updated at the same time when modifiedData is updated, otherwise\n // the entity is flagged as modified\n const activeWorkflowStage = initialData?.[STAGE_ATTRIBUTE_NAME] ?? null;\n\n const mutation = useMutation(\n async ({ entityId, stageId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/stage`, {\n data: { id: stageId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n { target: { name: STAGE_ATTRIBUTE_NAME, value: createdEntity[STAGE_ATTRIBUTE_NAME] } },\n true\n );\n\n await refetch();\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.stage.notification.saved',\n defaultMessage: 'Review stage updated',\n },\n });\n },\n }\n );\n\n const handleChange = async ({ value: stageId }) => {\n try {\n /**\n * If the current license has a limit:\n * check if the total count of workflows exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10) < meta.workflowCount\n ) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit:\n * check if the total count of stages exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10) < stages.length\n ) {\n setShowLimitModal('stage');\n } else {\n mutation.mutateAsync({\n entityId: initialData.id,\n stageId,\n uid: contentType.uid,\n });\n }\n } catch (error) {\n // react-query@v3: the error doesn't have to be handled here\n // see: https://github.com/TanStack/query/issues/121\n }\n };\n\n const { themeColorName } = activeWorkflowStage?.color\n ? getStageColorByHex(activeWorkflowStage?.color)\n : {};\n\n return (\n <>\n <Field\n hint={\n stages.length === 0 &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.stages.no-transition',\n defaultMessage: 'You don’t have the permission to update this stage.',\n })\n }\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n >\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <SingleSelect\n disabled={stages.length === 0}\n error={(mutation.error && formatAPIError(mutation.error)) || null}\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n value={activeWorkflowStage?.id}\n onChange={(value) => handleChange({ value })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.label',\n defaultMessage: 'Review stage',\n })}\n startIcon={\n activeWorkflowStage && (\n <Flex\n as=\"span\"\n height={2}\n background={activeWorkflowStage?.color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n marginRight=\"-3px\"\n />\n )\n }\n // eslint-disable-next-line react/no-unstable-nested-components\n customizeContent={() => (\n <Flex as=\"span\" justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Typography textColor=\"neutral800\" ellipsis>\n {activeWorkflowStage?.name ?? ''}\n </Typography>\n {isLoading ? (\n <Loader small style={{ display: 'flex' }} data-testid=\"loader\" />\n ) : null}\n </Flex>\n )}\n >\n {stages.map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color);\n\n return (\n <SingleSelectOption\n key={id}\n startIcon={\n <Flex\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n value={id}\n textValue={name}\n >\n {name}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <FieldHint />\n <FieldError />\n </Flex>\n </Field>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'stage'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n}\n","import React from 'react';\n\nimport { useCMEditViewDataManager } from '@strapi/helper-plugin';\n\nimport { Information } from '../../../../../../../admin/src/content-manager/pages/EditView/Information';\n\nimport { AssigneeSelect } from './components/AssigneeSelect';\nimport { StageSelect } from './components/StageSelect';\n\nexport function InformationBoxEE() {\n const {\n isCreatingEntry,\n layout: { options },\n } = useCMEditViewDataManager();\n\n const hasReviewWorkflowsEnabled = options?.reviewWorkflows ?? false;\n\n return (\n <Information.Root>\n <Information.Title />\n {hasReviewWorkflowsEnabled && !isCreatingEntry && (\n <>\n <StageSelect />\n <AssigneeSelect />\n </>\n )}\n <Information.Body />\n </Information.Root>\n );\n}\n"],"names":["uid","data","themeColorName","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-77124563.mjs","sources":["../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/AssigneeSelect.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/StageSelect/StageSelect.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/InformationBoxEE.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Combobox, ComboboxOption, Field, Flex } from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector } from 'react-redux';\n\nimport { getDisplayName } from '../../../../../../../../../admin/src/content-manager/utils';\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { ASSIGNEE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function AssigneeSelect() {\n const {\n initialData,\n layout: { uid },\n isSingleType,\n onChange,\n } = useCMEditViewDataManager();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { put } = useFetchClient();\n const {\n allowedActions: { canReadUsers },\n isLoading: isLoadingPermissions,\n } = useRBAC({\n readUsers: permissions.settings.users.read,\n });\n const { users, isLoading, isError } = useAdminUsers(\n {},\n {\n enabled: !isLoadingPermissions && canReadUsers,\n }\n );\n\n const currentAssignee = initialData?.[ASSIGNEE_ATTRIBUTE_NAME] ?? null;\n\n const handleChange = async ({ value: assigneeId }) => {\n mutation.mutate({\n entityId: initialData.id,\n assigneeId: parseInt(assigneeId, 10),\n uid,\n });\n };\n\n const mutation = useMutation(\n async ({ entityId, assigneeId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/assignee`, {\n data: { id: assigneeId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n {\n target: { name: ASSIGNEE_ATTRIBUTE_NAME, value: createdEntity[ASSIGNEE_ATTRIBUTE_NAME] },\n },\n true\n );\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.assignee.notification.saved',\n defaultMessage: 'Assignee updated',\n },\n });\n },\n }\n );\n\n return (\n <Field name={ASSIGNEE_ATTRIBUTE_NAME} id={ASSIGNEE_ATTRIBUTE_NAME}>\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Combobox\n clearLabel={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.clear',\n defaultMessage: 'Clear assignee',\n })}\n error={\n (isError &&\n canReadUsers &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.error',\n defaultMessage: 'An error occurred while fetching users',\n })) ||\n (mutation.error && formatAPIError(mutation.error))\n }\n disabled={!isLoadingPermissions && !isLoading && users.length === 0}\n name={ASSIGNEE_ATTRIBUTE_NAME}\n id={ASSIGNEE_ATTRIBUTE_NAME}\n value={currentAssignee ? currentAssignee.id : null}\n onChange={(value) => handleChange({ value })}\n onClear={() => handleChange({ value: null })}\n placeholder={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.placeholder',\n defaultMessage: 'Select …',\n })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.label',\n defaultMessage: 'Assignee',\n })}\n loading={isLoading || isLoadingPermissions || mutation.isLoading}\n >\n {users.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id}\n textValue={getDisplayName(user, formatMessage)}\n >\n {getDisplayName(user, formatMessage)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n </Flex>\n </Field>\n );\n}\n","import * as React from 'react';\n\nimport { useFetchClient } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\n\nexport function useReviewWorkflowsStages({ id, layout } = {}, queryOptions = {}) {\n const { kind, uid } = layout;\n const slug = kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const { get } = useFetchClient();\n\n const { data, isLoading, refetch } = useQuery(\n ['content-manager', slug, layout.uid, id, 'stages'],\n async () => {\n const { data } = await get(`/admin/content-manager/${slug}/${uid}/${id}/stages`);\n\n return data;\n },\n queryOptions\n );\n\n // these return values need to be memoized, because the default value\n // would lead to infinite rendering loops when used in a dependency array\n // on an effect\n const meta = React.useMemo(() => data?.meta ?? {}, [data?.meta]);\n const stages = React.useMemo(() => data?.data ?? [], [data?.data]);\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n stages,\n isLoading,\n refetch,\n };\n}\n","import * as React from 'react';\n\nimport {\n SingleSelect,\n SingleSelectOption,\n Field,\n FieldError,\n FieldHint,\n Flex,\n Loader,\n Typography,\n} from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport * as LimitsModal from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/constants';\nimport { useReviewWorkflowsStages } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages';\nimport { getStageColorByHex } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/utils/colors';\nimport { STAGE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function StageSelect() {\n const { initialData, layout: contentType, isSingleType, onChange } = useCMEditViewDataManager();\n const { put } = useFetchClient();\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { meta, stages, isLoading, refetch } = useReviewWorkflowsStages(\n { id: initialData.id, layout: contentType },\n {\n enabled: !!initialData?.id,\n }\n );\n const { getFeature } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n\n const limits = getFeature('review-workflows');\n // it is possible to rely on initialData here, because it always will\n // be updated at the same time when modifiedData is updated, otherwise\n // the entity is flagged as modified\n const activeWorkflowStage = initialData?.[STAGE_ATTRIBUTE_NAME] ?? null;\n\n const mutation = useMutation(\n async ({ entityId, stageId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/stage`, {\n data: { id: stageId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n { target: { name: STAGE_ATTRIBUTE_NAME, value: createdEntity[STAGE_ATTRIBUTE_NAME] } },\n true\n );\n\n await refetch();\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.stage.notification.saved',\n defaultMessage: 'Review stage updated',\n },\n });\n },\n }\n );\n\n const handleChange = async ({ value: stageId }) => {\n try {\n /**\n * If the current license has a limit:\n * check if the total count of workflows exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10) < meta.workflowCount\n ) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit:\n * check if the total count of stages exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10) < stages.length\n ) {\n setShowLimitModal('stage');\n } else {\n mutation.mutateAsync({\n entityId: initialData.id,\n stageId,\n uid: contentType.uid,\n });\n }\n } catch (error) {\n // react-query@v3: the error doesn't have to be handled here\n // see: https://github.com/TanStack/query/issues/121\n }\n };\n\n const { themeColorName } = activeWorkflowStage?.color\n ? getStageColorByHex(activeWorkflowStage?.color)\n : {};\n\n return (\n <>\n <Field\n hint={\n stages.length === 0 &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.stages.no-transition',\n defaultMessage: 'You don’t have the permission to update this stage.',\n })\n }\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n >\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <SingleSelect\n disabled={stages.length === 0}\n error={(mutation.error && formatAPIError(mutation.error)) || null}\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n value={activeWorkflowStage?.id}\n onChange={(value) => handleChange({ value })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.label',\n defaultMessage: 'Review stage',\n })}\n startIcon={\n activeWorkflowStage && (\n <Flex\n as=\"span\"\n height={2}\n background={activeWorkflowStage?.color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n marginRight=\"-3px\"\n />\n )\n }\n // eslint-disable-next-line react/no-unstable-nested-components\n customizeContent={() => (\n <Flex as=\"span\" justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Typography textColor=\"neutral800\" ellipsis>\n {activeWorkflowStage?.name ?? ''}\n </Typography>\n {isLoading ? (\n <Loader small style={{ display: 'flex' }} data-testid=\"loader\" />\n ) : null}\n </Flex>\n )}\n >\n {stages.map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color);\n\n return (\n <SingleSelectOption\n key={id}\n startIcon={\n <Flex\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n value={id}\n textValue={name}\n >\n {name}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <FieldHint />\n <FieldError />\n </Flex>\n </Field>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'stage'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n}\n","import React from 'react';\n\nimport { useCMEditViewDataManager } from '@strapi/helper-plugin';\n\nimport { Information } from '../../../../../../../admin/src/content-manager/pages/EditView/Information';\n\nimport { AssigneeSelect } from './components/AssigneeSelect';\nimport { StageSelect } from './components/StageSelect';\n\nexport function InformationBoxEE() {\n const {\n isCreatingEntry,\n layout: { options },\n } = useCMEditViewDataManager();\n\n const hasReviewWorkflowsEnabled = options?.reviewWorkflows ?? false;\n\n return (\n <Information.Root>\n <Information.Title />\n {hasReviewWorkflowsEnabled && !isCreatingEntry && (\n <>\n <StageSelect />\n <AssigneeSelect />\n </>\n )}\n <Information.Body />\n </Information.Root>\n );\n}\n"],"names":["uid","data","themeColorName","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { useIntl } from "react-intl";
|
|
|
7
7
|
import { useQuery } from "react-query";
|
|
8
8
|
import { useSelector } from "react-redux";
|
|
9
9
|
import { useHistory, useRouteMatch } from "react-router-dom";
|
|
10
|
-
import { s as selectAdminPermissions } from "./AuthenticatedApp-
|
|
10
|
+
import { s as selectAdminPermissions } from "./AuthenticatedApp-fa931d1d.mjs";
|
|
11
11
|
import { f as formatAPIErrors } from "./formatAPIErrors-db6ed675.mjs";
|
|
12
12
|
import { T as TRANSFER_TOKEN_TYPE } from "./constants-d3dd8ed6.mjs";
|
|
13
13
|
import { T as TokenName, a as TokenDescription, L as LifeSpanInput, b as TokenTypeSelect, F as FormHead, c as TokenBox } from "./index-176cc121.mjs";
|
|
@@ -380,4 +380,4 @@ const TransferTokenCreateView = () => {
|
|
|
380
380
|
export {
|
|
381
381
|
TransferTokenCreateView as T
|
|
382
382
|
};
|
|
383
|
-
//# sourceMappingURL=index-
|
|
383
|
+
//# sourceMappingURL=index-782c0685.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-c38703f5.mjs","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/LoadingView/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport LifeSpanInput from '../../../../../components/Tokens/LifeSpanInput';\nimport TokenDescription from '../../../../../components/Tokens/TokenDescription';\nimport TokenName from '../../../../../components/Tokens/TokenName';\nimport TokenTypeSelect from '../../../../../components/Tokens/TokenTypeSelect';\n\nconst FormTransferTokenContainer = ({\n errors,\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken,\n}) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n errors={errors}\n values={values}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n values={values}\n errors={errors}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nFormTransferTokenContainer.propTypes = {\n errors: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.string,\n type: PropTypes.string,\n }),\n onChange: PropTypes.func.isRequired,\n canEditInputs: PropTypes.bool.isRequired,\n values: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n }).isRequired,\n isCreating: PropTypes.bool.isRequired,\n transferToken: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n lifespan: PropTypes.string,\n name: PropTypes.string,\n accessKey: PropTypes.string,\n permissions: PropTypes.array,\n description: PropTypes.string,\n createdAt: PropTypes.string,\n }),\n};\n\nFormTransferTokenContainer.defaultProps = {\n errors: {},\n transferToken: {},\n};\n\nexport default FormTransferTokenContainer;\n","import React from 'react';\n\nimport { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst LoadingView = ({ transferTokenName }) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nLoadingView.defaultProps = {\n transferTokenName: null,\n};\n\nLoadingView.propTypes = {\n transferTokenName: PropTypes.string,\n};\n\nexport default LoadingView;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string(translatedErrors.string).max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string(translatedErrors.string).required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport FormHead from '../../../components/Tokens/FormHead';\nimport TokenBox from '../../../components/Tokens/TokenBox';\n\nimport FormTransferTokenContainer from './components/FormTransferTokenContainer';\nimport LoadingView from './components/LoadingView';\nimport { schema } from './utils';\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\nconst TransferTokenCreateView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const [transferToken, setTransferToken] = useState(\n history.location.state?.transferToken.accessKey\n ? {\n ...history.location.state.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const trackUsageRef = useRef(trackUsage);\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings['transfer-tokens']);\n const {\n params: { id },\n } = useRouteMatch('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n useEffect(() => {\n trackUsageRef.current(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating]);\n\n const { status } = useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n trackUsageRef.current(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n lockApp();\n const lifespanVal =\n body.lifespan && parseInt(body.lifespan, 10) && body.lifespan !== '0'\n ? parseInt(body.lifespan, 10)\n : null;\n\n const permissions = body.permissions.split('-');\n\n try {\n const {\n data: { data: response },\n } = isCreating\n ? await post(`/admin/transfer/tokens`, {\n ...body,\n lifespan: lifespanVal,\n permissions,\n })\n : await put(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsageRef.current(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n const errors = formatAPIErrors(err.response.data);\n actions.setErrors(errors);\n\n if (err?.response?.data?.error?.message === MSG_ERROR_NAME_TAKEN) {\n toggleNotification({\n type: 'warning',\n message: err.response.data.message || 'notification.error.tokennamenotunique',\n });\n } else if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n unlockApp();\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken && status !== 'success';\n\n if (isLoading) {\n return <LoadingView transferTokenName={transferToken?.name} />;\n }\n\n const handleErrorRegenerate = (err) => {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan\n ? transferToken.lifespan.toString()\n : transferToken?.lifespan,\n permissions: transferToken?.permissions.join('-'),\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(transferToken?.name) && (\n <TokenBox token={transferToken?.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nexport default TransferTokenCreateView;\n"],"names":["permissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-782c0685.mjs","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/LoadingView/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport LifeSpanInput from '../../../../../components/Tokens/LifeSpanInput';\nimport TokenDescription from '../../../../../components/Tokens/TokenDescription';\nimport TokenName from '../../../../../components/Tokens/TokenName';\nimport TokenTypeSelect from '../../../../../components/Tokens/TokenTypeSelect';\n\nconst FormTransferTokenContainer = ({\n errors,\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken,\n}) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n errors={errors}\n values={values}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n values={values}\n errors={errors}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nFormTransferTokenContainer.propTypes = {\n errors: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.string,\n type: PropTypes.string,\n }),\n onChange: PropTypes.func.isRequired,\n canEditInputs: PropTypes.bool.isRequired,\n values: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n }).isRequired,\n isCreating: PropTypes.bool.isRequired,\n transferToken: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n lifespan: PropTypes.string,\n name: PropTypes.string,\n accessKey: PropTypes.string,\n permissions: PropTypes.array,\n description: PropTypes.string,\n createdAt: PropTypes.string,\n }),\n};\n\nFormTransferTokenContainer.defaultProps = {\n errors: {},\n transferToken: {},\n};\n\nexport default FormTransferTokenContainer;\n","import React from 'react';\n\nimport { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst LoadingView = ({ transferTokenName }) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nLoadingView.defaultProps = {\n transferTokenName: null,\n};\n\nLoadingView.propTypes = {\n transferTokenName: PropTypes.string,\n};\n\nexport default LoadingView;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string(translatedErrors.string).max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string(translatedErrors.string).required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport FormHead from '../../../components/Tokens/FormHead';\nimport TokenBox from '../../../components/Tokens/TokenBox';\n\nimport FormTransferTokenContainer from './components/FormTransferTokenContainer';\nimport LoadingView from './components/LoadingView';\nimport { schema } from './utils';\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\nconst TransferTokenCreateView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const [transferToken, setTransferToken] = useState(\n history.location.state?.transferToken.accessKey\n ? {\n ...history.location.state.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const trackUsageRef = useRef(trackUsage);\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings['transfer-tokens']);\n const {\n params: { id },\n } = useRouteMatch('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n useEffect(() => {\n trackUsageRef.current(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating]);\n\n const { status } = useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n trackUsageRef.current(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n lockApp();\n const lifespanVal =\n body.lifespan && parseInt(body.lifespan, 10) && body.lifespan !== '0'\n ? parseInt(body.lifespan, 10)\n : null;\n\n const permissions = body.permissions.split('-');\n\n try {\n const {\n data: { data: response },\n } = isCreating\n ? await post(`/admin/transfer/tokens`, {\n ...body,\n lifespan: lifespanVal,\n permissions,\n })\n : await put(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsageRef.current(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n const errors = formatAPIErrors(err.response.data);\n actions.setErrors(errors);\n\n if (err?.response?.data?.error?.message === MSG_ERROR_NAME_TAKEN) {\n toggleNotification({\n type: 'warning',\n message: err.response.data.message || 'notification.error.tokennamenotunique',\n });\n } else if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n unlockApp();\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken && status !== 'success';\n\n if (isLoading) {\n return <LoadingView transferTokenName={transferToken?.name} />;\n }\n\n const handleErrorRegenerate = (err) => {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan\n ? transferToken.lifespan.toString()\n : transferToken?.lifespan,\n permissions: transferToken?.permissions.join('-'),\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(transferToken?.name) && (\n <TokenBox token={transferToken?.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nexport default TransferTokenCreateView;\n"],"names":["permissions"],"mappings":"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"}
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
5
5
|
const reactRedux = require("react-redux");
|
|
6
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
7
|
-
const index = require("./index-
|
|
6
|
+
const AuthenticatedApp = require("./AuthenticatedApp-4b160235.js");
|
|
7
|
+
const index = require("./index-f3c67f77.js");
|
|
8
8
|
require("react");
|
|
9
9
|
require("react-query");
|
|
10
10
|
require("semver/functions/lt");
|
|
11
11
|
require("semver/functions/valid");
|
|
12
|
-
require("./index-
|
|
12
|
+
require("./index-7c0dcf2b.js");
|
|
13
13
|
require("react-dom/client");
|
|
14
14
|
require("@strapi/design-system");
|
|
15
15
|
require("invariant");
|
|
@@ -48,4 +48,4 @@ const ProtectedTransferTokenCreateView = () => {
|
|
|
48
48
|
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings["transfer-tokens"].create, children: /* @__PURE__ */ jsxRuntime.jsx(index.TransferTokenCreateView, {}) });
|
|
49
49
|
};
|
|
50
50
|
exports.default = ProtectedTransferTokenCreateView;
|
|
51
|
-
//# sourceMappingURL=index-
|
|
51
|
+
//# sourceMappingURL=index-7a956856.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-7a956856.js","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedCreateView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedTransferTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['transfer-tokens'].create}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedTransferTokenCreateView;\n"],"names":["useSelector","selectAdminPermissions","jsx","CheckPagePermissions","EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,mCAAmC,MAAM;AACvC,QAAA,cAAcA,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAC,2BAAA,IAACC,aAAqB,sBAAA,EAAA,aAAa,YAAY,SAAS,iBAAiB,EAAE,QACzE,UAACD,2BAAA,IAAAE,MAAA,yBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;;"}
|