@openedx/frontend-app-authn 1.0.0 → 2.0.0-alpha.2
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.
- package/README.rst +304 -108
- package/dist/app.js +1 -27
- package/dist/app.js.map +1 -1
- package/dist/base-container/components/BrandLogo.d.ts +24 -0
- package/dist/base-container/components/BrandLogo.js +28 -0
- package/dist/base-container/components/BrandLogo.js.map +1 -0
- package/dist/base-container/components/default-layout/LargeLayout.js +3 -3
- package/dist/base-container/components/default-layout/LargeLayout.js.map +1 -1
- package/dist/base-container/components/default-layout/MediumLayout.js +3 -3
- package/dist/base-container/components/default-layout/MediumLayout.js.map +1 -1
- package/dist/base-container/components/default-layout/SmallLayout.js +3 -3
- package/dist/base-container/components/default-layout/SmallLayout.js.map +1 -1
- package/dist/base-container/components/image-layout/ExtraSmallLayout.js +4 -3
- package/dist/base-container/components/image-layout/ExtraSmallLayout.js.map +1 -1
- package/dist/base-container/components/image-layout/LargeLayout.js +4 -3
- package/dist/base-container/components/image-layout/LargeLayout.js.map +1 -1
- package/dist/base-container/components/image-layout/MediumLayout.js +4 -3
- package/dist/base-container/components/image-layout/MediumLayout.js.map +1 -1
- package/dist/base-container/components/image-layout/SmallLayout.js +4 -3
- package/dist/base-container/components/image-layout/SmallLayout.js.map +1 -1
- package/dist/base-container/components/welcome-page-layout/LargeLayout.js +3 -3
- package/dist/base-container/components/welcome-page-layout/LargeLayout.js.map +1 -1
- package/dist/base-container/components/welcome-page-layout/MediumLayout.js +3 -3
- package/dist/base-container/components/welcome-page-layout/MediumLayout.js.map +1 -1
- package/dist/base-container/components/welcome-page-layout/SmallLayout.js +3 -3
- package/dist/base-container/components/welcome-page-layout/SmallLayout.js.map +1 -1
- package/dist/common-components/components/ThirdPartyAuthContext.js.map +1 -1
- package/dist/forgot-password/ForgotPasswordAlert.js +5 -1
- package/dist/forgot-password/ForgotPasswordAlert.js.map +1 -1
- package/dist/forgot-password/ForgotPasswordPage.js +1 -1
- package/dist/forgot-password/ForgotPasswordPage.js.map +1 -1
- package/dist/forgot-password/data/apiHook.js.map +1 -1
- package/dist/login/AccountActivationMessage.js +5 -1
- package/dist/login/AccountActivationMessage.js.map +1 -1
- package/dist/login/components/LoginContext.js.map +1 -1
- package/dist/login/data/apiHook.js.map +1 -1
- package/dist/progressive-profiling/ProgressiveProfiling.js +1 -1
- package/dist/progressive-profiling/ProgressiveProfiling.js.map +1 -1
- package/dist/progressive-profiling/ProgressiveProfilingPageModal.d.ts +3 -1
- package/dist/progressive-profiling/ProgressiveProfilingPageModal.js +7 -4
- package/dist/progressive-profiling/ProgressiveProfilingPageModal.js.map +1 -1
- package/dist/progressive-profiling/components/ProgressiveProfilingContext.js.map +1 -1
- package/dist/progressive-profiling/data/apiHook.js.map +1 -1
- package/dist/register/components/RegisterContext.js.map +1 -1
- package/dist/register/data/apiHook.js.map +1 -1
- package/dist/register/types.js.map +1 -1
- package/dist/reset-password/data/apiHook.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LargeLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/default-layout/LargeLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"LargeLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/default-layout/LargeLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,aAC1B,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,GAAG,EAChD,eAAK,SAAS,EAAC,sCAAsC,aACnD,cAAK,SAAS,EAAE,UAAU,CAAC,EAAE,2BAA2B,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC,GAAI,EACnG,cACE,SAAS,EAAE,UAAU,CACnB,4BAA4B,EAC5B,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,KAAK,EAAE,CAC/C,aAEA,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAC1C,cAAK,SAAS,EAAC,eAAe,YAC3B,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,GAC9E,IACH,IACD,IACF,EACN,cAAK,SAAS,EAAC,uBAAuB,YACpC,cAAK,SAAS,EAAC,4CAA4C,EAAC,mBAAmB,EAAC,eAAe,YAC7F,YAAG,SAAS,EAAC,cAAc,YACzB,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAG,GAC7C,GACA,GACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport classNames from 'classnames';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst LargeLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <div className=\"w-50 d-flex\">\n <div className=\"col-md-9 bg-primary-400\">\n <BrandLogo className=\"logo position-absolute\" />\n <div className=\"min-vh-100 d-flex align-items-center\">\n <div className={classNames({ 'large-yellow-line mr-n4.5': getSiteConfig().siteName === 'edX' })} />\n <h1\n className={classNames(\n 'display-2 text-white mw-xs',\n { 'ml-6': getSiteConfig().siteName !== 'edX' },\n )}\n >\n {formatMessage(messages['start.learning'])}\n <div className=\"text-accent-a\">\n {formatMessage(messages['with.site.name'], { siteName: getSiteConfig().siteName })}\n </div>\n </h1>\n </div>\n </div>\n <div className=\"col-md-3 bg-white p-0\">\n <svg className=\"ml-n1 w-100 h-100 large-screen-svg-primary\" preserveAspectRatio=\"xMaxYMin meet\">\n <g transform=\"skewX(171.6)\">\n <rect x=\"0\" y=\"0\" height=\"100%\" width=\"100%\" />\n </g>\n </svg>\n </div>\n </div>\n );\n};\n\nexport default LargeLayout;\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Hyperlink, Image } from '@openedx/paragon';
|
|
2
|
+
import { getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
4
3
|
import classNames from 'classnames';
|
|
4
|
+
import BrandLogo from '../BrandLogo';
|
|
5
5
|
import messages from './messages';
|
|
6
6
|
const MediumLayout = () => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
8
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "w-100 medium-screen-top-stripe" }), _jsxs("div", { className: "w-100 p-0 mb-3 d-flex", children: [_jsxs("div", { className: "col-md-10 bg-primary-400", children: [_jsx(
|
|
8
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "w-100 medium-screen-top-stripe" }), _jsxs("div", { className: "w-100 p-0 mb-3 d-flex", children: [_jsxs("div", { className: "col-md-10 bg-primary-400", children: [_jsx(BrandLogo, { className: "logo" }), _jsxs("div", { className: "d-flex align-items-center justify-content-center mb-4 ", children: [_jsx("div", { className: classNames({ 'mt-1 medium-yellow-line': getSiteConfig().siteName === 'edX' }) }), _jsx("div", { children: _jsx("h1", { className: classNames('display-1 text-white mt-5 mb-5 mr-2 main-heading', { 'ml-4.5': getSiteConfig().siteName !== 'edX' }), children: _jsxs("span", { children: [formatMessage(messages['start.learning']), ' ', _jsx("span", { className: "text-accent-a d-inline-block", children: formatMessage(messages['with.site.name'], { siteName: getSiteConfig().siteName }) })] }) }) })] })] }), _jsx("div", { className: "col-md-2 bg-white p-0", children: _jsx("svg", { className: "w-100 h-100 medium-screen-svg-primary", preserveAspectRatio: "xMaxYMin meet", children: _jsx("g", { transform: "skewX(168)", children: _jsx("rect", { x: "0", y: "0", height: "100%", width: "100%" }) }) }) })] })] }));
|
|
9
9
|
};
|
|
10
10
|
export default MediumLayout;
|
|
11
11
|
//# sourceMappingURL=MediumLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediumLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/default-layout/MediumLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MediumLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/default-layout/MediumLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,CACL,8BACE,cAAK,SAAS,EAAC,gCAAgC,GAAG,EAClD,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAK,SAAS,EAAC,0BAA0B,aACvC,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,GAAG,EAC9B,eAAK,SAAS,EAAC,wDAAwD,aACrE,cAAK,SAAS,EAAE,UAAU,CAAC,EAAE,yBAAyB,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC,GAAI,EACjG,wBACE,aACE,SAAS,EAAE,UAAU,CACnB,kDAAkD,EAClD,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,KAAK,EAAE,CACjD,YAED,2BACG,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAC/C,eAAM,SAAS,EAAC,8BAA8B,YAC3C,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,GAC7E,IACF,GACJ,GACD,IACF,IACF,EACN,cAAK,SAAS,EAAC,uBAAuB,YACpC,cAAK,SAAS,EAAC,uCAAuC,EAAC,mBAAmB,EAAC,eAAe,YACxF,YAAG,SAAS,EAAC,YAAY,YACvB,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAG,GAC7C,GACA,GACF,IACF,IACL,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport classNames from 'classnames';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst MediumLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <div className=\"w-100 medium-screen-top-stripe\" />\n <div className=\"w-100 p-0 mb-3 d-flex\">\n <div className=\"col-md-10 bg-primary-400\">\n <BrandLogo className=\"logo\" />\n <div className=\"d-flex align-items-center justify-content-center mb-4 \">\n <div className={classNames({ 'mt-1 medium-yellow-line': getSiteConfig().siteName === 'edX' })} />\n <div>\n <h1\n className={classNames(\n 'display-1 text-white mt-5 mb-5 mr-2 main-heading',\n { 'ml-4.5': getSiteConfig().siteName !== 'edX' },\n )}\n >\n <span>\n {formatMessage(messages['start.learning'])}{' '}\n <span className=\"text-accent-a d-inline-block\">\n {formatMessage(messages['with.site.name'], { siteName: getSiteConfig().siteName })}\n </span>\n </span>\n </h1>\n </div>\n </div>\n </div>\n <div className=\"col-md-2 bg-white p-0\">\n <svg className=\"w-100 h-100 medium-screen-svg-primary\" preserveAspectRatio=\"xMaxYMin meet\">\n <g transform=\"skewX(168)\">\n <rect x=\"0\" y=\"0\" height=\"100%\" width=\"100%\" />\n </g>\n </svg>\n </div>\n </div>\n </>\n );\n};\n\nexport default MediumLayout;\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Hyperlink, Image } from '@openedx/paragon';
|
|
2
|
+
import { getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
4
3
|
import classNames from 'classnames';
|
|
4
|
+
import BrandLogo from '../BrandLogo';
|
|
5
5
|
import messages from './messages';
|
|
6
6
|
const SmallLayout = () => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
8
|
-
return (_jsxs("span", { className: "bg-primary-400 w-100", children: [_jsx("div", { className: "col-md-12 small-screen-top-stripe" }), _jsxs("div", { children: [_jsx(
|
|
8
|
+
return (_jsxs("span", { className: "bg-primary-400 w-100", children: [_jsx("div", { className: "col-md-12 small-screen-top-stripe" }), _jsxs("div", { children: [_jsx(BrandLogo, { className: "logo-small" }), _jsxs("div", { className: "d-flex align-items-center m-3.5", children: [_jsx("div", { className: classNames({ 'small-yellow-line mr-n2.5': getSiteConfig().siteName === 'edX' }) }), _jsx("h1", { className: classNames('text-white mt-3.5 mb-3.5'), children: _jsxs("span", { children: [formatMessage(messages['start.learning']), ' ', _jsx("span", { className: "text-accent-a d-inline-block", children: formatMessage(messages['with.site.name'], { siteName: getSiteConfig().siteName }) })] }) })] })] })] }));
|
|
9
9
|
};
|
|
10
10
|
export default SmallLayout;
|
|
11
11
|
//# sourceMappingURL=SmallLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/default-layout/SmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/default-layout/SmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,CACL,gBAAM,SAAS,EAAC,sBAAsB,aACpC,cAAK,SAAS,EAAC,mCAAmC,GAAG,EACrD,0BACE,KAAC,SAAS,IAAC,SAAS,EAAC,YAAY,GAAG,EACpC,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAE,UAAU,CAAC,EAAE,2BAA2B,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC,GAAI,EACnG,aACE,SAAS,EAAE,UAAU,CACnB,0BAA0B,CAC3B,YAED,2BACG,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAC/C,eAAM,SAAS,EAAC,8BAA8B,YAC3C,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,GAC7E,IACF,GACJ,IACD,IACF,IACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport classNames from 'classnames';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst SmallLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <span className=\"bg-primary-400 w-100\">\n <div className=\"col-md-12 small-screen-top-stripe\" />\n <div>\n <BrandLogo className=\"logo-small\" />\n <div className=\"d-flex align-items-center m-3.5\">\n <div className={classNames({ 'small-yellow-line mr-n2.5': getSiteConfig().siteName === 'edX' })} />\n <h1\n className={classNames(\n 'text-white mt-3.5 mb-3.5',\n )}\n >\n <span>\n {formatMessage(messages['start.learning'])}{' '}\n <span className=\"text-accent-a d-inline-block\">\n {formatMessage(messages['with.site.name'], { siteName: getSiteConfig().siteName })}\n </span>\n </span>\n </h1>\n </div>\n </div>\n </span>\n );\n};\n\nexport default SmallLayout;\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useAppConfig,
|
|
3
|
-
import
|
|
2
|
+
import { useAppConfig, useIntl } from '@openedx/frontend-base';
|
|
3
|
+
import BrandLogo from '../BrandLogo';
|
|
4
4
|
import messages from './messages';
|
|
5
5
|
const ExtraSmallLayout = () => {
|
|
6
6
|
const { formatMessage } = useIntl();
|
|
7
|
-
|
|
7
|
+
const bannerImage = useAppConfig().BANNER_IMAGE_EXTRA_SMALL;
|
|
8
|
+
return (_jsxs("span", { className: "w-100 bg-primary-500 banner__image extra-small-layout", style: bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined, children: [_jsx(BrandLogo, { className: "company-logo" }), _jsx("div", { className: "ml-4.5 mr-1 pb-3.5 pt-3.5", children: _jsxs("h1", { className: "banner__heading", children: [_jsxs("span", { className: "text-light-500", children: [formatMessage(messages['your.career.turning.point']), ' '] }), _jsx("span", { className: "text-warning-300", children: formatMessage(messages['is.here']) })] }) })] }));
|
|
8
9
|
};
|
|
9
10
|
export default ExtraSmallLayout;
|
|
10
11
|
//# sourceMappingURL=ExtraSmallLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtraSmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/ExtraSmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"ExtraSmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/ExtraSmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,wBAAwB,CAAC;IAE5D,OAAO,CACL,gBACE,SAAS,EAAC,uDAAuD,EACjE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,aAE3E,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,EACtC,cAAK,SAAS,EAAC,2BAA2B,YACxC,cAAI,SAAS,EAAC,iBAAiB,aAC7B,gBAAM,SAAS,EAAC,gBAAgB,aAC7B,aAAa,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,EAAE,GAAG,IACrD,EACP,eAAM,SAAS,EAAC,kBAAkB,YAC/B,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9B,IACJ,GACD,IACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC","sourcesContent":["import { useAppConfig, useIntl } from '@openedx/frontend-base';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst ExtraSmallLayout = () => {\n const { formatMessage } = useIntl();\n const bannerImage = useAppConfig().BANNER_IMAGE_EXTRA_SMALL;\n\n return (\n <span\n className=\"w-100 bg-primary-500 banner__image extra-small-layout\"\n style={bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined}\n >\n <BrandLogo className=\"company-logo\" />\n <div className=\"ml-4.5 mr-1 pb-3.5 pt-3.5\">\n <h1 className=\"banner__heading\">\n <span className=\"text-light-500\">\n {formatMessage(messages['your.career.turning.point'])}{' '}\n </span>\n <span className=\"text-warning-300\">\n {formatMessage(messages['is.here'])}\n </span>\n </h1>\n </div>\n </span>\n );\n};\n\nexport default ExtraSmallLayout;\n"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useAppConfig,
|
|
3
|
-
import { Hyperlink, Image } from '@openedx/paragon';
|
|
2
|
+
import { useAppConfig, useIntl } from '@openedx/frontend-base';
|
|
4
3
|
import './index.scss';
|
|
4
|
+
import BrandLogo from '../BrandLogo';
|
|
5
5
|
import messages from './messages';
|
|
6
6
|
const LargeLayout = () => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
8
|
-
|
|
8
|
+
const bannerImage = useAppConfig().BANNER_IMAGE_LARGE;
|
|
9
|
+
return (_jsxs("div", { className: "w-50 bg-primary-500 banner__image large-layout", style: bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined, children: [_jsx(BrandLogo, { className: "company-logo position-absolute" }), _jsx("div", { className: "min-vh-100 p-5 d-flex align-items-end", children: _jsxs("h1", { className: "display-2 mw-sm mb-3 d-flex flex-column flex-shrink-0 justify-content-center", children: [_jsx("span", { className: "text-light-500", children: formatMessage(messages['your.career.turning.point']) }), _jsx("span", { className: "text-warning-300", children: formatMessage(messages['is.here']) })] }) })] }));
|
|
9
10
|
};
|
|
10
11
|
export default LargeLayout;
|
|
11
12
|
//# sourceMappingURL=LargeLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LargeLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/LargeLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"LargeLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/LargeLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,cAAc,CAAC;AACtB,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,kBAAkB,CAAC;IAEtD,OAAO,CACL,eACE,SAAS,EAAC,gDAAgD,EAC1D,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,aAE3E,KAAC,SAAS,IAAC,SAAS,EAAC,gCAAgC,GAAG,EACxD,cAAK,SAAS,EAAC,uCAAuC,YACpD,cAAI,SAAS,EAAC,8EAA8E,aAC1F,eAAM,SAAS,EAAC,gBAAgB,YAC7B,aAAa,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,GAChD,EACP,eAAM,SAAS,EAAC,kBAAkB,YAC/B,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9B,IACJ,GACD,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { useAppConfig, useIntl } from '@openedx/frontend-base';\n\nimport './index.scss';\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst LargeLayout = () => {\n const { formatMessage } = useIntl();\n const bannerImage = useAppConfig().BANNER_IMAGE_LARGE;\n\n return (\n <div\n className=\"w-50 bg-primary-500 banner__image large-layout\"\n style={bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined}\n >\n <BrandLogo className=\"company-logo position-absolute\" />\n <div className=\"min-vh-100 p-5 d-flex align-items-end\">\n <h1 className=\"display-2 mw-sm mb-3 d-flex flex-column flex-shrink-0 justify-content-center\">\n <span className=\"text-light-500\">\n {formatMessage(messages['your.career.turning.point'])}\n </span>\n <span className=\"text-warning-300\">\n {formatMessage(messages['is.here'])}\n </span>\n </h1>\n </div>\n </div>\n );\n};\n\nexport default LargeLayout;\n"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useAppConfig,
|
|
3
|
-
import { Hyperlink, Image } from '@openedx/paragon';
|
|
2
|
+
import { useAppConfig, useIntl } from '@openedx/frontend-base';
|
|
4
3
|
import './index.scss';
|
|
4
|
+
import BrandLogo from '../BrandLogo';
|
|
5
5
|
import messages from './messages';
|
|
6
6
|
const MediumLayout = () => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
8
|
-
|
|
8
|
+
const bannerImage = useAppConfig().BANNER_IMAGE_MEDIUM;
|
|
9
|
+
return (_jsxs("div", { className: "w-100 mb-3 bg-primary-500 banner__image medium-layout", style: bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined, children: [_jsx(BrandLogo, { className: "company-logo" }), _jsx("div", { className: "ml-5 pb-4 pt-4", children: _jsxs("h1", { className: "display-2 banner__heading", children: [_jsxs("span", { className: "text-light-500", children: [formatMessage(messages['your.career.turning.point']), ' '] }), _jsx("span", { className: "text-warning-300 d-inline-block", children: formatMessage(messages['is.here']) })] }) })] }));
|
|
9
10
|
};
|
|
10
11
|
export default MediumLayout;
|
|
11
12
|
//# sourceMappingURL=MediumLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediumLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/MediumLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"MediumLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/MediumLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,cAAc,CAAC;AACtB,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,mBAAmB,CAAC;IAEvD,OAAO,CACL,eACE,SAAS,EAAC,uDAAuD,EACjE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,aAE3E,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,EACtC,cAAK,SAAS,EAAC,gBAAgB,YAC7B,cAAI,SAAS,EAAC,2BAA2B,aACvC,gBAAM,SAAS,EAAC,gBAAgB,aAC7B,aAAa,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,EAAE,GAAG,IACrD,EACP,eAAM,SAAS,EAAC,iCAAiC,YAC9C,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9B,IACJ,GACD,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { useAppConfig, useIntl } from '@openedx/frontend-base';\n\nimport './index.scss';\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst MediumLayout = () => {\n const { formatMessage } = useIntl();\n const bannerImage = useAppConfig().BANNER_IMAGE_MEDIUM;\n\n return (\n <div\n className=\"w-100 mb-3 bg-primary-500 banner__image medium-layout\"\n style={bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined}\n >\n <BrandLogo className=\"company-logo\" />\n <div className=\"ml-5 pb-4 pt-4\">\n <h1 className=\"display-2 banner__heading\">\n <span className=\"text-light-500\">\n {formatMessage(messages['your.career.turning.point'])}{' '}\n </span>\n <span className=\"text-warning-300 d-inline-block\">\n {formatMessage(messages['is.here'])}\n </span>\n </h1>\n </div>\n </div>\n );\n};\n\nexport default MediumLayout;\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useAppConfig,
|
|
3
|
-
import
|
|
2
|
+
import { useAppConfig, useIntl } from '@openedx/frontend-base';
|
|
3
|
+
import BrandLogo from '../BrandLogo';
|
|
4
4
|
import messages from './messages';
|
|
5
5
|
const SmallLayout = () => {
|
|
6
6
|
const { formatMessage } = useIntl();
|
|
7
|
-
|
|
7
|
+
const bannerImage = useAppConfig().BANNER_IMAGE_SMALL;
|
|
8
|
+
return (_jsxs("span", { className: "w-100 bg-primary-500 banner__image small-layout", style: bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined, children: [_jsx(BrandLogo, { className: "company-logo" }), _jsx("div", { className: "ml-5 mr-1 pb-3.5 pt-3.5", children: _jsxs("h1", { className: "display-2", children: [_jsxs("span", { className: "text-light-500", children: [formatMessage(messages['your.career.turning.point']), ' '] }), _jsx("span", { className: "text-warning-300", children: formatMessage(messages['is.here']) })] }) })] }));
|
|
8
9
|
};
|
|
9
10
|
export default SmallLayout;
|
|
10
11
|
//# sourceMappingURL=SmallLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/SmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"SmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/image-layout/SmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,kBAAkB,CAAC;IAEtD,OAAO,CACL,gBACE,SAAS,EAAC,iDAAiD,EAC3D,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,aAE3E,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,EACtC,cAAK,SAAS,EAAC,yBAAyB,YACtC,cAAI,SAAS,EAAC,WAAW,aACvB,gBAAM,SAAS,EAAC,gBAAgB,aAC7B,aAAa,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,EAAE,GAAG,IACrD,EACP,eAAM,SAAS,EAAC,kBAAkB,YAC/B,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9B,IACJ,GACD,IACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { useAppConfig, useIntl } from '@openedx/frontend-base';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst SmallLayout = () => {\n const { formatMessage } = useIntl();\n const bannerImage = useAppConfig().BANNER_IMAGE_SMALL;\n\n return (\n <span\n className=\"w-100 bg-primary-500 banner__image small-layout\"\n style={bannerImage ? { backgroundImage: `url(${bannerImage})` } : undefined}\n >\n <BrandLogo className=\"company-logo\" />\n <div className=\"ml-5 mr-1 pb-3.5 pt-3.5\">\n <h1 className=\"display-2\">\n <span className=\"text-light-500\">\n {formatMessage(messages['your.career.turning.point'])}{' '}\n </span>\n <span className=\"text-warning-300\">\n {formatMessage(messages['is.here'])}\n </span>\n </h1>\n </div>\n </span>\n );\n};\n\nexport default SmallLayout;\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Hyperlink, Image } from '@openedx/paragon';
|
|
2
|
+
import { getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
4
3
|
import PropTypes from 'prop-types';
|
|
4
|
+
import BrandLogo from '../BrandLogo';
|
|
5
5
|
import messages from './messages';
|
|
6
6
|
const LargeLayout = ({ fullName }) => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
8
|
-
return (_jsxs("div", { className: "w-50 d-flex", children: [_jsxs("div", { className: "col-md-10 bg-light-200 p-0", children: [_jsx(
|
|
8
|
+
return (_jsxs("div", { className: "w-50 d-flex", children: [_jsxs("div", { className: "col-md-10 bg-light-200 p-0", children: [_jsx(BrandLogo, { className: "logo position-absolute", variant: "default" }), _jsxs("div", { className: "min-vh-100 d-flex align-items-center", children: [_jsx("div", { className: "large-screen-left-container mr-n4.5 large-yellow-line mt-5" }), _jsxs("div", { children: [_jsx("h1", { className: "welcome-to-platform data-hj-suppress", children: formatMessage(messages['welcome.to.platform'], { siteName: getSiteConfig().siteName, fullName }) }), _jsxs("h2", { className: "complete-your-profile", children: [formatMessage(messages['complete.your.profile.1']), _jsx("div", { className: "text-accent-a", children: formatMessage(messages['complete.your.profile.2']) })] })] })] })] }), _jsx("div", { className: "col-md-2 bg-white p-0", children: _jsx("svg", { className: "m1-n1 w-100 h-100 large-screen-svg-light", preserveAspectRatio: "xMaxYMin meet", children: _jsx("g", { transform: "skewX(171.6)", children: _jsx("rect", { x: "0", y: "0", height: "100%", width: "100%" }) }) }) })] }));
|
|
9
9
|
};
|
|
10
10
|
LargeLayout.propTypes = {
|
|
11
11
|
fullName: PropTypes.string.isRequired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LargeLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/welcome-page-layout/LargeLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"LargeLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/welcome-page-layout/LargeLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,aAC1B,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,EAAC,OAAO,EAAC,SAAS,GAAG,EAClE,eAAK,SAAS,EAAC,sCAAsC,aACnD,cAAK,SAAS,EAAC,4DAA4D,GAAG,EAC9E,0BACE,aAAI,SAAS,EAAC,sCAAsC,YACjD,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAC9F,EACL,cAAI,SAAS,EAAC,uBAAuB,aAClC,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,EACnD,cAAK,SAAS,EAAC,eAAe,YAC3B,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,GAC/C,IACH,IACD,IACF,IACF,EACN,cAAK,SAAS,EAAC,uBAAuB,YACpC,cAAK,SAAS,EAAC,0CAA0C,EAAC,mBAAmB,EAAC,eAAe,YAC3F,YAAG,SAAS,EAAC,cAAc,YACzB,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAG,GAC7C,GACA,GACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,WAAW,CAAC,SAAS,GAAG;IACtB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACtC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport PropTypes from 'prop-types';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst LargeLayout = ({ fullName }) => {\n const { formatMessage } = useIntl();\n\n return (\n <div className=\"w-50 d-flex\">\n <div className=\"col-md-10 bg-light-200 p-0\">\n <BrandLogo className=\"logo position-absolute\" variant=\"default\" />\n <div className=\"min-vh-100 d-flex align-items-center\">\n <div className=\"large-screen-left-container mr-n4.5 large-yellow-line mt-5\" />\n <div>\n <h1 className=\"welcome-to-platform data-hj-suppress\">\n {formatMessage(messages['welcome.to.platform'], { siteName: getSiteConfig().siteName, fullName })}\n </h1>\n <h2 className=\"complete-your-profile\">\n {formatMessage(messages['complete.your.profile.1'])}\n <div className=\"text-accent-a\">\n {formatMessage(messages['complete.your.profile.2'])}\n </div>\n </h2>\n </div>\n </div>\n </div>\n <div className=\"col-md-2 bg-white p-0\">\n <svg className=\"m1-n1 w-100 h-100 large-screen-svg-light\" preserveAspectRatio=\"xMaxYMin meet\">\n <g transform=\"skewX(171.6)\">\n <rect x=\"0\" y=\"0\" height=\"100%\" width=\"100%\" />\n </g>\n </svg>\n </div>\n </div>\n );\n};\n\nLargeLayout.propTypes = {\n fullName: PropTypes.string.isRequired,\n};\n\nexport default LargeLayout;\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Hyperlink, Image } from '@openedx/paragon';
|
|
2
|
+
import { getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
4
3
|
import PropTypes from 'prop-types';
|
|
4
|
+
import BrandLogo from '../BrandLogo';
|
|
5
5
|
import messages from './messages';
|
|
6
6
|
const MediumLayout = ({ fullName }) => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
8
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "w-100 medium-screen-top-stripe" }), _jsxs("div", { className: "w-100 p-0 mb-3 d-flex", children: [_jsxs("div", { className: "col-md-10 bg-light-200", children: [_jsx(
|
|
8
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "w-100 medium-screen-top-stripe" }), _jsxs("div", { className: "w-100 p-0 mb-3 d-flex", children: [_jsxs("div", { className: "col-md-10 bg-light-200", children: [_jsx(BrandLogo, { className: "logo", variant: "default" }), _jsxs("div", { className: "d-flex align-items-center justify-content-center mb-4 ml-5", children: [_jsx("div", { className: "medium-yellow-line mt-5 mr-n2" }), _jsxs("div", { children: [_jsx("h1", { className: "h3 data-hj-suppress mw-320", children: formatMessage(messages['welcome.to.platform'], { siteName: getSiteConfig().siteName, fullName }) }), _jsxs("h2", { className: "display-1", children: [formatMessage(messages['complete.your.profile.1']), _jsx("div", { className: "text-accent-a", children: formatMessage(messages['complete.your.profile.2']) })] })] })] })] }), _jsx("div", { className: "col-md-2 bg-white p-0", children: _jsx("svg", { className: "w-100 h-100 medium-screen-svg-light", preserveAspectRatio: "xMaxYMin meet", children: _jsx("g", { transform: "skewX(168)", children: _jsx("rect", { x: "0", y: "0", height: "100%", width: "100%" }) }) }) })] })] }));
|
|
9
9
|
};
|
|
10
10
|
MediumLayout.propTypes = {
|
|
11
11
|
fullName: PropTypes.string.isRequired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediumLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/welcome-page-layout/MediumLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MediumLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/welcome-page-layout/MediumLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,CACL,8BACE,cAAK,SAAS,EAAC,gCAAgC,GAAG,EAClD,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,SAAS,GAAG,EAChD,eAAK,SAAS,EAAC,4DAA4D,aACzE,cAAK,SAAS,EAAC,+BAA+B,GAAG,EACjD,0BACE,aAAI,SAAS,EAAC,4BAA4B,YACvC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAC9F,EACL,cAAI,SAAS,EAAC,WAAW,aACtB,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,EACnD,cAAK,SAAS,EAAC,eAAe,YAC3B,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,GAC/C,IACH,IACD,IACF,IACF,EACN,cAAK,SAAS,EAAC,uBAAuB,YACpC,cAAK,SAAS,EAAC,qCAAqC,EAAC,mBAAmB,EAAC,eAAe,YACtF,YAAG,SAAS,EAAC,YAAY,YACvB,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAG,GAC7C,GACA,GACF,IACF,IACL,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,GAAG;IACvB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACtC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport PropTypes from 'prop-types';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst MediumLayout = ({ fullName }) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <div className=\"w-100 medium-screen-top-stripe\" />\n <div className=\"w-100 p-0 mb-3 d-flex\">\n <div className=\"col-md-10 bg-light-200\">\n <BrandLogo className=\"logo\" variant=\"default\" />\n <div className=\"d-flex align-items-center justify-content-center mb-4 ml-5\">\n <div className=\"medium-yellow-line mt-5 mr-n2\" />\n <div>\n <h1 className=\"h3 data-hj-suppress mw-320\">\n {formatMessage(messages['welcome.to.platform'], { siteName: getSiteConfig().siteName, fullName })}\n </h1>\n <h2 className=\"display-1\">\n {formatMessage(messages['complete.your.profile.1'])}\n <div className=\"text-accent-a\">\n {formatMessage(messages['complete.your.profile.2'])}\n </div>\n </h2>\n </div>\n </div>\n </div>\n <div className=\"col-md-2 bg-white p-0\">\n <svg className=\"w-100 h-100 medium-screen-svg-light\" preserveAspectRatio=\"xMaxYMin meet\">\n <g transform=\"skewX(168)\">\n <rect x=\"0\" y=\"0\" height=\"100%\" width=\"100%\" />\n </g>\n </svg>\n </div>\n </div>\n </>\n );\n};\n\nMediumLayout.propTypes = {\n fullName: PropTypes.string.isRequired,\n};\n\nexport default MediumLayout;\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Hyperlink, Image } from '@openedx/paragon';
|
|
2
|
+
import { getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
4
3
|
import PropTypes from 'prop-types';
|
|
4
|
+
import BrandLogo from '../BrandLogo';
|
|
5
5
|
import messages from './messages';
|
|
6
6
|
const SmallLayout = ({ fullName }) => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
8
|
-
return (_jsxs("div", { className: "min-vw-100 bg-light-200", children: [_jsx("div", { className: "col-md-12 small-screen-top-stripe" }), _jsx(
|
|
8
|
+
return (_jsxs("div", { className: "min-vw-100 bg-light-200", children: [_jsx("div", { className: "col-md-12 small-screen-top-stripe" }), _jsx(BrandLogo, { className: "logo-small", variant: "default" }), _jsxs("div", { className: "d-flex align-items-center m-3.5", children: [_jsx("div", { className: "small-yellow-line mt-4.5" }), _jsxs("div", { children: [_jsx("h1", { className: "h5 data-hj-suppress", children: formatMessage(messages['welcome.to.platform'], { siteName: getSiteConfig().siteName, fullName }) }), _jsxs("h2", { className: "h1", children: [formatMessage(messages['complete.your.profile.1']), _jsx("div", { className: "text-accent-a", children: formatMessage(messages['complete.your.profile.2']) })] })] })] })] }));
|
|
9
9
|
};
|
|
10
10
|
SmallLayout.propTypes = {
|
|
11
11
|
fullName: PropTypes.string.isRequired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/welcome-page-layout/SmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SmallLayout.js","sourceRoot":"","sources":["../../../../src/base-container/components/welcome-page-layout/SmallLayout.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,mCAAmC,GAAG,EACrD,KAAC,SAAS,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,SAAS,GAAG,EACtD,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAC,0BAA0B,GAAG,EAC5C,0BACE,aAAI,SAAS,EAAC,qBAAqB,YAChC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAC9F,EACL,cAAI,SAAS,EAAC,IAAI,aACf,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,EACnD,cAAK,SAAS,EAAC,eAAe,YAC3B,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,GAC/C,IACH,IACD,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,WAAW,CAAC,SAAS,GAAG;IACtB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACtC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport PropTypes from 'prop-types';\n\nimport BrandLogo from '../BrandLogo';\nimport messages from './messages';\n\nconst SmallLayout = ({ fullName }) => {\n const { formatMessage } = useIntl();\n\n return (\n <div className=\"min-vw-100 bg-light-200\">\n <div className=\"col-md-12 small-screen-top-stripe\" />\n <BrandLogo className=\"logo-small\" variant=\"default\" />\n <div className=\"d-flex align-items-center m-3.5\">\n <div className=\"small-yellow-line mt-4.5\" />\n <div>\n <h1 className=\"h5 data-hj-suppress\">\n {formatMessage(messages['welcome.to.platform'], { siteName: getSiteConfig().siteName, fullName })}\n </h1>\n <h2 className=\"h1\">\n {formatMessage(messages['complete.your.profile.1'])}\n <div className=\"text-accent-a\">\n {formatMessage(messages['complete.your.profile.2'])}\n </div>\n </h2>\n </div>\n </div>\n </div>\n );\n};\n\nSmallLayout.propTypes = {\n fullName: PropTypes.string.isRequired,\n};\n\nexport default SmallLayout;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThirdPartyAuthContext.js","sourceRoot":"","sources":["../../../src/common-components/components/ThirdPartyAuthContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext, FC, ReactNode, useCallback, useContext, useMemo, useState,\n} from 'react';\n\nimport { COMPLETE_STATE, FAILURE_STATE, PENDING_STATE } from '../../data/constants';\n\ninterface ThirdPartyAuthContextType {\n fieldDescriptions: any
|
|
1
|
+
{"version":3,"file":"ThirdPartyAuthContext.js","sourceRoot":"","sources":["../../../src/common-components/components/ThirdPartyAuthContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext, FC, ReactNode, useCallback, useContext, useMemo, useState,\n} from 'react';\n\nimport { COMPLETE_STATE, FAILURE_STATE, PENDING_STATE } from '../../data/constants';\n\ninterface ThirdPartyAuthContextType {\n fieldDescriptions: any;\n optionalFields: {\n fields: any;\n extended_profile: any[];\n };\n thirdPartyAuthApiStatus: string | null;\n thirdPartyAuthContext: {\n platformName: string | null;\n autoSubmitRegForm: boolean;\n currentProvider: string | null;\n finishAuthUrl: string | null;\n countryCode: string | null;\n providers: any[];\n secondaryProviders: any[];\n pipelineUserDetails: any | null;\n errorMessage: string | null;\n welcomePageRedirectUrl: string | null;\n };\n setThirdPartyAuthContextBegin: () => void;\n setThirdPartyAuthContextSuccess: (fieldDescData: any, optionalFieldsData: any, contextData: any) => void;\n setThirdPartyAuthContextFailure: () => void;\n clearThirdPartyAuthErrorMessage: () => void;\n}\n\nconst ThirdPartyAuthContext = createContext<ThirdPartyAuthContextType | undefined>(undefined);\n\ninterface ThirdPartyAuthProviderProps {\n children: ReactNode;\n}\n\nexport const ThirdPartyAuthProvider: FC<ThirdPartyAuthProviderProps> = ({ children }) => {\n const [fieldDescriptions, setFieldDescriptions] = useState({});\n const [optionalFields, setOptionalFields] = useState({\n fields: {},\n extended_profile: [],\n });\n const [thirdPartyAuthApiStatus, setThirdPartyAuthApiStatus] = useState<string | null>(null);\n const [thirdPartyAuthContext, setThirdPartyAuthContext] = useState({\n platformName: null,\n autoSubmitRegForm: false,\n currentProvider: null,\n finishAuthUrl: null,\n countryCode: null,\n providers: [],\n secondaryProviders: [],\n pipelineUserDetails: null,\n errorMessage: null,\n welcomePageRedirectUrl: null,\n });\n\n // Function to handle begin state - mirrors THIRD_PARTY_AUTH_CONTEXT.BEGIN\n const setThirdPartyAuthContextBegin = useCallback(() => {\n setThirdPartyAuthApiStatus(PENDING_STATE);\n }, []);\n\n // Function to handle success - mirrors THIRD_PARTY_AUTH_CONTEXT.SUCCESS\n const setThirdPartyAuthContextSuccess = useCallback((fieldDescData, optionalFieldsData, contextData) => {\n setFieldDescriptions(fieldDescData?.fields || {});\n setOptionalFields(optionalFieldsData || { fields: {}, extended_profile: [] });\n setThirdPartyAuthContext(contextData || {\n platformName: null,\n autoSubmitRegForm: false,\n currentProvider: null,\n finishAuthUrl: null,\n countryCode: null,\n providers: [],\n secondaryProviders: [],\n pipelineUserDetails: null,\n errorMessage: null,\n welcomePageRedirectUrl: null,\n });\n setThirdPartyAuthApiStatus(COMPLETE_STATE);\n }, []);\n\n // Function to handle failure - mirrors THIRD_PARTY_AUTH_CONTEXT.FAILURE\n const setThirdPartyAuthContextFailure = useCallback(() => {\n setThirdPartyAuthApiStatus(FAILURE_STATE);\n setThirdPartyAuthContext(prev => ({\n ...prev,\n errorMessage: null,\n }));\n }, []);\n\n // Function to clear error message - mirrors THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG\n const clearThirdPartyAuthErrorMessage = useCallback(() => {\n setThirdPartyAuthApiStatus(PENDING_STATE);\n setThirdPartyAuthContext(prev => ({\n ...prev,\n errorMessage: null,\n }));\n }, []);\n\n const value = useMemo(() => ({\n fieldDescriptions,\n optionalFields,\n thirdPartyAuthApiStatus,\n thirdPartyAuthContext,\n setThirdPartyAuthContextBegin,\n setThirdPartyAuthContextSuccess,\n setThirdPartyAuthContextFailure,\n clearThirdPartyAuthErrorMessage,\n }), [\n fieldDescriptions,\n optionalFields,\n thirdPartyAuthApiStatus,\n thirdPartyAuthContext,\n setThirdPartyAuthContextBegin,\n setThirdPartyAuthContextSuccess,\n setThirdPartyAuthContextFailure,\n clearThirdPartyAuthErrorMessage,\n ]);\n\n return (\n <ThirdPartyAuthContext.Provider value={value}>\n {children}\n </ThirdPartyAuthContext.Provider>\n );\n};\n\nexport const useThirdPartyAuthContext = (): ThirdPartyAuthContextType => {\n const context = useContext(ThirdPartyAuthContext);\n if (context === undefined) {\n throw new Error('useThirdPartyAuthContext must be used within a ThirdPartyAuthProvider');\n }\n return context;\n};\n"]}
|
|
@@ -9,6 +9,10 @@ import messages from './messages';
|
|
|
9
9
|
const ForgotPasswordAlert = (props) => {
|
|
10
10
|
const { formatMessage } = useIntl();
|
|
11
11
|
const { email, emailError } = props;
|
|
12
|
+
// Without a support link configured there is nowhere to point; the sentence still
|
|
13
|
+
// reads correctly with the phrase as plain text.
|
|
14
|
+
const passwordResetSupportLink = useAppConfig().PASSWORD_RESET_SUPPORT_LINK;
|
|
15
|
+
const supportLinkText = formatMessage(messages['confirmation.support.link']);
|
|
12
16
|
let message = '';
|
|
13
17
|
let heading = formatMessage(messages['forgot.password.error.alert.title']);
|
|
14
18
|
let { status } = props;
|
|
@@ -20,7 +24,7 @@ const ForgotPasswordAlert = (props) => {
|
|
|
20
24
|
heading = formatMessage(messages['confirmation.message.title']);
|
|
21
25
|
message = (_jsx(FormattedMessage, { id: "forgot.password.confirmation.message", defaultMessage: "We sent an email to {email} with instructions to reset your password.\n If you do not receive a password reset message after 1 minute, verify that you entered\n the correct email address, or check your spam folder. If you need further assistance, {supportLink}.", description: "Forgot password confirmation message", values: {
|
|
22
26
|
email: _jsx("span", { className: "data-hj-suppress", children: email }),
|
|
23
|
-
supportLink: (_jsx(Alert.Link, { href:
|
|
27
|
+
supportLink: passwordResetSupportLink ? (_jsx(Alert.Link, { href: passwordResetSupportLink, target: "_blank", children: supportLinkText })) : supportLinkText,
|
|
24
28
|
} }));
|
|
25
29
|
break;
|
|
26
30
|
case INTERNAL_SERVER_ERROR:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgotPasswordAlert.js","sourceRoot":"","sources":["../../src/forgot-password/ForgotPasswordAlert.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EACL,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,GAC9E,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,EAAE;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACpC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC3E,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEvB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,GAAG,qBAAqB,CAAC;IACjC,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,cAAc;YACjB,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAChE,OAAO,GAAG,CACR,KAAC,gBAAgB,IACf,EAAE,EAAC,sCAAsC,EACzC,cAAc,EAAC,yRAEsF,EACrG,WAAW,EAAC,sCAAsC,EAClD,MAAM,EAAE;oBACN,KAAK,EAAE,eAAM,SAAS,EAAC,kBAAkB,YAAE,KAAK,GAAQ;oBACxD,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"ForgotPasswordAlert.js","sourceRoot":"","sources":["../../src/forgot-password/ForgotPasswordAlert.jsx"],"names":[],"mappings":"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","sourcesContent":["import { FormattedMessage, useAppConfig, useIntl } from '@openedx/frontend-base';\nimport { Alert } from '@openedx/paragon';\nimport { CheckCircle, Error } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport {\n COMPLETE_STATE, FORBIDDEN_STATE, FORM_SUBMISSION_ERROR, INTERNAL_SERVER_ERROR,\n} from '../data/constants';\nimport { PASSWORD_RESET } from '../reset-password/data/constants';\nimport messages from './messages';\n\nconst ForgotPasswordAlert = (props) => {\n const { formatMessage } = useIntl();\n const { email, emailError } = props;\n // Without a support link configured there is nowhere to point; the sentence still\n // reads correctly with the phrase as plain text.\n const passwordResetSupportLink = useAppConfig().PASSWORD_RESET_SUPPORT_LINK;\n const supportLinkText = formatMessage(messages['confirmation.support.link']);\n let message = '';\n let heading = formatMessage(messages['forgot.password.error.alert.title']);\n let { status } = props;\n\n if (emailError) {\n status = FORM_SUBMISSION_ERROR;\n }\n\n switch (status) {\n case COMPLETE_STATE:\n heading = formatMessage(messages['confirmation.message.title']);\n message = (\n <FormattedMessage\n id=\"forgot.password.confirmation.message\"\n defaultMessage=\"We sent an email to {email} with instructions to reset your password.\n If you do not receive a password reset message after 1 minute, verify that you entered\n the correct email address, or check your spam folder. If you need further assistance, {supportLink}.\"\n description=\"Forgot password confirmation message\"\n values={{\n email: <span className=\"data-hj-suppress\">{email}</span>,\n supportLink: passwordResetSupportLink ? (\n <Alert.Link href={passwordResetSupportLink} target=\"_blank\">\n {supportLinkText}\n </Alert.Link>\n ) : supportLinkText,\n }}\n />\n );\n break;\n case INTERNAL_SERVER_ERROR:\n message = formatMessage(messages['internal.server.error']);\n break;\n case FORBIDDEN_STATE:\n heading = formatMessage(messages['forgot.password.error.message.title']);\n message = formatMessage(messages['forgot.password.request.in.progress.message']);\n break;\n case FORM_SUBMISSION_ERROR:\n message = formatMessage(messages['extend.field.errors'], { emailError });\n break;\n case PASSWORD_RESET.INVALID_TOKEN:\n heading = formatMessage(messages['invalid.token.heading']);\n message = formatMessage(messages['invalid.token.error.message']);\n break;\n case PASSWORD_RESET.FORBIDDEN_REQUEST:\n heading = formatMessage(messages['token.validation.rate.limit.error.heading']);\n message = formatMessage(messages['token.validation.rate.limit.error']);\n break;\n case PASSWORD_RESET.INTERNAL_SERVER_ERROR:\n heading = formatMessage(messages['token.validation.internal.sever.error.heading']);\n message = formatMessage(messages['token.validation.internal.sever.error']);\n break;\n default:\n break;\n }\n\n if (message) {\n return (\n <Alert\n id=\"validation-errors\"\n className=\"mb-4\"\n variant={`${status === 'complete' ? 'success' : 'danger'}`}\n icon={status === 'complete' ? CheckCircle : Error}\n >\n <Alert.Heading>{heading}</Alert.Heading>\n <p>{message}</p>\n </Alert>\n );\n }\n return null;\n};\n\nForgotPasswordAlert.defaultProps = {\n email: '',\n emailError: '',\n};\n\nForgotPasswordAlert.propTypes = {\n status: PropTypes.string.isRequired,\n email: PropTypes.string,\n emailError: PropTypes.string,\n};\n\nexport default ForgotPasswordAlert;\n"]}
|
|
@@ -86,7 +86,7 @@ const ForgotPasswordPage = () => {
|
|
|
86
86
|
return (_jsxs(BaseContainer, { children: [_jsx(Helmet, { children: _jsx("title", { children: formatMessage(messages['forgot.password.page.title'], { siteName: getSiteConfig().siteName }) }) }), _jsxs("div", { children: [_jsx(Tabs, { activeKey: "", id: "controlled-tab", onSelect: () => navigate(updatePathWithQueryParams(getUrlByRouteRole(loginRole))), children: _jsx(Tab, { title: tabTitle, eventKey: loginPath }) }), _jsx("div", { id: "main-content", className: "main-content", children: _jsxs(Form, { id: "forget-password-form", name: "forget-password-form", className: "mw-xs", children: [_jsx(ForgotPasswordAlert, { email: bannerEmail, emailError: formErrors, status: status }), _jsx("h2", { className: "h4", children: formatMessage(messages['forgot.password.page.heading']) }), _jsx("p", { className: "mb-4", children: formatMessage(messages['forgot.password.page.instructions']) }), _jsx(FormGroup, { floatingLabel: formatMessage(messages['forgot.password.page.email.field.label']), name: "email", value: email, autoComplete: "on", errorMessage: validationError, handleChange: (e) => setEmail(e.target.value), handleBlur: handleBlur, handleFocus: handleFocus, helpText: [formatMessage(messages['forgot.password.email.help.text'], { platformName })] }), _jsx(StatefulButton, { id: "submit-forget-password", name: "submit-forget-password", type: "submit", variant: "brand", className: "forgot-password--button", state: submitState, labels: {
|
|
87
87
|
default: formatMessage(messages['forgot.password.page.submit.button']),
|
|
88
88
|
pending: '',
|
|
89
|
-
}, onClick: handleSubmit, onMouseDown: (e) => e.preventDefault() }), (appConfig.LOGIN_ISSUE_SUPPORT_LINK) && (_jsx(Hyperlink, { id: "forgot-password", name: "forgot-password", className: "ml-4 font-weight-500 text-body", destination: appConfig.LOGIN_ISSUE_SUPPORT_LINK, target: "_blank", showLaunchIcon: false, children: formatMessage(messages['need.help.sign.in.text']) })), _jsxs("p", { className: "mt-5.5 small text-gray-700", children: [formatMessage(messages['additional.help.text'], { platformName }), _jsx("span", { className: "mx-1", children: _jsx(Hyperlink, { isInline: true, destination: `mailto:${appConfig.INFO_EMAIL}`, children: appConfig.INFO_EMAIL }) })] })] }) })] })] }));
|
|
89
|
+
}, onClick: handleSubmit, onMouseDown: (e) => e.preventDefault() }), (appConfig.LOGIN_ISSUE_SUPPORT_LINK) && (_jsx(Hyperlink, { id: "forgot-password", name: "forgot-password", className: "ml-4 font-weight-500 text-body", destination: appConfig.LOGIN_ISSUE_SUPPORT_LINK, target: "_blank", showLaunchIcon: false, children: formatMessage(messages['need.help.sign.in.text']) })), (appConfig.INFO_EMAIL) && (_jsxs("p", { className: "mt-5.5 small text-gray-700", children: [formatMessage(messages['additional.help.text'], { platformName }), _jsx("span", { className: "mx-1", children: _jsx(Hyperlink, { isInline: true, destination: `mailto:${appConfig.INFO_EMAIL}`, children: appConfig.INFO_EMAIL }) })] }))] }) })] })] }));
|
|
90
90
|
};
|
|
91
91
|
export default ForgotPasswordPage;
|
|
92
92
|
//# sourceMappingURL=ForgotPasswordPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgotPasswordPage.js","sourceRoot":"","sources":["../../src/forgot-password/ForgotPasswordPage.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport {\n getSiteConfig, getUrlByRouteRole, sendPageEvent, sendTrackEvent, useAppConfig, useIntl,\n} from '@openedx/frontend-base';\nimport {\n Form,\n Hyperlink,\n Icon,\n StatefulButton,\n Tab,\n Tabs,\n} from '@openedx/paragon';\nimport { ChevronLeft } from '@openedx/paragon/icons';\nimport { Helmet } from 'react-helmet';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { useForgotPassword } from './data/apiHook';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport messages from './messages';\nimport BaseContainer from '../base-container';\nimport { FormGroup } from '../common-components';\nimport { loginPath, loginRole } from '../constants';\nimport { VALID_EMAIL_REGEX } from '../data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\n\nconst ForgotPasswordPage = () => {\n const platformName = getSiteConfig().siteName;\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const location = useLocation();\n const appConfig = useAppConfig();\n const [email, setEmail] = useState('');\n const [bannerEmail, setBannerEmail] = useState('');\n const [formErrors, setFormErrors] = useState('');\n const [validationError, setValidationError] = useState('');\n const [status, setStatus] = useState(location.state?.status || null);\n\n // React Query hook for forgot password\n const { mutate: sendForgotPassword, isPending: isSending } = useForgotPassword();\n\n const submitState = isSending ? 'pending' : 'default';\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'reset');\n sendTrackEvent('edx.bi.password_reset_form.viewed', { category: 'user-engagement' });\n }, []);\n\n useEffect(() => {\n if (status === 'complete') {\n setEmail('');\n }\n }, [status]);\n\n const getValidationMessage = (value) => {\n let error = '';\n\n if (value === '') {\n error = formatMessage(messages['forgot.password.empty.email.field.error']);\n } else if (!emailRegex.test(value)) {\n error = formatMessage(messages['forgot.password.page.invalid.email.message']);\n }\n\n return error;\n };\n\n const handleBlur = () => {\n setValidationError(getValidationMessage(email));\n };\n\n const handleFocus = () => {\n setValidationError('');\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setBannerEmail(email);\n\n const validateError = getValidationMessage(email);\n if (validateError) {\n setFormErrors(validateError);\n setValidationError(validateError);\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n } else {\n setFormErrors('');\n sendForgotPassword(email, {\n onSuccess: (data, emailUsed) => {\n setStatus('complete');\n setBannerEmail(emailUsed);\n setFormErrors('');\n },\n onError: (error) => {\n if (error.response && error.response.status === 403) {\n setStatus('forbidden');\n } else {\n setStatus('server-error');\n }\n },\n });\n }\n };\n\n const tabTitle = (\n <div className=\"d-inline-flex flex-wrap align-items-center\">\n <Icon src={ChevronLeft} />\n <span className=\"ml-2\">{formatMessage(messages['sign.in.text'])}</span>\n </div>\n );\n\n return (\n <BaseContainer>\n <Helmet>\n <title>{formatMessage(messages['forgot.password.page.title'],\n { siteName: getSiteConfig().siteName })}\n </title>\n </Helmet>\n <div>\n <Tabs activeKey=\"\" id=\"controlled-tab\" onSelect={() => navigate(updatePathWithQueryParams(getUrlByRouteRole(loginRole)))}>\n <Tab title={tabTitle} eventKey={loginPath} />\n </Tabs>\n <div id=\"main-content\" className=\"main-content\">\n <Form id=\"forget-password-form\" name=\"forget-password-form\" className=\"mw-xs\">\n <ForgotPasswordAlert email={bannerEmail} emailError={formErrors} status={status} />\n <h2 className=\"h4\">\n {formatMessage(messages['forgot.password.page.heading'])}\n </h2>\n <p className=\"mb-4\">\n {formatMessage(messages['forgot.password.page.instructions'])}\n </p>\n <FormGroup\n floatingLabel={formatMessage(messages['forgot.password.page.email.field.label'])}\n name=\"email\"\n value={email}\n autoComplete=\"on\"\n errorMessage={validationError}\n handleChange={(e) => setEmail(e.target.value)}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n helpText={[formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\n <StatefulButton\n id=\"submit-forget-password\"\n name=\"submit-forget-password\"\n type=\"submit\"\n variant=\"brand\"\n className=\"forgot-password--button\"\n state={submitState}\n labels={{\n default: formatMessage(messages['forgot.password.page.submit.button']),\n pending: '',\n }}\n onClick={handleSubmit}\n onMouseDown={(e) => e.preventDefault()}\n />\n {(appConfig.LOGIN_ISSUE_SUPPORT_LINK) && (\n <Hyperlink\n id=\"forgot-password\"\n name=\"forgot-password\"\n className=\"ml-4 font-weight-500 text-body\"\n destination={appConfig.LOGIN_ISSUE_SUPPORT_LINK}\n target=\"_blank\"\n showLaunchIcon={false}\n >\n {formatMessage(messages['need.help.sign.in.text'])}\n </Hyperlink>\n )}\n <p className=\"mt-5.5 small text-gray-700\">\n {formatMessage(messages['additional.help.text'], { platformName })}\n <span className=\"mx-1\">\n <Hyperlink isInline destination={`mailto:${appConfig.INFO_EMAIL}`}>{appConfig.INFO_EMAIL}</Hyperlink>\n </span>\n </p>\n </Form>\n </div>\n </div>\n </BaseContainer>\n );\n};\n\nexport default ForgotPasswordPage;\n"]}
|
|
1
|
+
{"version":3,"file":"ForgotPasswordPage.js","sourceRoot":"","sources":["../../src/forgot-password/ForgotPasswordPage.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport {\n getSiteConfig, getUrlByRouteRole, sendPageEvent, sendTrackEvent, useAppConfig, useIntl,\n} from '@openedx/frontend-base';\nimport {\n Form,\n Hyperlink,\n Icon,\n StatefulButton,\n Tab,\n Tabs,\n} from '@openedx/paragon';\nimport { ChevronLeft } from '@openedx/paragon/icons';\nimport { Helmet } from 'react-helmet';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { useForgotPassword } from './data/apiHook';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport messages from './messages';\nimport BaseContainer from '../base-container';\nimport { FormGroup } from '../common-components';\nimport { loginPath, loginRole } from '../constants';\nimport { VALID_EMAIL_REGEX } from '../data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\n\nconst ForgotPasswordPage = () => {\n const platformName = getSiteConfig().siteName;\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const location = useLocation();\n const appConfig = useAppConfig();\n const [email, setEmail] = useState('');\n const [bannerEmail, setBannerEmail] = useState('');\n const [formErrors, setFormErrors] = useState('');\n const [validationError, setValidationError] = useState('');\n const [status, setStatus] = useState(location.state?.status || null);\n\n // React Query hook for forgot password\n const { mutate: sendForgotPassword, isPending: isSending } = useForgotPassword();\n\n const submitState = isSending ? 'pending' : 'default';\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'reset');\n sendTrackEvent('edx.bi.password_reset_form.viewed', { category: 'user-engagement' });\n }, []);\n\n useEffect(() => {\n if (status === 'complete') {\n setEmail('');\n }\n }, [status]);\n\n const getValidationMessage = (value) => {\n let error = '';\n\n if (value === '') {\n error = formatMessage(messages['forgot.password.empty.email.field.error']);\n } else if (!emailRegex.test(value)) {\n error = formatMessage(messages['forgot.password.page.invalid.email.message']);\n }\n\n return error;\n };\n\n const handleBlur = () => {\n setValidationError(getValidationMessage(email));\n };\n\n const handleFocus = () => {\n setValidationError('');\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setBannerEmail(email);\n\n const validateError = getValidationMessage(email);\n if (validateError) {\n setFormErrors(validateError);\n setValidationError(validateError);\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n } else {\n setFormErrors('');\n sendForgotPassword(email, {\n onSuccess: (data, emailUsed) => {\n setStatus('complete');\n setBannerEmail(emailUsed);\n setFormErrors('');\n },\n onError: (error) => {\n if (error.response && error.response.status === 403) {\n setStatus('forbidden');\n } else {\n setStatus('server-error');\n }\n },\n });\n }\n };\n\n const tabTitle = (\n <div className=\"d-inline-flex flex-wrap align-items-center\">\n <Icon src={ChevronLeft} />\n <span className=\"ml-2\">{formatMessage(messages['sign.in.text'])}</span>\n </div>\n );\n\n return (\n <BaseContainer>\n <Helmet>\n <title>{formatMessage(messages['forgot.password.page.title'],\n { siteName: getSiteConfig().siteName })}\n </title>\n </Helmet>\n <div>\n <Tabs activeKey=\"\" id=\"controlled-tab\" onSelect={() => navigate(updatePathWithQueryParams(getUrlByRouteRole(loginRole)))}>\n <Tab title={tabTitle} eventKey={loginPath} />\n </Tabs>\n <div id=\"main-content\" className=\"main-content\">\n <Form id=\"forget-password-form\" name=\"forget-password-form\" className=\"mw-xs\">\n <ForgotPasswordAlert email={bannerEmail} emailError={formErrors} status={status} />\n <h2 className=\"h4\">\n {formatMessage(messages['forgot.password.page.heading'])}\n </h2>\n <p className=\"mb-4\">\n {formatMessage(messages['forgot.password.page.instructions'])}\n </p>\n <FormGroup\n floatingLabel={formatMessage(messages['forgot.password.page.email.field.label'])}\n name=\"email\"\n value={email}\n autoComplete=\"on\"\n errorMessage={validationError}\n handleChange={(e) => setEmail(e.target.value)}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n helpText={[formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\n <StatefulButton\n id=\"submit-forget-password\"\n name=\"submit-forget-password\"\n type=\"submit\"\n variant=\"brand\"\n className=\"forgot-password--button\"\n state={submitState}\n labels={{\n default: formatMessage(messages['forgot.password.page.submit.button']),\n pending: '',\n }}\n onClick={handleSubmit}\n onMouseDown={(e) => e.preventDefault()}\n />\n {(appConfig.LOGIN_ISSUE_SUPPORT_LINK) && (\n <Hyperlink\n id=\"forgot-password\"\n name=\"forgot-password\"\n className=\"ml-4 font-weight-500 text-body\"\n destination={appConfig.LOGIN_ISSUE_SUPPORT_LINK}\n target=\"_blank\"\n showLaunchIcon={false}\n >\n {formatMessage(messages['need.help.sign.in.text'])}\n </Hyperlink>\n )}\n {(appConfig.INFO_EMAIL) && (\n <p className=\"mt-5.5 small text-gray-700\">\n {formatMessage(messages['additional.help.text'], { platformName })}\n <span className=\"mx-1\">\n <Hyperlink isInline destination={`mailto:${appConfig.INFO_EMAIL}`}>{appConfig.INFO_EMAIL}</Hyperlink>\n </span>\n </p>\n )}\n </Form>\n </div>\n </div>\n </BaseContainer>\n );\n};\n\nexport default ForgotPasswordPage;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiHook.js","sourceRoot":"","sources":["../../../src/forgot-password/data/apiHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAmBvC,MAAM,iBAAiB,GAAG,CAAC,UAAoC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC;IAChF,UAAU,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAC7B,cAAc,CAAC,KAAK,CAAC,CACtB;IACD,SAAS,EAAE,CAAC,IAA0B,EAAE,KAAa,EAAE,EAAE;QACvD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,KAAe,EAAE,EAAE;;QAC3B,iDAAiD;QACjD,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,OAAO,EACL,iBAAiB,GAClB,CAAC","sourcesContent":["import { logError, logInfo } from '@openedx/frontend-base';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { forgotPassword } from './api';\n\ninterface ForgotPasswordResult {\n success: boolean
|
|
1
|
+
{"version":3,"file":"apiHook.js","sourceRoot":"","sources":["../../../src/forgot-password/data/apiHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAmBvC,MAAM,iBAAiB,GAAG,CAAC,UAAoC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC;IAChF,UAAU,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAC7B,cAAc,CAAC,KAAK,CAAC,CACtB;IACD,SAAS,EAAE,CAAC,IAA0B,EAAE,KAAa,EAAE,EAAE;QACvD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,KAAe,EAAE,EAAE;;QAC3B,iDAAiD;QACjD,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,OAAO,EACL,iBAAiB,GAClB,CAAC","sourcesContent":["import { logError, logInfo } from '@openedx/frontend-base';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { forgotPassword } from './api';\n\ninterface ForgotPasswordResult {\n success: boolean;\n message?: string;\n}\n\ninterface UseForgotPasswordOptions {\n onSuccess?: (data: ForgotPasswordResult, email: string) => void;\n onError?: (error: Error) => void;\n}\n\ninterface ApiError extends Error {\n response?: {\n status: number;\n data: Record<string, unknown>;\n };\n}\n\nconst useForgotPassword = (options: UseForgotPasswordOptions = {}) => useMutation({\n mutationFn: (email: string) => (\n forgotPassword(email)\n ),\n onSuccess: (data: ForgotPasswordResult, email: string) => {\n if (options.onSuccess) {\n options.onSuccess(data, email);\n }\n },\n onError: (error: ApiError) => {\n // Handle different error types like the saga did\n if (error.response?.status === 403) {\n logInfo(error);\n } else {\n logError(error);\n }\n if (options.onError) {\n options.onError(error);\n }\n },\n});\n\nexport {\n useForgotPassword,\n};\n"]}
|
|
@@ -29,7 +29,11 @@ const AccountActivationMessage = ({ messageType }) => {
|
|
|
29
29
|
break;
|
|
30
30
|
}
|
|
31
31
|
case ACCOUNT_ACTIVATION_MESSAGE.ERROR: {
|
|
32
|
-
|
|
32
|
+
// Without a support link configured there is nowhere to point; the sentence
|
|
33
|
+
// still reads correctly with the phrase as plain text.
|
|
34
|
+
const activationEmailSupportLink = useAppConfig().ACTIVATION_EMAIL_SUPPORT_LINK;
|
|
35
|
+
const supportLinkText = formatMessage(messages['account.activation.support.link']);
|
|
36
|
+
const supportLink = activationEmailSupportLink ? (_jsx(Alert.Link, { href: activationEmailSupportLink, children: supportLinkText })) : supportLinkText;
|
|
33
37
|
heading = formatMessage(messages[`account.${activationOrConfirmation}.error.message.title`]);
|
|
34
38
|
activationMessage = (_jsx(FormattedMessage, { id: "account.activation.error.message", defaultMessage: "Something went wrong, please {supportLink} to resolve this issue.", description: "Account activation error message", values: { supportLink } }));
|
|
35
39
|
break;
|