@openedx/frontend-app-authn 1.0.0-alpha.5 → 1.0.0-alpha.7

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 (480) hide show
  1. package/dist/Main.d.ts +3 -0
  2. package/dist/Main.js +10 -0
  3. package/dist/Main.js.map +1 -0
  4. package/dist/app.d.ts +3 -0
  5. package/dist/app.js +41 -0
  6. package/dist/app.js.map +1 -0
  7. package/{src → dist}/app.scss +1 -1
  8. package/dist/base-container/components/default-layout/LargeLayout.d.ts +2 -0
  9. package/dist/base-container/components/default-layout/LargeLayout.js +11 -0
  10. package/dist/base-container/components/default-layout/LargeLayout.js.map +1 -0
  11. package/dist/base-container/components/default-layout/MediumLayout.d.ts +2 -0
  12. package/dist/base-container/components/default-layout/MediumLayout.js +11 -0
  13. package/dist/base-container/components/default-layout/MediumLayout.js.map +1 -0
  14. package/dist/base-container/components/default-layout/SmallLayout.d.ts +2 -0
  15. package/dist/base-container/components/default-layout/SmallLayout.js +11 -0
  16. package/dist/base-container/components/default-layout/SmallLayout.js.map +1 -0
  17. package/dist/base-container/components/default-layout/index.d.ts +3 -0
  18. package/{src/base-container/components/default-layout/index.jsx → dist/base-container/components/default-layout/index.js} +1 -0
  19. package/dist/base-container/components/default-layout/index.js.map +1 -0
  20. package/dist/base-container/components/default-layout/messages.d.ts +13 -0
  21. package/dist/base-container/components/default-layout/messages.js +15 -0
  22. package/dist/base-container/components/default-layout/messages.js.map +1 -0
  23. package/dist/base-container/components/image-layout/ExtraSmallLayout.d.ts +2 -0
  24. package/dist/base-container/components/image-layout/ExtraSmallLayout.js +10 -0
  25. package/dist/base-container/components/image-layout/ExtraSmallLayout.js.map +1 -0
  26. package/dist/base-container/components/image-layout/LargeLayout.d.ts +2 -0
  27. package/dist/base-container/components/image-layout/LargeLayout.js +11 -0
  28. package/dist/base-container/components/image-layout/LargeLayout.js.map +1 -0
  29. package/dist/base-container/components/image-layout/MediumLayout.d.ts +2 -0
  30. package/dist/base-container/components/image-layout/MediumLayout.js +11 -0
  31. package/dist/base-container/components/image-layout/MediumLayout.js.map +1 -0
  32. package/dist/base-container/components/image-layout/SmallLayout.d.ts +2 -0
  33. package/dist/base-container/components/image-layout/SmallLayout.js +10 -0
  34. package/dist/base-container/components/image-layout/SmallLayout.js.map +1 -0
  35. package/dist/base-container/components/image-layout/index.d.ts +4 -0
  36. package/{src/base-container/components/image-layout/index.jsx → dist/base-container/components/image-layout/index.js} +1 -0
  37. package/dist/base-container/components/image-layout/index.js.map +1 -0
  38. package/dist/base-container/components/image-layout/messages.d.ts +13 -0
  39. package/dist/base-container/components/image-layout/messages.js +15 -0
  40. package/dist/base-container/components/image-layout/messages.js.map +1 -0
  41. package/dist/base-container/components/welcome-page-layout/LargeLayout.d.ts +10 -0
  42. package/dist/base-container/components/welcome-page-layout/LargeLayout.js +14 -0
  43. package/dist/base-container/components/welcome-page-layout/LargeLayout.js.map +1 -0
  44. package/dist/base-container/components/welcome-page-layout/MediumLayout.d.ts +10 -0
  45. package/dist/base-container/components/welcome-page-layout/MediumLayout.js +14 -0
  46. package/dist/base-container/components/welcome-page-layout/MediumLayout.js.map +1 -0
  47. package/dist/base-container/components/welcome-page-layout/SmallLayout.d.ts +10 -0
  48. package/dist/base-container/components/welcome-page-layout/SmallLayout.js +14 -0
  49. package/dist/base-container/components/welcome-page-layout/SmallLayout.js.map +1 -0
  50. package/dist/base-container/components/welcome-page-layout/index.d.ts +3 -0
  51. package/{src/base-container/components/welcome-page-layout/index.jsx → dist/base-container/components/welcome-page-layout/index.js} +1 -0
  52. package/dist/base-container/components/welcome-page-layout/index.js.map +1 -0
  53. package/dist/base-container/components/welcome-page-layout/messages.d.ts +18 -0
  54. package/dist/base-container/components/welcome-page-layout/messages.js +20 -0
  55. package/dist/base-container/components/welcome-page-layout/messages.js.map +1 -0
  56. package/dist/base-container/index.d.ts +20 -0
  57. package/dist/base-container/index.js +27 -0
  58. package/dist/base-container/index.js.map +1 -0
  59. package/dist/common-components/EmbeddedRegistrationRoute.d.ts +14 -0
  60. package/dist/common-components/EmbeddedRegistrationRoute.js +22 -0
  61. package/dist/common-components/EmbeddedRegistrationRoute.js.map +1 -0
  62. package/dist/common-components/EnterpriseSSO.d.ts +29 -0
  63. package/dist/common-components/EnterpriseSSO.js +58 -0
  64. package/dist/common-components/EnterpriseSSO.js.map +1 -0
  65. package/dist/common-components/FormGroup.d.ts +60 -0
  66. package/dist/common-components/FormGroup.js +66 -0
  67. package/dist/common-components/FormGroup.js.map +1 -0
  68. package/dist/common-components/InstitutionLogistration.d.ts +34 -0
  69. package/dist/common-components/InstitutionLogistration.js +38 -0
  70. package/dist/common-components/InstitutionLogistration.js.map +1 -0
  71. package/dist/common-components/NotFoundPage.d.ts +2 -0
  72. package/dist/common-components/NotFoundPage.js +5 -0
  73. package/dist/common-components/NotFoundPage.js.map +1 -0
  74. package/dist/common-components/PasswordField.d.ts +47 -0
  75. package/dist/common-components/PasswordField.js +98 -0
  76. package/dist/common-components/PasswordField.js.map +1 -0
  77. package/dist/common-components/RedirectLogistration.d.ts +39 -0
  78. package/dist/common-components/RedirectLogistration.js +72 -0
  79. package/dist/common-components/RedirectLogistration.js.map +1 -0
  80. package/dist/common-components/RegisterFaIcons.d.ts +1 -0
  81. package/dist/common-components/RegisterFaIcons.js +6 -0
  82. package/dist/common-components/RegisterFaIcons.js.map +1 -0
  83. package/dist/common-components/SocialAuthProviders.d.ts +23 -0
  84. package/dist/common-components/SocialAuthProviders.js +43 -0
  85. package/dist/common-components/SocialAuthProviders.js.map +1 -0
  86. package/dist/common-components/ThirdPartyAuth.d.ts +42 -0
  87. package/dist/common-components/ThirdPartyAuth.js +57 -0
  88. package/dist/common-components/ThirdPartyAuth.js.map +1 -0
  89. package/dist/common-components/ThirdPartyAuthAlert.d.ts +15 -0
  90. package/dist/common-components/ThirdPartyAuthAlert.js +32 -0
  91. package/dist/common-components/ThirdPartyAuthAlert.js.map +1 -0
  92. package/dist/common-components/UnAuthOnlyRoute.d.ts +14 -0
  93. package/dist/common-components/UnAuthOnlyRoute.js +32 -0
  94. package/dist/common-components/UnAuthOnlyRoute.js.map +1 -0
  95. package/dist/common-components/components/ThirdPartyAuthContext.d.ts +31 -0
  96. package/dist/common-components/components/ThirdPartyAuthContext.js +84 -0
  97. package/dist/common-components/components/ThirdPartyAuthContext.js.map +1 -0
  98. package/dist/common-components/data/api.d.ts +6 -0
  99. package/dist/common-components/data/api.js +26 -0
  100. package/dist/common-components/data/api.js.map +1 -0
  101. package/dist/common-components/data/apiHook.d.ts +9 -0
  102. package/dist/common-components/data/apiHook.js +14 -0
  103. package/dist/common-components/data/apiHook.js.map +1 -0
  104. package/dist/common-components/data/queryKeys.d.ts +4 -0
  105. package/dist/common-components/data/queryKeys.js +6 -0
  106. package/dist/common-components/data/queryKeys.js.map +1 -0
  107. package/dist/common-components/index.d.ts +10 -0
  108. package/{src/common-components/index.jsx → dist/common-components/index.js} +1 -3
  109. package/dist/common-components/index.js.map +1 -0
  110. package/dist/common-components/messages.d.ts +113 -0
  111. package/dist/common-components/messages.js +126 -0
  112. package/dist/common-components/messages.js.map +1 -0
  113. package/dist/constants.d.ts +14 -0
  114. package/dist/constants.js +17 -0
  115. package/dist/constants.js.map +1 -0
  116. package/dist/data/constants.d.ts +16 -0
  117. package/{src → dist}/data/constants.js +4 -17
  118. package/dist/data/constants.js.map +1 -0
  119. package/dist/data/countries.d.ts +26 -0
  120. package/{src/data/countries.ts → dist/data/countries.js} +6 -9
  121. package/dist/data/countries.js.map +1 -0
  122. package/dist/data/oneTrust.d.ts +2 -0
  123. package/dist/data/oneTrust.js +3 -0
  124. package/dist/data/oneTrust.js.map +1 -0
  125. package/dist/data/utils/cookies.d.ts +1 -0
  126. package/dist/data/utils/cookies.js +12 -0
  127. package/dist/data/utils/cookies.js.map +1 -0
  128. package/dist/data/utils/dataUtils.d.ts +12 -0
  129. package/dist/data/utils/dataUtils.js +81 -0
  130. package/dist/data/utils/dataUtils.js.map +1 -0
  131. package/dist/data/utils/index.d.ts +2 -0
  132. package/dist/data/utils/index.js +3 -0
  133. package/dist/data/utils/index.js.map +1 -0
  134. package/dist/data/utils/useMobileResponsive.d.ts +7 -0
  135. package/dist/data/utils/useMobileResponsive.js +22 -0
  136. package/dist/data/utils/useMobileResponsive.js.map +1 -0
  137. package/dist/field-renderer/FieldRenderer.d.ts +34 -0
  138. package/dist/field-renderer/FieldRenderer.js +70 -0
  139. package/dist/field-renderer/FieldRenderer.js.map +1 -0
  140. package/dist/field-renderer/index.d.ts +1 -0
  141. package/{src/field-renderer/index.jsx → dist/field-renderer/index.js} +1 -0
  142. package/dist/field-renderer/index.js.map +1 -0
  143. package/dist/forgot-password/ForgotPasswordAlert.d.ts +16 -0
  144. package/dist/forgot-password/ForgotPasswordAlert.js +66 -0
  145. package/dist/forgot-password/ForgotPasswordAlert.js.map +1 -0
  146. package/dist/forgot-password/ForgotPasswordPage.d.ts +2 -0
  147. package/dist/forgot-password/ForgotPasswordPage.js +92 -0
  148. package/dist/forgot-password/ForgotPasswordPage.js.map +1 -0
  149. package/dist/forgot-password/data/api.d.ts +2 -0
  150. package/dist/forgot-password/data/api.js +25 -0
  151. package/dist/forgot-password/data/api.js.map +1 -0
  152. package/dist/forgot-password/data/apiHook.d.ts +16 -0
  153. package/dist/forgot-password/data/apiHook.js +26 -0
  154. package/dist/forgot-password/data/apiHook.js.map +1 -0
  155. package/dist/forgot-password/index.d.ts +1 -0
  156. package/dist/forgot-password/index.js +2 -0
  157. package/dist/forgot-password/index.js.map +1 -0
  158. package/dist/forgot-password/messages.d.ts +123 -0
  159. package/dist/forgot-password/messages.js +128 -0
  160. package/dist/forgot-password/messages.js.map +1 -0
  161. package/dist/i18n/index.d.ts +25 -0
  162. package/dist/i18n/index.js +26 -0
  163. package/dist/i18n/index.js.map +1 -0
  164. package/dist/index.js +4 -0
  165. package/dist/index.js.map +1 -0
  166. package/dist/login/AccountActivationMessage.d.ts +14 -0
  167. package/dist/login/AccountActivationMessage.js +49 -0
  168. package/dist/login/AccountActivationMessage.js.map +1 -0
  169. package/dist/login/ChangePasswordPrompt.d.ts +18 -0
  170. package/dist/login/ChangePasswordPrompt.js +51 -0
  171. package/dist/login/ChangePasswordPrompt.js.map +1 -0
  172. package/dist/login/LoginFailure.d.ts +25 -0
  173. package/dist/login/LoginFailure.js +109 -0
  174. package/dist/login/LoginFailure.js.map +1 -0
  175. package/dist/login/LoginPage.d.ts +12 -0
  176. package/dist/login/LoginPage.js +174 -0
  177. package/dist/login/LoginPage.js.map +1 -0
  178. package/dist/login/components/LoginContext.d.ts +21 -0
  179. package/dist/login/components/LoginContext.js +28 -0
  180. package/dist/login/components/LoginContext.js.map +1 -0
  181. package/dist/login/data/api.d.ts +2 -0
  182. package/dist/login/data/api.js +27 -0
  183. package/dist/login/data/api.js.map +1 -0
  184. package/dist/login/data/apiHook.d.ts +13 -0
  185. package/dist/login/data/apiHook.js +57 -0
  186. package/dist/login/data/apiHook.js.map +1 -0
  187. package/dist/login/data/constants.d.ts +17 -0
  188. package/{src → dist}/login/data/constants.js +4 -4
  189. package/dist/login/data/constants.js.map +1 -0
  190. package/dist/login/index.d.ts +1 -0
  191. package/dist/login/index.js +2 -0
  192. package/dist/login/index.js.map +1 -0
  193. package/dist/login/messages.d.ts +198 -0
  194. package/dist/login/messages.js +210 -0
  195. package/dist/login/messages.js.map +1 -0
  196. package/dist/logistration/Logistration.d.ts +5 -0
  197. package/dist/logistration/Logistration.js +80 -0
  198. package/dist/logistration/Logistration.js.map +1 -0
  199. package/dist/progressive-profiling/ProgressiveProfiling.d.ts +2 -0
  200. package/dist/progressive-profiling/ProgressiveProfiling.js +143 -0
  201. package/dist/progressive-profiling/ProgressiveProfiling.js.map +1 -0
  202. package/dist/progressive-profiling/ProgressiveProfilingPageModal.d.ts +13 -0
  203. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js +31 -0
  204. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js.map +1 -0
  205. package/dist/progressive-profiling/components/ProgressiveProfilingContext.d.ts +18 -0
  206. package/dist/progressive-profiling/components/ProgressiveProfilingContext.js +52 -0
  207. package/dist/progressive-profiling/components/ProgressiveProfilingContext.js.map +1 -0
  208. package/dist/progressive-profiling/data/api.d.ts +2 -0
  209. package/dist/progressive-profiling/data/api.js +22 -0
  210. package/dist/progressive-profiling/data/api.js.map +1 -0
  211. package/dist/progressive-profiling/data/apiHook.d.ts +10 -0
  212. package/dist/progressive-profiling/data/apiHook.js +36 -0
  213. package/dist/progressive-profiling/data/apiHook.js.map +1 -0
  214. package/dist/progressive-profiling/index.d.ts +2 -0
  215. package/{src → dist}/progressive-profiling/index.js +1 -3
  216. package/dist/progressive-profiling/index.js.map +1 -0
  217. package/dist/progressive-profiling/messages.d.ts +53 -0
  218. package/dist/progressive-profiling/messages.js +57 -0
  219. package/dist/progressive-profiling/messages.js.map +1 -0
  220. package/dist/register/RegistrationFields/CountryField/CountryField.d.ts +38 -0
  221. package/dist/register/RegistrationFields/CountryField/CountryField.js +93 -0
  222. package/dist/register/RegistrationFields/CountryField/CountryField.js.map +1 -0
  223. package/dist/register/RegistrationFields/CountryField/validator.d.ts +8 -0
  224. package/dist/register/RegistrationFields/CountryField/validator.js +29 -0
  225. package/dist/register/RegistrationFields/CountryField/validator.js.map +1 -0
  226. package/dist/register/RegistrationFields/EmailField/EmailField.d.ts +30 -0
  227. package/dist/register/RegistrationFields/EmailField/EmailField.js +88 -0
  228. package/dist/register/RegistrationFields/EmailField/EmailField.js.map +1 -0
  229. package/dist/register/RegistrationFields/EmailField/constants.d.ts +3 -0
  230. package/dist/register/RegistrationFields/EmailField/constants.js +130 -0
  231. package/dist/register/RegistrationFields/EmailField/constants.js.map +1 -0
  232. package/dist/register/RegistrationFields/EmailField/validator.d.ts +17 -0
  233. package/dist/register/RegistrationFields/EmailField/validator.js +107 -0
  234. package/dist/register/RegistrationFields/EmailField/validator.js.map +1 -0
  235. package/dist/register/RegistrationFields/HonorCodeField/HonorCode.d.ts +21 -0
  236. package/dist/register/RegistrationFields/HonorCodeField/HonorCode.js +40 -0
  237. package/dist/register/RegistrationFields/HonorCodeField/HonorCode.js.map +1 -0
  238. package/dist/register/RegistrationFields/NameField/NameField.d.ts +29 -0
  239. package/dist/register/RegistrationFields/NameField/NameField.js +59 -0
  240. package/dist/register/RegistrationFields/NameField/NameField.js.map +1 -0
  241. package/dist/register/RegistrationFields/NameField/validator.d.ts +6 -0
  242. package/dist/register/RegistrationFields/NameField/validator.js +23 -0
  243. package/dist/register/RegistrationFields/NameField/validator.js.map +1 -0
  244. package/dist/register/RegistrationFields/TermsOfServiceField/TermsOfService.d.ts +16 -0
  245. package/dist/register/RegistrationFields/TermsOfServiceField/TermsOfService.js +24 -0
  246. package/dist/register/RegistrationFields/TermsOfServiceField/TermsOfService.js.map +1 -0
  247. package/dist/register/RegistrationFields/UsernameField/UsernameField.d.ts +31 -0
  248. package/dist/register/RegistrationFields/UsernameField/UsernameField.js +119 -0
  249. package/dist/register/RegistrationFields/UsernameField/UsernameField.js.map +1 -0
  250. package/dist/register/RegistrationFields/UsernameField/validator.d.ts +4 -0
  251. package/dist/register/RegistrationFields/UsernameField/validator.js +15 -0
  252. package/dist/register/RegistrationFields/UsernameField/validator.js.map +1 -0
  253. package/dist/register/RegistrationFields/index.d.ts +6 -0
  254. package/{src → dist}/register/RegistrationFields/index.js +1 -0
  255. package/dist/register/RegistrationFields/index.js.map +1 -0
  256. package/dist/register/RegistrationPage.d.ts +18 -0
  257. package/dist/register/RegistrationPage.js +259 -0
  258. package/dist/register/RegistrationPage.js.map +1 -0
  259. package/dist/register/components/ConfigurableRegistrationForm.d.ts +37 -0
  260. package/dist/register/components/ConfigurableRegistrationForm.js +145 -0
  261. package/dist/register/components/ConfigurableRegistrationForm.js.map +1 -0
  262. package/dist/register/components/RegisterContext.d.ts +8 -0
  263. package/dist/register/components/RegisterContext.js +167 -0
  264. package/dist/register/components/RegisterContext.js.map +1 -0
  265. package/dist/register/components/RegistrationFailure.d.ts +19 -0
  266. package/dist/register/components/RegistrationFailure.js +60 -0
  267. package/dist/register/components/RegistrationFailure.js.map +1 -0
  268. package/dist/register/data/api.d.ts +9 -0
  269. package/dist/register/data/api.js +45 -0
  270. package/dist/register/data/api.js.map +1 -0
  271. package/dist/register/data/apiHook.d.ts +33 -0
  272. package/dist/register/data/apiHook.js +66 -0
  273. package/dist/register/data/apiHook.js.map +1 -0
  274. package/dist/register/data/constants.d.ts +11 -0
  275. package/{src → dist}/register/data/constants.js +5 -4
  276. package/dist/register/data/constants.js.map +1 -0
  277. package/dist/register/data/utils.d.ts +6 -0
  278. package/dist/register/data/utils.js +128 -0
  279. package/dist/register/data/utils.js.map +1 -0
  280. package/dist/register/index.d.ts +1 -0
  281. package/dist/register/index.js +2 -0
  282. package/dist/register/index.js.map +1 -0
  283. package/dist/register/messages.d.ts +203 -0
  284. package/dist/register/messages.js +215 -0
  285. package/dist/register/messages.js.map +1 -0
  286. package/dist/register/types.d.ts +74 -0
  287. package/dist/register/types.js +2 -0
  288. package/dist/register/types.js.map +1 -0
  289. package/dist/reset-password/ResetPasswordFailure.d.ts +15 -0
  290. package/dist/reset-password/ResetPasswordFailure.js +44 -0
  291. package/dist/reset-password/ResetPasswordFailure.js.map +1 -0
  292. package/dist/reset-password/ResetPasswordPage.d.ts +2 -0
  293. package/dist/reset-password/ResetPasswordPage.js +182 -0
  294. package/dist/reset-password/ResetPasswordPage.js.map +1 -0
  295. package/dist/reset-password/ResetPasswordSuccess.d.ts +2 -0
  296. package/dist/reset-password/ResetPasswordSuccess.js +10 -0
  297. package/dist/reset-password/ResetPasswordSuccess.js.map +1 -0
  298. package/dist/reset-password/data/api.d.ts +4 -0
  299. package/dist/reset-password/data/api.js +57 -0
  300. package/dist/reset-password/data/api.js.map +1 -0
  301. package/dist/reset-password/data/apiHook.d.ts +31 -0
  302. package/dist/reset-password/data/apiHook.js +74 -0
  303. package/dist/reset-password/data/apiHook.js.map +1 -0
  304. package/dist/reset-password/data/constants.d.ts +13 -0
  305. package/{src → dist}/reset-password/data/constants.js +6 -7
  306. package/dist/reset-password/data/constants.js.map +1 -0
  307. package/dist/reset-password/index.d.ts +1 -0
  308. package/dist/reset-password/index.js +2 -0
  309. package/dist/reset-password/index.js.map +1 -0
  310. package/dist/reset-password/messages.d.ts +83 -0
  311. package/dist/reset-password/messages.js +87 -0
  312. package/dist/reset-password/messages.js.map +1 -0
  313. package/dist/routes.d.ts +19 -0
  314. package/dist/routes.js +76 -0
  315. package/dist/routes.js.map +1 -0
  316. package/{src → dist}/sass/_registration.scss +8 -10
  317. package/dist/slots/LoginComponentSlot/index.d.ts +12 -0
  318. package/dist/slots/LoginComponentSlot/index.js +11 -0
  319. package/dist/slots/LoginComponentSlot/index.js.map +1 -0
  320. package/package.json +26 -15
  321. package/src/Main.tsx +0 -23
  322. package/src/__mocks__/file.js +0 -1
  323. package/src/__mocks__/svg.js +0 -1
  324. package/src/app.ts +0 -43
  325. package/src/base-container/components/default-layout/DefaultLayout.test.jsx +0 -48
  326. package/src/base-container/components/default-layout/LargeLayout.jsx +0 -42
  327. package/src/base-container/components/default-layout/MediumLayout.jsx +0 -49
  328. package/src/base-container/components/default-layout/SmallLayout.jsx +0 -37
  329. package/src/base-container/components/default-layout/messages.js +0 -16
  330. package/src/base-container/components/image-layout/ExtraSmallLayout.jsx +0 -31
  331. package/src/base-container/components/image-layout/LargeLayout.jsx +0 -32
  332. package/src/base-container/components/image-layout/MediumLayout.jsx +0 -32
  333. package/src/base-container/components/image-layout/SmallLayout.jsx +0 -31
  334. package/src/base-container/components/image-layout/messages.js +0 -16
  335. package/src/base-container/components/welcome-page-layout/LargeLayout.jsx +0 -46
  336. package/src/base-container/components/welcome-page-layout/MediumLayout.jsx +0 -49
  337. package/src/base-container/components/welcome-page-layout/SmallLayout.jsx +0 -38
  338. package/src/base-container/components/welcome-page-layout/messages.js +0 -21
  339. package/src/base-container/index.jsx +0 -70
  340. package/src/base-container/tests/BaseContainer.test.jsx +0 -44
  341. package/src/common-components/EmbeddedRegistrationRoute.jsx +0 -26
  342. package/src/common-components/EnterpriseSSO.jsx +0 -110
  343. package/src/common-components/FormGroup.jsx +0 -106
  344. package/src/common-components/InstitutionLogistration.jsx +0 -102
  345. package/src/common-components/NotFoundPage.jsx +0 -15
  346. package/src/common-components/PasswordField.jsx +0 -175
  347. package/src/common-components/RedirectLogistration.jsx +0 -94
  348. package/src/common-components/RegisterFaIcons.jsx +0 -8
  349. package/src/common-components/SocialAuthProviders.jsx +0 -75
  350. package/src/common-components/ThirdPartyAuth.jsx +0 -123
  351. package/src/common-components/ThirdPartyAuthAlert.jsx +0 -49
  352. package/src/common-components/UnAuthOnlyRoute.jsx +0 -41
  353. package/src/common-components/data/actions.js +0 -27
  354. package/src/common-components/data/reducers.js +0 -63
  355. package/src/common-components/data/sagas.js +0 -32
  356. package/src/common-components/data/selectors.js +0 -28
  357. package/src/common-components/data/service.js +0 -23
  358. package/src/common-components/data/tests/reducer.test.js +0 -82
  359. package/src/common-components/data/tests/sagas.test.js +0 -71
  360. package/src/common-components/messages.jsx +0 -127
  361. package/src/common-components/tests/EmbeddedRegistrationRoute.test.jsx +0 -76
  362. package/src/common-components/tests/FormField.test.jsx +0 -289
  363. package/src/common-components/tests/SocialAuthProviders.test.jsx +0 -75
  364. package/src/common-components/tests/ThirdPartyAuthAlert.test.jsx +0 -39
  365. package/src/common-components/tests/UnAuthOnlyRoute.test.jsx +0 -73
  366. package/src/common-components/tests/__snapshots__/SocialAuthProviders.test.jsx.snap +0 -156
  367. package/src/common-components/tests/__snapshots__/ThirdPartyAuthAlert.test.jsx.snap +0 -53
  368. package/src/constants.ts +0 -1
  369. package/src/data/configureStore.js +0 -33
  370. package/src/data/oneTrust.js +0 -3
  371. package/src/data/reducers.js +0 -36
  372. package/src/data/sagas.js +0 -19
  373. package/src/data/tests/cookies.test.js +0 -42
  374. package/src/data/tests/dataUtils.test.js +0 -19
  375. package/src/data/tests/reduxUtils.test.js +0 -14
  376. package/src/data/utils/cookies.js +0 -12
  377. package/src/data/utils/dataUtils.js +0 -81
  378. package/src/data/utils/index.js +0 -11
  379. package/src/data/utils/reduxUtils.js +0 -34
  380. package/src/data/utils/useMobileResponsive.js +0 -24
  381. package/src/field-renderer/FieldRenderer.jsx +0 -156
  382. package/src/field-renderer/tests/FieldRenderer.test.jsx +0 -201
  383. package/src/forgot-password/ForgotPasswordAlert.jsx +0 -97
  384. package/src/forgot-password/ForgotPasswordPage.jsx +0 -193
  385. package/src/forgot-password/data/actions.js +0 -32
  386. package/src/forgot-password/data/reducers.js +0 -58
  387. package/src/forgot-password/data/sagas.js +0 -35
  388. package/src/forgot-password/data/selectors.js +0 -10
  389. package/src/forgot-password/data/service.js +0 -21
  390. package/src/forgot-password/data/tests/reducers.test.js +0 -34
  391. package/src/forgot-password/data/tests/sagas.test.js +0 -67
  392. package/src/forgot-password/index.js +0 -5
  393. package/src/forgot-password/messages.js +0 -128
  394. package/src/forgot-password/tests/ForgotPasswordPage.test.jsx +0 -269
  395. package/src/i18n/index.js +0 -25
  396. package/src/login/AccountActivationMessage.jsx +0 -78
  397. package/src/login/ChangePasswordPrompt.jsx +0 -91
  398. package/src/login/LoginFailure.jsx +0 -231
  399. package/src/login/LoginPage.jsx +0 -368
  400. package/src/login/data/actions.js +0 -39
  401. package/src/login/data/reducers.js +0 -76
  402. package/src/login/data/sagas.js +0 -45
  403. package/src/login/data/service.js +0 -27
  404. package/src/login/data/tests/reducers.test.js +0 -155
  405. package/src/login/data/tests/sagas.test.js +0 -110
  406. package/src/login/index.js +0 -5
  407. package/src/login/messages.jsx +0 -211
  408. package/src/login/tests/AccountActivationMessage.test.jsx +0 -122
  409. package/src/login/tests/ChangePasswordPrompt.test.jsx +0 -75
  410. package/src/login/tests/LoginFailure.test.jsx +0 -323
  411. package/src/login/tests/LoginPage.test.jsx +0 -839
  412. package/src/logistration/Logistration.jsx +0 -189
  413. package/src/logistration/Logistration.test.jsx +0 -275
  414. package/src/progressive-profiling/ProgressiveProfiling.jsx +0 -313
  415. package/src/progressive-profiling/ProgressiveProfilingPageModal.jsx +0 -56
  416. package/src/progressive-profiling/data/actions.js +0 -22
  417. package/src/progressive-profiling/data/reducers.js +0 -38
  418. package/src/progressive-profiling/data/sagas.js +0 -24
  419. package/src/progressive-profiling/data/selectors.js +0 -14
  420. package/src/progressive-profiling/data/service.js +0 -17
  421. package/src/progressive-profiling/messages.jsx +0 -57
  422. package/src/progressive-profiling/tests/ProgressiveProfiling.test.jsx +0 -322
  423. package/src/register/RegistrationFields/CountryField/CountryField.jsx +0 -164
  424. package/src/register/RegistrationFields/CountryField/CountryField.test.jsx +0 -204
  425. package/src/register/RegistrationFields/CountryField/validator.js +0 -32
  426. package/src/register/RegistrationFields/EmailField/EmailField.jsx +0 -140
  427. package/src/register/RegistrationFields/EmailField/EmailField.test.jsx +0 -236
  428. package/src/register/RegistrationFields/EmailField/constants.js +0 -131
  429. package/src/register/RegistrationFields/EmailField/validator.js +0 -126
  430. package/src/register/RegistrationFields/EmailField/validator.test.js +0 -39
  431. package/src/register/RegistrationFields/HonorCodeField/HonorCode.jsx +0 -104
  432. package/src/register/RegistrationFields/HonorCodeField/HonorCode.test.jsx +0 -70
  433. package/src/register/RegistrationFields/NameField/NameField.jsx +0 -68
  434. package/src/register/RegistrationFields/NameField/NameField.test.jsx +0 -146
  435. package/src/register/RegistrationFields/NameField/validator.js +0 -22
  436. package/src/register/RegistrationFields/TermsOfServiceField/TermsOfService.jsx +0 -58
  437. package/src/register/RegistrationFields/TermsOfServiceField/TermsOfService.test.jsx +0 -55
  438. package/src/register/RegistrationFields/UsernameField/UsernameField.jsx +0 -162
  439. package/src/register/RegistrationFields/UsernameField/UsernameField.test.jsx +0 -319
  440. package/src/register/RegistrationFields/UsernameField/validator.js +0 -16
  441. package/src/register/RegistrationPage.jsx +0 -428
  442. package/src/register/RegistrationPage.test.jsx +0 -854
  443. package/src/register/components/ConfigurableRegistrationForm.jsx +0 -244
  444. package/src/register/components/RegistrationFailure.jsx +0 -80
  445. package/src/register/components/tests/ConfigurableRegistrationForm.test.jsx +0 -401
  446. package/src/register/components/tests/RegistrationFailure.test.jsx +0 -212
  447. package/src/register/components/tests/ThirdPartyAuth.test.jsx +0 -439
  448. package/src/register/data/actions.js +0 -85
  449. package/src/register/data/reducers.js +0 -140
  450. package/src/register/data/sagas.js +0 -58
  451. package/src/register/data/selectors.js +0 -34
  452. package/src/register/data/service.js +0 -45
  453. package/src/register/data/tests/reducers.test.js +0 -277
  454. package/src/register/data/tests/sagas.test.js +0 -239
  455. package/src/register/data/tests/utils.test.js +0 -98
  456. package/src/register/data/utils.js +0 -147
  457. package/src/register/index.js +0 -4
  458. package/src/register/messages.jsx +0 -206
  459. package/src/reset-password/ResetPasswordFailure.jsx +0 -55
  460. package/src/reset-password/ResetPasswordPage.jsx +0 -224
  461. package/src/reset-password/ResetPasswordSuccess.jsx +0 -19
  462. package/src/reset-password/data/actions.js +0 -50
  463. package/src/reset-password/data/reducers.js +0 -44
  464. package/src/reset-password/data/sagas.js +0 -67
  465. package/src/reset-password/data/selectors.js +0 -10
  466. package/src/reset-password/data/service.js +0 -61
  467. package/src/reset-password/data/tests/sagas.test.js +0 -185
  468. package/src/reset-password/index.js +0 -5
  469. package/src/reset-password/messages.js +0 -88
  470. package/src/reset-password/tests/ResetPasswordPage.test.jsx +0 -241
  471. package/src/routes.jsx +0 -79
  472. package/src/setupTest.js +0 -68
  473. /package/{src → dist}/base-container/components/image-layout/index.scss +0 -0
  474. /package/{src/index.ts → dist/index.d.ts} +0 -0
  475. /package/{src → dist}/sass/_base_component.scss +0 -0
  476. /package/{src → dist}/sass/_forgot_password.scss +0 -0
  477. /package/{src → dist}/sass/_login_page.scss +0 -0
  478. /package/{src → dist}/sass/_progressive_profiling_page.scss +0 -0
  479. /package/{src → dist}/sass/_reset_password.scss +0 -0
  480. /package/{src → dist}/sass/_style.scss +0 -0
