@strapi/admin 5.31.1 → 5.31.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +2 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +2 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +6 -0
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +6 -0
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.js +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.mjs +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.js +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +5 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +5 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js +4 -2
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs +4 -2
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +4 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +4 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js +1 -12
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +2 -11
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/translations/vi.json.js +772 -129
- package/dist/admin/admin/src/translations/vi.json.js.map +1 -1
- package/dist/admin/admin/src/translations/vi.json.mjs +764 -130
- package/dist/admin/admin/src/translations/vi.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +7 -0
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs +7 -0
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/index.js +0 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +0 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/index.d.ts +0 -2
- package/dist/admin/src/services/auth.d.ts +2 -11
- package/dist/ee/server/src/ai/containers/ai.d.ts +4 -0
- package/dist/ee/server/src/ai/containers/ai.d.ts.map +1 -1
- package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -1
- package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -1
- package/dist/server/ee/server/src/ai/containers/ai.js +143 -1
- package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/containers/ai.mjs +143 -1
- package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.js +7 -106
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +7 -106
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.js +0 -3
- package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.mjs +0 -3
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.js +0 -15
- package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.mjs +0 -15
- package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js +0 -10
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs +0 -10
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +1 -143
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +1 -143
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/src/controllers/authenticated-user.d.ts +0 -1
- package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +0 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +0 -5
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/users.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +0 -4
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +0 -4
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/shared/contracts/ai.d.ts +1 -1
- package/dist/shared/contracts/users.d.ts +0 -32
- package/dist/shared/contracts/users.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/admin/admin/src/hooks/useAIAvailability.js +0 -13
- package/dist/admin/admin/src/hooks/useAIAvailability.js.map +0 -1
- package/dist/admin/admin/src/hooks/useAIAvailability.mjs +0 -11
- package/dist/admin/admin/src/hooks/useAIAvailability.mjs.map +0 -1
- package/dist/admin/src/hooks/useAIAvailability.d.ts +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\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} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,wBAA2BC,GAAAA,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClD,IAAA,GAAGC,6BAAkB;IACrBC,eAAiBJ,EAAAA,cAAAA,CACdK,MAAM,EACP;AACCC,KAAAA,IAAI,CAAC;AAAC,QAAA,UAAA;AAAY,QAAA;KAAkB,EAAE,CAACC,UAAUC,eAAiBC,EAAAA,UAAAA,GAAAA;AACjE,QAAA,OAAOF,QAAYC,IAAAA,eAAAA,GACfC,UACGC,CAAAA,QAAQ,CAAC;YACRC,EAAIC,EAAAA,iCAAAA,CAAiBF,QAAQ,CAACC,EAAE;YAChCE,cAAgB,EAAA;AAClB,SAAA,CAAA,CACCC,QAAQ,EACXL,GAAAA,UAAAA;AACN,KAAA,CAAA;IACFM,gBAAkBf,EAAAA,cAAAA,CAAIK,MAAM,EAAA,CAAGS,QAAQ;AACzC,CAAA,CAAA;AAEA;;AAEkG,qGAElG,MAAME,KAAQ,GAAA,CAAC,EAAEC,QAAQ,EAAE,GAAGC,SAAsB,EAAA,GAAA;AAClD,IAAA,qBACEC,cAACC,CAAAA,gBAAAA,EAAAA;QACCC,UAAW,EAAA,UAAA;QACXC,SAAS,EAAA,IAAA;QACTC,MAAO,EAAA,cAAA;QACPC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;AAEd,QAAA,QAAA,gBAAAR,cAACS,CAAAA,iBAAAA,EAAAA;YAAKC,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,SAAA;YAAUC,GAAK,EAAA,CAAA;AAAI,YAAA,GAAGb,SAAS;AAChED,YAAAA,QAAAA,EAAAA;;;AAIT,CAAA;AAEA,MAAMe,WAAc,GAAA,IAAA;AAClB,IAAA,MAAMC,SAAYC,GAAAA,0BAAAA,EAAAA;IAClB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;IACpF,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,wBAAAA,EAAAA;IACzB,MAAMC,YAAAA,GAAeZ,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAACD,YAAY,CAAA;AACnF,IAAA,MAAME,QAAWC,GAAAA,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EACJC,+BAAiCC,EAAAA,sBAAsB,EACvDC,uBAAyBC,EAAAA,cAAc,EACxC,GAAGC,qCAAAA,EAAAA;AAEJ,IAAA,MAAMC,OAAOC,YAAQ,CAAA,aAAA,EAAe,CAACrB,KAAAA,GAAUA,MAAMoB,IAAI,CAAA;AAEzDE,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIH,IAAM,EAAA;AACRX,YAAAA,YAAAA,CACEN,aAAc,CAAA;gBACZ7B,EAAI,EAAA,0CAAA;gBACJE,cAAgB,EAAA;AAClB,aAAA,CAAA,CAAA;SAEG,MAAA;YACL+B,kBAAmB,CAAA;gBACjBiB,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAc,CAAA;oBAAE7B,EAAI,EAAA,oBAAA;oBAAsBE,cAAgB,EAAA;AAAmB,iBAAA;AACxF,aAAA,CAAA;AACF;KACC,EAAA;AAAC2B,QAAAA,aAAAA;AAAeM,QAAAA,YAAAA;AAAcF,QAAAA,kBAAAA;AAAoBa,QAAAA;AAAK,KAAA,CAAA;AAE1D,IAAA,MAAM,CAACM,QAAU,EAAA,EAAEC,WAAWC,gBAAgB,EAAE,CAAC,GAAGC,wBAAAA,EAAAA;IAEpD,MAAM,EACJF,SAAS,EACTG,IAAMC,EAAAA,OAAO,EACbC,KAAK,EACN,GAAGC,wBAAAA,CAAoBC,SAAW,EAAA;AACjCC,QAAAA,IAAAA,EAAM,EAAEC,MAAOC,CAAAA,MAAM,CAACC,IAAI,IAAIF,MAAOC,CAAAA,MAAM,CAACE,QAAQ,CAACC,SAAS,CAAC,KAAK,CAAA;AACtE,KAAA,CAAA;AAEAlB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIS,KAAO,EAAA;YACTzB,kBAAmB,CAAA;gBACjBiB,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAc,CAAA;oBAAE7B,EAAI,EAAA;AAAgD,iBAAA;AAC/E,aAAA,CAAA;AACF;KACC,EAAA;AAAC0D,QAAAA,KAAAA;AAAO7B,QAAAA,aAAAA;AAAeI,QAAAA;AAAmB,KAAA,CAAA;AAO7C,IAAA,MAAMkC,YAAe,GAAA,OACnBC,IACA,EAAA,EAAEC,SAAS,EAAkC,GAAA;QAE7C,MAAM,EAAExE,iBAAiByE,gBAAgB,EAAEjC,YAAY,EAAE,GAAGkC,UAAU,GAAGH,IAAAA;AACzE,QAAA,IAAII,UAAaD,GAAAA,QAAAA;;;QAIjB,IAAIC,UAAAA,CAAW5E,QAAQ,KAAK,EAAI,EAAA;YAC9B,MAAM,EACJA,UAAU6E,SAAS,EACnBhF,iBAAiBiF,gBAAgB,EACjC,GAAGC,uBAAAA,EACJ,GAAGH,UAAAA;YACJA,UAAaG,GAAAA,uBAAAA;AACf;QAEA,MAAMC,GAAAA,GAAM,MAAMxB,QAASoB,CAAAA,UAAAA,CAAAA;AAE3B,QAAA,IAAI,UAAUI,GAAK,EAAA;AACjBrC,YAAAA,QAAAA,CAASsC,mBAAYxC,CAAAA,YAAAA,CAAAA,CAAAA;AAErBN,YAAAA,UAAAA,CAAW,eAAiB,EAAA;gBAAE+C,OAASzC,EAAAA;AAAa,aAAA,CAAA;YAEpDJ,kBAAmB,CAAA;gBACjBiB,IAAM,EAAA,SAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAc,CAAA;oBAAE7B,EAAI,EAAA,4BAAA;oBAA8BE,cAAgB,EAAA;AAAQ,iBAAA;AACrF,aAAA,CAAA;AACF;AAEA,QAAA,IAAI,WAAW0E,GAAK,EAAA;YAClB,IAAIG,0BAAAA,CAAiBH,IAAIlB,KAAK,CAAA,IAAKkB,IAAIlB,KAAK,CAACsB,IAAI,KAAK,iBAAmB,EAAA;gBACvEX,SAAU3B,CAAAA,sBAAAA,CAAuBkC,IAAIlB,KAAK,CAAA,CAAA;AAC5C,aAAA,MAAO,IAAIqB,0BAAAA,CAAiBH,GAAIlB,CAAAA,KAAK,CAAG,EAAA;gBACtCzB,kBAAmB,CAAA;oBACjBiB,IAAM,EAAA,QAAA;oBACNC,OAASP,EAAAA,cAAAA,CAAegC,IAAIlB,KAAK;AACnC,iBAAA,CAAA;aACK,MAAA;gBACLzB,kBAAmB,CAAA;oBACjBiB,IAAM,EAAA,QAAA;AACNC,oBAAAA,OAAAA,EAAStB,aAAc,CAAA;wBAAE7B,EAAI,EAAA,oBAAA;wBAAsBE,cAAgB,EAAA;AAAmB,qBAAA;AACxF,iBAAA,CAAA;AACF;AACF;AACF,KAAA;AAEA,IAAA,IAAImD,SAAW,EAAA;QACb,qBAAO7C,cAAA,CAACyE,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,MAAMC,aAAAA,GAAgB1B,SAAS2B,WAAe,IAAA,KAAA;AAC9C,IAAA,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEpF,gBAAgB,EAAE,GAAG0C,QAAQ,EAAC;AAC5E,IAAA,MAAM2C,WAAc,GAAA;AAClBJ,QAAAA,KAAAA,EAAOA,KAAS,IAAA,EAAA;AAChBC,QAAAA,SAAAA,EAAWA,SAAa,IAAA,EAAA;AACxBC,QAAAA,QAAAA,EAAUA,QAAY,IAAA,EAAA;AACtBC,QAAAA,QAAAA,EAAUA,QAAY,IAAA,EAAA;AACtBpF,QAAAA,gBAAAA;AACAiC,QAAAA,YAAAA;QACAxC,eAAiB,EAAA,EAAA;QACjBD,QAAU,EAAA;AACZ,KAAA;IAEA,qBACEY,cAAA,CAAAkF,mBAAA,EAAA;gCACEC,eAAA,CAACV,iBAAKW,IAAI,EAAA;YAACC,WAAWvC,EAAAA,gBAAAA;;AACpB,8BAAA9C,cAAA,CAACyE,iBAAKa,KAAK,EAAA;8BACRjE,aAAc,CAAA;wBACb7B,EAAI,EAAA,0CAAA;wBACJE,cAAgB,EAAA;AAClB,qBAAA;;8BAEFM,cAACuF,CAAAA,SAAAA,EAAAA;oBACCC,MAAO,EAAA,KAAA;oBACPC,QAAU9B,EAAAA,YAAAA;oBACV+B,aAAeT,EAAAA,WAAAA;oBACfU,gBAAkB/G,EAAAA,wBAAAA;AAEjB,oBAAA,QAAA,EAAA,CAAC,EAAEgH,YAAY,EAAEC,QAAQ,EAAE,iBAC1BV,eAAA,CAAAD,mBAAA,EAAA;;AACE,8CAAAlF,cAAA,CAAC8F,eAAQC,MAAM,EAAA;AACbC,oCAAAA,KAAAA,EAAOC,oBAAe3D,CAAAA,IAAAA,CAAAA;AACtB4D,oCAAAA,aAAAA,gBACElG,cAACmG,CAAAA,mBAAAA,EAAAA;AACCC,wCAAAA,SAAAA,gBAAWpG,cAACqG,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;wCACZC,OAASV,EAAAA,YAAAA;wCACTlD,IAAK,EAAA,QAAA;AACL6D,wCAAAA,QAAAA,EAAU,CAACV,QAAAA;kDAEVxE,aAAc,CAAA;4CAAE7B,EAAI,EAAA,aAAA;4CAAeE,cAAgB,EAAA;AAAO,yCAAA;;;8CAIjEM,cAACC,CAAAA,gBAAAA,EAAAA;oCAAIK,aAAe,EAAA,CAAA;4DAClBN,cAAA,CAAC8F,eAAQU,OAAO,EAAA;AACd,wCAAA,QAAA,gBAAArB,eAAC1E,CAAAA,iBAAAA,EAAAA;4CAAKC,SAAU,EAAA,QAAA;4CAASC,UAAW,EAAA,SAAA;4CAAUC,GAAK,EAAA,CAAA;;8DACjDZ,cAACyG,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;AACA,gDAAA,CAAC9B,+BAAiB3E,cAAC0G,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;8DACpB1G,cAAC2G,CAAAA,kBAAAA,EAAAA;oDAAmB3F,WAAaA,EAAAA;;;;;;;;;AAO5CF,gBAAAA,SAAAA,kBACCd,cAACC,CAAAA,gBAAAA,EAAAA;4CACCD,cAAA,CAAC8F,eAAQU,OAAO,EAAA;AACd,wBAAA,QAAA,gBAAAxG,cAAC4G,CAAAA,iBAAAA,EAAAA,EAAAA;;;;;;AAOf;AAEA;;AAEkG,qGAElG,MAAMF,eAAkB,GAAA,IAAA;IACtB,MAAM,EAAErF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAACtF,CAAAA,KAAAA,EAAAA;;0BACCG,cAAC6G,CAAAA,uBAAAA,EAAAA;gBAAWC,OAAQ,EAAA,OAAA;gBAAQC,GAAI,EAAA,IAAA;0BAC7B1F,aAAc,CAAA;oBACb7B,EAAI,EAAA,wBAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA;;AAED,YAAA;AACC,gBAAA;AACE,oBAAA;AACEsH,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,iCAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,iBAAA;wBACNyC,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR;AACD,iBAAA;AACD,gBAAA;AACE,oBAAA;wBACEwE,YAAc,EAAA,cAAA;AACdF,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,iBAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,UAAA;wBACNyC,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA;wBACEwE,YAAc,EAAA,cAAA;AACdF,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,iCAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,iBAAA;wBACNyC,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR;AACD;AACF,aAAA,CAACyE,GAAG,CAAC,CAACC,KAAKC,KACV,iBAAArH,cAAA,CAACsH,kBAAKC,IAAI,EAAA;oBAAa3G,GAAK,EAAA,CAAA;8BACzBwG,GAAID,CAAAA,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAO,EAAA,iBAC1BxH,cAACsH,CAAAA,iBAAAA,CAAKG,IAAI,EAAA;4BAAkBC,GAAKT,EAAAA,IAAAA;4BAAMvG,SAAU,EAAA,QAAA;4BAASC,UAAW,EAAA,SAAA;AACnE,4BAAA,QAAA,gBAAAX,cAAC2H,CAAAA,sBAAAA,EAAAA;AAAe,gCAAA,GAAGH;;AADLA,yBAAAA,EAAAA,KAAAA,CAAMhD,IAAI,CAAA;AAFd6C,iBAAAA,EAAAA,KAAAA,CAAAA;;;AAUxB,CAAA;AAUA,MAAMV,kBAAqB,GAAA,CAAC,EAAE3F,WAAW,EAA2B,GAAA;IAClE,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAMsG,eAAAA,GAAkB3G,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAAC+F,eAAe,CAAA;AAEzF,IAAA,qBACE1C,eAACtF,CAAAA,KAAAA,EAAAA;;0BACCsF,eAAC1E,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;;kCACjDZ,cAAC6G,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;wBAAQC,GAAI,EAAA,IAAA;kCAC7B1F,aAAc,CAAA;4BACb7B,EAAI,EAAA,gDAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA;;kCAEFM,cAAC6G,CAAAA,uBAAAA,EAAAA;kCACExF,aACC,CAAA;4BACE7B,EAAI,EAAA,gEAAA;4BACJE,cACE,EAAA;yBAEJ,EAAA;AACEoI,4BAAAA,IAAAA,gBACE9H,cAACC,CAAAA,gBAAAA,EAAAA;gCACC8G,GAAI,EAAA,GAAA;gCACJgB,KAAM,EAAA,YAAA;gCACNC,MAAO,EAAA,QAAA;gCACPC,GAAI,EAAA,qBAAA;gCACJC,IAAK,EAAA,2FAAA;0CAEJ7G,aAAc,CAAA;oCACb7B,EAAI,EAAA,+CAAA;oCACJE,cAAgB,EAAA;AAClB,iCAAA;;AAGN,yBAAA;;;;AAIN,0BAAAM,cAAA,CAACsH,kBAAKC,IAAI,EAAA;gBAAC3G,GAAK,EAAA,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACEuH,wBAAAA,IAAAA,EAAM9G,aAAc,CAAA;4BAClB7B,EAAI,EAAA,iEAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAsH,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,4DAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,kBAAA;wBACN4D,OAASC,EAAAA,MAAAA,CAAOC,OAAO,CAACtH,WAAamG,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACoB,KAAAA,EAAOvB,KAAM,CAAA,IAAM;AAC5DA,gCAAAA,KAAAA;AACAuB,gCAAAA;6BACF,CAAA,CAAA;AACAC,wBAAAA,WAAAA,EAAanH,aAAc,CAAA;4BACzB7B,EAAI,EAAA,eAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAuH,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA;AACEyF,wBAAAA,IAAAA,EAAM9G,aAAc,CAAA;4BAClB7B,EAAI,EAAA,oDAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAsH,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,qDAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,cAAA;wBACN4D,OAAS,EAAA;AACP,4BAAA;AACEpB,gCAAAA,KAAAA,EAAO3F,aAAc,CAAA;oCACnB7B,EAAI,EAAA,mEAAA;oCACJE,cAAgB,EAAA;AAClB,iCAAA,CAAA;gCACA6I,KAAO,EAAA;AACT,6BAAA;AACGX,4BAAAA,GAAAA,eAAAA,CAAgBT,GAAG,CAAC,CAACrF,KAAAA,IAAW;AACjCkF,oCAAAA,KAAAA,EAAO3F,aACL,CAAA;wCACE7B,EAAI,EAAA,4DAAA;wCACJE,cAAgB,EAAA;qCAElB,EAAA;AACE8E,wCAAAA,IAAAA,EAAMnD,aAAc,CAAA;4CAClB7B,EAAIsC,EAAAA,KAAAA;AACJpC,4CAAAA,cAAAA,EAAgB+I,UAAW3G,CAAAA,KAAAA;AAC7B,yCAAA;AACF,qCAAA,CAAA;oCAEFyG,KAAOzG,EAAAA;iCACT,CAAA;AACD,yBAAA;AACD0G,wBAAAA,WAAAA,EAAanH,aAAc,CAAA;4BACzB7B,EAAI,EAAA,+BAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAuH,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR;iBACD,CAACyE,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAO,EAAA,iBACvBxH,cAACsH,CAAAA,iBAAAA,CAAKG,IAAI,EAAA;wBAAkBC,GAAKT,EAAAA,IAAAA;wBAAMvG,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,SAAA;AACnE,wBAAA,QAAA,gBAAAX,cAAC2H,CAAAA,sBAAAA,EAAAA;AAAe,4BAAA,GAAGH;;AADLA,qBAAAA,EAAAA,KAAAA,CAAMhD,IAAI,CAAA;;;;AAOpC,CAAA;AAEA;;AAEkG,qGAElG,MAAMiC,eAAkB,GAAA,IAAA;IACtB,MAAM,EAAEpF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAACtF,CAAAA,KAAAA,EAAAA;;0BACCG,cAAC6G,CAAAA,uBAAAA,EAAAA;gBAAWC,OAAQ,EAAA,OAAA;gBAAQC,GAAI,EAAA,IAAA;0BAC7B1F,aAAc,CAAA;oBACb7B,EAAI,EAAA,gBAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA;;AAEF,0BAAAM,cAAA,CAACsH,kBAAKC,IAAI,EAAA;gBAAC3G,GAAK,EAAA,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACEoG,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,2BAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,WAAA;wBACNjF,QAAU,EAAA,IAAA;wBACV0H,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA;AACEsE,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,0BAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,UAAA;wBACNyC,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA;AACEsE,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,uBAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,OAAA;wBACNjF,QAAU,EAAA,IAAA;wBACV0H,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR,qBAAA;AACA,oBAAA;AACEsE,wBAAAA,KAAAA,EAAO3F,aAAc,CAAA;4BACnB7B,EAAI,EAAA,0BAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA8E,IAAM,EAAA,UAAA;wBACNyC,IAAM,EAAA,CAAA;wBACNvE,IAAM,EAAA;AACR;iBACD,CAACyE,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAO,EAAA,iBACvBxH,cAACsH,CAAAA,iBAAAA,CAAKG,IAAI,EAAA;wBAAkBC,GAAKT,EAAAA,IAAAA;wBAAMvG,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,SAAA;AACnE,wBAAA,QAAA,gBAAAX,cAAC2H,CAAAA,sBAAAA,EAAAA;AAAe,4BAAA,GAAGH;;AADLA,qBAAAA,EAAAA,KAAAA,CAAMhD,IAAI,CAAA;;;;AAOpC,CAAA;AAEA;;AAEkG,qGAElG,MAAMoC,iBAAoB,GAAA,IAAA;IACxB,MAAM,EAAEvF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMK,WAAW2G,qBAAc,CAAA,aAAA,EAAe,CAACC,CAAAA,GAAMA,EAAE5G,QAAQ,CAAA;AAE/D,IAAA,MAAM6G,YAAe,GAAA,IAAA;QACnB7G,QAAS,CAAA;YAAEW,IAAM,EAAA;AAAkB,SAAA,CAAA;QACnCjB,kBAAmB,CAAA;YACjBiB,IAAM,EAAA,SAAA;AACNC,YAAAA,OAAAA,EAAStB,aAAc,CAAA;gBACrB7B,EAAI,EAAA,0CAAA;gBACJE,cAAgB,EAAA;AAClB,aAAA;AACF,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,qBACEyF,eAACtF,CAAAA,KAAAA,EAAAA;QAAMc,UAAW,EAAA,OAAA;;0BAChBwE,eAAC1E,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,OAAA;gBAAQC,GAAK,EAAA,CAAA;;kCAC/CZ,cAAC6G,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;wBAAQC,GAAI,EAAA,IAAA;kCAC7B1F,aAAc,CAAA;4BACb7B,EAAI,EAAA,qBAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA;;kCAEFM,cAAC6G,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;kCACjBzF,aAAc,CAAA;4BACb7B,EAAI,EAAA,2BAAA;4BACJE,cAAgB,EAAA;AAClB,yBAAA;;;;0BAGJM,cAACmG,CAAAA,mBAAAA,EAAAA;gBAAOW,OAAQ,EAAA,UAAA;gBAAW+B,OAASD,EAAAA,YAAAA;0BACjCvH,aAAc,CAAA;oBACb7B,EAAI,EAAA,qBAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA;;;;AAIR,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\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} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
|
@@ -274,6 +274,8 @@ const ProfilePage = ()=>{
|
|
|
274
274
|
].map((row, index)=>/*#__PURE__*/ jsx(Grid.Root, {
|
|
275
275
|
gap: 5,
|
|
276
276
|
children: row.map(({ size, ...field })=>/*#__PURE__*/ jsx(Grid.Item, {
|
|
277
|
+
xs: 12,
|
|
278
|
+
m: 6,
|
|
277
279
|
col: size,
|
|
278
280
|
direction: "column",
|
|
279
281
|
alignItems: "stretch",
|
|
@@ -386,6 +388,8 @@ const PreferencesSection = ({ localeNames })=>{
|
|
|
386
388
|
type: 'enumeration'
|
|
387
389
|
}
|
|
388
390
|
].map(({ size, ...field })=>/*#__PURE__*/ jsx(Grid.Item, {
|
|
391
|
+
xs: 12,
|
|
392
|
+
m: 6,
|
|
389
393
|
col: size,
|
|
390
394
|
direction: "column",
|
|
391
395
|
alignItems: "stretch",
|
|
@@ -453,6 +457,8 @@ const PreferencesSection = ({ localeNames })=>{
|
|
|
453
457
|
type: 'string'
|
|
454
458
|
}
|
|
455
459
|
].map(({ size, ...field })=>/*#__PURE__*/ jsx(Grid.Item, {
|
|
460
|
+
xs: 12,
|
|
461
|
+
m: 6,
|
|
456
462
|
col: size,
|
|
457
463
|
direction: "column",
|
|
458
464
|
alignItems: "stretch",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePage.mjs","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\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} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProfilePage.mjs","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\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} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.js
CHANGED
|
@@ -11,6 +11,8 @@ const ActionBoundRoutes = ()=>{
|
|
|
11
11
|
const { formatMessage } = reactIntl.useIntl();
|
|
12
12
|
const actionSection = selectedAction?.split('.')[0];
|
|
13
13
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
|
|
14
|
+
xs: 12,
|
|
15
|
+
m: 5,
|
|
14
16
|
col: 5,
|
|
15
17
|
background: "neutral150",
|
|
16
18
|
paddingTop: 6,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBoundRoutes.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx"],"sourcesContent":["import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n"],"names":["ActionBoundRoutes","value","selectedAction","routes","useApiTokenPermissions","formatMessage","useIntl","actionSection","split","_jsx","Grid","Item","col","background","paddingTop","paddingBottom","paddingLeft","paddingRight","style","minHeight","direction","alignItems","Flex","gap","map","route","config","auth","scope","includes","handler","BoundRoute","_jsxs","Typography","variant","tag","id","defaultMessage","textColor"],"mappings":";;;;;;;;MAOaA,iBAAoB,GAAA,IAAA;IAC/B,MAAM,EACJC,OAAO,EAAEC,cAAc,EAAEC,MAAM,EAAE,EAClC,GAAGC,0CAAAA,EAAAA;IACJ,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,aAAgBL,GAAAA,cAAAA,EAAgBM,KAAM,CAAA,GAAA,CAAI,CAAC,CAAE,CAAA;IAEnD,qBACEC,cAAA,CAACC,kBAAKC,IAAI,EAAA;QACRC,GAAK,EAAA,CAAA;QACLC,UAAW,EAAA,YAAA;QACXC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdC,KAAO,EAAA;YAAEC,SAAW,EAAA;AAAO,SAAA;QAC3BC,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,SAAA;
|
|
1
|
+
{"version":3,"file":"ActionBoundRoutes.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx"],"sourcesContent":["import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n xs={12}\n m={5}\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n"],"names":["ActionBoundRoutes","value","selectedAction","routes","useApiTokenPermissions","formatMessage","useIntl","actionSection","split","_jsx","Grid","Item","xs","m","col","background","paddingTop","paddingBottom","paddingLeft","paddingRight","style","minHeight","direction","alignItems","Flex","gap","map","route","config","auth","scope","includes","handler","BoundRoute","_jsxs","Typography","variant","tag","id","defaultMessage","textColor"],"mappings":";;;;;;;;MAOaA,iBAAoB,GAAA,IAAA;IAC/B,MAAM,EACJC,OAAO,EAAEC,cAAc,EAAEC,MAAM,EAAE,EAClC,GAAGC,0CAAAA,EAAAA;IACJ,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,aAAgBL,GAAAA,cAAAA,EAAgBM,KAAM,CAAA,GAAA,CAAI,CAAC,CAAE,CAAA;IAEnD,qBACEC,cAAA,CAACC,kBAAKC,IAAI,EAAA;QACRC,EAAI,EAAA,EAAA;QACJC,CAAG,EAAA,CAAA;QACHC,GAAK,EAAA,CAAA;QACLC,UAAW,EAAA,YAAA;QACXC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdC,KAAO,EAAA;YAAEC,SAAW,EAAA;AAAO,SAAA;QAC3BC,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,SAAA;AAEVrB,QAAAA,QAAAA,EAAAA,cAAAA,iBACCO,cAACe,CAAAA,iBAAAA,EAAAA;YAAKF,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,SAAA;YAAUE,GAAK,EAAA,CAAA;sBAChDlB,aACCA,IAAAA,aAAAA,IAAiBJ,UACjBA,MAAM,CAACI,cAAc,CAACmB,GAAG,CAAC,CAACC,KAAAA,GAAAA;AACzB,gBAAA,OAAOA,KAAMC,CAAAA,MAAM,CAACC,IAAI,EAAEC,KAAAA,EAAOC,QAAS7B,CAAAA,cAAAA,CAAAA,IACxCyB,KAAMK,CAAAA,OAAO,KAAK9B,cAAAA,iBAClBO,cAACwB,CAAAA,qBAAAA,EAAAA;oBAA+BN,KAAOA,EAAAA;AAAtBA,iBAAAA,EAAAA,KAAAA,CAAMK,OAAO,CAC5B,GAAA,IAAA;AACN,aAAA;2BAGJE,eAACV,CAAAA,iBAAAA,EAAAA;YAAKF,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,SAAA;YAAUE,GAAK,EAAA,CAAA;;8BACjDhB,cAAC0B,CAAAA,uBAAAA,EAAAA;oBAAWC,OAAQ,EAAA,OAAA;oBAAQC,GAAI,EAAA,IAAA;8BAC7BhC,aAAc,CAAA;wBACbiC,EAAI,EAAA,wDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;8BAEF9B,cAAC0B,CAAAA,uBAAAA,EAAAA;oBAAWE,GAAI,EAAA,GAAA;oBAAIG,SAAU,EAAA,YAAA;8BAC3BnC,aAAc,CAAA;wBACbiC,EAAI,EAAA,uDAAA;wBACJC,cACE,EAAA;AACJ,qBAAA;;;;;AAMZ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBoundRoutes.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx"],"sourcesContent":["import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n"],"names":["ActionBoundRoutes","value","selectedAction","routes","useApiTokenPermissions","formatMessage","useIntl","actionSection","split","_jsx","Grid","Item","col","background","paddingTop","paddingBottom","paddingLeft","paddingRight","style","minHeight","direction","alignItems","Flex","gap","map","route","config","auth","scope","includes","handler","BoundRoute","_jsxs","Typography","variant","tag","id","defaultMessage","textColor"],"mappings":";;;;;;MAOaA,iBAAoB,GAAA,IAAA;IAC/B,MAAM,EACJC,OAAO,EAAEC,cAAc,EAAEC,MAAM,EAAE,EAClC,GAAGC,sBAAAA,EAAAA;IACJ,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,aAAgBL,GAAAA,cAAAA,EAAgBM,KAAM,CAAA,GAAA,CAAI,CAAC,CAAE,CAAA;IAEnD,qBACEC,GAAA,CAACC,KAAKC,IAAI,EAAA;QACRC,GAAK,EAAA,CAAA;QACLC,UAAW,EAAA,YAAA;QACXC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdC,KAAO,EAAA;YAAEC,SAAW,EAAA;AAAO,SAAA;QAC3BC,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,SAAA;
|
|
1
|
+
{"version":3,"file":"ActionBoundRoutes.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx"],"sourcesContent":["import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n xs={12}\n m={5}\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n"],"names":["ActionBoundRoutes","value","selectedAction","routes","useApiTokenPermissions","formatMessage","useIntl","actionSection","split","_jsx","Grid","Item","xs","m","col","background","paddingTop","paddingBottom","paddingLeft","paddingRight","style","minHeight","direction","alignItems","Flex","gap","map","route","config","auth","scope","includes","handler","BoundRoute","_jsxs","Typography","variant","tag","id","defaultMessage","textColor"],"mappings":";;;;;;MAOaA,iBAAoB,GAAA,IAAA;IAC/B,MAAM,EACJC,OAAO,EAAEC,cAAc,EAAEC,MAAM,EAAE,EAClC,GAAGC,sBAAAA,EAAAA;IACJ,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,aAAgBL,GAAAA,cAAAA,EAAgBM,KAAM,CAAA,GAAA,CAAI,CAAC,CAAE,CAAA;IAEnD,qBACEC,GAAA,CAACC,KAAKC,IAAI,EAAA;QACRC,EAAI,EAAA,EAAA;QACJC,CAAG,EAAA,CAAA;QACHC,GAAK,EAAA,CAAA;QACLC,UAAW,EAAA,YAAA;QACXC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdC,KAAO,EAAA;YAAEC,SAAW,EAAA;AAAO,SAAA;QAC3BC,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,SAAA;AAEVrB,QAAAA,QAAAA,EAAAA,cAAAA,iBACCO,GAACe,CAAAA,IAAAA,EAAAA;YAAKF,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,SAAA;YAAUE,GAAK,EAAA,CAAA;sBAChDlB,aACCA,IAAAA,aAAAA,IAAiBJ,UACjBA,MAAM,CAACI,cAAc,CAACmB,GAAG,CAAC,CAACC,KAAAA,GAAAA;AACzB,gBAAA,OAAOA,KAAMC,CAAAA,MAAM,CAACC,IAAI,EAAEC,KAAAA,EAAOC,QAAS7B,CAAAA,cAAAA,CAAAA,IACxCyB,KAAMK,CAAAA,OAAO,KAAK9B,cAAAA,iBAClBO,GAACwB,CAAAA,UAAAA,EAAAA;oBAA+BN,KAAOA,EAAAA;AAAtBA,iBAAAA,EAAAA,KAAAA,CAAMK,OAAO,CAC5B,GAAA,IAAA;AACN,aAAA;2BAGJE,IAACV,CAAAA,IAAAA,EAAAA;YAAKF,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,SAAA;YAAUE,GAAK,EAAA,CAAA;;8BACjDhB,GAAC0B,CAAAA,UAAAA,EAAAA;oBAAWC,OAAQ,EAAA,OAAA;oBAAQC,GAAI,EAAA,IAAA;8BAC7BhC,aAAc,CAAA;wBACbiC,EAAI,EAAA,wDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;8BAEF9B,GAAC0B,CAAAA,UAAAA,EAAAA;oBAAWE,GAAI,EAAA,GAAA;oBAAIG,SAAU,EAAA,YAAA;8BAC3BnC,aAAc,CAAA;wBACbiC,EAAI,EAAA,uDAAA;wBACJC,cACE,EAAA;AACJ,qBAAA;;;;;AAMZ;;;;"}
|
|
@@ -99,7 +99,8 @@ const CollapsableContentType = ({ controllers = [], label, orderNumber = 0, disa
|
|
|
99
99
|
padding: 4,
|
|
100
100
|
children: controller?.actions && controller?.actions.map((action)=>{
|
|
101
101
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
|
|
102
|
-
|
|
102
|
+
xs: 12,
|
|
103
|
+
s: 6,
|
|
103
104
|
direction: "column",
|
|
104
105
|
alignItems: "stretch",
|
|
105
106
|
children: /*#__PURE__*/ jsxRuntime.jsxs(CheckboxWrapper, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsableContentType.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n col={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","col","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CollapsableContentType.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n xs={12}\n s={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","xs","s","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
|
|
@@ -97,7 +97,8 @@ const CollapsableContentType = ({ controllers = [], label, orderNumber = 0, disa
|
|
|
97
97
|
padding: 4,
|
|
98
98
|
children: controller?.actions && controller?.actions.map((action)=>{
|
|
99
99
|
return /*#__PURE__*/ jsx(Grid.Item, {
|
|
100
|
-
|
|
100
|
+
xs: 12,
|
|
101
|
+
s: 6,
|
|
101
102
|
direction: "column",
|
|
102
103
|
alignItems: "stretch",
|
|
103
104
|
children: /*#__PURE__*/ jsxs(CheckboxWrapper, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsableContentType.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n col={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","col","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CollapsableContentType.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n xs={12}\n s={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","xs","s","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
|