@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.
Files changed (33) hide show
  1. package/dist/EdlyLogistrationInfo/EdlyLogistrationInfo.js +54 -0
  2. package/dist/EdlyLogistrationInfo/EdlyLogistrationInfo.js.map +1 -0
  3. package/dist/EdlyLogistrationInfo/index.js +14 -0
  4. package/dist/EdlyLogistrationInfo/index.js.map +1 -0
  5. package/dist/EdlyLogistrationInfo/messages.js +26 -0
  6. package/dist/EdlyLogistrationInfo/messages.js.map +1 -0
  7. package/dist/EmailCheckWidget/EmailCheckWidget.js +130 -0
  8. package/dist/EmailCheckWidget/EmailCheckWidget.js.map +1 -0
  9. package/dist/EmailCheckWidget/data/actions.js +40 -0
  10. package/dist/EmailCheckWidget/data/actions.js.map +1 -0
  11. package/dist/EmailCheckWidget/data/constants.js +20 -0
  12. package/dist/EmailCheckWidget/data/constants.js.map +1 -0
  13. package/dist/EmailCheckWidget/data/index.js +56 -0
  14. package/dist/EmailCheckWidget/data/index.js.map +1 -0
  15. package/dist/EmailCheckWidget/data/reducers.js +62 -0
  16. package/dist/EmailCheckWidget/data/reducers.js.map +1 -0
  17. package/dist/EmailCheckWidget/data/sagas.js +31 -0
  18. package/dist/EmailCheckWidget/data/sagas.js.map +1 -0
  19. package/dist/EmailCheckWidget/data/service.js +29 -0
  20. package/dist/EmailCheckWidget/data/service.js.map +1 -0
  21. package/dist/EmailCheckWidget/index.js +37 -0
  22. package/dist/EmailCheckWidget/index.js.map +1 -0
  23. package/dist/EmailCheckWidget/messages.js +36 -0
  24. package/dist/EmailCheckWidget/messages.js.map +1 -0
  25. package/dist/FooterWidget/index.js +31 -18
  26. package/dist/FooterWidget/index.js.map +1 -1
  27. package/dist/FooterWidget/main.scss +49 -4
  28. package/dist/HeaderWidget/index.js +42 -63
  29. package/dist/HeaderWidget/index.js.map +1 -1
  30. package/dist/HeaderWidget/main.scss +190 -89
  31. package/dist/index.js +38 -0
  32. package/dist/index.js.map +1 -1
  33. 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
- const scrollBtn = document.getElementById("scrollToTop");
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: "smooth"
24
+ behavior: 'smooth'
23
25
  });
24
26
  };
25
27
  const toggleVisibility = () => {
26
28
  if (window.scrollY > 300) {
27
- scrollBtn.classList.add("show-btn"); // We will style this class in SCSS
29
+ scrollBtn.classList.add('show-btn'); // We will style this class in SCSS
28
30
  } else {
29
- scrollBtn.classList.remove("show-btn");
31
+ scrollBtn.classList.remove('show-btn');
30
32
  }
31
33
  };
32
- scrollBtn.addEventListener("click", scrollToTop);
33
- window.addEventListener("scroll", toggleVisibility);
34
+ scrollBtn.addEventListener('click', scrollToTop);
35
+ window.addEventListener('scroll', toggleVisibility);
34
36
  return () => {
35
- scrollBtn.removeEventListener("click", scrollToTop);
36
- window.removeEventListener("scroll", toggleVisibility);
37
+ scrollBtn.removeEventListener('click', scrollToTop);
38
+ window.removeEventListener('scroll', toggleVisibility);
37
39
  };
38
40
  }
