@anas_hameed/edly-saas-widget 0.1.9 → 0.2.0
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/dist/EdlyLogistrationInfo/EdlyLogistrationInfo.js +5 -0
- package/dist/EdlyLogistrationInfo/EdlyLogistrationInfo.js.map +1 -1
- package/dist/EdlyLogistrationInfo/messages.js +10 -0
- package/dist/EdlyLogistrationInfo/messages.js.map +1 -1
- package/dist/EmailCheckWidget/EmailCheckWidget.js +14 -6
- package/dist/EmailCheckWidget/EmailCheckWidget.js.map +1 -1
- package/dist/EmailCheckWidget/data/constants.js +6 -1
- package/dist/EmailCheckWidget/data/constants.js.map +1 -1
- package/dist/EmailCheckWidget/data/sagas.js +2 -0
- package/dist/EmailCheckWidget/data/sagas.js.map +1 -1
- package/dist/EmailCheckWidget/messages.js +5 -0
- package/dist/EmailCheckWidget/messages.js.map +1 -1
- package/dist/FooterWidget/index.js +6 -9
- package/dist/FooterWidget/index.js.map +1 -1
- package/dist/HeaderWidget/index.js +6 -12
- package/dist/HeaderWidget/index.js.map +1 -1
- package/dist/utils/cookies.js +27 -0
- package/dist/utils/cookies.js.map +1 -0
- package/package.json +5 -4
|
@@ -37,6 +37,11 @@ const EdlyLogistrationInfo = () => {
|
|
|
37
37
|
registeredSite: context.registered_site || 'a partner site'
|
|
38
38
|
});
|
|
39
39
|
break;
|
|
40
|
+
case _constants.PASSWORD_RESET_REQUIRED:
|
|
41
|
+
alertMessage = formatMessage(_messages.default['edly.password.reset.required'], {
|
|
42
|
+
registeredSite: context.registered_site || 'a partner site'
|
|
43
|
+
});
|
|
44
|
+
break;
|
|
40
45
|
default:
|
|
41
46
|
return null;
|
|
42
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdlyLogistrationInfo.js","names":["_react","_interopRequireDefault","require","_reactRedux","_i18n","_paragon","_icons","_constants","_messages","_jsxRuntime","e","__esModule","default","EdlyLogistrationInfo","formatMessage","useIntl","errorCode","useSelector","state","emailCheck","context","alertMessage","EMAIL_REGISTERED_DIFFERENT_ORG","messages","CROSS_TENANT_LOGIN","registeredSite","registered_site","REGISTRATION_REQUIRED_FOR_CURRENT_TENANT","jsx","Alert","id","className","variant","icon","Info","children","_default","exports"],"sources":["../../src/EdlyLogistrationInfo/EdlyLogistrationInfo.jsx"],"sourcesContent":["import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@openedx/paragon';\nimport { Info } from '@openedx/paragon/icons';\n\nimport {\n CROSS_TENANT_LOGIN,\n EMAIL_REGISTERED_DIFFERENT_ORG,\n REGISTRATION_REQUIRED_FOR_CURRENT_TENANT,\n} from '../EmailCheckWidget/data/constants';\nimport messages from './messages';\n\nconst EdlyLogistrationInfo = () => {\n const { formatMessage } = useIntl();\n const errorCode = useSelector(state => state.emailCheck?.errorCode);\n const context = useSelector(state => state.emailCheck?.context || {});\n\n if (!errorCode) {\n return null;\n }\n\n let alertMessage;\n switch (errorCode) {\n case EMAIL_REGISTERED_DIFFERENT_ORG:\n alertMessage = formatMessage(messages['edly.email.registered.different.org']);\n break;\n case CROSS_TENANT_LOGIN:\n alertMessage = formatMessage(messages['edly.cross.tenant.login.enabled'], {\n registeredSite: context.registered_site || 'a partner site',\n });\n break;\n case REGISTRATION_REQUIRED_FOR_CURRENT_TENANT:\n alertMessage = formatMessage(messages['edly.registration.required.for.tenant'], {\n registeredSite: context.registered_site || 'a partner site',\n });\n break;\n default:\n return null;\n }\n\n return (\n <Alert id=\"edly-alert\" className=\"mb-5\" variant=\"info\" icon={Info}>\n <p>{alertMessage}</p>\n </Alert>\n );\n};\n\nexport default EdlyLogistrationInfo;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,IAAAK,UAAA,GAAAL,OAAA;
|
|
1
|
+
{"version":3,"file":"EdlyLogistrationInfo.js","names":["_react","_interopRequireDefault","require","_reactRedux","_i18n","_paragon","_icons","_constants","_messages","_jsxRuntime","e","__esModule","default","EdlyLogistrationInfo","formatMessage","useIntl","errorCode","useSelector","state","emailCheck","context","alertMessage","EMAIL_REGISTERED_DIFFERENT_ORG","messages","CROSS_TENANT_LOGIN","registeredSite","registered_site","REGISTRATION_REQUIRED_FOR_CURRENT_TENANT","PASSWORD_RESET_REQUIRED","jsx","Alert","id","className","variant","icon","Info","children","_default","exports"],"sources":["../../src/EdlyLogistrationInfo/EdlyLogistrationInfo.jsx"],"sourcesContent":["import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@openedx/paragon';\nimport { Info } from '@openedx/paragon/icons';\n\nimport {\n CROSS_TENANT_LOGIN,\n EMAIL_REGISTERED_DIFFERENT_ORG,\n PASSWORD_RESET_REQUIRED,\n REGISTRATION_REQUIRED_FOR_CURRENT_TENANT,\n} from '../EmailCheckWidget/data/constants';\nimport messages from './messages';\n\nconst EdlyLogistrationInfo = () => {\n const { formatMessage } = useIntl();\n const errorCode = useSelector(state => state.emailCheck?.errorCode);\n const context = useSelector(state => state.emailCheck?.context || {});\n\n if (!errorCode) {\n return null;\n }\n\n let alertMessage;\n switch (errorCode) {\n case EMAIL_REGISTERED_DIFFERENT_ORG:\n alertMessage = formatMessage(messages['edly.email.registered.different.org']);\n break;\n case CROSS_TENANT_LOGIN:\n alertMessage = formatMessage(messages['edly.cross.tenant.login.enabled'], {\n registeredSite: context.registered_site || 'a partner site',\n });\n break;\n case REGISTRATION_REQUIRED_FOR_CURRENT_TENANT:\n alertMessage = formatMessage(messages['edly.registration.required.for.tenant'], {\n registeredSite: context.registered_site || 'a partner site',\n });\n break;\n case PASSWORD_RESET_REQUIRED:\n alertMessage = formatMessage(messages['edly.password.reset.required'], {\n registeredSite: context.registered_site || 'a partner site',\n });\n break;\n default:\n return null;\n }\n\n return (\n <Alert id=\"edly-alert\" className=\"mb-5\" variant=\"info\" icon={Info}>\n <p>{alertMessage}</p>\n </Alert>\n );\n};\n\nexport default EdlyLogistrationInfo;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,IAAAK,UAAA,GAAAL,OAAA;AAMA,IAAAM,SAAA,GAAAP,sBAAA,CAAAC,OAAA;AAAkC,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAElC,MAAMG,oBAAoB,GAAGA,CAAA,KAAM;EACjC,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EACnC,MAAMC,SAAS,GAAG,IAAAC,uBAAW,EAACC,KAAK,IAAIA,KAAK,CAACC,UAAU,EAAEH,SAAS,CAAC;EACnE,MAAMI,OAAO,GAAG,IAAAH,uBAAW,EAACC,KAAK,IAAIA,KAAK,CAACC,UAAU,EAAEC,OAAO,IAAI,CAAC,CAAC,CAAC;EAErE,IAAI,CAACJ,SAAS,EAAE;IACd,OAAO,IAAI;EACb;EAEA,IAAIK,YAAY;EAChB,QAAQL,SAAS;IACf,KAAKM,yCAA8B;MACjCD,YAAY,GAAGP,aAAa,CAACS,iBAAQ,CAAC,qCAAqC,CAAC,CAAC;MAC7E;IACF,KAAKC,6BAAkB;MACrBH,YAAY,GAAGP,aAAa,CAACS,iBAAQ,CAAC,iCAAiC,CAAC,EAAE;QACxEE,cAAc,EAAEL,OAAO,CAACM,eAAe,IAAI;MAC7C,CAAC,CAAC;MACF;IACF,KAAKC,mDAAwC;MAC3CN,YAAY,GAAGP,aAAa,CAACS,iBAAQ,CAAC,uCAAuC,CAAC,EAAE;QAC9EE,cAAc,EAAEL,OAAO,CAACM,eAAe,IAAI;MAC7C,CAAC,CAAC;MACF;IACF,KAAKE,kCAAuB;MAC1BP,YAAY,GAAGP,aAAa,CAACS,iBAAQ,CAAC,8BAA8B,CAAC,EAAE;QACrEE,cAAc,EAAEL,OAAO,CAACM,eAAe,IAAI;MAC7C,CAAC,CAAC;MACF;IACF;MACE,OAAO,IAAI;EACf;EAEA,oBACE,IAAAjB,WAAA,CAAAoB,GAAA,EAACxB,QAAA,CAAAyB,KAAK;IAACC,EAAE,EAAC,YAAY;IAACC,SAAS,EAAC,MAAM;IAACC,OAAO,EAAC,MAAM;IAACC,IAAI,EAAEC,WAAK;IAAAC,QAAA,eAChE,IAAA3B,WAAA,CAAAoB,GAAA;MAAAO,QAAA,EAAIf;IAAY,CAAI;EAAC,CAChB,CAAC;AAEZ,CAAC;AAAC,IAAAgB,QAAA,GAAAC,OAAA,CAAA1B,OAAA,GAEaC,oBAAoB","ignoreList":[]}
|
|
@@ -20,6 +20,16 @@ const messages = (0, _i18n.defineMessages)({
|
|
|
20
20
|
id: 'edly.registration.required.for.tenant',
|
|
21
21
|
defaultMessage: 'You have already registered with this email on {registeredSite}. Continuing will register you on this site with the same email address.',
|
|
22
22
|
description: 'Alert message when user needs to register for specific tenant'
|
|
23
|
+
},
|
|
24
|
+
'edly.cross.org.sso.attempted': {
|
|
25
|
+
id: 'edly.cross.org.sso.attempted',
|
|
26
|
+
defaultMessage: 'Single sign-on is not available for this email because it is already registered on another organization.',
|
|
27
|
+
description: 'Alert message when user tries to SSO with an email that is already registered on another organization'
|
|
28
|
+
},
|
|
29
|
+
'edly.password.reset.required': {
|
|
30
|
+
id: 'edly.password.reset.required',
|
|
31
|
+
defaultMessage: 'You registered on with this email using single sign-on. Kindly reset your password on {registeredSite} to continue logging in.',
|
|
32
|
+
description: 'Alert message when SSO user tries to login with password on different tenant'
|
|
23
33
|
}
|
|
24
34
|
});
|
|
25
35
|
var _default = exports.default = messages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","names":["_i18n","require","messages","defineMessages","id","defaultMessage","description","_default","exports","default"],"sources":["../../src/EdlyLogistrationInfo/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'edly.email.registered.different.org': {\n id: 'edly.email.registered.different.org',\n defaultMessage: 'This email is already registered with another organization. Please use a different email address.',\n description: 'Alert message when user email is registered with a different organization',\n },\n 'edly.cross.tenant.login.enabled': {\n id: 'edly.cross.tenant.login.enabled',\n defaultMessage: 'You have already registered with this email on {registeredSite}. Please login to continue.',\n description: 'Alert message when user can login across tenants in same organization',\n },\n 'edly.registration.required.for.tenant': {\n id: 'edly.registration.required.for.tenant',\n defaultMessage: 'You have already registered with this email on {registeredSite}. Continuing will register you on this site with the same email address.',\n description: 'Alert message when user needs to register for specific tenant',\n },\n});\n\nexport default messages;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,QAAQ,GAAG,IAAAC,oBAAc,EAAC;EAC9B,qCAAqC,EAAE;IACrCC,EAAE,EAAE,qCAAqC;IACzCC,cAAc,EAAE,mGAAmG;IACnHC,WAAW,EAAE;EACf,CAAC;EACD,iCAAiC,EAAE;IACjCF,EAAE,EAAE,iCAAiC;IACrCC,cAAc,EAAE,4FAA4F;IAC5GC,WAAW,EAAE;EACf,CAAC;EACD,uCAAuC,EAAE;IACvCF,EAAE,EAAE,uCAAuC;IAC3CC,cAAc,EAAE,yIAAyI;IACzJC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYP,QAAQ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"messages.js","names":["_i18n","require","messages","defineMessages","id","defaultMessage","description","_default","exports","default"],"sources":["../../src/EdlyLogistrationInfo/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'edly.email.registered.different.org': {\n id: 'edly.email.registered.different.org',\n defaultMessage: 'This email is already registered with another organization. Please use a different email address.',\n description: 'Alert message when user email is registered with a different organization',\n },\n 'edly.cross.tenant.login.enabled': {\n id: 'edly.cross.tenant.login.enabled',\n defaultMessage: 'You have already registered with this email on {registeredSite}. Please login to continue.',\n description: 'Alert message when user can login across tenants in same organization',\n },\n 'edly.registration.required.for.tenant': {\n id: 'edly.registration.required.for.tenant',\n defaultMessage: 'You have already registered with this email on {registeredSite}. Continuing will register you on this site with the same email address.',\n description: 'Alert message when user needs to register for specific tenant',\n },\n 'edly.cross.org.sso.attempted': {\n id: 'edly.cross.org.sso.attempted',\n defaultMessage: 'Single sign-on is not available for this email because it is already registered on another organization.',\n description: 'Alert message when user tries to SSO with an email that is already registered on another organization',\n },\n 'edly.password.reset.required': {\n id: 'edly.password.reset.required',\n defaultMessage: 'You registered on with this email using single sign-on. Kindly reset your password on {registeredSite} to continue logging in.',\n description: 'Alert message when SSO user tries to login with password on different tenant',\n },\n});\n\nexport default messages;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,QAAQ,GAAG,IAAAC,oBAAc,EAAC;EAC9B,qCAAqC,EAAE;IACrCC,EAAE,EAAE,qCAAqC;IACzCC,cAAc,EAAE,mGAAmG;IACnHC,WAAW,EAAE;EACf,CAAC;EACD,iCAAiC,EAAE;IACjCF,EAAE,EAAE,iCAAiC;IACrCC,cAAc,EAAE,4FAA4F;IAC5GC,WAAW,EAAE;EACf,CAAC;EACD,uCAAuC,EAAE;IACvCF,EAAE,EAAE,uCAAuC;IAC3CC,cAAc,EAAE,yIAAyI;IACzJC,WAAW,EAAE;EACf,CAAC;EACD,8BAA8B,EAAE;IAC9BF,EAAE,EAAE,8BAA8B;IAClCC,cAAc,EAAE,0GAA0G;IAC1HC,WAAW,EAAE;EACf,CAAC;EACD,8BAA8B,EAAE;IAC9BF,EAAE,EAAE,8BAA8B;IAClCC,cAAc,EAAE,gIAAgI;IAChJC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYP,QAAQ","ignoreList":[]}
|
|
@@ -10,8 +10,10 @@ var _i18n = require("@edx/frontend-platform/i18n");
|
|
|
10
10
|
var _paragon = require("@openedx/paragon");
|
|
11
11
|
var _icons = require("@openedx/paragon/icons");
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
var _cookies = require("../utils/cookies");
|
|
13
14
|
var _actions = require("./data/actions");
|
|
14
15
|
var _messages = _interopRequireDefault(require("./messages"));
|
|
16
|
+
var _constants = require("./data/constants");
|
|
15
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
19
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
@@ -28,6 +30,7 @@ const EmailCheckWidget = ({
|
|
|
28
30
|
const [email, setEmail] = (0, _react.useState)('');
|
|
29
31
|
const [emailError, setEmailError] = (0, _react.useState)('');
|
|
30
32
|
const hasCompletedRef = (0, _react.useRef)(false);
|
|
33
|
+
const crossOrgSSO = (0, _cookies.getCookie)(_constants.CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME) === true;
|
|
31
34
|
const submitState = (0, _reactRedux.useSelector)(state => state.emailCheck?.submitState || 'default');
|
|
32
35
|
const redirectTo = (0, _reactRedux.useSelector)(state => state.emailCheck?.redirectTo);
|
|
33
36
|
const checkedEmail = (0, _reactRedux.useSelector)(state => state.emailCheck?.email);
|
|
@@ -78,17 +81,22 @@ const EmailCheckWidget = ({
|
|
|
78
81
|
className: "main-content",
|
|
79
82
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
80
83
|
className: "mw-xs mt-3",
|
|
81
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
children: formatMessage(_messages.default['email.check.subheading'])
|
|
84
|
+
children: [crossOrgSSO && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Alert, {
|
|
85
|
+
variant: "info",
|
|
86
|
+
icon: _icons.Info,
|
|
87
|
+
className: "mb-5",
|
|
88
|
+
children: formatMessage(_messages.default['cross.org.sso.attempted'])
|
|
87
89
|
}), errorMessage && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Alert, {
|
|
88
90
|
variant: "danger",
|
|
89
91
|
icon: _icons.Info,
|
|
90
92
|
className: "mb-3",
|
|
91
93
|
children: errorMessage
|
|
94
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
95
|
+
className: "mb-3",
|
|
96
|
+
children: formatMessage(_messages.default['email.check.heading'])
|
|
97
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
98
|
+
className: "mb-4 text-gray-700",
|
|
99
|
+
children: formatMessage(_messages.default['email.check.subheading'])
|
|
92
100
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Form, {
|
|
93
101
|
id: "email-check-form",
|
|
94
102
|
name: "email-check-form",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailCheckWidget.js","names":["_react","_interopRequireWildcard","require","_reactRedux","_i18n","_paragon","_icons","_propTypes","_interopRequireDefault","_actions","_messages","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EmailCheckWidget","onEmailCheckComplete","BaseContainer","FormGroup","VALID_EMAIL_REGEX","formatMessage","useIntl","dispatch","useDispatch","email","setEmail","useState","emailError","setEmailError","hasCompletedRef","useRef","submitState","useSelector","state","emailCheck","redirectTo","checkedEmail","errorCode","errorMessage","useEffect","current","validateEmail","emailValue","messages","emailRegex","RegExp","test","handleSubmit","preventDefault","error","checkEmailRequest","handleOnChange","value","target","handleOnFocus","jsx","children","id","className","jsxs","Alert","variant","icon","Info","Form","name","type","autoComplete","handleChange","handleFocus","floatingLabel","StatefulButton","labels","pending","onClick","onMouseDown","propTypes","PropTypes","func","isRequired","elementType","string","_default","exports"],"sources":["../../src/EmailCheckWidget/EmailCheckWidget.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert, Form, StatefulButton } from '@openedx/paragon';\nimport { Info } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { checkEmailRequest } from './data/actions';\nimport messages from './messages';\n\nconst EmailCheckWidget = ({\n onEmailCheckComplete,\n BaseContainer,\n FormGroup,\n VALID_EMAIL_REGEX,\n}) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const [email, setEmail] = useState('');\n const [emailError, setEmailError] = useState('');\n const hasCompletedRef = useRef(false);\n\n const submitState = useSelector(state => state.emailCheck?.submitState || 'default');\n const redirectTo = useSelector(state => state.emailCheck?.redirectTo);\n const checkedEmail = useSelector(state => state.emailCheck?.email);\n const errorCode = useSelector(state => state.emailCheck?.errorCode);\n const errorMessage = useSelector(state => state.emailCheck?.errorMessage);\n\n useEffect(() => {\n if (redirectTo && checkedEmail && !hasCompletedRef.current) {\n hasCompletedRef.current = true;\n onEmailCheckComplete(redirectTo, checkedEmail, errorCode);\n }\n }, [redirectTo, checkedEmail, errorCode, onEmailCheckComplete]);\n\n const validateEmail = (emailValue) => {\n if (!emailValue) {\n return formatMessage(messages['email.validation.message']);\n }\n\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n if (!emailRegex.test(emailValue)) {\n return formatMessage(messages['email.format.validation.message']);\n }\n\n return '';\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const error = validateEmail(email);\n if (error) {\n setEmailError(error);\n return;\n }\n\n dispatch(checkEmailRequest(email));\n };\n\n const handleOnChange = (e) => {\n const { value } = e.target;\n setEmail(value);\n if (emailError) {\n setEmailError('');\n }\n };\n\n const handleOnFocus = () => {\n if (emailError) {\n setEmailError('');\n }\n };\n\n return (\n <BaseContainer>\n <div id=\"main-content\" className=\"main-content\">\n <div className=\"mw-xs mt-3\">\n <h3 className=\"mb-3\">{formatMessage(messages['email.check.heading'])}</h3>\n <p className=\"mb-4 text-gray-700\">{formatMessage(messages['email.check.subheading'])}</p>\n\n {errorMessage && (\n <Alert variant=\"danger\" icon={Info} className=\"mb-3\">\n {errorMessage}\n </Alert>\n )}\n\n <Form id=\"email-check-form\" name=\"email-check-form\">\n <FormGroup\n name=\"email\"\n value={email}\n type=\"email\"\n autoComplete=\"email\"\n handleChange={handleOnChange}\n handleFocus={handleOnFocus}\n errorMessage={emailError}\n floatingLabel=\"Email\"\n />\n <StatefulButton\n id=\"continue-btn\"\n name=\"continue-btn\"\n type=\"submit\"\n variant=\"brand\"\n className=\"login-button-width mt-3\"\n state={submitState}\n labels={{\n default: formatMessage(messages['email.check.button']),\n pending: '',\n }}\n onClick={handleSubmit}\n onMouseDown={(e) => e.preventDefault()}\n />\n </Form>\n </div>\n </div>\n </BaseContainer>\n );\n};\n\nEmailCheckWidget.propTypes = {\n onEmailCheckComplete: PropTypes.func.isRequired,\n BaseContainer: PropTypes.elementType.isRequired,\n FormGroup: PropTypes.elementType.isRequired,\n VALID_EMAIL_REGEX: PropTypes.string.isRequired,\n};\n\nexport default EmailCheckWidget;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"EmailCheckWidget.js","names":["_react","_interopRequireWildcard","require","_reactRedux","_i18n","_paragon","_icons","_propTypes","_interopRequireDefault","_cookies","_actions","_messages","_constants","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EmailCheckWidget","onEmailCheckComplete","BaseContainer","FormGroup","VALID_EMAIL_REGEX","formatMessage","useIntl","dispatch","useDispatch","email","setEmail","useState","emailError","setEmailError","hasCompletedRef","useRef","crossOrgSSO","getCookie","CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME","submitState","useSelector","state","emailCheck","redirectTo","checkedEmail","errorCode","errorMessage","useEffect","current","validateEmail","emailValue","messages","emailRegex","RegExp","test","handleSubmit","preventDefault","error","checkEmailRequest","handleOnChange","value","target","handleOnFocus","jsx","children","id","className","jsxs","Alert","variant","icon","Info","Form","name","type","autoComplete","handleChange","handleFocus","floatingLabel","StatefulButton","labels","pending","onClick","onMouseDown","propTypes","PropTypes","func","isRequired","elementType","string","_default","exports"],"sources":["../../src/EmailCheckWidget/EmailCheckWidget.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert, Form, StatefulButton } from '@openedx/paragon';\nimport { Info } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { getCookie } from '../utils/cookies';\nimport { checkEmailRequest } from './data/actions';\nimport messages from './messages';\nimport { CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME } from './data/constants';\n\nconst EmailCheckWidget = ({\n onEmailCheckComplete,\n BaseContainer,\n FormGroup,\n VALID_EMAIL_REGEX,\n}) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const [email, setEmail] = useState('');\n const [emailError, setEmailError] = useState('');\n const hasCompletedRef = useRef(false);\n const crossOrgSSO = getCookie(CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME) === true;\n\n const submitState = useSelector(state => state.emailCheck?.submitState || 'default');\n const redirectTo = useSelector(state => state.emailCheck?.redirectTo);\n const checkedEmail = useSelector(state => state.emailCheck?.email);\n const errorCode = useSelector(state => state.emailCheck?.errorCode);\n const errorMessage = useSelector(state => state.emailCheck?.errorMessage);\n\n useEffect(() => {\n if (redirectTo && checkedEmail && !hasCompletedRef.current) {\n hasCompletedRef.current = true;\n onEmailCheckComplete(redirectTo, checkedEmail, errorCode);\n }\n }, [redirectTo, checkedEmail, errorCode, onEmailCheckComplete]);\n\n const validateEmail = (emailValue) => {\n if (!emailValue) {\n return formatMessage(messages['email.validation.message']);\n }\n\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n if (!emailRegex.test(emailValue)) {\n return formatMessage(messages['email.format.validation.message']);\n }\n\n return '';\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const error = validateEmail(email);\n if (error) {\n setEmailError(error);\n return;\n }\n\n dispatch(checkEmailRequest(email));\n };\n\n const handleOnChange = (e) => {\n const { value } = e.target;\n setEmail(value);\n if (emailError) {\n setEmailError('');\n }\n };\n\n const handleOnFocus = () => {\n if (emailError) {\n setEmailError('');\n }\n };\n\n return (\n <BaseContainer>\n <div id=\"main-content\" className=\"main-content\">\n <div className=\"mw-xs mt-3\">\n {crossOrgSSO && (\n <Alert variant=\"info\" icon={Info} className=\"mb-5\">\n {formatMessage(messages['cross.org.sso.attempted'])}\n </Alert>\n )}\n\n {errorMessage && (\n <Alert variant=\"danger\" icon={Info} className=\"mb-3\">\n {errorMessage}\n </Alert>\n )}\n\n <h3 className=\"mb-3\">{formatMessage(messages['email.check.heading'])}</h3>\n <p className=\"mb-4 text-gray-700\">{formatMessage(messages['email.check.subheading'])}</p>\n <Form id=\"email-check-form\" name=\"email-check-form\">\n <FormGroup\n name=\"email\"\n value={email}\n type=\"email\"\n autoComplete=\"email\"\n handleChange={handleOnChange}\n handleFocus={handleOnFocus}\n errorMessage={emailError}\n floatingLabel=\"Email\"\n />\n <StatefulButton\n id=\"continue-btn\"\n name=\"continue-btn\"\n type=\"submit\"\n variant=\"brand\"\n className=\"login-button-width mt-3\"\n state={submitState}\n labels={{\n default: formatMessage(messages['email.check.button']),\n pending: '',\n }}\n onClick={handleSubmit}\n onMouseDown={(e) => e.preventDefault()}\n />\n </Form>\n </div>\n </div>\n </BaseContainer>\n );\n};\n\nEmailCheckWidget.propTypes = {\n onEmailCheckComplete: PropTypes.func.isRequired,\n BaseContainer: PropTypes.elementType.isRequired,\n FormGroup: PropTypes.elementType.isRequired,\n VALID_EMAIL_REGEX: PropTypes.string.isRequired,\n};\n\nexport default EmailCheckWidget;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.REGISTRATION_REQUIRED_FOR_CURRENT_TENANT = exports.EMAIL_REGISTERED_DIFFERENT_ORG = exports.EMAIL_CHECK_SUCCESS = exports.EMAIL_CHECK_STORE_NAME = exports.EMAIL_CHECK_REQUEST = exports.EMAIL_CHECK_FAILURE = exports.EMAIL_CHECK_COMPLETE = exports.CROSS_TENANT_LOGIN = void 0;
|
|
6
|
+
exports.REGISTRATION_REQUIRED_FOR_CURRENT_TENANT = exports.PASSWORD_RESET_REQUIRED = exports.EMAIL_REGISTERED_DIFFERENT_ORG = exports.EMAIL_CHECK_SUCCESS = exports.EMAIL_CHECK_STORE_NAME = exports.EMAIL_CHECK_REQUEST = exports.EMAIL_CHECK_FAILURE = exports.EMAIL_CHECK_COMPLETE = exports.CROSS_TENANT_LOGIN = exports.CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME = exports.CROSS_ORG_SSO_ATTEMPTED = void 0;
|
|
7
7
|
// Action types
|
|
8
8
|
const EMAIL_CHECK_REQUEST = exports.EMAIL_CHECK_REQUEST = 'EMAIL_CHECK_REQUEST';
|
|
9
9
|
const EMAIL_CHECK_SUCCESS = exports.EMAIL_CHECK_SUCCESS = 'EMAIL_CHECK_SUCCESS';
|
|
@@ -17,4 +17,9 @@ const EMAIL_CHECK_STORE_NAME = exports.EMAIL_CHECK_STORE_NAME = 'emailCheck';
|
|
|
17
17
|
const EMAIL_REGISTERED_DIFFERENT_ORG = exports.EMAIL_REGISTERED_DIFFERENT_ORG = 'email_registered_different_org';
|
|
18
18
|
const CROSS_TENANT_LOGIN = exports.CROSS_TENANT_LOGIN = 'cross_tenant_login';
|
|
19
19
|
const REGISTRATION_REQUIRED_FOR_CURRENT_TENANT = exports.REGISTRATION_REQUIRED_FOR_CURRENT_TENANT = 'registration_required_for_current_tenant';
|
|
20
|
+
const CROSS_ORG_SSO_ATTEMPTED = exports.CROSS_ORG_SSO_ATTEMPTED = 'cross_org_sso_attempted';
|
|
21
|
+
const PASSWORD_RESET_REQUIRED = exports.PASSWORD_RESET_REQUIRED = 'password_reset_required';
|
|
22
|
+
|
|
23
|
+
// Cookie names
|
|
24
|
+
const CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME = exports.CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME = 'cross_org_sso_attempt_blocked';
|
|
20
25
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["EMAIL_CHECK_REQUEST","exports","EMAIL_CHECK_SUCCESS","EMAIL_CHECK_FAILURE","EMAIL_CHECK_COMPLETE","EMAIL_CHECK_STORE_NAME","EMAIL_REGISTERED_DIFFERENT_ORG","CROSS_TENANT_LOGIN","REGISTRATION_REQUIRED_FOR_CURRENT_TENANT"],"sources":["../../../src/EmailCheckWidget/data/constants.js"],"sourcesContent":["// Action types\nexport const EMAIL_CHECK_REQUEST = 'EMAIL_CHECK_REQUEST';\nexport const EMAIL_CHECK_SUCCESS = 'EMAIL_CHECK_SUCCESS';\nexport const EMAIL_CHECK_FAILURE = 'EMAIL_CHECK_FAILURE';\nexport const EMAIL_CHECK_COMPLETE = 'EMAIL_CHECK_COMPLETE';\n\n// Store name\nexport const EMAIL_CHECK_STORE_NAME = 'emailCheck';\n\n// Error codes from backend\nexport const EMAIL_REGISTERED_DIFFERENT_ORG = 'email_registered_different_org';\nexport const CROSS_TENANT_LOGIN = 'cross_tenant_login';\nexport const REGISTRATION_REQUIRED_FOR_CURRENT_TENANT = 'registration_required_for_current_tenant';\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,qBAAqB;AACjD,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,qBAAqB;AACjD,MAAMC,mBAAmB,GAAAF,OAAA,CAAAE,mBAAA,GAAG,qBAAqB;AACjD,MAAMC,oBAAoB,GAAAH,OAAA,CAAAG,oBAAA,GAAG,sBAAsB;;AAE1D;AACO,MAAMC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,GAAG,YAAY;;AAElD;AACO,MAAMC,8BAA8B,GAAAL,OAAA,CAAAK,8BAAA,GAAG,gCAAgC;AACvE,MAAMC,kBAAkB,GAAAN,OAAA,CAAAM,kBAAA,GAAG,oBAAoB;AAC/C,MAAMC,wCAAwC,GAAAP,OAAA,CAAAO,wCAAA,GAAG,0CAA0C","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"constants.js","names":["EMAIL_CHECK_REQUEST","exports","EMAIL_CHECK_SUCCESS","EMAIL_CHECK_FAILURE","EMAIL_CHECK_COMPLETE","EMAIL_CHECK_STORE_NAME","EMAIL_REGISTERED_DIFFERENT_ORG","CROSS_TENANT_LOGIN","REGISTRATION_REQUIRED_FOR_CURRENT_TENANT","CROSS_ORG_SSO_ATTEMPTED","PASSWORD_RESET_REQUIRED","CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME"],"sources":["../../../src/EmailCheckWidget/data/constants.js"],"sourcesContent":["// Action types\nexport const EMAIL_CHECK_REQUEST = 'EMAIL_CHECK_REQUEST';\nexport const EMAIL_CHECK_SUCCESS = 'EMAIL_CHECK_SUCCESS';\nexport const EMAIL_CHECK_FAILURE = 'EMAIL_CHECK_FAILURE';\nexport const EMAIL_CHECK_COMPLETE = 'EMAIL_CHECK_COMPLETE';\n\n// Store name\nexport const EMAIL_CHECK_STORE_NAME = 'emailCheck';\n\n// Error codes from backend\nexport const EMAIL_REGISTERED_DIFFERENT_ORG = 'email_registered_different_org';\nexport const CROSS_TENANT_LOGIN = 'cross_tenant_login';\nexport const REGISTRATION_REQUIRED_FOR_CURRENT_TENANT = 'registration_required_for_current_tenant';\nexport const CROSS_ORG_SSO_ATTEMPTED = 'cross_org_sso_attempted';\nexport const PASSWORD_RESET_REQUIRED = 'password_reset_required';\n\n// Cookie names\nexport const CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME = 'cross_org_sso_attempt_blocked';\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,qBAAqB;AACjD,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,qBAAqB;AACjD,MAAMC,mBAAmB,GAAAF,OAAA,CAAAE,mBAAA,GAAG,qBAAqB;AACjD,MAAMC,oBAAoB,GAAAH,OAAA,CAAAG,oBAAA,GAAG,sBAAsB;;AAE1D;AACO,MAAMC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,GAAG,YAAY;;AAElD;AACO,MAAMC,8BAA8B,GAAAL,OAAA,CAAAK,8BAAA,GAAG,gCAAgC;AACvE,MAAMC,kBAAkB,GAAAN,OAAA,CAAAM,kBAAA,GAAG,oBAAoB;AAC/C,MAAMC,wCAAwC,GAAAP,OAAA,CAAAO,wCAAA,GAAG,0CAA0C;AAC3F,MAAMC,uBAAuB,GAAAR,OAAA,CAAAQ,uBAAA,GAAG,yBAAyB;AACzD,MAAMC,uBAAuB,GAAAT,OAAA,CAAAS,uBAAA,GAAG,yBAAyB;;AAEhE;AACO,MAAMC,iCAAiC,GAAAV,OAAA,CAAAU,iCAAA,GAAG,+BAA+B","ignoreList":[]}
|
|
@@ -7,11 +7,13 @@ exports.default = emailCheckSaga;
|
|
|
7
7
|
exports.handleEmailCheck = handleEmailCheck;
|
|
8
8
|
exports.watchEmailCheck = watchEmailCheck;
|
|
9
9
|
var _effects = require("redux-saga/effects");
|
|
10
|
+
var _cookies = require("../../utils/cookies");
|
|
10
11
|
var _actions = require("./actions");
|
|
11
12
|
var _constants = require("./constants");
|
|
12
13
|
var _service = require("./service");
|
|
13
14
|
function* handleEmailCheck(action) {
|
|
14
15
|
try {
|
|
16
|
+
(0, _cookies.setCookie)(_constants.CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME, 'false');
|
|
15
17
|
const {
|
|
16
18
|
email
|
|
17
19
|
} = action.payload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sagas.js","names":["_effects","require","_actions","_constants","_service","handleEmailCheck","action","email","payload","result","call","checkEmailExists","put","checkEmailSuccess","redirectTo","errorCode","context","error","errorMessage","response","data","checkEmailFailure","watchEmailCheck","takeEvery","EMAIL_CHECK_REQUEST","emailCheckSaga"],"sources":["../../../src/EmailCheckWidget/data/sagas.js"],"sourcesContent":["import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport { checkEmailFailure, checkEmailSuccess } from './actions';\nimport { EMAIL_CHECK_REQUEST } from './constants';\nimport { checkEmailExists } from './service';\n\nexport function* handleEmailCheck(action) {\n try {\n const { email } = action.payload;\n const result = yield call(checkEmailExists, email);\n yield put(checkEmailSuccess(result.redirectTo, email, result.errorCode, result.context));\n } catch (error) {\n const errorMessage = error?.response?.data?.error\n || 'An error occurred. Please try again.';\n yield put(checkEmailFailure(errorMessage));\n }\n}\n\nexport function* watchEmailCheck() {\n yield takeEvery(EMAIL_CHECK_REQUEST, handleEmailCheck);\n}\n\nexport default function* emailCheckSaga() {\n yield watchEmailCheck();\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,
|
|
1
|
+
{"version":3,"file":"sagas.js","names":["_effects","require","_cookies","_actions","_constants","_service","handleEmailCheck","action","setCookie","CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME","email","payload","result","call","checkEmailExists","put","checkEmailSuccess","redirectTo","errorCode","context","error","errorMessage","response","data","checkEmailFailure","watchEmailCheck","takeEvery","EMAIL_CHECK_REQUEST","emailCheckSaga"],"sources":["../../../src/EmailCheckWidget/data/sagas.js"],"sourcesContent":["import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport { setCookie } from '../../utils/cookies';\nimport { checkEmailFailure, checkEmailSuccess } from './actions';\nimport { CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME, EMAIL_CHECK_REQUEST } from './constants';\nimport { checkEmailExists } from './service';\n\nexport function* handleEmailCheck(action) {\n try {\n setCookie(CROSS_ORG_SSO_ATTEMPT_COOKIE_NAME, 'false');\n const { email } = action.payload;\n const result = yield call(checkEmailExists, email);\n yield put(checkEmailSuccess(result.redirectTo, email, result.errorCode, result.context));\n } catch (error) {\n const errorMessage = error?.response?.data?.error\n || 'An error occurred. Please try again.';\n yield put(checkEmailFailure(errorMessage));\n }\n}\n\nexport function* watchEmailCheck() {\n yield takeEvery(EMAIL_CHECK_REQUEST, handleEmailCheck);\n}\n\nexport default function* emailCheckSaga() {\n yield watchEmailCheck();\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAEO,UAAUK,gBAAgBA,CAACC,MAAM,EAAE;EACxC,IAAI;IACF,IAAAC,kBAAS,EAACC,4CAAiC,EAAE,OAAO,CAAC;IACrD,MAAM;MAAEC;IAAM,CAAC,GAAGH,MAAM,CAACI,OAAO;IAChC,MAAMC,MAAM,GAAG,MAAM,IAAAC,aAAI,EAACC,yBAAgB,EAAEJ,KAAK,CAAC;IAClD,MAAM,IAAAK,YAAG,EAAC,IAAAC,0BAAiB,EAACJ,MAAM,CAACK,UAAU,EAAEP,KAAK,EAAEE,MAAM,CAACM,SAAS,EAAEN,MAAM,CAACO,OAAO,CAAC,CAAC;EAC1F,CAAC,CAAC,OAAOC,KAAK,EAAE;IACd,MAAMC,YAAY,GAAGD,KAAK,EAAEE,QAAQ,EAAEC,IAAI,EAAEH,KAAK,IAC5C,sCAAsC;IAC3C,MAAM,IAAAL,YAAG,EAAC,IAAAS,0BAAiB,EAACH,YAAY,CAAC,CAAC;EAC5C;AACF;AAEO,UAAUI,eAAeA,CAAA,EAAG;EACjC,MAAM,IAAAC,kBAAS,EAACC,8BAAmB,EAAErB,gBAAgB,CAAC;AACxD;AAEe,UAAUsB,cAAcA,CAAA,EAAG;EACxC,MAAMH,eAAe,CAAC,CAAC;AACzB","ignoreList":[]}
|
|
@@ -30,6 +30,11 @@ const messages = (0, _i18n.defineMessages)({
|
|
|
30
30
|
id: 'email.format.validation.message',
|
|
31
31
|
defaultMessage: 'Please enter a valid email address',
|
|
32
32
|
description: 'Error message when email format is invalid'
|
|
33
|
+
},
|
|
34
|
+
'cross.org.sso.attempted': {
|
|
35
|
+
id: 'cross.org.sso.attempted',
|
|
36
|
+
defaultMessage: 'Single sign-on is not available for this email because it is already registered on another organization.',
|
|
37
|
+
description: 'Alert message when user tries to SSO with an email that is already registered on another organization'
|
|
33
38
|
}
|
|
34
39
|
});
|
|
35
40
|
var _default = exports.default = messages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","names":["_i18n","require","messages","defineMessages","id","defaultMessage","description","_default","exports","default"],"sources":["../../src/EmailCheckWidget/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'email.check.heading': {\n id: 'email.check.heading',\n defaultMessage: 'Welcome! Let\\'s get started',\n description: 'Heading for email check page',\n },\n 'email.check.subheading': {\n id: 'email.check.subheading',\n defaultMessage: 'Enter your email address to continue',\n description: 'Subheading for email check page',\n },\n 'email.check.button': {\n id: 'email.check.button',\n defaultMessage: 'Continue',\n description: 'Button text for email check form',\n },\n 'email.validation.message': {\n id: 'email.validation.message',\n defaultMessage: 'Please enter your email',\n description: 'Error message when email field is empty',\n },\n 'email.format.validation.message': {\n id: 'email.format.validation.message',\n defaultMessage: 'Please enter a valid email address',\n description: 'Error message when email format is invalid',\n },\n});\n\nexport default messages;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,QAAQ,GAAG,IAAAC,oBAAc,EAAC;EAC9B,qBAAqB,EAAE;IACrBC,EAAE,EAAE,qBAAqB;IACzBC,cAAc,EAAE,6BAA6B;IAC7CC,WAAW,EAAE;EACf,CAAC;EACD,wBAAwB,EAAE;IACxBF,EAAE,EAAE,wBAAwB;IAC5BC,cAAc,EAAE,sCAAsC;IACtDC,WAAW,EAAE;EACf,CAAC;EACD,oBAAoB,EAAE;IACpBF,EAAE,EAAE,oBAAoB;IACxBC,cAAc,EAAE,UAAU;IAC1BC,WAAW,EAAE;EACf,CAAC;EACD,0BAA0B,EAAE;IAC1BF,EAAE,EAAE,0BAA0B;IAC9BC,cAAc,EAAE,yBAAyB;IACzCC,WAAW,EAAE;EACf,CAAC;EACD,iCAAiC,EAAE;IACjCF,EAAE,EAAE,iCAAiC;IACrCC,cAAc,EAAE,oCAAoC;IACpDC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYP,QAAQ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"messages.js","names":["_i18n","require","messages","defineMessages","id","defaultMessage","description","_default","exports","default"],"sources":["../../src/EmailCheckWidget/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'email.check.heading': {\n id: 'email.check.heading',\n defaultMessage: 'Welcome! Let\\'s get started',\n description: 'Heading for email check page',\n },\n 'email.check.subheading': {\n id: 'email.check.subheading',\n defaultMessage: 'Enter your email address to continue',\n description: 'Subheading for email check page',\n },\n 'email.check.button': {\n id: 'email.check.button',\n defaultMessage: 'Continue',\n description: 'Button text for email check form',\n },\n 'email.validation.message': {\n id: 'email.validation.message',\n defaultMessage: 'Please enter your email',\n description: 'Error message when email field is empty',\n },\n 'email.format.validation.message': {\n id: 'email.format.validation.message',\n defaultMessage: 'Please enter a valid email address',\n description: 'Error message when email format is invalid',\n },\n 'cross.org.sso.attempted': {\n id: 'cross.org.sso.attempted',\n defaultMessage: 'Single sign-on is not available for this email because it is already registered on another organization.',\n description: 'Alert message when user tries to SSO with an email that is already registered on another organization',\n },\n});\n\nexport default messages;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,QAAQ,GAAG,IAAAC,oBAAc,EAAC;EAC9B,qBAAqB,EAAE;IACrBC,EAAE,EAAE,qBAAqB;IACzBC,cAAc,EAAE,6BAA6B;IAC7CC,WAAW,EAAE;EACf,CAAC;EACD,wBAAwB,EAAE;IACxBF,EAAE,EAAE,wBAAwB;IAC5BC,cAAc,EAAE,sCAAsC;IACtDC,WAAW,EAAE;EACf,CAAC;EACD,oBAAoB,EAAE;IACpBF,EAAE,EAAE,oBAAoB;IACxBC,cAAc,EAAE,UAAU;IAC1BC,WAAW,EAAE;EACf,CAAC;EACD,0BAA0B,EAAE;IAC1BF,EAAE,EAAE,0BAA0B;IAC9BC,cAAc,EAAE,yBAAyB;IACzCC,WAAW,EAAE;EACf,CAAC;EACD,iCAAiC,EAAE;IACjCF,EAAE,EAAE,iCAAiC;IACrCC,cAAc,EAAE,oCAAoC;IACpDC,WAAW,EAAE;EACf,CAAC;EACD,yBAAyB,EAAE;IACzBF,EAAE,EAAE,yBAAyB;IAC7BC,cAAc,EAAE,0GAA0G;IAC1HC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYP,QAAQ","ignoreList":[]}
|
|
@@ -44,14 +44,8 @@ const FooterWidget = () => {
|
|
|
44
44
|
}, [config?.COLORS?.primary, footerData]);
|
|
45
45
|
(0, _react.useEffect)(() => {
|
|
46
46
|
const fetchData = async () => {
|
|
47
|
-
if (!config?.MARKETING_SITE_BASE_URL) {
|
|
48
|
-
console.error('No url found for discovery', config);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
47
|
try {
|
|
52
|
-
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/footer`,
|
|
53
|
-
// `https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/footer`,
|
|
54
|
-
{
|
|
48
|
+
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/footer`, {
|
|
55
49
|
credentials: 'include'
|
|
56
50
|
});
|
|
57
51
|
if (!response.ok) {
|
|
@@ -63,11 +57,12 @@ const FooterWidget = () => {
|
|
|
63
57
|
});
|
|
64
58
|
setFooterData(cleanHtml);
|
|
65
59
|
} catch (error) {
|
|
60
|
+
// eslint-disable-next-line no-console
|
|
66
61
|
console.error(error);
|
|
67
62
|
}
|
|
68
63
|
};
|
|
69
64
|
fetchData();
|
|
70
|
-
}, []);
|
|
65
|
+
}, [config]);
|
|
71
66
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
72
67
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHelmet.Helmet, {
|
|
73
68
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("link", {
|
|
@@ -76,7 +71,9 @@ const FooterWidget = () => {
|
|
|
76
71
|
crossOrigin: "anonymous"
|
|
77
72
|
})
|
|
78
73
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("footer", {
|
|
79
|
-
className: "site-header"
|
|
74
|
+
className: "site-header"
|
|
75
|
+
// eslint-disable-next-line react/no-danger
|
|
76
|
+
,
|
|
80
77
|
dangerouslySetInnerHTML: {
|
|
81
78
|
__html: footerData
|
|
82
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_reactHelmet","_jsxRuntime","e","__esModule","default","FooterWidget","footerData","setFooterData","useState","config","getConfig","useEffect","document","documentElement","style","setProperty","COLORS","primary","scrollBtn","getElementById","scrollToTop","window","scrollTo","top","behavior","toggleVisibility","scrollY","classList","add","remove","addEventListener","removeEventListener","removeProperty","fetchData","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_reactHelmet","_jsxRuntime","e","__esModule","default","FooterWidget","footerData","setFooterData","useState","config","getConfig","useEffect","document","documentElement","style","setProperty","COLORS","primary","scrollBtn","getElementById","scrollToTop","window","scrollTo","top","behavior","toggleVisibility","scrollY","classList","add","remove","addEventListener","removeEventListener","removeProperty","fetchData","response","fetch","MARKETING_SITE_BASE_URL","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","error","console","jsxs","Fragment","children","jsx","Helmet","rel","href","crossOrigin","className","dangerouslySetInnerHTML","__html","_default","exports"],"sources":["../../src/FooterWidget/index.jsx"],"sourcesContent":["import { getConfig } from '@edx/frontend-platform';\nimport { useEffect, useState } from 'react';\nimport DOMPurify from 'dompurify';\nimport { Helmet } from 'react-helmet';\nimport './main.scss';\n\nconst FooterWidget = () => {\n const [footerData, setFooterData] = useState('');\n const config = getConfig();\n\n useEffect(() => {\n document.documentElement.style.setProperty(\n '--primary-color',\n config?.COLORS?.primary || '#de2025',\n );\n const scrollBtn = document.getElementById('scrollToTop');\n if (scrollBtn) {\n const scrollToTop = () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n };\n\n const toggleVisibility = () => {\n if (window.scrollY > 300) {\n scrollBtn.classList.add('show-btn'); // We will style this class in SCSS\n } else {\n scrollBtn.classList.remove('show-btn');\n }\n };\n\n scrollBtn.addEventListener('click', scrollToTop);\n window.addEventListener('scroll', toggleVisibility);\n\n return () => {\n scrollBtn.removeEventListener('click', scrollToTop);\n window.removeEventListener('scroll', toggleVisibility);\n };\n }\n return () => {\n document.documentElement.style.removeProperty('--primary-color');\n };\n }, [config?.COLORS?.primary, footerData]);\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n const response = await fetch(\n `${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/footer`,\n { credentials: 'include' },\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const jsonData = await response.json();\n const cleanHtml = DOMPurify.sanitize(jsonData, {\n ADD_ATTR: ['target', 'class'],\n });\n setFooterData(cleanHtml);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n };\n\n fetchData();\n }, [config]);\n\n return (\n <>\n <Helmet>\n <link\n rel=\"stylesheet\"\n href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css\"\n crossOrigin=\"anonymous\"\n />\n </Helmet>\n <footer\n className=\"site-header\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: footerData }}\n />\n </>\n );\n};\n\nexport default FooterWidget;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACAA,OAAA;AAAqB,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAErB,MAAMG,YAAY,GAAGA,CAAA,KAAM;EACzB,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,EAAE,CAAC;EAChD,MAAMC,MAAM,GAAG,IAAAC,2BAAS,EAAC,CAAC;EAE1B,IAAAC,gBAAS,EAAC,MAAM;IACdC,QAAQ,CAACC,eAAe,CAACC,KAAK,CAACC,WAAW,CACxC,iBAAiB,EACjBN,MAAM,EAAEO,MAAM,EAAEC,OAAO,IAAI,SAC7B,CAAC;IACD,MAAMC,SAAS,GAAGN,QAAQ,CAACO,cAAc,CAAC,aAAa,CAAC;IACxD,IAAID,SAAS,EAAE;MACb,MAAME,WAAW,GAAGA,CAAA,KAAM;QACxBC,MAAM,CAACC,QAAQ,CAAC;UAAEC,GAAG,EAAE,CAAC;UAAEC,QAAQ,EAAE;QAAS,CAAC,CAAC;MACjD,CAAC;MAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;QAC7B,IAAIJ,MAAM,CAACK,OAAO,GAAG,GAAG,EAAE;UACxBR,SAAS,CAACS,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACvC,CAAC,MAAM;UACLV,SAAS,CAACS,SAAS,CAACE,MAAM,CAAC,UAAU,CAAC;QACxC;MACF,CAAC;MAEDX,SAAS,CAACY,gBAAgB,CAAC,OAAO,EAAEV,WAAW,CAAC;MAChDC,MAAM,CAACS,gBAAgB,CAAC,QAAQ,EAAEL,gBAAgB,CAAC;MAEnD,OAAO,MAAM;QACXP,SAAS,CAACa,mBAAmB,CAAC,OAAO,EAAEX,WAAW,CAAC;QACnDC,MAAM,CAACU,mBAAmB,CAAC,QAAQ,EAAEN,gBAAgB,CAAC;MACxD,CAAC;IACH;IACA,OAAO,MAAM;MACXb,QAAQ,CAACC,eAAe,CAACC,KAAK,CAACkB,cAAc,CAAC,iBAAiB,CAAC;IAClE,CAAC;EACH,CAAC,EAAE,CAACvB,MAAM,EAAEO,MAAM,EAAEC,OAAO,EAAEX,UAAU,CAAC,CAAC;EAEzC,IAAAK,gBAAS,EAAC,MAAM;IACd,MAAMsB,SAAS,GAAG,MAAAA,CAAA,KAAY;MAC5B,IAAI;QACF,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAC1B,GAAG1B,MAAM,CAAC2B,uBAAuB,gCAAgC,EACjE;UAAEC,WAAW,EAAE;QAAU,CAC3B,CAAC;QACD,IAAI,CAACH,QAAQ,CAACI,EAAE,EAAE;UAChB,MAAM,IAAIC,KAAK,CAAC,uBAAuBL,QAAQ,CAACM,MAAM,EAAE,CAAC;QAC3D;QAEA,MAAMC,QAAQ,GAAG,MAAMP,QAAQ,CAACQ,IAAI,CAAC,CAAC;QACtC,MAAMC,SAAS,GAAGC,kBAAS,CAACC,QAAQ,CAACJ,QAAQ,EAAE;UAC7CK,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO;QAC9B,CAAC,CAAC;QACFvC,aAAa,CAACoC,SAAS,CAAC;MAC1B,CAAC,CAAC,OAAOI,KAAK,EAAE;QACd;QACAC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;MACtB;IACF,CAAC;IAEDd,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,CAACxB,MAAM,CAAC,CAAC;EAEZ,oBACE,IAAAR,WAAA,CAAAgD,IAAA,EAAAhD,WAAA,CAAAiD,QAAA;IAAAC,QAAA,gBACE,IAAAlD,WAAA,CAAAmD,GAAA,EAACpD,YAAA,CAAAqD,MAAM;MAAAF,QAAA,eACL,IAAAlD,WAAA,CAAAmD,GAAA;QACEE,GAAG,EAAC,YAAY;QAChBC,IAAI,EAAC,2EAA2E;QAChFC,WAAW,EAAC;MAAW,CACxB;IAAC,CACI,CAAC,eACT,IAAAvD,WAAA,CAAAmD,GAAA;MACEK,SAAS,EAAC;MACV;MAAA;MACAC,uBAAuB,EAAE;QAAEC,MAAM,EAAErD;MAAW;IAAE,CACjD,CAAC;EAAA,CACF,CAAC;AAEP,CAAC;AAAC,IAAAsD,QAAA,GAAAC,OAAA,CAAAzD,OAAA,GAEaC,YAAY","ignoreList":[]}
|
|
@@ -17,7 +17,6 @@ const HeaderWidget = () => {
|
|
|
17
17
|
const [isMobile, setIsMobile] = (0, _react.useState)(window.innerWidth < WIDTH);
|
|
18
18
|
const config = (0, _frontendPlatform.getConfig)();
|
|
19
19
|
(0, _react.useEffect)(() => {
|
|
20
|
-
console.log('color: ', config.COLORS);
|
|
21
20
|
document.documentElement.style.setProperty('--primary-color', config?.COLORS?.primary || '#de2025');
|
|
22
21
|
const handleResize = () => {
|
|
23
22
|
setIsMobile(window.innerWidth < WIDTH);
|
|
@@ -33,14 +32,8 @@ const HeaderWidget = () => {
|
|
|
33
32
|
}, [config?.COLORS]);
|
|
34
33
|
(0, _react.useEffect)(() => {
|
|
35
34
|
const fetchData = async () => {
|
|
36
|
-
if (!config?.MARKETING_SITE_BASE_URL) {
|
|
37
|
-
console.error('No url found for discovery', config);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
35
|
try {
|
|
41
|
-
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/nav-menu`,
|
|
42
|
-
// "https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/nav-menu",
|
|
43
|
-
{
|
|
36
|
+
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/nav-menu`, {
|
|
44
37
|
credentials: 'include'
|
|
45
38
|
});
|
|
46
39
|
if (!response.ok) {
|
|
@@ -52,15 +45,14 @@ const HeaderWidget = () => {
|
|
|
52
45
|
ADD_ATTR: ['target', 'class']
|
|
53
46
|
});
|
|
54
47
|
setHeaderData(cleanHtml);
|
|
55
|
-
} else {
|
|
56
|
-
console.error('Data object is not json');
|
|
57
48
|
}
|
|
58
49
|
} catch (error) {
|
|
50
|
+
// eslint-disable-next-line no-console
|
|
59
51
|
console.error(error);
|
|
60
52
|
}
|
|
61
53
|
};
|
|
62
54
|
fetchData();
|
|
63
|
-
}, []);
|
|
55
|
+
}, [config]);
|
|
64
56
|
const toggleMenu = () => {
|
|
65
57
|
setIsOpen(!isOpen);
|
|
66
58
|
};
|
|
@@ -91,7 +83,9 @@ const HeaderWidget = () => {
|
|
|
91
83
|
decoding: "async"
|
|
92
84
|
})
|
|
93
85
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("header", {
|
|
94
|
-
className: "site-header"
|
|
86
|
+
className: "site-header"
|
|
87
|
+
// eslint-disable-next-line react/no-danger
|
|
88
|
+
,
|
|
95
89
|
dangerouslySetInnerHTML: {
|
|
96
90
|
__html: headerData
|
|
97
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_jsxRuntime","e","__esModule","default","HeaderWidget","headerData","setHeaderData","useState","isOpen","setIsOpen","WIDTH","isMobile","setIsMobile","window","innerWidth","config","getConfig","useEffect","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_jsxRuntime","e","__esModule","default","HeaderWidget","headerData","setHeaderData","useState","isOpen","setIsOpen","WIDTH","isMobile","setIsMobile","window","innerWidth","config","getConfig","useEffect","document","documentElement","style","setProperty","COLORS","primary","handleResize","addEventListener","removeEventListener","removeProperty","fetchData","response","fetch","MARKETING_SITE_BASE_URL","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","error","console","toggleMenu","jsxs","className","children","jsx","type","onClick","background","border","cursor","fontSize","href","width","height","src","LOGO_URL","alt","decoding","dangerouslySetInnerHTML","__html","_default","exports"],"sources":["../../src/HeaderWidget/index.jsx"],"sourcesContent":["import { getConfig } from '@edx/frontend-platform';\nimport { useEffect, useState } from 'react';\nimport DOMPurify from 'dompurify';\nimport './main.scss';\n\nconst HeaderWidget = () => {\n const [headerData, setHeaderData] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const WIDTH = 1230;\n const [isMobile, setIsMobile] = useState(window.innerWidth < WIDTH);\n const config = getConfig();\n\n useEffect(() => {\n document.documentElement.style.setProperty(\n '--primary-color',\n config?.COLORS?.primary || '#de2025',\n );\n\n const handleResize = () => {\n setIsMobile(window.innerWidth < WIDTH);\n if (window.innerWidth >= WIDTH) {\n setIsOpen(false);\n }\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n document.documentElement.style.removeProperty('--primary-color');\n };\n }, [config?.COLORS]);\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n const response = await fetch(\n `${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/nav-menu`,\n { credentials: 'include' },\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const jsonData = await response.json();\n\n if (typeof jsonData === 'object') {\n const cleanHtml = DOMPurify.sanitize(jsonData.primary, {\n ADD_ATTR: ['target', 'class'],\n });\n setHeaderData(cleanHtml);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n };\n\n fetchData();\n }, [config]);\n\n const toggleMenu = () => {\n setIsOpen(!isOpen);\n };\n\n return (\n <div className={`shadow-sm ${isMobile ? 'header-frame' : ''}`}>\n {isMobile && (\n <button\n className=\"menuOpner\"\n type=\"button\"\n onClick={toggleMenu}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n }}\n >\n {isOpen ? '✖' : '☰'}\n </button>\n )}\n <div\n className={`header-holder ${isMobile ? 'mobile-menu' : ''} ${\n isOpen ? '' : 'mobile-hide'\n }`}\n >\n <a href=\"/\" className=\"custom-logo-link\">\n <img\n width=\"216\"\n height=\"140\"\n src={config.LOGO_URL}\n className=\"custom-logo\"\n alt=\"Venus\"\n decoding=\"async\"\n />\n </a>\n <header\n className=\"site-header\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: headerData }}\n />\n </div>\n </div>\n );\n};\n\nexport default HeaderWidget;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getCookie = getCookie;
|
|
7
|
+
exports.setCookie = setCookie;
|
|
8
|
+
var _frontendPlatform = require("@edx/frontend-platform");
|
|
9
|
+
var _universalCookie = _interopRequireDefault(require("universal-cookie"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const cookies = new _universalCookie.default();
|
|
12
|
+
function setCookie(cookieName, cookieValue, cookieExpiry) {
|
|
13
|
+
if (cookieName) {
|
|
14
|
+
const options = {
|
|
15
|
+
domain: (0, _frontendPlatform.getConfig)().SESSION_COOKIE_DOMAIN,
|
|
16
|
+
path: '/'
|
|
17
|
+
};
|
|
18
|
+
if (cookieExpiry) {
|
|
19
|
+
options.expires = cookieExpiry;
|
|
20
|
+
}
|
|
21
|
+
cookies.set(cookieName, cookieValue, options);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function getCookie(cookieName) {
|
|
25
|
+
return cookies.get(cookieName);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=cookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookies.js","names":["_frontendPlatform","require","_universalCookie","_interopRequireDefault","e","__esModule","default","cookies","Cookies","setCookie","cookieName","cookieValue","cookieExpiry","options","domain","getConfig","SESSION_COOKIE_DOMAIN","path","expires","set","getCookie","get"],"sources":["../../src/utils/cookies.js"],"sourcesContent":["import { getConfig } from '@edx/frontend-platform';\nimport Cookies from 'universal-cookie';\n\nconst cookies = new Cookies();\nexport function setCookie(cookieName, cookieValue, cookieExpiry) {\n if (cookieName) {\n const options = { domain: getConfig().SESSION_COOKIE_DOMAIN, path: '/' };\n if (cookieExpiry) {\n options.expires = cookieExpiry;\n }\n cookies.set(cookieName, cookieValue, options);\n }\n}\n\nexport function getCookie(cookieName) {\n return cookies.get(cookieName);\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEvC,MAAMG,OAAO,GAAG,IAAIC,wBAAO,CAAC,CAAC;AACtB,SAASC,SAASA,CAACC,UAAU,EAAEC,WAAW,EAAEC,YAAY,EAAE;EAC/D,IAAIF,UAAU,EAAE;IACd,MAAMG,OAAO,GAAG;MAAEC,MAAM,EAAE,IAAAC,2BAAS,EAAC,CAAC,CAACC,qBAAqB;MAAEC,IAAI,EAAE;IAAI,CAAC;IACxE,IAAIL,YAAY,EAAE;MAChBC,OAAO,CAACK,OAAO,GAAGN,YAAY;IAChC;IACAL,OAAO,CAACY,GAAG,CAACT,UAAU,EAAEC,WAAW,EAAEE,OAAO,CAAC;EAC/C;AACF;AAEO,SAASO,SAASA,CAACV,UAAU,EAAE;EACpC,OAAOH,OAAO,CAACc,GAAG,CAACX,UAAU,CAAC;AAChC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anas_hameed/edly-saas-widget",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Frontend application template",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"react": "^16.9.0 || ^17.0.0 || ^18.0.0",
|
|
46
46
|
"react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0",
|
|
47
47
|
"react-redux": "^7.2.9",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
48
|
+
"react-router-dom": "^6.14.2",
|
|
49
|
+
"redux-saga": "^1.3.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@edx/browserslist-config": "^1.1.1",
|
|
@@ -61,7 +61,8 @@
|
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"dompurify": "^3.3.0",
|
|
63
63
|
"react-bootstrap": "^2.10.10",
|
|
64
|
-
"react-helmet": "^6.1.0"
|
|
64
|
+
"react-helmet": "^6.1.0",
|
|
65
|
+
"universal-cookie": "^8.0.1"
|
|
65
66
|
},
|
|
66
67
|
"directories": {
|
|
67
68
|
"doc": "docs"
|