diff --git a/package-lock.json b/package-lock.json
index 1c332ba1..d18cae85 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3828,13 +3828,14 @@
}
},
"@edx/paragon": {
- "version": "13.3.1",
- "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-13.3.1.tgz",
- "integrity": "sha512-y8clM7ZzN65LihmF6A35k9BiYtKtxO1LDoniNYjNSuNYzI7RPF8ZFsIfsKcRoWBRphiYw5a+QdUeByFv8Ey8Nw==",
+ "version": "13.13.2",
+ "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-13.13.2.tgz",
+ "integrity": "sha512-HEndaKSpb1bXTxaXh6BCIvBbrJKZLnoNWc/obwenHzXzzMPWm555PpK4J9Ijzk9rCc6DDIr5JoHHPF6O4OIqsQ==",
"requires": {
"@fortawesome/fontawesome-svg-core": "^1.2.30",
"@fortawesome/free-solid-svg-icons": "^5.14.0",
"@fortawesome/react-fontawesome": "^0.1.11",
+ "@popperjs/core": "^2.6.0",
"airbnb-prop-types": "^2.12.0",
"bootstrap": "4.6.0",
"classnames": "^2.2.6",
@@ -3844,13 +3845,14 @@
"prop-types": "^15.7.2",
"react-bootstrap": "^1.2.2",
"react-focus-on": "^3.5.0",
+ "react-popper": "^2.2.4",
"react-proptype-conditional-require": "^1.0.4",
"react-responsive": "^6.1.1",
"react-table": "^7.6.1",
"react-transition-group": "^4.0.0",
"sanitize-html": "^1.20.0",
"tabbable": "^4.0.0",
- "uncontrollable": "7.1.1"
+ "uncontrollable": "7.2.1"
},
"dependencies": {
"react-responsive": {
@@ -3862,6 +3864,17 @@
"matchmediaquery": "^0.3.0",
"prop-types": "^15.6.1"
}
+ },
+ "uncontrollable": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
+ "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
+ "requires": {
+ "@babel/runtime": "^7.6.3",
+ "@types/react": ">=16.9.11",
+ "invariant": "^2.2.4",
+ "react-lifecycles-compat": "^3.0.4"
+ }
}
}
},
@@ -21164,6 +21177,24 @@
"use-sidecar": "^1.0.1"
}
},
+ "react-helmet": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz",
+ "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==",
+ "requires": {
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.7.2",
+ "react-fast-compare": "^3.1.1",
+ "react-side-effect": "^2.1.0"
+ },
+ "dependencies": {
+ "react-fast-compare": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
+ }
+ }
+ },
"react-intl": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.9.0.tgz",
@@ -21224,6 +21255,22 @@
}
}
},
+ "react-popper": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz",
+ "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==",
+ "requires": {
+ "react-fast-compare": "^3.0.1",
+ "warning": "^4.0.2"
+ },
+ "dependencies": {
+ "react-fast-compare": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
+ }
+ }
+ },
"react-proptype-conditional-require": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz",
@@ -21388,6 +21435,11 @@
}
}
},
+ "react-side-effect": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz",
+ "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ=="
+ },
"react-style-singleton": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.1.1.tgz",
diff --git a/package.json b/package.json
index c6b456aa..8b2be760 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,8 @@
"redux-mock-store": "^1.5.4",
"redux-saga": "^1.1.3",
"redux-thunk": "^2.3.0",
- "reselect": "^4.0.0"
+ "reselect": "^4.0.0",
+ "react-helmet": "^6.1.0"
},
"devDependencies": {
"@edx/frontend-build": "5.6.8",
diff --git a/src/forgot-password/ForgotPasswordPage.jsx b/src/forgot-password/ForgotPasswordPage.jsx
index 3e5446dd..50e376d5 100644
--- a/src/forgot-password/ForgotPasswordPage.jsx
+++ b/src/forgot-password/ForgotPasswordPage.jsx
@@ -3,6 +3,7 @@ import React, { useState } from 'react';
import { Formik } from 'formik';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
+import { Helmet } from 'react-helmet';
import { Redirect } from 'react-router-dom';
import { getConfig } from '@edx/frontend-platform';
@@ -86,6 +87,11 @@ const ForgotPasswordPage = (props) => {
errors, handleSubmit, setFieldValue, values,
}) => (
<>
+