Skip to content

Commit ab7f277

Browse files
authored
feat: adding Career link to user menu (#375)
* feat: adding `Career` link to user menu * feat: fixing lint issues * feat: adding `Career` item to Learning Header * fix: ensuring menu item is for non-enterprise only * feat: adding 'new' alert * fix: standardizing the text description to rest of file * fix: addressing lint errors * fix: correct string concat format * feat: utilize Badge paragon component * fix: correcting formatting of code * fix: using shared component, per review request * fix: remove non-breaking space chars
1 parent bfaf34d commit ab7f277

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-1
lines changed

src/Header.jsx

+13
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Responsive from 'react-responsive';
33
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
44
import { sendTrackEvent } from '@edx/frontend-platform/analytics';
55
import { AppContext } from '@edx/frontend-platform/react';
6+
import { Badge } from '@edx/paragon';
67
import {
78
APP_CONFIG_INITIALIZED,
89
ensureConfig,
@@ -91,8 +92,20 @@ const Header = ({ intl }) => {
9192
baseUserMenuDashboardLinks = [dashboardMenuItem];
9293
}
9394

95+
const careerItemContent = <>{intl.formatMessage(messages['header.user.menu.career'])}<Badge className="px-2 mx-2" variant="warning">{intl.formatMessage(messages['header.user.menu.newAlert'])}</Badge></>;
9496
let userMenu = authenticatedUser === null ? [] : [
9597
...baseUserMenuDashboardLinks,
98+
{
99+
type: 'item',
100+
href: 'https://careers.edx.org/',
101+
content: careerItemContent,
102+
onClick: () => {
103+
sendTrackEvent(
104+
'edx.bi.user.menu.career.clicked',
105+
{ category: 'header', label: 'header' },
106+
);
107+
},
108+
},
96109
{
97110
type: 'item',
98111
href: `${config.ACCOUNT_PROFILE_URL}/u/${authenticatedUser.username}`,

src/Header.messages.jsx

+10
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ const messages = defineMessages({
2121
defaultMessage: 'Schools & Partners',
2222
description: 'Link to the schools and partners landing page',
2323
},
24+
'header.user.menu.career': {
25+
id: 'header.user.menu.career',
26+
defaultMessage: 'Career',
27+
description: 'Link to the Career Resource Center',
28+
},
29+
'header.user.menu.newAlert': {
30+
id: 'header.user.menu.newAlert',
31+
defaultMessage: 'New',
32+
description: 'The text announcing that an item is New',
33+
},
2434
'header.user.menu.dashboard': {
2535
id: 'header.user.menu.dashboard',
2636
defaultMessage: 'Dashboard',

src/learning-header/AuthenticatedUserDropdown.jsx

+11-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
66

77
import { getConfig } from '@edx/frontend-platform';
88
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
9-
import { Dropdown } from '@edx/paragon';
9+
import { Dropdown, Badge } from '@edx/paragon';
1010

1111
import messages from './messages';
1212

@@ -16,6 +16,14 @@ const AuthenticatedUserDropdown = ({ enterpriseLearnerPortalLink, intl, username
1616
{intl.formatMessage(messages.dashboard)}
1717
</Dropdown.Item>
1818
);
19+
let careersMenuItem = (
20+
<Dropdown.Item href="https://careers.edx.org/">
21+
{intl.formatMessage(messages.career)}
22+
<Badge className="px-2 mx-2" variant="warning">
23+
{intl.formatMessage(messages.newAlert)}
24+
</Badge>
25+
</Dropdown.Item>
26+
);
1927
if (enterpriseLearnerPortalLink && Object.keys(enterpriseLearnerPortalLink).length > 0) {
2028
dashboardMenuItem = (
2129
<Dropdown.Item
@@ -24,6 +32,7 @@ const AuthenticatedUserDropdown = ({ enterpriseLearnerPortalLink, intl, username
2432
{enterpriseLearnerPortalLink.content}
2533
</Dropdown.Item>
2634
);
35+
careersMenuItem = '';
2736
}
2837
return (
2938
<>
@@ -37,6 +46,7 @@ const AuthenticatedUserDropdown = ({ enterpriseLearnerPortalLink, intl, username
3746
</Dropdown.Toggle>
3847
<Dropdown.Menu className="dropdown-menu-right">
3948
{dashboardMenuItem}
49+
{careersMenuItem}
4050
<Dropdown.Item href={`${getConfig().ACCOUNT_PROFILE_URL}/u/${username}`}>
4151
{intl.formatMessage(messages.profile)}
4252
</Dropdown.Item>

src/learning-header/messages.js

+10
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ const messages = defineMessages({
2121
defaultMessage: 'Account',
2222
description: 'The text for the user menu Account navigation link.',
2323
},
24+
career: {
25+
id: 'header.menu.career.label',
26+
defaultMessage: 'Career',
27+
description: 'The text for the user menu Career navigation link',
28+
},
29+
newAlert: {
30+
id: 'header.menu.new.label',
31+
defaultMessage: 'New',
32+
description: 'The text announcing that an item in the user menu is New',
33+
},
2434
orderHistory: {
2535
id: 'header.menu.orderHistory.label',
2636
defaultMessage: 'Order History',

0 commit comments

Comments
 (0)