@@ -1,126 +0,0 @@
1
- import { distance } from 'fastest-levenshtein';
2
-
3
- import { VALID_EMAIL_REGEX } from '../../../data/constants';
4
- import messages from '../../messages';
5
- import {
6
- COMMON_EMAIL_PROVIDERS,
7
- DEFAULT_SERVICE_PROVIDER_DOMAINS,
8
- DEFAULT_TOP_LEVEL_DOMAINS,
9
- } from './constants';
10
-
11
- export const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');
12
-
13
- export const getLevenshteinSuggestion = (word, knownWords, similarityThreshold = 4) => {
14
- if (!word) {
15
- return null;
16
- }
17
-
18
- let minEditDistance = 100;
19
- let mostSimilar = word;
20
-
21
- for (const knownWord of knownWords) {
22
- const editDistance = distance(knownWord.toLowerCase(), word.toLowerCase());
23
- if (editDistance < minEditDistance) {
24
- minEditDistance = editDistance;
25
- mostSimilar = knownWord;
26
- }
27
- }
28
-
29
- return minEditDistance <= similarityThreshold && word !== mostSimilar ? mostSimilar : null;
30
- };
31
-
32
- export const getSuggestionForInvalidEmail = (domain, username) => {
33
- if (!domain) {
34
- return '';
35
- }
36
-
37
- const defaultDomains = ['yahoo', 'aol', 'hotmail', 'live', 'outlook', 'gmail'];
38
- const suggestion = getLevenshteinSuggestion(domain, COMMON_EMAIL_PROVIDERS);
39
-
40
- if (suggestion) {
41
- return `${username}@${suggestion}`;
42
- }
43
-
44
- for (const defaultDomain of defaultDomains) {
45
- if (domain.includes(defaultDomain)) {
46
- return `${username}@${defaultDomain}.com`;
47
- }
48
- }
49
-
50
- return '';
51
- };
52
-
53
- export const validateEmailAddress = (value, username, domainName) => {
54
- let suggestion = null;
55
- const validation = {
56
- hasError: false,
57
- suggestion: '',
58
- type: '',
59
- };
60
-
61
- const hasMultipleSubdomains = value.match(/\./g).length > 1;
62
- const [serviceLevelDomain, topLevelDomain] = domainName.split('.');
63
- const tldSuggestion = !DEFAULT_TOP_LEVEL_DOMAINS.includes(topLevelDomain);
64
- const serviceSuggestion = getLevenshteinSuggestion(serviceLevelDomain, DEFAULT_SERVICE_PROVIDER_DOMAINS, 2);
65
-
66
- if (DEFAULT_SERVICE_PROVIDER_DOMAINS.includes(serviceSuggestion ?? serviceLevelDomain)) {
67
- suggestion = `${username}@${serviceSuggestion ?? serviceLevelDomain}.com`;
68
- }
69
-
70
- if (!hasMultipleSubdomains && tldSuggestion) {
71
- validation.suggestion = suggestion;
72
- validation.type = 'error';
73
- } else if (serviceSuggestion) {
74
- validation.suggestion = suggestion;
75
- validation.type = 'warning';
76
- } else {
77
- suggestion = getLevenshteinSuggestion(domainName, COMMON_EMAIL_PROVIDERS, 3);
78
- if (suggestion) {
79
- validation.suggestion = `${username}@${suggestion}`;
80
- validation.type = 'warning';
81
- }
82
- }
83
-
84
- if (!hasMultipleSubdomains && tldSuggestion) {
85
- validation.hasError = true;
86
- }
87
-
88
- return validation;
89
- };
90
-
91
- const validateEmail = (value, confirmEmailValue, formatMessage) => {
92
- let fieldError = '';
93
- let confirmEmailError = '';
94
- let emailSuggestion = { suggestion: '', type: '' };
95
-
96
- if (!value) {
97
- fieldError = formatMessage(messages['empty.email.field.error']);
98
- } else if (value.length <= 2) {
99
- fieldError = formatMessage(messages['email.invalid.format.error']);
100
- } else {
101
- const [username, domainName] = value.split('@');
102
- // Check if email address is invalid. If we have a suggestion for invalid email
103
- // provide that along with the error message.
104
- if (!emailRegex.test(value)) {
105
- fieldError = formatMessage(messages['email.invalid.format.error']);
106
- emailSuggestion = {
107
- suggestion: getSuggestionForInvalidEmail(domainName, username),
108
- type: 'error',
109
- };
110
- } else {
111
- const response = validateEmailAddress(value, username, domainName);
112
- if (response.hasError) {
113
- fieldError = formatMessage(messages['email.invalid.format.error']);
114
- delete response.hasError;
115
- }
116
- emailSuggestion = { ...response };
117
-
118
- if (confirmEmailValue && value !== confirmEmailValue) {
119
- confirmEmailError = formatMessage(messages['email.do.not.match']);
120
- }
121
- }
122
- }
123
- return { fieldError, confirmEmailError, suggestion: emailSuggestion };
124
- };
125
-
126
- export default validateEmail;
@@ -1,39 +0,0 @@
1
- import { COMMON_EMAIL_PROVIDERS } from './constants';
2
- import {
3
- getLevenshteinSuggestion,
4
- getSuggestionForInvalidEmail,
5
- } from './validator';
6
-
7
- describe('Email Validators Utils', () => {
8
- describe('getLevenshteinSuggestion Tests', () => {
9
- it('test getLevenshteinSuggestion returns null for invalid word', () => {
10
- const output = getLevenshteinSuggestion('', COMMON_EMAIL_PROVIDERS);
11
- expect(output).toEqual(null);
12
- });
13
-
14
- it('test getLevenshteinSuggestion returns output for valid word', () => {
15
- const output = getLevenshteinSuggestion('gmail', COMMON_EMAIL_PROVIDERS);
16
- expect(output).toEqual('gmail.com');
17
- });
18
- });
19
- describe('getSuggestionForInvalidEmail Tests', () => {
20
- it('test getSuggestionForInvalidEmail returns empty string for invalid domain', () => {
21
- const output = getSuggestionForInvalidEmail('', 'username');
22
- expect(output).toEqual('');
23
- });
24
-
25
- it('test getSuggestionForInvalidEmail returns valid suggestion when domain is nearly matched', () => {
26
- const output = getSuggestionForInvalidEmail('gmail', 'username');
27
- expect(output).toEqual('username@gmail.com');
28
- });
29
-
30
- it('test getSuggestionForInvalidEmail returns valid suggestion for default domains', () => {
31
- const output = getSuggestionForInvalidEmail('aol', 'username');
32
- expect(output).toEqual('username@aol.com');
33
- });
34
- it('test getSuggestionForInvalidEmail returns empty for totally different domain', () => {
35
- const output = getSuggestionForInvalidEmail('invalid-domain', 'username');
36
- expect(output).toEqual('');
37
- });
38
- });
39
- });
@@ -1,104 +0,0 @@
1
- import { useEffect } from 'react';
2
-
3
- import { FormattedMessage, useAppConfig, getSiteConfig, useIntl } from '@openedx/frontend-base';
4
- import { Form, Hyperlink } from '@openedx/paragon';
5
- import PropTypes from 'prop-types';
6
-
7
- import messages from '../../messages';
8
-
9
- const HonorCode = (props) => {
10
- const { formatMessage } = useIntl();
11
- const {
12
- errorMessage, onChangeHandler, fieldType, value,
13
- } = props;
14
-
15
- useEffect(() => {
16
- if (fieldType === 'tos_and_honor_code' && !value) {
17
- onChangeHandler({ target: { name: 'honor_code', value: true } });
18
- }
19
- }, [fieldType, onChangeHandler, value]);
20
-
21
- if (fieldType === 'tos_and_honor_code') {
22
- return (
23
- <div id="honor-code" className="micro text-muted mt-4">
24
- <FormattedMessage
25
- id="register.page.terms.of.service.and.honor.code"
26
- defaultMessage="By creating an account, you agree to the {tosAndHonorCode} and you acknowledge that {platformName} and each
27
- Member process your personal data in accordance with the {privacyPolicy}."
28
- description="Text that appears on registration form stating honor code and privacy policy"
29
- values={{
30
- platformName: getSiteConfig().siteName,
31
- tosAndHonorCode: (
32
- <Hyperlink
33
- className="inline-link"
34
- destination={useAppConfig().TOS_AND_HONOR_CODE || '#'}
35
- target="_blank"
36
- showLaunchIcon={false}
37
- >
38
- {formatMessage(messages['terms.of.service.and.honor.code'])}
39
- </Hyperlink>
40
- ),
41
- privacyPolicy: (
42
- <Hyperlink
43
- className="inline-link"
44
- destination={useAppConfig().PRIVACY_POLICY || '#'}
45
- target="_blank"
46
- showLaunchIcon={false}
47
- >
48
- {formatMessage(messages['privacy.policy'])}
49
- </Hyperlink>
50
- ),
51
- }}
52
- />
53
- </div>
54
- );
55
- }
56
-
57
- return (
58
- <div id="honor-code" className="micro text-muted">
59
- <Form.Checkbox
60
- className="form-field--checkbox mt-1"
61
- id="honor-code"
62
- checked={value}
63
- name="honor_code"
64
- value={value}
65
- onChange={onChangeHandler}
66
- >
67
- <FormattedMessage
68
- id="register.page.honor.code"
69
- defaultMessage="I agree to the {platformName}&nbsp;{tosAndHonorCode}"
70
- description="Text that appears on registration form stating honor code"
71
- values={{
72
- platformName: getSiteConfig().siteName,
73
- tosAndHonorCode: (
74
- <Hyperlink variant="muted" destination={useAppConfig().TOS_AND_HONOR_CODE || '#'} target="_blank">
75
- {formatMessage(messages['honor.code'])}
76
- </Hyperlink>
77
- ),
78
- }}
79
- />
80
- </Form.Checkbox>
81
- {errorMessage && (
82
- <Form.Control.Feedback type="invalid" className="form-text-size" hasIcon={false}>
83
- {errorMessage}
84
- </Form.Control.Feedback>
85
- )}
86
- </div>
87
- );
88
- };
89
-
90
- HonorCode.defaultProps = {
91
- errorMessage: '',
92
- onChangeHandler: null,
93
- fieldType: 'honor_code',
94
- value: false,
95
- };
96
-
97
- HonorCode.propTypes = {
98
- errorMessage: PropTypes.string,
99
- onChangeHandler: PropTypes.func,
100
- fieldType: PropTypes.string,
101
- value: PropTypes.bool,
102
- };
103
-
104
- export default HonorCode;
@@ -1,70 +0,0 @@
1
- import {
2
- CurrentAppProvider, getSiteConfig, injectIntl, IntlProvider, mergeAppConfig
3
- } from '@openedx/frontend-base';
4
- import { render } from '@testing-library/react';
5
-
6
- import { appId } from '../../../constants';
7
- import { HonorCode } from '../index';
8
-
9
- const IntlHonorCode = injectIntl(HonorCode);
10
-
11
- const providerWrapper = children => (
12
- <IntlProvider locale="en">
13
- <CurrentAppProvider appId={appId}>
14
- {children}
15
- </CurrentAppProvider>
16
- </IntlProvider>
17
- );
18
-
19
- describe('HonorCodeTest', () => {
20
- mergeAppConfig(appId, {
21
- PRIVACY_POLICY: 'http://privacy-policy.com',
22
- TOS_AND_HONOR_CODE: 'http://tos-and-honot-code.com',
23
- });
24
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
- let value = false;
26
-
27
- const changeHandler = (e) => {
28
- value = e.target.checked;
29
- };
30
-
31
- beforeEach(() => {
32
- value = false;
33
- });
34
-
35
- it('should render error msg if honor code is not checked', () => {
36
- const errorMessage = `You must agree to the ${getSiteConfig().siteName} Honor Code`;
37
- const { container } = render(providerWrapper(
38
- <IntlHonorCode
39
- errorMessage={errorMessage}
40
- onChangeHandler={changeHandler}
41
- />
42
- ));
43
- const errorElement = container.querySelector('.form-text-size'); // Adjust the selector as per your component
44
-
45
- expect(errorElement.textContent).toEqual(errorMessage);
46
- });
47
-
48
- it('should render Honor code field', () => {
49
- const expectedMsg = `I agree to the ${getSiteConfig().siteName}\u00a0Honor Codein a new tab`;
50
- const { container } = render(providerWrapper(
51
- <IntlHonorCode onChangeHandler={changeHandler} />
52
- ));
53
-
54
- const honorCodeField = container.querySelector('#honor-code');
55
- honorCodeField.dispatchEvent(new MouseEvent('change', { bubbles: true }));
56
-
57
- expect(honorCodeField.querySelector('label').textContent).toEqual(expectedMsg);
58
- });
59
-
60
- it('should render Terms of Service and Honor code field', () => {
61
- const { container } = render(providerWrapper(
62
- <IntlHonorCode fieldType="tos_and_honor_code" onChangeHandler={changeHandler} />
63
- ));
64
- const expectedMsg = 'By creating an account, you agree to the Terms of Service and Honor Code and you '
65
- + `acknowledge that ${getSiteConfig().siteName} and each Member process your personal data in `
66
- + 'accordance with the Privacy Policy.';
67
- const honorCodeField = container.querySelector('#honor-code');
68
- expect(honorCodeField.textContent).toEqual(expectedMsg);
69
- });
70
- });
@@ -1,68 +0,0 @@
1
- import { useDispatch, useSelector } from 'react-redux';
2
-
3
- import { useIntl } from '@openedx/frontend-base';
4
- import PropTypes from 'prop-types';
5
-
6
- import { FormGroup } from '../../../common-components';
7
- import { clearRegistrationBackendError, fetchRealtimeValidations } from '../../data/actions';
8
- import validateName from './validator';
9
-
10
- /**
11
- * Name field wrapper. It accepts following handlers
12
- * - handleChange for setting value change and
13
- * - handleErrorChange for setting error
14
- *
15
- * It is responsible for
16
- * - Making backend call for generating username suggestions
17
- * - Performing name field validations
18
- * - Clearing error on focus
19
- * - Setting value on change
20
- */
21
- const NameField = (props) => {
22
- const { formatMessage } = useIntl();
23
- const dispatch = useDispatch();
24
- const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);
25
-
26
- const {
27
- handleErrorChange,
28
- shouldFetchUsernameSuggestions,
29
- } = props;
30
-
31
- const handleOnBlur = (e) => {
32
- const { value } = e.target;
33
- const fieldError = validateName(value, formatMessage);
34
- if (fieldError) {
35
- handleErrorChange('name', fieldError);
36
- } else if (shouldFetchUsernameSuggestions && !validationApiRateLimited) {
37
- dispatch(fetchRealtimeValidations({ name: value }));
38
- }
39
- };
40
-
41
- const handleOnFocus = () => {
42
- handleErrorChange('name', '');
43
- dispatch(clearRegistrationBackendError('name'));
44
- };
45
-
46
- return (
47
- <FormGroup
48
- {...props}
49
- handleBlur={handleOnBlur}
50
- handleFocus={handleOnFocus}
51
- />
52
- );
53
- };
54
-
55
- NameField.defaultProps = {
56
- errorMessage: '',
57
- shouldFetchUsernameSuggestions: false,
58
- };
59
-
60
- NameField.propTypes = {
61
- errorMessage: PropTypes.string,
62
- shouldFetchUsernameSuggestions: PropTypes.bool,
63
- value: PropTypes.string.isRequired,
64
- handleChange: PropTypes.func.isRequired,
65
- handleErrorChange: PropTypes.func.isRequired,
66
- };
67
-
68
- export default NameField;
@@ -1,146 +0,0 @@
1
- import { Provider } from 'react-redux';
2
-
3
- import { injectIntl, IntlProvider } from '@openedx/frontend-base';
4
- import { fireEvent, render } from '@testing-library/react';
5
- import { BrowserRouter as Router } from 'react-router-dom';
6
- import configureStore from 'redux-mock-store';
7
-
8
- import { clearRegistrationBackendError, fetchRealtimeValidations } from '../../data/actions';
9
- import { NameField } from '../index';
10
-
11
- const IntlNameField = injectIntl(NameField);
12
- const mockStore = configureStore();
13
-
14
- jest.mock('react-router-dom', () => {
15
- const mockNavigation = jest.fn();
16
-
17
- // eslint-disable-next-line react/prop-types
18
- const Navigate = ({ to }) => {
19
- mockNavigation(to);
20
- return <div />;
21
- };
22
-
23
- return {
24
- ...jest.requireActual('react-router-dom'),
25
- Navigate,
26
- mockNavigate: mockNavigation,
27
- };
28
- });
29
-
30
- describe('NameField', () => {
31
- let props = {};
32
- let store = {};
33
-
34
- const reduxWrapper = children => (
35
- <IntlProvider locale="en">
36
- <Provider store={store}>{children}</Provider>
37
- </IntlProvider>
38
- );
39
-
40
- const routerWrapper = children => (
41
- <Router>
42
- {children}
43
- </Router>
44
- );
45
-
46
- const initialState = {
47
- register: {},
48
- };
49
-
50
- beforeEach(() => {
51
- store = mockStore(initialState);
52
- props = {
53
- name: 'name',
54
- value: '',
55
- errorMessage: '',
56
- handleChange: jest.fn(),
57
- handleErrorChange: jest.fn(),
58
- floatingLabel: '',
59
- };
60
- window.location = { search: '' };
61
- });
62
-
63
- afterEach(() => {
64
- jest.clearAllMocks();
65
- });
66
-
67
- describe('Test Name Field', () => {
68
- const fieldValidation = { name: 'Enter your full name' };
69
-
70
- it('should run name field validation when onBlur is fired', () => {
71
- const { container } = render(routerWrapper(reduxWrapper(<IntlNameField {...props} />)));
72
-
73
- const nameInput = container.querySelector('input#name');
74
- fireEvent.blur(nameInput, { target: { value: '', name: 'name' } });
75
-
76
- expect(props.handleErrorChange).toHaveBeenCalledTimes(1);
77
- expect(props.handleErrorChange).toHaveBeenCalledWith(
78
- 'name',
79
- fieldValidation.name,
80
- );
81
- });
82
-
83
- it('should update errors for frontend validations', () => {
84
- const { container } = render(routerWrapper(reduxWrapper(<IntlNameField {...props} />)));
85
-
86
- const nameInput = container.querySelector('input#name');
87
- fireEvent.blur(nameInput, { target: { value: 'https://invalid-name.com', name: 'name' } });
88
-
89
- expect(props.handleErrorChange).toHaveBeenCalledTimes(1);
90
- expect(props.handleErrorChange).toHaveBeenCalledWith(
91
- 'name',
92
- 'Enter a valid name',
93
- );
94
- });
95
-
96
- it('should clear error on focus', () => {
97
- const { container } = render(routerWrapper(reduxWrapper(<IntlNameField {...props} />)));
98
-
99
- const nameInput = container.querySelector('input#name');
100
- fireEvent.focus(nameInput, { target: { value: '', name: 'name' } });
101
-
102
- expect(props.handleErrorChange).toHaveBeenCalledTimes(1);
103
- expect(props.handleErrorChange).toHaveBeenCalledWith(
104
- 'name',
105
- '',
106
- );
107
- });
108
-
109
- it('should call backend validation api on blur event, if frontend validations have passed', () => {
110
- store.dispatch = jest.fn(store.dispatch);
111
- props = {
112
- ...props,
113
- shouldFetchUsernameSuggestions: true,
114
- };
115
- const { container } = render(routerWrapper(reduxWrapper(<IntlNameField {...props} />)));
116
-
117
- const nameInput = container.querySelector('input#name');
118
- // Enter a valid name so that frontend validations are passed
119
- fireEvent.blur(nameInput, { target: { value: 'test', name: 'name' } });
120
-
121
- expect(store.dispatch).toHaveBeenCalledWith(fetchRealtimeValidations({ name: 'test' }));
122
- });
123
-
124
- it('should clear the registration validation error on focus on field', () => {
125
- const nameError = 'temp error';
126
- store = mockStore({
127
- ...initialState,
128
- register: {
129
- ...initialState.register,
130
- registrationError: {
131
- name: [{ userMessage: nameError }],
132
- },
133
- },
134
- });
135
-
136
- store.dispatch = jest.fn(store.dispatch);
137
- const { container } = render(routerWrapper(reduxWrapper(<IntlNameField {...props} />)));
138
-
139
- const nameInput = container.querySelector('input#name');
140
-
141
- fireEvent.focus(nameInput, { target: { value: 'test', name: 'name' } });
142
-
143
- expect(store.dispatch).toHaveBeenCalledWith(clearRegistrationBackendError('name'));
144
- });
145
- });
146
- });
@@ -1,22 +0,0 @@
1
- import messages from '../../messages';
2
-
3
- // regex more focused towards url matching
4
- export const URL_REGEX = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; // eslint-disable-line no-useless-escape
5
-
6
- // regex for html tags
7
- export const HTML_REGEX = /<|>/u;
8
-
9
- // regex from backend
10
- export const INVALID_NAME_REGEX = /https?:\/\/(?:[-\w.]|(?:%[\da-fA-F]{2}))*/g;
11
-
12
- const validateName = (value, formatMessage) => {
13
- let fieldError = '';
14
- if (!value.trim()) {
15
- fieldError = formatMessage(messages['empty.name.field.error']);
16
- } else if (URL_REGEX.test(value) || HTML_REGEX.test(value) || INVALID_NAME_REGEX.test(value)) {
17
- fieldError = formatMessage(messages['name.validation.message']);
18
- }
19
- return fieldError;
20
- };
21
-
22
- export default validateName;
@@ -1,58 +0,0 @@
1
- import { FormattedMessage, useAppConfig, getSiteConfig, useIntl } from '@openedx/frontend-base';
2
- import { Form, Hyperlink } from '@openedx/paragon';
3
- import PropTypes from 'prop-types';
4
-
5
- import messages from '../../messages';
6
-
7
- const TermsOfService = (props) => {
8
- const { formatMessage } = useIntl();
9
- const {
10
- errorMessage, onChangeHandler, value,
11
- } = props;
12
-
13
- return (
14
- <div id="terms-of-service" className="micro text-muted">
15
- <Form.Checkbox
16
- className="form-field--checkbox mt-1"
17
- id="tos"
18
- checked={value}
19
- name="terms_of_service"
20
- value={value}
21
- onChange={onChangeHandler}
22
- >
23
- <FormattedMessage
24
- id="register.page.terms.of.service"
25
- defaultMessage="I agree to the {platformName}&nbsp;{termsOfService}"
26
- description="Text that appears on registration form stating terms of service.
27
- It is a legal document that users must agree to."
28
- values={{
29
- platformName: getSiteConfig().siteName,
30
- termsOfService: (
31
- <Hyperlink variant="muted" destination={useAppConfig().TOS_LINK || '#'} target="_blank">
32
- {formatMessage(messages['terms.of.service'])}
33
- </Hyperlink>
34
- ),
35
- }}
36
- />
37
- </Form.Checkbox>
38
- {errorMessage && (
39
- <Form.Control.Feedback type="invalid" className="form-text-size" hasIcon={false}>
40
- {errorMessage}
41
- </Form.Control.Feedback>
42
- )}
43
- </div>
44
- );
45
- };
46
-
47
- TermsOfService.defaultProps = {
48
- errorMessage: '',
49
- value: false,
50
- };
51
-
52
- TermsOfService.propTypes = {
53
- errorMessage: PropTypes.string,
54
- onChangeHandler: PropTypes.func.isRequired,
55
- value: PropTypes.bool,
56
- };
57
-
58
- export default TermsOfService;
@@ -1,55 +0,0 @@
1
- import { getSiteConfig, injectIntl, IntlProvider } from '@openedx/frontend-base';
2
- import { fireEvent, render } from '@testing-library/react';
3
-
4
- import { TermsOfService } from '../index';
5
-
6
- const IntlTermsOfService = injectIntl(TermsOfService);
7
-
8
- describe('TermsOfServiceTest', () => {
9
- let value = false;
10
-
11
- const changeHandler = (e) => {
12
- value = e.target.checked;
13
- };
14
-
15
- beforeEach(() => {
16
- value = false;
17
- });
18
-
19
- it('should render error msg if Terms of Service checkbox is not checked', () => {
20
- const errorMessage = `You must agree to the ${getSiteConfig().siteName} Terms of Service`;
21
- const { container } = render(
22
- <IntlProvider locale="en">
23
- <IntlTermsOfService errorMessage={errorMessage} onChangeHandler={changeHandler} />
24
- </IntlProvider>,
25
- );
26
- const errorElement = container.querySelector('.form-text-size');
27
- expect(errorElement.textContent).toEqual(errorMessage);
28
- });
29
-
30
- it('should render Terms of Service field', () => {
31
- const { container } = render(
32
- <IntlProvider locale="en">
33
- <IntlTermsOfService onChangeHandler={changeHandler} />
34
- </IntlProvider>,
35
- );
36
-
37
- const expectedMsg = `I agree to the ${getSiteConfig().siteName}\u00a0Terms of Servicein a new tab`;
38
-
39
- const termsOfServiceLabel = container.querySelector('#terms-of-service label');
40
- expect(termsOfServiceLabel.textContent).toEqual(expectedMsg);
41
-
42
- expect(value).toEqual(false);
43
- });
44
-
45
- it('should change value when Terms of Service field is checked', () => {
46
- const { container } = render(
47
- <IntlProvider locale="en">
48
- <IntlTermsOfService onChangeHandler={changeHandler} />
49
- </IntlProvider>,
50
- );
51
- const field = container.querySelector('input#tos');
52
- fireEvent.click(field);
53
- expect(value).toEqual(true);
54
- });
55
- });