@strapi/email 5.10.4 → 5.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/chunks/{Settings-D8WJjMq7.js → Settings-BBq0I4Nx.js} +2 -2
- package/dist/admin/chunks/{Settings-D8WJjMq7.js.map → Settings-BBq0I4Nx.js.map} +1 -1
- package/dist/admin/chunks/{Settings-DIQi_hxN.mjs → Settings-PuQuVXHu.mjs} +2 -2
- package/dist/admin/chunks/{Settings-DIQi_hxN.mjs.map → Settings-PuQuVXHu.mjs.map} +1 -1
- package/dist/admin/chunks/{index-f_JAHN1f.mjs → index-BPAZGe7V.mjs} +3 -3
- package/dist/admin/chunks/{index-f_JAHN1f.mjs.map → index-BPAZGe7V.mjs.map} +1 -1
- package/dist/admin/chunks/{index-HXXlrjit.js → index-uY5sPjIN.js} +3 -3
- package/dist/admin/chunks/{index-HXXlrjit.js.map → index-uY5sPjIN.js.map} +1 -1
- package/dist/admin/chunks/uk-DWA4QHtk.js +30 -0
- package/dist/admin/chunks/uk-DWA4QHtk.js.map +1 -0
- package/dist/admin/chunks/uk-Dsq-0GyK.mjs +27 -0
- package/dist/admin/chunks/uk-Dsq-0GyK.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/package.json +8 -8
- package/dist/admin/chunks/uk-CQim5OiT.mjs +0 -4
- package/dist/admin/chunks/uk-CQim5OiT.mjs.map +0 -1
- package/dist/admin/chunks/uk-nM0yP_CK.js +0 -6
- package/dist/admin/chunks/uk-nM0yP_CK.js.map +0 -1
|
@@ -9,7 +9,7 @@ var reactIntl = require('react-intl');
|
|
|
9
9
|
var reactQuery = require('react-query');
|
|
10
10
|
var styledComponents = require('styled-components');
|
|
11
11
|
var yup = require('yup');
|
|
12
|
-
var index = require('./index-
|
|
12
|
+
var index = require('./index-uY5sPjIN.js');
|
|
13
13
|
|
|
14
14
|
function _interopNamespaceDefault(e) {
|
|
15
15
|
var n = Object.create(null);
|
|
@@ -380,4 +380,4 @@ const SettingsPage = ()=>{
|
|
|
380
380
|
};
|
|
381
381
|
|
|
382
382
|
exports.ProtectedSettingsPage = ProtectedSettingsPage;
|
|
383
|
-
//# sourceMappingURL=Settings-
|
|
383
|
+
//# sourceMappingURL=Settings-BBq0I4Nx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Settings-D8WJjMq7.js","sources":["../../../admin/src/utils/getYupInnerErrors.ts","../../../admin/src/utils/schema.ts","../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n email: yup.string().email(translatedErrors.email.id).required(translatedErrors.required.id),\n});\n","import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config },\n } = res;\n\n return config;\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"shipper-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: \"ex: Strapi No-Reply '<'no-reply@strapi.io'>'\",\n })}\n disabled\n value={data.settings.defaultFrom}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"response-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: `ex: Strapi '<'example@strapi.io'>'`,\n })}\n disabled\n value={data.settings.defaultReplyTo}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} s={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["extractValuesFromYupError","errorType","errorParams","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params","schema","yup","object","shape","email","string","translatedErrors","required","DocumentationLink","styled","a","theme","colors","primary600","ProtectedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","formatMessage","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","mutation","useMutation","body","onError","to","onSuccess","retry","useEffect","validate","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","ValidationError","mutate","Loading","_jsxs","Main","labelledBy","aria-busy","Title","name","Layouts","Header","title","subtitle","Content","form","onSubmit","Flex","direction","alignItems","gap","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","file","link","href","rel","Grid","Root","Item","col","s","Field","Label","TextInput","placeholder","disabled","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Settings-BBq0I4Nx.js","sources":["../../../admin/src/utils/getYupInnerErrors.ts","../../../admin/src/utils/schema.ts","../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n email: yup.string().email(translatedErrors.email.id).required(translatedErrors.required.id),\n});\n","import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config },\n } = res;\n\n return config;\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"shipper-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: \"ex: Strapi No-Reply '<'no-reply@strapi.io'>'\",\n })}\n disabled\n value={data.settings.defaultFrom}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"response-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: `ex: Strapi '<'example@strapi.io'>'`,\n })}\n disabled\n value={data.settings.defaultReplyTo}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} s={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["extractValuesFromYupError","errorType","errorParams","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params","schema","yup","object","shape","email","string","translatedErrors","required","DocumentationLink","styled","a","theme","colors","primary600","ProtectedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","formatMessage","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","mutation","useMutation","body","onError","to","onSuccess","retry","useEffect","validate","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","ValidationError","mutate","Loading","_jsxs","Main","labelledBy","aria-busy","Title","name","Layouts","Header","title","subtitle","Content","form","onSubmit","Flex","direction","alignItems","gap","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","file","link","href","rel","Grid","Root","Item","col","s","Field","Label","TextInput","placeholder","disabled","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { useQuery, useMutation } from 'react-query';
|
|
|
8
8
|
import { styled } from 'styled-components';
|
|
9
9
|
import * as yup from 'yup';
|
|
10
10
|
import { ValidationError } from 'yup';
|
|
11
|
-
import { P as PERMISSIONS } from './index-
|
|
11
|
+
import { P as PERMISSIONS } from './index-BPAZGe7V.mjs';
|
|
12
12
|
|
|
13
13
|
const extractValuesFromYupError = (errorType, errorParams)=>{
|
|
14
14
|
if (!errorType || !errorParams) {
|
|
@@ -359,4 +359,4 @@ const SettingsPage = ()=>{
|
|
|
359
359
|
};
|
|
360
360
|
|
|
361
361
|
export { ProtectedSettingsPage };
|
|
362
|
-
//# sourceMappingURL=Settings-
|
|
362
|
+
//# sourceMappingURL=Settings-PuQuVXHu.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Settings-DIQi_hxN.mjs","sources":["../../../admin/src/utils/getYupInnerErrors.ts","../../../admin/src/utils/schema.ts","../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n email: yup.string().email(translatedErrors.email.id).required(translatedErrors.required.id),\n});\n","import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config },\n } = res;\n\n return config;\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"shipper-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: \"ex: Strapi No-Reply '<'no-reply@strapi.io'>'\",\n })}\n disabled\n value={data.settings.defaultFrom}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"response-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: `ex: Strapi '<'example@strapi.io'>'`,\n })}\n disabled\n value={data.settings.defaultReplyTo}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} s={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["extractValuesFromYupError","errorType","errorParams","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params","schema","yup","object","shape","email","string","translatedErrors","required","DocumentationLink","styled","a","theme","colors","primary600","ProtectedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","formatMessage","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","mutation","useMutation","body","onError","to","onSuccess","retry","useEffect","validate","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","ValidationError","mutate","Loading","_jsxs","Main","labelledBy","aria-busy","Title","name","Layouts","Header","title","subtitle","Content","form","onSubmit","Flex","direction","alignItems","gap","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","file","link","href","rel","Grid","Root","Item","col","s","Field","Label","TextInput","placeholder","disabled","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":";;;;;;;;;;;;AAOA,MAAMA,yBAAAA,GAA4B,CAChCC,SACAC,EAAAA,WAAAA,GAAAA;IAEA,IAAI,CAACD,SAAa,IAAA,CAACC,WAAa,EAAA;AAC9B,QAAA,OAAO,EAAC;AACV;IAEA,OAAO;AACL,QAAA,CAACD,SAAU,GAAEC,WAAW,CAACD,SAAU;AACrC,KAAA;AACF,CAAA;AAEA,MAAME,iBAAoB,GAAA,CAACC,KACzB,GAACA,CAAAA,KAAAA,EAAOC,KAAS,IAAA,EAAE,EAAEC,MAAM,CAAqC,CAACC,GAAKC,EAAAA,YAAAA,GAAAA;QACpE,IAAIA,YAAAA,CAAaC,IAAI,EAAE;AACrBF,YAAAA,GAAG,CAACC,YAAaC,CAAAA,IAAI,CAACC,KAAK,CAAC,GAAKC,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAKD,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,IAAI,GAAG;AAChEC,gBAAAA,EAAAA,EAAIJ,aAAaK,OAAO;AACxBC,gBAAAA,cAAAA,EAAgBN,aAAaK,OAAO;gBACpCE,MAAQf,EAAAA,yBAAAA,CAA0BQ,YAAcQ,EAAAA,IAAAA,EAAMR,YAAcS,EAAAA,MAAAA;AACtE,aAAA;AACF;QAEA,OAAOV,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;;AC5BC,MAAMW,MAASC,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACvCC,IAAAA,KAAAA,EAAOH,GAAII,CAAAA,MAAM,EAAGD,CAAAA,KAAK,CAACE,gBAAiBF,CAAAA,KAAK,CAACV,EAAE,EAAEa,QAAQ,CAACD,gBAAiBC,CAAAA,QAAQ,CAACb,EAAE;AAC5F,CAAG,CAAA;;ACqBH,MAAMc,iBAAAA,GAAoBC,MAAOC,CAAAA,CAAC;SACzB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;AAClD,CAAC;AAMYC,MAAAA,qBAAAA,GAAwB,kBACnCC,GAAA,CAACC,KAAKC,OAAO,EAAA;AAACC,QAAAA,WAAAA,EAAaC,YAAYC,QAAQ;AAC7C,QAAA,QAAA,gBAAAL,GAACM,CAAAA,YAAAA,EAAAA,EAAAA;AAEH,KAAA;AAEF,MAAMA,YAAe,GAAA,IAAA;IACnB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGC,cAAAA,EAAAA;AAEtB,IAAA,MAAM,CAACC,WAAaC,EAAAA,cAAAA,CAAe,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AACrD,IAAA,MAAM,CAACC,kBAAoBC,EAAAA,qBAAAA,CAAsB,GAAGH,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;;;AAInE,IAAA,MAAM,CAACG,UAAYC,EAAAA,aAAAA,CAAc,GAAGL,KAAMC,CAAAA,QAAQ,CAAsB,EAAC,CAAA;AAEzE,IAAA,MAAM,EAAEK,IAAI,EAAEC,SAAS,EAAE,GAAGC,QAAS,CAAA;AAAC,QAAA,OAAA;AAAS,QAAA;KAAW,EAAE,UAAA;QAC1D,MAAMC,GAAAA,GAAM,MAAMd,GAAmB,CAAA,iBAAA,CAAA;AACrC,QAAA,MAAM,EACJW,IAAM,EAAA,EAAEI,MAAM,EAAE,EACjB,GAAGD,GAAAA;QAEJ,OAAOC,MAAAA;AACT,KAAA,CAAA;IAEA,MAAMC,QAAAA,GAAWC,YACf,OAAOC,IAAAA,GAAAA;AACL,QAAA,MAAMjB,KAAK,aAAeiB,EAAAA,IAAAA,CAAAA;KAE5B,EAAA;AACEC,QAAAA,OAAAA,CAAAA,GAAAA;YACEvB,kBAAoB,CAAA;gBAClBxB,IAAM,EAAA,QAAA;AACNH,gBAAAA,OAAAA,EAAS6B,aACP,CAAA;oBACE9B,EAAI,EAAA,qDAAA;oBACJE,cAAgB,EAAA;iBAElB,EAAA;oBAAEkD,EAAIjB,EAAAA;AAAY,iBAAA;AAEtB,aAAA,CAAA;AACF,SAAA;AACAkB,QAAAA,SAAAA,CAAAA,GAAAA;YACEzB,kBAAoB,CAAA;gBAClBxB,IAAM,EAAA,SAAA;AACNH,gBAAAA,OAAAA,EAAS6B,aACP,CAAA;oBACE9B,EAAI,EAAA,uDAAA;oBACJE,cAAgB,EAAA;iBAElB,EAAA;oBAAEkD,EAAIjB,EAAAA;AAAY,iBAAA;AAEtB,aAAA,CAAA;AACF,SAAA;QACAmB,KAAO,EAAA;AACT,KAAA,CAAA;AAGFjB,IAAAA,KAAAA,CAAMkB,SAAS,CAAC,IAAA;AACdjD,QAAAA,MAAAA,CACGkD,QAAQ,CAAC;YAAE9C,KAAOyB,EAAAA;SAAe,EAAA;YAAEsB,UAAY,EAAA;SAC/CC,CAAAA,CAAAA,IAAI,CAAC,IAAMlB,qBAAAA,CAAsB,OACjCmB,KAAK,CAAC,IAAMnB,qBAAsB,CAAA,KAAA,CAAA,CAAA;KACpC,EAAA;AAACL,QAAAA;AAAY,KAAA,CAAA;AAEhB,IAAA,MAAMyB,eAAe,CAACC,KAAAA,GAAAA;AACpBzB,QAAAA,cAAAA,CAAe,IAAMyB,KAAAA,CAAMC,MAAM,CAACC,KAAK,CAAA;AACzC,KAAA;AAEA,IAAA,MAAMC,eAAe,OAAOH,KAAAA,GAAAA;AAC1BA,QAAAA,KAAAA,CAAMI,cAAc,EAAA;QAEpB,IAAI;YACF,MAAM3D,MAAAA,CAAOkD,QAAQ,CAAC;gBAAE9C,KAAOyB,EAAAA;aAAe,EAAA;gBAAEsB,UAAY,EAAA;AAAM,aAAA,CAAA;AACpE,SAAA,CAAE,OAAOjE,KAAO,EAAA;AACd,YAAA,IAAIA,iBAAiB0E,eAAiB,EAAA;AACpCxB,gBAAAA,aAAAA,CAAcnD,iBAAkBC,CAAAA,KAAAA,CAAAA,CAAAA;AAClC;AACF;AAEAwD,QAAAA,QAAAA,CAASmB,MAAM,CAAC;YAAEf,EAAIjB,EAAAA;AAAY,SAAA,CAAA;AACpC,KAAA;AAEA,IAAA,IAAIS,SAAW,EAAA;QACb,qBAAOvB,GAAA,CAACC,KAAK8C,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,qBACEC,IAAA,CAAC/C,KAAKgD,IAAI,EAAA;QAACC,UAAW,EAAA,OAAA;QAAQC,WAAW5B,EAAAA,SAAAA,IAAaI,SAASJ,SAAS;;AACtE,0BAAAvB,GAAA,CAACC,KAAKmD,KAAK,EAAA;0BACR3C,aACC,CAAA;oBAAE9B,EAAI,EAAA,oBAAA;oBAAsBE,cAAgB,EAAA;iBAC5C,EAAA;AACEwE,oBAAAA,IAAAA,EAAM5C,aAAc,CAAA;wBAClB9B,EAAI,EAAA,mCAAA;wBACJE,cAAgB,EAAA;AAClB,qBAAA;AACF,iBAAA;;AAGJ,0BAAAmB,GAAA,CAACsD,QAAQC,MAAM,EAAA;gBACb5E,EAAG,EAAA,OAAA;AACH6E,gBAAAA,KAAAA,EAAO/C,aAAc,CAAA;oBACnB9B,EAAI,EAAA,mCAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACA4E,gBAAAA,QAAAA,EAAUhD,aAAc,CAAA;oBACtB9B,EAAI,EAAA,sCAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA;;AAGF,0BAAAmB,GAAA,CAACsD,QAAQI,OAAO,EAAA;AACbpC,gBAAAA,QAAAA,EAAAA,IAAAA,kBACCtB,GAAC2D,CAAAA,MAAAA,EAAAA;oBAAKC,QAAUjB,EAAAA,YAAAA;AACd,oBAAA,QAAA,gBAAAK,IAACa,CAAAA,IAAAA,EAAAA;wBAAKC,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,SAAA;wBAAUC,GAAK,EAAA,CAAA;;0CACjDhE,GAACiE,CAAAA,GAAAA,EAAAA;gCACCC,UAAW,EAAA,UAAA;gCACXC,SAAS,EAAA,IAAA;gCACTC,MAAO,EAAA,cAAA;gCACPC,UAAY,EAAA,CAAA;gCACZC,aAAe,EAAA,CAAA;gCACfC,WAAa,EAAA,CAAA;gCACbC,YAAc,EAAA,CAAA;AAEd,gCAAA,QAAA,gBAAAxB,IAACa,CAAAA,IAAAA,EAAAA;oCAAKC,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,SAAA;oCAAUC,GAAK,EAAA,CAAA;;sDACjDhB,IAACa,CAAAA,IAAAA,EAAAA;4CAAKC,SAAU,EAAA,QAAA;4CAASC,UAAW,EAAA,SAAA;4CAAUC,GAAK,EAAA,CAAA;;8DACjDhE,GAACyE,CAAAA,UAAAA,EAAAA;oDAAWC,OAAQ,EAAA,OAAA;oDAAQC,GAAI,EAAA,IAAA;8DAC7BlE,aAAc,CAAA;wDACb9B,EAAI,EAAA,0CAAA;wDACJE,cAAgB,EAAA;AAClB,qDAAA;;8DAEFmB,GAACyE,CAAAA,UAAAA,EAAAA;8DACEhE,aACC,CAAA;wDACE9B,EAAI,EAAA,gDAAA;wDACJE,cACE,EAAA;qDAEJ,EAAA;wDACE+F,IAAM,EAAA,qBAAA;AACNC,wDAAAA,IAAAA,gBACE7E,GAACP,CAAAA,iBAAAA,EAAAA;4DACCqF,IAAK,EAAA,iEAAA;4DACLrC,MAAO,EAAA,QAAA;4DACPsC,GAAI,EAAA,qBAAA;sEAEHtE,aAAc,CAAA;gEACb9B,EAAI,EAAA,YAAA;gEACJE,cAAgB,EAAA;AAClB,6DAAA;;AAGN,qDAAA;;;;AAKN,sDAAAmE,IAAA,CAACgC,KAAKC,IAAI,EAAA;4CAACjB,GAAK,EAAA,CAAA;;AACd,8DAAAhE,GAAA,CAACgF,KAAKE,IAAI,EAAA;oDAACC,GAAK,EAAA,CAAA;oDAAGC,CAAG,EAAA,EAAA;oDAAItB,SAAU,EAAA,QAAA;oDAASC,UAAW,EAAA,SAAA;4EACtDf,IAAA,CAACqC,MAAMJ,IAAI,EAAA;wDAAC5B,IAAK,EAAA,eAAA;;AACf,0EAAArD,GAAA,CAACqF,MAAMC,KAAK,EAAA;0EACT7E,aAAc,CAAA;oEACb9B,EAAI,EAAA,+CAAA;oEACJE,cAAgB,EAAA;AAClB,iEAAA;;0EAEFmB,GAACuF,CAAAA,SAAAA,EAAAA;AACCC,gEAAAA,WAAAA,EAAa/E,aAAc,CAAA;oEACzB9B,EAAI,EAAA,qDAAA;oEACJE,cAAgB,EAAA;AAClB,iEAAA,CAAA;gEACA4G,QAAQ,EAAA,IAAA;gEACR/C,KAAOpB,EAAAA,IAAAA,CAAKjB,QAAQ,CAACqF;;;;;AAK3B,8DAAA1F,GAAA,CAACgF,KAAKE,IAAI,EAAA;oDAACC,GAAK,EAAA,CAAA;oDAAGC,CAAG,EAAA,EAAA;oDAAItB,SAAU,EAAA,QAAA;oDAASC,UAAW,EAAA,SAAA;4EACtDf,IAAA,CAACqC,MAAMJ,IAAI,EAAA;wDAAC5B,IAAK,EAAA,gBAAA;;AACf,0EAAArD,GAAA,CAACqF,MAAMC,KAAK,EAAA;0EACT7E,aAAc,CAAA;oEACb9B,EAAI,EAAA,kDAAA;oEACJE,cAAgB,EAAA;AAClB,iEAAA;;0EAEFmB,GAACuF,CAAAA,SAAAA,EAAAA;AACCC,gEAAAA,WAAAA,EAAa/E,aAAc,CAAA;oEACzB9B,EAAI,EAAA,wDAAA;oEACJE,cAAgB,EAAA,CAAC,kCAAkC;AACrD,iEAAA,CAAA;gEACA4G,QAAQ,EAAA,IAAA;gEACR/C,KAAOpB,EAAAA,IAAAA,CAAKjB,QAAQ,CAACsF;;;;;AAK3B,8DAAA3F,GAAA,CAACgF,KAAKE,IAAI,EAAA;oDAACC,GAAK,EAAA,CAAA;oDAAGC,CAAG,EAAA,EAAA;oDAAItB,SAAU,EAAA,QAAA;oDAASC,UAAW,EAAA,SAAA;4EACtDf,IAAA,CAACqC,MAAMJ,IAAI,EAAA;wDAAC5B,IAAK,EAAA,gBAAA;;AACf,0EAAArD,GAAA,CAACqF,MAAMC,KAAK,EAAA;0EACT7E,aAAc,CAAA;oEACb9B,EAAI,EAAA,4CAAA;oEACJE,cAAgB,EAAA;AAClB,iEAAA;;0EAEFmB,GAAC4F,CAAAA,YAAAA,EAAAA;gEAAaH,QAAQ,EAAA,IAAA;AAAC/C,gEAAAA,KAAAA,EAAOpB,KAAKuE,QAAQ;AACzC,gEAAA,QAAA,gBAAA7F,GAAC8F,CAAAA,kBAAAA,EAAAA;AAAmBpD,oEAAAA,KAAAA,EAAOpB,KAAKuE,QAAQ;AACrCvE,oEAAAA,QAAAA,EAAAA,IAAAA,CAAKuE;;;;;;;;;;;0CASpB7C,IAACa,CAAAA,IAAAA,EAAAA;gCACCE,UAAW,EAAA,SAAA;gCACXG,UAAW,EAAA,UAAA;gCACXJ,SAAU,EAAA,QAAA;gCACVE,GAAK,EAAA,CAAA;gCACLG,SAAS,EAAA,IAAA;gCACTC,MAAO,EAAA,cAAA;gCACPC,UAAY,EAAA,CAAA;gCACZC,aAAe,EAAA,CAAA;gCACfC,WAAa,EAAA,CAAA;gCACbC,YAAc,EAAA,CAAA;;kDAEdxE,GAACyE,CAAAA,UAAAA,EAAAA;wCAAWC,OAAQ,EAAA,OAAA;wCAAQC,GAAI,EAAA,IAAA;kDAC7BlE,aAAc,CAAA;4CACb9B,EAAI,EAAA,wCAAA;4CACJE,cAAgB,EAAA;AAClB,yCAAA;;AAGF,kDAAAmE,IAAA,CAACgC,KAAKC,IAAI,EAAA;wCAACjB,GAAK,EAAA,CAAA;;AACd,0DAAAhE,GAAA,CAACgF,KAAKE,IAAI,EAAA;gDAACC,GAAK,EAAA,CAAA;gDAAGC,CAAG,EAAA,EAAA;gDAAItB,SAAU,EAAA,QAAA;gDAASC,UAAW,EAAA,SAAA;wEACtDf,IAAA,CAACqC,MAAMJ,IAAI,EAAA;oDACT5B,IAAK,EAAA,cAAA;AACLlF,oDAAAA,KAAAA,EACEiD,UAAW/B,CAAAA,KAAK,EAAEV,EAAAA,IAClB8B,aAAc,CAAA;AACZ9B,wDAAAA,EAAAA,EAAI,CAAC,MAAM,EAAEyC,WAAW/B,KAAK,EAAEV,GAAG,CAAC;wDACnCE,cAAgB,EAAA;AAClB,qDAAA,CAAA;;AAGF,sEAAAmB,GAAA,CAACqF,MAAMC,KAAK,EAAA;sEACT7E,aAAc,CAAA;gEACb9B,EAAI,EAAA,+CAAA;gEACJE,cAAgB,EAAA;AAClB,6DAAA;;sEAEFmB,GAACuF,CAAAA,SAAAA,EAAAA;4DACCQ,QAAUxD,EAAAA,YAAAA;4DACVG,KAAO5B,EAAAA,WAAAA;AACP0E,4DAAAA,WAAAA,EAAa/E,aAAc,CAAA;gEACzB9B,EAAI,EAAA,qDAAA;gEACJE,cAAgB,EAAA;AAClB,6DAAA;;;;;AAIN,0DAAAmB,GAAA,CAACgF,KAAKE,IAAI,EAAA;gDAACC,GAAK,EAAA,CAAA;gDAAGC,CAAG,EAAA,EAAA;gDAAItB,SAAU,EAAA,QAAA;gDAASC,UAAW,EAAA,OAAA;AACtD,gDAAA,QAAA,gBAAA/D,GAACgG,CAAAA,MAAAA,EAAAA;AACCC,oDAAAA,OAAAA,EAAStE,SAASJ,SAAS;AAC3BkE,oDAAAA,QAAAA,EAAU,CAACvE,kBAAAA;oDACXnC,IAAK,EAAA,QAAA;AACLmH,oDAAAA,SAAAA,gBAAWlG,GAACmG,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;8DAEX1F,aAAc,CAAA;wDACb9B,EAAI,EAAA,+CAAA;wDACJE,cAAgB,EAAA;AAClB,qDAAA;;;;;;;;;;;;;AAWtB,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"Settings-PuQuVXHu.mjs","sources":["../../../admin/src/utils/getYupInnerErrors.ts","../../../admin/src/utils/schema.ts","../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n email: yup.string().email(translatedErrors.email.id).required(translatedErrors.required.id),\n});\n","import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config },\n } = res;\n\n return config;\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"shipper-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: \"ex: Strapi No-Reply '<'no-reply@strapi.io'>'\",\n })}\n disabled\n value={data.settings.defaultFrom}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"response-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: `ex: Strapi '<'example@strapi.io'>'`,\n })}\n disabled\n value={data.settings.defaultReplyTo}\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} s={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["extractValuesFromYupError","errorType","errorParams","getYupInnerErrors","error","inner","reduce","acc","currentError","path","split","join","id","message","defaultMessage","values","type","params","schema","yup","object","shape","email","string","translatedErrors","required","DocumentationLink","styled","a","theme","colors","primary600","ProtectedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","formatMessage","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","mutation","useMutation","body","onError","to","onSuccess","retry","useEffect","validate","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","ValidationError","mutate","Loading","_jsxs","Main","labelledBy","aria-busy","Title","name","Layouts","Header","title","subtitle","Content","form","onSubmit","Flex","direction","alignItems","gap","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","file","link","href","rel","Grid","Root","Item","col","s","Field","Label","TextInput","placeholder","disabled","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ function __variableDynamicImportRuntime1__(path) {
|
|
|
40
40
|
case './translations/sk.json': return import('./sk-DDJmUHcx.mjs');
|
|
41
41
|
case './translations/th.json': return import('./th-BqTCSpUc.mjs');
|
|
42
42
|
case './translations/tr.json': return import('./tr-BmrcZCoj.mjs');
|
|
43
|
-
case './translations/uk.json': return import('./uk-
|
|
43
|
+
case './translations/uk.json': return import('./uk-Dsq-0GyK.mjs');
|
|
44
44
|
case './translations/vi.json': return import('./vi-CO9gCtmD.mjs');
|
|
45
45
|
case './translations/zh-Hans.json': return import('./zh-Hans-ChWc00HT.mjs');
|
|
46
46
|
case './translations/zh.json': return import('./zh-CZQ4DV5L.mjs');
|
|
@@ -70,7 +70,7 @@ const admin = {
|
|
|
70
70
|
},
|
|
71
71
|
id: 'settings',
|
|
72
72
|
to: 'email',
|
|
73
|
-
Component: ()=>import('./Settings-
|
|
73
|
+
Component: ()=>import('./Settings-PuQuVXHu.mjs').then((mod)=>({
|
|
74
74
|
default: mod.ProtectedSettingsPage
|
|
75
75
|
})),
|
|
76
76
|
permissions: PERMISSIONS.settings
|
|
@@ -102,4 +102,4 @@ const admin = {
|
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
export { PERMISSIONS as P, admin as a };
|
|
105
|
-
//# sourceMappingURL=index-
|
|
105
|
+
//# sourceMappingURL=index-BPAZGe7V.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BPAZGe7V.mjs","sources":["../../../admin/src/constants.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/index.ts"],"sourcesContent":["export const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n settings: [{ action: 'plugin::email.settings.read', subject: null }],\n};\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import { PERMISSIONS } from './constants';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { Plugin } from '@strapi/types';\n\nconst admin: Plugin.Config.AdminInput = {\n // TODO typing app in strapi/types as every plugin needs it\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: any) {\n // Create the email settings section\n app.createSettingSection(\n {\n id: 'email',\n intlLabel: { id: 'email.SettingsNav.section-label', defaultMessage: 'Email Plugin' },\n },\n [\n {\n intlLabel: {\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Settings',\n },\n id: 'settings',\n to: 'email',\n Component: () =>\n import('./pages/Settings').then((mod) => ({\n default: mod.ProtectedSettingsPage,\n })),\n permissions: PERMISSIONS.settings,\n },\n ]\n );\n app.registerPlugin({\n id: 'email',\n name: 'email',\n });\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n bootstrap() {},\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'email'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["PERMISSIONS","settings","action","subject","prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current","admin","register","app","createSettingSection","id","intlLabel","defaultMessage","to","Component","then","mod","default","ProtectedSettingsPage","permissions","registerPlugin","name","bootstrap","registerTrads","locales","importedTrads","Promise","all","map","locale","data","catch","resolve"],"mappings":"MAAaA,WAAc,GAAA;;;;;IAKzBC,QAAU,EAAA;AAAC,QAAA;YAAEC,MAAQ,EAAA,6BAAA;YAA+BC,OAAS,EAAA;AAAK;AAAE;AACtE;;ACJA,MAAMC,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA,MAAME,KAAkC,GAAA;;;AAGtCC,IAAAA,QAAAA,CAAAA,CAASC,GAAQ,EAAA;;AAEfA,QAAAA,GAAAA,CAAIC,oBAAoB,CACtB;YACEC,EAAI,EAAA,OAAA;YACJC,SAAW,EAAA;gBAAED,EAAI,EAAA,iCAAA;gBAAmCE,cAAgB,EAAA;AAAe;SAErF,EAAA;AACE,YAAA;gBACED,SAAW,EAAA;oBACTD,EAAI,EAAA,mCAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA;gBACAF,EAAI,EAAA,UAAA;gBACJG,EAAI,EAAA,OAAA;gBACJC,SAAW,EAAA,IACT,OAAO,yBAAA,CAAA,CAAoBC,IAAI,CAAC,CAACC,OAAS;AACxCC,4BAAAA,OAAAA,EAASD,IAAIE;yBACf,CAAA,CAAA;AACFC,gBAAAA,WAAAA,EAAazB,YAAYC;AAC3B;AACD,SAAA,CAAA;AAEHa,QAAAA,GAAAA,CAAIY,cAAc,CAAC;YACjBV,EAAI,EAAA,OAAA;YACJW,IAAM,EAAA;AACR,SAAA,CAAA;AACF,KAAA;;IAEAC,SAAa,CAAA,GAAA,EAAA;IACb,MAAMC,aAAAA,CAAAA,CAAc,EAAEC,OAAO,EAAyB,EAAA;QACpD,MAAMC,aAAAA,GAAgB,MAAMC,OAAQC,CAAAA,GAAG,CACrCH,OAAQI,CAAAA,GAAG,CAAC,CAACC,MAAAA,GAAAA;AACX,YAAA,OAAO,iCAAM,CAAC,CAAC,eAAe,EAAEA,MAAO,CAAA,KAAK,CAAC,CAAA,CAC1Cd,IAAI,CAAC,CAAC,EAAEE,OAAAA,EAASa,IAAI,EAAE,GAAA;gBACtB,OAAO;AACLA,oBAAAA,IAAAA,EAAMhC,yBAAyBgC,IAAM,EAAA,OAAA,CAAA;AACrCD,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA,CACCE,KAAK,CAAC,IAAA;gBACL,OAAO;AACLD,oBAAAA,IAAAA,EAAM,EAAC;AACPD,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA;AACJ,SAAA,CAAA,CAAA;QAGF,OAAOH,OAAAA,CAAQM,OAAO,CAACP,aAAAA,CAAAA;AACzB;AACF;;;;"}
|
|
@@ -42,7 +42,7 @@ function __variableDynamicImportRuntime1__(path) {
|
|
|
42
42
|
case './translations/sk.json': return Promise.resolve().then(function () { return require('./sk-N47IGfwH.js'); });
|
|
43
43
|
case './translations/th.json': return Promise.resolve().then(function () { return require('./th-OW3_QVEZ.js'); });
|
|
44
44
|
case './translations/tr.json': return Promise.resolve().then(function () { return require('./tr-n7J_y4Bh.js'); });
|
|
45
|
-
case './translations/uk.json': return Promise.resolve().then(function () { return require('./uk-
|
|
45
|
+
case './translations/uk.json': return Promise.resolve().then(function () { return require('./uk-DWA4QHtk.js'); });
|
|
46
46
|
case './translations/vi.json': return Promise.resolve().then(function () { return require('./vi-DjJBc-ms.js'); });
|
|
47
47
|
case './translations/zh-Hans.json': return Promise.resolve().then(function () { return require('./zh-Hans-D0bb9tfC.js'); });
|
|
48
48
|
case './translations/zh.json': return Promise.resolve().then(function () { return require('./zh-9wNbbqde.js'); });
|
|
@@ -72,7 +72,7 @@ const admin = {
|
|
|
72
72
|
},
|
|
73
73
|
id: 'settings',
|
|
74
74
|
to: 'email',
|
|
75
|
-
Component: ()=>Promise.resolve().then(function () { return require('./Settings-
|
|
75
|
+
Component: ()=>Promise.resolve().then(function () { return require('./Settings-BBq0I4Nx.js'); }).then((mod)=>({
|
|
76
76
|
default: mod.ProtectedSettingsPage
|
|
77
77
|
})),
|
|
78
78
|
permissions: PERMISSIONS.settings
|
|
@@ -105,4 +105,4 @@ const admin = {
|
|
|
105
105
|
|
|
106
106
|
exports.PERMISSIONS = PERMISSIONS;
|
|
107
107
|
exports.admin = admin;
|
|
108
|
-
//# sourceMappingURL=index-
|
|
108
|
+
//# sourceMappingURL=index-uY5sPjIN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-uY5sPjIN.js","sources":["../../../admin/src/constants.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/index.ts"],"sourcesContent":["export const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n settings: [{ action: 'plugin::email.settings.read', subject: null }],\n};\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import { PERMISSIONS } from './constants';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { Plugin } from '@strapi/types';\n\nconst admin: Plugin.Config.AdminInput = {\n // TODO typing app in strapi/types as every plugin needs it\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: any) {\n // Create the email settings section\n app.createSettingSection(\n {\n id: 'email',\n intlLabel: { id: 'email.SettingsNav.section-label', defaultMessage: 'Email Plugin' },\n },\n [\n {\n intlLabel: {\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Settings',\n },\n id: 'settings',\n to: 'email',\n Component: () =>\n import('./pages/Settings').then((mod) => ({\n default: mod.ProtectedSettingsPage,\n })),\n permissions: PERMISSIONS.settings,\n },\n ]\n );\n app.registerPlugin({\n id: 'email',\n name: 'email',\n });\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n bootstrap() {},\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'email'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["PERMISSIONS","settings","action","subject","prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current","admin","register","app","createSettingSection","id","intlLabel","defaultMessage","to","Component","then","mod","default","ProtectedSettingsPage","permissions","registerPlugin","name","bootstrap","registerTrads","locales","importedTrads","Promise","all","map","locale","data","catch","resolve"],"mappings":";;MAAaA,WAAc,GAAA;;;;;IAKzBC,QAAU,EAAA;AAAC,QAAA;YAAEC,MAAQ,EAAA,6BAAA;YAA+BC,OAAS,EAAA;AAAK;AAAE;AACtE;;ACJA,MAAMC,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA,MAAME,KAAkC,GAAA;;;AAGtCC,IAAAA,QAAAA,CAAAA,CAASC,GAAQ,EAAA;;AAEfA,QAAAA,GAAAA,CAAIC,oBAAoB,CACtB;YACEC,EAAI,EAAA,OAAA;YACJC,SAAW,EAAA;gBAAED,EAAI,EAAA,iCAAA;gBAAmCE,cAAgB,EAAA;AAAe;SAErF,EAAA;AACE,YAAA;gBACED,SAAW,EAAA;oBACTD,EAAI,EAAA,mCAAA;oBACJE,cAAgB,EAAA;AAClB,iBAAA;gBACAF,EAAI,EAAA,UAAA;gBACJG,EAAI,EAAA,OAAA;gBACJC,SAAW,EAAA,IACT,oDAAO,wBAAA,KAAA,CAAoBC,IAAI,CAAC,CAACC,OAAS;AACxCC,4BAAAA,OAAAA,EAASD,IAAIE;yBACf,CAAA,CAAA;AACFC,gBAAAA,WAAAA,EAAazB,YAAYC;AAC3B;AACD,SAAA,CAAA;AAEHa,QAAAA,GAAAA,CAAIY,cAAc,CAAC;YACjBV,EAAI,EAAA,OAAA;YACJW,IAAM,EAAA;AACR,SAAA,CAAA;AACF,KAAA;;IAEAC,SAAa,CAAA,GAAA,EAAA;IACb,MAAMC,aAAAA,CAAAA,CAAc,EAAEC,OAAO,EAAyB,EAAA;QACpD,MAAMC,aAAAA,GAAgB,MAAMC,OAAQC,CAAAA,GAAG,CACrCH,OAAQI,CAAAA,GAAG,CAAC,CAACC,MAAAA,GAAAA;AACX,YAAA,OAAO,iCAAM,CAAC,CAAC,eAAe,EAAEA,MAAO,CAAA,KAAK,CAAC,CAAA,CAC1Cd,IAAI,CAAC,CAAC,EAAEE,OAAAA,EAASa,IAAI,EAAE,GAAA;gBACtB,OAAO;AACLA,oBAAAA,IAAAA,EAAMhC,yBAAyBgC,IAAM,EAAA,OAAA,CAAA;AACrCD,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA,CACCE,KAAK,CAAC,IAAA;gBACL,OAAO;AACLD,oBAAAA,IAAAA,EAAM,EAAC;AACPD,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA;AACJ,SAAA,CAAA,CAAA;QAGF,OAAOH,OAAAA,CAAQM,OAAO,CAACP,aAAAA,CAAAA;AACzB;AACF;;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var link = "Посилання";
|
|
4
|
+
var uk = {
|
|
5
|
+
link: link,
|
|
6
|
+
"Settings.email.plugin.button.test-email": "Надіслати тестовий лист",
|
|
7
|
+
"Settings.email.plugin.label.defaultFrom": "Електронна пошта відправника за замовчуванням",
|
|
8
|
+
"Settings.email.plugin.label.defaultReplyTo": "Електронна пошта для відповіді за замовчуванням",
|
|
9
|
+
"Settings.email.plugin.label.provider": "Постачальник електронної пошти",
|
|
10
|
+
"Settings.email.plugin.label.testAddress": "Електронна адреса отримувача",
|
|
11
|
+
"Settings.email.plugin.notification.config.error": "Не вдалося отримати конфігурацію електронної пошти",
|
|
12
|
+
"Settings.email.plugin.notification.data.loaded": "Дані налаштувань електронної пошти завантажено",
|
|
13
|
+
"Settings.email.plugin.notification.test.error": "Не вдалося відправити тестовий лист на {to}",
|
|
14
|
+
"Settings.email.plugin.notification.test.success": "Тест електронної пошти успішно виконано, перевірте поштову скриньку {to}",
|
|
15
|
+
"Settings.email.plugin.placeholder.defaultFrom": "нп: Strapi No-Reply <no-reply@strapi.io>",
|
|
16
|
+
"Settings.email.plugin.placeholder.defaultReplyTo": "нп: Strapi <example@strapi.io>",
|
|
17
|
+
"Settings.email.plugin.placeholder.testAddress": "нп: developer@example.com",
|
|
18
|
+
"Settings.email.plugin.subTitle": "Перевірте налаштування плаґіна електронної пошти",
|
|
19
|
+
"Settings.email.plugin.text.configuration": "Плаґін налаштовано через файл {file}, перегляньте це посилання {link} для документації.",
|
|
20
|
+
"Settings.email.plugin.title": "Конфігурація",
|
|
21
|
+
"Settings.email.plugin.title.config": "Конфігурація",
|
|
22
|
+
"Settings.email.plugin.title.test": "Тест доставки електронної пошти",
|
|
23
|
+
"SettingsNav.link.settings": "Налаштування",
|
|
24
|
+
"SettingsNav.section-label": "Плаґін електронної пошти",
|
|
25
|
+
"components.Input.error.validation.email": "Це неправильна електронна адреса"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.default = uk;
|
|
29
|
+
exports.link = link;
|
|
30
|
+
//# sourceMappingURL=uk-DWA4QHtk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uk-DWA4QHtk.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var link = "Посилання";
|
|
2
|
+
var uk = {
|
|
3
|
+
link: link,
|
|
4
|
+
"Settings.email.plugin.button.test-email": "Надіслати тестовий лист",
|
|
5
|
+
"Settings.email.plugin.label.defaultFrom": "Електронна пошта відправника за замовчуванням",
|
|
6
|
+
"Settings.email.plugin.label.defaultReplyTo": "Електронна пошта для відповіді за замовчуванням",
|
|
7
|
+
"Settings.email.plugin.label.provider": "Постачальник електронної пошти",
|
|
8
|
+
"Settings.email.plugin.label.testAddress": "Електронна адреса отримувача",
|
|
9
|
+
"Settings.email.plugin.notification.config.error": "Не вдалося отримати конфігурацію електронної пошти",
|
|
10
|
+
"Settings.email.plugin.notification.data.loaded": "Дані налаштувань електронної пошти завантажено",
|
|
11
|
+
"Settings.email.plugin.notification.test.error": "Не вдалося відправити тестовий лист на {to}",
|
|
12
|
+
"Settings.email.plugin.notification.test.success": "Тест електронної пошти успішно виконано, перевірте поштову скриньку {to}",
|
|
13
|
+
"Settings.email.plugin.placeholder.defaultFrom": "нп: Strapi No-Reply <no-reply@strapi.io>",
|
|
14
|
+
"Settings.email.plugin.placeholder.defaultReplyTo": "нп: Strapi <example@strapi.io>",
|
|
15
|
+
"Settings.email.plugin.placeholder.testAddress": "нп: developer@example.com",
|
|
16
|
+
"Settings.email.plugin.subTitle": "Перевірте налаштування плаґіна електронної пошти",
|
|
17
|
+
"Settings.email.plugin.text.configuration": "Плаґін налаштовано через файл {file}, перегляньте це посилання {link} для документації.",
|
|
18
|
+
"Settings.email.plugin.title": "Конфігурація",
|
|
19
|
+
"Settings.email.plugin.title.config": "Конфігурація",
|
|
20
|
+
"Settings.email.plugin.title.test": "Тест доставки електронної пошти",
|
|
21
|
+
"SettingsNav.link.settings": "Налаштування",
|
|
22
|
+
"SettingsNav.section-label": "Плаґін електронної пошти",
|
|
23
|
+
"components.Input.error.validation.email": "Це неправильна електронна адреса"
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { uk as default, link };
|
|
27
|
+
//# sourceMappingURL=uk-Dsq-0GyK.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uk-Dsq-0GyK.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/admin/index.js
CHANGED
package/dist/admin/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { a as default } from './chunks/index-
|
|
1
|
+
export { a as default } from './chunks/index-BPAZGe7V.mjs';
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/email",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.11.1",
|
|
4
4
|
"description": "Easily configure your Strapi application to send emails.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -56,10 +56,10 @@
|
|
|
56
56
|
"watch": "run -T rollup -c -w"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@strapi/design-system": "2.0.0-rc.
|
|
60
|
-
"@strapi/icons": "2.0.0-rc.
|
|
61
|
-
"@strapi/provider-email-sendmail": "5.
|
|
62
|
-
"@strapi/utils": "5.
|
|
59
|
+
"@strapi/design-system": "2.0.0-rc.18",
|
|
60
|
+
"@strapi/icons": "2.0.0-rc.18",
|
|
61
|
+
"@strapi/provider-email-sendmail": "5.11.1",
|
|
62
|
+
"@strapi/utils": "5.11.1",
|
|
63
63
|
"koa2-ratelimit": "^1.1.3",
|
|
64
64
|
"lodash": "4.17.21",
|
|
65
65
|
"react-intl": "6.6.2",
|
|
@@ -67,12 +67,12 @@
|
|
|
67
67
|
"yup": "0.32.9"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
|
-
"@strapi/admin": "5.
|
|
71
|
-
"@strapi/types": "5.
|
|
70
|
+
"@strapi/admin": "5.11.1",
|
|
71
|
+
"@strapi/types": "5.11.1",
|
|
72
72
|
"@testing-library/react": "15.0.7",
|
|
73
73
|
"@types/koa": "2.13.4",
|
|
74
74
|
"@types/lodash": "^4.14.191",
|
|
75
|
-
"koa": "2.15.
|
|
75
|
+
"koa": "2.15.4",
|
|
76
76
|
"koa-body": "6.0.1",
|
|
77
77
|
"msw": "1.3.0",
|
|
78
78
|
"react": "18.3.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uk-CQim5OiT.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uk-nM0yP_CK.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|