@strapi/email 5.8.1 → 5.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist/admin/chunks/Settings-D8WJjMq7.js +383 -0
  2. package/dist/admin/chunks/Settings-D8WJjMq7.js.map +1 -0
  3. package/dist/admin/chunks/Settings-DIQi_hxN.mjs +362 -0
  4. package/dist/admin/chunks/Settings-DIQi_hxN.mjs.map +1 -0
  5. package/dist/admin/chunks/ar-BDHMRt_b.js +6 -0
  6. package/dist/admin/chunks/ar-BDHMRt_b.js.map +1 -0
  7. package/dist/admin/chunks/ar-JWJKrFM-.mjs +4 -0
  8. package/dist/admin/chunks/ar-JWJKrFM-.mjs.map +1 -0
  9. package/dist/admin/chunks/cs-BZCMeXgq.mjs +4 -0
  10. package/dist/admin/chunks/cs-BZCMeXgq.mjs.map +1 -0
  11. package/dist/admin/chunks/cs-DrOn3eR2.js +6 -0
  12. package/dist/admin/chunks/cs-DrOn3eR2.js.map +1 -0
  13. package/dist/admin/chunks/de-BlqtkWR3.js +6 -0
  14. package/dist/admin/chunks/de-BlqtkWR3.js.map +1 -0
  15. package/dist/admin/chunks/de-CGlAhulB.mjs +4 -0
  16. package/dist/admin/chunks/de-CGlAhulB.mjs.map +1 -0
  17. package/dist/admin/chunks/dk-B5IuEReS.mjs +25 -0
  18. package/dist/admin/chunks/dk-B5IuEReS.mjs.map +1 -0
  19. package/dist/admin/chunks/dk-DW7WecjY.js +27 -0
  20. package/dist/admin/chunks/dk-DW7WecjY.js.map +1 -0
  21. package/dist/admin/chunks/en-DacnIsXb.js +30 -0
  22. package/dist/admin/chunks/en-DacnIsXb.js.map +1 -0
  23. package/dist/admin/chunks/en-Dxg2wKLN.mjs +27 -0
  24. package/dist/admin/chunks/en-Dxg2wKLN.mjs.map +1 -0
  25. package/dist/admin/chunks/es-DxWi6BKM.js +27 -0
  26. package/dist/admin/chunks/es-DxWi6BKM.js.map +1 -0
  27. package/dist/admin/chunks/es-fdc21M_E.mjs +25 -0
  28. package/dist/admin/chunks/es-fdc21M_E.mjs.map +1 -0
  29. package/dist/admin/chunks/fr-BsENAPSS.js +6 -0
  30. package/dist/admin/chunks/fr-BsENAPSS.js.map +1 -0
  31. package/dist/admin/chunks/fr-DZjvYp6C.mjs +4 -0
  32. package/dist/admin/chunks/fr-DZjvYp6C.mjs.map +1 -0
  33. package/dist/admin/chunks/id-BORUwKHm.js +6 -0
  34. package/dist/admin/chunks/id-BORUwKHm.js.map +1 -0
  35. package/dist/admin/chunks/id-C1eDxX9W.mjs +4 -0
  36. package/dist/admin/chunks/id-C1eDxX9W.mjs.map +1 -0
  37. package/dist/admin/chunks/index-HXXlrjit.js +108 -0
  38. package/dist/admin/chunks/index-HXXlrjit.js.map +1 -0
  39. package/dist/admin/chunks/index-f_JAHN1f.mjs +105 -0
  40. package/dist/admin/chunks/index-f_JAHN1f.mjs.map +1 -0
  41. package/dist/admin/chunks/it-DVlJ2EhA.mjs +4 -0
  42. package/dist/admin/chunks/it-DVlJ2EhA.mjs.map +1 -0
  43. package/dist/admin/chunks/it-eAGyIQ1x.js +6 -0
  44. package/dist/admin/chunks/it-eAGyIQ1x.js.map +1 -0
  45. package/dist/admin/chunks/ja-CVosbw2M.mjs +25 -0
  46. package/dist/admin/chunks/ja-CVosbw2M.mjs.map +1 -0
  47. package/dist/admin/chunks/ja-DdOPbVbe.js +27 -0
  48. package/dist/admin/chunks/ja-DdOPbVbe.js.map +1 -0
  49. package/dist/admin/chunks/ko-B8SR--vZ.mjs +25 -0
  50. package/dist/admin/chunks/ko-B8SR--vZ.mjs.map +1 -0
  51. package/dist/admin/chunks/ko-CaWqWfC8.js +27 -0
  52. package/dist/admin/chunks/ko-CaWqWfC8.js.map +1 -0
  53. package/dist/admin/chunks/ms-CrRuDILn.js +6 -0
  54. package/dist/admin/chunks/ms-CrRuDILn.js.map +1 -0
  55. package/dist/admin/chunks/ms-DLngEN2_.mjs +4 -0
  56. package/dist/admin/chunks/ms-DLngEN2_.mjs.map +1 -0
  57. package/dist/admin/chunks/nl-B6Q0VF48.mjs +4 -0
  58. package/dist/admin/chunks/nl-B6Q0VF48.mjs.map +1 -0
  59. package/dist/admin/chunks/nl-BMsBb10t.js +6 -0
  60. package/dist/admin/chunks/nl-BMsBb10t.js.map +1 -0
  61. package/dist/admin/chunks/pl-Bve39qfV.mjs +25 -0
  62. package/dist/admin/chunks/pl-Bve39qfV.mjs.map +1 -0
  63. package/dist/admin/chunks/pl-CO-R08qV.js +27 -0
  64. package/dist/admin/chunks/pl-CO-R08qV.js.map +1 -0
  65. package/dist/admin/chunks/pt-BR-CBzJhkyg.js +6 -0
  66. package/dist/admin/chunks/pt-BR-CBzJhkyg.js.map +1 -0
  67. package/dist/admin/chunks/pt-BR-DPqDE4wA.mjs +4 -0
  68. package/dist/admin/chunks/pt-BR-DPqDE4wA.mjs.map +1 -0
  69. package/dist/admin/chunks/pt-BzFac2P5.js +30 -0
  70. package/dist/admin/chunks/pt-BzFac2P5.js.map +1 -0
  71. package/dist/admin/chunks/pt-DLqF-Sb4.mjs +27 -0
  72. package/dist/admin/chunks/pt-DLqF-Sb4.mjs.map +1 -0
  73. package/dist/admin/chunks/ru-DnqOAZDX.js +6 -0
  74. package/dist/admin/chunks/ru-DnqOAZDX.js.map +1 -0
  75. package/dist/admin/chunks/ru-rmFYdvwh.mjs +4 -0
  76. package/dist/admin/chunks/ru-rmFYdvwh.mjs.map +1 -0
  77. package/dist/admin/chunks/sk-DDJmUHcx.mjs +4 -0
  78. package/dist/admin/chunks/sk-DDJmUHcx.mjs.map +1 -0
  79. package/dist/admin/chunks/sk-N47IGfwH.js +6 -0
  80. package/dist/admin/chunks/sk-N47IGfwH.js.map +1 -0
  81. package/dist/admin/chunks/th-BqTCSpUc.mjs +4 -0
  82. package/dist/admin/chunks/th-BqTCSpUc.mjs.map +1 -0
  83. package/dist/admin/chunks/th-OW3_QVEZ.js +6 -0
  84. package/dist/admin/chunks/th-OW3_QVEZ.js.map +1 -0
  85. package/dist/admin/chunks/tr-BmrcZCoj.mjs +27 -0
  86. package/dist/admin/chunks/tr-BmrcZCoj.mjs.map +1 -0
  87. package/dist/admin/chunks/tr-n7J_y4Bh.js +30 -0
  88. package/dist/admin/chunks/tr-n7J_y4Bh.js.map +1 -0
  89. package/dist/admin/chunks/uk-CQim5OiT.mjs +4 -0
  90. package/dist/admin/chunks/uk-CQim5OiT.mjs.map +1 -0
  91. package/dist/admin/chunks/uk-nM0yP_CK.js +6 -0
  92. package/dist/admin/chunks/uk-nM0yP_CK.js.map +1 -0
  93. package/dist/admin/chunks/vi-CO9gCtmD.mjs +4 -0
  94. package/dist/admin/chunks/vi-CO9gCtmD.mjs.map +1 -0
  95. package/dist/admin/chunks/vi-DjJBc-ms.js +6 -0
  96. package/dist/admin/chunks/vi-DjJBc-ms.js.map +1 -0
  97. package/dist/admin/chunks/zh-9wNbbqde.js +30 -0
  98. package/dist/admin/chunks/zh-9wNbbqde.js.map +1 -0
  99. package/dist/admin/chunks/zh-CZQ4DV5L.mjs +27 -0
  100. package/dist/admin/chunks/zh-CZQ4DV5L.mjs.map +1 -0
  101. package/dist/admin/chunks/zh-Hans-ChWc00HT.mjs +19 -0
  102. package/dist/admin/chunks/zh-Hans-ChWc00HT.mjs.map +1 -0
  103. package/dist/admin/chunks/zh-Hans-D0bb9tfC.js +22 -0
  104. package/dist/admin/chunks/zh-Hans-D0bb9tfC.js.map +1 -0
  105. package/dist/admin/index.js +6 -2
  106. package/dist/admin/index.js.map +1 -1
  107. package/dist/admin/index.mjs +1 -4
  108. package/dist/admin/index.mjs.map +1 -1
  109. package/dist/server/index.js +226 -180
  110. package/dist/server/index.js.map +1 -1
  111. package/dist/server/index.mjs +215 -173
  112. package/dist/server/index.mjs.map +1 -1
  113. package/dist/shared/types.d.ts +0 -1
  114. package/package.json +13 -10
  115. package/dist/_chunks/Settings-DKhINVfQ.mjs +0 -281
  116. package/dist/_chunks/Settings-DKhINVfQ.mjs.map +0 -1
  117. package/dist/_chunks/Settings-DzVN5TCM.js +0 -299
  118. package/dist/_chunks/Settings-DzVN5TCM.js.map +0 -1
  119. package/dist/_chunks/ar-Bf9XlLLo.mjs +0 -5
  120. package/dist/_chunks/ar-Bf9XlLLo.mjs.map +0 -1
  121. package/dist/_chunks/ar-C_tQu1XS.js +0 -5
  122. package/dist/_chunks/ar-C_tQu1XS.js.map +0 -1
  123. package/dist/_chunks/cs-B0QZJTah.mjs +0 -5
  124. package/dist/_chunks/cs-B0QZJTah.mjs.map +0 -1
  125. package/dist/_chunks/cs-CPKIUWLp.js +0 -5
  126. package/dist/_chunks/cs-CPKIUWLp.js.map +0 -1
  127. package/dist/_chunks/de-B9kiAC-s.mjs +0 -5
  128. package/dist/_chunks/de-B9kiAC-s.mjs.map +0 -1
  129. package/dist/_chunks/de-K6IYQk2d.js +0 -5
  130. package/dist/_chunks/de-K6IYQk2d.js.map +0 -1
  131. package/dist/_chunks/dk-31mOPYpI.js +0 -26
  132. package/dist/_chunks/dk-31mOPYpI.js.map +0 -1
  133. package/dist/_chunks/dk-DqrbgSkv.mjs +0 -26
  134. package/dist/_chunks/dk-DqrbgSkv.mjs.map +0 -1
  135. package/dist/_chunks/en-BCu4d6-o.js +0 -29
  136. package/dist/_chunks/en-BCu4d6-o.js.map +0 -1
  137. package/dist/_chunks/en-DF4KtAAC.mjs +0 -29
  138. package/dist/_chunks/en-DF4KtAAC.mjs.map +0 -1
  139. package/dist/_chunks/es-BNo7eLLJ.mjs +0 -26
  140. package/dist/_chunks/es-BNo7eLLJ.mjs.map +0 -1
  141. package/dist/_chunks/es-Dl2HVmwz.js +0 -26
  142. package/dist/_chunks/es-Dl2HVmwz.js.map +0 -1
  143. package/dist/_chunks/fr-C8Qw4iPZ.js +0 -5
  144. package/dist/_chunks/fr-C8Qw4iPZ.js.map +0 -1
  145. package/dist/_chunks/fr-hkSxFuzl.mjs +0 -5
  146. package/dist/_chunks/fr-hkSxFuzl.mjs.map +0 -1
  147. package/dist/_chunks/id-CHtAzAUz.mjs +0 -5
  148. package/dist/_chunks/id-CHtAzAUz.mjs.map +0 -1
  149. package/dist/_chunks/id-CvE5f0zz.js +0 -5
  150. package/dist/_chunks/id-CvE5f0zz.js.map +0 -1
  151. package/dist/_chunks/index-BcbwpIZL.js +0 -84
  152. package/dist/_chunks/index-BcbwpIZL.js.map +0 -1
  153. package/dist/_chunks/index-D0n2_0zm.mjs +0 -85
  154. package/dist/_chunks/index-D0n2_0zm.mjs.map +0 -1
  155. package/dist/_chunks/it-C7z82V3g.mjs +0 -5
  156. package/dist/_chunks/it-C7z82V3g.mjs.map +0 -1
  157. package/dist/_chunks/it-DYpuAHa5.js +0 -5
  158. package/dist/_chunks/it-DYpuAHa5.js.map +0 -1
  159. package/dist/_chunks/ja-CiekkoEN.mjs +0 -26
  160. package/dist/_chunks/ja-CiekkoEN.mjs.map +0 -1
  161. package/dist/_chunks/ja-PL3WilO7.js +0 -26
  162. package/dist/_chunks/ja-PL3WilO7.js.map +0 -1
  163. package/dist/_chunks/ko-CJBkZ375.mjs +0 -26
  164. package/dist/_chunks/ko-CJBkZ375.mjs.map +0 -1
  165. package/dist/_chunks/ko-CL2BB_w_.js +0 -26
  166. package/dist/_chunks/ko-CL2BB_w_.js.map +0 -1
  167. package/dist/_chunks/ms-BGlHkuJz.js +0 -5
  168. package/dist/_chunks/ms-BGlHkuJz.js.map +0 -1
  169. package/dist/_chunks/ms-C1wNkEQw.mjs +0 -5
  170. package/dist/_chunks/ms-C1wNkEQw.mjs.map +0 -1
  171. package/dist/_chunks/nl-BuofSsmb.js +0 -5
  172. package/dist/_chunks/nl-BuofSsmb.js.map +0 -1
  173. package/dist/_chunks/nl-C79CwB4e.mjs +0 -5
  174. package/dist/_chunks/nl-C79CwB4e.mjs.map +0 -1
  175. package/dist/_chunks/pl-DXcJCevg.mjs +0 -26
  176. package/dist/_chunks/pl-DXcJCevg.mjs.map +0 -1
  177. package/dist/_chunks/pl-DdtXf3SH.js +0 -26
  178. package/dist/_chunks/pl-DdtXf3SH.js.map +0 -1
  179. package/dist/_chunks/pt-BR-B_ii8U63.js +0 -5
  180. package/dist/_chunks/pt-BR-B_ii8U63.js.map +0 -1
  181. package/dist/_chunks/pt-BR-DjINUWGk.mjs +0 -5
  182. package/dist/_chunks/pt-BR-DjINUWGk.mjs.map +0 -1
  183. package/dist/_chunks/pt-CzRDvk6c.js +0 -29
  184. package/dist/_chunks/pt-CzRDvk6c.js.map +0 -1
  185. package/dist/_chunks/pt-DEVCt2mt.mjs +0 -29
  186. package/dist/_chunks/pt-DEVCt2mt.mjs.map +0 -1
  187. package/dist/_chunks/ru-C_7wBr9e.mjs +0 -5
  188. package/dist/_chunks/ru-C_7wBr9e.mjs.map +0 -1
  189. package/dist/_chunks/ru-Dc-rSPqb.js +0 -5
  190. package/dist/_chunks/ru-Dc-rSPqb.js.map +0 -1
  191. package/dist/_chunks/sk-Cnpb4YOK.js +0 -5
  192. package/dist/_chunks/sk-Cnpb4YOK.js.map +0 -1
  193. package/dist/_chunks/sk-i1gQKUBN.mjs +0 -5
  194. package/dist/_chunks/sk-i1gQKUBN.mjs.map +0 -1
  195. package/dist/_chunks/th-BXTLF08M.js +0 -5
  196. package/dist/_chunks/th-BXTLF08M.js.map +0 -1
  197. package/dist/_chunks/th-D-MxpWKr.mjs +0 -5
  198. package/dist/_chunks/th-D-MxpWKr.mjs.map +0 -1
  199. package/dist/_chunks/tr-BXu41MLY.mjs +0 -29
  200. package/dist/_chunks/tr-BXu41MLY.mjs.map +0 -1
  201. package/dist/_chunks/tr-DwBySNgJ.js +0 -29
  202. package/dist/_chunks/tr-DwBySNgJ.js.map +0 -1
  203. package/dist/_chunks/uk-C_1qrLRM.mjs +0 -5
  204. package/dist/_chunks/uk-C_1qrLRM.mjs.map +0 -1
  205. package/dist/_chunks/uk-CxIePjBD.js +0 -5
  206. package/dist/_chunks/uk-CxIePjBD.js.map +0 -1
  207. package/dist/_chunks/vi-B4uqmjm6.js +0 -5
  208. package/dist/_chunks/vi-B4uqmjm6.js.map +0 -1
  209. package/dist/_chunks/vi-BfZkgFxI.mjs +0 -5
  210. package/dist/_chunks/vi-BfZkgFxI.mjs.map +0 -1
  211. package/dist/_chunks/zh-BS-XJCSt.mjs +0 -29
  212. package/dist/_chunks/zh-BS-XJCSt.mjs.map +0 -1
  213. package/dist/_chunks/zh-DsMIjTgu.js +0 -29
  214. package/dist/_chunks/zh-DsMIjTgu.js.map +0 -1
  215. package/dist/_chunks/zh-Hans-BLEEaLoN.mjs +0 -21
  216. package/dist/_chunks/zh-Hans-BLEEaLoN.mjs.map +0 -1
  217. package/dist/_chunks/zh-Hans-CmL3sY9o.js +0 -21
  218. package/dist/_chunks/zh-Hans-CmL3sY9o.js.map +0 -1