39
- }, [footerData]);
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("No url found for discovery", config);
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: "include"
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: ["target", "class"]
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.jsx)("footer", {
67
- className: "site-header",
68
- dangerouslySetInnerHTML: {
69
- __html: footerData
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","scrollBtn","document","getElementById","scrollToTop","window","scrollTo","top","behavior","toggleVisibility","scrollY","classList","add","remove","addEventListener","removeEventListener","fetchData","MARKETING_SITE_BASE_URL","console","error","response","fetch","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","jsx","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 \"./main.scss\";\n\nconst FooterWidget = () => {\n const [footerData, setFooterData] = useState(\"\");\n const config = getConfig();\n\n useEffect(() => {\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 }, [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 <footer\n className=\"site-header\"\n dangerouslySetInnerHTML={{ __html: footerData }}\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;AACAA,OAAA;AAAqB,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,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;IACd,MAAMC,SAAS,GAAGC,QAAQ,CAACC,cAAc,CAAC,aAAa,CAAC;IACxD,IAAIF,SAAS,EAAE;MACb,MAAMG,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;UACxBT,SAAS,CAACU,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACvC,CAAC,MAAM;UACLX,SAAS,CAACU,SAAS,CAACE,MAAM,CAAC,UAAU,CAAC;QACxC;MACF,CAAC;MAEDZ,SAAS,CAACa,gBAAgB,CAAC,OAAO,EAAEV,WAAW,CAAC;MAChDC,MAAM,CAACS,gBAAgB,CAAC,QAAQ,EAAEL,gBAAgB,CAAC;MAEnD,OAAO,MAAM;QACXR,SAAS,CAACc,mBAAmB,CAAC,OAAO,EAAEX,WAAW,CAAC;QACnDC,MAAM,CAACU,mBAAmB,CAAC,QAAQ,EAAEN,gBAAgB,CAAC;MACxD,CAAC;IACH;EACF,CAAC,EAAE,CAACd,UAAU,CAAC,CAAC;EAEhB,IAAAK,gBAAS,EAAC,MAAM;IACd,MAAMgB,SAAS,GAAG,MAAAA,CAAA,KAAY;MAC5B,IAAI,CAAClB,MAAM,EAAEmB,uBAAuB,EAAE;QACpCC,OAAO,CAACC,KAAK,CAAC,4BAA4B,EAAErB,MAAM,CAAC;QACnD;MACF;MACA,IAAI;QACF,MAAMsB,QAAQ,GAAG,MAAMC,KAAK,CAC1B,GAAGvB,MAAM,CAACmB,uBAAuB,gCAAgC;QACjE;QACA;UAAEK,WAAW,EAAE;QAAU,CAC3B,CAAC;QACD,IAAI,CAACF,QAAQ,CAACG,EAAE,EAAE;UAChB,MAAM,IAAIC,KAAK,CAAC,uBAAuBJ,QAAQ,CAACK,MAAM,EAAE,CAAC;QAC3D;QAEA,MAAMC,QAAQ,GAAG,MAAMN,QAAQ,CAACO,IAAI,CAAC,CAAC;QACtC,MAAMC,SAAS,GAAGC,kBAAS,CAACC,QAAQ,CAACJ,QAAQ,EAAE;UAC7CK,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO;QAC9B,CAAC,CAAC;QACFnC,aAAa,CAACgC,SAAS,CAAC;MAC1B,CAAC,CAAC,OAAOT,KAAK,EAAE;QACdD,OAAO,CAACC,KAAK,CAACA,KAAK,CAAC;MACtB;IACF,CAAC;IAEDH,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE,IAAA1B,WAAA,CAAA0C,GAAA;IACEC,SAAS,EAAC,aAAa;IACvBC,uBAAuB,EAAE;MAAEC,MAAM,EAAExC;IAAW;EAAE,CACjD,CAAC;AAEN,CAAC;AAAC,IAAAyC,QAAA,GAAAC,OAAA,CAAA5C,OAAA,GAEaC,YAAY","ignoreList":[]}
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: 40px 15px;
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 10px 10px 0;
62
- a{
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 0;
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("color: ", config.COLORS);
33
- document.documentElement.style.setProperty("--primary-color", config?.COLORS?.primary || "#de2025");
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("resize", handleResize);
28
+ window.addEventListener('resize', handleResize);
41
29
  return () => {
42
- window.removeEventListener("resize", handleResize);
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("No url found for discovery", config);
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: "include"
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 === "object") {
50
+ if (typeof jsonData === 'object') {
62
51
  const cleanHtml = _dompurify.default.sanitize(jsonData.primary, {
63
- ADD_ATTR: ["target", "class"]
52
+ ADD_ATTR: ['target', 'class']
64
53
  });
65
54
  setHeaderData(cleanHtml);
66
55
  } else {
67
- console.error("Data object is not json");
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)(_jsxRuntime.Fragment, {
81
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHelmet.Helmet, {
82
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("link", {
83
- rel: "stylesheet",
84
- href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css",
85
- crossOrigin: "anonymous"
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: `shadow-lg ${isMobile ? "header-frame" : ""}`,
89
- children: [isMobile && /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
90
- className: "menuOpner",
91
- type: "button",
92
- onClick: toggleMenu,
93
- style: {
94
- background: "none",
95
- border: "none",
96
- cursor: "pointer",
97
- fontSize: "24px"
98
- },
99
- children: isOpen ? "✖" : "☰"
100
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
101
- className: `header-holder ${isMobile ? "mobile-menu" : ""} ${isOpen ? "" : "mobile-hide"}`,
102
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
103
- href: "/",
104
- className: "custom-logo-link",
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","_reactHelmet","_jsxRuntime","e","__esModule","default","HeaderWidget","headerData","setHeaderData","useState","isOpen","setIsOpen","WIDTH","isMobile","setIsMobile","window","innerWidth","isLoading","setIsLoading","config","getConfig","useEffect","console","log","COLORS","document","documentElement","style","setProperty","primary","handleResize","addEventListener","removeEventListener","fetchData","MARKETING_SITE_BASE_URL","error","response","fetch","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","toggleMenu","jsxs","Fragment","children","jsx","Helmet","rel","href","crossOrigin","className","type","onClick","background","border","cursor","fontSize","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 { Helmet } from \"react-helmet\";\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 [isLoading, setIsLoading] = useState(true);\n const config = getConfig();\n\n // useEffect(() => {\n // if (isLoading) {\n // document.body.classList.add(\"loader\");\n // }\n // return () => {\n // document.body.classList.remove(\"loader\");\n // };\n // }, [isLoading]);\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 };\n }, []);\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 } finally {\n setIsLoading(false);\n }\n };\n\n fetchData();\n }, []);\n\n const toggleMenu = () => {\n setIsOpen(!isOpen);\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 <div className={`shadow-lg ${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};\n\nexport default HeaderWidget;\n"],"mappings":"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","ignoreList":[]}
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":[]}