@edx/frontend-app-subscription-learner-dashboard 1.61.0 → 1.63.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/tracking/constants.js +16 -0
- package/dist/tracking/constants.js.map +1 -1
- package/dist/widgets/LearnerDashboardFooter/Footer.js +8 -3
- package/dist/widgets/LearnerDashboardFooter/Footer.js.map +1 -1
- package/dist/widgets/LearnerDashboardFooter/LinkList.d.ts +2 -0
- package/dist/widgets/LearnerDashboardFooter/LinkList.js +7 -2
- package/dist/widgets/LearnerDashboardFooter/LinkList.js.map +1 -1
- package/dist/widgets/LearnerDashboardFooter/SocialLinks.js +6 -13
- package/dist/widgets/LearnerDashboardFooter/SocialLinks.js.map +1 -1
- package/dist/widgets/LearnerDashboardHeader/SiteLogo.js +6 -1
- package/dist/widgets/LearnerDashboardHeader/SiteLogo.js.map +1 -1
- package/dist/widgets/LearnerDashboardHeader/app.js +12 -7
- package/dist/widgets/LearnerDashboardHeader/app.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,8 @@ export const categories = StrictDict({
|
|
|
5
5
|
searchButton: 'search_button',
|
|
6
6
|
credit: 'credit',
|
|
7
7
|
filter: 'filter',
|
|
8
|
+
footer: 'footer',
|
|
9
|
+
header: 'header',
|
|
8
10
|
});
|
|
9
11
|
export const events = StrictDict({
|
|
10
12
|
courseCardActionClicked: 'courseCardActionClicked',
|
|
@@ -42,7 +44,21 @@ export const eventNames = StrictDict({
|
|
|
42
44
|
purchaseCredit: 'edx.subscription.dashboard.clicked_purchase_credit',
|
|
43
45
|
filterClicked: 'course-dashboard.filter.clicked',
|
|
44
46
|
filterOptionSelected: 'course-dashboard.filter_option.selected',
|
|
47
|
+
footerLogoClicked: 'edx.bi.footer.logo.clicked',
|
|
48
|
+
footerSocialLinkClicked: 'edx.bi.footer.social_link.clicked',
|
|
49
|
+
footerEdxLinksClicked: 'edx.bi.footer.edx_links.clicked',
|
|
50
|
+
footerConnectLinksClicked: 'edx.bi.footer.connect_links.clicked',
|
|
51
|
+
footerLegalLinksClicked: 'edx.bi.footer.legal_links.clicked',
|
|
45
52
|
programCardActionClicked: 'edx.subscription.dashboard.program_card_action.clicked',
|
|
53
|
+
headerLogoClicked: 'edx.bi.header.logo.clicked',
|
|
54
|
+
headerProgramsLinkClicked: 'edx.bi.header.programs_link.clicked',
|
|
55
|
+
headerDiscoverLinkClicked: 'edx.bi.header.discover_link.clicked',
|
|
56
|
+
headerCoursesLinkClicked: 'edx.bi.header.courses_link.clicked',
|
|
57
|
+
headerSupportLinkClicked: 'edx.bi.header.support_link.clicked',
|
|
58
|
+
headerOrderHistoryLinkClicked: 'edx.bi.header.order_history_link.clicked',
|
|
59
|
+
headerDashboardLinkClicked: 'edx.bi.header.dashboard_link.clicked',
|
|
60
|
+
headerManageSubscriptionClicked: 'edx.bi.header.manage_subscription.clicked',
|
|
61
|
+
headerUserSignOut: 'edx.bi.header.menu.sign_out.clicked',
|
|
46
62
|
});
|
|
47
63
|
export const linkNames = StrictDict({
|
|
48
64
|
learnerHomeNavExplore: 'learner_home_nav_explore',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tracking/constants.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;IAC/B,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,4BAA4B,EAAE,8BAA8B;IAC5D,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,qBAAqB;IAC1C,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,yBAAyB,EAAE,2BAA2B;IACtD,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;CACrD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,uBAAuB,EAAE,uDAAuD;IAChF,kBAAkB,EAAE,iDAAiD;IACrE,kBAAkB,EAAE,iDAAiD;IACrE,4BAA4B,EAAE,4DAA4D;IAC1F,oBAAoB,EAAE,oDAAoD;IAC1E,qBAAqB,EAAE,qDAAqD;IAC5E,YAAY,EAAE,0BAA0B;IACxC,sBAAsB,EAAE,oDAAoD;IAC5E,mBAAmB,EAAE,2BAA2B;IAChD,UAAU,EAAE,8BAA8B;IAC1C,aAAa,EAAE,iCAAiC;IAChD,YAAY,EAAE,gCAAgC;IAC9C,cAAc,EAAE,8BAA8B;IAC9C,yBAAyB,EAAE,0CAA0C;IACrE,kBAAkB,EAAE,wDAAwD;IAC5E,cAAc,EAAE,oDAAoD;IACpE,aAAa,EAAE,iCAAiC;IAChD,oBAAoB,EAAE,yCAAyC;IAC/D,wBAAwB,EAAE,wDAAwD;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tracking/constants.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;IAC/B,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,4BAA4B,EAAE,8BAA8B;IAC5D,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,qBAAqB;IAC1C,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,yBAAyB,EAAE,2BAA2B;IACtD,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;CACrD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,uBAAuB,EAAE,uDAAuD;IAChF,kBAAkB,EAAE,iDAAiD;IACrE,kBAAkB,EAAE,iDAAiD;IACrE,4BAA4B,EAAE,4DAA4D;IAC1F,oBAAoB,EAAE,oDAAoD;IAC1E,qBAAqB,EAAE,qDAAqD;IAC5E,YAAY,EAAE,0BAA0B;IACxC,sBAAsB,EAAE,oDAAoD;IAC5E,mBAAmB,EAAE,2BAA2B;IAChD,UAAU,EAAE,8BAA8B;IAC1C,aAAa,EAAE,iCAAiC;IAChD,YAAY,EAAE,gCAAgC;IAC9C,cAAc,EAAE,8BAA8B;IAC9C,yBAAyB,EAAE,0CAA0C;IACrE,kBAAkB,EAAE,wDAAwD;IAC5E,cAAc,EAAE,oDAAoD;IACpE,aAAa,EAAE,iCAAiC;IAChD,oBAAoB,EAAE,yCAAyC;IAC/D,iBAAiB,EAAE,4BAA4B;IAC/C,uBAAuB,EAAE,mCAAmC;IAC5D,qBAAqB,EAAE,iCAAiC;IACxD,yBAAyB,EAAE,qCAAqC;IAChE,uBAAuB,EAAE,mCAAmC;IAC5D,wBAAwB,EAAE,wDAAwD;IAClF,iBAAiB,EAAE,4BAA4B;IAC/C,yBAAyB,EAAE,qCAAqC;IAChE,yBAAyB,EAAE,qCAAqC;IAChE,wBAAwB,EAAE,oCAAoC;IAC9D,wBAAwB,EAAE,oCAAoC;IAC9D,6BAA6B,EAAE,0CAA0C;IACzE,0BAA0B,EAAE,sCAAsC;IAClE,+BAA+B,EAAE,2CAA2C;IAC5E,iBAAiB,EAAE,qCAAqC;CACzD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,qBAAqB,EAAE,0BAA0B;IACjD,6BAA6B,EAAE,mCAAmC;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC;AAEtC,eAAe,UAAU,CAAC","sourcesContent":["import { StrictDict } from '../utils';\n\nexport const categories = StrictDict({\n dashboard: 'dashboard',\n userEngagement: 'user-engagement',\n searchButton: 'search_button',\n credit: 'credit',\n filter: 'filter',\n footer: 'footer',\n header: 'header',\n});\n\nexport const events = StrictDict({\n courseCardActionClicked: 'courseCardActionClicked',\n courseImageClicked: 'courseImageClicked',\n courseTitleClicked: 'courseTitleClicked',\n courseOptionsDropdownClicked: 'courseOptionsDropdownClicked',\n shareClicked: 'shareClicked',\n userSettingsChanged: 'userSettingsChanged',\n newSession: 'newSession',\n switchSession: 'switchSession',\n leaveSession: 'leaveSession',\n unenrollReason: 'unenrollReason',\n entitlementUnenrollReason: 'entitlementUnenrollReason',\n noCoursesViewClicked: 'noCoursesViewClicked',\n noProgramsViewClicked: 'noProgramsViewClicked',\n courseListPageSelected: 'courseListPageSelected',\n programCardActionClicked: 'programCardActionClicked',\n});\n\nexport const eventNames = StrictDict({\n courseCardActionClicked: 'edx.subscription.dashboard.course_card_action.clicked',\n courseImageClicked: 'edx.subscription.dashboard.course_image.clicked',\n courseTitleClicked: 'edx.subscription.dashboard.course_title.clicked',\n courseOptionsDropdownClicked: 'edx.subscription.dashboard.course_options_dropdown.clicked',\n noCoursesViewClicked: 'edx.subscription.dashboard.no_courses_view.clicked',\n noProgramsViewClicked: 'edx.subscription.dashboard.no_programs_view.clicked',\n shareClicked: 'edx.course.share_clicked',\n courseListPageSelected: 'edx.subscription.learner.course.list.page.selected',\n userSettingsChanged: 'edx.user.settings.changed',\n newSession: 'course-dashboard.new-session',\n switchSession: 'course-dashboard.switch-session',\n leaveSession: 'course-dashboard.leave-session',\n unenrollReason: 'unenrollment_reason.selected',\n entitlementUnenrollReason: 'entitlement_unenrollment_reason.selected',\n findCoursesClicked: 'edx.subscription.dashboard.find_courses_button.clicked',\n purchaseCredit: 'edx.subscription.dashboard.clicked_purchase_credit',\n filterClicked: 'course-dashboard.filter.clicked',\n filterOptionSelected: 'course-dashboard.filter_option.selected',\n footerLogoClicked: 'edx.bi.footer.logo.clicked',\n footerSocialLinkClicked: 'edx.bi.footer.social_link.clicked',\n footerEdxLinksClicked: 'edx.bi.footer.edx_links.clicked',\n footerConnectLinksClicked: 'edx.bi.footer.connect_links.clicked',\n footerLegalLinksClicked: 'edx.bi.footer.legal_links.clicked',\n programCardActionClicked: 'edx.subscription.dashboard.program_card_action.clicked',\n headerLogoClicked: 'edx.bi.header.logo.clicked',\n headerProgramsLinkClicked: 'edx.bi.header.programs_link.clicked',\n headerDiscoverLinkClicked: 'edx.bi.header.discover_link.clicked',\n headerCoursesLinkClicked: 'edx.bi.header.courses_link.clicked',\n headerSupportLinkClicked: 'edx.bi.header.support_link.clicked',\n headerOrderHistoryLinkClicked: 'edx.bi.header.order_history_link.clicked',\n headerDashboardLinkClicked: 'edx.bi.header.dashboard_link.clicked',\n headerManageSubscriptionClicked: 'edx.bi.header.manage_subscription.clicked',\n headerUserSignOut: 'edx.bi.header.menu.sign_out.clicked',\n});\n\nexport const linkNames = StrictDict({\n learnerHomeNavExplore: 'learner_home_nav_explore',\n learnerHomeNavDropdownExplore: 'learner_home_nav_dropdown_explore',\n});\n\nexport const appName = 'learner-home';\n\nexport default eventNames;\n"]}
|
|
@@ -6,6 +6,8 @@ import SocialIconLinks from './SocialLinks';
|
|
|
6
6
|
import footerMessages from './messages';
|
|
7
7
|
import LinkList from './LinkList';
|
|
8
8
|
import { useEffect, useState } from 'react';
|
|
9
|
+
import { createEventTracker } from '../../data/services/segment/utils';
|
|
10
|
+
import { categories, eventNames } from '../../tracking/constants';
|
|
9
11
|
const MARKETING_BASE_URL = 'https://edx.org';
|
|
10
12
|
export default function Footer() {
|
|
11
13
|
const intl = useIntl();
|
|
@@ -13,7 +15,10 @@ export default function Footer() {
|
|
|
13
15
|
useEffect(() => {
|
|
14
16
|
setUtmSource(window.location.hostname);
|
|
15
17
|
}, []);
|
|
16
|
-
|
|
18
|
+
const handleFooterLinkClick = (href, eventName) => {
|
|
19
|
+
createEventTracker(eventName, { category: categories.footer, label: href })();
|
|
20
|
+
};
|
|
21
|
+
return (_jsxs("div", { className: "footer py-5.5 bg-primary-500", children: [_jsxs("div", { className: "d-flex flex-column flex-lg-row gap-4 align-items-start justify-content-between mb-4.5", children: [_jsx("a", { href: "https://edx.org", "aria-label": intl.formatMessage(footerMessages['footer.logo.ariaLabel']), onClick: () => handleFooterLinkClick('https://edx.org', eventNames.footerLogoClicked), children: _jsx("img", { className: "footer__logo-main", src: footerLogo, alt: intl.formatMessage(footerMessages['footer.logo.altText']) }) }), _jsx(SocialIconLinks, {})] }), _jsxs("div", { className: "d-flex flex-column flex-md-row gap-4", children: [_jsx("div", { className: "d-flex flex-column flex-fill", children: _jsx(LinkList, { className: "area-2", title: "edX", onLinkClick: handleFooterLinkClick, trackingEventName: eventNames.footerEdxLinksClicked, links: [
|
|
17
22
|
{
|
|
18
23
|
href: `${MARKETING_BASE_URL}/about-us`,
|
|
19
24
|
title: intl.formatMessage(footerMessages['footer.edxLinks.about']),
|
|
@@ -46,7 +51,7 @@ export default function Footer() {
|
|
|
46
51
|
href: `https://press.edx.org/`,
|
|
47
52
|
title: intl.formatMessage(footerMessages['footer.edxLinks.news']),
|
|
48
53
|
},
|
|
49
|
-
] }) }), _jsx("div", { className: "d-flex flex-column flex-fill", children: _jsx(LinkList, { className: "area-4", title: intl.formatMessage(footerMessages['footer.connectLinks.heading']), links: [
|
|
54
|
+
] }) }), _jsx("div", { className: "d-flex flex-column flex-fill", children: _jsx(LinkList, { className: "area-4", title: intl.formatMessage(footerMessages['footer.connectLinks.heading']), onLinkClick: handleFooterLinkClick, trackingEventName: eventNames.footerConnectLinksClicked, links: [
|
|
50
55
|
{
|
|
51
56
|
href: 'https://www.edx.org/resources',
|
|
52
57
|
title: intl.formatMessage(footerMessages['footer.connectLinks.blog']),
|
|
@@ -68,7 +73,7 @@ export default function Footer() {
|
|
|
68
73
|
title: intl.formatMessage(footerMessages['footer.connectLinks.mediaKit']),
|
|
69
74
|
hidden: intl.locale === 'es',
|
|
70
75
|
},
|
|
71
|
-
] }) }), _jsx("div", { className: "d-flex flex-column flex-fill", children: _jsx(LinkList, { className: "area-3", title: intl.formatMessage(footerMessages['footer.legalLinks.heading']), links: [
|
|
76
|
+
] }) }), _jsx("div", { className: "d-flex flex-column flex-fill", children: _jsx(LinkList, { className: "area-3", title: intl.formatMessage(footerMessages['footer.legalLinks.heading']), onLinkClick: handleFooterLinkClick, trackingEventName: eventNames.footerLegalLinksClicked, links: [
|
|
72
77
|
{
|
|
73
78
|
href: `${MARKETING_BASE_URL}/edx-terms-service`,
|
|
74
79
|
title: intl.formatMessage(footerMessages['footer.legalLinks.termsOfService']),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardFooter/Footer.tsx"],"names":[],"mappings":"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","sourcesContent":["import './index.scss';\nimport footerLogo from '../../assets/footerLogo.svg';\n\nimport { useIntl } from '@openedx/frontend-base';\nimport SocialIconLinks from './SocialLinks';\nimport footerMessages from './messages';\nimport LinkList from './LinkList';\nimport { useEffect, useState } from 'react';\n\nconst MARKETING_BASE_URL = 'https://edx.org';\n\nexport default function Footer() {\n const intl = useIntl();\n const [utmSource, setUtmSource] = useState('edx.org');\n\n useEffect(() => {\n setUtmSource(window.location.hostname);\n }, []);\n\n return (\n <div className=\"footer py-5.5 bg-primary-500\">\n <div className=\"d-flex flex-column flex-lg-row gap-4 align-items-start justify-content-between mb-4.5\">\n <a\n href=\"https://edx.org\"\n aria-label={intl.formatMessage(\n footerMessages['footer.logo.ariaLabel'],\n )}\n >\n <img\n className=\"footer__logo-main\"\n src={footerLogo}\n alt={intl.formatMessage(footerMessages['footer.logo.altText'])}\n />\n </a>\n <SocialIconLinks />\n </div>\n <div className=\"d-flex flex-column flex-md-row gap-4\">\n <div className=\"d-flex flex-column flex-fill\">\n <LinkList\n className=\"area-2\"\n title=\"edX\"\n links={[\n {\n href: `${MARKETING_BASE_URL}/about-us`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.about'],\n ),\n },\n {\n href: `https://business.edx.org/?utm_campaign=edX.org+Referral&utm_medium=Footer&utm_source=${utmSource}`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.business'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/affiliate-program`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.affiliates'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: 'http://open.edx.org',\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.openEdx'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: 'https://www.edx.org/learn/devops',\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.advisory'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `${MARKETING_BASE_URL}/careers`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.careers'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `https://press.edx.org/`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.news'],\n ),\n },\n ]}\n />\n </div>\n <div className=\"d-flex flex-column flex-fill\">\n <LinkList\n className=\"area-4\"\n title={intl.formatMessage(\n footerMessages['footer.connectLinks.heading'],\n )}\n links={[\n {\n href: 'https://www.edx.org/resources',\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.blog'],\n ),\n },\n {\n href: 'https://courses.edx.org/support/contact_us',\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.contact'],\n ),\n },\n {\n href: 'https://support.edx.org',\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.help'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/policy/security`,\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.security'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/media-kit`,\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.mediaKit'],\n ),\n hidden: intl.locale === 'es',\n },\n ]}\n />\n </div>\n <div className=\"d-flex flex-column flex-fill\">\n <LinkList\n className=\"area-3\"\n title={intl.formatMessage(\n footerMessages['footer.legalLinks.heading'],\n )}\n links={[\n {\n href: `${MARKETING_BASE_URL}/edx-terms-service`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.termsOfService'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/edx-privacy-policy`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.privacyPolicy'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/edx-privacy-policy/cookies`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.cookiePolicy'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/accessibility`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.a11yPolicy'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/trademarks`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.trademarkPolicy'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `${MARKETING_BASE_URL}/modern-slavery-statement`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.modernSlavery'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/sitemap`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.sitemap'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `#`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.privacyChoices'],\n ),\n },\n ]}\n />\n </div>\n <div className=\"d-none d-md-flex flex-column flex-fill\">\n {/* language selector not implemented */}\n </div>\n </div>\n\n <div className=\"mt-4.5 d-flex align-items-start\">\n <div className=\"d-flex flex-column align-items-start\">\n <p className=\"x-small text-white\">\n {intl.formatMessage(footerMessages['footer.copyRight'])}\n </p>\n <p className=\"x-small text-white\">\n {intl.formatMessage(footerMessages['footer.copyRightCn'])}\n </p>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardFooter/Footer.tsx"],"names":[],"mappings":"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","sourcesContent":["import './index.scss';\nimport footerLogo from '../../assets/footerLogo.svg';\n\nimport { useIntl } from '@openedx/frontend-base';\nimport SocialIconLinks from './SocialLinks';\nimport footerMessages from './messages';\nimport LinkList from './LinkList';\nimport { useEffect, useState } from 'react';\nimport { createEventTracker } from '../../data/services/segment/utils';\nimport { categories, eventNames } from '../../tracking/constants';\n\nconst MARKETING_BASE_URL = 'https://edx.org';\n\nexport default function Footer() {\n const intl = useIntl();\n const [utmSource, setUtmSource] = useState('edx.org');\n\n useEffect(() => {\n setUtmSource(window.location.hostname);\n }, []);\n\n const handleFooterLinkClick = (href, eventName) => {\n createEventTracker(eventName, { category: categories.footer, label: href })();\n };\n\n return (\n <div className=\"footer py-5.5 bg-primary-500\">\n <div className=\"d-flex flex-column flex-lg-row gap-4 align-items-start justify-content-between mb-4.5\">\n <a\n href=\"https://edx.org\"\n aria-label={intl.formatMessage(\n footerMessages['footer.logo.ariaLabel'],\n )}\n onClick={() => handleFooterLinkClick('https://edx.org', eventNames.footerLogoClicked)}\n >\n <img\n className=\"footer__logo-main\"\n src={footerLogo}\n alt={intl.formatMessage(footerMessages['footer.logo.altText'])}\n />\n </a>\n <SocialIconLinks />\n </div>\n <div className=\"d-flex flex-column flex-md-row gap-4\">\n <div className=\"d-flex flex-column flex-fill\">\n <LinkList\n className=\"area-2\"\n title=\"edX\"\n onLinkClick={handleFooterLinkClick}\n trackingEventName={eventNames.footerEdxLinksClicked}\n links={[\n {\n href: `${MARKETING_BASE_URL}/about-us`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.about'],\n ),\n },\n {\n href: `https://business.edx.org/?utm_campaign=edX.org+Referral&utm_medium=Footer&utm_source=${utmSource}`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.business'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/affiliate-program`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.affiliates'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: 'http://open.edx.org',\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.openEdx'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: 'https://www.edx.org/learn/devops',\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.advisory'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `${MARKETING_BASE_URL}/careers`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.careers'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `https://press.edx.org/`,\n title: intl.formatMessage(\n footerMessages['footer.edxLinks.news'],\n ),\n },\n ]}\n />\n </div>\n <div className=\"d-flex flex-column flex-fill\">\n <LinkList\n className=\"area-4\"\n title={intl.formatMessage(\n footerMessages['footer.connectLinks.heading'],\n )}\n onLinkClick={handleFooterLinkClick}\n trackingEventName={eventNames.footerConnectLinksClicked}\n links={[\n {\n href: 'https://www.edx.org/resources',\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.blog'],\n ),\n },\n {\n href: 'https://courses.edx.org/support/contact_us',\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.contact'],\n ),\n },\n {\n href: 'https://support.edx.org',\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.help'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/policy/security`,\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.security'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/media-kit`,\n title: intl.formatMessage(\n footerMessages['footer.connectLinks.mediaKit'],\n ),\n hidden: intl.locale === 'es',\n },\n ]}\n />\n </div>\n <div className=\"d-flex flex-column flex-fill\">\n <LinkList\n className=\"area-3\"\n title={intl.formatMessage(\n footerMessages['footer.legalLinks.heading'],\n )}\n onLinkClick={handleFooterLinkClick}\n trackingEventName={eventNames.footerLegalLinksClicked}\n links={[\n {\n href: `${MARKETING_BASE_URL}/edx-terms-service`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.termsOfService'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/edx-privacy-policy`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.privacyPolicy'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/edx-privacy-policy/cookies`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.cookiePolicy'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/accessibility`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.a11yPolicy'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/trademarks`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.trademarkPolicy'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `${MARKETING_BASE_URL}/modern-slavery-statement`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.modernSlavery'],\n ),\n },\n {\n href: `${MARKETING_BASE_URL}/sitemap`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.sitemap'],\n ),\n hidden: intl.locale === 'es',\n },\n {\n href: `#`,\n title: intl.formatMessage(\n footerMessages['footer.legalLinks.privacyChoices'],\n ),\n },\n ]}\n />\n </div>\n <div className=\"d-none d-md-flex flex-column flex-fill\">\n {/* language selector not implemented */}\n </div>\n </div>\n\n <div className=\"mt-4.5 d-flex align-items-start\">\n <div className=\"d-flex flex-column align-items-start\">\n <p className=\"x-small text-white\">\n {intl.formatMessage(footerMessages['footer.copyRight'])}\n </p>\n <p className=\"x-small text-white\">\n {intl.formatMessage(footerMessages['footer.copyRightCn'])}\n </p>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -14,6 +14,8 @@ export interface LinkItem {
|
|
|
14
14
|
export interface LinkListProps extends HTMLAttributes<HTMLDivElement> {
|
|
15
15
|
title: string;
|
|
16
16
|
links?: LinkItem[];
|
|
17
|
+
onLinkClick?: (href: string, eventName: string) => void;
|
|
18
|
+
trackingEventName?: string;
|
|
17
19
|
}
|
|
18
20
|
declare const LinkList: React.FC<LinkListProps>;
|
|
19
21
|
export default LinkList;
|
|
@@ -12,7 +12,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { Button } from '@openedx/paragon';
|
|
14
14
|
const LinkList = (_a) => {
|
|
15
|
-
var { title: listTitle, links = [] } = _a, props = __rest(_a, ["title", "links"]);
|
|
15
|
+
var { title: listTitle, links = [], onLinkClick, trackingEventName } = _a, props = __rest(_a, ["title", "links", "onLinkClick", "trackingEventName"]);
|
|
16
16
|
return (_jsxs("div", Object.assign({ className: "d-flex flex-column flex-fill" }, props, { children: [_jsx("h2", { className: "footer__section-title text-white mb-2 small", children: listTitle }), _jsx("ul", { className: "list-unstyled p-0 m-0 footer__links", children: links.map((_a) => {
|
|
17
17
|
var { title, href, hidden } = _a, linkProps = __rest(_a, ["title", "href", "hidden"]);
|
|
18
18
|
if (hidden) {
|
|
@@ -21,7 +21,12 @@ const LinkList = (_a) => {
|
|
|
21
21
|
if (!href) {
|
|
22
22
|
return (_jsx("li", { children: _jsx(Button, Object.assign({}, linkProps, { children: title })) }, title));
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
const handleClick = () => {
|
|
25
|
+
if (onLinkClick && trackingEventName) {
|
|
26
|
+
onLinkClick(href, trackingEventName);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return (_jsx("li", { children: _jsx("a", { className: "text-white x-small", href: href, onClick: handleClick, children: title }) }, `${href}${title}`));
|
|
25
30
|
}) })] })));
|
|
26
31
|
};
|
|
27
32
|
export default LinkList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkList.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardFooter/LinkList.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkList.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardFooter/LinkList.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAsB1C,MAAM,QAAQ,GAA4B,CAAC,EAM1C,EAAE,EAAE;QANsC,EACzC,KAAK,EAAE,SAAS,EAChB,KAAK,GAAG,EAAE,EACV,WAAW,EACX,iBAAiB,OAElB,EADI,KAAK,cALiC,sDAM1C,CADS;IACJ,OAAA,CACJ,6BAAK,SAAS,EAAC,8BAA8B,IAAK,KAAK,eACrD,aAAI,SAAS,EAAC,6CAA6C,YAAE,SAAS,GAAM,EAC5E,aAAI,SAAS,EAAC,qCAAqC,YAChD,KAAK,CAAC,GAAG,CAAC,CAAC,EAAqC,EAAE,EAAE;wBAAzC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,OAAgB,EAAX,SAAS,cAAnC,2BAAqC,CAAF;oBAC7C,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,CACL,uBACE,KAAC,MAAM,oBAAK,SAAS,cAAG,KAAK,IAAU,IADhC,KAAK,CAET,CACN,CAAC;oBACJ,CAAC;oBAED,MAAM,WAAW,GAAG,GAAG,EAAE;wBACvB,IAAI,WAAW,IAAI,iBAAiB,EAAE,CAAC;4BACrC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;wBACvC,CAAC;oBACH,CAAC,CAAC;oBAEF,OAAO,CACL,uBACE,YACE,SAAS,EAAC,oBAAoB,EAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,YAEnB,KAAK,GACJ,IAPG,GAAG,IAAI,GAAG,KAAK,EAAE,CAQrB,CACN,CAAC;gBACJ,CAAC,CAAC,GACC,KACD,CACP,CAAA;CAAA,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport { Button } from '@openedx/paragon';\n\ntype ButtonComponentProps = React.ComponentProps<typeof Button>;\n\nexport interface LinkItem {\n title: string,\n href?: string,\n hidden?: boolean,\n onClick?: ButtonComponentProps['onClick'],\n variant?: ButtonComponentProps['variant'],\n size?: ButtonComponentProps['size'],\n id?: ButtonComponentProps['id'],\n className?: ButtonComponentProps['className'],\n}\n\nexport interface LinkListProps extends HTMLAttributes<HTMLDivElement> {\n title: string,\n links?: LinkItem[],\n onLinkClick?: (href: string, eventName: string) => void,\n trackingEventName?: string,\n}\n\nconst LinkList: React.FC<LinkListProps> = ({\n title: listTitle,\n links = [],\n onLinkClick,\n trackingEventName,\n ...props\n}) => (\n <div className=\"d-flex flex-column flex-fill\" {...props}>\n <h2 className=\"footer__section-title text-white mb-2 small\">{listTitle}</h2>\n <ul className=\"list-unstyled p-0 m-0 footer__links\">\n {links.map(({ title, href, hidden, ...linkProps }) => {\n if (hidden) {\n return null;\n }\n\n if (!href) {\n return (\n <li key={title}>\n <Button {...linkProps}>{title}</Button>\n </li>\n );\n }\n\n const handleClick = () => {\n if (onLinkClick && trackingEventName) {\n onLinkClick(href, trackingEventName);\n }\n };\n\n return (\n <li key={`${href}${title}`}>\n <a\n className=\"text-white x-small\"\n href={href}\n onClick={handleClick}\n >\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n </div>\n);\n\nexport default LinkList;\n"]}
|
|
@@ -4,10 +4,8 @@ import facebook from '../../assets/facebook.svg';
|
|
|
4
4
|
import twitter from '../../assets/twitter.svg';
|
|
5
5
|
import linkedin from '../../assets/linkedin.svg';
|
|
6
6
|
import reddit from '../../assets/reddit.svg';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
FOOTER_LINK: 'edx.bi.footer.link',
|
|
10
|
-
};
|
|
7
|
+
import { createEventTracker } from '../../data/services/segment/utils';
|
|
8
|
+
import { categories, eventNames } from '../../tracking/constants';
|
|
11
9
|
const socialIconLinks = [
|
|
12
10
|
{
|
|
13
11
|
title: 'Facebook',
|
|
@@ -31,15 +29,10 @@ const socialIconLinks = [
|
|
|
31
29
|
},
|
|
32
30
|
];
|
|
33
31
|
export default function SocialIconLinks() {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
const properties = {
|
|
38
|
-
category: 'outbound_link',
|
|
39
|
-
label,
|
|
40
|
-
};
|
|
41
|
-
sendTrackEvent(eventName, properties);
|
|
32
|
+
const handleSocialLinkClick = (event) => {
|
|
33
|
+
const platform = event.currentTarget.getAttribute('title');
|
|
34
|
+
createEventTracker(eventNames.footerSocialLinkClicked, { category: categories.footer, label: platform })();
|
|
42
35
|
};
|
|
43
|
-
return (_jsx("ul", { className: "mb-0 d-flex gap-3 list-unstyled", children: socialIconLinks.map(({ title, url, icon }) => (_jsx("li", { children: _jsx("a", { href: url, title: title, "aria-label": title, target: "_blank", rel: "noopener noreferrer", onClick:
|
|
36
|
+
return (_jsx("ul", { className: "mb-0 d-flex gap-3 list-unstyled", children: socialIconLinks.map(({ title, url, icon }) => (_jsx("li", { children: _jsx("a", { href: url, title: title, "aria-label": title, target: "_blank", rel: "noopener noreferrer", onClick: handleSocialLinkClick, className: "text-decoration-none text-white", children: _jsx("img", { src: icon, alt: title, "aria-hidden": "true" }) }) }, url))) }));
|
|
44
37
|
}
|
|
45
38
|
//# sourceMappingURL=SocialLinks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocialLinks.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardFooter/SocialLinks.tsx"],"names":[],"mappings":";AACA,OAAO,cAAc,CAAC;AAEtB,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,OAAO,MAAM,0BAA0B,CAAC;AAC/C,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SocialLinks.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardFooter/SocialLinks.tsx"],"names":[],"mappings":";AACA,OAAO,cAAc,CAAC;AAEtB,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,OAAO,MAAM,0BAA0B,CAAC;AAC/C,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAQlE,MAAM,eAAe,GAAqB;IACxC;QACE,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,oCAAoC;QACzC,IAAI,EAAE,QAAQ;KACf;IACD;QACE,KAAK,EAAE,sBAAsB;QAC7B,GAAG,EAAE,+BAA+B;QACpC,IAAI,EAAE,OAAO;KACd;IACD;QACE,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,sCAAsC;QAC3C,IAAI,EAAE,QAAQ;KACf;IACD;QACE,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,8BAA8B;QACnC,IAAI,EAAE,MAAM;KACb;CACF,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,eAAe;IACrC,MAAM,qBAAqB,GAAG,CAC5B,KAA0C,EAC1C,EAAE;QACF,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3D,kBAAkB,CAChB,UAAU,CAAC,uBAAuB,EAClC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CACjD,EAAE,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CACL,aAAI,SAAS,EAAC,iCAAiC,YAC5C,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC7C,uBACE,YACE,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAC,iCAAiC,YAE3C,cAAK,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,iBAAc,MAAM,GAAG,GAC/C,IAXG,GAAG,CAYP,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport './index.scss';\n\nimport facebook from '../../assets/facebook.svg';\nimport twitter from '../../assets/twitter.svg';\nimport linkedin from '../../assets/linkedin.svg';\nimport reddit from '../../assets/reddit.svg';\nimport { createEventTracker } from '../../data/services/segment/utils';\nimport { categories, eventNames } from '../../tracking/constants';\n\ninterface SocialIconLink {\n title: string,\n url: string,\n icon: string,\n}\n\nconst socialIconLinks: SocialIconLink[] = [\n {\n title: 'Facebook',\n url: 'https://www.facebook.com/EdxOnline',\n icon: facebook,\n },\n {\n title: 'X (formerly Twitter)',\n url: 'https://twitter.com/edXOnline',\n icon: twitter,\n },\n {\n title: 'LinkedIn',\n url: 'https://www.linkedin.com/company/edx',\n icon: linkedin,\n },\n {\n title: 'Reddit',\n url: 'https://www.reddit.com/r/edx',\n icon: reddit,\n },\n];\n\nexport default function SocialIconLinks() {\n const handleSocialLinkClick = (\n event: React.MouseEvent<HTMLAnchorElement>,\n ) => {\n const platform = event.currentTarget.getAttribute('title');\n createEventTracker(\n eventNames.footerSocialLinkClicked,\n { category: categories.footer, label: platform }\n )();\n };\n\n return (\n <ul className=\"mb-0 d-flex gap-3 list-unstyled\">\n {socialIconLinks.map(({ title, url, icon }) => (\n <li key={url}>\n <a\n href={url}\n title={title}\n aria-label={title}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={handleSocialLinkClick}\n className=\"text-decoration-none text-white\"\n >\n <img src={icon} alt={title} aria-hidden=\"true\" />\n </a>\n </li>\n ))}\n </ul>\n );\n}\n"]}
|
|
@@ -4,10 +4,15 @@ import { getSiteConfig } from '@openedx/frontend-base';
|
|
|
4
4
|
import EdxDesktop from '../../assets/Unlimited-desktop.svg';
|
|
5
5
|
import EdxTablet from '../../assets/Unlimited-tablet.svg';
|
|
6
6
|
import EdxMobile from '../../assets/Unlimited-mobile.svg';
|
|
7
|
+
import { createEventTracker } from '../../data/services/segment/utils';
|
|
8
|
+
import eventNames, { categories } from '../../tracking/constants';
|
|
7
9
|
export default function SiteLogo({ destinationUrl }) {
|
|
8
10
|
var _a;
|
|
9
11
|
const siteConfig = getSiteConfig();
|
|
10
12
|
const dest = (_a = destinationUrl !== null && destinationUrl !== void 0 ? destinationUrl : siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.baseUrl) !== null && _a !== void 0 ? _a : '/';
|
|
11
|
-
|
|
13
|
+
const handleLogoClick = () => {
|
|
14
|
+
createEventTracker(eventNames.headerLogoClicked, { category: categories.header, label: dest })();
|
|
15
|
+
};
|
|
16
|
+
return (_jsx(Hyperlink, { destination: dest, className: "p-0", onClick: handleLogoClick, children: _jsxs("picture", { className: "site-logo", children: [_jsx("source", { media: "(min-width: 1024px)", srcSet: EdxDesktop }), _jsx("source", { media: "(min-width: 768px)", srcSet: EdxTablet }), _jsx(Image, { src: EdxMobile, style: { maxHeight: '2rem' } })] }) }));
|
|
12
17
|
}
|
|
13
18
|
//# sourceMappingURL=SiteLogo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiteLogo.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardHeader/SiteLogo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,SAAS,MAAM,mCAAmC,CAAC;AAC1D,OAAO,SAAS,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"SiteLogo.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardHeader/SiteLogo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,SAAS,MAAM,mCAAmC,CAAC;AAC1D,OAAO,SAAS,MAAM,mCAAmC,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAMjE,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,cAAc,EAAiB;;IAChE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,MAAA,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,mCAAI,GAAG,CAAC;IAE1D,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,kBAAkB,CAChB,UAAU,CAAC,iBAAiB,EAC5B,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAC7C,EAAE,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,SAAS,IAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,eAAe,YACpE,mBAAS,SAAS,EAAC,WAAW,aAE5B,iBAAQ,KAAK,EAAC,qBAAqB,EAAC,MAAM,EAAE,UAAU,GAAI,EAC1D,iBAAQ,KAAK,EAAC,oBAAoB,EAAC,MAAM,EAAE,SAAS,GAAI,EAExD,KAAC,KAAK,IAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAI,IAC/C,GACA,CACb,CAAC;AACJ,CAAC","sourcesContent":["import { Hyperlink, Image } from '@openedx/paragon';\nimport { getSiteConfig } from '@openedx/frontend-base';\nimport EdxDesktop from '../../assets/Unlimited-desktop.svg';\nimport EdxTablet from '../../assets/Unlimited-tablet.svg';\nimport EdxMobile from '../../assets/Unlimited-mobile.svg';\nimport { createEventTracker } from '@src/data/services/segment/utils';\nimport eventNames, { categories } from '@src/tracking/constants';\n\ninterface SiteLogoProps {\n destinationUrl?: string,\n}\n\nexport default function SiteLogo({ destinationUrl }: SiteLogoProps) {\n const siteConfig = getSiteConfig();\n const dest = destinationUrl ?? siteConfig?.baseUrl ?? '/';\n\n const handleLogoClick = () => {\n createEventTracker(\n eventNames.headerLogoClicked,\n { category: categories.header, label: dest }\n )();\n };\n\n return (\n <Hyperlink destination={dest} className=\"p-0\" onClick={handleLogoClick}>\n <picture className=\"site-logo\">\n {/* Desktop: adjust min-width values to your breakpoints */}\n <source media=\"(min-width: 1024px)\" srcSet={EdxDesktop} />\n <source media=\"(min-width: 768px)\" srcSet={EdxTablet} />\n {/* fallback/mobile */}\n <Image src={EdxMobile} style={{ maxHeight: '2rem' }} />\n </picture>\n </Hyperlink>\n );\n}\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { LinkMenuItem, WidgetOperationTypes, getAppConfig, } from '@openedx/frontend-base';
|
|
3
3
|
import { appId, subscriptionDashboardUrlPath, subscriptionSignoutRole, SUBSCRIPTION_ROUTE_PREFIXES, } from '../../constants';
|
|
4
|
+
import { createEventTracker } from '../../data/services/segment/utils';
|
|
5
|
+
import { categories, eventNames } from '../../tracking/constants';
|
|
4
6
|
import ConfirmEmailBanner from './ConfirmEmailBanner';
|
|
5
7
|
import ProgramsLinkMenuItem from './ProgramsLinkMenuItem';
|
|
6
8
|
import SupportLinkMenuItem from './SupportLinkMenuItem';
|
|
@@ -8,6 +10,9 @@ import OrderHistoryLinkMenuItem from './OrderHistoryLinkMenuItem';
|
|
|
8
10
|
import messages from '../../messages';
|
|
9
11
|
import CustomAvatarMenu from './CustomAvatarMenu';
|
|
10
12
|
import SiteLogo from './SiteLogo';
|
|
13
|
+
const trackHeaderLinkClick = (url, eventName) => {
|
|
14
|
+
createEventTracker(eventName, { category: categories.header, label: url })();
|
|
15
|
+
};
|
|
11
16
|
const isSubscriptionContext = () => {
|
|
12
17
|
var _a;
|
|
13
18
|
if (typeof window === 'undefined') {
|
|
@@ -33,7 +38,7 @@ const app = {
|
|
|
33
38
|
slotId: 'org.openedx.frontend.slot.header.primaryLinks.v1',
|
|
34
39
|
id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkPrograms.v1',
|
|
35
40
|
op: WidgetOperationTypes.APPEND,
|
|
36
|
-
element: _jsx(ProgramsLinkMenuItem, { variant: "navLink" }),
|
|
41
|
+
element: (_jsx("div", { onClick: () => trackHeaderLinkClick('programs', eventNames.headerProgramsLinkClicked), children: _jsx(ProgramsLinkMenuItem, { variant: "navLink" }) })),
|
|
37
42
|
condition: {
|
|
38
43
|
callback: () => getAppConfig(appId).ENABLE_PROGRAMS === true
|
|
39
44
|
&& isSubscriptionContext(),
|
|
@@ -43,7 +48,7 @@ const app = {
|
|
|
43
48
|
slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',
|
|
44
49
|
id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkSupport.v1',
|
|
45
50
|
op: WidgetOperationTypes.APPEND,
|
|
46
|
-
element: _jsx(SupportLinkMenuItem, { variant: "dropdownItem" }),
|
|
51
|
+
element: (_jsx("div", { onClick: () => trackHeaderLinkClick('support', eventNames.headerSupportLinkClicked), children: _jsx(SupportLinkMenuItem, { variant: "dropdownItem" }) })),
|
|
47
52
|
condition: {
|
|
48
53
|
callback: () => Boolean(getAppConfig(appId).SUPPORT_URL) && isSubscriptionContext(),
|
|
49
54
|
},
|
|
@@ -53,7 +58,7 @@ const app = {
|
|
|
53
58
|
id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkOrderHistory.v1',
|
|
54
59
|
op: WidgetOperationTypes.INSERT_BEFORE,
|
|
55
60
|
relatedId: 'org.openedx.frontend.widget.header.desktopAuthenticatedMenuLogout.v1',
|
|
56
|
-
element: _jsx(OrderHistoryLinkMenuItem, { variant: "navLink" }),
|
|
61
|
+
element: (_jsx("div", { onClick: () => trackHeaderLinkClick('order-history', eventNames.headerOrderHistoryLinkClicked), children: _jsx(OrderHistoryLinkMenuItem, { variant: "navLink" }) })),
|
|
57
62
|
condition: {
|
|
58
63
|
callback: () => Boolean(getAppConfig(appId).ORDER_HISTORY_URL)
|
|
59
64
|
&& isSubscriptionContext(),
|
|
@@ -63,7 +68,7 @@ const app = {
|
|
|
63
68
|
slotId: 'org.openedx.frontend.slot.header.desktopRight.v1',
|
|
64
69
|
id: 'org.edx.frontend.widget.learnerHome.headerLinkDashboard.v1',
|
|
65
70
|
op: WidgetOperationTypes.PREPEND,
|
|
66
|
-
element: (_jsx("div", { className: "px-3 dashboard-header-navlink", children: _jsx(LinkMenuItem, { label: messages['header.user.menu.dashboard'].defaultMessage, url: subscriptionDashboardUrlPath, variant: "hyperlink" }) })),
|
|
71
|
+
element: (_jsx("div", { className: "px-3 dashboard-header-navlink", onClick: () => trackHeaderLinkClick(subscriptionDashboardUrlPath, eventNames.headerDashboardLinkClicked), children: _jsx(LinkMenuItem, { label: messages['header.user.menu.dashboard'].defaultMessage, url: subscriptionDashboardUrlPath, variant: "hyperlink" }) })),
|
|
67
72
|
condition: {
|
|
68
73
|
callback: () => isSubscriptionContext(),
|
|
69
74
|
},
|
|
@@ -72,7 +77,7 @@ const app = {
|
|
|
72
77
|
slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',
|
|
73
78
|
id: 'org.edx.frontend.widget.header.user.menu.manageSubscription.v1',
|
|
74
79
|
op: WidgetOperationTypes.APPEND,
|
|
75
|
-
element: (_jsx(LinkMenuItem, { label: messages['header.user.menu.manageSubscription'].defaultMessage, url: "/manage-subscription", variant: "dropdownItem" })),
|
|
80
|
+
element: (_jsx("div", { onClick: () => trackHeaderLinkClick('/manage-subscription', eventNames.headerManageSubscriptionClicked), children: _jsx(LinkMenuItem, { label: messages['header.user.menu.manageSubscription'].defaultMessage, url: "/manage-subscription", variant: "dropdownItem" }) })),
|
|
76
81
|
condition: {
|
|
77
82
|
callback: () => isSubscriptionContext(),
|
|
78
83
|
},
|
|
@@ -81,13 +86,13 @@ const app = {
|
|
|
81
86
|
slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',
|
|
82
87
|
id: 'org.edx.frontend.widget.learnerDashboard.headerAuthenticatedMenuSignOut.v1',
|
|
83
88
|
op: WidgetOperationTypes.APPEND,
|
|
84
|
-
element: (_jsx(LinkMenuItem, { label: messages['header.user.menu.signOut'].defaultMessage, role: subscriptionSignoutRole, variant: "dropdownItem" })),
|
|
89
|
+
element: (_jsx("div", { onClick: () => trackHeaderLinkClick('', eventNames.headerUserSignOut), children: _jsx(LinkMenuItem, { label: messages['header.user.menu.signOut'].defaultMessage, role: subscriptionSignoutRole, variant: "dropdownItem" }) })),
|
|
85
90
|
},
|
|
86
91
|
{
|
|
87
92
|
slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',
|
|
88
93
|
id: 'org.edx.frontend.widget.learnerDashboard.dashboard.v1',
|
|
89
94
|
op: WidgetOperationTypes.PREPEND,
|
|
90
|
-
element: (_jsx(LinkMenuItem, { label: messages['header.user.menu.dashboard'].defaultMessage, url: subscriptionDashboardUrlPath, variant: "dropdownItem" })),
|
|
95
|
+
element: (_jsx("div", { onClick: () => trackHeaderLinkClick(subscriptionDashboardUrlPath, eventNames.headerDashboardLinkClicked), children: _jsx(LinkMenuItem, { label: messages['header.user.menu.dashboard'].defaultMessage, url: subscriptionDashboardUrlPath, variant: "dropdownItem" }) })),
|
|
91
96
|
condition: {
|
|
92
97
|
callback: () => isSubscriptionContext(),
|
|
93
98
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardHeader/app.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n App,\n LinkMenuItem,\n WidgetOperationTypes,\n getAppConfig,\n} from '@openedx/frontend-base';\n\nimport {\n appId,\n subscriptionDashboardUrlPath,\n subscriptionSignoutRole,\n SUBSCRIPTION_ROUTE_PREFIXES,\n} from '../../constants';\n\nimport ConfirmEmailBanner from './ConfirmEmailBanner';\nimport ProgramsLinkMenuItem from './ProgramsLinkMenuItem';\nimport SupportLinkMenuItem from './SupportLinkMenuItem';\nimport OrderHistoryLinkMenuItem from './OrderHistoryLinkMenuItem';\nimport messages from '@src/messages';\nimport CustomAvatarMenu from './CustomAvatarMenu';\nimport SiteLogo from './SiteLogo';\n\nconst isSubscriptionContext = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n const pathname = window.location?.pathname || '';\n\n // Add/remove prefixes based on your actual subscription routes\n return SUBSCRIPTION_ROUTE_PREFIXES.some((prefix) =>\n pathname.startsWith(prefix),\n );\n};\n\nconst app: App = {\n appId: 'org.openedx.frontend.app.learnerDashboard.header',\n slots: [\n {\n slotId: 'org.openedx.frontend.slot.header.main.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerConfirmEmail.v1',\n op: WidgetOperationTypes.PREPEND,\n component: ConfirmEmailBanner,\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.primaryLinks.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkPrograms.v1',\n op: WidgetOperationTypes.APPEND,\n element: <ProgramsLinkMenuItem variant=\"navLink\" />,\n condition: {\n callback: () =>\n getAppConfig(appId).ENABLE_PROGRAMS === true\n && isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkSupport.v1',\n op: WidgetOperationTypes.APPEND,\n element: <SupportLinkMenuItem variant=\"dropdownItem\" />,\n condition: {\n callback: () =>\n Boolean(getAppConfig(appId).SUPPORT_URL) && isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkOrderHistory.v1',\n op: WidgetOperationTypes.INSERT_BEFORE,\n relatedId:\n 'org.openedx.frontend.widget.header.desktopAuthenticatedMenuLogout.v1',\n element: <OrderHistoryLinkMenuItem variant=\"navLink\" />,\n condition: {\n callback: () =>\n Boolean(getAppConfig(appId).ORDER_HISTORY_URL)\n && isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.desktopRight.v1',\n id: 'org.edx.frontend.widget.learnerHome.headerLinkDashboard.v1',\n op: WidgetOperationTypes.PREPEND,\n element: (\n <div className=\"px-3 dashboard-header-navlink\">\n <LinkMenuItem\n label={messages['header.user.menu.dashboard'].defaultMessage}\n url={subscriptionDashboardUrlPath}\n variant=\"hyperlink\"\n />\n </div>\n ),\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.edx.frontend.widget.header.user.menu.manageSubscription.v1',\n op: WidgetOperationTypes.APPEND,\n element: (\n <LinkMenuItem\n label={messages['header.user.menu.manageSubscription'].defaultMessage}\n url=\"/manage-subscription\"\n variant=\"dropdownItem\"\n />\n ),\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.edx.frontend.widget.learnerDashboard.headerAuthenticatedMenuSignOut.v1',\n op: WidgetOperationTypes.APPEND,\n element: (\n <LinkMenuItem\n label={messages['header.user.menu.signOut'].defaultMessage}\n role={subscriptionSignoutRole}\n variant=\"dropdownItem\"\n />\n ),\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.edx.frontend.widget.learnerDashboard.dashboard.v1',\n op: WidgetOperationTypes.PREPEND,\n element: (\n <LinkMenuItem\n label={messages['header.user.menu.dashboard'].defaultMessage}\n url={subscriptionDashboardUrlPath}\n variant=\"dropdownItem\"\n />\n ),\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.desktopRight.v1',\n id: 'org.openedx.frontend.widget.header.desktopAuthenticatedMenu.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId:\n 'org.openedx.frontend.widget.header.desktopAuthenticatedMenu.v1',\n element: <CustomAvatarMenu />,\n condition: {\n authenticated: true,\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.mobileRight.v1',\n id: 'org.example.site.widget.header.mobileAuthenticatedMenu.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId:\n 'org.openedx.frontend.widget.header.mobileAuthenticatedMenu.v1',\n element: <CustomAvatarMenu />,\n condition: {\n authenticated: true,\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.desktopLeft.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.header.desktopLogo.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId: 'org.openedx.frontend.widget.header.desktopLogo.v1',\n element: <SiteLogo />,\n },\n {\n slotId: 'org.openedx.frontend.slot.header.mobileLeft.v1',\n id: 'org.example.site.widget.header.mobileLogoLeft.v1',\n op: WidgetOperationTypes.APPEND,\n element: <SiteLogo />,\n },\n {\n slotId: 'org.openedx.frontend.slot.header.mobileCenter.v1',\n id: 'org.example.site.widget.header.mobileLogoCenterReplace.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId: 'org.openedx.frontend.widget.header.mobileLogo.v1',\n element: <></>,\n },\n // {\n // // TO-DO : Resume your last course will be implemented seprately in a different ticket.(Ticket: SUBS-818)\n // // https://2u-internal.atlassian.net/browse/SUBS-818\n // slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n // id: 'org.openedx.frontend.widget.learnerDashboard.headerAuthenticatedMenuLastCourse.v1',\n // op: WidgetOperationTypes.PREPEND,\n // element: (\n // <LinkMenuItem\n // label={messages['header.user.menu.lastCourse'].defaultMessage}\n // url=\"/last-course\"\n // variant=\"dropdownItem\"\n // />\n // )\n // },\n ],\n};\n\nexport default app;\n"]}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardHeader/app.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n App,\n LinkMenuItem,\n WidgetOperationTypes,\n getAppConfig,\n} from '@openedx/frontend-base';\n\nimport {\n appId,\n subscriptionDashboardUrlPath,\n subscriptionSignoutRole,\n SUBSCRIPTION_ROUTE_PREFIXES,\n} from '../../constants';\n\nimport { createEventTracker } from '../../data/services/segment/utils';\nimport { categories, eventNames } from '../../tracking/constants';\n\nimport ConfirmEmailBanner from './ConfirmEmailBanner';\nimport ProgramsLinkMenuItem from './ProgramsLinkMenuItem';\nimport SupportLinkMenuItem from './SupportLinkMenuItem';\nimport OrderHistoryLinkMenuItem from './OrderHistoryLinkMenuItem';\nimport messages from '@src/messages';\nimport CustomAvatarMenu from './CustomAvatarMenu';\nimport SiteLogo from './SiteLogo';\n\nconst trackHeaderLinkClick = (url: string, eventName: string) => {\n createEventTracker(\n eventName,\n { category: categories.header, label: url }\n )();\n};\n\nconst isSubscriptionContext = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n const pathname = window.location?.pathname || '';\n\n // Add/remove prefixes based on your actual subscription routes\n return SUBSCRIPTION_ROUTE_PREFIXES.some((prefix) =>\n pathname.startsWith(prefix),\n );\n};\n\nconst app: App = {\n appId: 'org.openedx.frontend.app.learnerDashboard.header',\n slots: [\n {\n slotId: 'org.openedx.frontend.slot.header.main.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerConfirmEmail.v1',\n op: WidgetOperationTypes.PREPEND,\n component: ConfirmEmailBanner,\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.primaryLinks.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkPrograms.v1',\n op: WidgetOperationTypes.APPEND,\n element: (\n <div onClick={() => trackHeaderLinkClick('programs', eventNames.headerProgramsLinkClicked)}>\n <ProgramsLinkMenuItem variant=\"navLink\" />\n </div>\n ),\n condition: {\n callback: () =>\n getAppConfig(appId).ENABLE_PROGRAMS === true\n && isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkSupport.v1',\n op: WidgetOperationTypes.APPEND,\n element: (\n <div onClick={() => trackHeaderLinkClick('support', eventNames.headerSupportLinkClicked)}>\n <SupportLinkMenuItem variant=\"dropdownItem\" />\n </div>\n ),\n condition: {\n callback: () =>\n Boolean(getAppConfig(appId).SUPPORT_URL) && isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.headerLinkOrderHistory.v1',\n op: WidgetOperationTypes.INSERT_BEFORE,\n relatedId:\n 'org.openedx.frontend.widget.header.desktopAuthenticatedMenuLogout.v1',\n element: (\n <div onClick={() => trackHeaderLinkClick('order-history', eventNames.headerOrderHistoryLinkClicked)}>\n <OrderHistoryLinkMenuItem variant=\"navLink\" />\n </div>\n ),\n condition: {\n callback: () =>\n Boolean(getAppConfig(appId).ORDER_HISTORY_URL)\n && isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.desktopRight.v1',\n id: 'org.edx.frontend.widget.learnerHome.headerLinkDashboard.v1',\n op: WidgetOperationTypes.PREPEND,\n element: (\n <div\n className=\"px-3 dashboard-header-navlink\"\n onClick={() => trackHeaderLinkClick(subscriptionDashboardUrlPath, eventNames.headerDashboardLinkClicked)}\n >\n <LinkMenuItem\n label={messages['header.user.menu.dashboard'].defaultMessage}\n url={subscriptionDashboardUrlPath}\n variant=\"hyperlink\"\n />\n </div>\n ),\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.edx.frontend.widget.header.user.menu.manageSubscription.v1',\n op: WidgetOperationTypes.APPEND,\n element: (\n <div onClick={() => trackHeaderLinkClick('/manage-subscription', eventNames.headerManageSubscriptionClicked)}>\n <LinkMenuItem\n label={messages['header.user.menu.manageSubscription'].defaultMessage}\n url=\"/manage-subscription\"\n variant=\"dropdownItem\"\n />\n </div>\n ),\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.edx.frontend.widget.learnerDashboard.headerAuthenticatedMenuSignOut.v1',\n op: WidgetOperationTypes.APPEND,\n element: (\n <div onClick={() => trackHeaderLinkClick('', eventNames.headerUserSignOut)}>\n <LinkMenuItem\n label={messages['header.user.menu.signOut'].defaultMessage}\n role={subscriptionSignoutRole}\n variant=\"dropdownItem\"\n />\n </div>\n ),\n },\n {\n slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n id: 'org.edx.frontend.widget.learnerDashboard.dashboard.v1',\n op: WidgetOperationTypes.PREPEND,\n element: (\n <div onClick={() => trackHeaderLinkClick(subscriptionDashboardUrlPath, eventNames.headerDashboardLinkClicked)}>\n <LinkMenuItem\n label={messages['header.user.menu.dashboard'].defaultMessage}\n url={subscriptionDashboardUrlPath}\n variant=\"dropdownItem\"\n />\n </div>\n ),\n condition: {\n callback: () => isSubscriptionContext(),\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.desktopRight.v1',\n id: 'org.openedx.frontend.widget.header.desktopAuthenticatedMenu.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId:\n 'org.openedx.frontend.widget.header.desktopAuthenticatedMenu.v1',\n element: <CustomAvatarMenu />,\n condition: {\n authenticated: true,\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.mobileRight.v1',\n id: 'org.example.site.widget.header.mobileAuthenticatedMenu.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId:\n 'org.openedx.frontend.widget.header.mobileAuthenticatedMenu.v1',\n element: <CustomAvatarMenu />,\n condition: {\n authenticated: true,\n },\n },\n {\n slotId: 'org.openedx.frontend.slot.header.desktopLeft.v1',\n id: 'org.openedx.frontend.widget.learnerDashboard.header.desktopLogo.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId: 'org.openedx.frontend.widget.header.desktopLogo.v1',\n element: <SiteLogo />,\n },\n {\n slotId: 'org.openedx.frontend.slot.header.mobileLeft.v1',\n id: 'org.example.site.widget.header.mobileLogoLeft.v1',\n op: WidgetOperationTypes.APPEND,\n element: <SiteLogo />,\n },\n {\n slotId: 'org.openedx.frontend.slot.header.mobileCenter.v1',\n id: 'org.example.site.widget.header.mobileLogoCenterReplace.v1',\n op: WidgetOperationTypes.REPLACE,\n relatedId: 'org.openedx.frontend.widget.header.mobileLogo.v1',\n element: <></>,\n },\n // {\n // // TO-DO : Resume your last course will be implemented seprately in a different ticket.(Ticket: SUBS-818)\n // // https://2u-internal.atlassian.net/browse/SUBS-818\n // slotId: 'org.openedx.frontend.slot.header.authenticatedMenu.v1',\n // id: 'org.openedx.frontend.widget.learnerDashboard.headerAuthenticatedMenuLastCourse.v1',\n // op: WidgetOperationTypes.PREPEND,\n // element: (\n // <LinkMenuItem\n // label={messages['header.user.menu.lastCourse'].defaultMessage}\n // url=\"/last-course\"\n // variant=\"dropdownItem\"\n // />\n // )\n // },\n ],\n};\n\nexport default app;\n"]}
|