@@ -0,0 +1,383 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
6
+ var designSystem = require('@strapi/design-system');
7
+ var icons = require('@strapi/icons');
8
+ var reactIntl = require('react-intl');
9
+ var reactQuery = require('react-query');
10
+ var styledComponents = require('styled-components');
11
+ var yup = require('yup');
12
+ var index = require('./index-HXXlrjit.js');
13
+
14
+ function _interopNamespaceDefault(e) {
15
+ var n = Object.create(null);
16
+ if (e) {
17
+ Object.keys(e).forEach(function (k) {
18
+ if (k !== 'default') {
19
+ var d = Object.getOwnPropertyDescriptor(e, k);
20
+ Object.defineProperty(n, k, d.get ? d : {
21
+ enumerable: true,
22
+ get: function () { return e[k]; }
23
+ });
24
+ }
25
+ });
26
+ }
27
+ n.default = e;
28
+ return Object.freeze(n);
29
+ }
30
+
31
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
33
+
34
+ const extractValuesFromYupError = (errorType, errorParams)=>{
35
+ if (!errorType || !errorParams) {
36
+ return {};
37
+ }
38
+ return {
39
+ [errorType]: errorParams[errorType]
40
+ };
41
+ };
42
+ const getYupInnerErrors = (error)=>(error?.inner || []).reduce((acc, currentError)=>{
43
+ if (currentError.path) {
44
+ acc[currentError.path.split('[').join('.').split(']').join('')] = {
45
+ id: currentError.message,
46
+ defaultMessage: currentError.message,
47
+ values: extractValuesFromYupError(currentError?.type, currentError?.params)
48
+ };
49
+ }
50
+ return acc;
51
+ }, {});
52
+
53
+ const schema = yup__namespace.object().shape({
54
+ email: yup__namespace.string().email(strapiAdmin.translatedErrors.email.id).required(strapiAdmin.translatedErrors.required.id)
55
+ });
56
+
57
+ const DocumentationLink = styledComponents.styled.a`
58
+ color: ${({ theme })=>theme.colors.primary600};
59
+ `;
60
+ const ProtectedSettingsPage = ()=>/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Protect, {
61
+ permissions: index.PERMISSIONS.settings,
62
+ children: /*#__PURE__*/ jsxRuntime.jsx(SettingsPage, {})
63
+ });
64
+ const SettingsPage = ()=>{
65
+ const { toggleNotification } = strapiAdmin.useNotification();
66
+ const { formatMessage } = reactIntl.useIntl();
67
+ const { get, post } = strapiAdmin.useFetchClient();
68
+ const [testAddress, setTestAddress] = React__namespace.useState('');
69
+ const [isTestAddressValid, setIsTestAddressValid] = React__namespace.useState(false);
70
+ // 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
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ const [formErrors, setFormErrors] = React__namespace.useState({});
73
+ const { data, isLoading } = reactQuery.useQuery([
74
+ 'email',
75
+ 'settings'
76
+ ], async ()=>{
77
+ const res = await get('/email/settings');
78
+ const { data: { config } } = res;
79
+ return config;
80
+ });
81
+ const mutation = reactQuery.useMutation(async (body)=>{
82
+ await post('/email/test', body);
83
+ }, {
84
+ onError () {
85
+ toggleNotification({
86
+ type: 'danger',
87
+ message: formatMessage({
88
+ id: 'email.Settings.email.plugin.notification.test.error',
89
+ defaultMessage: 'Failed to send a test mail to {to}'
90
+ }, {
91
+ to: testAddress
92
+ })
93
+ });
94
+ },
95
+ onSuccess () {
96
+ toggleNotification({
97
+ type: 'success',
98
+ message: formatMessage({
99
+ id: 'email.Settings.email.plugin.notification.test.success',
100
+ defaultMessage: 'Email test succeeded, check the {to} mailbox'
101
+ }, {
102
+ to: testAddress
103
+ })
104
+ });
105
+ },
106
+ retry: false
107
+ });
108
+ React__namespace.useEffect(()=>{
109
+ schema.validate({
110
+ email: testAddress
111
+ }, {
112
+ abortEarly: false
113
+ }).then(()=>setIsTestAddressValid(true)).catch(()=>setIsTestAddressValid(false));
114
+ }, [
115
+ testAddress
116
+ ]);
117
+ const handleChange = (event)=>{
118
+ setTestAddress(()=>event.target.value);
119
+ };
120
+ const handleSubmit = async (event)=>{
121
+ event.preventDefault();
122
+ try {
123
+ await schema.validate({
124
+ email: testAddress
125
+ }, {
126
+ abortEarly: false
127
+ });
128
+ } catch (error) {
129
+ if (error instanceof yup.ValidationError) {
130
+ setFormErrors(getYupInnerErrors(error));
131
+ }
132
+ }
133
+ mutation.mutate({
134
+ to: testAddress
135
+ });
136
+ };
137
+ if (isLoading) {
138
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
139
+ }
140
+ return /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Page.Main, {
141
+ labelledBy: "title",
142
+ "aria-busy": isLoading || mutation.isLoading,
143
+ children: [
144
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
145
+ children: formatMessage({
146
+ id: 'Settings.PageTitle',
147
+ defaultMessage: 'Settings - {name}'
148
+ }, {
149
+ name: formatMessage({
150
+ id: 'email.Settings.email.plugin.title',
151
+ defaultMessage: 'Configuration'
152
+ })
153
+ })
154
+ }),
155
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Header, {
156
+ id: "title",
157
+ title: formatMessage({
158
+ id: 'email.Settings.email.plugin.title',
159
+ defaultMessage: 'Configuration'
160
+ }),
161
+ subtitle: formatMessage({
162
+ id: 'email.Settings.email.plugin.subTitle',
163
+ defaultMessage: 'Test the settings for the Email plugin'
164
+ })
165
+ }),
166
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
167
+ children: data && /*#__PURE__*/ jsxRuntime.jsx("form", {
168
+ onSubmit: handleSubmit,
169
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
170
+ direction: "column",
171
+ alignItems: "stretch",
172
+ gap: 7,
173
+ children: [
174
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
175
+ background: "neutral0",
176
+ hasRadius: true,
177
+ shadow: "filterShadow",
178
+ paddingTop: 6,
179
+ paddingBottom: 6,
180
+ paddingLeft: 7,
181
+ paddingRight: 7,
182
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
183
+ direction: "column",
184
+ alignItems: "stretch",
185
+ gap: 4,
186
+ children: [
187
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
188
+ direction: "column",
189
+ alignItems: "stretch",
190
+ gap: 1,
191
+ children: [
192
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
193
+ variant: "delta",
194
+ tag: "h2",
195
+ children: formatMessage({
196
+ id: 'email.Settings.email.plugin.title.config',
197
+ defaultMessage: 'Configuration'
198
+ })
199
+ }),
200
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
201
+ children: formatMessage({
202
+ id: 'email.Settings.email.plugin.text.configuration',
203
+ defaultMessage: 'The plugin is configured through the {file} file, checkout this {link} for the documentation.'
204
+ }, {
205
+ file: './config/plugins.js',
206
+ link: /*#__PURE__*/ jsxRuntime.jsx(DocumentationLink, {
207
+ href: "https://docs.strapi.io/developer-docs/latest/plugins/email.html",
208
+ target: "_blank",
209
+ rel: "noopener noreferrer",
210
+ children: formatMessage({
211
+ id: 'email.link',
212
+ defaultMessage: 'Link'
213
+ })
214
+ })
215
+ })
216
+ })
217
+ ]
218
+ }),
219
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Grid.Root, {
220
+ gap: 5,
221
+ children: [
222
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
223
+ col: 6,
224
+ s: 12,
225
+ direction: "column",
226
+ alignItems: "stretch",
227
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
228
+ name: "shipper-email",
229
+ children: [
230
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
231
+ children: formatMessage({
232
+ id: 'email.Settings.email.plugin.label.defaultFrom',
233
+ defaultMessage: 'Default sender email'
234
+ })
235
+ }),
236
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
237
+ placeholder: formatMessage({
238
+ id: 'email.Settings.email.plugin.placeholder.defaultFrom',
239
+ defaultMessage: "ex: Strapi No-Reply '<'no-reply@strapi.io'>'"
240
+ }),
241
+ disabled: true,
242
+ value: data.settings.defaultFrom
243
+ })
244
+ ]
245
+ })
246
+ }),
247
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
248
+ col: 6,
249
+ s: 12,
250
+ direction: "column",
251
+ alignItems: "stretch",
252
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
253
+ name: "response-email",
254
+ children: [
255
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
256
+ children: formatMessage({
257
+ id: 'email.Settings.email.plugin.label.defaultReplyTo',
258
+ defaultMessage: 'Default response email'
259
+ })
260
+ }),
261
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
262
+ placeholder: formatMessage({
263
+ id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',
264
+ defaultMessage: `ex: Strapi '<'example@strapi.io'>'`
265
+ }),
266
+ disabled: true,
267
+ value: data.settings.defaultReplyTo
268
+ })
269
+ ]
270
+ })
271
+ }),
272
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
273
+ col: 6,
274
+ s: 12,
275
+ direction: "column",
276
+ alignItems: "stretch",
277
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
278
+ name: "email-provider",
279
+ children: [
280
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
281
+ children: formatMessage({
282
+ id: 'email.Settings.email.plugin.label.provider',
283
+ defaultMessage: 'Email provider'
284
+ })
285
+ }),
286
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
287
+ disabled: true,
288
+ value: data.provider,
289
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
290
+ value: data.provider,
291
+ children: data.provider
292
+ })
293
+ })
294
+ ]
295
+ })
296
+ })
297
+ ]
298
+ })
299
+ ]
300
+ })
301
+ }),
302
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
303
+ alignItems: "stretch",
304
+ background: "neutral0",
305
+ direction: "column",
306
+ gap: 4,
307
+ hasRadius: true,
308
+ shadow: "filterShadow",
309
+ paddingTop: 6,
310
+ paddingBottom: 6,
311
+ paddingLeft: 7,
312
+ paddingRight: 7,
313
+ children: [
314
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
315
+ variant: "delta",
316
+ tag: "h2",
317
+ children: formatMessage({
318
+ id: 'email.Settings.email.plugin.title.test',
319
+ defaultMessage: 'Test email delivery'
320
+ })
321
+ }),
322
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Grid.Root, {
323
+ gap: 5,
324
+ children: [
325
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
326
+ col: 6,
327
+ s: 12,
328
+ direction: "column",
329
+ alignItems: "stretch",
330
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
331
+ name: "test-address",
332
+ error: formErrors.email?.id && formatMessage({
333
+ id: `email.${formErrors.email?.id}`,
334
+ defaultMessage: 'This is not a valid email'
335
+ }),
336
+ children: [
337
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
338
+ children: formatMessage({
339
+ id: 'email.Settings.email.plugin.label.testAddress',
340
+ defaultMessage: 'Recipient email'
341
+ })
342
+ }),
343
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
344
+ onChange: handleChange,
345
+ value: testAddress,
346
+ placeholder: formatMessage({
347
+ id: 'email.Settings.email.plugin.placeholder.testAddress',
348
+ defaultMessage: 'ex: developer@example.com'
349
+ })
350
+ })
351
+ ]
352
+ })
353
+ }),
354
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
355
+ col: 7,
356
+ s: 12,
357
+ direction: "column",
358
+ alignItems: "start",
359
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
360
+ loading: mutation.isLoading,
361
+ disabled: !isTestAddressValid,
362
+ type: "submit",
363
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Mail, {}),
364
+ children: formatMessage({
365
+ id: 'email.Settings.email.plugin.button.test-email',
366
+ defaultMessage: 'Send test email'
367
+ })
368
+ })
369
+ })
370
+ ]
371
+ })
372
+ ]
373
+ })
374
+ ]
375
+ })
376
+ })
377
+ })
378
+ ]
379
+ });
380
+ };
381
+
382
+ exports.ProtectedSettingsPage = ProtectedSettingsPage;
383
+ //# sourceMappingURL=Settings-D8WJjMq7.js.map
@@ -0,0 +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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"}