@anas_hameed/edly-saas-widget 0.1.6 → 0.1.8
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 +54 -0
- package/dist/EdlyLogistrationInfo/EdlyLogistrationInfo.js.map +1 -0
- package/dist/EdlyLogistrationInfo/index.js +14 -0
- package/dist/EdlyLogistrationInfo/index.js.map +1 -0
- package/dist/EdlyLogistrationInfo/messages.js +26 -0
- package/dist/EdlyLogistrationInfo/messages.js.map +1 -0
- package/dist/EmailCheckWidget/EmailCheckWidget.js +130 -0
- package/dist/EmailCheckWidget/EmailCheckWidget.js.map +1 -0
- package/dist/EmailCheckWidget/data/actions.js +40 -0
- package/dist/EmailCheckWidget/data/actions.js.map +1 -0
- package/dist/EmailCheckWidget/data/constants.js +20 -0
- package/dist/EmailCheckWidget/data/constants.js.map +1 -0
- package/dist/EmailCheckWidget/data/index.js +56 -0
- package/dist/EmailCheckWidget/data/index.js.map +1 -0
- package/dist/EmailCheckWidget/data/reducers.js +62 -0
- package/dist/EmailCheckWidget/data/reducers.js.map +1 -0
- package/dist/EmailCheckWidget/data/sagas.js +31 -0
- package/dist/EmailCheckWidget/data/sagas.js.map +1 -0
- package/dist/EmailCheckWidget/data/service.js +29 -0
- package/dist/EmailCheckWidget/data/service.js.map +1 -0
- package/dist/EmailCheckWidget/index.js +37 -0
- package/dist/EmailCheckWidget/index.js.map +1 -0
- package/dist/EmailCheckWidget/messages.js +36 -0
- package/dist/EmailCheckWidget/messages.js.map +1 -0
- package/dist/FooterWidget/index.js +31 -18
- package/dist/FooterWidget/index.js.map +1 -1
- package/dist/FooterWidget/main.scss +49 -4
- package/dist/HeaderWidget/index.js +42 -63
- package/dist/HeaderWidget/index.js.map +1 -1
- package/dist/HeaderWidget/main.scss +190 -89
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
8
|
+
const messages = (0, _i18n.defineMessages)({
|
|
9
|
+
'email.check.heading': {
|
|
10
|
+
id: 'email.check.heading',
|
|
11
|
+
defaultMessage: 'Welcome! Let\'s get started',
|
|
12
|
+
description: 'Heading for email check page'
|
|
13
|
+
},
|
|
14
|
+
'email.check.subheading': {
|
|
15
|
+
id: 'email.check.subheading',
|
|
16
|
+
defaultMessage: 'Enter your email address to continue',
|
|
17
|
+
description: 'Subheading for email check page'
|
|
18
|
+
},
|
|
19
|
+
'email.check.button': {
|
|
20
|
+
id: 'email.check.button',
|
|
21
|
+
defaultMessage: 'Continue',
|
|
22
|
+
description: 'Button text for email check form'
|
|
23
|
+
},
|
|
24
|
+
'email.validation.message': {
|
|
25
|
+
id: 'email.validation.message',
|
|
26
|
+
defaultMessage: 'Please enter your email',
|
|
27
|
+
description: 'Error message when email field is empty'
|
|
28
|
+
},
|
|
29
|
+
'email.format.validation.message': {
|
|
30
|
+
id: 'email.format.validation.message',
|
|
31
|
+
defaultMessage: 'Please enter a valid email address',
|
|
32
|
+
description: 'Error message when email format is invalid'
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
var _default = exports.default = messages;
|
|
36
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -7,54 +7,59 @@ exports.default = void 0;
|
|
|
7
7
|
var _frontendPlatform = require("@edx/frontend-platform");
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _dompurify = _interopRequireDefault(require("dompurify"));
|
|
10
|
+
var _reactHelmet = require("react-helmet");
|
|
10
11
|
require("./main.scss");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
14
|
const FooterWidget = () => {
|
|
14
|
-
const [footerData, setFooterData] = (0, _react.useState)(
|
|
15
|
+
const [footerData, setFooterData] = (0, _react.useState)('');
|
|
15
16
|
const config = (0, _frontendPlatform.getConfig)();
|
|
16
17
|
(0, _react.useEffect)(() => {
|
|
17
|
-
|
|
18
|
+
document.documentElement.style.setProperty('--primary-color', config?.COLORS?.primary || '#de2025');
|
|
19
|
+
const scrollBtn = document.getElementById('scrollToTop');
|
|
18
20
|
if (scrollBtn) {
|
|
19
21
|
const scrollToTop = () => {
|
|
20
22
|
window.scrollTo({
|
|
21
23
|
top: 0,
|
|
22
|
-
behavior:
|
|
24
|
+
behavior: 'smooth'
|
|
23
25
|
});
|
|
24
26
|
};
|
|
25
27
|
const toggleVisibility = () => {
|
|
26
28
|
if (window.scrollY > 300) {
|
|
27
|
-
scrollBtn.classList.add(
|
|
29
|
+
scrollBtn.classList.add('show-btn'); // We will style this class in SCSS
|
|
28
30
|
} else {
|
|
29
|
-
scrollBtn.classList.remove(
|
|
31
|
+
scrollBtn.classList.remove('show-btn');
|
|
30
32
|
}
|
|
31
33
|
};
|
|
32
|
-
scrollBtn.addEventListener(
|
|
33
|
-
window.addEventListener(
|
|
34
|
+
scrollBtn.addEventListener('click', scrollToTop);
|
|
35
|
+
window.addEventListener('scroll', toggleVisibility);
|
|
34
36
|
return () => {
|
|
35
|
-
scrollBtn.removeEventListener(
|
|
36
|
-
window.removeEventListener(
|
|
37
|
+
scrollBtn.removeEventListener('click', scrollToTop);
|
|
38
|
+
window.removeEventListener('scroll', toggleVisibility);
|
|
37
39
|
};
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
return () => {
|
|
42
|
+
document.documentElement.style.removeProperty('--primary-color');
|
|
43
|
+
};
|
|
44
|
+
}, [config?.COLORS?.primary, footerData]);
|
|
40
45
|
(0, _react.useEffect)(() => {
|
|
41
46
|
const fetchData = async () => {
|
|
42
47
|
if (!config?.MARKETING_SITE_BASE_URL) {
|
|
43
|
-
console.error(
|
|
48
|
+
console.error('No url found for discovery', config);
|
|
44
49
|
return;
|
|
45
50
|
}
|
|
46
51
|
try {
|
|
47
52
|
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/footer`,
|
|
48
53
|
// `https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/footer`,
|
|
49
54
|
{
|
|
50
|
-
credentials:
|
|
55
|
+
credentials: 'include'
|
|
51
56
|
});
|
|
52
57
|
if (!response.ok) {
|
|
53
58
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
54
59
|
}
|
|
55
60
|
const jsonData = await response.json();
|
|
56
61
|
const cleanHtml = _dompurify.default.sanitize(jsonData, {
|
|
57
|
-
ADD_ATTR: [
|
|
62
|
+
ADD_ATTR: ['target', 'class']
|
|
58
63
|
});
|
|
59
64
|
setFooterData(cleanHtml);
|
|
60
65
|
} catch (error) {
|
|
@@ -63,11 +68,19 @@ const FooterWidget = () => {
|
|
|
63
68
|
};
|
|
64
69
|
fetchData();
|
|
65
70
|
}, []);
|
|
66
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
72
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHelmet.Helmet, {
|
|
73
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("link", {
|
|
74
|
+
rel: "stylesheet",
|
|
75
|
+
href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css",
|
|
76
|
+
crossOrigin: "anonymous"
|
|
77
|
+
})
|
|
78
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("footer", {
|
|
79
|
+
className: "site-header",
|
|
80
|
+
dangerouslySetInnerHTML: {
|
|
81
|
+
__html: footerData
|
|
82
|
+
}
|
|
83
|
+
})]
|
|
71
84
|
});
|
|
72
85
|
};
|
|
73
86
|
var _default = exports.default = FooterWidget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_jsxRuntime","e","__esModule","default","FooterWidget","footerData","setFooterData","useState","config","getConfig","useEffect","
|
|
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","MARKETING_SITE_BASE_URL","console","error","response","fetch","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","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 if (!config?.MARKETING_SITE_BASE_URL) {\n console.error('No url found for discovery', config);\n return;\n }\n try {\n const response = await fetch(\n `${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/footer`,\n // `https://venus.discover.multitenantsdev.edly.io/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 console.error(error);\n }\n };\n\n fetchData();\n }, []);\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 dangerouslySetInnerHTML={{ __html: footerData }}\n />\n </>\n );\n};\n\nexport default FooterWidget;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,14 +13,21 @@ $font-size: 1em;
|
|
|
13
13
|
|
|
14
14
|
.site-footer {
|
|
15
15
|
background-color: $primary-color;
|
|
16
|
-
padding:
|
|
16
|
+
padding: 70px 15px;
|
|
17
17
|
color:$text-color ;
|
|
18
|
+
.container {
|
|
19
|
+
max-width: 1240px;
|
|
20
|
+
}
|
|
18
21
|
p {
|
|
19
22
|
font-size: $font-size;
|
|
20
23
|
}
|
|
21
24
|
h2, h3 {
|
|
22
25
|
margin-bottom: 20px;
|
|
23
26
|
color: white;
|
|
27
|
+
font-size: 18px;
|
|
28
|
+
line-height: 26px;
|
|
29
|
+
font-weight: 600;
|
|
30
|
+
|
|
24
31
|
}
|
|
25
32
|
}
|
|
26
33
|
|
|
@@ -42,9 +49,17 @@ $font-size: 1em;
|
|
|
42
49
|
padding: 0;
|
|
43
50
|
margin: 0;
|
|
44
51
|
list-style: none;
|
|
52
|
+
column-count: 2;
|
|
53
|
+
list-style: none;
|
|
54
|
+
padding: 0;
|
|
55
|
+
margin: 0;
|
|
56
|
+
display: block !important;
|
|
57
|
+
max-height: max-content !important;
|
|
45
58
|
li {
|
|
46
59
|
margin-bottom: 5px;
|
|
47
60
|
list-style: none;
|
|
61
|
+
font-size: 16px;
|
|
62
|
+
font-weight: 600;
|
|
48
63
|
a {
|
|
49
64
|
text-decoration: none;
|
|
50
65
|
color: $text-color;
|
|
@@ -58,9 +73,39 @@ $font-size: 1em;
|
|
|
58
73
|
list-style: none;
|
|
59
74
|
display: flex;
|
|
60
75
|
li {
|
|
61
|
-
margin: 0
|
|
62
|
-
|
|
76
|
+
margin: 0 16px 10px 0;
|
|
77
|
+
padding: 0;
|
|
78
|
+
width: 24px;
|
|
79
|
+
height: 24px;
|
|
80
|
+
a {
|
|
63
81
|
color: white;
|
|
82
|
+
position: relative;
|
|
83
|
+
width: 24px;
|
|
84
|
+
height: 24px;
|
|
85
|
+
display: inline-flex;
|
|
86
|
+
i, span {
|
|
87
|
+
display: none;
|
|
88
|
+
}
|
|
89
|
+
&:after {
|
|
90
|
+
content: "";
|
|
91
|
+
position: absolute;
|
|
92
|
+
top: 0;
|
|
93
|
+
left: 0;
|
|
94
|
+
width: 24px;
|
|
95
|
+
height: 24px;
|
|
96
|
+
display: block !important;
|
|
97
|
+
}
|
|
98
|
+
&.facebook {
|
|
99
|
+
&:after {
|
|
100
|
+
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M7 10v4h3v7h4v-7h3l1 -4h-4v-2a1 1 0 0 1 1 -1h3v-4h-3a5 5 0 0 0 -5 5v2h-3'/></svg>") no-repeat bottom;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
&.twitter {
|
|
104
|
+
&:after {
|
|
105
|
+
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M4 4l11.733 16h4.267l-11.733 -16z'/><path d='M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772'/></svg>") no-repeat bottom;
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
}
|
|
64
109
|
}
|
|
65
110
|
}
|
|
66
111
|
}
|
|
@@ -93,6 +138,6 @@ $font-size: 1em;
|
|
|
93
138
|
margin-bottom: 20px;
|
|
94
139
|
}
|
|
95
140
|
.site-footer {
|
|
96
|
-
padding: 30px
|
|
141
|
+
padding: 30px 20px;
|
|
97
142
|
}
|
|
98
143
|
}
|
|
@@ -7,69 +7,56 @@ exports.default = void 0;
|
|
|
7
7
|
var _frontendPlatform = require("@edx/frontend-platform");
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _dompurify = _interopRequireDefault(require("dompurify"));
|
|
10
|
-
var _reactHelmet = require("react-helmet");
|
|
11
10
|
require("./main.scss");
|
|
12
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
const HeaderWidget = () => {
|
|
15
|
-
const [headerData, setHeaderData] = (0, _react.useState)(
|
|
14
|
+
const [headerData, setHeaderData] = (0, _react.useState)('');
|
|
16
15
|
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
17
16
|
const WIDTH = 1230;
|
|
18
17
|
const [isMobile, setIsMobile] = (0, _react.useState)(window.innerWidth < WIDTH);
|
|
19
|
-
const [isLoading, setIsLoading] = (0, _react.useState)(true);
|
|
20
18
|
const config = (0, _frontendPlatform.getConfig)();
|
|
21
|
-
|
|
22
|
-
// useEffect(() => {
|
|
23
|
-
// if (isLoading) {
|
|
24
|
-
// document.body.classList.add("loader");
|
|
25
|
-
// }
|
|
26
|
-
// return () => {
|
|
27
|
-
// document.body.classList.remove("loader");
|
|
28
|
-
// };
|
|
29
|
-
// }, [isLoading]);
|
|
30
|
-
|
|
31
19
|
(0, _react.useEffect)(() => {
|
|
32
|
-
console.log(
|
|
33
|
-
document.documentElement.style.setProperty(
|
|
20
|
+
console.log('color: ', config.COLORS);
|
|
21
|
+
document.documentElement.style.setProperty('--primary-color', config?.COLORS?.primary || '#de2025');
|
|
34
22
|
const handleResize = () => {
|
|
35
23
|
setIsMobile(window.innerWidth < WIDTH);
|
|
36
24
|
if (window.innerWidth >= WIDTH) {
|
|
37
25
|
setIsOpen(false);
|
|
38
26
|
}
|
|
39
27
|
};
|
|
40
|
-
window.addEventListener(
|
|
28
|
+
window.addEventListener('resize', handleResize);
|
|
41
29
|
return () => {
|
|
42
|
-
window.removeEventListener(
|
|
30
|
+
window.removeEventListener('resize', handleResize);
|
|
31
|
+
document.documentElement.style.removeProperty('--primary-color');
|
|
43
32
|
};
|
|
44
|
-
}, []);
|
|
33
|
+
}, [config?.COLORS]);
|
|
45
34
|
(0, _react.useEffect)(() => {
|
|
46
35
|
const fetchData = async () => {
|
|
47
36
|
if (!config?.MARKETING_SITE_BASE_URL) {
|
|
48
|
-
console.error(
|
|
37
|
+
console.error('No url found for discovery', config);
|
|
49
38
|
return;
|
|
50
39
|
}
|
|
51
40
|
try {
|
|
52
41
|
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/nav-menu`,
|
|
53
42
|
// "https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/nav-menu",
|
|
54
43
|
{
|
|
55
|
-
credentials:
|
|
44
|
+
credentials: 'include'
|
|
56
45
|
});
|
|
57
46
|
if (!response.ok) {
|
|
58
47
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
59
48
|
}
|
|
60
49
|
const jsonData = await response.json();
|
|
61
|
-
if (typeof jsonData ===
|
|
50
|
+
if (typeof jsonData === 'object') {
|
|
62
51
|
const cleanHtml = _dompurify.default.sanitize(jsonData.primary, {
|
|
63
|
-
ADD_ATTR: [
|
|
52
|
+
ADD_ATTR: ['target', 'class']
|
|
64
53
|
});
|
|
65
54
|
setHeaderData(cleanHtml);
|
|
66
55
|
} else {
|
|
67
|
-
console.error(
|
|
56
|
+
console.error('Data object is not json');
|
|
68
57
|
}
|
|
69
58
|
} catch (error) {
|
|
70
59
|
console.error(error);
|
|
71
|
-
} finally {
|
|
72
|
-
setIsLoading(false);
|
|
73
60
|
}
|
|
74
61
|
};
|
|
75
62
|
fetchData();
|
|
@@ -77,45 +64,37 @@ const HeaderWidget = () => {
|
|
|
77
64
|
const toggleMenu = () => {
|
|
78
65
|
setIsOpen(!isOpen);
|
|
79
66
|
};
|
|
80
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
67
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
68
|
+
className: `shadow-sm ${isMobile ? 'header-frame' : ''}`,
|
|
69
|
+
children: [isMobile && /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
70
|
+
className: "menuOpner",
|
|
71
|
+
type: "button",
|
|
72
|
+
onClick: toggleMenu,
|
|
73
|
+
style: {
|
|
74
|
+
background: 'none',
|
|
75
|
+
border: 'none',
|
|
76
|
+
cursor: 'pointer',
|
|
77
|
+
fontSize: '24px'
|
|
78
|
+
},
|
|
79
|
+
children: isOpen ? '✖' : '☰'
|
|
87
80
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
88
|
-
className: `
|
|
89
|
-
children: [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
101
|
-
className:
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
106
|
-
width: "216",
|
|
107
|
-
height: "140",
|
|
108
|
-
src: config.LOGO_URL,
|
|
109
|
-
className: "custom-logo",
|
|
110
|
-
alt: "Venus",
|
|
111
|
-
decoding: "async"
|
|
112
|
-
})
|
|
113
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("header", {
|
|
114
|
-
className: "site-header",
|
|
115
|
-
dangerouslySetInnerHTML: {
|
|
116
|
-
__html: headerData
|
|
117
|
-
}
|
|
118
|
-
})]
|
|
81
|
+
className: `header-holder ${isMobile ? 'mobile-menu' : ''} ${isOpen ? '' : 'mobile-hide'}`,
|
|
82
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
83
|
+
href: "/",
|
|
84
|
+
className: "custom-logo-link",
|
|
85
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
86
|
+
width: "216",
|
|
87
|
+
height: "140",
|
|
88
|
+
src: config.LOGO_URL,
|
|
89
|
+
className: "custom-logo",
|
|
90
|
+
alt: "Venus",
|
|
91
|
+
decoding: "async"
|
|
92
|
+
})
|
|
93
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("header", {
|
|
94
|
+
className: "site-header",
|
|
95
|
+
dangerouslySetInnerHTML: {
|
|
96
|
+
__html: headerData
|
|
97
|
+
}
|
|
119
98
|
})]
|
|
120
99
|
})]
|
|
121
100
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","
|
|
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","console","log","COLORS","document","documentElement","style","setProperty","primary","handleResize","addEventListener","removeEventListener","removeProperty","fetchData","MARKETING_SITE_BASE_URL","error","response","fetch","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","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 console.log('color: ', config.COLORS);\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 if (!config?.MARKETING_SITE_BASE_URL) {\n console.error('No url found for discovery', config);\n return;\n }\n try {\n const response = await fetch(\n `${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/nav-menu`,\n // \"https://venus.discover.multitenantsdev.edly.io/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 } else {\n console.error('Data object is not json');\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n fetchData();\n }, []);\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 dangerouslySetInnerHTML={{ __html: headerData }}\n />\n </div>\n </div>\n );\n};\n\nexport default HeaderWidget;\n"],"mappings":"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","ignoreList":[]}
|