@strapi/email 0.0.0-experimental.f75e3c6d67cc47c64ab37479efdbb7b43be50b78 → 0.0.0-experimental.f86041c89a8c1545c6437a881dc613e98bc52bd7

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