@openedx/frontend-app-authn 1.0.0-alpha.4 → 1.0.0-alpha.6

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 (506) hide show
  1. package/dist/Main.d.ts +3 -0
  2. package/{src/Main.tsx → dist/Main.js} +4 -15
  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/dist/app.scss +2 -0
  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/{src/common-components/EmbeddedRegistrationRoute.jsx → dist/common-components/EmbeddedRegistrationRoute.js} +9 -13
  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 +55 -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 +39 -0
  75. package/dist/common-components/PasswordField.js +94 -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 +68 -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 +42 -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 +56 -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 +31 -0
  94. package/dist/common-components/UnAuthOnlyRoute.js.map +1 -0
  95. package/dist/common-components/data/actions.d.ts +26 -0
  96. package/{src → dist}/common-components/data/actions.js +8 -13
  97. package/dist/common-components/data/actions.js.map +1 -0
  98. package/dist/common-components/data/reducers.d.ts +62 -0
  99. package/dist/common-components/data/reducers.js +39 -0
  100. package/dist/common-components/data/reducers.js.map +1 -0
  101. package/dist/common-components/data/sagas.d.ts +12 -0
  102. package/dist/common-components/data/sagas.js +21 -0
  103. package/dist/common-components/data/sagas.js.map +1 -0
  104. package/dist/common-components/data/selectors.d.ts +98 -0
  105. package/dist/common-components/data/selectors.js +11 -0
  106. package/dist/common-components/data/selectors.js.map +1 -0
  107. package/dist/common-components/data/service.d.ts +5 -0
  108. package/dist/common-components/data/service.js +31 -0
  109. package/dist/common-components/data/service.js.map +1 -0
  110. package/dist/common-components/index.d.ts +13 -0
  111. package/{src/common-components/index.jsx → dist/common-components/index.js} +1 -0
  112. package/dist/common-components/index.js.map +1 -0
  113. package/dist/common-components/messages.d.ts +113 -0
  114. package/dist/common-components/messages.js +126 -0
  115. package/dist/common-components/messages.js.map +1 -0
  116. package/dist/constants.d.ts +1 -0
  117. package/{src/constants.ts → dist/constants.js} +1 -0
  118. package/dist/constants.js.map +1 -0
  119. package/dist/data/configureStore.d.ts +3 -0
  120. package/{src → dist}/data/configureStore.js +11 -20
  121. package/dist/data/configureStore.js.map +1 -0
  122. package/dist/data/constants.d.ts +24 -0
  123. package/{src → dist}/data/constants.js +4 -8
  124. package/dist/data/constants.js.map +1 -0
  125. package/dist/data/countries.d.ts +26 -0
  126. package/{src/data/countries.ts → dist/data/countries.js} +6 -9
  127. package/dist/data/countries.js.map +1 -0
  128. package/dist/data/oneTrust.d.ts +2 -0
  129. package/dist/data/oneTrust.js +3 -0
  130. package/dist/data/oneTrust.js.map +1 -0
  131. package/dist/data/reducers.d.ts +254 -0
  132. package/dist/data/reducers.js +17 -0
  133. package/dist/data/reducers.js.map +1 -0
  134. package/dist/data/sagas.d.ts +1 -0
  135. package/{src → dist}/data/sagas.js +9 -10
  136. package/dist/data/sagas.js.map +1 -0
  137. package/dist/data/utils/cookies.d.ts +1 -0
  138. package/dist/data/utils/cookies.js +12 -0
  139. package/dist/data/utils/cookies.js.map +1 -0
  140. package/dist/data/utils/dataUtils.d.ts +11 -0
  141. package/dist/data/utils/dataUtils.js +67 -0
  142. package/dist/data/utils/dataUtils.js.map +1 -0
  143. package/dist/data/utils/index.d.ts +3 -0
  144. package/dist/data/utils/index.js +4 -0
  145. package/dist/data/utils/index.js.map +1 -0
  146. package/dist/data/utils/reduxUtils.d.ts +15 -0
  147. package/dist/data/utils/reduxUtils.js +29 -0
  148. package/dist/data/utils/reduxUtils.js.map +1 -0
  149. package/dist/data/utils/useMobileResponsive.d.ts +7 -0
  150. package/dist/data/utils/useMobileResponsive.js +22 -0
  151. package/dist/data/utils/useMobileResponsive.js.map +1 -0
  152. package/dist/field-renderer/FieldRenderer.d.ts +34 -0
  153. package/dist/field-renderer/FieldRenderer.js +70 -0
  154. package/dist/field-renderer/FieldRenderer.js.map +1 -0
  155. package/dist/field-renderer/index.d.ts +1 -0
  156. package/{src/field-renderer/index.jsx → dist/field-renderer/index.js} +1 -0
  157. package/dist/field-renderer/index.js.map +1 -0
  158. package/dist/forgot-password/ForgotPasswordAlert.d.ts +16 -0
  159. package/dist/forgot-password/ForgotPasswordAlert.js +66 -0
  160. package/dist/forgot-password/ForgotPasswordAlert.js.map +1 -0
  161. package/dist/forgot-password/ForgotPasswordPage.d.ts +36 -0
  162. package/dist/forgot-password/ForgotPasswordPage.js +91 -0
  163. package/dist/forgot-password/ForgotPasswordPage.js.map +1 -0
  164. package/dist/forgot-password/data/actions.d.ts +30 -0
  165. package/{src → dist}/forgot-password/data/actions.js +10 -16
  166. package/dist/forgot-password/data/actions.js.map +1 -0
  167. package/dist/forgot-password/data/reducers.d.ts +13 -0
  168. package/dist/forgot-password/data/reducers.js +46 -0
  169. package/dist/forgot-password/data/reducers.js.map +1 -0
  170. package/dist/forgot-password/data/sagas.d.ts +4 -0
  171. package/dist/forgot-password/data/sagas.js +28 -0
  172. package/dist/forgot-password/data/sagas.js.map +1 -0
  173. package/dist/forgot-password/data/selectors.d.ts +23 -0
  174. package/dist/forgot-password/data/selectors.js +5 -0
  175. package/dist/forgot-password/data/selectors.js.map +1 -0
  176. package/dist/forgot-password/data/service.d.ts +1 -0
  177. package/dist/forgot-password/data/service.js +26 -0
  178. package/dist/forgot-password/data/service.js.map +1 -0
  179. package/dist/forgot-password/index.d.ts +5 -0
  180. package/{src → dist}/forgot-password/index.js +1 -0
  181. package/dist/forgot-password/index.js.map +1 -0
  182. package/dist/forgot-password/messages.d.ts +123 -0
  183. package/dist/forgot-password/messages.js +128 -0
  184. package/dist/forgot-password/messages.js.map +1 -0
  185. package/dist/i18n/index.d.ts +25 -0
  186. package/dist/i18n/index.js +26 -0
  187. package/dist/i18n/index.js.map +1 -0
  188. package/dist/index.js +4 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/login/AccountActivationMessage.d.ts +14 -0
  191. package/dist/login/AccountActivationMessage.js +49 -0
  192. package/dist/login/AccountActivationMessage.js.map +1 -0
  193. package/dist/login/ChangePasswordPrompt.d.ts +18 -0
  194. package/dist/login/ChangePasswordPrompt.js +45 -0
  195. package/dist/login/ChangePasswordPrompt.js.map +1 -0
  196. package/dist/login/LoginFailure.d.ts +25 -0
  197. package/dist/login/LoginFailure.js +109 -0
  198. package/dist/login/LoginFailure.js.map +1 -0
  199. package/dist/login/LoginPage.d.ts +10 -0
  200. package/dist/login/LoginPage.js +216 -0
  201. package/dist/login/LoginPage.js.map +1 -0
  202. package/dist/login/data/actions.d.ts +36 -0
  203. package/{src → dist}/login/data/actions.js +12 -19
  204. package/dist/login/data/actions.js.map +1 -0
  205. package/dist/login/data/constants.d.ts +17 -0
  206. package/{src → dist}/login/data/constants.js +4 -4
  207. package/dist/login/data/constants.js.map +1 -0
  208. package/dist/login/data/reducers.d.ts +82 -0
  209. package/dist/login/data/reducers.js +44 -0
  210. package/dist/login/data/reducers.js.map +1 -0
  211. package/dist/login/data/sagas.d.ts +10 -0
  212. package/dist/login/data/sagas.js +34 -0
  213. package/dist/login/data/sagas.js.map +1 -0
  214. package/dist/login/data/service.d.ts +4 -0
  215. package/dist/login/data/service.js +32 -0
  216. package/dist/login/data/service.js.map +1 -0
  217. package/dist/login/index.d.ts +4 -0
  218. package/{src → dist}/login/index.js +1 -1
  219. package/dist/login/index.js.map +1 -0
  220. package/dist/login/messages.d.ts +198 -0
  221. package/dist/login/messages.js +210 -0
  222. package/dist/login/messages.js.map +1 -0
  223. package/dist/logistration/Logistration.d.ts +32 -0
  224. package/dist/logistration/Logistration.js +106 -0
  225. package/dist/logistration/Logistration.js.map +1 -0
  226. package/dist/progressive-profiling/ProgressiveProfiling.d.ts +46 -0
  227. package/dist/progressive-profiling/ProgressiveProfiling.js +167 -0
  228. package/dist/progressive-profiling/ProgressiveProfiling.js.map +1 -0
  229. package/dist/progressive-profiling/ProgressiveProfilingPageModal.d.ts +13 -0
  230. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js +24 -0
  231. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js.map +1 -0
  232. package/dist/progressive-profiling/data/actions.d.ts +19 -0
  233. package/{src → dist}/progressive-profiling/data/actions.js +6 -10
  234. package/dist/progressive-profiling/data/actions.js.map +1 -0
  235. package/dist/progressive-profiling/data/reducers.d.ts +22 -0
  236. package/dist/progressive-profiling/data/reducers.js +23 -0
  237. package/dist/progressive-profiling/data/reducers.js.map +1 -0
  238. package/dist/progressive-profiling/data/sagas.d.ts +4 -0
  239. package/dist/progressive-profiling/data/sagas.js +17 -0
  240. package/dist/progressive-profiling/data/sagas.js.map +1 -0
  241. package/dist/progressive-profiling/data/selectors.d.ts +39 -0
  242. package/{src → dist}/progressive-profiling/data/selectors.js +4 -9
  243. package/dist/progressive-profiling/data/selectors.js.map +1 -0
  244. package/dist/progressive-profiling/data/service.d.ts +1 -0
  245. package/dist/progressive-profiling/data/service.js +23 -0
  246. package/dist/progressive-profiling/data/service.js.map +1 -0
  247. package/dist/progressive-profiling/index.d.ts +4 -0
  248. package/{src → dist}/progressive-profiling/index.js +1 -1
  249. package/dist/progressive-profiling/index.js.map +1 -0
  250. package/dist/progressive-profiling/messages.d.ts +53 -0
  251. package/dist/progressive-profiling/messages.js +57 -0
  252. package/dist/progressive-profiling/messages.js.map +1 -0
  253. package/dist/register/RegistrationFields/CountryField/CountryField.d.ts +38 -0
  254. package/dist/register/RegistrationFields/CountryField/CountryField.js +95 -0
  255. package/dist/register/RegistrationFields/CountryField/CountryField.js.map +1 -0
  256. package/dist/register/RegistrationFields/CountryField/validator.d.ts +8 -0
  257. package/dist/register/RegistrationFields/CountryField/validator.js +29 -0
  258. package/dist/register/RegistrationFields/CountryField/validator.js.map +1 -0
  259. package/dist/register/RegistrationFields/EmailField/EmailField.d.ts +30 -0
  260. package/dist/register/RegistrationFields/EmailField/EmailField.js +80 -0
  261. package/dist/register/RegistrationFields/EmailField/EmailField.js.map +1 -0
  262. package/dist/register/RegistrationFields/EmailField/constants.d.ts +3 -0
  263. package/dist/register/RegistrationFields/EmailField/constants.js +130 -0
  264. package/dist/register/RegistrationFields/EmailField/constants.js.map +1 -0
  265. package/dist/register/RegistrationFields/EmailField/validator.d.ts +17 -0
  266. package/dist/register/RegistrationFields/EmailField/validator.js +107 -0
  267. package/dist/register/RegistrationFields/EmailField/validator.js.map +1 -0
  268. package/dist/register/RegistrationFields/HonorCodeField/HonorCode.d.ts +21 -0
  269. package/dist/register/RegistrationFields/HonorCodeField/HonorCode.js +40 -0
  270. package/dist/register/RegistrationFields/HonorCodeField/HonorCode.js.map +1 -0
  271. package/dist/register/RegistrationFields/NameField/NameField.d.ts +29 -0
  272. package/dist/register/RegistrationFields/NameField/NameField.js +52 -0
  273. package/dist/register/RegistrationFields/NameField/NameField.js.map +1 -0
  274. package/dist/register/RegistrationFields/NameField/validator.d.ts +5 -0
  275. package/{src → dist}/register/RegistrationFields/NameField/validator.js +9 -12
  276. package/dist/register/RegistrationFields/NameField/validator.js.map +1 -0
  277. package/dist/register/RegistrationFields/TermsOfServiceField/TermsOfService.d.ts +16 -0
  278. package/dist/register/RegistrationFields/TermsOfServiceField/TermsOfService.js +24 -0
  279. package/dist/register/RegistrationFields/TermsOfServiceField/TermsOfService.js.map +1 -0
  280. package/dist/register/RegistrationFields/UsernameField/UsernameField.d.ts +31 -0
  281. package/dist/register/RegistrationFields/UsernameField/UsernameField.js +113 -0
  282. package/dist/register/RegistrationFields/UsernameField/UsernameField.js.map +1 -0
  283. package/dist/register/RegistrationFields/UsernameField/validator.d.ts +4 -0
  284. package/dist/register/RegistrationFields/UsernameField/validator.js +15 -0
  285. package/dist/register/RegistrationFields/UsernameField/validator.js.map +1 -0
  286. package/dist/register/RegistrationFields/index.d.ts +6 -0
  287. package/{src → dist}/register/RegistrationFields/index.js +1 -0
  288. package/dist/register/RegistrationFields/index.js.map +1 -0
  289. package/dist/register/RegistrationPage.d.ts +18 -0
  290. package/dist/register/RegistrationPage.js +216 -0
  291. package/dist/register/RegistrationPage.js.map +1 -0
  292. package/dist/register/components/ConfigurableRegistrationForm.d.ts +37 -0
  293. package/dist/register/components/ConfigurableRegistrationForm.js +145 -0
  294. package/dist/register/components/ConfigurableRegistrationForm.js.map +1 -0
  295. package/dist/register/components/RegistrationFailure.d.ts +19 -0
  296. package/dist/register/components/RegistrationFailure.js +57 -0
  297. package/dist/register/components/RegistrationFailure.js.map +1 -0
  298. package/dist/register/data/actions.d.ts +80 -0
  299. package/{src → dist}/register/data/actions.js +26 -42
  300. package/dist/register/data/actions.js.map +1 -0
  301. package/dist/register/data/constants.d.ts +10 -0
  302. package/{src → dist}/register/data/constants.js +4 -4
  303. package/dist/register/data/constants.js.map +1 -0
  304. package/dist/register/data/reducers.d.ts +237 -0
  305. package/dist/register/data/reducers.js +86 -0
  306. package/dist/register/data/reducers.js.map +1 -0
  307. package/dist/register/data/sagas.d.ts +19 -0
  308. package/dist/register/data/sagas.js +45 -0
  309. package/dist/register/data/sagas.js.map +1 -0
  310. package/dist/register/data/selectors.d.ts +26 -0
  311. package/dist/register/data/selectors.js +25 -0
  312. package/dist/register/data/selectors.js.map +1 -0
  313. package/dist/register/data/service.d.ts +8 -0
  314. package/dist/register/data/service.js +46 -0
  315. package/dist/register/data/service.js.map +1 -0
  316. package/dist/register/data/utils.d.ts +6 -0
  317. package/dist/register/data/utils.js +128 -0
  318. package/dist/register/data/utils.js.map +1 -0
  319. package/dist/register/index.d.ts +3 -0
  320. package/{src → dist}/register/index.js +1 -0
  321. package/dist/register/index.js.map +1 -0
  322. package/dist/register/messages.d.ts +193 -0
  323. package/dist/register/messages.js +205 -0
  324. package/dist/register/messages.js.map +1 -0
  325. package/dist/reset-password/ResetPasswordFailure.d.ts +15 -0
  326. package/dist/reset-password/ResetPasswordFailure.js +44 -0
  327. package/dist/reset-password/ResetPasswordFailure.js.map +1 -0
  328. package/dist/reset-password/ResetPasswordPage.d.ts +32 -0
  329. package/dist/reset-password/ResetPasswordPage.js +150 -0
  330. package/dist/reset-password/ResetPasswordPage.js.map +1 -0
  331. package/dist/reset-password/ResetPasswordSuccess.d.ts +2 -0
  332. package/dist/reset-password/ResetPasswordSuccess.js +10 -0
  333. package/dist/reset-password/ResetPasswordSuccess.js.map +1 -0
  334. package/dist/reset-password/data/actions.d.ts +56 -0
  335. package/{src → dist}/reset-password/data/actions.js +17 -26
  336. package/dist/reset-password/data/actions.js.map +1 -0
  337. package/dist/reset-password/data/constants.d.ts +13 -0
  338. package/{src → dist}/reset-password/data/constants.js +6 -7
  339. package/dist/reset-password/data/constants.js.map +1 -0
  340. package/dist/reset-password/data/reducers.d.ts +19 -0
  341. package/dist/reset-password/data/reducers.js +25 -0
  342. package/dist/reset-password/data/reducers.js.map +1 -0
  343. package/dist/reset-password/data/sagas.d.ts +7 -0
  344. package/dist/reset-password/data/sagas.js +63 -0
  345. package/dist/reset-password/data/sagas.js.map +1 -0
  346. package/dist/reset-password/data/selectors.d.ts +23 -0
  347. package/dist/reset-password/data/selectors.js +5 -0
  348. package/dist/reset-password/data/selectors.js.map +1 -0
  349. package/dist/reset-password/data/service.d.ts +3 -0
  350. package/dist/reset-password/data/service.js +62 -0
  351. package/dist/reset-password/data/service.js.map +1 -0
  352. package/dist/reset-password/index.d.ts +5 -0
  353. package/{src → dist}/reset-password/index.js +1 -0
  354. package/dist/reset-password/index.js.map +1 -0
  355. package/dist/reset-password/messages.d.ts +83 -0
  356. package/dist/reset-password/messages.js +87 -0
  357. package/dist/reset-password/messages.js.map +1 -0
  358. package/dist/routes.d.ts +18 -0
  359. package/dist/routes.js +75 -0
  360. package/dist/routes.js.map +1 -0
  361. package/{src → dist}/sass/_base_component.scss +57 -54
  362. package/{src → dist}/sass/_progressive_profiling_page.scss +1 -3
  363. package/{src → dist}/sass/_registration.scss +7 -8
  364. package/{src → dist}/sass/_style.scss +40 -43
  365. package/package.json +17 -6
  366. package/src/__mocks__/file.js +0 -1
  367. package/src/__mocks__/svg.js +0 -1
  368. package/src/app.scss +0 -6
  369. package/src/app.ts +0 -43
  370. package/src/base-container/components/default-layout/DefaultLayout.test.jsx +0 -48
  371. package/src/base-container/components/default-layout/LargeLayout.jsx +0 -42
  372. package/src/base-container/components/default-layout/MediumLayout.jsx +0 -49
  373. package/src/base-container/components/default-layout/SmallLayout.jsx +0 -37
  374. package/src/base-container/components/default-layout/messages.js +0 -16
  375. package/src/base-container/components/image-layout/ExtraSmallLayout.jsx +0 -31
  376. package/src/base-container/components/image-layout/LargeLayout.jsx +0 -32
  377. package/src/base-container/components/image-layout/MediumLayout.jsx +0 -32
  378. package/src/base-container/components/image-layout/SmallLayout.jsx +0 -31
  379. package/src/base-container/components/image-layout/messages.js +0 -16
  380. package/src/base-container/components/welcome-page-layout/LargeLayout.jsx +0 -46
  381. package/src/base-container/components/welcome-page-layout/MediumLayout.jsx +0 -49
  382. package/src/base-container/components/welcome-page-layout/SmallLayout.jsx +0 -38
  383. package/src/base-container/components/welcome-page-layout/messages.js +0 -21
  384. package/src/base-container/index.jsx +0 -70
  385. package/src/base-container/tests/BaseContainer.test.jsx +0 -44
  386. package/src/common-components/EnterpriseSSO.jsx +0 -110
  387. package/src/common-components/FormGroup.jsx +0 -106
  388. package/src/common-components/InstitutionLogistration.jsx +0 -102
  389. package/src/common-components/NotFoundPage.jsx +0 -15
  390. package/src/common-components/PasswordField.jsx +0 -175
  391. package/src/common-components/RedirectLogistration.jsx +0 -94
  392. package/src/common-components/RegisterFaIcons.jsx +0 -8
  393. package/src/common-components/SocialAuthProviders.jsx +0 -75
  394. package/src/common-components/ThirdPartyAuth.jsx +0 -123
  395. package/src/common-components/ThirdPartyAuthAlert.jsx +0 -49
  396. package/src/common-components/UnAuthOnlyRoute.jsx +0 -41
  397. package/src/common-components/data/reducers.js +0 -63
  398. package/src/common-components/data/sagas.js +0 -32
  399. package/src/common-components/data/selectors.js +0 -28
  400. package/src/common-components/data/service.js +0 -23
  401. package/src/common-components/data/tests/reducer.test.js +0 -82
  402. package/src/common-components/data/tests/sagas.test.js +0 -71
  403. package/src/common-components/messages.jsx +0 -127
  404. package/src/common-components/tests/EmbeddedRegistrationRoute.test.jsx +0 -76
  405. package/src/common-components/tests/FormField.test.jsx +0 -289
  406. package/src/common-components/tests/SocialAuthProviders.test.jsx +0 -75
  407. package/src/common-components/tests/ThirdPartyAuthAlert.test.jsx +0 -39
  408. package/src/common-components/tests/UnAuthOnlyRoute.test.jsx +0 -73
  409. package/src/common-components/tests/__snapshots__/SocialAuthProviders.test.jsx.snap +0 -156
  410. package/src/common-components/tests/__snapshots__/ThirdPartyAuthAlert.test.jsx.snap +0 -53
  411. package/src/data/oneTrust.js +0 -3
  412. package/src/data/reducers.js +0 -36
  413. package/src/data/tests/cookies.test.js +0 -42
  414. package/src/data/tests/dataUtils.test.js +0 -19
  415. package/src/data/tests/reduxUtils.test.js +0 -14
  416. package/src/data/utils/cookies.js +0 -12
  417. package/src/data/utils/dataUtils.js +0 -81
  418. package/src/data/utils/index.js +0 -11
  419. package/src/data/utils/reduxUtils.js +0 -34
  420. package/src/data/utils/useMobileResponsive.js +0 -24
  421. package/src/field-renderer/FieldRenderer.jsx +0 -156
  422. package/src/field-renderer/tests/FieldRenderer.test.jsx +0 -201
  423. package/src/forgot-password/ForgotPasswordAlert.jsx +0 -97
  424. package/src/forgot-password/ForgotPasswordPage.jsx +0 -193
  425. package/src/forgot-password/data/reducers.js +0 -58
  426. package/src/forgot-password/data/sagas.js +0 -35
  427. package/src/forgot-password/data/selectors.js +0 -10
  428. package/src/forgot-password/data/service.js +0 -21
  429. package/src/forgot-password/data/tests/reducers.test.js +0 -34
  430. package/src/forgot-password/data/tests/sagas.test.js +0 -67
  431. package/src/forgot-password/messages.js +0 -128
  432. package/src/forgot-password/tests/ForgotPasswordPage.test.jsx +0 -269
  433. package/src/i18n/index.js +0 -25
  434. package/src/login/AccountActivationMessage.jsx +0 -78
  435. package/src/login/ChangePasswordPrompt.jsx +0 -91
  436. package/src/login/LoginFailure.jsx +0 -231
  437. package/src/login/LoginPage.jsx +0 -368
  438. package/src/login/data/reducers.js +0 -76
  439. package/src/login/data/sagas.js +0 -45
  440. package/src/login/data/service.js +0 -27
  441. package/src/login/data/tests/reducers.test.js +0 -155
  442. package/src/login/data/tests/sagas.test.js +0 -110
  443. package/src/login/messages.jsx +0 -211
  444. package/src/login/tests/AccountActivationMessage.test.jsx +0 -122
  445. package/src/login/tests/ChangePasswordPrompt.test.jsx +0 -75
  446. package/src/login/tests/LoginFailure.test.jsx +0 -323
  447. package/src/login/tests/LoginPage.test.jsx +0 -839
  448. package/src/logistration/Logistration.jsx +0 -189
  449. package/src/logistration/Logistration.test.jsx +0 -275
  450. package/src/progressive-profiling/ProgressiveProfiling.jsx +0 -313
  451. package/src/progressive-profiling/ProgressiveProfilingPageModal.jsx +0 -56
  452. package/src/progressive-profiling/data/reducers.js +0 -38
  453. package/src/progressive-profiling/data/sagas.js +0 -24
  454. package/src/progressive-profiling/data/service.js +0 -17
  455. package/src/progressive-profiling/messages.jsx +0 -57
  456. package/src/progressive-profiling/tests/ProgressiveProfiling.test.jsx +0 -322
  457. package/src/register/RegistrationFields/CountryField/CountryField.jsx +0 -164
  458. package/src/register/RegistrationFields/CountryField/CountryField.test.jsx +0 -204
  459. package/src/register/RegistrationFields/CountryField/validator.js +0 -32
  460. package/src/register/RegistrationFields/EmailField/EmailField.jsx +0 -140
  461. package/src/register/RegistrationFields/EmailField/EmailField.test.jsx +0 -236
  462. package/src/register/RegistrationFields/EmailField/constants.js +0 -131
  463. package/src/register/RegistrationFields/EmailField/validator.js +0 -126
  464. package/src/register/RegistrationFields/EmailField/validator.test.js +0 -39
  465. package/src/register/RegistrationFields/HonorCodeField/HonorCode.jsx +0 -104
  466. package/src/register/RegistrationFields/HonorCodeField/HonorCode.test.jsx +0 -70
  467. package/src/register/RegistrationFields/NameField/NameField.jsx +0 -68
  468. package/src/register/RegistrationFields/NameField/NameField.test.jsx +0 -146
  469. package/src/register/RegistrationFields/TermsOfServiceField/TermsOfService.jsx +0 -58
  470. package/src/register/RegistrationFields/TermsOfServiceField/TermsOfService.test.jsx +0 -55
  471. package/src/register/RegistrationFields/UsernameField/UsernameField.jsx +0 -162
  472. package/src/register/RegistrationFields/UsernameField/UsernameField.test.jsx +0 -319
  473. package/src/register/RegistrationFields/UsernameField/validator.js +0 -16
  474. package/src/register/RegistrationPage.jsx +0 -428
  475. package/src/register/RegistrationPage.test.jsx +0 -854
  476. package/src/register/components/ConfigurableRegistrationForm.jsx +0 -244
  477. package/src/register/components/RegistrationFailure.jsx +0 -80
  478. package/src/register/components/tests/ConfigurableRegistrationForm.test.jsx +0 -401
  479. package/src/register/components/tests/RegistrationFailure.test.jsx +0 -212
  480. package/src/register/components/tests/ThirdPartyAuth.test.jsx +0 -439
  481. package/src/register/data/reducers.js +0 -140
  482. package/src/register/data/sagas.js +0 -58
  483. package/src/register/data/selectors.js +0 -34
  484. package/src/register/data/service.js +0 -45
  485. package/src/register/data/tests/reducers.test.js +0 -277
  486. package/src/register/data/tests/sagas.test.js +0 -239
  487. package/src/register/data/tests/utils.test.js +0 -98
  488. package/src/register/data/utils.js +0 -153
  489. package/src/register/messages.jsx +0 -206
  490. package/src/reset-password/ResetPasswordFailure.jsx +0 -55
  491. package/src/reset-password/ResetPasswordPage.jsx +0 -224
  492. package/src/reset-password/ResetPasswordSuccess.jsx +0 -19
  493. package/src/reset-password/data/reducers.js +0 -44
  494. package/src/reset-password/data/sagas.js +0 -67
  495. package/src/reset-password/data/selectors.js +0 -10
  496. package/src/reset-password/data/service.js +0 -61
  497. package/src/reset-password/data/tests/sagas.test.js +0 -185
  498. package/src/reset-password/messages.js +0 -88
  499. package/src/reset-password/tests/ResetPasswordPage.test.jsx +0 -241
  500. package/src/routes.jsx +0 -79
  501. package/src/setupTest.js +0 -68
  502. /package/{src → dist}/base-container/components/image-layout/index.scss +0 -0
  503. /package/{src/index.ts → dist/index.d.ts} +0 -0
  504. /package/{src → dist}/sass/_forgot_password.scss +0 -0
  505. /package/{src → dist}/sass/_login_page.scss +0 -0
  506. /package/{src → dist}/sass/_reset_password.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,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
- });